Running a Simulation

Control file (*.control) - Overview

The control file is the main file for running a simulation. A list of all the mandatory keywords for running a simulation and some basic optional keywords is presented in the table below. The specific keywords are listed in the other chapters.

Keyword Description Default value
solution file name CHARACTER: Path and name of the output file. The name of this file is used for naming other output files. Mandatory keyword
simulation type CHARACTER: Specifies if HORSES3D must perform a 'steady-state' or a 'time-accurate' simulation. 'steady-state'
time integration CHARACTER: Can be 'implicit', 'explicit', or 'FAS'. The latter uses the Full Algebraic Storage (FAS) multigrid scheme, which can have implicit or explicit smoothers. 'explicit'
polynomial order INTEGER: Polynomial order to be assigned uniformly to all the elements of the mesh. If the keyword polynomial order file is specified, the value of this keyword is overridden. --*
polynomial order i
polynomial order j
polynomial order k
INTEGER: Polynomial order in the i, j, or k component for all the elements in the domain. If used, the three directions must be declared explicitly, unless you are using a polynomial order file. If the keyword polynomial order file is specified, the value of this keyword is overridden. --*
polynomial order file CHARACTER: Path to a file containing the polynomial order of each element in the domain. --*
restart LOGICAL: If .TRUE., initial conditions of simulation will be read from restart file specified using the keyword restart file name. Mandatory keyword
cfl REAL: A constant related with the convective Courant-Friedrichs-Lewy (CFL) condition that the program will use to compute the time step size. --**
dcfl REAL: A constant related with the diffusive Courant-Friedrichs-Lewy (DCFL) condition that the program will use to compute the time step size. --**
dt REAL: Constant time step size. --**
final time REAL: This keyword is mandatory for time-accurate solvers. --
mesh file name CHARACTER: Name of the mesh file. The currently supported formats are .mesh (SpecMesh file format) and .h5 (HOPR hdf5 file format). Mandatory keyword
mesh inner curves LOGICAL: Specifies if the mesh reader must suppose that the inner surfaces (faces connecting the elements of the mesh) are curved. This input variable only affects the hdf5 mesh reader. .TRUE.
number of time steps INTEGER: Maximum number of time steps that the program will compute. Mandatory keyword
output interval INTEGER: In steady-state, this keyword indicates the interval of time steps to display the residuals on screen. In time-accurate simulations, this keyword indicates how often a 3D output file must be stored. Mandatory keyword
convergence tolerance REAL: Residual convergence tolerance for steady-state cases. Mandatory keyword
partitioning CHARACTER: Specifies the method for partitioning the mesh in MPI simulations. Options are: 'metis' (the code must have been linked to METIS at compilation time, or 'SFC' (to use a space-filling curve method, no special compilation is needed for this option). 'metis'
partitioning with weights LOGICAL: Specifies if the method for partitioning the mesh in MPI simulations takes the local polynomial order as weights. Necessary for local polynomial refinement. .TRUE.
manufactured solution CHARACTER: Must have the value '2D' or '3D'. When this keyword is used, the program will add source terms for the conservative variables taken into account an exact analytic solution for each primitive variable j (, , , , $p$) of the form: . Where are constants defined in the file ManufacturedSolutions.f90. Proper initial and boundary conditions must be imposed (see the test case). The mesh must be a unit cube. --

* One of these keywords must be specified.

* For Euler simulations, the user must specify either the CFL number or the time-step size. For Navier-Stokes simulations, the user must specify the CFL and DCFL numbers or* the time-step size.


Boundary conditions

The boundary conditions are specified as blocks in the control file. The block starts with the keywords #define' and ends with#end'. Inside the block, the options are specified as a pair of keywords and values, just like the normal body of the rest of the file.

Each boundary condition can be individually defined, or if multiple boundaries are set with the same definition, it could be done in the same block (with the name separated by a double underscore `$_$' sign). The name of each boundary must match with the one specified in the mesh file.

The block in general can be seen below.

#define boundary myBoundary1__myBoundary2__myBoundary3
    type        = typeValue
    parameter 1 = value_1
    parameter 2 = value_2
# end

The table below shows the values for the type keyword, and the possible values for the parameters depend on the boundary condition. | Keyword | Description | Default value | |---------|-------------|---------------| | type | CHARACTER: Type of boundary condition to be applied. Options are: Inflow, Outflow, NoSlipWall, FreeSlipWall, Periodic, User-defined. | N/A |

By default, NoSlipWall is adiabatic. Isothermal wall can be activated with the following block:

#define boundary myBoundary1__myBoundary2__myBoundary3
    type = NoSlipWall
    wall type (adiabatic/isothermal) = isothermal
    wall temperature = 2000.0d0  !Wall temperature in K
# end

It is also possible to set a moving wall with the keyword wall velocity = value.

For periodic boundary conditions, the second boundary that must be used as a complement must be specified by the keyword coupled boundary. These two boundaries must have the same node position in all directions but one. For mesh files generated by commercial software where this strict rule is not imposed, a comparison based on the minimum edge size of the face element can be used by a boolean parameter in the normal body of the control file (not in the block body), with the keyword periodic relative tolerance.


Restarting a Case

Keyword Description Default value
restart LOGICAL: If .TRUE., initial conditions of simulation will be read from restart file specified using the keyword restart file name. Mandatory keyword
restart file name CHARACTER: Name of the restart file to be written and, if keyword restart = .TRUE., also name of the restart file to be read for starting the simulation. Mandatory keyword
restart polorder INTEGER: Uniform polynomial order of the solution to restart from. This keyword is only needed when the restart solution is of a different order than the current case. same as case's
restart nodetype CHARACTER: Node type of the solution to restart from (Gauss or Gauss-Lobatto). This keyword is only needed when the restart node type is different than the current case. same as case's
restart polorder file CHARACTER: File containing the polynomial orders of the solution to restart from. This keyword is only needed when the restart solution is of a different order than the current case. same as case's
get discretization error of CHARACTER: Path to solution file. This can be used to estimate the discretization error of a solution when restarting from a higher-order solution. --
NS load from NSSA LOGICAL: Used only for NS simulations that are restarted from RANS SA. .FALSE.