diff --git a/docs/documentation/index.md b/docs/documentation/index.md index 263d367..913fb5d 100644 --- a/docs/documentation/index.md +++ b/docs/documentation/index.md @@ -29,6 +29,18 @@ caption: Developer Guide developerguide/index.md ``` +```{toctree} +--- +maxdepth: 4 +caption: Tutorials +--- +tutorials/index_inbuiltmeshgenerators.md +tutorials/index_externalmeshes.md +tutorials/index_agglomeration.md +tutorials/index_postprocessing.md +tutorials/index_visualization.md +``` + ```{toctree} --- maxdepth: 1 diff --git a/docs/documentation/tutorials/blockstructuredmeshes.md b/docs/documentation/tutorials/blockstructuredmeshes.md new file mode 100644 index 0000000..360a86e --- /dev/null +++ b/docs/documentation/tutorials/blockstructuredmeshes.md @@ -0,0 +1,251 @@ +# Block-Structured Meshes +This tutorial shows how to agglomerate block-structured grids with linear elements to get a curved mesh consisting of fully curved hexahedral elements. + +The parameter file can be found in + + tutorials/3-01-agglomeration_NACA/parameter.ini + +## Restrictions on the block-structured mesh readin + +- If meshes are used to create curved elements, a **unique factor** should be present in the i,j,k element count of **all blocks**!! +- Boundary Conditions: + - Attention: **One block face** can only be associated to **one boundary condition**. Block faces with mixed BCs or BC and internal faces a likely to produce wrong mesh topology!! + **Split blocks** in this case, else you will get problems in the mesh connect step! + - Each boundary conditions must be specified in the inifile by its name and an associated Boundary Type: + + BoundaryName = wall_1 + BoundaryType = (/4,0,0,0/) + BoundaryName = wall_2 + BoundaryType = (/4,0,0,0/) + + +You can combine multiple BCs by using only a common part of the boundary name string (here for example `BoundaryName=wall`) + +## Initial Meshes + +The use of block-structured meshes enables the generation of fully three-dimensional curved elements by agglomeration of a specific block of elements, leading to a very simple and robust curving technique. In order to illustrate block-structuring and agglomeration, enabled by the new parameter `MeshIsAlreadyCurved`, two initally fine meshes of a NACA-profile are provided as CGNS files, mesh 1 without boundary layer refinement and mesh 2 with boundary layer refinement: + +
Mesh1: NACA0012_icem_32elems.cgns
+ + + + + + +
+
+ ../_images/Aggl-nv-fern.jpg +
+

Fig. 1.1 Overall view of initial mesh 1

+
+
+
+
+ ../_images/Aggl-nv-nah.jpg +
+

Fig. 1.2 Close-up image of mesh 1 of the leading edge of the NACA-profile

+
+
+
+ +
Mesh2: NACA0012_icem_viscous_32elems.cgns
+ + + + + + +
+
+ ../_images/Aggl-v-fern.jpg +
+

Fig. 1.3 Overall view of initial mesh 2

+
+
+
+
+ ../_images/Aggl-v-nah.jpg +
+

Fig. 1.4 Close-up image of mesh 2 of the leading edge of the NACA-profile

+
+
+
+ +All of the following figures were created with mesh 1. + +

Agglomeration Curving Technique

+When using agglomeration, the important parameters are + + MeshIsAlreadyCurved=T + useCurved=T + BoundaryOrder=5 + +and they 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 explained on an exemplary mesh in Fig. 1.5. For `BoundaryOrder = 2` the initial linear mesh is found and no agglomeration is done. + +
+ ../_images/Nskip.jpg +
+

Fig. 1.5 Block-structuring with the parameter BoundaryOrder=2/3/5, (BoundaryOrder-1)^3 elements are grouped together.

+
+
+ +In addtion, the parameter `nskip` to coarsen the initial mesh. + +## Description of Parameters + +Below all new parameters that are associated with agglomeration are explained. A description of all parameters can be found in {ref}`userguide/parameters:List of Parameters`. + +```{table} Block-Structured Meshes: Description of Parameters. +--- +name: tab:Block-Structured Meshes Description of Parameters +--- + | Parameters |Setting | Description | + | :------ | :----------: | :--------------------------- | + | `MeshIsAlreadyCurved` | `T` | T (True): Enables the agglomeration
F (False): Disables the agglomeration | + | `nskip` | `2` | Coarsen block-structured meshes:
1: no skip
2: use every second point
... | + | `nskipZ` | `2` | Only if the mesh is extruded in z-direction, a different nskip can be given in z-direction. | +``` + + + + + + + +
+
+ ../_images/Aggl-c1.jpg +
+

Fig. 1.6 Front view of the leading edge with the initial mesh configuration. All elements and edges are linear.

+
+
+
+
+ ../_images/Aggl-c2.jpg +
+

Fig. 1.7 Front view of the leading edge of the mesh with the following setting: BoundaryOrder = 5. One block consists of 4x4x4 = 64 elements. The blocks' edges (blue lines) are the boundary of the curved elements. The initial structured mesh is shown in grey. All nodes/connections of the white lines are interpolation points

+
+
+
+
+ ../_images/Aggl-c3.jpg +
+

Fig. 1.8 Generated curved high order mesh by agglomeration.

+
+
+
+ +

Coarsening

+For coarsening two new parameters are provided: `nskip` applies to all structured directions equally, and `nskipZ` can be used for z-extruded meshes.
+ +`nskip` Variations:
+ + + + + + + + +
+
+ ../_images/Aggl-nv-skip0.jpg +
+

Fig. 1.9 Initial mesh 1 nskip =1

+
+
+
+
+ ../_images/Aggl-nv-skip2.jpg +
+

Fig. 1.10 Mesh by following parameter setting: nskip =2

+
+
+
+
+ ../_images/Aggl-nv-skip4.jpg +
+

Fig. 1.11 Generated curved high order mesh by agglomeration.

+
+
+
+
+ ../_images/Aggl-nv-skip8.jpg +
+

Fig. 1.12 Generated curved high order mesh by agglomeration.

+
+
+
+ +The mesh on the left side shows the initial mesh with an initial element, shown in grey. The parameter `nskip=1` uses every point of the initial mesh. The mesh in the middle 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 not be used for the mesh anymore, also not for curving. +The parameter `nskipZ` is has the same function as `nskip` but only for the z-direction. As a consequence of a setting of this parameter the skip level in z-direction by the parameter `nskip` will be repealed.
+ +In section Output Visualization a few different parameter settings are illustrated for the NACA-profile. Take into account that the block-structuring will only work if the value for the parameter(s) `nskip` (and `nskipZ`) is a common divisor of the number of all mesh elements for each axis!!!> + +`nskip`-`nskipZ` Combinations: + + + + + + + + +
+
+ ../_images/Aggl-nv-skip2z-.jpg +
+

Fig. 1.13 View of mesh 1 by following parameter setting: nskip = 2 !nskipZ = ..

+
+
+
+
+ ../_images/Aggl-nv-skip2z1.jpg +
+

Fig. 1.14 View of mesh 1 by following parameter setting: nskip = 2 nskipZ = 1

+
+
+
+
+ ../_images/Aggl-nv-skip2z-.jpg +
+

Fig. 1.15 View of mesh 1 by following parameter setting: nskip = 2 nskipZ = 2

+
+
+
+
+ ../_images/Aggl-nv-skip2z2.jpg +
+

Fig. 1.16 Oblique view of mesh 1 by following parameter setting: nskip = 2 nskipZ = 4

+
+
+
+ +

Correction for z-extruded Meshes

+ +This function does not only apply to block-structured meshes, but to all meshes which are extruded along the z-direction! There are five more new parameters by which one can change special properties of z-extruded meshes like for example length, starting point. + +```{table} Correction for z-extruded Meshes: Description of Parameters. +--- +name: tab:Correction for z-extruded Meshes Description of Parameters +--- + | Parameters |Setting | Description | + | :------ | :----------: | :--------------------------- | + | `doZcorrection` | `F` | T (True): Can only be applied to z-extruded meshes: All elements are aligned exactly along z-direction to suppress grid generator errors
F (False): Correction is disabled | + | `nElemsZ` | `1` | The number of elements in z-direction (after agglomeration!) | + | `zstart` | `0.` | Set minimum z-coordinate | + | `zLength` | `1.0` | Set length of domain in z-direction | + | `zperiodic` | `T` | T (True): The Boundary conditions (here `z_plus` and `z_minus`) are set to periodic ones.
F (False): Default. No change of the boundary condition. | +``` + +The boundary periodicity can be set here to be applied after the mesh connectivity process. The boundary condition type of the z-faces should then be set to >1,(because of tolerance issues, problems during connectivity process are found if the boundary conditions are set to periodic) and then periodicity is then applied afterwards in the z-correction process. + +## Output Visualization + +The figures here were visualizations of the mesh `NACA0012_icem_32elems.cgns`. Therefore, the files `NACA0012_VISCOUS_Debugmesh.vtu` (Fig. 1.1 - Fig. 1.4, Fig. 1.9 - Fig. 1.16) and `NACA0012_VISCOUS_SplineVol.vtu` (Fig. 1.6 - Fig. 1.8) were used. The volume visualization can become quickly a large file. The number of elements can be reduced by the parameter + + Visu_sJ_limit= 0.1 ! for DebugvisuLevel=2, only write elements with a scaled Jacobian < given limit + +that skips elements with a scaled Jacobian > limit.
+ +If there is a need for assistance of visualizing the HOPR output visit {ref}`tutorials/index_visualization:Visualization`. \ No newline at end of file diff --git a/docs/documentation/tutorials/curvedmeshes.md b/docs/documentation/tutorials/curvedmeshes.md new file mode 100644 index 0000000..f49c886 --- /dev/null +++ b/docs/documentation/tutorials/curvedmeshes.md @@ -0,0 +1,398 @@ +# Curved Meshes +## Curved Structured Mesh +This tutorial shows how to generate a curved structured mesh with an equidistant or with a stretched element arrangement alternatively. +The parameter file can be found in + + tutorials/1-05-curved_structured/parameter.ini + + +### Curved Structured Mesh: Description of Parameters +To generate a curved structured mesh the following parameter settings are mandatory: +- `Mode=11` (curved structured block with hexahedral elements):
+ This mode activates a transformation of the cartesian coordinate system to a turned cylindrical coordinate system. The element distribution which the user can determine by the parameter `nElems` refers subsequently to the new coordinate system. + +
+ ../_images/Carttocurve.jpg +
+

Fig. 2.1 Transformation of the coordinate system.

+
+
+ +- `nZones=1` +- `MeshType=3` (for curved mesh) + +The HOPR user has to choose whether he wants to generate a half or a full cylindrical mesh. Therefore the new parameter `WhichMapping` is provided. For specifying the general shape of the (half) cylinder three parameters are provided: `R_0`, `R_INF` and `DZ`. Their meaning is visualized in Fig. 2.2. It must be taken into account that the value for the inner radius (`R_0`) must not be zero and the value for `DZ` corresponds to the half thickness of the (half) cylinder. + +
+ ../_images/CurveCOS.jpg +
+

Fig. 2.2 Visualization of the parameters which determine the shape.

+
+
+ +The assignment of the boundary conditions to the surfaces refers also to the new coordinate system but are defined as before by the parameter `BCIndex (z-,y-,x+,y+,x-,z+)`. For the case that the parameter `WhichMapping` is set to 4 (full cylindrical mesh) the third and fith surface (x+, x-) coincide and the corresponding components of the `BCIndex` vector has to set to zero. + +All new abovementioned parameters are explained below. A description of all parameters of the parameter file can be found in {ref}`userguide/parameters:List of Parameters`. + +```{table} Curved Structured Mesh: Description of Parameter. +--- +name: tab:Curved_Structured_Mesh_Description_of_Parameter +--- + | Parameters |Setting | Description | + | :------ | :----------: | :--------------------------- | + | `Meshtype` | `3` | 1: Cube (origin + dimensions)
2: Bilinear (8 points CGNS notation)
3: Curved (add WhichMapping) | + | `WhichMapping` | `4` | Type of mapping using 6 boundary faces to build the curved structured mesh:
3: Half cylinder
4: Full cylinder | + | `R_0` | `0.5` | Inner radius of curved structured mesh. The Value 0 is not allowed. | + | `R_INF` | `20` | Outer radius of curved structured mesh. | + | `DZ` | `2` | Dimension in z-direction: `[-DZ,DZ]` | +``` + +### Curved Structured Mesh: Stretching Functions +Similar to straight-edged boxes one can generate curved structured meshes with a stretched element arrangement. Therefore three new parameters have to be defined in the parameter file: stretchType, fac and DXmaxToDXmin. In contrast to a cartesian box where two parameters can used individually or in combination to stretch the elements (factor, l0) here a type of stretching has to select with the parameter stretchType. For this reason and the fact that for different stretchTypes different stretching functions are required it is advisable to define all three parameters. + +All three parameters are explained below. A description of all parameters of the parameter file can be found in {ref}`userguide/parameters:List of Parameters`. +```{table} Curved Structured Mesh: Stretching Functions. +--- +name: tab:Curved_Structured_Mesh_Stretching_Functions +--- + | Parameters |Setting | Description | + | :------ | :----------: | :--------------------------- | + | `stretchTypetype` | ` (/3,1,0/)` | This parameter manages the (de)activation of the stretching functions for all axis. For this reason the parameter is a vector with three components.
0: Stretching is deactivated
1: Stretching with a factor
2: Stretching with a legnth ratio
3: Stretching with a bell function. | + | `fac ` | `(/1.5,2.2,10/)` | Stretching factor of the elements in the direction of the turned local cylindrical coordinate axis. A value >1 means an increase of the element size in the direction of the coordinate axis, however, a value of the intervall (0,1) means a decrease. The value 1 does not affect the element sizes and means an deactivation of the stretching function for this axis. The value 0 is only allowed if the stretching function for this axis is deactivated (`stretchType` vector component for this axis is 0). Furthermore the stretching behaviour can be mirrored by adding a negative sign to the values. If the `stretchType` vector component for an axis is 3, the factor will be multiplied by -1 if the half distance is reached. In addition, `fac` has not the significant influence on the element arrangement anymore but the parameter `DXmaxToDXmin`.
In case of `(/1.5,2.2,10/)` each following element in x-direction is stretched by the factor 1.5, in y-direction by the factor 2.2 and in the direction of the z-axis by the factor 10 (dependent on `stretchType`) | + | `DXmaxToDXmin` | ` (/6.,100.,1./)` | This parameter specify the frame ratio of the maximum element size to the minimum element size for the stretched element arrangement. If the `stretchType` vector component for an axis is 3, the element arrangement is affected significantly by `DXmaxToDXmin` instead of the parameter `fac`.
In case of `(/6,100,1/)` the maximum element size in x-direction can be 6 times larger than the minimum element size. In y-direction the maximum element size can be 100 times larger than the minimum element size. The value 1, here set for ratio of the z-direction, is used typically for a deactivated stretching. | +``` + +

Calculation Formulas

+For a better understanding how the element sizes are calculated the formulas for different `stretchType` settings are shown below. + +- Calculation of the element size for `stretchType = 1`: + + $$ {\Delta x_{i+1} = f \cdot \Delta x_{i} f = \left(\frac{\Delta x_{max}}{\Delta x_{min}} \right)^{1/(nElems - 1)} }$$ + +- Calculation of the element size for `stretchType = 3`:
+ + $$ \Delta x(\xi) \sim 1 + \left( \frac{\Delta x_{max}}{\Delta x_{min}}-1\right)\cdot \left( \frac{\exp[-(\xi \cdot f)^2] - \exp[-f^2]}{\exp[0] - \exp[-f^2]}\right) $$ + +
+ ../_images/Stretching-math.jpg +
+

Fig. 2.3 Plot of the calculation function if the parameter `stretchType` is set to 3 ($ f $ means `fac`, $ \frac{\Delta x_{max}}{\Delta x_{min}} $ means `DXmaxToDXmin`). If the value of fac increases, the peakedness will increase and the element sizes near the bonudaries will decrease.

+
+
+ + +

Exemplary Stretching Cases

+ +Furthermore, three different stretching cases are presented below with a full circle (`WhichMapping=4`) and an element distribution `nElems=(/8,6,4/)`. Just x- and y-values were visualized. + + + + + + + + +
+
+ ../_images/Stretch-curve_ex1.jpg +
+

Fig. 2.4 Non-stretched element arrangement.
nElems =(/8,6,4/)
+ stretchType =(/1,1,0/)
+ fac =(/1,1,0./)
+ DXmaxToDXmin =(/100.,100.,1/)

+
+
+
+
+ ../_images/Stretch-curve_ex2.jpg +
+

Fig. 2.5 Stretched element arrangement. The element size in the direction of the x-axis increases by a factor of 1.5. In the direction of the y-axis it increases by the factor of 2.2.
nElems =(/8,6,4/)
+ stretchType =(/1,1,0/)
+ fac =(/1.5,2.2,0./)
+ DXmaxToDXmin =(/100.,100.,1/)

+
+
+
+
+ ../_images/Stretch-curve_ex3.jpg +
+

Fig. 2.6 The `stretchType` parameter is set to 3 for the x-axis. The plot of the belonging calculation function shows that the element sizes increase immediately. In the direction of the y-axis the element size increases by the factor of 2.2.
nElems =(/8,6,4/)
+ stretchType =(/3,1,0/)
+ fac =(/1.5,2.2,0./)
+ DXmaxToDXmin =(/100.,100.,1/)

+
+
+
+
+ ../_images/Stretch-curve_ex4.jpg +
+

Fig. 2.7 The `stretchType` parameter is set to 3 for the x-axis and the y-axis. although the fac values are different the plots of the belonging calculation function looks very similar to each other.
nElems =(/8,6,4/)
+ stretchType =(/3,3,0/)
+ fac =(/1.5,2.2,0./)
+ DXmaxToDXmin =(/100.,100.,1/)

+
+
+
+
+
+ + +### Curved Structured Mesh: Sketchs + +In the following two exemplary curved structured meshes are presented. The first mesh shall consist of twelve elements in x-direction, eight elements in y-direction and four elements in z-direction, all equidistant. The sketch of this problem is shown in Fig. 2.8. The belonging parameter file can be found in Parameterfile Curved Structured Mesh.
+The second one consists of the same number of elements in each direction but instead of an equidistant element arrangement the elements shall be stretched. This sketch is presented in Fig. 2.9. To get the corresponding output by HOPR one have to edit the Parameterfile Curved Structured Mesh manually before executing because the stretching functions `stretchType`, `fac` and `DXmintoDXmax` are commended out. + + + + + + +
+
+ ../_images/Cylinder.jpg +
+

Fig. 2.8 Sketch of the 1 zone curved structured mesh. The full cirlce mesh (WhichMapping=4) shall consist of twelve elements in x-direction, eight elements in y-direction and four elements in z-direction, all equidistant.

+
+
+
+
+ ../_images/Cylinder2.jpg +
+

Fig. 2.9 Sketch of the 1 zone curved structured mesh with a stretched element arrangement. For the x-direction the stretchType parameter was set to 3. The parameter DXmaxToDXmin was set to 6 and the parameter fac to 1.5. For the y-direction the stretchType parameter was set to 1 and the elements were stretched by the factor 2.2. The elements in z-direction remain equidistant.

+
+
+
+ +### Curved Structured Mesh: Outout Visualization +If there is a need for assistance of visualizing the HOPR output visit {ref}`tutorials/index_visualization:Visualization`. + +

Curved Structured Mesh without Stretched Elements

+ + + + + + +
+
+ ../_images/Curvedtotal.jpg +
+

Fig. 2.10 Curved structured mesh

+
+
+
+
+ ../_images/Curvedinner.jpg +
+

Fig. 2.11 Inner domain of the curved structured mesh

+
+
+
+ +

Curved Structured Mesh with Stretched Elements

+ + + + + + +
+
+ ../_images/Curvedstretchedtotal.jpg +
+

Fig. 2.12 Curved structured mesh with stretched element arrangement.

+
+
+
+
+ ../_images/Curvedstretchedinner.jpg +
+

Fig. 2.13 Inner domain of the curved structured mesh with stretched element arrangement

+
+
+
+ +## Mesh Curving by Post-Deformation +This tutorial shows how to generate a curved multi-block mesh, composed of several structured boxes, which are first assembled and then globally mapped to a curved domain +The parameter file can be found in + + tutorials/1-06-curved-postdeform/parameter.ini + +### Mesh Curving by Post-Deformation: User-defined Variables +User-defined varibles can be used to parametrize the parameterfile. + +User-defined variables are searched and replaced in **all other lines(!)** of the parameterfile (all strings between the = and ! sign are searched). They are either an Integer or Real value and defined in the parameterfile as + + DEFVAR=(INT): i0 = 002 ! no. elems in inner square i0xi0 + DEFVAR=(REAL): ri = 0.5 ! inner square dim + +Note that each variable is searched and replaced one after the other, so that names should be absolutely unique. In the example, a variable called ri0 would not be allowed. + +### Mesh Curving by Post-Deformation: Post-Deformation from a box to a cylinder +The idea is to build first a simple box using the internal mesh procedures explained in Multiple Cartesian Boxes and then use a deformation function to obtain a cylinder. The post-deformation parameter is + + MeshPostDeform=1 + +The undeformed and deformed mesh is shown in Fig. 2.14 and Fig. 2.15. + +The order of the curved element mapping can be chosen arbitrarily + + useCurveds =T + BoundaryOrder=5 + + + + + + +
+
+ ../_images/Nopost.jpg +
+

Fig. 2.14 MeshPostDeform=0 +

+
+
+
+
+ ../_images/Withpost.jpg +
+

Fig. 2.15 MeshPostDeform=1

+
+
+
+ +The mapping function maps the xy [-1;1]^2 coordinates to a circular domain of radius 1, but smoothed towards the center to avoid a singular mesh. The radius can be scaled with the parameter + + MeshPostDeform_R0=1.0 + +We choose a periodic boundary condition in z direction. + +### Mesh Curving by Post-Deformation: Parameter Variations +In a variant of the parameterfile, parameter2.ini, the extend of the domain in xy is [-2;2]^2 and is mapped to a circular domain with a radius of 2. The part of the domain inside [-1;1]^2 is mapped like in the example above, but ouside of [-1;1]^2, the mapping is perfectly circular. A final radius of 1 is then achieved by setting the scaling factor to + + MeshPostDeform_R0=0.5 + +see Fig. 2.16. + +In another variant of the parameterfile, parameter3.ini, a mesh with 9 zones in built, and refined at a specific radius, using the stretching functions explained in Stretching Functions, see Fig. 2.17. + + + + + + +
+
+ ../_images/Cylinder_param2.jpg +
+

Fig. 2.16 Outer circular mapping with parameter2.ini

+
+
+
+
+ ../_images/Cylinder_param3.jpg +
+

Fig. 2.17 9 block mesh with stretching parameter3.ini

+
+
+
+ +### Mesh Curving by Post-Deformation: Output Visualization +If there is a need for assistance of visualizing the HOPR output visit {ref}`tutorials/index_visualization:Visualization`. + +## Curved Torus +The same Post-Deformation applied to generate a torus +The parameter file can be found in + + tutorials/1-07-curved-torus/parameter.ini + +### Curved Torus: Post-Deformation from a box to a torus +Analogously to the previous tutorial Mesh Curving by Post-Deformation, we deform a box to a torus with a circular cross section. We only add the main radius of the torus as a parameter + + MeshPostDeform = 1 ! deforms [-1,1]^2 to a cylinder with radius Postdeform_R0 + PostDeform_R0 = s0 ! here domain is [-2,2]^2 mapped to a cylinder with radius 0.5*2 = 1 + PostDeform_Rtorus = rz ! z must be inside [0,1] and periodic + +Since the connectivity of the mesh is created before the deformation, the boundary condition in z direction must be periodic on the undeformed mesh. The torus then has the correct connectivity. + + + + + + +
+
+ ../_images/Nopost_torus.jpg +
+

Fig. 2.18 MeshPostDeform=0

+
+
+
+
+ ../_images/Torusmesh_q0.jpg +
+

Fig. 2.19 MeshPostDeform=1

+
+
+
+ + +## Curved Sphere +The same Post-Deformation applied to generate a mesh of a sphere and a sphherical shell +The parameter file can be found in + + tutorials/1-08-curved-sphere/parameter.ini + +### Curved Sphere: Post-Deformation from a box to a sphere +Analogously to the tutorial Mesh Curving by Post-Deformation, we deform a box to a sphere. + + MeshPostDeform=2 + PostDeform_R0=0.5 + +The initial box consists of 1 central zone and 6 neighbor zones, and forms a cube of [-2;2]^3 , being mapped to a sphere of radius 2. Again, PostDeform_R0 can be used to scale the radius. The mapping of the domain inside [-1;1]^3 is again smoothed to avoid singular elements, and outside [-1,1]^3 is perfectly spherical, see Fig. 2.20 and Fig. 2.21 . + + + + + + +
+
+ ../_images/Nopost_sphere.jpg +
+

Fig. 2.20 MeshPostDeform=0

+
+
+
+
+ ../_images/Withpost_sphere.jpg +
+

Fig. 2.21 MeshPostDeform=2

+
+
+
+ +### Curved Sphere: Spherical shell +In a variant of the parameterfile, parameter_shell.ini, only 6 domains without the central domain are used and a spherical shell is generated. The boundary conditions have to be changed, and the central hole has a size of [-1,1]^3, see Fig. 2.22 and Fig. 2.23, where also the inner boundary face is shown. + + + + + + +
+
+ ../_images/Nopost_shell.jpg +
+

Fig. 2.22 parameter_shell.ini, MeshPostDeform=0

+
+
+
+
+ ../_images/Withpost_shell.jpg +
+

Fig. 2.23 parameter_shell.ini, MeshPostDeform=2

+
+
+
\ No newline at end of file diff --git a/docs/documentation/tutorials/externalmesheswithcurvedboundaries.md b/docs/documentation/tutorials/externalmesheswithcurvedboundaries.md new file mode 100644 index 0000000..df09097 --- /dev/null +++ b/docs/documentation/tutorials/externalmesheswithcurvedboundaries.md @@ -0,0 +1,346 @@ +# External Meshes with Curved Boundaries +This tutorial shows how several methods can be applied to curve the boundary faces of the elements. + +The parameter file can be found in + + tutorials/2-02-external_mesh_sphere/parameter.ini + +## Mesh Curving Techniques +In the development of the next generation of numerical methods for CFD, high order methods are promising a substantial increase in efficiency and accuracy. While the particular high order methods can be very distinct, they have in common that they must rely on a high-order approximation of curved geometries to maintain their high-order of accuracy. The generation of curved meshes is thus a topic whose importance cannot be overstated, if one truly wants to apply high order methods to problems with industrial relevance. Especially aerospace applications heavily rely on complex geometries and pose high requirements to the quality of geometry representation. + +
+ ../_images/Curving.jpg +
+

Fig. 2.1 From linear meshes to high order meshes.

+
+
+ +HOPR provides several strategies to produce high order meshes, relying on linear meshes, which are the standard of today's state-of-the-art meshing software and can be generated by commercial mesh generation tools. The two main strategies can be selected with the parameter `curvingMethod`. Therefore, the parameter `useCurveds` has to set to `T`. +```{table} Mesh Curving Techniques Parameter. +--- +name: tab:Mesh Curving Techniques Parameter +--- + | Parameters |Setting | Description | + | :------ | :----------: | :--------------------------- | + | `curvingMethod` | `1` | 0: No curving method activated.
1: Curving with normal vectors at surface points.
3: Curving with subdivided surface mesh. | +``` + +## Curving Using Normal Vectors +Using normal vectors at the surface points, one can reconstruct the curved boundary face. Normal vectors can either be reconstructed from the existing coarse mesh, given in a point-normal file or prescribed analytically. The way of providing the normal vectors can be selected with the parameter `NormalsType`. For each setting a different number of new but self-explanatory parameters are mandatory. These parameters are listed below. + +It has to be taken into account that for generating the curved boundary splines the parameter `boundaryOrder` has always to set to 4 for a normal vector approach. Otherwise HOPR will maybe not work correctly. + +
+ ../_images/Normalvectors.jpg +
+

Fig. 2.2 Sequence of constructing curved element edges from surface normals..

+
+
+ +

Description of Parameters

+ +Below all parameters which are mandatory for this curving technique are explained. A description of all parameters can be found in {ref}`userguide/parameters:List of Parameters`. + +```{table} Curving Using Normal Vectors: Description of Parameters. +--- +name: tab:Curving Using Normal Vectors Description of Parameters +--- + | Parameters |Setting | Description | + | :------ | :----------: | :--------------------------- | + | `NormalsType` | `1` | Source of the normal:
1: Reconstructed from coarse surface mesh (no additional parameters, `CurveIndex` of BC must be >0).
2: `NormalVectFile` (point normal vector file) needed
3: Analytical normals from surface point positions | + | `NormalVectFile` | ` filename` | Number of association between BC `CurveIndex` and analytical normal. Mandatory if `NormalsType=3` | + | `nExactNormals` | `1` | Number of association between BC `CurveIndex` and analytical normal. Mandatory if `NormalsType=3` | + | `ExactNormals` | `(/1,1/)` | (/ BC `curveIndex`, number of analytical formula/). Build in formulas (see src/mesh/curved.f90):
1: Sphere with origin (0,0,0)
2: Cylinder around z-axis Mandatory if `NormalsType=3` | + | `boundaryOrder` | ` 4` | Not used here, fixed to cubic polynomial | + +``` +

Output Visualization

+The figures below show the visualizations of the boundary sphere (`BoundaryType=(/4,1,0,0/)`) of the meshes `spheremesh01.cgns` (Fig. 2.4 - Fig. 2.6), `spheremesh02.cgns` (Fig. 2.8 - Fig. 2.10) and `spheremesh04.cgns` (Fig. 2.12 - Fig. 2.14) for the three different normal vector approaches. Therefore, the `SPHERE_CURVED_SplineSurf.vtu` file was used. Furthermore, for the second normal vector approach (`NormalsType=2`) the point normal vector file `normals_out_000001.dat` was used (called filename in the captions). +For the purpose of comparison the surfaces of the original meshes the boundary sphere were assigned to are also shown (Fig. 2.3, Fig. 2.7, Fig. 2.11) and were visualized with the `SPHERE_CURVED_Debugmesh_BC.vtu` file. + +If there is a need for assistance of visualizing the HOPR output visit {ref}`tutorials/index_visualization:Visualization`. + +
spheremesh01
+ + + + + + + + +
+
+ ../_images/Exmesh-sm1.jpg +
+

Fig. 2.3 Boundary sphere without using a curving technique.

+
+
+
+
+ ../_images/Exmesh-01j.jpg +
+

Fig. 2.4 Boundary sphere with curved surfaces. These are generated by splines with normal vectors which are reconstructed from the coarse mesh file.
NormalsType = 1

+
+
+
+
+ ../_images/Exmesh-011.jpg +
+

Fig. 2.5 Boundary sphere with curved surfaces. These are generated by normal vectors coming from a mandatory point normal vector file.
NormalsType = 2
NormalVectFile = filename

+
+
+
+
+ ../_images/Exmesh-012.jpg +
+

Fig. 2.6 Boundary sphere with curved surfaces. These are generated by analytical normals from surface point positions.
NormalsType = 3
nExactNormals = 1

ExactNormals = (/1,1/)

+
+
+
+ +
spheremesh02
+ + + + + + + + +
+
+ ../_images/Exmesh-sm2.jpg +
+

Fig. 2.7 Boundary sphere without using a curving technique.

+
+
+
+
+ ../_images/Exmesh-02j.jpg +
+

Fig. 2.8 Boundary sphere with curved surfaces. These are generated by splines with normal vectors which are reconstructed from the coarse mesh file.
NormalsType = 1

+
+
+
+
+ ../_images/Exmesh-021.jpg +
+

Fig. 2.9 Boundary sphere with curved surfaces. These are generated by normal vectors coming from a mandatory point normal vector file.
NormalsType = 2
NormalVectFile = filename

+
+
+
+
+ ../_images/Exmesh-022.jpg +
+

Fig. 2.10 Boundary sphere with curved surfaces. These are generated by analytical normals from surface point positions.
NormalsType = 3
nExactNormals = 1
ExactNormals = (/1,1/)

+
+
+
+ +
spheremesh04
+ + + + + + + + +
+
+ ../_images/Exmesh-sm4.jpg +
+

Fig. 2.11 Boundary sphere without using a curving technique.

+
+
+
+
+ ../_images/Exmesh-04j.jpg +
+

Fig. 2.12 Boundary sphere with curved surfaces. These are generated by splines with normal vectors which are reconstructed from the coarse mesh file.
NormalsType = 1

+
+
+
+
+ ../_images/Exmesh-041.jpg +
+

Fig. 2.13 Boundary sphere with curved surfaces. These are generated by normal vectors coming from a mandatory point normal vector file.
NormalsType = 2
NormalVectFile = filename

+
+
+
+
+ ../_images/Exmesh-042.jpg +
+

Fig. 2.14 Boundary sphere with curved surfaces. These are generated by analytical normals from surface point positions.
NormalsType = 3
nExactNormals = 1
ExactNormals = (/1,1/)

+
+
+
+ +## Curving Using Subdivided Surface Mesh +Here, we need an additional surface mesh file, which contains a surface mesh (in CGNS format) generated by a mesh generator from the initial coarse surface mesh by subdivision. The additional surface points are lying on the CAD geometry and are then used as interpolation points for the polynomial description of the element face. + +

Description of Parameters

+ +Below all parameters which are mandatory for this curving technique are explained. A description of all parameters can be found in {ref}`userguide/parameters:List of Parameters`. +```{table} Curving Using Subdivided Surface Mesh: Description of Parameters. +--- +name: tab:Curving Using Subdivided Surface Mesh Description of Parameters +--- + | Parameters |Setting | Description | + | :------ | :----------: | :--------------------------- | + | `SplitElemFile` | `filename` | Name of suvdivided surface mesh. Mandatory if `curvingMethod=3` | + | `boundaryOrder` | `5` | Order of spline-reconstruction for curved surfaces, corresponding to the number of subdivisions
1 x subdivided: `boundaryOrder=3`
2 x subdivided: `boundaryOrder=5`
3 x subdivided: `boundaryOrder=9`... | +``` +

Output Visualization

+ +The figures below show the visualization of the `SPHERE_Debugmesh_BC.vtu` file by using the mesh file `spheremesh01.cgns` (Fig. 2.3 - Fig. 2.6), `spheremesh02.cgns` (Fig. 2.7 - Fig. 2.10) and `spheremesh01.cgns` (Fig. 2.11 - +Fig. 2.14). In addition, for each file three examples with a different subdivision of the surface mesh are given. + +If there is a need for assistance of visualizing the HOPR output visit {ref}`tutorials/index_visualization:Visualization`. + +
spheremesh01
+ + + + + + + + +
+
+ ../_images/Exmesh-sm1.jpg +
+

Fig. 2.15 Boundary sphere without using a curving technique.

+
+
+
+
+ ../_images/Exmesh-sm14.jpg +
+

Fig. 2.15 Boundary sphere with a double subdivision of the surface mesh by using the sphere_surfmesh_04.cgns file.
boundaryOrder = 5

+
+
+
+
+ ../_images/Exmesh-sm16.jpg +
+

Fig. 2.16 Boundary sphere by using the sphere_surfmesh_06.cgns file. Because of the fact that this subdivision pattern was created neither with a double nor with a triple subdivision of the surface mesh the parameter boundaryOrder has to be adapted accordingly.
boundaryOrder = 7

+
+
+
+
+ ../_images/Exmesh-sm18.jpg +
+

Fig. 2.17 Boundary sphere with a triple subdivision of the surface mesh by using the sphere_surfmesh_08.cgns file.
boundaryOrder = 9

+
+
+
+ +
spheremesh02
+ + + + + + + + +
+
+ ../_images/Exmesh-sm2.jpg +
+

Fig. 2.18 Boundary sphere without using a curving technique.

+
+
+
+
+ ../_images/Exmesh-sm28.jpg +
+

Fig. 2.19 Boundary sphere with a double subdivision of the surface mesh by using the sphere_surfmesh_08.cgns file.
boundaryOrder = 5

+
+
+
+
+ ../_images/Exmesh-sm210.jpg +
+

Fig. 2.20 Boundary sphere by using the sphere_surfmesh_10.cgns file. Because of the fact that this subdivision pattern was created neither with a double nor with a triple subdivision of the surface mesh the parameter boundaryOrder has to be adapted accordingly.
boundaryOrder = 6

+
+
+
+
+ ../_images/Exmesh-sm216.jpg +
+

Fig. 2.21 Boundary sphere with a triple subdivision of the surface mesh by using the sphere_surfmesh_16.cgns file.
boundaryOrder = 9

+
+
+
+ +
spheremesh04
+ + + + + + + + +
+
+ ../_images/Exmesh-sm4.jpg +
+

Fig. 2.22 Boundary sphere without using a curving technique.

+
+
+
+
+ ../_images/Exmesh-sm48.jpg +
+

Fig. 2.23 Boundary sphere with a single subdivision of the surface mesh by using the sphere_surfmesh_08.cgns file.
boundaryOrder = 3

+
+
+
+
+ ../_images/Exmesh-sm416.jpg +
+

Fig. 2.24 Boundary sphere with a double subdivision of the surface mesh by using the sphere_surfmesh_16.cgns file.
boundaryOrder = 5

+
+
+
+
+ ../_images/Exmesh-sm436.jpg +
+

Fig. 2.25 Boundary sphere with a triple subdivision of the surface mesh by using the sphere_surfmesh_36.cgns file.
boundaryOrder = 9

+
+
+
+ +## Use of pre-curved meshes +In some situations the input mesh is already curved, e.g. when HOPRs own meshes are used for input or if the mesh generator already provides curved meshes (e.g. Gmsh). HOPR will read these meshes and directly use their high-order information. Existing high-order meshes from other sources can thus be directly translated into the HOPR format. Furthemore HOPR's various mesh post-processing capabilities can be applied to these meshes and the mesh curving can optionally also be redone by using the normal vector and the subdivision approach described above. + +

Description of Parameters

+Below the mandatory parameters for reading a Gmsh mesh file are described. Note that in case of Gmsh meshes HOPR only supports linear pyramids and prisms, while tetrahedra and hexahedra are supported up to order 4. A description of all parameters can be found in {ref}`userguide/parameters:List of Parameters`. + +```{table} Use of pre-curved meshes: Description of Parameters. +--- +name: tab:Use of pre-curved meshes Description of Parameters +--- + | Parameters |Setting | Description | + | :------ | :----------: | :--------------------------- | + | `Filename` | `cylinder.msh` | Name of mesh file. | + | `boundaryOrder` | `4` | Order of the geometry approximation in the mesh, i.e. the number of interpolation points per direction. Note: Gmsh denotes the polynomial degree by the term "order". | +``` + +

Output Visualization

+ +The figures below show the visualization of the `CYLINDER_SplineVol.dat` file by using the mesh file `cylinder.msh`. + +
cylinder
+ +
+ ../_images/Cylinder_gmsh.png +
+

Fig. 2.26 Curved mesh file created by Gmsh..

+
+
diff --git a/docs/documentation/tutorials/externalmesheswithoutcurvedboundaries.md b/docs/documentation/tutorials/externalmesheswithoutcurvedboundaries.md new file mode 100644 index 0000000..35edf80 --- /dev/null +++ b/docs/documentation/tutorials/externalmesheswithoutcurvedboundaries.md @@ -0,0 +1,162 @@ +# External Meshes without Curved Boundaries +This tutorial shows how to read in externally generated unstructured and structured meshes with straight-edged elements. + +The parameter file can be found in + + tutorials/2-01-external_mesh_sphere/parameter.ini + +## External Mesh +The external mesh which shall read in have to be available in the directory of the executed parameter file as CGNS file. This file is read-in by introducing the parameter `filename`. As one can see from the `parameter.ini`'s excerpt and Fig. 1.1, the parameters of the parameter file have to be adapted to the definitions in the CGNS mesh file. This means that the parameters Mode, `nZones`, `BoundaryName` and `BoundaryType` can not be set freely anymore because the structure of the external mesh must be retained. In this case, the external mesh `spheremesh02` is available as CGNS file and consists of three zones. Therefore, the settings of the parameters are `Mode=3`, `nZones=3`, `filename=spheremesh02.cgns`. + +Another important fact is that for external meshes no `BCIndex` parameter is needed which assigns normally bondary conditions to the surfaces of the mesh. The reason for this is that the boundary conditions are assigned to their belonging surfaces by their names. The boundary condition, for example, of `Zone_1` of the CGNS file (`BC_sphere`) has to be defined as `BoundaryName=sphere` in the parameter file. + + !================================================================= ! + ! MESH + !================================================================= ! + Mode =3 ! 1 Cartesian 3 CGNS 4 STAR-CD V3 + nZones =3 ! number of zones + filename=spheremesh02.cgns ! name of mesh file + ... + ... + + !================================================================= ! + ! CURVED + !================================================================= ! + useCurveds=F ! T to generate curved boundaries + + + !================================================================= ! + ! BOUNDARY CONDITIONS + !================================================================= ! + BoundaryName=sphere ! BC_Name must be defined in mesh file + BoundaryType=(/4,1,0,0/) + BoundaryName=inflow + BoundaryType=(/2,0,0,0/) + BoundaryName=outflow + BoundaryType=(/2,0,0,0/) + BoundaryName=mantel + BoundaryType=(/2,0,0,0/) + + +
+ ../_images/CGNSviewer_spheremesh04.png +
+

Fig. 1.1 Screenshot of the folder structure of a CGNS mesh.

+
+
+ +Furthermore, the `BoundaryType` parameter has to be adapted to the definitions in the CGNS mesh file. If a boundary of the external mesh is curved the `curveIndex` component (2nd component) of the `BoundaryType` parameter has to be an value unequal to zero. Wether curved boundaries shall be generated or not can be controlled by the parameter `useCurveds`. In this tutorial `useCurveds=F`. The case `useCurveds=T` is the topic of the next tutorial which explaines how to use mesh curving techniques to get curved boundaries for your mesh. + +All new parameters of the parameter file of this tutorial are explained below. + +```{table} External Mesh Parameters. +--- +name: tab:External Mesh Parameters +--- + | Parameters |Setting | Description | + | :------ | :----------: | :--------------------------- | + | `filename` | `spheremesh.cgns` | The name of the external mesh file. The belonging files have to be available in the directory of the executed parameter file as CGNS files. | + | `meshscale` | ` 0.001` | Scales all input meshes by a factor | + | `SpaceQuandt` | ` 1000` | Characteristic length of the mesh | + | `useCurveds` | `T` | T (True): If curved boundaries are defined
F (False): If no curved boundaries are defined . | +``` + +A description of all parameters of the parameterfile can be found in {ref}`userguide/parameters:List of Parameters`. + +## Output Visualization +If there is a need for assistance of visualizing the HOPR output visit {ref}`tutorials/index_visualization:Visualization`. + +The figures below show the visualizations of the `SPHERE_Debugmesh.vtu` file. In Addition, a visualization of the surfaces the first boundary condition sphere was assigned to (the `curveIndex` of the `BoundaryType` parameter is set to 1) of the `SPHERE_Debugmesh_BC.vtu` file is shown for each external mesh (see Fig. 1.4, Fig. 1.7, Fig. 1.10) + +

spheremesh01

+ + + + + + + +
+
+ ../_images/Exmeshwo_spheremesh01_surfaces.jpg +
+

Fig. 1.2 HOPR output of spheremesh01.cgns

+
+
+
+
+ ../_images/Exmeshwo_spheremesh01_mesh.jpg +
+

Fig. 1.3 HOPR output of spheremesh01.cgns with extracted edges.

+
+
+
+
+ ../_images/Exmeshwo_spheremesh01_innerbc.jpg +
+

Fig. 1.4 Element surfaces (6) of spheremesh01.cgns the boundary condition sphere was assigned to.

+
+
+
+ +

spheremesh02

+ + + + + + + +
+
+ ../_images/Exmeshwo_spheremesh02_surfaces.jpg +
+

Fig. 1.5 HOPR output of spheremesh02.cgns

+
+
+
+
+ ../_images/Exmeshwo_spheremesh02_mesh.jpg +
+

Fig. 1.6 HOPR output of spheremesh02.cgns with extracted edges.

+
+
+
+
+ ../_images/Exmeshwo_spheremesh02_innerbc.jpg +
+

Fig. 1.7 Element surfaces (24) of spheremesh02.cgns the boundary condition sphere was assigned to.

+
+
+
+ +

spheremesh04

+ + + + + + + +
+
+ ../_images/Exmeshwo_spheremesh04_surfaces.jpg +
+

Fig. 1.8 HOPR output of spheremesh04.cgns

+
+
+
+
+ ../_images/Exmeshwo_spheremesh04_mesh.jpg +
+

Fig. 1.9 HOPR output of spheremesh04.cgns with extracted edges.

+
+
+
+
+ ../_images/Exmeshwo_spheremesh04_innerbc.jpg +
+

Fig. 1.10 Element surfaces (64) of spheremesh04.cgns the boundary condition sphere was assigned to.

+
+
+
\ No newline at end of file diff --git a/docs/documentation/tutorials/figures/0_curved.png b/docs/documentation/tutorials/figures/0_curved.png new file mode 100644 index 0000000..db1fbee Binary files /dev/null and b/docs/documentation/tutorials/figures/0_curved.png differ diff --git a/docs/documentation/tutorials/figures/1_curved.png b/docs/documentation/tutorials/figures/1_curved.png new file mode 100644 index 0000000..0c5c64d Binary files /dev/null and b/docs/documentation/tutorials/figures/1_curved.png differ diff --git a/docs/documentation/tutorials/figures/3_curved.png b/docs/documentation/tutorials/figures/3_curved.png new file mode 100644 index 0000000..b23ae98 Binary files /dev/null and b/docs/documentation/tutorials/figures/3_curved.png differ diff --git a/docs/documentation/tutorials/figures/Aggl-c1.jpg b/docs/documentation/tutorials/figures/Aggl-c1.jpg new file mode 100644 index 0000000..a204afd Binary files /dev/null and b/docs/documentation/tutorials/figures/Aggl-c1.jpg differ diff --git a/docs/documentation/tutorials/figures/Aggl-c2.jpg b/docs/documentation/tutorials/figures/Aggl-c2.jpg new file mode 100644 index 0000000..6a5f21e Binary files /dev/null and b/docs/documentation/tutorials/figures/Aggl-c2.jpg differ diff --git a/docs/documentation/tutorials/figures/Aggl-c3.jpg b/docs/documentation/tutorials/figures/Aggl-c3.jpg new file mode 100644 index 0000000..919b590 Binary files /dev/null and b/docs/documentation/tutorials/figures/Aggl-c3.jpg differ diff --git a/docs/documentation/tutorials/figures/Aggl-nv-fern.jpg b/docs/documentation/tutorials/figures/Aggl-nv-fern.jpg new file mode 100644 index 0000000..097d394 Binary files /dev/null and b/docs/documentation/tutorials/figures/Aggl-nv-fern.jpg differ diff --git a/docs/documentation/tutorials/figures/Aggl-nv-nah.jpg b/docs/documentation/tutorials/figures/Aggl-nv-nah.jpg new file mode 100644 index 0000000..f4db265 Binary files /dev/null and b/docs/documentation/tutorials/figures/Aggl-nv-nah.jpg differ diff --git a/docs/documentation/tutorials/figures/Aggl-nv-skip0.jpg b/docs/documentation/tutorials/figures/Aggl-nv-skip0.jpg new file mode 100644 index 0000000..d0d81fe Binary files /dev/null and b/docs/documentation/tutorials/figures/Aggl-nv-skip0.jpg differ diff --git a/docs/documentation/tutorials/figures/Aggl-nv-skip2.jpg b/docs/documentation/tutorials/figures/Aggl-nv-skip2.jpg new file mode 100644 index 0000000..4e02eab Binary files /dev/null and b/docs/documentation/tutorials/figures/Aggl-nv-skip2.jpg differ diff --git a/docs/documentation/tutorials/figures/Aggl-nv-skip2z-.jpg b/docs/documentation/tutorials/figures/Aggl-nv-skip2z-.jpg new file mode 100644 index 0000000..8e3ab8b Binary files /dev/null and b/docs/documentation/tutorials/figures/Aggl-nv-skip2z-.jpg differ diff --git a/docs/documentation/tutorials/figures/Aggl-nv-skip2z1.jpg b/docs/documentation/tutorials/figures/Aggl-nv-skip2z1.jpg new file mode 100644 index 0000000..e4c2a17 Binary files /dev/null and b/docs/documentation/tutorials/figures/Aggl-nv-skip2z1.jpg differ diff --git a/docs/documentation/tutorials/figures/Aggl-nv-skip2z2.jpg b/docs/documentation/tutorials/figures/Aggl-nv-skip2z2.jpg new file mode 100644 index 0000000..b29eb70 Binary files /dev/null and b/docs/documentation/tutorials/figures/Aggl-nv-skip2z2.jpg differ diff --git a/docs/documentation/tutorials/figures/Aggl-nv-skip4.jpg b/docs/documentation/tutorials/figures/Aggl-nv-skip4.jpg new file mode 100644 index 0000000..24cb041 Binary files /dev/null and b/docs/documentation/tutorials/figures/Aggl-nv-skip4.jpg differ diff --git a/docs/documentation/tutorials/figures/Aggl-nv-skip8.jpg b/docs/documentation/tutorials/figures/Aggl-nv-skip8.jpg new file mode 100644 index 0000000..176cee9 Binary files /dev/null and b/docs/documentation/tutorials/figures/Aggl-nv-skip8.jpg differ diff --git a/docs/documentation/tutorials/figures/Aggl-v-fern.jpg b/docs/documentation/tutorials/figures/Aggl-v-fern.jpg new file mode 100644 index 0000000..7f684e9 Binary files /dev/null and b/docs/documentation/tutorials/figures/Aggl-v-fern.jpg differ diff --git a/docs/documentation/tutorials/figures/Aggl-v-nah.jpg b/docs/documentation/tutorials/figures/Aggl-v-nah.jpg new file mode 100644 index 0000000..6fba52e Binary files /dev/null and b/docs/documentation/tutorials/figures/Aggl-v-nah.jpg differ diff --git a/docs/documentation/tutorials/figures/All_curved.png b/docs/documentation/tutorials/figures/All_curved.png new file mode 100644 index 0000000..3a9a802 Binary files /dev/null and b/docs/documentation/tutorials/figures/All_curved.png differ diff --git a/docs/documentation/tutorials/figures/CGNSviewer_spheremesh04.png b/docs/documentation/tutorials/figures/CGNSviewer_spheremesh04.png new file mode 100644 index 0000000..9d9dca5 Binary files /dev/null and b/docs/documentation/tutorials/figures/CGNSviewer_spheremesh04.png differ diff --git a/docs/documentation/tutorials/figures/Cartbox_BC1.jpg b/docs/documentation/tutorials/figures/Cartbox_BC1.jpg new file mode 100644 index 0000000..0fa6386 Binary files /dev/null and b/docs/documentation/tutorials/figures/Cartbox_BC1.jpg differ diff --git a/docs/documentation/tutorials/figures/Cartbox_BC2.jpg b/docs/documentation/tutorials/figures/Cartbox_BC2.jpg new file mode 100644 index 0000000..dd2ca55 Binary files /dev/null and b/docs/documentation/tutorials/figures/Cartbox_BC2.jpg differ diff --git a/docs/documentation/tutorials/figures/Cartbox_BC3.jpg b/docs/documentation/tutorials/figures/Cartbox_BC3.jpg new file mode 100644 index 0000000..3e69f14 Binary files /dev/null and b/docs/documentation/tutorials/figures/Cartbox_BC3.jpg differ diff --git a/docs/documentation/tutorials/figures/Cartbox_BC4.jpg b/docs/documentation/tutorials/figures/Cartbox_BC4.jpg new file mode 100644 index 0000000..5790484 Binary files /dev/null and b/docs/documentation/tutorials/figures/Cartbox_BC4.jpg differ diff --git a/docs/documentation/tutorials/figures/Cartbox_BC5.jpg b/docs/documentation/tutorials/figures/Cartbox_BC5.jpg new file mode 100644 index 0000000..36dd40f Binary files /dev/null and b/docs/documentation/tutorials/figures/Cartbox_BC5.jpg differ diff --git a/docs/documentation/tutorials/figures/Cartbox_BC6.jpg b/docs/documentation/tutorials/figures/Cartbox_BC6.jpg new file mode 100644 index 0000000..984282f Binary files /dev/null and b/docs/documentation/tutorials/figures/Cartbox_BC6.jpg differ diff --git a/docs/documentation/tutorials/figures/Cartbox_ex1-sketch.jpg b/docs/documentation/tutorials/figures/Cartbox_ex1-sketch.jpg new file mode 100644 index 0000000..5db7436 Binary files /dev/null and b/docs/documentation/tutorials/figures/Cartbox_ex1-sketch.jpg differ diff --git a/docs/documentation/tutorials/figures/Cartbox_ex1_BC1.jpg b/docs/documentation/tutorials/figures/Cartbox_ex1_BC1.jpg new file mode 100644 index 0000000..35bc3a9 Binary files /dev/null and b/docs/documentation/tutorials/figures/Cartbox_ex1_BC1.jpg differ diff --git a/docs/documentation/tutorials/figures/Cartbox_ex1_BC2.jpg b/docs/documentation/tutorials/figures/Cartbox_ex1_BC2.jpg new file mode 100644 index 0000000..7485dc6 Binary files /dev/null and b/docs/documentation/tutorials/figures/Cartbox_ex1_BC2.jpg differ diff --git a/docs/documentation/tutorials/figures/Cartbox_ex1_BC3.jpg b/docs/documentation/tutorials/figures/Cartbox_ex1_BC3.jpg new file mode 100644 index 0000000..9cd3bb3 Binary files /dev/null and b/docs/documentation/tutorials/figures/Cartbox_ex1_BC3.jpg differ diff --git a/docs/documentation/tutorials/figures/Cartbox_ex1_ini.jpg b/docs/documentation/tutorials/figures/Cartbox_ex1_ini.jpg new file mode 100644 index 0000000..621929a Binary files /dev/null and b/docs/documentation/tutorials/figures/Cartbox_ex1_ini.jpg differ diff --git a/docs/documentation/tutorials/figures/Cartbox_ex1_mesh.jpg b/docs/documentation/tutorials/figures/Cartbox_ex1_mesh.jpg new file mode 100644 index 0000000..2acf737 Binary files /dev/null and b/docs/documentation/tutorials/figures/Cartbox_ex1_mesh.jpg differ diff --git a/docs/documentation/tutorials/figures/Cartbox_ex1_sketch.jpg b/docs/documentation/tutorials/figures/Cartbox_ex1_sketch.jpg new file mode 100644 index 0000000..23e8c3c Binary files /dev/null and b/docs/documentation/tutorials/figures/Cartbox_ex1_sketch.jpg differ diff --git a/docs/documentation/tutorials/figures/Cartbox_ex2_BC1.jpg b/docs/documentation/tutorials/figures/Cartbox_ex2_BC1.jpg new file mode 100644 index 0000000..14b08f4 Binary files /dev/null and b/docs/documentation/tutorials/figures/Cartbox_ex2_BC1.jpg differ diff --git a/docs/documentation/tutorials/figures/Cartbox_ex2_BC2.jpg b/docs/documentation/tutorials/figures/Cartbox_ex2_BC2.jpg new file mode 100644 index 0000000..7c0099e Binary files /dev/null and b/docs/documentation/tutorials/figures/Cartbox_ex2_BC2.jpg differ diff --git a/docs/documentation/tutorials/figures/Cartbox_ex2_BC3.jpg b/docs/documentation/tutorials/figures/Cartbox_ex2_BC3.jpg new file mode 100644 index 0000000..b03b00f Binary files /dev/null and b/docs/documentation/tutorials/figures/Cartbox_ex2_BC3.jpg differ diff --git a/docs/documentation/tutorials/figures/Cartbox_ex2_ini.jpg b/docs/documentation/tutorials/figures/Cartbox_ex2_ini.jpg new file mode 100644 index 0000000..daccb63 Binary files /dev/null and b/docs/documentation/tutorials/figures/Cartbox_ex2_ini.jpg differ diff --git a/docs/documentation/tutorials/figures/Cartbox_ini.jpg b/docs/documentation/tutorials/figures/Cartbox_ini.jpg new file mode 100644 index 0000000..3020893 Binary files /dev/null and b/docs/documentation/tutorials/figures/Cartbox_ini.jpg differ diff --git a/docs/documentation/tutorials/figures/Cartbox_mesh.jpg b/docs/documentation/tutorials/figures/Cartbox_mesh.jpg new file mode 100644 index 0000000..360ca86 Binary files /dev/null and b/docs/documentation/tutorials/figures/Cartbox_mesh.jpg differ diff --git a/docs/documentation/tutorials/figures/Cartbox_multiple_BC1.jpg b/docs/documentation/tutorials/figures/Cartbox_multiple_BC1.jpg new file mode 100644 index 0000000..e490fe9 Binary files /dev/null and b/docs/documentation/tutorials/figures/Cartbox_multiple_BC1.jpg differ diff --git a/docs/documentation/tutorials/figures/Cartbox_multiple_BC2.jpg b/docs/documentation/tutorials/figures/Cartbox_multiple_BC2.jpg new file mode 100644 index 0000000..2bd3856 Binary files /dev/null and b/docs/documentation/tutorials/figures/Cartbox_multiple_BC2.jpg differ diff --git a/docs/documentation/tutorials/figures/Cartbox_multiple_BC3.jpg b/docs/documentation/tutorials/figures/Cartbox_multiple_BC3.jpg new file mode 100644 index 0000000..5330269 Binary files /dev/null and b/docs/documentation/tutorials/figures/Cartbox_multiple_BC3.jpg differ diff --git a/docs/documentation/tutorials/figures/Cartbox_multiple_BC4.jpg b/docs/documentation/tutorials/figures/Cartbox_multiple_BC4.jpg new file mode 100644 index 0000000..6c531a9 Binary files /dev/null and b/docs/documentation/tutorials/figures/Cartbox_multiple_BC4.jpg differ diff --git a/docs/documentation/tutorials/figures/Cartbox_multiple_BC5.jpg b/docs/documentation/tutorials/figures/Cartbox_multiple_BC5.jpg new file mode 100644 index 0000000..9b1f0a9 Binary files /dev/null and b/docs/documentation/tutorials/figures/Cartbox_multiple_BC5.jpg differ diff --git a/docs/documentation/tutorials/figures/Cartbox_multiple_BC6.jpg b/docs/documentation/tutorials/figures/Cartbox_multiple_BC6.jpg new file mode 100644 index 0000000..7581aa7 Binary files /dev/null and b/docs/documentation/tutorials/figures/Cartbox_multiple_BC6.jpg differ diff --git a/docs/documentation/tutorials/figures/Cartbox_multiple_BC7.jpg b/docs/documentation/tutorials/figures/Cartbox_multiple_BC7.jpg new file mode 100644 index 0000000..1159169 Binary files /dev/null and b/docs/documentation/tutorials/figures/Cartbox_multiple_BC7.jpg differ diff --git a/docs/documentation/tutorials/figures/Cartbox_multiple_mesh.jpg b/docs/documentation/tutorials/figures/Cartbox_multiple_mesh.jpg new file mode 100644 index 0000000..e137bfb Binary files /dev/null and b/docs/documentation/tutorials/figures/Cartbox_multiple_mesh.jpg differ diff --git a/docs/documentation/tutorials/figures/Cartbox_multiple_sketch.jpg b/docs/documentation/tutorials/figures/Cartbox_multiple_sketch.jpg new file mode 100644 index 0000000..eb2b67b Binary files /dev/null and b/docs/documentation/tutorials/figures/Cartbox_multiple_sketch.jpg differ diff --git a/docs/documentation/tutorials/figures/Cartbox_multiple_stretch_mesh.png b/docs/documentation/tutorials/figures/Cartbox_multiple_stretch_mesh.png new file mode 100644 index 0000000..ec4c8f4 Binary files /dev/null and b/docs/documentation/tutorials/figures/Cartbox_multiple_stretch_mesh.png differ diff --git a/docs/documentation/tutorials/figures/Cartbox_multiple_stretch_side.png b/docs/documentation/tutorials/figures/Cartbox_multiple_stretch_side.png new file mode 100644 index 0000000..f337405 Binary files /dev/null and b/docs/documentation/tutorials/figures/Cartbox_multiple_stretch_side.png differ diff --git a/docs/documentation/tutorials/figures/Cartbox_multiple_stretch_sketch.jpg b/docs/documentation/tutorials/figures/Cartbox_multiple_stretch_sketch.jpg new file mode 100644 index 0000000..f37631c Binary files /dev/null and b/docs/documentation/tutorials/figures/Cartbox_multiple_stretch_sketch.jpg differ diff --git a/docs/documentation/tutorials/figures/Cartbox_periodic_ini.jpg b/docs/documentation/tutorials/figures/Cartbox_periodic_ini.jpg new file mode 100644 index 0000000..0b3014f Binary files /dev/null and b/docs/documentation/tutorials/figures/Cartbox_periodic_ini.jpg differ diff --git a/docs/documentation/tutorials/figures/Cartbox_periodic_sketch.jpg b/docs/documentation/tutorials/figures/Cartbox_periodic_sketch.jpg new file mode 100644 index 0000000..1937496 Binary files /dev/null and b/docs/documentation/tutorials/figures/Cartbox_periodic_sketch.jpg differ diff --git a/docs/documentation/tutorials/figures/Cartbox_sketch.jpg b/docs/documentation/tutorials/figures/Cartbox_sketch.jpg new file mode 100644 index 0000000..71109a5 Binary files /dev/null and b/docs/documentation/tutorials/figures/Cartbox_sketch.jpg differ diff --git a/docs/documentation/tutorials/figures/Carttocurve.jpg b/docs/documentation/tutorials/figures/Carttocurve.jpg new file mode 100644 index 0000000..b5ceafc Binary files /dev/null and b/docs/documentation/tutorials/figures/Carttocurve.jpg differ diff --git a/docs/documentation/tutorials/figures/CurveCOS.jpg b/docs/documentation/tutorials/figures/CurveCOS.jpg new file mode 100644 index 0000000..bb68ce3 Binary files /dev/null and b/docs/documentation/tutorials/figures/CurveCOS.jpg differ diff --git a/docs/documentation/tutorials/figures/Curvedinner.jpg b/docs/documentation/tutorials/figures/Curvedinner.jpg new file mode 100644 index 0000000..8d29636 Binary files /dev/null and b/docs/documentation/tutorials/figures/Curvedinner.jpg differ diff --git a/docs/documentation/tutorials/figures/Curvedstretchedinner.jpg b/docs/documentation/tutorials/figures/Curvedstretchedinner.jpg new file mode 100644 index 0000000..41b9739 Binary files /dev/null and b/docs/documentation/tutorials/figures/Curvedstretchedinner.jpg differ diff --git a/docs/documentation/tutorials/figures/Curvedstretchedtotal.jpg b/docs/documentation/tutorials/figures/Curvedstretchedtotal.jpg new file mode 100644 index 0000000..a14ffaa Binary files /dev/null and b/docs/documentation/tutorials/figures/Curvedstretchedtotal.jpg differ diff --git a/docs/documentation/tutorials/figures/Curvedtotal.jpg b/docs/documentation/tutorials/figures/Curvedtotal.jpg new file mode 100644 index 0000000..9eba0f0 Binary files /dev/null and b/docs/documentation/tutorials/figures/Curvedtotal.jpg differ diff --git a/docs/documentation/tutorials/figures/Curving.jpg b/docs/documentation/tutorials/figures/Curving.jpg new file mode 100644 index 0000000..8202e28 Binary files /dev/null and b/docs/documentation/tutorials/figures/Curving.jpg differ diff --git a/docs/documentation/tutorials/figures/Cylinder.jpg b/docs/documentation/tutorials/figures/Cylinder.jpg new file mode 100644 index 0000000..47d5fd7 Binary files /dev/null and b/docs/documentation/tutorials/figures/Cylinder.jpg differ diff --git a/docs/documentation/tutorials/figures/Cylinder2.jpg b/docs/documentation/tutorials/figures/Cylinder2.jpg new file mode 100644 index 0000000..1fced8f Binary files /dev/null and b/docs/documentation/tutorials/figures/Cylinder2.jpg differ diff --git a/docs/documentation/tutorials/figures/Cylinder_gmsh.png b/docs/documentation/tutorials/figures/Cylinder_gmsh.png new file mode 100644 index 0000000..387fb72 Binary files /dev/null and b/docs/documentation/tutorials/figures/Cylinder_gmsh.png differ diff --git a/docs/documentation/tutorials/figures/Cylinder_param2.jpg b/docs/documentation/tutorials/figures/Cylinder_param2.jpg new file mode 100644 index 0000000..fe23ee8 Binary files /dev/null and b/docs/documentation/tutorials/figures/Cylinder_param2.jpg differ diff --git a/docs/documentation/tutorials/figures/Cylinder_param3.jpg b/docs/documentation/tutorials/figures/Cylinder_param3.jpg new file mode 100644 index 0000000..48726c2 Binary files /dev/null and b/docs/documentation/tutorials/figures/Cylinder_param3.jpg differ diff --git a/docs/documentation/tutorials/figures/DLRF6_bOrd5_innersplines.png b/docs/documentation/tutorials/figures/DLRF6_bOrd5_innersplines.png new file mode 100644 index 0000000..4e1ea2b Binary files /dev/null and b/docs/documentation/tutorials/figures/DLRF6_bOrd5_innersplines.png differ diff --git a/docs/documentation/tutorials/figures/Ex2_cartbox_mesh.jpg b/docs/documentation/tutorials/figures/Ex2_cartbox_mesh.jpg new file mode 100644 index 0000000..427dd4e Binary files /dev/null and b/docs/documentation/tutorials/figures/Ex2_cartbox_mesh.jpg differ diff --git a/docs/documentation/tutorials/figures/Exmesh-011.jpg b/docs/documentation/tutorials/figures/Exmesh-011.jpg new file mode 100644 index 0000000..95e03b2 Binary files /dev/null and b/docs/documentation/tutorials/figures/Exmesh-011.jpg differ diff --git a/docs/documentation/tutorials/figures/Exmesh-012.jpg b/docs/documentation/tutorials/figures/Exmesh-012.jpg new file mode 100644 index 0000000..6918e93 Binary files /dev/null and b/docs/documentation/tutorials/figures/Exmesh-012.jpg differ diff --git a/docs/documentation/tutorials/figures/Exmesh-01j.jpg b/docs/documentation/tutorials/figures/Exmesh-01j.jpg new file mode 100644 index 0000000..269dea2 Binary files /dev/null and b/docs/documentation/tutorials/figures/Exmesh-01j.jpg differ diff --git a/docs/documentation/tutorials/figures/Exmesh-021.jpg b/docs/documentation/tutorials/figures/Exmesh-021.jpg new file mode 100644 index 0000000..bb5323b Binary files /dev/null and b/docs/documentation/tutorials/figures/Exmesh-021.jpg differ diff --git a/docs/documentation/tutorials/figures/Exmesh-022.jpg b/docs/documentation/tutorials/figures/Exmesh-022.jpg new file mode 100644 index 0000000..15c5092 Binary files /dev/null and b/docs/documentation/tutorials/figures/Exmesh-022.jpg differ diff --git a/docs/documentation/tutorials/figures/Exmesh-02j.jpg b/docs/documentation/tutorials/figures/Exmesh-02j.jpg new file mode 100644 index 0000000..43af746 Binary files /dev/null and b/docs/documentation/tutorials/figures/Exmesh-02j.jpg differ diff --git a/docs/documentation/tutorials/figures/Exmesh-041.jpg b/docs/documentation/tutorials/figures/Exmesh-041.jpg new file mode 100644 index 0000000..2e09305 Binary files /dev/null and b/docs/documentation/tutorials/figures/Exmesh-041.jpg differ diff --git a/docs/documentation/tutorials/figures/Exmesh-042.jpg b/docs/documentation/tutorials/figures/Exmesh-042.jpg new file mode 100644 index 0000000..bdfb418 Binary files /dev/null and b/docs/documentation/tutorials/figures/Exmesh-042.jpg differ diff --git a/docs/documentation/tutorials/figures/Exmesh-04j.jpg b/docs/documentation/tutorials/figures/Exmesh-04j.jpg new file mode 100644 index 0000000..29855ad Binary files /dev/null and b/docs/documentation/tutorials/figures/Exmesh-04j.jpg differ diff --git a/docs/documentation/tutorials/figures/Exmesh-sm1.jpg b/docs/documentation/tutorials/figures/Exmesh-sm1.jpg new file mode 100644 index 0000000..435e3c1 Binary files /dev/null and b/docs/documentation/tutorials/figures/Exmesh-sm1.jpg differ diff --git a/docs/documentation/tutorials/figures/Exmesh-sm14.jpg b/docs/documentation/tutorials/figures/Exmesh-sm14.jpg new file mode 100644 index 0000000..ab4c849 Binary files /dev/null and b/docs/documentation/tutorials/figures/Exmesh-sm14.jpg differ diff --git a/docs/documentation/tutorials/figures/Exmesh-sm16.jpg b/docs/documentation/tutorials/figures/Exmesh-sm16.jpg new file mode 100644 index 0000000..3308b6a Binary files /dev/null and b/docs/documentation/tutorials/figures/Exmesh-sm16.jpg differ diff --git a/docs/documentation/tutorials/figures/Exmesh-sm18.jpg b/docs/documentation/tutorials/figures/Exmesh-sm18.jpg new file mode 100644 index 0000000..22ec565 Binary files /dev/null and b/docs/documentation/tutorials/figures/Exmesh-sm18.jpg differ diff --git a/docs/documentation/tutorials/figures/Exmesh-sm2.jpg b/docs/documentation/tutorials/figures/Exmesh-sm2.jpg new file mode 100644 index 0000000..fdb87da Binary files /dev/null and b/docs/documentation/tutorials/figures/Exmesh-sm2.jpg differ diff --git a/docs/documentation/tutorials/figures/Exmesh-sm210.jpg b/docs/documentation/tutorials/figures/Exmesh-sm210.jpg new file mode 100644 index 0000000..e818f94 Binary files /dev/null and b/docs/documentation/tutorials/figures/Exmesh-sm210.jpg differ diff --git a/docs/documentation/tutorials/figures/Exmesh-sm216.jpg b/docs/documentation/tutorials/figures/Exmesh-sm216.jpg new file mode 100644 index 0000000..5cebebf Binary files /dev/null and b/docs/documentation/tutorials/figures/Exmesh-sm216.jpg differ diff --git a/docs/documentation/tutorials/figures/Exmesh-sm28.jpg b/docs/documentation/tutorials/figures/Exmesh-sm28.jpg new file mode 100644 index 0000000..fbb7ce9 Binary files /dev/null and b/docs/documentation/tutorials/figures/Exmesh-sm28.jpg differ diff --git a/docs/documentation/tutorials/figures/Exmesh-sm4.jpg b/docs/documentation/tutorials/figures/Exmesh-sm4.jpg new file mode 100644 index 0000000..75bfd7a Binary files /dev/null and b/docs/documentation/tutorials/figures/Exmesh-sm4.jpg differ diff --git a/docs/documentation/tutorials/figures/Exmesh-sm416.jpg b/docs/documentation/tutorials/figures/Exmesh-sm416.jpg new file mode 100644 index 0000000..c451cae Binary files /dev/null and b/docs/documentation/tutorials/figures/Exmesh-sm416.jpg differ diff --git a/docs/documentation/tutorials/figures/Exmesh-sm436.jpg b/docs/documentation/tutorials/figures/Exmesh-sm436.jpg new file mode 100644 index 0000000..a800c84 Binary files /dev/null and b/docs/documentation/tutorials/figures/Exmesh-sm436.jpg differ diff --git a/docs/documentation/tutorials/figures/Exmesh-sm48.jpg b/docs/documentation/tutorials/figures/Exmesh-sm48.jpg new file mode 100644 index 0000000..997b2a4 Binary files /dev/null and b/docs/documentation/tutorials/figures/Exmesh-sm48.jpg differ diff --git a/docs/documentation/tutorials/figures/Exmeshwo_spheremesh01_innerbc.jpg b/docs/documentation/tutorials/figures/Exmeshwo_spheremesh01_innerbc.jpg new file mode 100644 index 0000000..0e672cb Binary files /dev/null and b/docs/documentation/tutorials/figures/Exmeshwo_spheremesh01_innerbc.jpg differ diff --git a/docs/documentation/tutorials/figures/Exmeshwo_spheremesh01_mesh.jpg b/docs/documentation/tutorials/figures/Exmeshwo_spheremesh01_mesh.jpg new file mode 100644 index 0000000..3ee5510 Binary files /dev/null and b/docs/documentation/tutorials/figures/Exmeshwo_spheremesh01_mesh.jpg differ diff --git a/docs/documentation/tutorials/figures/Exmeshwo_spheremesh01_surfaces.jpg b/docs/documentation/tutorials/figures/Exmeshwo_spheremesh01_surfaces.jpg new file mode 100644 index 0000000..f214462 Binary files /dev/null and b/docs/documentation/tutorials/figures/Exmeshwo_spheremesh01_surfaces.jpg differ diff --git a/docs/documentation/tutorials/figures/Exmeshwo_spheremesh02_innerbc.jpg b/docs/documentation/tutorials/figures/Exmeshwo_spheremesh02_innerbc.jpg new file mode 100644 index 0000000..3701f3d Binary files /dev/null and b/docs/documentation/tutorials/figures/Exmeshwo_spheremesh02_innerbc.jpg differ diff --git a/docs/documentation/tutorials/figures/Exmeshwo_spheremesh02_mesh.jpg b/docs/documentation/tutorials/figures/Exmeshwo_spheremesh02_mesh.jpg new file mode 100644 index 0000000..f1d1688 Binary files /dev/null and b/docs/documentation/tutorials/figures/Exmeshwo_spheremesh02_mesh.jpg differ diff --git a/docs/documentation/tutorials/figures/Exmeshwo_spheremesh02_surfaces.jpg b/docs/documentation/tutorials/figures/Exmeshwo_spheremesh02_surfaces.jpg new file mode 100644 index 0000000..bb5c17a Binary files /dev/null and b/docs/documentation/tutorials/figures/Exmeshwo_spheremesh02_surfaces.jpg differ diff --git a/docs/documentation/tutorials/figures/Exmeshwo_spheremesh04_innerbc.jpg b/docs/documentation/tutorials/figures/Exmeshwo_spheremesh04_innerbc.jpg new file mode 100644 index 0000000..8d85ee4 Binary files /dev/null and b/docs/documentation/tutorials/figures/Exmeshwo_spheremesh04_innerbc.jpg differ diff --git a/docs/documentation/tutorials/figures/Exmeshwo_spheremesh04_mesh.jpg b/docs/documentation/tutorials/figures/Exmeshwo_spheremesh04_mesh.jpg new file mode 100644 index 0000000..faff8c9 Binary files /dev/null and b/docs/documentation/tutorials/figures/Exmeshwo_spheremesh04_mesh.jpg differ diff --git a/docs/documentation/tutorials/figures/Exmeshwo_spheremesh04_surfaces.jpg b/docs/documentation/tutorials/figures/Exmeshwo_spheremesh04_surfaces.jpg new file mode 100644 index 0000000..561ddef Binary files /dev/null and b/docs/documentation/tutorials/figures/Exmeshwo_spheremesh04_surfaces.jpg differ diff --git a/docs/documentation/tutorials/figures/Hopr_nfine1.png b/docs/documentation/tutorials/figures/Hopr_nfine1.png new file mode 100644 index 0000000..094fa8d Binary files /dev/null and b/docs/documentation/tutorials/figures/Hopr_nfine1.png differ diff --git a/docs/documentation/tutorials/figures/Hopr_nfine2.png b/docs/documentation/tutorials/figures/Hopr_nfine2.png new file mode 100644 index 0000000..624a5d9 Binary files /dev/null and b/docs/documentation/tutorials/figures/Hopr_nfine2.png differ diff --git a/docs/documentation/tutorials/figures/Nopost.jpg b/docs/documentation/tutorials/figures/Nopost.jpg new file mode 100644 index 0000000..8a3300c Binary files /dev/null and b/docs/documentation/tutorials/figures/Nopost.jpg differ diff --git a/docs/documentation/tutorials/figures/Nopost_shell.jpg b/docs/documentation/tutorials/figures/Nopost_shell.jpg new file mode 100644 index 0000000..e165d61 Binary files /dev/null and b/docs/documentation/tutorials/figures/Nopost_shell.jpg differ diff --git a/docs/documentation/tutorials/figures/Nopost_sphere.jpg b/docs/documentation/tutorials/figures/Nopost_sphere.jpg new file mode 100644 index 0000000..2d0c098 Binary files /dev/null and b/docs/documentation/tutorials/figures/Nopost_sphere.jpg differ diff --git a/docs/documentation/tutorials/figures/Nopost_torus.jpg b/docs/documentation/tutorials/figures/Nopost_torus.jpg new file mode 100644 index 0000000..e918550 Binary files /dev/null and b/docs/documentation/tutorials/figures/Nopost_torus.jpg differ diff --git a/docs/documentation/tutorials/figures/Normalvectors.jpg b/docs/documentation/tutorials/figures/Normalvectors.jpg new file mode 100644 index 0000000..42e2cfa Binary files /dev/null and b/docs/documentation/tutorials/figures/Normalvectors.jpg differ diff --git a/docs/documentation/tutorials/figures/Nskip.jpg b/docs/documentation/tutorials/figures/Nskip.jpg new file mode 100644 index 0000000..9ca0c89 Binary files /dev/null and b/docs/documentation/tutorials/figures/Nskip.jpg differ diff --git a/docs/documentation/tutorials/figures/PW-custom.jpg b/docs/documentation/tutorials/figures/PW-custom.jpg new file mode 100644 index 0000000..56390e6 Binary files /dev/null and b/docs/documentation/tutorials/figures/PW-custom.jpg differ diff --git a/docs/documentation/tutorials/figures/PW-custommanager.jpg b/docs/documentation/tutorials/figures/PW-custommanager.jpg new file mode 100644 index 0000000..cf63b5a Binary files /dev/null and b/docs/documentation/tutorials/figures/PW-custommanager.jpg differ diff --git a/docs/documentation/tutorials/figures/PW-extractsurface.jpg b/docs/documentation/tutorials/figures/PW-extractsurface.jpg new file mode 100644 index 0000000..b9b4c2a Binary files /dev/null and b/docs/documentation/tutorials/figures/PW-extractsurface.jpg differ diff --git a/docs/documentation/tutorials/figures/PW-featureedges.jpg b/docs/documentation/tutorials/figures/PW-featureedges.jpg new file mode 100644 index 0000000..79b5605 Binary files /dev/null and b/docs/documentation/tutorials/figures/PW-featureedges.jpg differ diff --git a/docs/documentation/tutorials/figures/PW-final.jpg b/docs/documentation/tutorials/figures/PW-final.jpg new file mode 100644 index 0000000..53b198d Binary files /dev/null and b/docs/documentation/tutorials/figures/PW-final.jpg differ diff --git a/docs/documentation/tutorials/figures/PW-ho.jpg b/docs/documentation/tutorials/figures/PW-ho.jpg new file mode 100644 index 0000000..e7ae8c9 Binary files /dev/null and b/docs/documentation/tutorials/figures/PW-ho.jpg differ diff --git a/docs/documentation/tutorials/figures/PW-parallel.jpg b/docs/documentation/tutorials/figures/PW-parallel.jpg new file mode 100644 index 0000000..578c3c4 Binary files /dev/null and b/docs/documentation/tutorials/figures/PW-parallel.jpg differ diff --git a/docs/documentation/tutorials/figures/PW-viewsettings.jpg b/docs/documentation/tutorials/figures/PW-viewsettings.jpg new file mode 100644 index 0000000..707736f Binary files /dev/null and b/docs/documentation/tutorials/figures/PW-viewsettings.jpg differ diff --git a/docs/documentation/tutorials/figures/Paraview-logo.png b/docs/documentation/tutorials/figures/Paraview-logo.png new file mode 100644 index 0000000..fe52bd0 Binary files /dev/null and b/docs/documentation/tutorials/figures/Paraview-logo.png differ diff --git a/docs/documentation/tutorials/figures/Periodichill_3Dview.png b/docs/documentation/tutorials/figures/Periodichill_3Dview.png new file mode 100644 index 0000000..d954f28 Binary files /dev/null and b/docs/documentation/tutorials/figures/Periodichill_3Dview.png differ diff --git a/docs/documentation/tutorials/figures/Splittohex0.png b/docs/documentation/tutorials/figures/Splittohex0.png new file mode 100644 index 0000000..807db65 Binary files /dev/null and b/docs/documentation/tutorials/figures/Splittohex0.png differ diff --git a/docs/documentation/tutorials/figures/Splittohex1.png b/docs/documentation/tutorials/figures/Splittohex1.png new file mode 100644 index 0000000..0b89e26 Binary files /dev/null and b/docs/documentation/tutorials/figures/Splittohex1.png differ diff --git a/docs/documentation/tutorials/figures/Stretch-curve_ex1.jpg b/docs/documentation/tutorials/figures/Stretch-curve_ex1.jpg new file mode 100644 index 0000000..adb1c59 Binary files /dev/null and b/docs/documentation/tutorials/figures/Stretch-curve_ex1.jpg differ diff --git a/docs/documentation/tutorials/figures/Stretch-curve_ex2.jpg b/docs/documentation/tutorials/figures/Stretch-curve_ex2.jpg new file mode 100644 index 0000000..119cbb4 Binary files /dev/null and b/docs/documentation/tutorials/figures/Stretch-curve_ex2.jpg differ diff --git a/docs/documentation/tutorials/figures/Stretch-curve_ex3.jpg b/docs/documentation/tutorials/figures/Stretch-curve_ex3.jpg new file mode 100644 index 0000000..fc1cb2b Binary files /dev/null and b/docs/documentation/tutorials/figures/Stretch-curve_ex3.jpg differ diff --git a/docs/documentation/tutorials/figures/Stretch-curve_ex4.jpg b/docs/documentation/tutorials/figures/Stretch-curve_ex4.jpg new file mode 100644 index 0000000..b922bb8 Binary files /dev/null and b/docs/documentation/tutorials/figures/Stretch-curve_ex4.jpg differ diff --git a/docs/documentation/tutorials/figures/Stretch_example.png b/docs/documentation/tutorials/figures/Stretch_example.png new file mode 100644 index 0000000..9f65ae3 Binary files /dev/null and b/docs/documentation/tutorials/figures/Stretch_example.png differ diff --git a/docs/documentation/tutorials/figures/Stretch_example_f.png b/docs/documentation/tutorials/figures/Stretch_example_f.png new file mode 100644 index 0000000..c0ffe05 Binary files /dev/null and b/docs/documentation/tutorials/figures/Stretch_example_f.png differ diff --git a/docs/documentation/tutorials/figures/Stretch_example_fl0.png b/docs/documentation/tutorials/figures/Stretch_example_fl0.png new file mode 100644 index 0000000..faf351b Binary files /dev/null and b/docs/documentation/tutorials/figures/Stretch_example_fl0.png differ diff --git a/docs/documentation/tutorials/figures/Stretch_example_l0.png b/docs/documentation/tutorials/figures/Stretch_example_l0.png new file mode 100644 index 0000000..f32c111 Binary files /dev/null and b/docs/documentation/tutorials/figures/Stretch_example_l0.png differ diff --git a/docs/documentation/tutorials/figures/Stretch_functions.jpg b/docs/documentation/tutorials/figures/Stretch_functions.jpg new file mode 100644 index 0000000..045c2fd Binary files /dev/null and b/docs/documentation/tutorials/figures/Stretch_functions.jpg differ diff --git a/docs/documentation/tutorials/figures/Stretching-math.jpg b/docs/documentation/tutorials/figures/Stretching-math.jpg new file mode 100644 index 0000000..39c26b1 Binary files /dev/null and b/docs/documentation/tutorials/figures/Stretching-math.jpg differ diff --git a/docs/documentation/tutorials/figures/Torusmesh_q0.jpg b/docs/documentation/tutorials/figures/Torusmesh_q0.jpg new file mode 100644 index 0000000..f744984 Binary files /dev/null and b/docs/documentation/tutorials/figures/Torusmesh_q0.jpg differ diff --git a/docs/documentation/tutorials/figures/Withpost.jpg b/docs/documentation/tutorials/figures/Withpost.jpg new file mode 100644 index 0000000..5e5253f Binary files /dev/null and b/docs/documentation/tutorials/figures/Withpost.jpg differ diff --git a/docs/documentation/tutorials/figures/Withpost_shell.jpg b/docs/documentation/tutorials/figures/Withpost_shell.jpg new file mode 100644 index 0000000..8ea5410 Binary files /dev/null and b/docs/documentation/tutorials/figures/Withpost_shell.jpg differ diff --git a/docs/documentation/tutorials/figures/Withpost_sphere.jpg b/docs/documentation/tutorials/figures/Withpost_sphere.jpg new file mode 100644 index 0000000..31a6fb9 Binary files /dev/null and b/docs/documentation/tutorials/figures/Withpost_sphere.jpg differ diff --git a/docs/documentation/tutorials/generationofhexahedralmeshes.md b/docs/documentation/tutorials/generationofhexahedralmeshes.md new file mode 100644 index 0000000..764c4ef --- /dev/null +++ b/docs/documentation/tutorials/generationofhexahedralmeshes.md @@ -0,0 +1,30 @@ +# 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. + + + + + + +
+
+ ../_images/Splittohex0.png +
+

Fig. 3.1 Mesh consisting of 6 tetrahedra

+
+
+
+
+ ../_images/Splittohex1.png +
+

Fig. 3.2 Each tetrahedron subdivided into 4 hexahedra

+
+
+
+ +

Parameter File

+ +To test this feature, set elemtype to either 104 or 106 and add `splitToHex=T` to the parameter file, which is found in + + tutorials/1-01-cartbox/parameter.ini \ No newline at end of file diff --git a/docs/documentation/tutorials/hoproutputparameter.md b/docs/documentation/tutorials/hoproutputparameter.md new file mode 100644 index 0000000..2155b80 --- /dev/null +++ b/docs/documentation/tutorials/hoproutputparameter.md @@ -0,0 +1,17 @@ +# HOPR Output Parameter + +```{table} HOPR Output Parameter. +--- +name: tab:HOPR Output Parameter +--- + | Parameters | Example | Data Type | Array Dim. | Default Value | Description | + | :------ | :----------: | :------: | :------: | :------: | :------ | + | `Debugvisu` | `Debugvisu=T` | Logical | 1 | F | T (True): Files will be generated, which enable you to visualize the mesh and the boundary mesh for debugging. These files can be found in the directory of the executed `parameter.ini` file.
F (False): Files for visualization will not generated during executing of the `parameter.ini` file. | + | `DebugvisuLevel`| `DebugvisuLevel=1` | Int | 1 | 0 | 0: Visualization of linear mesh and BC (default).
1: Visualization of linear mesh and BC and an additional curved surface visualization (`_SplineSurf.*`) if `useCurveds=T`.
2: Visualization of linear mesh and BC and an additional curved volume visualization (`_SplineVol.*`) if `useCurveds=T`. | + | `NVisu` | `NVisu=5` | Int | 1 | 0 | Number of visualization points per element edge if `useCurveds=T`. | + | `outputFormat` | `outputFormat=1` | Int | 1 | 0 | 0: Paraview vtk (ASCII)
1: Tecplot (ASCII)
2: CGNS (binary) | + | `ProjectName` | `ProjectName=cartbox` | Str | 1 | OBLIGATORY | Part of the output files' name which will be generated during the execution. These Files can be found in the directory of the executed `parameter.ini` file. | +``` + +A description of all parameters of the parameterfile can be found in +{ref}`userguide/parameters:List of Parameters` \ No newline at end of file diff --git a/docs/documentation/tutorials/index_agglomeration.md b/docs/documentation/tutorials/index_agglomeration.md new file mode 100644 index 0000000..40614fb --- /dev/null +++ b/docs/documentation/tutorials/index_agglomeration.md @@ -0,0 +1,22 @@ +# Agglomeration of Block-Structured Meshes + +A simple strategy to create a fully curved mesh is to use block-structured meshes (must be given in structured CGNS format) and agglomerate linear elements to high order elements. + +```{figure} figures/Periodichill_3Dview.png +--- +name: fig:Periodichill_3Dview +width: 400px +align: center +--- +Example of an agglomerated curved mesh of the periodic hill testcase +``` + + +```{toctree} +--- +maxdepth: 1 +caption: Table of Contents +numbered: +--- +blockstructuredmeshes.md +``` \ No newline at end of file diff --git a/docs/documentation/tutorials/index_externalmeshes.md b/docs/documentation/tutorials/index_externalmeshes.md new file mode 100644 index 0000000..1b96842 --- /dev/null +++ b/docs/documentation/tutorials/index_externalmeshes.md @@ -0,0 +1,23 @@ +# External Meshes + +In HOPR, it is possible to read unstructured meshes with straight edged elements, and, if needed, use several curving methods to account for curved domain boundaries. +```{figure} figures/DLRF6_bOrd5_innersplines.png +--- +name: fig:DLRF6_bOrd5_innersplines +width: 400px +align: center +--- +HOPR output: Curved surface and first layer of curved elements +``` +To help the HOPR user to get familiar with these different features for external meshes three hands-on tutorials are provided. + +```{toctree} +--- +maxdepth: 1 +caption: Table of Contents +numbered: +--- +externalmesheswithoutcurvedboundaries.md +externalmesheswithcurvedboundaries.md +``` + diff --git a/docs/documentation/tutorials/index_inbuiltmeshgenerators.md b/docs/documentation/tutorials/index_inbuiltmeshgenerators.md new file mode 100644 index 0000000..31a41cd --- /dev/null +++ b/docs/documentation/tutorials/index_inbuiltmeshgenerators.md @@ -0,0 +1,12 @@ +# In built Mesh Generators + +```{toctree} +--- +maxdepth: 1 +caption: Table of Contents +numbered: +--- +straightedgedboxes.md +curvedmeshes.md +``` + diff --git a/docs/documentation/tutorials/index_postprocessing.md b/docs/documentation/tutorials/index_postprocessing.md new file mode 100644 index 0000000..f2ad5c4 --- /dev/null +++ b/docs/documentation/tutorials/index_postprocessing.md @@ -0,0 +1,14 @@ +# Post-processing Meshes + +Once a mesh is built there are several options to apply post-process meshes. + +```{toctree} +--- +maxdepth: 1 +caption: Table of Contents +numbered: +--- +meshuncurving.md +meshrefinement.md +generationofhexahedralmeshes.md +``` \ No newline at end of file diff --git a/docs/documentation/tutorials/index_visualization.md b/docs/documentation/tutorials/index_visualization.md new file mode 100644 index 0000000..1d4baba --- /dev/null +++ b/docs/documentation/tutorials/index_visualization.md @@ -0,0 +1,12 @@ +# Visualization + + +```{toctree} +--- +maxdepth: 1 +caption: Table of Contents +numbered: +--- +hoproutputparameter.md +visualizationwithparaview.md +``` \ No newline at end of file diff --git a/docs/documentation/tutorials/meshrefinement.md b/docs/documentation/tutorials/meshrefinement.md new file mode 100644 index 0000000..4f54661 --- /dev/null +++ b/docs/documentation/tutorials/meshrefinement.md @@ -0,0 +1,31 @@ +# Mesh Refinement + +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. + + + + + + +
+
+ ../_images/Hopr_nfine1.png +
+

Fig. 2.1 Standard mesh

+
+
+
+
+ ../_images/Hopr_nfine2.png +
+

Fig. 2.2 All elements refined by a factor of 2

+
+
+
+ + +

Parameter File

+ +To test this feature add `nFineHexa=2` to the parameter file, which is also found in + + tutorials/2-01-external_meshes_sphere/parameter.ini \ No newline at end of file diff --git a/docs/documentation/tutorials/meshuncurving.md b/docs/documentation/tutorials/meshuncurving.md new file mode 100644 index 0000000..858efd4 --- /dev/null +++ b/docs/documentation/tutorials/meshuncurving.md @@ -0,0 +1,64 @@ +# Mesh uncurving + +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 figures 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. + + + + + + + + +
+
+ ../_images/All_curved.png +
+

Fig. 1.1 NACA-profile with all elements curved

+
+
+
+
+ ../_images/0_curved.png +
+

Fig. 1.2 NACA-profile with only the profile boundary curved

+
+
+
+
+ ../_images/1_curved.png +
+

Fig. 1.3 NACA-profile with the first cell curved

+
+
+
+
+ ../_images/3_curved.png +
+

Fig. 1.4 NACA-profile with the first three cells curved

+
+
+
+ +```{table} Distribution of the smallest scaled Jacobians per element. +--- +name: tab:Distribution of the smallest scaled Jacobians per element +--- + | **Number of elements with scaled Jacobians ranging between:** | <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 | +``` + +

Parameter File

+ +To test this feature, add `nCurvedBoundaryLayers=n` to the parameter file, which is also found in + + tutorials/3-01-agglomeration_NACA/parameter.ini \ No newline at end of file diff --git a/docs/documentation/tutorials/straightedgedboxes.md b/docs/documentation/tutorials/straightedgedboxes.md new file mode 100644 index 0000000..cbe01dc --- /dev/null +++ b/docs/documentation/tutorials/straightedgedboxes.md @@ -0,0 +1,634 @@ +# Straight-Edged Boxes +HOPR has several simple inbuilt mesh generators. +
+ ../_images/Cartbox_multiple_stretch_mesh.png +
+

Fig. 1.1 HOPR output: Mesh of multiple cartesian boxes with a stretched element arrangement.

+
+
+ +## Cartesian Box +This tutorial shows how to generate a simple mesh of a cubical box and the definition of boundary conditions. +The parameter file can be found in + + tutorials/1-01-cartbox/parameter.ini + +See {ref}`tutorials/straightedgedboxes:Cartesian Box: Exemplary Variations of Boundary Conditions` for cases with different boundary conditions. + +### Cartesian Box: Description of Parameters +In the following all parameters of the parameter file are explained. This description consists only of parameters which are necessary to generate a cartesian box mesh. A description of all parameters can be found in {ref}`userguide/parameters:List of Parameters`. + +```{table} Parameters Cartesian Box. +--- +name: tab:Parameters Cartesian Box +--- + | Parameters |Setting | Description | + | :------ | :----------: | :--------------------------- | + | `ProjectName` | `cartbox ` | Part of the output files' name which will be generated during the execution (cartbox_mesh.h5, cartbox_Debugmesh.dat, cartbox_Debugmesh_BC.dat, ...) .
These Files can be found in the directory of the executed parameter.ini file. | + | `Debugvisu` | `T` | T (true) : The files *_Debugmesh.dat and *_Debugmesh_BC.dat will be generated, which enable you to visualize the mesh and the boundary mesh for debugging.
These Files can be found in the directory of the executed parameter.ini file
F (False): Files for visualization (cartbox_Debugmesh.dat, cartbox_Debugmesh_BC.dat) will not generated during executing of the parameter.ini file. | + | `Mode` | `1` | Mode of mesh generation; 1: Cartmesh (intern), 3: CFD General Notation System (CGNS, extern) | + | `nZones` | `1` | Number of cartesian boxes | + | `Corner` | `(/0.,0.,0. ,,1.,0.,0. ,,1.,1.,0. ,,0.,1.,0. ,,0.,0.,1. ,,1.,0.,1. ,,1.,1.,1. ,,0.,1.,1. /)` | Coordinates of the box's corner nodes in the three-dimensional cartesian coordinate system. For proper operation the nodes have to be in the order as illustrated in {numref}`fig:CartmeshZone_3d`
at the right and each node with x,y,z coordinates. Furthermore the corner nodes define the six surfaces of the cartesian box, see {numref}`tab:Corner`. | + | `nElems` | `(/2,3,4/)` | Number of elements per box in the direction of the cartesian coordinate axes; `(/nElemX,nElemY,nElemZ/)` | + | `BCIndex` | `(/1,2,3,4,5,6/)` | The `BCIndex` parameter assigns a bondary condition to each surface of the cartesian box in order of the surfaces. The number of a vector's component represents the nth boundary
condition in order of its position in the file. Hence, each position refers to the six box sides `(/z-,y-,x+,y+,x-,z+/)`. Here, six different boundary conditions were assigned to the box surfaces.
In case of a boundary condition defined on several faces, the components belonging to these faces will be equal in the BCIndex vector, see {ref}`tutorials/straightedgedboxes:Cartesian Box: Exemplary Variations of Boundary Conditions`
for details. | + | `elemtype` | `108` | Type of cells/elements used for discretization; 104: Tetrahedron, 105: Pyramid, 106:Prism with triangular base, 108: Hexahedron | + | `BoundaryName` | `BC_zminus` | Name of the boundary condition | + | `BoundaryType` | `(/4,0,0,0/)` | For each boundary condition two parameters are mandatory, the Name and the Type. The Type parameter consists of four components to set: (/ Type, curveIndex, State, alpha /).
For a single cartesian box only the component Type has to be set to a arbitrary number > 1. The other components have to be set 0; The further description of the components can be
found in the next tutorials or in the {ref}`userguide/parameters:List of Parameters`. | +``` +### Cartesian Box: Boundary Conditions and Sketch +Fig. 1.2 shows the sketch of the current problem. On the left side, however, one can see an excerpt of the parameter file which deals with the boundary conditions. In this code's excerpt some text elements are colored to show the connection between the surfaces and their assigned boundary conditions. The same colors are used for the visualization below. + + + + + + +
+
+ ../_images/Cartbox_sketch.jpg +
+

Fig. 1.2 Sketch of the current problem

+
+
+
+
+ ../_images/Cartbox_ini.jpg +
+

Fig. 1.3 Cartesian Box Boundary Conditions ini-File

+
+
+
+ +The index of the first component of the `BCIndex` vector `1` says that the boundary condition on position one, `BC_zminus`, is assigned to the first surface. Furthermore, the index of the second component of the BCIndex vector `2` means that the second boundary condition `BC_yminus` is assigned to the second surface of the cartesian box. The other boundary conditions are assigned on the same way to their surfaces. For more examples go to {ref}`tutorials/straightedgedboxes:Cartesian Box: Exemplary Variations of Boundary Conditions`. + +### Cartesian Box: Output Visualization +If there is a need for assistance of visualizing the HOPR output visit {ref}`tutorials/index_visualization:Visualization`. + +

Mesh

+ +This is a visualization of the `cartbox_Debugmesh.dat` file. +
+../_images/Cartbox_mesh.jpg +
+

Fig. 1.4 Mesh of the cartesian box

+
+
+ +

Boundary Conditions

+ +This is a visualization of the `cartbox_Debugmesh_BC.dat`file. The colors of the surfaces represent the boundary conditions and are the same as in the excerpt of the parameter file. + + + + + + + +
+
+ ../_images/Cartbox_BC1.jpg +
+

Fig. 1.5 Boundary condition 1 (BC_wall) is assigned to surface 1

+
+
+
+
+ ../_images/Cartbox_BC2.jpg +
+

Fig. 1.6 Boundary condition 2 (BC_inflow) is assigned to surface 2

+
+
+
+
+ ../_images/Cartbox_BC3.jpg +
+

Fig. 1.7 Boundary condition 3 (BC_outflow) is assigned to surface 3

+
+
+
+ + + + + + + +
+
+ ../_images/Cartbox_BC4.jpg +
+

Fig. 1.8 Boundary condition 4 (BC_yplus) is assigned to surface 4

+
+
+
+
+ ../_images/Cartbox_BC5.jpg +
+

Fig. 1.9 Boundary condition 5 (BC_xminus) is assigned to surface 5

+
+
+
+
+ ../_images/Cartbox_BC6.jpg +
+

Fig. 1.10 Boundary condition 6 (BC_zplus) is assigned to surface 6

+
+
+
+ +### Cartesian Box: Exemplary Variations of Boundary Conditions +For a better understanding of the interaction between the parameter `BCIndex` and the declaration of the boundary conditions two different examples are presented below. Both examples are slight variations of the tutorial Cartesian Box in that way, that there are just three different boundary conditions: `WALL`, `INFLOW` and `OUTFLOW`. This means that components belonging to the surfaces will be equal in the `BCIndex` vector (see {ref}`userguide/parameters:List of Parameters`). + +#### Example 1 + +

Parameters and Sketch

+ +The parameterfile of this example can be found in + + /tutorials/1-01-cartbox/parameter_ex1.ini + +Fig. 1.11 shows the sketch of the current problem and Fig. 1.12 shows an excerpt of the parameter file which deals with the boundary conditions. In this code's excerpt some text elements are colored to show the connection between the surfaces and their assigned boundary conditions. The same colors are used for the visualization below. + +The first four components of the `BCIndex` vector are equal. The index of these components `1` says that the boundary condition on position one, `BC_wall`, is assigned to the surfaces one to four. Furthermore, the fifth component of the `BCIndex` vector with the index `2` means that the second boundary condition `BC_inflow` is assigned to the fifth surface of the cartesian box. At least the third boundary condition `BC_outflow` is assigned to the the sixth surface. Therefore, the last or the sixth component of the `BCIndex` vector is set to `3`. + + + + + + +
+
+ ../_images/Cartbox_ex1_sketch.jpg +
+

Fig. 1.11 Sketch of Example 1

+
+
+
+
+ ../_images/Cartbox_ex1_ini.jpg +
+

Fig. 1.12 Cartesian Box example 1 Boundary Conditions ini-File

+
+
+
+ +

Output Vizualisation

+ +If there is a need for assistance of visualizing the HOPR output visit {ref}`tutorials/index_visualization:Visualization`. + +

Mesh

+ +This is a visualization of the `cartbox_ex1_Debugmesh.dat` file. +
+../_images/Cartbox_ex1_mesh.jpg +
+

Fig. 1.13 Mesh of the cartesian box

+
+
+ +

Boundary Conditions

+ +This is a visualization of the `cartbox_ex1_Debugmesh_BC.dat` file. The colors of the surfaces represent the boundary conditions and are the same as in the excerpt of the parameter file. + + + + + + + +
+
+ ../_images/Cartbox_ex1_BC1.jpg +
+

Fig. 1.14 Boundary condition 1 (BC_wall) is assigned to surface 1-4

+
+
+
+
+ ../_images/Cartbox_ex1_BC2.jpg +
+

Fig. 1.15 Boundary condition 2 (BC_inflow) is assigned to surface 5

+
+
+
+
+ ../_images/Cartbox_ex1_BC3.jpg +
+

Fig. 1.16 Boundary condition 3 (BC_inflow) is assigned to surface 6

+
+
+
+ +#### Example 2 + +The parameterfile of this example can be found in + + /tutorials/1-01-cartbox/parameter_ex2.ini + +Fig. 1.17 shows the sketch of the current problem and Fig. 1.18 shows an excerpt of the parameter file which deals with the boundary conditions. In this code's excerpt some text elements are colored to show the connection between the surfaces and their assigned boundary conditions. The same colors are used for the visualization below. + +In this example the first, the third and the sixth component of the `BCIndex` vector are equal. The index of these components "1" says that the boundary condition on position one, `BC_wall`, is assigned to the surfaces one, three and six. Furthermore, the fifth component of the `BCIndex` vector with the index 2 means that the second boundary condition `BC_inflow` is assigned to the fifth surface of the cartesian box. At least the third boundary condition `BC_outflow` is assigned to the second and the forth surface. Therefore, the second and the fourth component of the `BCIndex` vector is set to 3. + +

Parameters and Sketch

+ + + + + + +
+
+ ../_images/Cartbox_ex1-sketch.jpg +
+

Fig. 1.17 Sketch of Example 2

+
+
+
+
+ ../_images/Cartbox_ex2_ini.jpg +
+

Fig. 1.18 Cartesian Box example 2 Boundary Conditions ini-File

+
+
+
+ +

Output Vizualisation

+ +If there is a need for assistance of visualizing the HOPR output visit {ref}`tutorials/index_visualization:Visualization`. + +

Mesh

+ +This is a visualization of the `cartbox_ex2_Debugmesh.dat` file. + +
+ ../_images/Ex2_cartbox_mesh.jpg +
+

Fig. 1.19 Mesh of the cartesian box

+
+
+ + +

Boundary Conditions

+ +This is a visualization of the `cartbox_ex2_Debugmesh_BC.dat` file. The colors of the surfaces represent the boundary conditions and are the same as in the excerpt of the parameter file. + + + + + + + +
+
+ ../_images/Cartbox_ex2_BC1.jpg +
+

Fig. 1.20 Boundary condition 1 (BC_wall) is assigned to surfaces 1, 3 and 6

+
+
+
+
+ ../_images/Cartbox_ex2_BC2.jpg +
+

Fig. 1.21 Boundary condition 2 (BC_inflow) is assigned to surface 5

+
+
+
+
+ ../_images/Cartbox_ex2_BC3.jpg +
+

Fig. 1.22 Boundary condition 3 (BC_outflow) is assigned to surface 2 and 4

+
+
+
+ + + + + +## Periodic Boundary Conditions +This tutorial shows how to define periodic boundary conditions, only slightly changing the definitions from the tutorial Cartesian Box. +The parameter file can be found in + + tutorials/1-02-cartbox_periodic/parameter.ini + +### Periodic Boundary Conditions: Description of Parameters +In the following parameters of the parameter file are explained. This description consists only of parameters which are necessary to generate a periodic boundary condition. A description of all parameters of the parameterfile can be found in the previous tutorial Cartesian Box and {ref}`userguide/parameters:List of Parameters`. + +```{table} Parameters Periodic Boundary Conditions. +--- +name: tab:Parameters Periodic Boundary Conditions +--- + | Parameters |Setting | Description | + | :------ | :----------: | :--------------------------- | + | `BoundaryName` | `BC_zminus` | Name of the boundary condition | + | `BoundaryType` | ` (/1,0,0,-1/)` | For each periodic boundary condition three parameters are mandatory, the BoundaryName, the BoundaryType and the displacement vector vv. The Type parameter consists of four components to set: (/ Type, curveIndex, State, alpha /). For a periodic boundary condition the component Type has always to set to "1". The fourth component alpha assigns a displacement vector vv and its direction (-/+) to the periodic boundary. An alpha of "-1" means that the first ("1") defined displacement vector is assigned to this surface in the opposite direction ("-1") as he was defined.
For a simple cartesian box the other components curveIndex and State have to be set 0; The further description of the components can be found in the next tutorials or in the {ref}`userguide/parameters:List of Parameters`. | + | `vv` | `(/0.,0.,1./)` |The displacement vector has to specify in the three-dimensional cartesian coordinate system, has to be normal to a surface the vector was assigned to. In addition the displacement vector has to show to the inside of the cartesian box. In case of two parallel surface-planes, both with periodic boundary conditions, just one displacement vector has to be defined. Therefore the different directions of the vectors can be compensated by switching the sign of alpha, the fourth component of the BoundaryType vector.
It has to be taken into account that the displacement vector has to be as long as the distance between the surfaces the vector was assigned to. Also the index of a displacement vector is defined by the position of its definition like the parameter BCIndex. Several definitions of boundary conditions between two definitions of displacement vectors will not affect the index of the displacement vectors. | +``` +### Periodic Boundary Conditions: Boundary Conditions and Sketch +Fig. 1.23 shows the sketch of the current problem. It is similar to the problem in the tutorial Cartesian Box but instead of Dirichlet periodic boundary conditions are assigned to the surfaces one, two, four and six. Further below one can see an excerpt of the parameter file which deals with the periodic boundary conditions. In this code's excerpt some text elements are colored to show the connection between boundary conditions and their related displacement vectors. The same colors are used for the visualization in Fig. 1.17. +
+ ../_images/Cartbox_periodic_sketch.jpg +
+

Fig. 1.23 Sketch of the current problem; For a greater clarity in this figure the displacement vectors are shown shorter than they are. In truth the vector arrows are as long as the side length of the cartesian box.

+
+
+ + +As one can see the first four boundary conditions are periodic because the last alpha components of the BoundaryType parameters are not equal to zero. In the definitions of the first two boundary conditions which are assigned to the surfaces on and six (see BCindex) the alpha component is set to 1. That means that the related displacement vector is the first defined displacement vector in the parameterfile. The sign of alpha can be explained by the position of the related surfaces. On the one hand the vector has to show to the inside of the cartesian box. On the other hand the vector also has to show to the other surfaces which was assigned with the periodic boundary condition. The vector itself has to show in the direction of the z-axis because it has to be normal to the surface. In addition, the side lengths of the cartesian box is one and so all defined displacement vectors has a length of one. +For the other two periodic boundary conditions of the surfaces two and four the second defined displacement vector is consulted (see alpha value of the BoundaryType parameters). The components of the displacement vector (/0.,1.,0./) results from the necessary perpendicularity to the surfaces and the side length of the cartesian box + +
+ ../_images/Cartbox_periodic_ini.jpg +
+

Fig. 1.24 Cartbox periodic ini-File.

+
+
+ + +## Multiple Cartesian Boxes +This tutorial shows how to generate a mesh consisting of mutliple cartesian boxes and how to link them via boundary conditions. +The parameter file can be found in + + tutorials/1-03-cartbox_multiple/parameter.ini + +### Multiple Cartesian Boxes: Definition of Multiple Cartesian Boxes +A general excerpt of the parameter file below shows how multiple cartesian boxes have to be defined in the parameter file. + + !====================================================================== ! + ! MESH + !====================================================================== ! + Mode =1 ! Mode for Cartesian boxes + nZones =n ! number of boxes + + ! === zone 1 === + ... + + ! === zone 2 === + ... + + . + . + . + + ! === zone n === + ... + +At first the parameter `nZones` has to be adapted to the number of cartesian boxes one going to define. The cartesian boxes can defined simply by writing them and their specifications `(Corner, nElems, BCIndex, elemtype, ...)` among themselves. Furthermore it is important that the boxes are defined correctly to each other. If there shall be a contact between two boxes, it is mandatory that the corresponding surfaces will coincide. That means that also the surfaces' corner nodes have to coincide. + +However, a correct defining of the corner nodes is not sufficient for the functionality. Therefore, the parameter `BCIndex` which assigns boundary conditions to box's surfaces has to be adapted. + +```{table} Multiple Cartesian Boxes. +--- +name: tab:Multiple Cartesian Boxes +--- + | Parameters |Setting | Description | + | :------ | :----------: | :--------------------------- | + | `BCIndex` | `(/0,0,0,0,0,0/)` | The `BCIndex` parameter assigns a bondary condition to each surface of the cartesian box in order of the surfaces. The number of a vector's component represents the nth boundary condition in order of its position in the file. Hence, each position refers to the six box sides `(/z-,y-,x+,y+,x-,z+/)`.
In case of multiple cartesian boxes there are surfaces which coincide with other ones. To such surfaces no boundary condition can assign. Therefore, The number of the corresponding vector's component is set to 0. Here, all components of the parameter `BCIndex` are set to 0 (`(/0,0,0,0,0,0/)`).
That means that the this box is surounded completely by six other boxes so that no boundary condition can assign to a single surface. | +``` + +A description of all parameters of the parameterfile can be found in {ref}`userguide/parameters:List of Parameters`. + +### Multiple Cartesian Boxes: Sketch +Fig. 1.25 shows the sketch of the current problem. As on can see the generated mesh shall consist of three cartesian boxes. These zones are thereby defined in the following order in the parameter file: + + 1st zone: lower left zone + + BCIndex setting: (/-,-,-,-,-,0/) + + 2nd zone: upper left zone + + BCIndex setting: (/0,-,-,-,-,-/) + + 3rd zone: upper right zone + + BCIndex setting: (/-,-,-,-,0,-/) + +For a better understanding the different settings of the parameter `BCIndex` are also given. The given settings just consider the components which are set to 0 because of coinciding surfaces are given. + +
+ ../_images/Cartbox_multiple_sketch.jpg +
+

Fig. 1.25 Sketch of the current problem; For a greater clarity in this figure the displacement vectors are shown shorter than they are. In truth the vector arrows are as long as the side length of the cartesian box.

+
+
+ +### Multiple Cartesian Boxes: Output Visualization +If there is a need for assistance of visualizing the HOPR output visit {ref}`tutorials/index_visualization:Visualization`. + +

Mesh

+ +This is a visualization of the `cartbox_multiple_Debugmesh.dat` file. + +
+ ../_images/Cartbox_multiple_mesh.jpg +
+

Fig. 1.26 Mesh of the multiple cartesian boxes.

+
+
+ +

Boundary Conditions

+ +This is a visualization of the `cartbox_multiple_Debugmesh_BC.dat` file. The colors of the surfaces represent the boundary conditions and are the same as in the excerpt of the parameter file. + + + + + + + + + + + + + + + +
+
+ ../_images/Cartbox_multiple_BC1.jpg +
+

Fig. 1.27 Boundary condition 1 (BC_slipwall) is assigned to surface 1 of the first box

+
+
+
+
+ ../_images/Cartbox_multiple_BC2.jpg +
+

Fig. 1.28 Boundary condition 2 (BC_upperwall) is assigned to surface 6 of the second and the third box

+
+
+
+
+ ../_images/Cartbox_multiple_BC3.jpg +
+

Fig. 1.29 Boundary condition 3 (BC_lowerwall) is assigned to surface 3 of the first box and to surface 1 of the third box

+
+
+
+
+ ../_images/Cartbox_multiple_BC4.jpg +
+

Fig. 1.30 Boundary condition 4 (BC_inflow) is assigned to surface 5 of the first and the second box

+
+
+
+
+ ../_images/Cartbox_multiple_BC5.jpg +
+

Fig. 1.31 Boundary condition 5 (BC_outflow) is assigned to surface 3 of the third box

+
+
+
+
+ ../_images/Cartbox_multiple_BC6.jpg +
+

Fig. 1.32 Periodic boundary condition 6 (BC_yminus) is assigned to surface 2 of the first, the second and the third box

+
+
+
+
+ ../_images/Cartbox_multiple_BC7.jpg +
+

Fig. 1.33 Periodic boundary condition 7 (BC_yplus) is assigned to surface 4 of the first, the second and the third box

+
+
+
+ + + + +## Stretching Functions +This tutorial shows how to generate a mesh consisting of a boxes with a stretched element arrangement. +The parameter file can be found in + + tutorials/1-04-cartbox_multiple_stretch/parameter.ini + +### Stretching Functions: Definition of Stretching Functions +With stretching functions one can generate a mesh consisting of a boxes with a stretched element arrangement. Therefore two new parameters can be defined in the parameter file: `factor` and `l0`. Each one can used to stretch the elements of a box. Their meaning and connection is shown as one-dimensional case in Fig. 1.28. +
+ ../_images/Stretch_functions.jpg +
+

Fig. 1.34 "Stretch parameters" `factor` and `l0`

+
+
+ + +In case of a stretched element arrangement the next element of a box is always stretched by a factor f in the direction of the coordinate axis.Thereby the value of factor f can have a positive or a negative sign. Here f has either a negative and an absolute value >1 or a positive sign and an abolute value <1. The length of the first element is called l_{0}. All streched N elements together has the length l_{ges}. + +### Stretching Functions: Building a Cartesian Box with Stretched Elements +To get a single cartesian box with a stretched element arrangement it is important to know that the parameters l_{0} and N are defined even before one define the stretching parameters factor and l0. The length l_{ges} is defined by the boundarys of the cartesian box and the number of elements per box in the direction of the cartesian coordinate axes, called N in the following, was defined with the parameter nElems. + +For a stretched element arrangement either the parameter `factor` or the parameter `l0` has to be defined. The other missing parameter will be calculated internally by using the following equation: + + + +$$ \frac{l_{ges}}{l_{0}} = \sum_{i=1}^{N} f^{i-1} = \frac{1 - f^{N}}{1 - f } $$ + +The structure of both parameters are explained below. A description of all parameters of the parameterfile can be found in {ref}`userguide/parameters:List of Parameters`. + +```{table} Stretching Functions. +--- +name: tab:Stretching Functions +--- + | Parameters |Setting | Description | + | :------ | :----------: | :--------------------------- | + | `factor` | ` (/-1.75,1,-1.5/)` | Stretching factor of the elements in the direction of the cartesian coordinate axes. A value >1 means an increase of the element size in the direction of the coordinate axis, however, a value of the intervall (0,1) means a decrease. The Value 1 does not affect the element sizes just as the value 0 which means an deactivation of the stretching function for this axis. Furthermore the stretching behaviour can be mirrored by adding a negative sign to the values. A combination with the parameter `l0` ignores the element number of the defined box.
In case of (/-1.75,1,-1.5/) each following element in the direction of the x-axis is compressed by the factor -1.75 and in the direction of the z-axis by the factor -1.5. The element arrangement in the direction of the y-axis was not changed. | + | `l0` | `(/0,1,5,0/)` | The length of the first element of a stretched element arrangement of a cartesian box. Each component of the vector stands for an axis of the cartesian coordinate system. The value 0 means an deactivation of the stretching function for this axis. A negative sign defines the length of the first element of the other side of the box. A combination with the parameter `factor` ignores the element number of the defined box. Here the stretching function is deactivated for the x- and z-axis, whereas the first element in the direction of the y-axis has a size of 1.5. | +``` + +

Variable Definition of Stretching Functions

+ +There are several ways to get a stretched element arrangement due to the two different stretching parameters `factor` and `l0`. These cases are: + +-Defining of `factor`: In this case the next element of a box is stretched by a factor f in the direction of the coordinate axis. The parameter l0 will be calculated internally by the equation provided above. The number of elements N which is defined by the parameter nElems is retained. + +-Defining of `l0`: In this case the length of the first element (or the last by using a negative sign) is defined in the direction of the coordinate axis. The parameter factor will be calculated internally by the equation provided above. The number of elements N which is defined by the parameter nElems is retained. + +-Defining of `factor` and `l0`: In this case the parameters have to be defined by the equation provided above manually. Otherwise the stretched element arrangement will most likely not achieved the desired shape. In case of an inaccurate definition the parameter `factor` is adjusted to the parameter l0 which means that factor will changed internally. Furthermore, the number of elements N which is defined by the parameter nElems is probably not retained. Instead, N is rounded to nearest natural number. + +These three different cases are presented below with a small cube with an edge length of one and with four elements per axis. For a better understanding just x- and y- values were changed und visualized. + + + + + + + + +
+
+ ../_images/Stretch_example.png +
+

Fig. 1.35 Non-stretched element arrangement
nElems =(/4,4,4/)
+ factor =(/0,0,0/)
+ l0 =(/0,0,0/)

+
+
+
+
+ ../_images/Stretch_example_f.png +
+

Fig. 1.36 Stretched element arrangement. The element size in the direction of the x-axis increases by a factor of 1.5. In the direction of the y-axis it decreases by the factor of -1.2.
nElems =(/4,4,4/)
+ factor =(/1.5,-1.2,0/)
+ l0 =(/0,0,0/)

+
+
+
+
+ ../_images/Stretch_example_l0.png +
+

Fig. 1.37 Stretched element arrangement. The first element in the direction of the x-axis has a length of 0.5 and a length of 0.2 in the direction of the y-axis. The parameter factor is adjusted.
nElems =(/4,4,4/)
+ factor =(/0,0,0/)
+ l0 =(/0.5,0.2,0/)

+
+
+
+
+ ../_images/Stretch_example_fl0.png +
+

Fig. 1.38 Stretched element arrangement with a combination of factor and l0. The parameter l0 defines the side lengths of the first element. The following element sizes are multiplied by the compontens of the parameter factor. The number of elements N which is defined by the parameter nElems is not retained.
nElems =(/4,4,4/)
+ factor =(/1.5,-1.2,0/)
+ l0 =(/0.5,0.2,0/)

+
+
+
+
+
+ +### Stretching Functions: Building Multiple Cartesian Boxes with Stretched Elements +For building a mesh consisting of multiple cartesian boxes with a stretched element arrangement at least one of the parameters factor and l0 has to be defined for each cartesian box. The reason for this is that if there shall be a contact between two boxes the surfaces' corner nodes have to coincide. This means that defining a stretch function to a cartesian box leads to a need of a stretch function of the adjacent cartesian box. A visualization of this issue one can see in the sketch of the tutorial's problem. + +### Stretching Functions: Sketch +In the following an exemplary mesh of multiple cartesian boxes with a stretched element arrangement is presented. The belonging parameter file can be found in Parameterfile Stretching Functions. The arrangement of the cartesian boxes corresponds to the one of the tutorial Multiple Cartesian Boxes but instead of equidistant elements a stretched element arrangement is produced by inserting the parameters factor and l0. Furthermore the number of elements of each box were increased by changing the parameter nElems for a better visualization of the stretched element arrangement. The figure below shows the way the elements will be stretched. + + +
+ ../_images/Cartbox_multiple_stretch_sketch.jpg +
+

Fig. 1.39 Sketch of a mesh with multiple cartesian boxes with a stretched element arrangement. The arrows show in which direction the elements are compressed. The elements are getting smaller the closer the elements get to the cartesian x-y-plane and y-z-plane. The elements in the direction of the cartesian y-axis remain equidistant.

+
+
+ + +It has to be taken into account that the figure above just demonstrates in which directions the elements are stretched respectively compressed. Wether the number of elements per box nor the cartesian boxes'sizes represented here corresponds to the parameters of the Parameterfile Stretching Functions. + +### Stretching Functions: Output Visualization +If there is a need for assistance of visualizing the HOPR output visit {ref}`tutorials/index_visualization:Visualization`. +These are visualizations of the `cartbox_multiple_stretch_mesh.h5` file. + +
+ ../_images/Cartbox_multiple_stretch_side.png +
+

Fig. 1.40 Side view of the mesh of the multiple cartesian boxes with a stretched element arrangement.

+
+
+
+ ../_images/Cartbox_multiple_stretch_mesh.png +
+

Fig. 1.41 Mesh of the multiple cartesian boxes with a stretched element arrangement.

+
+
\ No newline at end of file diff --git a/docs/documentation/tutorials/visualizationwithparaview.md b/docs/documentation/tutorials/visualizationwithparaview.md new file mode 100644 index 0000000..b0a9a72 --- /dev/null +++ b/docs/documentation/tutorials/visualizationwithparaview.md @@ -0,0 +1,103 @@ +# Visualization with Paraview + + + +Open source multiple-platform application for interactive, scientific visualization. For more Information visit [https://www.paraview.org/](https://www.paraview.org/) + +## Parameter Settings + Debugvisu=T + outputFormat=0 + +## Recommended Settings +ParaView is susceptible for defective output visualizations in cases of using high order meshes or increasing the polynomial degree of supersampling. For this reason, it is recommended to edit several settings to get a correct high resolution visualization. At first the way of projection should be changed. Therefore, go to Edit > View Settings ... (Fig. 1.2) and activate use parallel projection (Fig. 1.3). + + + + + + +
+
+ ../_images/PW-viewsettings.jpg +
+

Fig. 1.2

+
+
+
+
+ ../_images/PW-parallel.jpg +
+

Fig. 1.3

+
+
+
+ +If the polynomial degree of supersampling is higher than 1 the mesh elements will be subdivided depending of the polynomial degree. As a result, it is not apparent anymore where the elements begin and where they end. Because of that two filters have to be applied which make the actual elements visible again in high resolution. + + + + + + +
+
+ ../_images/PW-extractsurface.jpg +
+

Fig. 1.4

+
+
+
+
+ ../_images/PW-featureedges.jpg +
+

Fig. 1.5

+
+
+
+ +## Custom Filter HO-visualization +For simplifing and accelerating this visualization prozess of the HOPR output a custom filter named HO-visualization is provided. This custom filter converts the steps of filter selection to a single step prozedure. After the custom filter was created it has to be imported into ParaView. Therefore, go to Tools > Manage Custom Filters ... (Fig. 1.6), click on Import and add the custom filter HO-visualization (Fig. 1.7). + + + + + + +
+
+ ../_images/PW-custom.jpg +
+

Fig. 1.6

+
+
+
+
+ ../_images/PW-custommanager.jpg +
+

Fig. 1.7

+
+
+
+ +Once the filter is imported it appears in the alphabetically sorted list of the filters (Fig. 1.8) + +
+ ../_images/PW-ho.jpg +
+

Fig. 1.8

+
+
+ +and can be selected (Fig. 1.9). + +
+ ../_images/PW-final.jpg +
+

Fig. 1.9

+
+
\ No newline at end of file diff --git a/docs/documentation/userguide/figures/CartmeshZone_3d.jpg b/docs/documentation/userguide/figures/CartmeshZone_3d.jpg new file mode 100644 index 0000000..10b81c7 Binary files /dev/null and b/docs/documentation/userguide/figures/CartmeshZone_3d.jpg differ diff --git a/docs/documentation/userguide/index.md b/docs/documentation/userguide/index.md index e986a49..61bc5e8 100644 --- a/docs/documentation/userguide/index.md +++ b/docs/documentation/userguide/index.md @@ -11,6 +11,7 @@ numbered: installation.md meshformat.md appendix.md +parameters.md ``` diff --git a/docs/documentation/userguide/parameters.md b/docs/documentation/userguide/parameters.md new file mode 100644 index 0000000..0c4d81d --- /dev/null +++ b/docs/documentation/userguide/parameters.md @@ -0,0 +1,89 @@ +# List of Parameters + +```{table} List of Parameters +--- +name: tab:List of Parameters +width: 50px +--- +| Parameters | Example | Data Type | Array Dim. | Default Value | Description | +| :-------------- | :--------| :---------- | :---------- | :---------- | :--------- | +| `BCIndex` | `BCIndex=(/1,2,3,4,5,6/)` | Int | 6 | MANDATORY | The `BCIndex` parameter assigns a bondary condition to each surface of the cartesian box in order of the
surfaces. The number of a vector's component represents the nth boundary condition in order of its position
in the file. Hence, each position refers to the six box sides (/z-,y-,x+,y+,x-,z+/). In this example six different
boundary conditions were assigned to the box surfaces. In case of a boundary condition defined on several
faces, the components belonging to these faces will be equal in the `BCIndex` vector. In case of multiple
cartesian boxes there are surfaces which coincide with other ones. To such surfaces no boundary condition
can assigned. Therefore, The number of the corresponding vector's component is set to 0. For example, if all
components of the parameter `BCIndex` are set to 0 ("(/0,0,0,0,0,0/)") the box will be surrounded completely
by six other boxes so that no boundary condition can assigned to a single surface. | +| `BoundaryName` | `BoundaryName=BC_zminus` | Str | 1 | MANDATORY | Name of the boundary condition | +| `BoundaryOrder` | `BoundaryOrder=5` | Int | 1 | 2 | Order of spline-reconstruction for curved surfaces | +| `BoundaryType` | `BoundaryType=(/4,0,0,-1/)` | Int | 4 | MANDATORY | The Type parameter consists of four components to set: (/ Type, curveIndex, State, alpha /). For a single
cartesian box only the component Type has to be set to a arbitrary number > 1.
The other components have to be set 0;
For a periodic boundary condition the component Type has always to set to "1". The fourth component alpha
assigns a displacement vector `vv` and its direction (-/+) to the periodic boundary. An alpha of "-1" means that
the first ("1") defined displacement vector is assigned to this surface in the opposite direction ("-1") as he was
defined.For curved-structured meshes the component curveIndex has to set to "1". | +| `checkElemJacobians` | `checkElemJacobians=T` | Logical | 1 | MANDATORY
if useCurveds=T | T (True): The Jacobian matrices are checked and scaled for each element
F (False): The Jacobian matrices are not checked and scaled for each element | +| `conformConnect` | `conformConnect=T` | Logical | 1 | T | T (True): Fast connect for conforming meshes (coarse geometry-adapted search mesh)
F (False): Finer search mesh for non-conforming meshes | +| `Corner` | `Corner=(/0.,0.,0. ,,1.,0.,0. ,,1.,1.,0. ,,0.,1.,0. ,,0.,0.,1. ,,1.,0.,1. ,,1.,1.,1. ,,0.,1.,1. /)` | Real | 24 | MANDATORY
if Mode=1 | Coordinates of the box's corner nodes in the three-dimensional cartesian coordinate system. For proper
operation the nodes have to be in the order as illustrated in Figure {numref}`fig:CartmeshZone_3d` at the right and each node with
x,y,z coordinates. Furthermore the corner nodes define the six surfaces of the cartesian box, see {numref}`tab:Corner` below.| +| `curvingMethod` | `curvingMethod=1` | Int | 1 | 0 | 0: No curving method activated.
1: Curving with normal vectors at surface points.
3: Curving with subdivided surface mesh. | +| `Debugvisu` | `Debugvisu=T` | Logical | 1 | F | T (True): Files will be generated, which enable you to visualize the mesh and the boundary mesh for
debugging. These files can be found in the directory of the executed parameter.ini file.
F (False): Files for visualization will not generated during executing of the parameter.ini file. | +| `DebugvisuLevel` | `DebugvisuLevel=1` | Int | 1 | 0 | 0: Visualization of linear mesh and BC (default).
1: Visualization of linear mesh and BC and an additional curved surface visualization (_SplineSurf.\*) if `useCurveds=T`.
2: Visualization of linear mesh and BC and an additional curved volume visualization (_SplineVol.\*) if `useCurveds=T`. | +| `doExactSurfProjection` | `doExactSurfProjection=F` | Logical | 1 | F | T (True): Project high order nodes onto analytical description of the surface.
F (False): No projection. | +| `dozcorrection` | `dozcorrection=F` | Logical | 1 | F | T (True): All elements are aligned exactly along z-direction to suppress grid generator tolerances
F (False): Correction is disabled | +| `DXmaxToDXmin` | `DXmaxToDXmin=(/6.,100.,1./)` | Real | 3 | (/0.,0.,0./) | This parameter specify the frame ratio of the maximum element size to the minimum element size for the
stretched element arrangement for curved-structured meshes. The value 1 is used typically for a deactivated stretching. | +| `DZ` | `DZ=2` | Real | 1 | MANDATORY
if Mode=11 | Dimension in z-direction: [-DZ,DZ] | +| `elemtype` | `elemtype=108` | Int | 1 | MANDATORY | Type of cells/elements used for discretization:
104: Tetrahedron
105: Pyramid
106: Prism with triangular base
108: Hexahedron | +| `ExactNormals` | `ExactNormals=(/1,1/)` | Int/Real | 2 | (/0,0/) | (/ BC curveIndex, number of analytical formula/). Build in formulas (see src/mesh/curved.f90):
1: Sphere with origin (0,0,0)
2: Cylinder around z-axis | +| `ExactSurfFunc` | `ExactSurfFunc=(/1,1/)` | Int | 2 | (/0,0/) | (/curv index, surface function index/). Surface function:
1: Sphere with origin (0,0,0) and radius 0.5
2: Cylinder around zaxis and radius 0.5
3: NACA 0012 profile in xy plane with length 1 and origin in leading edge | +| `fac` | `fac=(/1.5,2.2,10/)` | Real | 3 | (/0,0,0/) | Stretching factor of the elements in the direction of the turned local cylindrical coordinate axis. The value 0
is only allowed if the stretching function for this axis is deactivated (`stretchType` vector component for this
axis is 0). A value of the intervall (0,1) means a decrease. The value 1 does not affect the element sizes and
means an deactivation of the stretching function for this axis. A value >1 means an increase of the element
size in the direction of the coordinate axis. Furthermore the stretching behaviour can be mirrored by adding
a negative sign to the values. If the `stretchType` vector component for an axis is 3, the factor will be multiplied
by -1 if the half distance is reached. In addition, fac has not the significant influence on the element arrangement
anymore but the parameter `DXmaxToDXmin`. | +| `factor` | `factor=(/-1.75,1,-1.5/)` | Real | 3 | (/0,0,0/) | Stretching factor of the elements in the direction of the cartesian coordinate axes. The value 0 is only allowed
if the stretching function for this axis is deactivated (`stretchType` vector component for this axis is 0). A value
of the intervall (0,1) means a decrease. The value 1 does not affect the element sizes and means an deactivation
of the stretching function for this axis. A value >1 means an increase of the element size in the direction of
the coordinate axis. Furthermore the stretching behaviour can be mirrored by adding a negative sign to the
values. A combination with the parameter l0 ignores the element number of the defined box. | +| `filename` | `filename=spheremesh` | Str | 1 | MANDATORY
if Mode=3/4 | The name of the external mesh file. The belonging files have to be available in the directory of the executed
parameter file as *.cngs files. | +| `jacobianTolerance` | `jacobianTolerance=1.E-16` | Real | 1 | | If Jacobian at a sampling point is lower than this value, a bilinear or curved element is considered broken. | +| `l0` | `l0=(/0,1,5,0/)` | Real | 3 | (/0,0,0/) | The length of the first element of a stretched element arrangement of a cartesian box. Each component of
the vector stands for an axis of the cartesian coordinate system. The value 0 means an deactivation of the
stretching function for this axis. A negative sign defines the length of the first element of the other side of
the box. A combination with the parameter factor ignores the element number of the defined box. | +| `lowerZ_BC,upperZ_BC` | `lowerZ_BC=(/2,1,0,0/)` | Int | 4 | MANDATORY
if MeshDim=2 | Defines boundary conditions for 2D meshes which are extruded to 3D in the extrusion direction, same
structure as for `BoundaryType`, BC names will be `lowerZ_BC`,`upperZ_BC` | +| `jacobianTolerance` | `jacobianTolerance=1.E-16` | Real | 1 | | If Jacobian at a sampling point is lower than this value, a bilinear or curved element is considered broken. | +| `MeshIsAlreadyCurved` | `MeshIsAlreadyCurved=T` | Logical | 1 | F | T (True): Enables the agglomeration
F (False): Disables the agglomeration | +| `meshscale` | `meshscale=0.001` | Real | 1 | 1 | Scales all input meshes by a factor | +| `Meshtype` | `Meshtype=3` | Int | 1 | MANDATORY
if Mode=11 | 1: Cube (origin + dimensions)
2: Bilinear (8 points CGNS notation)
3: Curved (add WhichMapping) | +| `Mode` | `Mode=1` | Int | 1 | MANDATORY | Mode of mesh generation:
1: Cartmesh (intern)
3: CFD General Notation System (CGNS, extern)
4: STAR-CD (extern)
11: Curved-structured mesh | +| `nAnalyze` | `nAnalyze=5` | Int | 1 | BoundaryOrder+2 | Number of points used for mesh analysis, e.g. defines the number of points to sample an elements' Jacobian
if `checkElemJabians` is active. | +| `nCurvedBoundaryLayers` | `nAnalyze=3` | Int | 1 | -1 | If domain is curved, try to uncurve it and leave only the sides with BCs speciefied (i.e. `curveIndex >0`) curved
-1: deactivated,
0: only boundary is curved,
1: only first element is curved,
2-n: first n layers from the boundary are curved | +| `nElems` | `nElems=(/2,3,4/)` | Int | 3 | MANDATORY
if Mode=1 | Number of elements per box in the direction of the coordinate axes; (/nElemX,nElemY,nElemZ/) | +| `nElemsZ` | `nElems=1` | Int | 1 | MANDATORY
if MeshIsAl.=T | The number of curved elements | +| `nExactNormals` | `nExactNormals=1` | Int | 1 | MANDATORY
if NormalsType=3 |Number of association between BC `CurveIndex` and analytical normal | +| `nFineHexa` | `nFineHexa=2` | Int | 1 | 1 | Split all hexahedra in each direction by this factor, no refinement if `nFineHexa=1` | +| `NormalsType` | `NormalsType=2` | Int | 1 | 1 | Source of the normal:
1: Reconstructed (no additional parameters, `CurveIndex` of BC must be >0).
2: NormalVectFile(point normal vector file) needed
3: Analytical normals | +| `NormalVectFile` | `NormalVectFile=filename` | Str | 1 | MANDATORY
if NormalsType=2 | special file format associating surface points and normal vectors | +| `nSkip` | `nSkip=2` | Int | 1 | MANDATORY
if MeshIsAl.=T | Coarsen block-structured meshes:
1: no skip
2: use every second point
... | +| `nSkipZ` | `nSkipZ=2` | Int | 1 | 1 | If mesh is z-extruded a different skip can be given in z-direction. | +| `NVisu` | `NVisu=5` | Int | 1 | 0 | Number of visualization points per element edge if `useCurveds=T`. | +| `nZones` | `nZones=1` | Int | 1 | MANDATORY | Number of zones / cartesian boxes if Mode=1: The Parameter has to set to 1 if Mode=11 | +| `outputFormat` | `outputFormat=1` | Int | 1 | 0 | 0: Paraview vtk (ASCII)
1: Tecplot (ASCII)
2: CGNS (binary) | +| `ProjectName` | `ProjectName=cartbox` | Str | 1 | MANDATORY | Part of the output files' name which will be generated during the execution. These Files can be found in the
directory of the executed parameter.ini file. | +| `R_0` | `R_0=0.5` | Real | 1 | MANDATORY
if Mode=11 | Inner radius of curved structured mesh. The Value 0 is not allowed. | +| `R_INF` | `R_INF=20` | Real | 1 | MANDATORY
if Mode=11 | Outer radius of curved structured mesh | +| `SpaceQuandt` | `SpaceQuandt=1.0` | Real | 1 | 0.1 | Characteristic length of the mesh | +| `SplitElemFile` | `SplitElemFile=filename` | Str | 1 | MANDATORY
if curvingMethod=3 | Name of suvdivided surface mesh | +| `SplitToHex` | `SplitToHex=T` | Logical | 1 | F | If `SplitToHex=F` then tetrahedra and prisms are subdivided to yield pure hexahedral meshes meshes.
Hexahedra are also subdivided to guarantee a conforming connection.
NOTE: Pyramids cannot be split, this function cannot be used with pyramids present in the mesh. | +| `stretchType` | `stretchType=(/3,1,0/)` | Int | 3 | (/0,0,0/) | This parameter manages the (de)activation of the stretching functions for all axis. For this reason the parameter
is a vector with three components.
0: Stretching in direction of the axis is deactivated
1: Stretching in direction of the axis is activated
3: Stretching in direction of the axis is activated and from the second half of the mesh distance on the stretching
factor is multiplied by -1. | +| `useCurveds` | `useCurveds=T` | Logical | 1 | F | T (True): If curved boundaries are defined
F (False): If no curved boundaries are defined | +| `vv` | `vv=(/0,0,1./)` | Real | 3 | (/0,0,0/) | The displacement vector has to specify in the three-dimensional cartesian coordinate system and has to be
normal to a surface the vector was assigned to. In addition the displacement vector has to show to the inside
of the cartesian box. In case of two parallel surface-planes, both with periodic boundary conditions, just one
displacement vector has to be defined. Therefore the different directions of the vectors can be compensated
by switching the sign of alpha, the fourth component of the `BoundaryType` vector.
The displacement vector has to be as long as the distance between the surfaces the vector was assigned to.
The index of a displacement vector is defined by the position of its definition like the parameter `BCIndex`.
Several definitions of boundary conditions between two definitions of displacement vectors will not affect
the index of the displacement vectors. | +| `WhichMapping` | `WhichMapping=4` | Int | 1 | MANDATORY
if Meshtype=3 | Type of mapping using 6 boundary faces to build the curved structured mesh:
3: Half cylinder
4: Full cylinder | +| `zLength` | `zLength=1.0` | Real | 1 | 1 | Change (3D) or define (2D) length of domain in z-direction. | +| `zperiodic` | `zperiodic=T` | Logical | 1 | F | T (True): The Boundary conditions z_plus und z_minus are set to periodic ones.
F (False): The Boundary conditions z_plus und z_minus remain non-periodic. | +| `zstart` | `zstart=0.` | Real | 1 | 0 | Change minimum z-coordinate | +``` + +```{figure} figures/CartmeshZone_3d.jpg +--- +name: fig:CartmeshZone_3d +width: 400px +align: left +--- + +The Cartesian Box. +``` + +```{table} Corner. +--- +name: tab:Corner +--- + | Surface | Corner Nodes | Position in the Cart. coordinate system | + | :------ | :----------: | :--------------------------- | + | 1 | 1-2-3-4 | z < 0 plane (z-) | + | 2 | 1-2-5-6 | y < 0 plane (y-) | + | 3 | 2-3-6-7 | x > 0 plane (x+) | + | 4 | 3-4-7-8 | y > 0 plane (y+) | + | 5 | 1-4-5-8 | x < 0 plane (x-) | + | 6 | 5-6-7-8 | z > 0 (z+) | + +``` \ No newline at end of file