Volume mesh morphing in a pipe

In the frame of CFD industrial applications, sensitivity studies, DoE (Design of Experiments) generations as well as the shape optimization are powerful tools that aid modern engineers to define and speed up the Product Design and Development stages.

mimic_OK

These tools typically involve parametric studies in which the impact on fluid dynamic characteristics of a component shape or position is assessed. A common approach is to insert the new modified component, recreate the computational mesh and rerun your simulation. Mesh morphing techniques are an alternative option to modify the original mesh, without re-building it from scratch.

In this test case, a three-dimensional mesh morphing of a volume mesh inside a pipe is performed, employing mimic.
The target mesh is an unstructured one, aimed to a viscous CFD simulation of an internal flow. It is obtained by OpenFOAM snappyHexMesh tool and it is directly used as mimic‘s input. The aim of the test case is to define a deformation of the pipe and consequently to morph the original unstructured volume mesh. In order to achieve a high quality mesh, some advanced features of mimic are employed.
 

geom.selection

The original geometry is a pipe with constant section: we want to perform a local radial dilatation of the pipe, in the yellow/green zone downstream the elbow.

 

An extended Free Form Deformation (FFD) lattice is used to manipulate the target pipe surface. Lattice points are radially moved to obtain an expansion of the portion of the duct. The FFD is a basic feature of mimmo library embedded in mimic software.

cs.pipe.lattice

 

cs.pipe.lattice.geom.0
 
cs.pipe.geom.1

The deformation field achieved by the FFD parameterization is directly applied to the target surface patch. The new shape shows a larger diameter, with a sharp angle on the junction between deformed and undeformed zones.

 

The discontinuity on the junction can be avoided defining a transition function on the deformed patch. mimic allows the computation of a scalar filter function based on surface geodesics and used to modulate the deformation of the surface.
Transition smoothness can be controlled imposing different continuity conditions: in the current test case, a G2 continuity is forced at the extrema of the transition area.

cs.pipe.filter

 

cs.pipe.lattice.geom.1
 
cs.pipe.geom.2

The resulting deformation obtained by the FFD parameterization and the continuity constraints definition guarantees a good quality of the final surface. The deformed patch is now joined to the undeformed duct with a smooth connection.

 

The surface deformation field is propagated inside the mesh bulk volume. The mesh morphing is performed by solving a diffusion equation on the volume mesh. mimic allows to define a variable diffusivity coefficient in the bulk, both function of the volume values of the cells and depending on the distance from the deformed target patch. This protects potentially breakable cells (as prism layer’s ones) from excessive stretching and shear deformations.
Pictures beside show crinkled clips of the original volume mesh (top) and the morphed ones, without (center) and with (bottom) the use of the continuity constraints. It can be seen that the filter feature is essential for this kind of un-tuned deformations.

cs.pipe.slice.zoom.zoom.0
 
cs.pipe.slice.zoom.zoom.1
 
cs.pipe.slice.zoom.zoom.2

 

Below, the final log checks obtained by running OpenFOAM checkMesh are shown for the original mesh, the morphed mesh with free transition and the continuity constrained one, respectively.
The logs show that the unconstrained deformation gives a unacceptable mesh in terms of quality of elements, while the constrained mesh morphing yields a mesh quality comparable to the original one. Note that the constrained mesh morphing generates a non-orthogonality acceptable but with an average value higher than the original mesh. In particular, as shown by the previous slice, the prism layer cells have a undesired non-orthogonal shape.

Original mesh

Checking geometry…
Overall domain bounding box (-0.0119986 -0.267066 -0.0628132) (0.0119986 0.012 0.216253)
Mesh (non-empty, non-wedge) directions (1 1 1)
Mesh (non-empty) directions (1 1 1)
Boundary openness (-7.6658e-16 2.33062e-16 1.39252e-16) OK.
Max cell openness = 8.13968e-16 OK.
Max aspect ratio = 9.89077 OK.
Minimum face area = 1.00941e-08. Maximum face area = 4.60864e-06. Face area magnitudes OK.
Min volume = 1.65077e-12. Max volume = 9.2788e-09. Total volume = 0.000219696. Cell volumes OK.
Mesh non-orthogonality Max: 65.7468 average: 6.97042
Non-orthogonality check OK.
Face pyramids OK.
Max skewness = 2.57746 OK.
Coupled point location match (average 0) OK.
Mesh OK.

Unconstrained mesh morphing

Checking geometry…
Overall domain bounding box (-0.0172455 -0.267066 -0.0628132) (0.0172455 0.01725 0.216253)
Mesh (non-empty, non-wedge) directions (1 1 1)
Mesh (non-empty) directions (1 1 1)
Boundary openness (-1.2556e-15 -1.41977e-16 1.3757e-16) OK.
***High aspect ratio cells found, Max aspect ratio: 4.25517e+93, number of cells 36
Writing 36 cells with high aspect ratio to set highAspectRatioCells
Minimum face area = 3.97693e-10. Maximum face area = 3.17071e-05. Face area magnitudes OK.
***Zero or negative cell volume detected. Minimum negative volume: -2.37865e-12, Number of negative volume cells: 36
Writing 36 zero volume cells to set zeroVolumeCells
Mesh non-orthogonality Max: 143.298 average: 9.17984
*Number of severely non-orthogonal (> 70 degrees) faces: 7554.
***Number of non-orthogonality errors: 1018.
Writing 8572 non-orthogonal faces to set nonOrthoFaces
***Error in face pyramids: 1871 faces are incorrectly oriented.
Writing 1199 faces with incorrect orientation to set wrongOrientedFaces
***Max skewness = 748.1, 188 highly skew faces detected which may impair the quality of the results
Writing 188 skew faces to set skewFaces
Coupled point location match (average 0) OK.
Failed 5 mesh checks.

Continuity constrained mesh morphing

Checking geometry…
Overall domain bounding box (-0.0172455 -0.267066 -0.0628132) (0.0172455 0.01725 0.216253)
Mesh (non-empty, non-wedge) directions (1 1 1)
Mesh (non-empty) directions (1 1 1)
Boundary openness (-5.85753e-16 -1.98499e-16 2.47132e-16) OK.
Max cell openness = 8.90803e-16 OK.
Max aspect ratio = 14.1773 OK.
Minimum face area = 1.00941e-08. Maximum face area = 3.17071e-05. Face area magnitudes OK.
Min volume = 1.65077e-12. Max volume = 6.46033e-08. Total volume = 0.00025065. Cell volumes OK.
Mesh non-orthogonality Max: 65.7468 average: 9.07825
Non-orthogonality check OK.
Face pyramids OK.
Max skewness = 2.57746 OK.
Coupled point location match (average 0) OK.
Mesh OK.

 

In order to improve the orthogonality of the morphed mesh, especially in the prism layer region, a new mimic feature is tested.
Specifically, the surface deformation is now described not only by a 3D vector of translation for each surface node, but by a translation vector and a rotation quaternion. By the introduction of the quaternions mimic is now able to propagate into the mesh volume a deformation field composed by a translational component and a rotational component.
This yields to a morphed mesh that preserves in the best way the orthogonality by propagating the rotation of the surface cells into the volume mesh.
The figures show a crinkle slice for the constrained mesh morphing with the introduction of the quaternions realized in a single step (top) or with a multi-step morphing (bottom). Note that a multi-step mesh morphing generates a even more orthogonal and smoother mesh.

cs.pipe.slice.zoom.zoom.3
cs.pipe.slice.zoom.zoom.4

 

Again the final check of the resulting logs obtained by running checkMesh are shown below for the two constrained mesh morphing with quaternions for the single-step and the multi-step algorithm respectively.
Note that the average of the non-orthogonality of the obtained meshes is improved by the quaternion-based mesh morphing and by the multi-step algorithm.

Continuity constrained mesh morphing with quaternions

Checking geometry…
Overall domain bounding box (-0.0172455 -0.267066 -0.0628132) (0.0172455 0.01725 0.216253)
Mesh (non-empty, non-wedge) directions (1 1 1)
Mesh (non-empty) directions (1 1 1)
Boundary openness (-4.94343e-16 -2.7685e-16 3.13364e-16) OK.
Max cell openness = 9.95037e-16 OK.
Max aspect ratio = 14.2681 OK.
Minimum face area = 1.00941e-08. Maximum face area = 3.3219e-05. Face area magnitudes OK.
Min volume = 1.65077e-12. Max volume = 6.40205e-08. Total volume = 0.00025065. Cell volumes OK.
Mesh non-orthogonality Max: 65.7468 average: 8.07738
Non-orthogonality check OK.
Face pyramids OK.
Max skewness = 2.57746 OK.
Coupled point location match (average 0) OK.
Mesh OK.

Continuity constrained mesh morphing with quaternions and multi-step algorithm

Checking geometry…
Overall domain bounding box (-0.0172455 -0.267066 -0.0628132) (0.0172455 0.01725 0.216253)
Mesh (non-empty, non-wedge) directions (1 1 1)
Mesh (non-empty) directions (1 1 1)
Boundary openness (-6.06647e-16 -2.87297e-16 3.64578e-16) OK.
Max cell openness = 8.70254e-16 OK.
Max aspect ratio = 14.2631 OK.
Minimum face area = 1.00941e-08. Maximum face area = 4.37384e-05. Face area magnitudes OK.
Min volume = 1.65077e-12. Max volume = 7.74683e-08. Total volume = 0.00025065. Cell volumes OK.
Mesh non-orthogonality Max: 65.7468 average: 7.94302
Non-orthogonality check OK.
Face pyramids OK.
Max skewness = 2.57746 OK.
Coupled point location match (average 0) OK.
Mesh OK.

 

cs.pipe.slices.zoom.zoom

In order to show the enhancement introduced by the mimic mesh morphing features, the morphed mesh of the current test case are displayed in a series.

 

If you want to start using/testing mimic, please contact us.