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...
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... | |
fvMesh & | mesh () |
Return the fvMesh. More... | |
const fvMesh & | mesh () const |
Return the fvMesh. More... | |
const dictionary & | dict () 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 labelHashSet & | linerPatchSet |
User-defined liner patches. More... | |
const labelHashSet & | slidingPatchSet |
User-defined patches which the mesh can slide along. More... | |
const pistonObject & | piston |
Piston object. More... | |
const valveList & | valves |
Container for all valves. More... | |
const labelHashSet & | staticPatchSet |
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< fvMeshMover > | New (fvMesh &) |
Select, construct and return the fvMeshMover. More... | |
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:
Mesh motion can be controlled per moving object by setting:
For valve object only:
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.
Definition at line 243 of file multiValveEngine.H.
multiValveEngine | ( | fvMesh & | mesh | ) |
Construct from fvMesh.
Definition at line 100 of file multiValveEngine.C.
|
delete |
Disallow default bitwise copy construction.
~multiValveEngine | ( | ) |
Destructor.
Definition at line 122 of file multiValveEngine.C.
TypeName | ( | "multiValveEngine" | ) |
Runtime type information.
Foam::scalar userTime | ( | ) | const |
Return current user-time, CAD, s or ...
Definition at line 128 of file multiValveEngine.C.
Foam::scalar userDeltaT | ( | ) | const |
Return current user-time-step, CAD, s, ...
Definition at line 134 of file multiValveEngine.C.
|
virtual |
Update the mesh for both mesh motion and topology change.
Implements fvMeshMover.
Definition at line 140 of file multiValveEngine.C.
|
virtual |
Update corresponding to the given map.
Implements fvMeshMover.
Definition at line 159 of file multiValveEngine.C.
References NotImplemented.
|
virtual |
Update from another mesh using the given map.
Implements fvMeshMover.
Definition at line 165 of file multiValveEngine.C.
References forAll.
|
virtual |
Update corresponding to the given distribution map.
Implements fvMeshMover.
Definition at line 180 of file multiValveEngine.C.
References NotImplemented.
|
delete |
Disallow default bitwise assignment.
|
friend |
Definition at line 522 of file multiValveEngine.H.
|
friend |
Definition at line 523 of file multiValveEngine.H.
|
friend |
Definition at line 524 of file multiValveEngine.H.
Referenced by multiValveEngine::valveList::valveList().
|
static |
Name of the cylinder head pointZone.
Definition at line 567 of file multiValveEngine.H.
const labelHashSet& linerPatchSet |
User-defined liner patches.
Definition at line 572 of file multiValveEngine.H.
const labelHashSet& slidingPatchSet |
User-defined patches which the mesh can slide along.
Definition at line 575 of file multiValveEngine.H.
const pistonObject& piston |
Piston object.
Definition at line 578 of file multiValveEngine.H.
Referenced by multiValveEngineState::write().
const valveList& valves |
Container for all valves.
Definition at line 581 of file multiValveEngine.H.
Referenced by multiValveEngineState::write(), and multiValveEngineState::writeFileHeader().
const labelHashSet& staticPatchSet |
Static patch set.
Definition at line 584 of file multiValveEngine.H.