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.
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.
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.
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 | |||
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 (
, , ) 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.
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, and any velocity not specified is considered to be zero.
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.
NEKTAR/solvers/IncNavierStokesSolver/Tests
. See for example the files
KovaFlow_3DH1D_P8_16modes_Mapping-implicit.xml
and CylFlow_Mov_mapping.xml
.