# <meshing>

During meshing, ultraFluidX discretizes the volumetric simulation domain into cubic elements (“voxels”) for which the flow field is computed. The <meshing> category specifies the main parameters for the volume meshing and the refinement zones.

## <meshing> - <general>

The <general> category contains the following parameters:
<coarsest_mesh_size>
Specifies the coarsest size (edge length) of the voxels in $\left[\text{m}\right]$ that ultraFluidX uses to discretize the domain. Higher resolution than the coarsest mesh size in regions of interest is specified via the <refinement> category.
<mesh_preview>
Specifies if a preview of the volume mesh is exported prior to the actual simulation. If set to true, ultraFluidX writes an EnSight Gold file (uFX_meshPreview.case and corresponding *.geo and *.data files) into the uFX_meshData folder.
Information included in the mesh preview is the state of the voxels (solid: -1, fluid: 0), the applied boundary conditions (none and solid: -1, none and fluid: 0, moving/rotating: 1, no-slip: 2, slip: 3, outlet: 4, inlet: 5), the source nodes (none and solid: -1, none and fluid: 0, numbering from 1 onwards according to number of source regions) and the rotating nodes (none and solid: -1, none and fluid: 0, numbering from 1 onwards according to number of rotating regions).
Default = false
<mesh_export>
Specifies if the mesh is written to disk after the meshing is completed. If set to true, ultraFluidX will write a mesh source file uFX_mesh.bin to the uFX_meshData folder, that can then be used as input for a future simulation. Refer to the <mesh_source_file> option.
Default = false
<mesh_source_file>
(Optional) Specifies the path to a mesh source file. If specified, ultraFluidX skips the meshing step and read in the mesh topology from the specified mesh source file instead. Generally, only mesh source files that were written by the same version of ultraFluidX (by setting <mesh_export> to true) can be used.

## <meshing> - <refinement>

Refinement zones are specified via the <refinement> category. Possible sub-categories are <box>, <offset> and <custom> and they all share the parameter <refinement_level> that specifies the refinement of the zone with regards to the coarsest level. With each additional level the coarsest mesh size (corresponding to level 0) is divided by 2. In general, the voxel size of the nth refinement level is defined as: (1) ${\text{Δx}}_{\text{n}}\text{ }\text{=}\text{ }\frac{{\text{Δx}}_{\text{0}}}{{\text{2}}^{\text{n}}}$ Where ${\text{Δx}}_{\text{0}}$ is the voxel size at the coarsest refinement level.
<box>
This category contains all refinement zones with cuboid shape, it can have an arbitrary number of children named <box_instance> with the following parameters:
<name>
(Optional) Name of the instance.
<refinement_level>
Refinement level of the instance with regards to the coarsest level.
<bounding_box>
Bounding box of the instance, must be specified via the child parameters <x_min>, <x_max>, <y_min>, <y_max>, <z_min> and <z_max> in $\left[\text{m}\right]$.
<offset>
This category contains all refinement zones that are an offset of the whole surface mesh or a specific part. It can have an arbitrary number of children named <offset_instance> with the following parameters:
<name>
Name of the instance (optional).
<refinement_level>
Refinement level of the instance with regards to the coarsest level.
<normal_distance>
Distance of the offset to the surface, that is, the effective “thickness” of the zone. Specified in $\left[\text{m}\right]$.
Note: A minimum number of 4 voxels will always be applied.
<parts>
If the offset is not applied to the whole surface mesh, an arbitrary number of individual parts can be specified via the child parameter <name> within the <parts> category. The specified names must exactly match the respective part names in the STL file.
<custom>
This category contains all refinement zones that are specified via a volume with arbitrary shape contained in the STL file. Any volume that you want to use for custom refinement needs to be identified as a separate “solid” within the STL file, and the name of this solid needs to be passed to ultraFluidX in the <parts> - <name> section.
The volume must be closed and all normals of the volume must point outwards.
CAUTION:
If the volume is included in the STL, but not specified as a custom zone, it will be treated as a solid by ultraFluidX.
The category can have an arbitrary number of children named <custom_instance> with the following parameters:
<name>
Name of the instance (optional).
<refinement_level>
Refinement level of the instance with regards to the coarsest level.
<parts>
<name>
The closed volume(s) contained in the STL file must be specified via the child parameter <name> within the <parts> category, several volumes can be specified via repeated usage of <name> to assign the same refinement level to all of them. The specified names must exactly match the respective part names in the STL file.

## <meshing> - <overset>

This category contains all parameters needed to define a moving overset grid region.
<rotating> - <rotating_instance>
In these grid regions, a local frame of reference is defined and the surface geometry and voxels are rotated each timestep according to the specified rotational speed.
Note: The rotating volume must be axisymmetric.
CAUTION:
All geometry parts inside the moving mesh region will rotate with the mesh. Care is needed at the interface when setting up a rotating volume in the vicinity of geometry parts. Refer to separate setup recommendations.
<name>
(Optional) Name of the rotating instance. If not specified, a generic name is attributed.
<rpm>
This parameter indicates the rotational speed of the moving overset grid region in revolutions per minute.
<center>
<x_pos>, <y_pos>, <z_pos>
The center point around which the moving region rotates.
<axis>
<x_dir>, <y_dir>, <z_dir>
The axis of rotation of the overset mesh zone.
<parts>
<name>
This section contains the STL parts that enclose the rotating region.
Note: The parts must form a closed volume, and normals must point outwards.
The rotating region needs to be axisymmetric, such as cylindrical or toroid shape.