We must first create an appropriate base flow. Since, in hydrodynamic stability theory, it is assumed that
the base flow is incompressible, this can be computed using the incompressible Navier-Stokes
solver ($NEK/IncNavierStokesSolver
).
$NEK/IncNavierStokesSolver
) executable encapsulates the nonlinear equations as well as the stability
tools. Therefore, when you setup either a nonlinear incompressible problem or an incompressible stability
problem you should use the same executable - i.e.:$NEK/IncNavierStokesSolver
file.xml
.In the folder $NEKTUTORIAL/Channel/Base
you will find the file Channel-Base.xml
which contains the
geometry along with the necessary parameters to solve the problem. The GEOMETRY
section defines the mesh
of the problem and it is generated automatically as you have seen in the previous task. The expansion type
and order is specified in the EXPANSIONS
section. An expansion basis is applied to a geometry composite,
where by composite we mean a collection of mesh entities (specifically here, a collection of
mesh elements), specified in the GEOMETRY
section. A default entry is always included by the
$NEK/MeshConvert
utility. In this case the composite C[0]
refers to the set of all elements.
The FIELDS
attribute specifies the fields for which this expansion should be used. The TYPE
attribute specifies the kind of the polynomial basis functions to be used in the expansion. For
example,
Note that all the results obtained in this tutorial refers to the expansion parameters just defined (i.e.
NUMMODES="11" FIELDS="u,v,p" TYPE="GLL_LAGRANGE"
).
In order to complete the problem definition and generate the base flow we need to specify a section called
CONDITIONS
in the session file. If we examine Channel-Base.xml
, we can see how to define the conditions of
the particular problem to solve.
In particular, the CONDITIONS
section contains the following entries:
SOLVERINFO
) such as the equation, the projection type (Continuous
or
Discontinuous
Galerkin), the evolution operator (Nonlinear
for non-linear Navier-Stokes,
Direct
1 ,
Adjoint
or TransientGrowth
for linearised forms) and the analysis driver to use (Standard
, Arpack
or ModifiedArnoldi
), along with other properties. The solver properties are specified as quoted
attributes and have the form
SOLVERINFO
section of Channel-Base.xml
:
Note: The bits to be completed are identified by …in this file.
EQTYPE
to UnsteadyNavierStokes
to select the unsteady incompressible
Navier-Stokes equations,
EvolutionOperator
to Nonlinear
in order to select the non-linear
Navier-Stokes,
Projection
property to Continuous
in order to select the continuous Galerkin
approach,
Driver
to Standard
in order to perform standard time-integration.PARAMETERS
) are specified as name-value pairs:
Parameters may be used within other expressions, such as function definitions, boundary conditions or the definition of other subsequently defined parameters.
Re
, that represents the Reynolds number, and Kinvis
, which
represents the kinematic viscosity. Now set the Reynolds number to 7500 and the kinematic
viscosity to 1∕Re - i.e.<P> Re = 7500 </P>
<P> Kinvis = 1/Re </P>
VALUE
entry which can be an
expression. VARIABLES
).
BOUNDARYREGIONS
) in terms of composites defined in the
GEOMETRY
section and the conditions applied on those boundaries (BOUNDARYCONDITIONS
). Boundary
regions have the form
The boundary conditions enforced on a region take the following format and must define the
condition for each variable specified in the VARIABLES
section to ensure the problem is well-posed.
The REF
attribute for a boundary condition region should correspond to the ID="[INDEX]"
of the
desired boundary region specified in the BOUNDARYREGIONS
section.
FUNCTION
), in terms of x, y, z and t,
such as initial conditions, forcing functions, and exact solutions. The VARIABLES
represent the
components of the specific function in a specified direction and they must be the same for every
function.
Alternatively, one can specify the function using an external Nektar++ field file. For example, this
will be used to specify the InitialConditions
or ExactConditions
.
BodyForce
): fx = 2ν =
2*
Kinvis
. Note that for using the body force you need the following additional tag outside the section CONDITIONS
:
It is possible to specify an arbitrary initial condition. In this case, it was decided to start from the exact solution of the problem in order to have a steady state in just few iterations. If the initial condition is not specified, it will be set to zero by default.
This completes the specification of the problem.
Channel-Base.xml
session file by typing:
$NEK/IncNavierStokesSolver Channel-Base.xml
At the end of the simulation, the fields will be written to a binary file Channel-Base.fld
and the L2 error
(using the given exact solution) and the L∞ error will be printed on the terminal for each of the
variables.
In particular, the terminal screen should look like this:
The final step regarding the base flow is to visualise the flow fields. Specifically, we need to convert convert
the .fld
file into a format readable by a visualisation post-processing tool. In this tutorial we decided to
convert the .fld
file into a VTK format and to use the open-source visualisation package called
Paraview .
$NEK/FieldConvert Channel-Base.xml Channel-Base.fld Channel-Base.vtu
Now open Paraview and use File ->Open, to select the VTK file, click the ’Apply’ button to
render the geometry, and select each field in turn from the left-most drop-down menu on the
toolbar to visualise the output.
Note: You can also open this type of file in VisIt. In figure 2 we show how the base flow just computed should look like.
$NEK/FieldConvert Channel-Base.xml Channel-Base.fld Channel-Base.dat