Goals of this Unit:
-
- Discussion of "open Edges".
- Understanding the normals and volume relation (while making geometry with GMSH).
The fluid-mechanical problem:
In this example the fluid flows around a cylinder and generates a small hump at the free surface. Now we have to take into account that the height of the fluid at the outflow wall is not fixed and might vary in time. In particular it might overflow the original box. In order to avoid that the fluid flows over an edge of thickness zero we have to extend the geometrical model (which is called roof in the formation of the geometry). We briefly have a look at the changes needed to be done in USER_common_variable.dat.
Figure 12: sketch of the problem
It can be easily observed that the roof above the cube is necessary to provide proper closing of the geometry in order to avoid that the fluid flows over the wall.
Healing wrong orientation of geometry items:
While defining aliases in USER_common_variable.dat, boundaries whose orientation is wrong, need to be equipped with the flag
REV_ORIENT . If you are working with GMSH, the boundary orientation can be easily seen if displaying the normals of the geometry:
Figure 13: showing orientations and directions of the normals
If working with different preprocessing tools, usually there is a way to display boundary orientations in most of the systems, sometimes however not easy to find. Figure 13 shows the front look of the 3D geometry of this tutorial and also the normals of the surface of the cylinder (please observe the inconsistent formation of the boundary normals,
the normals always how to point to the interior of the flow domain, however GMSH displays the normals the other way around ). Thus, for the appropriate face, we turn around the orientation by
REV_ORIENT:
"cylinder_1" = " BC$wallCyl$ ACTIVE$init_always$ IDENT%IDENT_slip% MAT$MatUSER$ TOUCH%TOUCH_always% MOVE$NO_MOVE$ CHAMBER1 "
"cylinder_2" = " REV_ORIENT BC$wallCyl$ ACTIVE$init_always$ IDENT%IDENT_slip% MAT$MatUSER$ TOUCH%TOUCH_always% MOVE$NO_MOVE$ CHAMBER1 "
"cylinder_3" = " REV_ORIENT BC$wallCyl$ ACTIVE$init_always$ IDENT%IDENT_slip% MAT$MatUSER$ TOUCH%TOUCH_always% MOVE$NO_MOVE$ CHAMBER1 "
"cylinder_4" = " REV_ORIENT BC$wallCyl$ ACTIVE$init_always$ IDENT%IDENT_slip% MAT$MatUSER$ TOUCH%TOUCH_always% MOVE$NO_MOVE$ CHAMBER1 "
Closing the geometry on the top:
The "roof" should not contribute in the formation of the point cloud, therefore, the aliases of these walls should be for example defined as follows :
"roof_in" = " BC$free0$ ACTIVE$noinit_always$ IDENT%IDENT_outflow% MAT$MatUSER$ TOUCH%TOUCH_geometrical% MOVE$NO_MOVE$ CHAMBER1 "
"roof_out" = " REV_ORIENT BC$free0$ ACTIVE$noinit_always$ IDENT%IDENT_outflow% MAT$MatUSER$ TOUCH%TOUCH_geometrical% MOVE$NO_MOVE$ CHAMBER1 "
"roof_back" = " REV_ORIENT BC$free0$ ACTIVE$noinit_always$ IDENT%IDENT_outflow% MAT$MatUSER$ TOUCH%TOUCH_geometrical% MOVE$NO_MOVE$ CHAMBER1 "
"roof_front" = " BC$free0$ ACTIVE$noinit_always$ IDENT%IDENT_outflow% MAT$MatUSER$ TOUCH%TOUCH_geometrical% MOVE$NO_MOVE$ CHAMBER1 "
"roof_top" = " REV_ORIENT BC$free0$ ACTIVE$noinit_always$ IDENT%IDENT_outflow% MAT$MatUSER$ TOUCH%TOUCH_geometrical% MOVE$NO_MOVE$ CHAMBER1 "
The
ACTIVE statement in the alias definition is
ACTIVE$noinit_always$ which tells
MESHFREE that this boundary shall not be active during
MESHFREE initialization/startup, but has to be active during time integration/simulation.
Suggestions for exploring MESHFREE:
-
- work with more or less MESHFREE points by adapting the smoothing length
- work with different speeds of the liquid
Advanced Example: FormationFreeJet (recommended after successful training according to the basic units)
Note: In order to reproduce Figure 12, load the state file tut03_figure12.pvsm in ParaView and choose 'Search files under specified directory'. Then, select the correct data directory (
MESHFREE results folder).