multiValveEngine Class Reference

A mesh mover using explicit node translation based on scaled distance functions per moving object. The mover supports any number of valves together with piston motion and following features: More...

Inheritance diagram for multiValveEngine:
Collaboration diagram for multiValveEngine:

Classes

class  movingObject
 
class  pistonObject
 
class  valveList
 
class  valveObject
 

Public Member Functions

 TypeName ("multiValveEngine")
 Runtime type information. More...
 
 multiValveEngine (fvMesh &mesh)
 Construct from fvMesh. More...
 
 multiValveEngine (const multiValveEngine &)=delete
 Disallow default bitwise copy construction. More...
 
 ~multiValveEngine ()
 Destructor. More...
 
scalar userTime () const
 Return current user-time, CAD, s or ... More...
 
scalar userDeltaT () const
 Return current user-time-step, CAD, s, ... More...
 
virtual bool update ()
 Update the mesh for both mesh motion and topology change. More...
 
virtual void topoChange (const polyTopoChangeMap &)
 Update corresponding to the given map. More...
 
virtual void mapMesh (const polyMeshMap &)
 Update from another mesh using the given map. More...
 
virtual void distribute (const polyDistributionMap &)
 Update corresponding to the given distribution map. More...
 
void operator= (const multiValveEngine &)=delete
 Disallow default bitwise assignment. More...
 
- Public Member Functions inherited from fvMeshMover
 TypeName ("fvMeshMover")
 Runtime type information. More...
 
 declareRunTimeSelectionTable (autoPtr, fvMeshMover, fvMesh,(fvMesh &mesh),(mesh))
 
 fvMeshMover (fvMesh &)
 Construct from fvMesh. More...
 
 fvMeshMover (const fvMeshMover &)=delete
 Disallow default bitwise copy construction. More...
 
virtual ~fvMeshMover ()
 Destructor. More...
 
fvMeshmesh ()
 Return the fvMesh. More...
 
const fvMeshmesh () const
 Return the fvMesh. More...
 
const dictionarydict () const
 Return the dynamicMeshDict/mover dict. More...
 
virtual bool dynamic () const
 Is mesh dynamic, i.e. might it change? More...
 
virtual bool solidBody () const
 Is the motion solid body? I.e., are the volumes and area magnitudes. More...
 
virtual bool write (const bool write=true) const
 Write the mover state. More...
 
void operator= (const fvMeshMover &)=delete
 Disallow default bitwise assignment. More...
 

Public Attributes

const labelHashSetlinerPatchSet
 User-defined liner patches. More...
 
const labelHashSetslidingPatchSet
 User-defined patches which the mesh can slide along. More...
 
const pistonObjectpiston
 Piston object. More...
 
const valveListvalves
 Container for all valves. More...
 
const labelHashSetstaticPatchSet
 Static patch set. More...
 

Static Public Attributes

static word cylinderHeadName
 Name of the cylinder head pointZone. More...
 

Friends

class movingObject
 
class pistonObject
 
class valveObject
 

Additional Inherited Members

- Static Public Member Functions inherited from fvMeshMover
static autoPtr< fvMeshMoverNew (fvMesh &)
 Select, construct and return the fvMeshMover. More...
 

Detailed Description

A mesh mover using explicit node translation based on scaled distance functions per moving object. The mover supports any number of valves together with piston motion and following features:

  • Piston motion: Function1 of user-time, may be set to crankConnectingRodMotion for standard crank and connecting rod motion.
  • Valve motion: Function1, may be set to table if the valve lift date is provided in the form of a table.
  • Smooth mesh motion between a moving object and other patches.
  • linerPatches: the set of patches corresponding to the cylinder liner Used by createEngineZones
  • slidingPatches: a set of patches along which mesh is allowed to deform. For example, on the cylinder liner, it is desired to slide mesh nodes while piston is moving.
  • frozenZones: list of pointZones the points of which are frozen, i.e. do not move with respect to any moving object.
  • Run-time clearance estimation based on patch-to-patch distances printed.
  • Supports cellSet and cellZone definitions to restrict mesh motion.
  • Supports domains with nonConformalCoupling (NCC) interfaces, enabling e.g. nodes to slide along with the interface.
  • Closing the valve can be achieved by meshToMesh mapping onto a new grid with closed valve geometry at user given time.
  • Mesh motion can be controlled per moving object by setting:

    • patches: list of patches defining the object.
    • motion: a Function1 which returns the object position as a function of time.
    • movingZones: list of pointZones the points of which move with the object.
    • frozenZones: list of pointZones the points of which are frozen, i.e. do not move with respect to this moving object.
    • maxMotionDistance: a distance away from the moving object after nodes are not allowed to move. (Default inf.)
    • movingFrozenLayerThickness: thickness of layer in which points move with the moving object. (Default 0)
    • staticFrozenLayerThickness: thickness of layer in which points are fixed with respect to static patches (e.g. walls). (Default 0)
    • cosineScaling: a switch whether nodal translation is weighted by its distance from the moving object. The objective is to yield less deformation near the moving object and sustain e.g. boundary layer. (Default no, i.e. linear weighting)
    • travelInterval: part of the stroke travelled after which the cached motion scaling weights are recalculated

    For valve object only:

    • minLift: a minimum valve lift value after considered closed.

Some of the above parameters are highlighted in a given schematic piston-valve configuration w.r.t entries used to control piston motion. Furthermore, an example dictionary entries are provided below.

                  |             |         |             |
                  |             |         |             |
                  |             |    S    |             |
                  |             |    T    |             |
                  |             |    E    |             |
                  |             |    M    |             |
                 /              |         |              \
                /               |         |               \
               /                |         |                \
 _____________/                 |         |                 \_____________
|        :                      |         |                      :        |
|        :      /```````````````           ```````````````\      :        |
|        :     /                VALVE HEAD                 \     :        |
| L      :    /_____________________________________________\    :        |
| I      :                         /\                            :        |
| N      :                         || staticFrozenLayerThickness :        |
| E      : NCC (optional)          \/ (w.r.t. piston motion)     :        |
| R      :                      ``````````                       :        |
|        :                                                       :        |
|        :                                                       :        |
|........:.......................................................:........|
|        :                         /\                            :        |
|        :                         || movingFrozenLayerThickness :        |
|________:_________________________\/____________________________:________|
                                   PISTON
mover
{
    type                multiValveEngine;
    libs                ("libfvMeshMoversMultiValveEngine.so");

    frozenZones         (frozenZone1 frozenZone2);

    slidingPatches
    (
        liner
        valveStem
        "nonCouple.*"
    );

    linerPatches        (liner);

    piston
    {
        patches             (piston);
        axis                (0 0 1);

        motion
        {
            type                crankConnectingRodMotion;

            conRodLength        1e3;
            stroke              1.0;
        }

        // Move the points in the piston bowl with the piston
        movingZones         (pistonBowl);

        // Freeze the points in the cylinder head
        frozenZones         (cylinderHead);

        // Optional
        maxMotionDistance    1e30;
        movingFrozenLayerThickness  0;
        staticFrozenLayerThickness  0;

        travelInterval      0.1;

        cosineScaling       yes;
    }

    valves
    {
        iv
        {
            patches     (valveHead);
            axis        (0 0 1);

            // Optional
            maxMotionDistance   1e30;
            movingFrozenLayerThickness  0;
            staticFrozenLayerThickness  0;

            travelInterval      0.01;

            cosineScaling       yes;

            minLift     0.001;

            motion
            {
                type    table;
                values
                (
                    (0      0)
                    (480    0.1)
                    (720    0)
                );
                // For multi-cycle simulations, use repeat
                outOfBounds     repeat;
                interpolationScheme linear;
            }
        }
    }
}

Note: The implementation utilises pointDist objects for distance computation, resulting distance fields do not propagate through NCC interfaces. Hence, there should be no horizontal NCC interface separating piston from cylinder head as it would result in potentially ill defined mesh deformation. Due to same feature, in a schematic case setup above, valve motion affects only cells between NCC patches even though no cellSet is explicitly defined.

Source files

Definition at line 243 of file multiValveEngine.H.

Constructor & Destructor Documentation

◆ multiValveEngine() [1/2]

multiValveEngine ( fvMesh mesh)

Construct from fvMesh.

Definition at line 100 of file multiValveEngine.C.

◆ multiValveEngine() [2/2]

multiValveEngine ( const multiValveEngine )
delete

Disallow default bitwise copy construction.

◆ ~multiValveEngine()

Destructor.

Definition at line 122 of file multiValveEngine.C.

Member Function Documentation

◆ TypeName()

TypeName ( "multiValveEngine"  )

Runtime type information.

◆ userTime()

Foam::scalar userTime ( ) const

Return current user-time, CAD, s or ...

Definition at line 128 of file multiValveEngine.C.

◆ userDeltaT()

Foam::scalar userDeltaT ( ) const

Return current user-time-step, CAD, s, ...

Definition at line 134 of file multiValveEngine.C.

◆ update()

bool update ( )
virtual

Update the mesh for both mesh motion and topology change.

Implements fvMeshMover.

Definition at line 140 of file multiValveEngine.C.

References forAll, and points.

◆ topoChange()

void topoChange ( const polyTopoChangeMap )
virtual

Update corresponding to the given map.

Implements fvMeshMover.

Definition at line 159 of file multiValveEngine.C.

References NotImplemented.

◆ mapMesh()

void mapMesh ( const polyMeshMap map)
virtual

Update from another mesh using the given map.

Implements fvMeshMover.

Definition at line 165 of file multiValveEngine.C.

References forAll.

◆ distribute()

void distribute ( const polyDistributionMap )
virtual

Update corresponding to the given distribution map.

Implements fvMeshMover.

Definition at line 180 of file multiValveEngine.C.

References NotImplemented.

◆ operator=()

void operator= ( const multiValveEngine )
delete

Disallow default bitwise assignment.

Friends And Related Function Documentation

◆ movingObject

friend class movingObject
friend

Definition at line 522 of file multiValveEngine.H.

◆ pistonObject

friend class pistonObject
friend

Definition at line 523 of file multiValveEngine.H.

◆ valveObject

friend class valveObject
friend

Definition at line 524 of file multiValveEngine.H.

Referenced by multiValveEngine::valveList::valveList().

Member Data Documentation

◆ cylinderHeadName

Foam::word cylinderHeadName
static

Name of the cylinder head pointZone.

Definition at line 567 of file multiValveEngine.H.

◆ linerPatchSet

const labelHashSet& linerPatchSet

User-defined liner patches.

Definition at line 572 of file multiValveEngine.H.

◆ slidingPatchSet

const labelHashSet& slidingPatchSet

User-defined patches which the mesh can slide along.

Definition at line 575 of file multiValveEngine.H.

◆ piston

const pistonObject& piston

Piston object.

Definition at line 578 of file multiValveEngine.H.

Referenced by multiValveEngineState::write().

◆ valves

const valveList& valves

Container for all valves.

Definition at line 581 of file multiValveEngine.H.

Referenced by multiValveEngineState::write(), and multiValveEngineState::writeFileHeader().

◆ staticPatchSet

const labelHashSet& staticPatchSet

Static patch set.

Definition at line 584 of file multiValveEngine.H.


The documentation for this class was generated from the following files: