Once a mesh is built there are several options to apply post-process meshes.
As high-order numerical methods require a high-order representation of the boundary several methods have been developed to provide that accuracy. For some curving techniques, as for agglomerated meshes, not only the boundary is curved but the whole volume mesh consists of curved cells. However it is for numerical reasons advantageous to use linear cells, if the cell is not adjacent to curved boundaries. HOPR thus provides a feature to uncurve curved meshes in a distance from the boundary. The parameter nCurvedBoundaryLayers specifies the number of cells from a curved boundary (i.e. boundaries with curveIndex>0) stay curved, for the rest of the mesh a (tri-)linear mapping using only the corner nodes is applied.
- For nCurvedBoundaryLayers=-1 the whole mesh stays curved (default)
- For nCurvedBoundaryLayers=0 in the first cell only the boundary itself remains curved, all other faces and cells in the mesh will be linear
- For nCurvedBoundaryLayers=1-n the first n cells away from the boundary remain curved.
These choices are depicted in the pictures bellow, the table lists the scaled Jacobian ranges for the elements. The mesh becomes significantly less distorted if only the first cell is curved Note that it is often required to curve more than the first cell, especially for fine curved boundary layer meshes.
| Number of elements with
scaled Jacobians ranging between:
|< 0.0||< 0.1||< 0.2||< 0.3||< 0.4||< 0.5||< 0.6||< 0.7||< 0.8||< 0.9||< 1.0|
|Only boundary is curved:||0||0||0||0||8||4||8||208||100||276||1124|
|First element is curved:||0||0||0||0||8||4||16||208||100||288||1104|
|First 3 elements are curved:||0||0||0||0||16||12||32||224||92||284||1068|
|All elements are curved:||0||0||0||0||136||596||748||200||12||36||0|
To test this feature, add nCurvedBoundaryLayers=n to the parameter file, which is also found in
It is often desirable to refine existing meshes, by subdividing the elements into smaller elements. As HOPR implements this feature for Hexahedra only, it is controlled by the flag nFineHexa=x, where x specifies the number of subdivision of each element. For meshes containing other element types than hexahedra, this option is not applicable. Up to now, the refinement only works for hexa with linear edges.
To test this feature add nFineHexa=2 to the parameter file, which is also found in
Generation of Hexahedral Meshes
As many solvers require purely hexahedral meshes, HOPR implements a subdivision strategy to split meshes consisting of tetrahedra, prisms and hexahedra into purely hexahedral meshes. This feature is activated using the parameter splitToHex=T. Note, that pyramids cannot be decomposed to hexahedra in a straightforward way, thus this feature cannot be applied to meshes containing pyramids. Note also that this option is up to now restricted to linear meshes.
To test this feature, set elemtype to either 104 or 106 and add splitToHex=T to the parameter file, which is found in