1. Block-Structured Meshes
This tutorial shows how to agglomerate block-structured grids with linear elements to get a high-order mesh consisting of fully curved hexahedral elements. The parameter file can be found in
tutorials/3-01-agglomeration_NACA/parameter.ini
1.1. Restrictions on the block-structured meshes
HOPR poses the following restrictions on the provided block-structured meshes:
One block face must be exclusively associated to one boundary condition. Block faces with multiple BCs or a combination of boundary and internal element faces on a single block face are likely to produce wrong mesh topology! The user is responsible for splitting blocks in such cases. Otherwise, HOPR will be unable to perform the mesh connect step!
When providing a block-structured mesh for agglomeration, only one unique factor is permitted in the
I,J,K
dimension of all blocks!
Each boundary conditions present in the provided mesh must be matched in the parameter file by its name and an associated boundary type:
BoundaryName = wall_1
BoundaryType = (/4,0,0,0/)
BoundaryName = wall_2
BoundaryType = (/4,0,0,0/)
Boundary names can match multiple BCs by specifying only the common part of the boundary name string. In the example above, BoundaryName=wall
would match all boundary conditions.
1.2. Initial Meshes
Agglomeration of block-structured meshes provides a simple and robust curving technique for the generation of three-dimensional high-order meshes. In HOPR, mesh agglomeration is controlled by the MeshIsAlreadyCurved
parameter. The application of mesh agglomeration is demonstrated on two meshes of a NACA-profile provided as CGNS files. Here, mesh 1 is suitable for inviscid simulations without boundary layer refinement and mesh 2 features boundary layer refinement.
Mesh1: NACA0012_icem_32elems.cgns
Mesh2: NACA0012_icem_viscous_32elems.cgns
All of the following figures were created with mesh 1.
Agglomeration Curving Technique
When using agglomeration, the important parameters areMeshIsAlreadyCurved = T
useCurved = T
BoundaryOrder = 5
which lead to a coarsening in all three dimensions of the structured mesh, using the internal points as interpolation points for the curved mapping. The number of elements in each direction of the structured block must be a multiple number of BoundaryOrder
-1! This situation is illustrated on an exemplary mesh in Fig. 1.5. For BoundaryOrder=2
, the initial linear mesh retained without agglomeration.
In addtion, the parameter nSkip
can be set to coarsen the initial mesh.
1.3. Description of Parameters
The following table describes all parameters associated with agglomeration. A description of all parameters is given in List of Parameters.
Parameters |
Setting |
Description |
---|---|---|
|
|
Enables the agglomeration |
|
|
Coarsing of block-structured meshes |
|
|
Only if the mesh is extruded in z-direction, a different nSkip can be given in z-direction. |
Coarsening
Mesh coarsening is controlled by two parameters: nSkip
applies to all structured directions equally, and nSkipZ
can be used for z-extruded meshes.
The figure on the left side shows the initial mesh. The parameter nSkip=1
uses every point of the initial mesh. The mesh in the middle-left shows the mesh if nSkip
is set to 2. That means that one node in each direction of the respective coordinate system is skipped and that the size of the new element reaches to the next node. The skipped nodes will no longer be used for mesh generation, including curving. The parameter nSkipZ
has the same function as nSkip
but only applies towards the z-direction. By providing the nSkipZ
parameter, the corresponding entry in nSkip
is ignored.
The following figures illustrate possible combinations of the nSkip
and nSkipZ
parameters, each applied to the identical initial mesh. Keep in mind that reading in a block-structured mesh only works if the value for the parameter(s) nSkip
(and nSkipZ
) is a common divisor of the number of all mesh elements for each axis.
Correction for z-Extruded Meshes
Extruded meshes often suffer from issues with limited coordinate precision, preventing HOPR from finding corresponding surface elements on the upper/lower boundary. HOPR included a built-in correction routine for such cases. This function is not restricted to block-structured meshes, but can be applied to all meshes which are extruded along the z-direction. Enabling this setting requires five more parameters to be set.
Parameters |
Setting |
Description |
---|---|---|
|
|
All elements are aligned exactly along z-direction to suppress grid generator errors |
|
|
The number of elements in z-direction (after agglomeration!) |
|
|
Set minimum z-coordinate |
|
|
Set length of domain in z-direction |
|
|
Boundary conditions ( |