# 4. Solver Configuration#

The Flow360.json file defines the solver settings used during the CFD solution. Most input quantities in the case configuration file (Flow360.json) are dimensionless. The conventions of nondimensional inputs in Flow360 are explained in detail at the nondimensional inputs knowledge base and the non-dimensionalization in Flow360 tutorial.

## 4.1. geometry#

OPTIONAL

The geometry section defines the geometric reference values. These parameters are used in the calculation of nondimensional loads reported (e.g., $$CL$$, $$CMy$$, etc.). Please refer to nondimensional inputs knowledge base and the non-dimensionalization in Flow360 tutorial for further information on how to define these.

Options

Default

Freestream

refArea

1.0

[float] The reference area of the geometry

momentCenter

[0.0, 0.0, 0.0]

[3-array(float)] The x, y, z moment center of the geometry in grid units

momentLength

[1.0, 1.0, 1.0]

[3-array(float)] The x, y, z component-wise moment reference lengths

Example

1"geometry" : {
2   "refArea" : 45.604,
3   "momentCenter" : [0.0, 0.0, 0.0],
4   "momentLength" : [3.81, 3.81, 3.81]
5}


## 4.2. freestream#

REQUIRED

The freestream section defines the flow conditions at the freestream. Please refer to nondimensional inputs knowledge base and the non-dimensionalization in Flow360 tutorial for further information on how to define these.

Options

Default

Description

Reynolds

Either Reynolds or muRef is REQUIRED

[float] The Reynolds number, = $$\frac{\rho_\infty U_{ref} L_{gridUnit}}{\mu_\infty}$$. Note that Flow360 differs from traditional calculations with the use of $$L_{gridUnit}$$.

muRef

Either muRef or Reynolds is REQUIRED

[float] The freestream dynamic viscosity (nondimensional), = $$\frac{\mu_\infty}{\rho_\infty C_\infty L_{gridUnit}}$$.

Mach

REQUIRED

[float] The Mach number, the ratio of freestream velocity to the speed of sound

MachRef

Mach, REQUIRED if Mach == 0.0

[float] The reference Mach number to compute nondimensional quantities, = $$U_{ref}/C_\infty$$.

Temperature

REQUIRED

[float] The freestream temperature in Kelvin. -1 means globally constant viscosity.

alphaAngle

REQUIRED

[float] The angle of attack in degrees.

betaAngle

REQUIRED

[float] The side slip angle in degrees.

turbulentViscosityRatio

DEPENDS

[float] The ratio between the freestream turbulent viscosity and freestream laminar viscosity, used at freestream boundary and to set initial condition. The default depends on the turbulence model and if the transition model is enabled. For "SpalartAllmaras" = 0.210438, "kOmegaSST" = 0.01, and "AmplificationFactorTransport" = $$2.794\times10^{-7}$$.

Example

1"freestream" :
2{
3   "muRef" : 4.29279e-08,
4   "Mach" : 1.46972e-02,
5   "MachRef" : 0.70,
6   "Temperature" : 288.15,
7   "alphaAngle" : -90.0,
8   "betaAngle" : 0.0
9}


## 4.3. boundaries#

REQUIRED

The boundaries section defines the boundary conditions. Each boundary condition is specified by associating the boundary type for each boundary name in the mesh file, as follows:

1"boundary_name" :
2{
3	"type" : "boundary_type"
4}


The “boundary_name” is the name of each individual patch of the grid and is typically of the form “1” for .ugrid files and “vol-1/wall” for .cgns files. Additionally, for .ugrid meshes an optional parameter “name” can be specified within each boundary dictionary to overwrite the numeric “boundary_name” in results. The “name” option takes a string entry.

Numerous boundary conditions require the specification of additional options, which are outlined in the table below. For a number of boundaries such as NoSlipWall, IsothermalWall and Freestream, mathematical expressions can be used to define the inputs. Please refer to the boundary conditions knowledge base for more information.

Type

Description

SlipWall

None

[string] Slip wall condition. Also used for symmetry boundary.

NoSlipWall

[string] Sets no-slip wall condition

Velocity, default: [0.0, 0.0, 0.0]

[3-array(float or expression)] Optionally, a tangential velocity can be prescribed on the wall.

IsothermalWall

[string] Isothermal wall boundary condition

Temperature (REQUIRED)

[float or expression] Wall temperature specified in Kelvin

Velocity, default: [0.0, 0.0, 0.0]

[3-array(float or expression)] Optionally, a tangential velocity can be prescribed on the wall.

Freestream

[string] Freestream condition, set by parameters in freestream. The default values are set based on the alpha and beta angles.

Velocity, default: freestream

[3-array(float or expression)] The default values are set according to the freestream alpha and beta angles. Optionally, an expression for each of the velocity components can be specified.

SubsonicOutflowPressure

[string] Subsonic outflow, set through static pressure ratio

staticPressureRatio (REQUIRED)

[float] Static pressure ratio, $$\frac{p_{outflow}}{p_{\infty}}$$

SubsonicOutflowMach

[string] Subsonic outflow, set through Mach number

MachNumber (REQUIRED)

[float] Mach number, $$\frac{U_{outflow}}{C_{\infty}}$$

SubsonicInflow

[string] Subsonic inflow set through total pressure ratio and total temperature ratio for nozzle or tunnel plenum

totalPressureRatio (REQUIRED)

[float] Total pressure ratio, $$\frac{p_{t, inflow}}{p_{s, inflow}}$$

totalTemperatureRatio (REQUIRED)

[float] Total temperature ratio, $$\frac{T_{t, inflow}}{T_{s, inflow}}$$

rampSteps

[integer] Number of ramp steps during solution initialization

velocityDirection

[3-array(float or expression)] Direction of the incoming flow. Must be a unit vector pointing into the volume. If unspecified, the direction will be normal to the surface.

MassOutflow

[string] Mass outflow

massFlowRate (REQUIRED)

[float] Mass flow rate at outlet (non-dimensional), $$=\frac{\dot{m}_{outflow}}{{\rho C_{\infty}} L_{gridUnit}^2}$$

MassInflow

[string] Mass inflow

massFlowRate (REQUIRED)

[float] Mass flow rate at inlet (non-dimensional), $$=\frac{\dot{m}_{inflow}}{{\rho C_{\infty}} L_{gridUnit}^2}$$

SlidingInterface

None

[string] Sliding interface boundaries. Details of each pair (inner/outer patches) must be prescribed separately: slidingInterfaces.

WallFunction

None

[string] This boundary type uses wall functions to estimate the velocity field close to the solid boundaries

TranslationallyPeriodic

Translational periodic boundary condition

pairedPatchName

[string] Patch name of the matching pair of a TranslationallyPeriodic patch. Needs to be specified for at least one side of each of the periodic boundary pairs.

translationVector

[3-array (float)] Vector that maps the patch to its periodic pair. Required when pairedPatchName is specified

ConjugateHeatTransferFluidInterface

Fluid side of a conjugate heat transfer interface pair

pairedPatchName

[string] Patch name of the matching pair of a ConjugateHeatTransferSolidInterface patch. Needs to be specified for at least one side of each of the conjugate heat transfer interface pairs.

ConjugateHeatTransferSolidInterface

Solid side of a conjugate heat transfer interface pair

pairedPatchName

[string] Patch name of the matching pair of a ConjugateHeatTransferFluidInterface patch. Needs to be specified for at least one side of each of the conjugate heat transfer interface pairs.

SolidIsothermalWall

[string] Isothermal wall boundary condition for a solid zone

Temperature (REQUIRED)

[float or expression], Wall temperature for a solid zone specified in Kelvin

SolidAdiabaticWall

None

[string] Adiabatic wall boundary condition for a solid zone

Example

 1"boundaries": {
2	"boundary_name_A": {
3		"type": "SlipWall"
4	},
5	"boundary_name_B":{
6    		"type":"NoSlipWall",
7    		"Velocity":["0.0","0.1*x+exp(y)+z^2","cos(0.2*x*pi)+sqrt(z^2+1)"]
8	},
9	"boundary_name_C": {
10		"type": "IsothermalWall",
11		"Temperature": 300
12	},
13	"boundary_name_D": {
14        	"type": "Freestream"
15	},
16	"boundary_name_E": {
17		"type": "SubsonicOutflowPressure",
18		"staticPressureRatio": 1.0
19	},
20	"boundary_name_F": {
21        	"type": "SubsonicOutflowMach",
22        	"MachNumber": 0.2
23	},
24	"boundary_name_G": {
25		"type": "SubsonicInflow",
26        	"totalPressureRatio":  1.0,
27		"totalTemperatureRatio": 1.0
28	},
29	"boundary_name_H": {
30        	"type": "MassOutflow",
31        	"massFlowRate":  0.2
32	},
33	"boundary_name_I": {
34        	"type": "MassInflow",
35        	"massFlowRate":  0.2
36	},
37	"boundary_name_J": {
38        	"type": "SlidingInterface"
39	},
40	"boundary_name_K": {
41        	"type": "WallFunction"
42	},
43	"boundary_name_L": {
44            "type": "TranslationallyPeriodic",
45            "pairedPatchName": "boundary_name_M",
46            "translationVector": [1, 0, 0]
47	},
48	"boundary_name_M": {
49            "type": "TranslationallyPeriodic"
50	},
51	"boundary_name_N": {
52            "type": "ConjugateHeatTransferFluidInterface",
53            "pairedPatchName": "boundary_name_O"
54	},
55	"boundary_name_O": {
56            "type": "ConjugateHeatTransferSolidInterface"
57	},
58	"boundary_name_P": {
59            "type": "SolidIsothermalWall",
60		"Temperature": 350
61	},
62	"boundary_name_Q": {
64	}
65}


## 4.4. volumeZones#

OPTIONAL

This section defines the properties of volume zones. All volume zones are assumed to be fluid unless specified otherwise. Each volume zone is specified with a structure as follows:

1"volume_zone_name" :
2{
3    "zoneType" : "zone_type"
4}


The “volume_zone_name” needs to be consistent with the definitions in the mesh file. The options thermalConductivity and volumetricHeatSource are only valid for solid zones.

Options

default

Description

modelType

REQUIRED

[string] HeatEquation for a solid zone or NavierStokes for a fluid zone

thermalConductivity

REQUIRED for a solid zone

[float] Thermal conductivity of a solid zone

volumetricHeatSource

0

[float or expression] Volumetric heat source for a solid zone

Example

1"volumeZones": {
2    "SOLID": {
3    "modelType": "HeatEquation",
4    "thermalConductivity": 0.003,
5    "volumetricHeatSource": "0.01*sin(pi*x)*sin(pi*y)"
6    }
7}


## 4.6. turbulenceModelSolver#

OPTIONAL

This section of the configuration file defines the numerical parameters for the turbulence model solver. For more information on setting up these parameters refer to the turbulence model solver knowledge base.

Options

Default

Description

modelType

"SpalartAllmaras"

[string] "SpalartAllmaras", "kOmegaSST", or "None"

absoluteTolerance

1.00E-08

[float] Tolerance for the turbulence model residual, below which the solver progresses to the next physical step (unsteady) or completes the simulation (steady)

relativeTolerance

0.0

[float] Tolerance to the relative residual, below which the solver goes to the next physical step.

linearSolverConfig

Configuration for the linear solver. maxIterations controls the number of linear iteration. Default is 20.

updateJacobianFrequency

4

[int] Frequency at which the jacobian is updated

equationEvalFrequency

4

[int] Frequency at which to update the turbulence equation

reconstructionGradientLimiter

1.0

[float] The strength of gradient limiter used in reconstruction of solution variables at the faces (specified in the range [0.0, 2.0]). 0.0 corresponds to setting the gradient equal to zero, and 2.0 means no limiting.

rotationCorrection

FALSE

[boolean] Rotation correction for the turbulence model. Only supported for SpalartAllmaras

quadraticConstitutiveRelation

FALSE

[boolean] Quadratic constitutive relation for turbulence shear stress tensor instead of Boussinesq Approximation

orderOfAccuracy

2

[int] Order of accuracy in space

maxForceJacUpdatePhysicalSteps

0

[int] For physical steps less than the input value, the jacobian matrix is updated every pseudo-step overriding the updateJacobianFrequency value

DDES

FALSE

[boolean] "TRUE" enables Delayed Detached Eddy Simulation. Supported for all turbulence and transition models

gridSizeForLES

"maxEdgeLength"

[string] Specifies the length used for the computation of LES length scale. The allowed inputs are "maxEdgeLength" and "meanEdgeLength".

modelConstants

{}

[dict] A dictionary containing the DDES coefficients in the solver: SpalartAllmaras: "C_DES" (= 0.72), "C_d" (= 8.0), kOmegaSST: "C_DES1" (= 0.78), "C_DES2" (= 0.61), "C_d1" (= 20.0), "C_d2" (= 3.0), (values shown in the parentheses are the default values used in Flow360)

Example

 1"turbulenceModelSolver" : {
2	"modelType" : "SpalartAllmaras",
3	"absoluteTolerance" : 1e-8,
4	"relativeTolerance" : 1e-2,
5	"linearSolverConfig": {
6		"maxIterations": 25
7	},
8	"DDES" : true,
9	"orderOfAccuracy" : 2,
10	"updateJacobianFrequency" : 4,
11	"equationEvalFrequency" : 1,
12	"rotationCorrection" : true,
13	"modelConstants" : {
14		"C_DES": 0.85,
15		"C_d": 8.0
16	}
17}


## 4.7. transitionModelSolver#

OPTIONAL

This section of the configuration file defines the numerical parameters for the transition model solver. For more information on setting up these parameters refer to the transition model solver knowledge base.

Options

Default

Description

modelType

"None"

[string] "None" (disabled) or "AmplificationFactorTransport" (enabled)

absoluteTolerance

1.00E-07

[float] Tolerance for the transition model residual, below which the solver progresses to the next physical step (unsteady) or completes the simulation (steady)

relativeTolerance

0.0

[float] Tolerance to the relative residual, below which the solver goes to the next physical step.

linearSolverConfig

Configuration for the linear solver. maxIterations controls the number of linear iteration. Default is 20.

updateJacobianFrequency

4

[int] Frequency at which the jacobian is updated

equationEvalFrequency

4

[int] Frequency at which to update the transition equation

orderOfAccuracy

2

[int] Order of accuracy in space

Ncrit

8.15

[float] Critical Amplification Factor, Range from [1-11]. Only valid when turbulenceIntensityPercent is not specified.

turbulenceIntensityPercent

0.1

Turbulence Intensity, Range from [0.03-2.5]. Only valid when Ncrit is not specified.

maxForceJacUpdatePhysicalSteps

0

[int] For physical steps less than the input value, the jacobian matrix is updated every pseudo-step overriding the updateJacobianFrequency value

Example

 1"transitionModelSolver": {
2	"modelType": "AmplificationFactorTransport",
3	"absoluteTolerance": 1e-10,
4	"linearSolverConfig": {
5		"maxIterations": 25
6	},
7	"orderOfAccuracy": 2,
8	"updateJacobianFrequency": 4,
9	"equationEvalFrequency": 4,
10	"Ncrit": 9
11}


## 4.8. heatEquationSolver#

OPTIONAL

This section specifies the numerical parameters of the heat equation solver for CHT applications.

Options

Default

Description

modelType

"None"

[string] "None" (disabled) or "HeatEquation" (enabled)

equationEvalFrequency

10

[int] Frequency at which to solve the heat equation in conjugate heat transfer simulations

linearSolverConfig

maxIterations

50

[int] Maximum number of linear solver iterations

absoluteTolerance

1.00E-10

[float] The linear solver converges when the final residual of the pseudo steps below this value. Either absolute tolerance or relative tolerance can be used to determine convergence.

relativeTolerance

[float] The linear solver converges when the ratio of the final residual and the initial residual of the pseudo step is below this value.

absoluteTolerance

1.00E-9

[float] Absolute residual tolerance that determines the convergence of the heat equation in conjugate heat transfer. This value should be the same or higher than the absolute tolerance for the linear solver by a small margin.

Example

1"heatEquationSolver": {
2    "modelType" : "HeatEquation",
3    "linearSolverConfig": {
4        "maxIterations": 50,
5        "absoluteTolerance": 1e-10
6    },
7    "equationEvalFrequency": 10
8}


## 4.9. initialCondition#

OPTIONAL

This section of the configuration file specifies the initial condition for the simulation.

Options

Default

Description

type

"freestream"

[string] "freestream" or "expression" with expression allowing to specify values for constants (constants) and each of the primitive variables (p, rho, u, v, w) using mathematical expressions.

Example

 1"initialCondition": {
2	"type": "expression",
3	"constants": {
4		"gamma": "1.4"
5	},
6	"rho": "1.0",
7	"u": "0.0",
8	"v": "0.0",
9	"w": "0.0",
10	"p": "1/gamma"
11}


## 4.10. timeStepping#

OPTIONAL

This section of the configuration file defines the numerical parameters for time stepping. Please refer to the time stepping knowledge base for further guidance regarding these parameters.

Options

Default

Description

physicalSteps

1

[int] Number of physical steps. "maxPhysicalSteps" is a supported alias for this entry.

timeStepSize

"inf"

[string or float] Nondimensional time step size in physical step marching, it is calculated as $$\frac{\Delta t_{physical} C_\infty}{L_{gridUnit}}$$, where the $$\Delta t_{physical}$$ is the physical time (in seconds) step size. “inf” means steady simulation.

maxPseudoSteps

2000

[int] Maximum pseudo steps within one physical step

CFL

CFL settings within each physical step

type

"ramp"

When "ramp" is specified, CFL will ramp from initial to final over rampSteps number of pseudo steps. With "adaptive" specified, the CFL value is calculated internally based on the quality of solver convergence at each pseudo step.

initial

5

[int] Initial CFL for solving pseudo time step (applicable to "ramp")

final

200

[int] Final CFL for solving pseudo time step (applicable to "ramp")

rampSteps

40

[int] Number of pseudo steps before reaching CFL final within 1 physical step (applicable to "ramp")

min

0.1

The minimum allowable value for CFL (applicable to "adaptive")

max

10000

The maximum allowable value for CFL (applicable to "adaptive")

maxRelativeChange

1

The maximum allowable relative change of CFL (%) at each pseudo step (applicable to "adaptive")

convergenceLimitingFactor

0.25

This factor specifies the level of conservativeness when using adaptive CFL. Smaller values correspond to a more conservative limitation on the value of CFL. In general, values smaller than 1 are recommended.

Note

The timeStepSize is in solver units (nondimensional), where time-scale is mesh unit divided by freestream speed of sound. So a time of timeStepSize=1 means the time it takes for sound to travel 1 mesh unit at freestream.

Example

 1"timeStepping": {
2	"timeStepSize": "inf",
3	"maxPhysicalSteps": 1,
4	"maxPseudoSteps": 10000,
5	"CFL": {
6		"initial": 1,
7		"final": 100,
8		"rampSteps": 2000
9		}
10}


## 4.11. slidingInterfaces (list)#

OPTIONAL

This section of the configuration file defines the simulation parameters of a sliding interface. Please refer to the knowledge base on sliding interfaces for further information.

Options

Default

Description

interfaceName

REQUIRED

[string] Name of the slidingInterface patch

stationaryPatches

REQUIRED

[list(string)] A list of static patch names of an interface

rotatingPatches

REQUIRED

[list(string)] A list of dynamic patch names of an interface

thetaRadians

DEPENDS

[math] Expression for rotation angle (in radians) as a function of time. Required if isDynamic = FALSE and none of: thetaDegrees, omegaRadians, omegaDegrees are specified.

thetaDegrees

DEPENDS

[math] Expression for rotation angle (in degrees) as a function of time. Required if isDynamic = FALSE and none of: thetaRadians, omegaRadians, omegaDegrees are specified.

omegaRadians

DEPENDS

[float] Nondimensional rotating speed, radians/nondim-unit-time, = $$\frac{\Omega*L_{gridUnit}}{C_\infty}$$, where the SI unit of $$\Omega$$ is rad/s. Required if isDynamic = FALSE and none of: thetaDegrees, thetaRadians, omegaDegrees are specified.

omegaDegrees

DEPENDS

[float] Nondimensional rotating speed, degrees/nondim-unit-time, = $$\text{omegaRadians}*180/PI$$. Required if isDynamic = FALSE and none of: thetaDegrees, thetaRadians, omegaRadians are specified.

centerOfRotation

REQUIRED

[3-array(float)] Origin of rotation

axisOfRotation

REQUIRED

[3-array(float)] Axis of Rotation

volumeName

REQUIRED

[list, string)] A list of dynamic volume zones related to the above {omega, centerOfRotation, axisOfRotation}

parentVolumeName

DEPENDS

[string] Name of the volume zone that the rotating reference frame is contained in, used to compute the acceleration in the nested rotating reference frame. Required when using nested rotating interfaces.

isDynamic

FALSE

[boolean] Whether rotation of this interface is dictated by userDefinedDynamics

Example

1"slidingInterfaces" : [
2{
3	"stationaryPatches" : ["farField/rotationInterface"],
4	"rotatingPatches" : ["innerRotating/rotationInterface"],
5	"axisOfRotation" : [0,0,-1],
6	"centerOfRotation" : [0,0,0],
7	"omega" : 1.84691e-01,
8	"volumeName" : ["innerRotating"]
9}


## 4.12. actuatorDisks (list)#

OPTIONAL

The actuator disk inputs are defined in this section. Please refer to the actuator disk knowledge base for further information.

Options

Default

Description

center

REQUIRED

[3-array(float)] center of the actuator disk

axisThrust

REQUIRED

[3-array(float)] direction of thrust, it is a unit vector

thickness

REQUIRED

[float] thickness of the actuator disk

forcePerArea->radius

REQUIRED

[list(float)] radius of the sampled locations in grid unit

forcePerArea->thrust

REQUIRED

[list(float)] force per area in the axial direction, positive means the axial force follows the same direction as axisThrust. It is non-dimensional: $$\frac{\text{thrustPerArea}(SI=N/m^2)}{\rho_\infty C^2_\infty}$$.

forcePerArea->circumferential

REQUIRED

[list(float)] force per area in the circumferential direction, positive means the circumferential force follows the same direction as axisThrust with the right hand rule. It is non-dimensional: $$\frac{\text{circumferentialForcePerArea}(SI=N/m^2)}{\rho_\infty C^2_\infty}$$.

Example

 1"actuatorDisks":
2[
3 	{
4 	"center":[0.0, 0.0, 0.0],
5	"axisThrust":[0.0,0.0,1.0],
6	"thickness": 0.01,
7        "forcePerArea":{
9		"thrust":[0.001, 0.02, 0],
10		"circumferential":[-0.0001, -0.003, 0]
11	}
12	}
13]


## 4.13. BETDisks (list)#

OPTIONAL

In this section, the Blade Element Theory (BET) model inputs are defined. For detailed information on the parameters, please refer to the BET knowledge Base. To generate the sectional polars the BET translators can be used which are outlined here with best-practices for the sectional polars inputs available here. A case study of the XV-15 rotor using the steady BET Disk method is available in Case Studies. Because a transient BET Line simulation is simply a time-accurate version of a steady-state BET Disk simulation, most of the parameters below are applicable to both methods.

Options

Default

Description

rotationDirectionRule

"rightHand"

[string] the rule for rotation direction and thrust direction, “rightHand” or “leftHand”.

centerOfRotation

REQUIRED

[3-array(float)] center of the Blade Element Theory (BET) disk

axisOfRotation

REQUIRED

[3-array(float)] rotational axis of the BET disk, i.e. (+) thrust axis

numberOfBlades

REQUIRED

[int] number of blades to model

radius

REQUIRED

[float] nondimensional radius of the rotor disk, = $$\text{Radius}_\text{dimensional}/L_{gridUnit}$$

omega

REQUIRED

[float] nondimensional rotating speed, radians/nondim-unit-time, = $$\frac{\Omega*L_{gridUnit}}{C_\infty}$$, where the SI unit of $$\Omega$$ is rad/s.

chordRef

REQUIRED

nLoadingNodes

REQUIRED

[float] Number of nodes used to compute the sectional thrust and torque coefficients $$C_t$$ and $$C_q$$, defined in BET Loading Output

thickness

REQUIRED

[float] nondimensional thickness of the BET disk

bladeLineChord

0.0

[float] nondimensional chord to use if performing an unsteady BET Line simulation. Default of 0.0 is an indication to run a steady BET Disk simulation.

initialBladeDirection

Required if bladeLineChord is not = 0

[3-array(float)] Orientation of the first blade in the BET model. Must be specified if performing an unsteady BET Line simulation.

twists

REQUIRED

[list(dict)] A list of dictionary entries specifying the twist in degrees as a function of radial location. Entries in the list must already be sorted by radius.

chords

REQUIRED

[list(dict)] A list of dictionary entries specifying the blade chord as a function of the radial location. Entries in the list must already be sorted by radius.

sectionalPolars

REQUIRED

[list(dict)] A list of dictionaries for every radial location specified in sectionalRadiuses. Each dict has two entries, “liftCoeffs” and “dragCoeffs”, both of which have the same data storage format: 3D arrays (implemented as nested lists). The first index of the array corresponds to the MachNumbers of the specified polar data. The second index of the array corresponds to the ReynoldsNumbers of the polar data. The third index corresponds to the alphas. The value specifies the lift or drag coefficient, respectively.

sectionalRadiuses

REQUIRED

[list(float)] A list of the radial locations in grid units at which $$C_l$$ and $$C_d$$ are specified in sectionalPolars

alphas

REQUIRED

[list(float)] alphas associated with airfoil polars provided in sectionalPolars in degrees

MachNumbers

REQUIRED

[list(float)] Mach numbers associated with airfoil polars provided in sectionalPolars

ReynoldsNumbers

REQUIRED

[list(float)] Reynolds numbers associated with the airfoil polars provided in sectionalPolars

tipGap

"inf"

[float] Nondimensional distance between blade tip and solid bodies to define a tip loss factor.

Example

  1"BETDisks": [
2        {
3            "rotationDirectionRule": "leftHand",
4            "centerOfRotation": [0, 0, 0],
5            "axisOfRotation": [0, 0, 1],
8            "omega": 0.0046,
9            "chordRef": 14,
10            "thickness": 15,
12            "MachNumbers": ,
13            "ReynoldsNumbers": ,
14            "alphas": [
15                -180,
16                0,
17                180
18            ],
20                13.5,
21                120,
22                150
23            ],
24            "twists": [
25                {
27                    "twist": 40.29936539609504
28                },
29                {
31                    "twist": 16.596477306554306
32                },
33                {
35                    "twist": 3.97516
36                }
37            ],
38            "chords": [
39                {
41                    "chord": 0
42                },
43                {
45                    "chord": 17.69622361
46                },
47                {
49                    "chord": 14.004512929656503
50                }
51            ],
52            "sectionalPolars": [
53                {
54                    "liftCoeffs": [
55                        [
56                            [
57                                8.998801703796744e-12,
58                                0.019549999999999998,
59                                -8.998801703796744e-12
60                            ]
61                        ]
62                    ],
63                    "dragCoeffs": [
64                        [
65                            [
66                                0.03000000000109987,
67                                0.007595,
68                                0.03000000000109987
69                            ]
70                        ]
71                    ]
72                },
73                {
74                    "liftCoeffs": [
75                        [
76                            [
77                                8.998801703796744e-12,
78                                0.18164999999999998,
79                                -8.998801703796744e-12
80                            ]
81                        ]
82                    ],
83                    "dragCoeffs": [
84                        [
85                            [
86                                0.03000000000109987,
87                                0.0062699999999999995,
88                                0.03000000000109987
89                            ]
90                        ]
91                    ]
92                },
93                {
94                    "liftCoeffs": [
95                        [
96                            [
97			        -8.998801703796744e-12,
98                                0.0589,
99                                -8.998801703796744e-12
100                            ]
101                        ]
102                    ],
103                    "dragCoeffs": [
104                        [
105                            [
106                                0.03000000000109987,
107                                0.004765,
108                                0.03000000000109987
109                            ]
110                        ]
111                    ]
112                }
113            ],
114
115	    "tipGap": "inf"
116        }
117    ]


## 4.14. porousMedia (list)#

OPTIONAL

This section defines the inputs for the porous media model. For further information please refer to the porous media knowledge base.

Options

Default

Description

DarcyCoefficient

REQUIRED

[3-array(float)] Darcy coefficient of the porous media model which determines the scaling of the viscous loss term. The 3 values define the coefficient for each of the 3 axes defined by the reference frame of the volume zone.

ForchheimerCoefficient

REQUIRED

[3-array(float)] Forchheimer coefficient of the porous media model which determines the scaling of the inertial loss term

volumeZone

REQUIRED

[dict] Dictionary defining the properties of the region of the grid where the porous media model is applied

zoneType

REQUIRED

[string] Type/Shape of volume zone. Possible values: “box”

center

REQUIRED

[3-array(float)] For “zoneType”: “box”, it is the center point of the box

axes

REQUIRED

[[3-array(float)], [3-array(float)]] For “zoneType”: “box”, it is 2 axes which define the x and y directions of the box. Also, used to define the reference frame of the volume zone.

lengths

REQUIRED

[3-array(float)] For “zoneType”: “box”, it is the length of the box in each of the x, y, z directions

windowingLengths

[0.02*lengths, 0.02*lengths, 0.02*lengths]

[3-array(float)] For “zoneType”: “box”, it is the total length of the box in x, y, z directions over which a window function is applied on the edges

Example

 1 "porousMedia": [
2    {
3        "DarcyCoefficient": [1000000, 0, 0],
4        "ForchheimerCoefficient": [1, 0, 0],
5        "volumeZone": {
6            "zoneType": "box",
7            "center": [0, 0, 0],
8            "lengths": [0.2, 0.2, 2],
9            "axes": [[0, 1, 0], [0, 0, 1]]
10        }
11    }
12]


## 4.15. userDefinedDynamics#

OPTIONAL

This section defines the user defined dynamics inputs. An example of how to use the userDefinedDynamics is available here.

Options

Default

Description

dynamicsName

REQUIRED

[string] Name of the dynamics defined by the user

inputVars

REQUIRED

[list(string)] List of the inputs to define the user defined dynamics. Allowable inputs are: "CL", "CD", "bet_NUM_torque" (NUM is the index of the BET disk starting from 0), "rotMomentX", "rotMomentY" and "rotMomentZ" (X/Y/Z moments with respect to momentCenter)

constants

Empty

[list(dict)] A list of dictionary entries specifying the constants used in the updateLaws and outputLaws

outputVars

REQUIRED

[list(string)] Name of the output variables for the defined dynamics and the relation between the output variables and input/state variables. e.g. "theta[plate]: "state;"" Allowable output variables are: "alphaAngle", "betaAngle", "bet_NUM_omega" (NUM is the index of the BET disk starting from 0), "theta[$interfaceName]", "omega[$interfaceName]" and "omegaDot[\$interfaceName]" (rotation angle/velocity/acceleration in radius of interfaceName, specified in slidingInterfaces. Only one slidingInterface is allowed in one UDD item.)

stateVarsInitialValue

Empty

[list(string)] The initial value of state variables are specified here. The entries could be either values (in the form of strings, e.g., "0.0") or name of the variables specified in the configuration file (e.g., "alphaAngle"). The list entries correspond to the initial values for state, state, …, respectively.

updateLaw

Empty

[list(string)] List of equations for updating state variables. The list entries correspond to the update laws for state, state, …, respectively.

inputBoundaryPatches

Empty

[list(string)] List of boundary names (if any) related to the input variables

Example

 1"userDefinedDynamics": [
2    {
3        "dynamicsName": "alphaController",
4        "inputVars": [
5            "CL"
6        ],
7        "constants": {
8            "CLTarget": 0.4,
9            "Kp": 0.2,
10            "Ki": 0.002
11        },
12        "outputVars": {
13            "alphaAngle": "if (pseudoStep > 500) state; else alphaAngle;"
14        },
15        "stateVarsInitialValue": [
16            "alphaAngle",
17            "0.0"
18        ],
19        "updateLaw": [
20            "if (pseudoStep > 500) state + Kp * (CLTarget - CL) + Ki * state; else state;",
21            "if (pseudoStep > 500) state + (CLTarget - CL); else state;"
22        ],
23        "inputBoundaryPatches": [
24            "1"
25        ]
26    }
27]


## 4.16. Output#

This section presents all the configuration file inputs regarding solution output. This includes, the surface and volume solutions, as well as slices, isosurfaces and point monitors. For volumeZones specified as solid, only output related to the heat equation, i.e. temperatureSolid and residualHeatSolver are valid. These variables are plotted as zero outside of the solid zones. Universal nondimensional variables supported by all types of output are presented below: [note]

Name

Description

Cp

Coefficient of pressure. $$C_p=(\frac{p-p_\infty}{\frac{1}{2}\rho_\infty{U_{ref}}^2})$$

gradW

kOmega

k and omega when using the kOmegaSST model

Mach

Mach number

mut

Turbulent viscosity

mutRatio

Ratio between turbulent viscosity and freestream dynamic viscosity, $$\mu_t/{\mu_\infty}$$

nuHat

Spalart-Almaras variable, nuHat

primitiveVars

Outputs rho, u, v, w, p (density, 3 velocities and pressure)

qcriterion

Q criterion

residualNavierStokes

5 components of the N-S residual

residualTransition

Residual for the transition model

residualTurbulence

Residual for the turbulence model

s

Entropy

solutionNavierStokes

Solution for the N-S equation in conservative form

solutionTransition

Solution for the transition model

solutionTurbulence

Solution for the turbulence model

T

Temperature

vorticity

Vorticity

wallDistance

Wall distance

lowNumericalDissipationSensor

Sensor showing where the numericalDissipationFactor has been increased

temperatureSolid

Temperature in the solid zones

residualHeatSolver

Residual for the heat equation solver

Additional nondimensional variables supported by volumeOutput and sliceOutput:

Name

Description

betMetrics

Outputs BET disk related metrics, including variables such as VelocityRelative, AlphaRadians, CfAxial, CfCircumferential, TipLossFactor, LocalSolidityIntegralWeight for all BETDisks with possible overlapping.

betMetricsPerDisk

Same as above but each BETdisk has its own betMetrics so overlapping is avoided.

kOmegaSST_DDES

Outputs DDES_fd (1 in the LES region, and 0 elsewhere), DDES_lengthRANS (RANS length scale), and DDES_lengthLES (LES length scale)

Additional nondimensional variables supported by surfaceOutput:

Name

Description

CfVec

Viscous stress coefficient vector, = $$C_{f_{Vec}}=\frac{\tau_{wall}}{\frac{1}{2}\rho_\infty U_{ref}^2}$$

Cf

Magnitude of CfVec

CfNormal

Magnitude of CfVec normal to the wall

CfTangent

Magnitude of CfVec tangential to the wall

heatFlux

Heat flux

nodeNormals

Wall normal direction (may not be a unit vector). Note: This variable does not support time average.

nodeForcesPerUnitArea

$$\frac{\tau_{wall}-(p-p_\infty)*normal}{\rho_\infty C_\infty^2}$$, where the $$normal$$ is the unit normal vector pointing from solid to fluid

VelocityRelative

Velocity in rotating frame

yPlus

non-dimensional wall distance, $$y^+$$

wallFunctionMetric

(beta feature) : This metric is a local indicator for quality of the wall model. A value less than 1.25 shows good estimation of wall shear stress. Between 1.25 and 10 is a region of less validity, and values greater than 10 are not reliable for wall shear stress estimation.

### 4.16.1. volumeOutput#

OPTIONAL

Options

Default

Description

animationFrequency

-1

[int] Frequency (in number of physical time steps) at which volume output is saved. -1 is at end of simulation.

animationFrequencyOffset

0

[int] Offset (in number of physical time steps) at which volume output animation is started. 0 is at beginning of simulation.

computeTimeAverages

FALSE

[boolean] Enables computation of time-averaged quantities

animationFrequencyTimeAverage

-1

[int] Frequency (in number of physical time steps) at which time averaged volume output is saved. -1 is at end of simulation.

animationFrequencyTimeAverageOffset

0

[int] Offset (in number of physical time steps) at which time averaged volume output animation is started. 0 is at beginning of simulation.

startAverageIntegrationStep

0

[int] Physical time step to start calculating averaging

outputFields

[]

[list(string)] List of output variables. Including universal output variables, and variables specific to volumeOutput.

outputFormat

"paraview"

[string] "paraview", "tecplot" or "both"

Example

 1"volumeOutput": {
2	"outputFormat": "tecplot",
3	"animationFrequency": -1,
4	"animationFrequencyOffset": 0,
5	"animationFrequencyTimeAverage": -1,
6	"animationFrequencyTimeAverageOffset": 0,
7	"computeTimeAverages": false,
8	"startAverageIntegrationStep": 0,
9	"outputFields": ["primitiveVars", "betMetrics", "qcriterion"]
10}


### 4.16.2. surfaceOutput#

OPTIONAL

Options

Default

Description

animationFrequency

-1

[int] Frequency (in number of physical time steps) at which surface output is saved. -1 is at end of simulation.

animationFrequencyOffset

0

[int] Offset (in number of physical time steps) at which surface output animation is started. 0 is at beginning of simulation.

outputFormat

"paraview"

[string] "paraview" or "tecplot" or "both"

writeSingleFile

FALSE”

[boolean] Enable writing all surface outputs into a single file instead of one file per surface. This option currently only supports Tecplot output format.

computeTimeAverages

FALSE

[boolean] Enables computation of time-averaged quantities

animationFrequencyTimeAverage

-1

[int] Frequency (in number of physical time steps) at which time averaged surface output is saved. -1 is at end of simulation.

animationFrequencyTimeAverageOffset

0

[int] Offset (in number of physical time steps) at which time averaged surface output animation is started. 0 is at beginning of simulation.

startAverageIntegrationStep

0

[int] Physical time step to start calculating averaging

outputFields

[]

[list(string)] List of output variables. Including universal output variables and variables specific to surfaceOutput. outputFields specified under surfaceOutput will be added to all surfaces. See example below.

surfaces

{}

[dict] Dictionary of output surfaces. The name of the surface is used as the key. These surface names have to be the patch name in the grid file or the alias name specified in case JSON. See example below.

Example

 1"surfaceOutput": {
2    "animationFrequency": -1,
3    "animationFrequencyOffset": 0,
4    "animationFrequencyTimeAverage": -1,
5    "animationFrequencyTimeAverageOffset": 0,
6    "computeTimeAverages": false,
7    "outputFormat": "paraview",
8    "startAverageIntegrationStep": 0,
9    "writeSingleFile": false,
10    "outputFields": [ "yPlus" ],
11    "surfaces": {
12        "freestream": {
13            "outputFields": [ "Cp", "Mach" ]
14            # Will output "Cp", "Mach", "yPlus"
15        },
16        "symmetry": {
17            "outputFields": [ "T", "heatFlux" ]
18            # Will output "T", "heatFlux", "yPlus"
19        },
20        "wing": {
21            "outputFields": [ "CfVec" ]
22            # Will output "CfVec", "yPlus"
23        }
24    }
25}


### 4.16.3. sliceOutput#

OPTIONAL

Options

Default

Description

animationFrequency

-1

[int] Frequency (in number of physical time steps) at which slice output is saved. -1 is at end of simulation.

animationFrequencyOffset

0

[int] Offset (in number of physical time steps) at which slice output animation is started. 0 is at beginning of simulation.

outputFormat

"paraview"

[string] "paraview" or "tecplot" or "both"

computeTimeAverages

FALSE

[boolean] Enables computation of time-averaged quantities

animationFrequencyTimeAverage

-1

[int] Frequency (in number of physical time steps) at which time averaged slice output is saved. -1 is at end of simulation.

animationFrequencyTimeAverageOffset

0

[int] Offset (in number of physical time steps) at which time averaged slice output animation is started. 0 is at beginning of simulation.

startAverageIntegrationStep

0

[int] Physical time step to start calculating averaging

outputFields

[]

[list(string)] List of output variables. Including universal output variables and variables specific to sliceOutput. outputFields specified under sliceOutput will be added to all slices. See example below.

slices

{}

[dict] Dictionary of output slices. The name of the slice is used as the key. See example below.

sliceNormal

[]

[3-array(float)] Normal direction of the slice (within slices dictionary)

sliceOrigin

[]

[3-array(float)] Coordinates of a point on the slice (within slices dictionary)

Example

 1"sliceOutput": {
2    "animationFrequency": -1,
3    "animationFrequencyOffset": 0,
4    "coarsenIterations": 0,
5    "outputFormat": "tecplot",
6    "outputFields": [ "Cp" ],
7    "slices": {
8        "x0": {
9            "sliceNormal": [ 1, 0, 0 ],
10            "sliceOrigin": [ 0, 0, 0 ],
11            "outputFields": [ "Mach" ]
12            # Will output "Mach", "Cp"
13        },
14        "y1": {
15            "sliceNormal": [ 0, 1, 0 ],
16            "sliceOrigin": [ 2, 1, 0 ],
17            "outputFields": [ "T" ]
18            # Will output "T", "Cp"
19        }
20    }
21}


### 4.16.4. isoSurfaceOutput#

OPTIONAL

Options

Default

Description

outputFormat

"paraview"

[string] "paraview", "tecplot" or "both"

isoSurfaces

{}

[dict] Dictionary of iso-surfaces. The key of the dictionary is the name of the iso-surface file to be written.

surfaceField

[string] Isosurface field variable to be written. One of p, rho, Mach, qcriterion, s, T, Cp, mut, nuHat.

surfaceFieldMagnitude

[float] The iso-value of surfaceField to compute

outputFields

[list(string)] List of output variables, see universal output variables

animationFrequency

-1

[int] Frequency (in number of physical time steps) at which volume output is saved. -1 is at end of simulation.

animationFrequencyOffset

0

[int] Offset (in number of physical time steps) at which volume output animation is started. 0 is at beginning of simulation.

Example

 1"isoSurfaceOutput": {
2    "outputFormat": "tecplot",
3    "animationFrequency": 10,
4    "isoSurfaces": {
5        "q_1e-3": {
6            "surfaceField": "qcriterion",
7            "surfaceFieldMagnitude": 1e-3,
8            "outputFields": [ "Cp", "Mach" ]
9        }
10    }
11},


### 4.16.5. monitorOutput#

OPTIONAL

Options

Default

Description

monitors

{}

[dict] Dictionary of monitor groups. Data probed at the monitor points are printed to file every 10 pseudo step and at the end of each physical time step. The key of the dictionary is the name of the monitor group.

monitorLocations

[list(3-array(float))] A list of coordinates of the monitor points belonging to this monitor group

outputFields

[list(string)] List of output fields which will be added to all monitors within the monitor group, see universal output variables

Note

Please increase the precision of the input coordinates when probing near the grid boundaries to ensure that the probing location is within the mesh.

Example

 1"monitorOutput": {
2    "monitors": {
3        "Group1": {
4            "monitorLocations": [
5                [ 0.12, 0.34, 0.262 ],
6                [ 3.124e-1, 0.01, 0.03 ]
7            ],
8            "outputFields": [ "primitiveVars", "vorticity", "T", "s", "Cp", "mut" ]
9        }
10    }
11}

note

Since release-23.1.1.0, previous syntax to specify output variables is being deprecated and not all variables are supported. Users are encouraged to use the new syntax as described in this documentation.