DynamicMeshDict
Contents
1 Description
This controls deformation and morphing of the mesh during a simulation. This dictionary is only necessary on solvers that invoke mesh motion. Generally, all these solvers will have the term DyM included in the base solver name. For example, a standard base solver might be pimpleFoam. With mesh motion, the solver will be pimpleDyMFoam and require a dynamicMeshDict.
Also note that the exact behavior of dynamicMeshDict is one of the less standardized features of OpenFOAM. The exact details and solver capabilities may vary depending on your specific version of OpenFOAM. This guide was created using OpenFOAM version 2.2 from Engys.
2 Example Dictionary File (6DOF Body Motion)
/*--------------------------------*- C++ -*----------------------------------*\ | o | | | o o | OpenFOAM (Engys Edition): | | o O o | Version: 2.2_engysEdition-beta | | o o | Web: http://www.engys.com | | o | | \*---------------------------------------------------------------------------*/ FoamFile { version 2.0; format binary; class dictionary; location "../constant"; object dynamicMeshDict; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // dynamicFvMesh dynamicMotionSolverFvMesh; staticFvMeshCoeffs { } motionSolverLibs ( "libsixDoFRigidBodyMotionDev.so" ); solver sixDoFRigidBodyMotion; diffusivity quadratic inverseDistance 1 ( Body ); sixDoFRigidBodyMotionCoeffs { patches ( Body ); innerDistance 25; outerDistance 275; centreOfMass ( 16.81 -1087.4 -1063.3 ); mass 4.1453e+06; g ( 0 0 -9.8065 ); momentOfInertia ( 2.7874e+08 5.8901e+08 6.6762e+08 ); velocity ( 0 -0.5 -0.25 ); rhoName rhoInf; rhoInf 1024.81; accelerationRelaxation 0.9; accelerationDamping 0.95; report on; reportToFile on; solver { type CrankNicolson; } constraints { } restraints { Bouyancy { sixDoFRigidBodyMotionRestraint constantForce; refAttachmentPt ( 16.8 -1087.4 -1062 ); constantForce ( 0 0 4.0994e+07 ); } } } // ************************************************************************* //
3 Command List
4 Motion Types
The dictionary allows specification of four types of mesh motion.
- staticFvMesh: provides no mesh motion. The mesh is static. Useful for debugging a simulation that involves mesh motion.
- solidBodyMotionFvMesh: Prescribed mesh motion. No topology change in mesh.
- dynamicRefineFvMesh: refines the simulation mesh and provides topology changes based on simulation fields.
- dynamicMotionSolverFvMesh: Mesh motion based on solved mesh motion for rigid body motion.
The following code blocks show the template of commands required for each motion type. Additional parameters are also required to specify the details of each motion type.
4.1 Command Template: No Mesh Motion
dynamicFvMesh staticFvMesh; staticFvMeshCoeffs { }
4.2 Command Template: Prescribed Rigid Body Motion
dynamicFvMesh solidBodyMotionFvMesh; solidBodyMotionFvMeshCoeffs { //Parameter definitions }
4.3 Command Template: Dynamic Mesh Refinement Template
dynamicFvMesh dynamicRefineFvMesh; dynamicRefineFvMeshCoeffs { //Parameter definitions }
4.4 Command Template: 6DOF Motion Solver
dynamicFvMesh dynamicMotionSolverFvMesh; motionSolverLibs ("libsixDoFRigidBodyMotion.so"); solver sixDoFRigidBodyMotion; sixDoFRigidBodyMotionCoeffs { //Parameter definitions }
5 Parameter Definitions - staticFvMesh
6 Parameter Definitions - solidBodyMotionFvMesh
7 Parameter Definitions - dynamicRefineFvMesh
8 Parameter Definitions - dynamicMotionSolverFvMesh
9 User Notes
If you are using the sixDoFRigidBodyMotion, you must import the additional motion solver library.
motionSolverLibs ( "libsixDoFRigidBodyMotionDev.so" );
The solver also allows you to specify an innerDistance and outerDistance parameter. These control how the sixDof solver morphs the mesh.
- Anything within the innerDistance directly moves the mesh nodes as a rigid body.
- Between the innerDistance and outerDistance, the mesh nodes are morphed.
- Outside the outerDistance, no morphing occurs.
But be careful. The outerDistance parameter must always be larger than the innerDistance parameter. If you try to specify outerDistance as smaller than innerDistance, the solver will override your inputs with default values.