### 10.6 Coordinate transformations Session file configuration

This section describes how to include a coordinate transformation to the solution of the incompressible Navier-Stokes equations. In some cases, this approach allows a slightly deformed geometry to be mapped into a geometry with a homogeneous direction, which can be treated using a quasi-3D method. It is also useful for problems with a moving body, where otherwise a moving mesh would have to be employed.

#### 10.6.1 Solver Info

To activate the mapping technique, `SolverType` needs to be set as:

1<I PROPERTY="SolverType" VALUE="VCSMapping" />

Also, there are other optional properties in the `SolverInfo` section:

1<I PROPERTY="MappingImplicitPressure" VALUE="TRUE"/> <!-- Default = FALSE -->
2<I PROPERTY="MappingImplicitViscous" VALUE="TRUE"/>  <!-- Default = FALSE -->
3
4<I PROPERTY="MappingNeglectViscous" VALUE="FALSE"/>  <!-- Default = FALSE -->

the first two options determine if the pressure and viscous terms resulting from the coordinate transformation are treated implicitly using an iterative procedure. If the last option is set to true, the viscous terms in the mapping are not computed. This leads to a faster solution, but the effect on the results need to be determined for the specific case. By default, all mapping terms are computed and treated explicitly.

#### 10.6.2 Parameters

When treating the mapping terms implicitly, the following parameters can be set:

1<P> MappingPressureTolerance    = 1e-8  </P>  <!-- Default = 1e-12  -->
2<P> MappingViscousTolerance     = 1e-8  </P>  <!-- Default = 1e-12  -->
3<P> MappingPressureRelaxation   = 0.9   </P>  <!-- Default = 1.0    -->
4<P> MappingViscousRelaxation    = 0.9   </P>  <!-- Default = 1.0    -->

They determine the tolerance of the iterative solution of the equations, and a relaxation parameter which can improve the numerical stability of the method.

#### 10.6.3 Mapping

The particular transformation employed is specified by:

1<MAPPING TYPE="XYofZ">
2    <COORDS>Mapping</COORDS>
3    <VEL>MappingVel</VEL>
4    <TIMEDEPENDENT>True</TIMEDEPENDENT> <!-- Default is False -->
5</MAPPING>

where `TIMEDEPENDENT` indicates if the transformation varies with time.

The available values for `TYPE`, and the transformations they represent, are:

 Mapping type x y z `Translation` x + f(t) y + g(t) z + h(t) `XofZ` x + f(z,t) y z `XofXZ` f(x,z,t) y z `XYofZ` x + f(z,t) y + g(z,t) z `XYofXY` f(x,y,t) g(x,y,t) z `General` f(x,y,z,t) g(x,y,z,t) h(x,y,z,t)

where (x,y,z) are the Cartesian (physical) coordinates and (x,y,z) are the transformed coordinates. Note that for quasi-3D problems, the z coordinate cannot be transformed.

#### 10.6.4 Functions

The function `COORDS` (and `VEL` for time dependent mappings) indicated in the `MAPPING` section need to be defined, for example as:

1        <FUNCTION NAME="Mapping">
2            <E VAR="x" VALUE="x + cos(PI*z)" />
3            <E VAR="y" VALUE="y + cos(2*PI*t)" />
4        </FUNCTION>
5
6        <FUNCTION NAME="MappingVel">
7            <E VAR="vx" VALUE="0.0" />
8            <E VAR="vy" VALUE="-1.0*2*PI*sin(2*PI*t)" />
9        </FUNCTION>

the transformation defined by these functions need to be valid (non-zero Jacobian). By default, any component of `COORDS` that is not specified is taken as a trivial transformation, e.g. x = x, and any velocity not specified is considered to be zero.

#### 10.6.5 Boundary conditions

In case of a time-dependent mapping, a moving body boundary condition is available:

1<BOUNDARYCONDITIONS>
2    <REGION REF="0">
3        <D VAR="u" USERDEFINEDTYPE="MovingBody" VALUE="0" />
4        <D VAR="v" USERDEFINEDTYPE="MovingBody" VALUE="0" />
5        <D VAR="w" VALUE="0" />
6        <N VAR="p" USERDEFINEDTYPE="H" VALUE="0" />
7     </REGION>
8</BOUNDARYCONDITIONS>

When using the `MovingBody` boundary condition, the Dirichlet condition is relative to the boundary, while the regular Dirichlet boundary condition is taken in an absolute sense.

All Dirichlet boundary conditions are specified in the Cartesian (physical) space, and are automatically transformed to the computational frame of reference.

Note: Examples of the use of mappings can be found in the test directory `NEKTAR/solvers/IncNavierStokesSolver/Tests`. See for example the files `KovaFlow_3DH1D_P8_16modes_Mapping-implicit.xml` and `CylFlow_Mov_mapping.xml`.