(sec:parameter_file)=
# Parameter File
A ``parameter.ini`` file is needed to control the code. An overview of all options in the parameter file can be generated by following command in the terminal:
```bash
flexi --help
```
Generally following types are used:
```ini
INTEGER = 1
REAL = 1.23456
LOGICAL = T ! True
LOGICAL = F ! False
STRING = FLEXI
VECTOR = (/1.0,2.0,3.0/)
```
The concept of the parameter file is described as followed:
* each single line is saved and examined for specific variable names
* the examination is case-insensitive
* comments can be set with symbol "!" in front of the text
```ini
! commented text
```
* the order of defined variables is with one exception generally indifferent, but it is preferable to group similar variables
* the order is only necessary for combined parameters for a setting, e.g., when changing boundary conditions or using multiple sponge zones. For example, if you want to change a specific boundary by addressing its name, the associated boundary type must be defined in the correct order:
```ini
BoundaryName=inflow ! BC_Name defined in mesh file
BoundaryType=(/2,0,0,0/)
BoundaryName=outflow ! BC_Name defined in mesh file
BoundaryType=(/2,0,0,0/)
```
The following tables describe the main configuration options which can used in the parameter file:
```{list-table}
:header-rows: 1
:name: parameter_mpi
:width: 100%
:widths: 20 15 65
* - MPI
- Default
- Description
* - GroupSize
- 0
- Define size of MPI subgroups, used to e.g. perform grouped IO, where group master collects and outputs data.
```
```{list-table}
:header-rows: 1
:name: parameter_io_hdf5
:width: 100%
:widths: 20 15 65
* - IO_HDF5
- Default
- Description
* - gatheredWrite
- F
- Set true to activate gathered HDF5 IO for parallel computations.
Only local group masters will write data after gathering from local slaves.
```
```{list-table}
:header-rows: 1
:name: parameter_interpolation
:width: 100%
:widths: 20 15 65
* - Interpolation
- Default
- Description
* - N
-
- Polynomial degree of computation to represent to solution
```
```{list-table}
:header-rows: 1
:name: parameter_restart
:width: 100%
:widths: 20 15 65
* - Restart
- Default
- Description
* - ResetTime
- F
- Override solution time to t=0 on restart.
* - FlushInitialState
- F
- Check whether (during restart) the statefile from which the restart is performed should be deleted.
```
```{list-table}
:header-rows: 1
:name: parameter_output
:width: 100%
:widths: 20 15 65
* - Output
- Default
- Description
* - NVisu
-
- Polynomial degree at which solution is sampled for visualization.
* - NOut
- -1
- Polynomial degree at which solution is written. -1: NOut=N, >0: NOut
* - ProjectName
-
- Name of the current simulation (mandatory).
* - Logging
- F
- Write log files containing debug output.
* - ErrorFiles
- T
- Write error files containing error output.
* - OutputFormat
- None
- File format for visualization: None, ParaView.
* - ASCIIOutputFormat
- CSV
- File format for ASCII files, e.g. body forces: CSV
* - doPrintStatusLine
- F
- Print: percentage of time, ...
* - WriteStateFiles
- T
- Write HDF5 state files. Disable this only for debugging issues. NO SOLUTION WILL BE WRITTEN!
* - WriteTimeAvgFiles
- T
- Write HDF5 time average files. Disable this only for debugging. NO TIME AVERAGE FILES WILL BE WRITTEN!
```
```{attention}
OpenMPI v5.x changed the output buffering behaviour. To see the status line on newer versions of OpenMPI, pass `--output :raw` to `mpirun`.
```
```{list-table}
:header-rows: 1
:name: parameter_mesh
:width: 100%
:widths: 20 15 65
* - Mesh
- Default
- Description
* - MeshFile
-
- (relative) path to meshfile (mandatory).
* - useCurveds
- T
- Controls usage of high-order information in mesh. Turn off to discard high-order data and treat curved meshes as linear meshes.
* - interpolateFromTree
- T
- For non-conforming meshes, built by refinement from a tree structure, the metrics can be built from the tree geometry if it is contained in the mesh.
Can improve free-stream preservation.
* - meshScale
- 1.0
- Scale the mesh by this factor (shrink/enlarge).
* - meshdeform
- F
- Apply simple sine-shaped deformation on Cartesian mesh (for testing).
* - crossProductMetrics
- F
- Compute mesh metrics using cross product form. Caution: in this case free-stream preservation is only guaranteed for N=3*NGeo.
* - debugmesh
- 0
- Output file with visualization and debug information for the mesh. 0: no, visualization, 3: Paraview binary
* - BoundaryName
-
- Names of boundary conditions to be set (must be present in the mesh!).For each BoundaryName a BoundaryType needs to be specified.
* - BoundaryType
-
- Type of boundary conditions to be set. Format: (BC_TYPE,BC_STATE)
* - writePartitionInfo
- F
- Write information about MPI partitions into a file.
* - NGeoOverride
- -1
- Override switch for NGeo. Interpolate mesh to different NGeo.<1: off, >0: Interpolate
```
```{list-table}
:header-rows: 1
:name: parameter_eos
:width: 100%
:widths: 20 15 65
* - Equation of State
- Default
- Description
* - UseNonDimensionalEqn
- F
- Set true to compute R and mu from bulk Mach Reynolds (nondimensional form).
* - BulkMach
-
- Bulk Mach (UseNonDimensionEqn=T)
* - BulkReynolds
-
- Bulk Reynolds (UseNonDimensionEqn=T)
* - kappa
- 1.4
- Heat capacity ratio / isentropic exponent
* - R
- 287.058
- Specific gas constant
* - Pr
- 0.72
- Prandtl number
* - mu0
- 0.0
- Dynamic Viscosity
* - Ts
- 110.4
- Sutherland's law for variable viscosity: Ts
* - Tref
- 273.15
- Sutherland's law for variable viscosity: Tref
* - ExpoSuth
- 1.5
- Sutherland's law for variable viscosity: Exponent
```
```{list-table}
:header-rows: 1
:name: parameter_equation
:width: 100%
:widths: 20 15 65
* - Equation
- Default
- Description
* - IniRefState
-
- Refstate required for initialization.
* - RefState
-
- State(s) in primitive variables (density, velx, vely, velz, pressure).
* - BCStateFile
-
- File containing the reference solution on the boundary to be used as BC.
```
```{list-table}
:header-rows: 1
:name: parameter_riemann
:width: 100%
:widths: 20 15 65
* - Riemann
- Default
- Description
* - Riemann
- RoeEntropyFix
- Riemann solver to be used: LF, HLLC, Roe, RoeEntropyFix, HLL, HLLE, HLLEM
* - RiemannBC
- Same
- Riemann solver used for boundary conditions: Same, LF, Roe, RoeEntropyFix, HLL, HLLE, HLLEM
```
```{list-table}
:header-rows: 1
:name: parameter_exactfunc
:width: 100%
:widths: 20 15 65
* - Exactfunc
- Default
- Description
* - IniExactFunc
-
- Exact function to be used for computing initial solution.
* - AdvVel
-
- Advection velocity (v1,v2,v3) required for exactfunction CASE(2,21,4,8)
* - IniAmplitude
-
- Amplitude for synthetic test case
* - IniFrequency
-
- Frequency for synthetic test case
* - MachShock
- 1.5
- Parameter required for CASE(10)
* - PreShockDens
- 1.0
- Parameter required for CASE(10)
* - IniCenter
-
- Shu Vortex CASE(7) (x,y,z)
* - IniAxis
-
- Shu Vortex CASE(7) (x,y,z)
* - IniHalfwidth
- 0.2
- Shu Vortex CASE(7)
* - JetRadius
- 1.0
- Roundjet CASE(5,51,33)
* - JetEnd
- 10.0
- Roundjet CASE(5,51,33)
* - JetAmplitude
- 1.0
- Roundjet CASE(5,51,33)
* - Ramping
- 1.0
- Subsonic mass inflow CASE(28)
* - P_Parameter
- 0.0
- Couette-Poiseuille flow CASE(8)
* - U_Parameter
- 0.01
- Couette-Poiseuille flow CASE(8)
* - AmplitudeFactor
- 0.1
- Harmonic Gauss Pulse CASE(14)
* - HarmonicFrequency
- 400.0
- Harmonic Gauss Pulse CASE(14)
* - SigmaSqr
- 0.1
- Harmonic Gauss Pulse CASE(14)
* - delta99_in
-
- Blasius boundary layer CASE(1338)
* - x_in
-
- Blasius boundary layer CASE(1338)
```
```{list-table}
:header-rows: 1
:name: parameter_filter
:width: 100%
:widths: 20 15 65
* - Filter
- Default
- Description
* - FilterType
- None
- Type of filter to be applied. None, CutOff, Modal, LAF
* - NFilter
-
- Cut-off mode (FilterType==CutOff or LAF)
* - LAF_alpha
- 1.0
- Relaxation factor for LAF, see Flad et al. JCP 2016
* - HestFilterParam
-
- Parameters for Hesthaven filter (FilterType==Modal)
```
```{list-table}
:header-rows: 1
:name: parameter_overintegration
:width: 100%
:widths: 20 15 65
* - Overintegration
- Default
- Description
* - OverintegrationType
- none
- Type of overintegration. None, CutOff, ConsCutOff
* - NUnder
-
- Polynomial degree to which solution is filtered (OverintegrationType == 1 or 2
```
```{list-table}
:header-rows: 1
:name: parameter_lifting
:width: 100%
:widths: 20 15 65
* - Lifting
- Default
- Description
* - doWeakLifting
- F
- Set true to perform lifting in weak form.
* - doConservativeLifting
- F
- Set true to compute the volume contribution to the gradients in conservative form, i.e. deriving the solution multiplied by the metric terms
instead of deriving the solution and multiplying by the metrics.
```
```{list-table}
:header-rows: 1
:name: parameter_baseflow
:width: 100%
:widths: 20 15 65
* - BaseFlow
- Default
- Description
* - doBaseFlow
- F
- Switch on to calculate a baseflow.
* - BaseFlowFile
- none
- FLEXI file (e.g. baseflow, TimeAvg) from which baseflow is read.
* - BaseFlowRefState
-
- Specify which refstate should be used in no baseflowfile is given.
* - SelectiveFilter
- (/ -999, -999, -999 /)
- Filter Mean to another polynomial degree.
* - TimeFilterWidthBaseFlow
- 1.0
- Temporal filter width of exponential, explicit time filter.
```
```{list-table}
:header-rows: 1
:name: parameter_sponge
:width: 100%
:widths: 20 15 65
* - Sponge
- Default
- Description
* - SpongeLayer
- F
- Turn on to use sponge regions for reducing reflections at boundaries.
* - damping
-
- Damping factor of sponge. U_t=U_t-damping*(U-U_base) in fully damped regions.
* - SpongeShape
-
- Set shape of sponge: (1) ramp : Cartesian / vector-aligned, (2) cylindrical
* - nSpongeVertices
-
- Define number of vertices per Polygon sponge Zone defining the Polygon
* - SpongeVertex
-
- Sponge Vertex that defines polygon
* - SpongeDistance
-
- Length of sponge ramp. The sponge will have maximum strength at the end of the ramp and after that point.
* - SpongeXStart
-
- Coordinates of start position of sponge ramp (SpongeShape=ramp) or center (SpongeShape=cylindrical).
* - SpongeXEnd
-
- Coordinates of second point to define Cartesian aligned cube.
* - SpongeDir
-
- Direction vector of the sponge ramp (SpongeShape=ramp)
* - SpongeRadius
-
- Radius of the sponge zone (SpongeShape=cylindrical)
* - SpongeAxis
-
- Axis vector of cylindrical sponge (SpongeShape=cylindrical)
* - SpongeViz
- F
- Turn on to write a visualization file of sponge region and strength.
* - WriteSponge
- F
- Turn on to write the sponge region and strength to the first state file.
* - SpongeBaseFlow
- 1
- Type of baseflow to be used for sponge. (1) constant: fixed state,(2), exactfunction: exact function, (3) file: read baseflow file, (4) pruett:
temporally varying, solution adaptive Pruett baseflow
* - SpongeRefState
-
- Index of refstate in ini-file (SpongeBaseFlow=constant)
* - SpongeExactFunc
-
- Index of exactfunction (SpongeBaseFlow=exactfunction)
* - SpongeRefFile
-
- FLEXI solution (e.g. TimeAvg) file from which sponge is read.
* - tempFilterWidthSponge
-
- Temporal filter width used to advance Pruett baseflow in time.
```
```{list-table}
:header-rows: 1
:name: parameter_timedisc
:width: 100%
:widths: 20 15 65
* - TimeDisc
- Default
- Description
* - TimeDiscMethod
- CarpenterRK4-5
- Specifies the type of time-discretization to be used, e.g. the name of a specific Runge-Kutta scheme. Possible values:
standardrk3-3, carpenterrk4-5, niegemannrk4-14, toulorgerk4-8c, toulorgerk3-7c, toulorgerk4-8f,
ketchesonrk4-20, ketchesonrk4-18, eulerimplicit, cranknicolson2-2, esdirk2-3, esdirk3-4, esdirk4-6
* - TEnd
-
- End time of the simulation (mandatory).
* - TStart
- 0.0
- Start time of the simulation (optional, conflicts with restart).
* - CFLScale
-
- Scaling factor for the theoretical CFL number, typical range 0.1..1.0 (mandatory)
* - DFLScale
-
- Scaling factor for the theoretical DFL number, typical range 0.1..1.0 (mandatory)
* - dtmin
- -1.0
- Minimal allowed timestep (optional)
* - dtkill
- -1.0
- Kill FLEXI if dt gets below this value (optional)
* - maxIter
- -1
- Stop simulation when specified number of timesteps has been performed.
* - NCalcTimeStepMax
- 1
- Compute dt at least after every Nth timestep.
```
```{list-table}
:header-rows: 1
:name: parameter_implicit
:width: 100%
:widths: 20 15 65
* - Implicit
- Default
- Description
* - adaptepsNewton
- F
- Adaptive Newton eps by Runge-Kutta error estimation
* - EpsNewton
- 1.0E-03
- Newton tolerance, only used if adaptepsNewton=F
* - nNewtonIter
- 50
- Maximum amount of Newton iterations
* - EisenstatWalker
- F
- Adaptive abort criterion for GMRES
* - gammaEW
- 0.9
- Parameter for Eisenstat Walker adaptation
* - EpsGMRES
- 1.0E-03
- GMRES Tolerance, only used of EisenstatWalker=F
* - nRestarts
- 10
- Maximum number of GMRES Restarts
* - nKDim
- 30
- Maximum number of Krylov subspaces for GMRES, after that a restart is performed
* - Eps_Method
- 2
- Method of determining the step size of FD approximation of A*v in GMRES, 1: sqrt(machineAccuracy)*scaleps, 2: take norm of solution into account
* - scaleps
- 1.0
- Scaling factor for step size in FD, mainly used in Eps_Method=1
* - FD_Order
- 1
- Order of FD approximation (1/2)
* - PredictorType
- 0
- Type of predictor to be used, 0: use current U, 1: use right hand side, 2: polynomial extrapolation, 3: dense output formula of RK scheme
* - PredictorOrder
- 1
- Order of predictor to be used (PredictorType=2)
```
```{list-table}
:header-rows: 1
:name: parameter_analyze
:width: 100%
:widths: 20 15 65
* - Analyze
- Default
- Description
* - CalcErrorNorms
- T
- Set true to compute L2 and LInf error norms at analyze step.
* - AnalyzeToFile
- F
- Set true to output result of error norms to a file (CalcErrorNorms=T)
* - analyze_dt
- 0.0
- Specifies time interval at which analysis routines are called.
* - nWriteData
- 1
- Interval as multiple of analyze_dt at which HDF5 files (e.g. State,TimeAvg,Fluc) are written.
* - NAnalyze
-
- Polynomial degree at which analysis is performed (e.g. for L2 errors). Default: 2*N.
* - AnalyzeExactFunc
-
- Define exact function used for analyze (e.g. for computing L2 errors). Default: Same as IniExactFunc
* - AnalyzeRefState
-
- Define state used for analyze (e.g. for computing L2 errors). Default: Same as IniRefState
* - doMeasureFlops
- T
- Set true to measure flop count, if compiled with PAPI.
* - PIDkill
- -1.0
- Kill FLEXI if PID gets above this value (optional)
* - NCalcPID
- 1
- Compute PID after every Nth timestep.
```
```{list-table}
:header-rows: 1
:name: parameter_analyzeeqn
:width: 100%
:widths: 20 15 65
* - AnalyzeEquation
- Default
- Description
* - CalcBodyForces
- F
- Set true to compute body forces at walls
* - CalcBulkState
- F
- Set true to compute the flows bulk quantities
* - CalcMeanFlux
- F
- Set true to compute mean flux through boundaries
* - CalcWallVelocity
- F
- Set true to compute velocities at wall boundaries
* - CalcTotalStates
- F
- Set true to compute total states (e.g. Tt,pt)
* - CalcTimeAverage
- F
- Set true to compute time averages
* - WriteBodyForces
- T
- Set true to write bodyforces to file
* - WriteBulkState
- T
- Set true to write bulk state to file
* - WriteMeanFlux
- T
- Set true to write mean flux to file
* - WriteWallVelocity
- T
- Set true to write wall velolcities file
* - WriteTotalStates
- T
- Set true to write total states to file
* - VarNameAvg
-
- Names of variables to be time-averaged
* - VarNameFluc
-
- Names of variables for which Flucs (time-averaged square of the variable) should be computed. Required for computing actual fluctuations.
```
```{list-table}
:header-rows: 1
:name: analyze_recordpoints
:width: 100%
:widths: 20 15 65
* - RecordPoints
- Default
- Description
* - RP_inUse
- F
- Set true to compute solution history at points defined in recordpoints file.
* - RP_DefFile
-
- File containing element-local parametric recordpoint coordinates and structure.
* - RP_MaxMemory
- 100
- Maximum memory in MiB to be used for storing recordpoint state history. If memory is exceeded before regular IO level states are written to file.
* - RP_SamplingOffset
- 1
- Multiple of timestep at which recordpoints are evaluated.
```