Dynamic Mesh OpenFoam
Dynamic Mesh OpenFoam
Objective
• Present the layout and use of dynamic mesh features in OpenFOAM
• Demonstrate how object orientation makes it easy to set up complex interacting
motion and topological changes
Topics
• Definition of a mesh motion problem
• Geometry handling in OpenFOAM: polyhedral cell support
• Deforming mesh strategies
• FE-based automatic mesh motion solver for the FVM
• Support in the Finite Volume Discretisation
• Topological mesh changes
• Algorithmic implications
• Dynamic mesh classes with examples: 6-DOF bodies, IC engines, FSI
• New features: GGI interface, RBF mesh motion, immersed boundary method
• Summary
y
• Interfaces to mesh generation packages
V
∇•(k∇u) = 0
Z X
d
Z I I Z
φdV + ds•(u − ub )φ = ds•qφ + s(φ)dV
dt V S S V
d
Z I
dV − ds•ub = 0
dt V S
I XZ
ds•ub = ds•ub = Fm
S f Sf
• For extreme cases of mesh motion, changing point positions is not sufficient to
accommodate boundary motion and preserve mesh quality
• Definition of a topological change: number or connectivity of points, faces or cells
in the mesh changes during the simulation
• Motion can be handled by the FVM with no error (moving volume), while a
topological change requires additional algorithmic steps
• Cell insertion and deletion will formally be handled as a combination of mesh
motion (collapsing cells and faces to zero volume/area) and a change in
connectivity after the face and cell collapse
• Even for simple cases, it is easier to speak about problem classes (mixer vessels,
engines, 6-DOF bodies) rather than working out individual topology modifiers
class dynamicFvMesh
:
public fvMesh
{
static autoPtr<dynamicFvMesh> New(const IOobject& io);
// Destructor
virtual ˜dynamicFvMesh();
//- Update the mesh for both mesh motion and topology change
virtual bool update() = 0;
};
class dynamicMotionSolverFvMesh
:
public dynamicFvMesh
{
autoPtr<motionSolver> motionPtr_;
vF y′ aF
SB
SA o′ x′
Free
rF
surface
y
o
x
Problem Setup
1. Specify mesh, material properties and initial + boundary flow conditions
2. Dynamic mesh type: sixDofMotion. Mesh holds floatingBody objects
3. A floating body holds 6-DOF parameters: mass, moment of inertia, support, forces
4. Flow solver only sees a dynamicMesh: encapsulated motion
111111
000000
rotor side 000000
111111
000000
111111
000000
111111
stator side 0000
1111000000
111111
000000
111111
0000
1111
0000
1111000000
111111
0000
1111000000
111111
0000
1111000000
111111
0000
1111000000
111111
0000
1111000000
111111
000000
111111
0000
1111
Immersed Boundary
ibPolyPatch
Fluid cells
φP
φib ′
δib P’
φb nb ib kib
b ib P PP b δib P
nib
CD
CL
0
3.095
-0.2 3.09
-0.4 3.085
-0.6 3.08
-0.8 3.075
95 96 97 98 99 100 95 96 97 98 99 100
Time, s Time, s
Summary
• OpenFOAM implements polyhedral mesh handling in library form
• Mesh analysis classes separated from discretisation support classes
• Built-in support for mesh motion and topological changes
• Simple handling of moving boundary problems: automatic mesh motion solver
• Topological changes support
◦ Basic operations: add/modify/remove point/face/cell
◦ Mesh modifier classes operate in terms of basic operations. Triggering of
topological changes is a part of the class (automatic)
◦ Pre-defined mesh modifiers available for standard operations
• Dynamic mesh classes encapsulate topology modifiers and (automatic) mesh
motion for easy handling of classes of dynamic mesh problems
• Top-level physics solver is separated from dynamic mesh handling for
inter-operability of components. Example: 6-DOF moving body in flow
• Quest for a fully automatic polyhedral mesh generator continues: snappyHexMesh