Difference between revisions of "Parameter Definitions - dynamicMotionSolverFvMesh"

From OpenFOAMWiki
Line 60: Line 60:
 
== Diffusivity Parameter ==
 
== Diffusivity Parameter ==
  
In addition to the required
+
In addition to the required parameters, you also have the option of specifying a diffusivity parameter.  This is optional.  OpenFOAM will supply default values if you do not include this.
  
 
   diffusivity    quadratic inverseDistance 5.0 ( Body );
 
   diffusivity    quadratic inverseDistance 5.0 ( Body );
Line 109: Line 109:
 
= sixDoFRigidBodyMotionCoeffs =
 
= sixDoFRigidBodyMotionCoeffs =
  
 +
Everything else can be found int he sixDoFRigidBodyMotionCoeffs.  These parameters can be somewhat confusing because they combine to define several items relating to the body motion.  The parameters can be applied in any order.  To clarify the application of each parameter, they were divided into five main categories. 
 +
# Mesh Morphing Control
 +
# 6DoF Solver Control
 +
# Body Definition
 +
# Forces Definitions
 +
# Motion Definitions
  
 +
All documentation from this point on assumes that any information is applied within the sixDoFRigidBodyMotionCoeffs subdictionary.
 +
 +
  sixDoFRigidBodyMotionCoeffs
 +
  {
 +
    //Parameters - Mesh Morphing Control
 +
    //Parameters - 6DoF Solver Control
 +
    //Parameters - Body Definition
 +
    //Parameters - Force Definitions
 +
    //Parameters - Motion Definitions
 +
  }
 +
 
 +
 
  
 
= Parameters - Morphing Control =
 
= Parameters - Morphing Control =
Line 125: Line 143:
 
= Parameters - Force Definitions =
 
= Parameters - Force Definitions =
  
 +
 +
 +
 +
= Parameters - Motion Definitions =
  
  

Revision as of 14:11, 29 July 2016

This starts to get into the realm of fluid structure interaction (FSI). This solver morphs the mesh around a specified set of boundaries. The meshing motion is calculated based on the pressures on those boundaries. In turn, the dynamicMotionSolverFvMesh provides feedback to the fluid simulation. It alters the velocity boundary conditions (U field) on the included boundaries to specify the local velocity of the defined body. This local velocity includes coupled translation and rotational motions, if permitted. This mesh control is almost exclusively used to solve problems involving rigid body motion. There are many options and controls built into this one dict ions. This section of the dynamicMeshDict is where you define the following items.

  1. Mesh morphing control
  2. Physical parameters of the rigid body
  3. Parameters to control how the 6DoF solver will actually solve the body motions
  4. Forces and motion constraints on the body, in addition to fluid forces.


1 Example Dictionary File

 dynamicFvMesh   dynamicMotionSolverFvMesh;
 
 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 );
         }
     }
 }

2 Main Controls

There are two main entries to specify outside of the coefficients subdictionary. These are required entries. You specify the motion solver and import the library for the motion solver. This must be included in any code definition for the dynamicMotionSolverFvMesh dictionary.

 motionSolverLibs ( "libsixDoFRigidBodyMotionDev.so" );
 
 solver          sixDoFRigidBodyMotion;
 

2.1 Diffusivity Parameter

In addition to the required parameters, you also have the option of specifying a diffusivity parameter. This is optional. OpenFOAM will supply default values if you do not include this.

 diffusivity     quadratic inverseDistance 5.0 ( Body );
 

The diffusivity parameter controls how the mesh motion is distributed through the mesh. The basic scenario assumes that you have a moving boundary and another set of static boundaries. The mesh motion solver must find some way to diffuse the motion of your boundary into the domain. There are several approaches available. If you are unsure of what to do, remove this entry completely. OpenFOAM will supply default values. The list of possible diffusivity options include:

  1. inverseDistance
  2. inverseFaceDistance
  3. inversePointDistance
  4. inverseVolume
  5. uniform

2.1.1 inverseDistance

 diffusivity     quadratic inverseDistance 5.0 ( Body );
 

Specify the inverseDistance to reduce mesh morphing inverse to distance from a series of patches. The farther away from the specified patches, the less mesh morphing. This applies in all directions from the Body. This command can be divided into several parts.

2.1.1.1 Diffusivity Model

 inverseDistance
 

The keyword inverseDistance specifies the diffusivity model.

2.1.1.2 Distance Type

You can specify how quickly the mesh morphing reduces with distance.

 diffusivity     quadratic inverseDistance 
 

The quadratic parameter drops off with quadratic of the inverse distance. This is more aggressive than the linear parameter. You do not need to specify this parameter. Do not include this modifier, and OpenFOAM will supply a default value.

 diffusivity     linear inverseDistance  
 

The linear parameter drops off with linear variation of the inverse distance. You do not need to specify this parameter. Do not include this modifier, and OpenFOAM will supply a default value.

2.1.1.3 Distance Specification

 5.0
 

This specifies the physical distance from your specified patch. The distance parameter applies to all directions when used in the inverseDistance diffusivity model.

2.1.1.4 Patch Specification

 ( Body Patch1 Patch2);
 

Finally, you specify the patches that the diffusivity should apply to. This is a list of named mesh patches. The list is specified by mesh patch name, not boundary name.


3 sixDoFRigidBodyMotionCoeffs

Everything else can be found int he sixDoFRigidBodyMotionCoeffs. These parameters can be somewhat confusing because they combine to define several items relating to the body motion. The parameters can be applied in any order. To clarify the application of each parameter, they were divided into five main categories.

  1. Mesh Morphing Control
  2. 6DoF Solver Control
  3. Body Definition
  4. Forces Definitions
  5. Motion Definitions

All documentation from this point on assumes that any information is applied within the sixDoFRigidBodyMotionCoeffs subdictionary.

 sixDoFRigidBodyMotionCoeffs
 {
   //Parameters - Mesh Morphing Control
   //Parameters - 6DoF Solver Control
   //Parameters - Body Definition
   //Parameters - Force Definitions
   //Parameters - Motion Definitions
 }
 
 

4 Parameters - Morphing Control

5 Parameters - 6DoF Solver Control

6 Parameters - Body Definition

7 Parameters - Force Definitions

8 Parameters - Motion Definitions

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.

  1. Anything within the innerDistance directly moves the mesh nodes as a rigid body.
  2. Between the innerDistance and outerDistance, the mesh nodes are morphed.
  3. 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.