Solver Configuration
Contents
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 |
---|---|---|
|
1.0 |
[float] The reference area of the geometry |
|
[0.0, 0.0, 0.0] |
[3-array(float)] The x, y, z moment center of the geometry in grid units |
|
[1.0, 1.0, 1.0] |
[3-array(float)] The x, y, z component-wise moment reference lengths |
Example
"geometry" : {
"refArea" : 45.604,
"momentCenter" : [0.0, 0.0, 0.0],
"momentLength" : [3.81, 3.81, 3.81]
}
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 |
---|---|---|
|
Either |
[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}\). |
|
Either |
[float] The freestream dynamic viscosity (nondimensional), = \(\frac{\mu_\infty}{\rho_\infty C_\infty L_{gridUnit}}\). |
|
REQUIRED |
[float] The Mach number, the ratio of freestream velocity to the speed of sound |
|
|
[float] The reference Mach number to compute nondimensional quantities, = \(U_{ref}/C_\infty\). |
|
REQUIRED |
[float] The freestream temperature in Kelvin. -1 means globally constant viscosity. |
|
REQUIRED |
[float] The angle of attack in degrees. |
|
REQUIRED |
[float] The side slip angle in degrees. |
|
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 |
Example
"freestream" :
{
"muRef" : 4.29279e-08,
"Mach" : 1.46972e-02,
"MachRef" : 0.70,
"Temperature" : 288.15,
"alphaAngle" : -90.0,
"betaAngle" : 0.0
}
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:
"boundary_name" :
{
"type" : "boundary_type"
}
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/wallName” for .cgns files. Additionally, an optional parameter “name” can be specified within each boundary dictionary to overwrite the “boundary_name” shown in the json file. This will update the output results files with the correct names. Hence it becomes possible to update the output name of a given boundary from run to run. For example, a given boundary could be called “BC_NoSlipWall” in one run and “BC_SlipWall” in another. The “name” option takes a string entry.
In resume, in the above json example, “boundary_name” is the name that boundary has in the mesh. This could be a name you have assigned it when creating the mesh or a simple number(see example below). By contrast the “name” parameter is an optional way of updating the “boundary_name” in the output files.
"boundaries" : {
"1": {
"type": "NoSlipWall",
"name": "your_chosen_name"
},
"2": {
"type": "SlipWall",
"name": "another_chosen_name"
}}
Note
For the TranslationallyPeriodic
and RotationallyPeriodic
boundary conditions, the pairedPatchName
boundary patch name shall be the name of that boundary in the mesh. As in NOT the name you have renamed it to in the json file.
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 |
Additional Options |
Description |
---|---|---|
|
None |
[string] Slip wall condition. Also used for symmetry boundary. |
|
[string] Sets no-slip wall condition |
|
|
[3-array(float or expression)] Optionally, a tangential velocity can be prescribed on the wall. |
|
|
The frame of reference with respect to which velocity is defined. An alternative is “absolute” which is used when the velocity is defined with respect to the inertial frame of reference. |
|
|
[string] Isothermal wall boundary condition |
|
|
[float or expression] Wall temperature nondimensionalized with freestream temperature. |
|
|
[3-array(float or expression)] Optionally, a tangential velocity can be prescribed on the wall. |
|
|
[string] Freestream condition, set by parameters in freestream. The default values are set based on the alpha and beta angles. |
|
|
[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. |
|
|
The frame of reference with respect to which velocity is defined. An alternative is “absolute” which is used when the velocity is defined with respect to the inertial frame of reference. “absolute” is typically used with Single Reference Frame (SRF) simulations. |
|
|
[string] Subsonic outflow, set through static pressure ratio |
|
|
[float] Static pressure ratio, \(\frac{p_{outflow}}{p_{\infty}}\) |
|
|
[string] Subsonic outflow, set through Mach number |
|
|
[float] Mach number, \(\frac{U_{outflow}}{C_{\infty}}\) |
|
|
[string] Subsonic inflow set through total pressure ratio and total temperature ratio for nozzle or tunnel plenum |
|
|
[float] Total pressure ratio, \(\frac{p_{t, inflow}}{p_{s, inflow}}\) |
|
|
[float] Total temperature ratio, \(\frac{T_{t, inflow}}{T_{s, inflow}}\) |
|
|
[integer] Number of ramp steps during solution initialization |
|
|
[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. |
|
|
[string] Mass outflow |
|
|
[float] Mass flow rate at outlet (non-dimensional), \(=\frac{\dot{m}_{outflow}}{{\rho C_{\infty}} L_{gridUnit}^2}\) |
|
|
[string] Mass inflow |
|
|
[float] Mass flow rate at inlet (non-dimensional), \(=\frac{\dot{m}_{inflow}}{{\rho C_{\infty}} L_{gridUnit}^2}\) |
|
|
None |
[string] This boundary type uses wall functions to estimate the velocity field close to the solid boundaries |
|
[string] Translational periodic boundary condition |
|
|
[string] Patch name of the matching pair of a |
|
|
[3-array (float)] For a translationally periodic patch with |
|
|
[string] Rotational periodic boundary condition |
|
|
[string] Patch name of the matching pair of a |
|
|
[3-array (float)] For a rotationally periodic patch with |
|
|
[float] For a rotationally periodic patch with |
|
|
[string] Isothermal wall boundary condition for a solid zone |
|
|
[float or expression], Wall temperature for a solid zone nondimensionalized with freestream temperature. |
|
|
None |
[string] Adiabatic wall boundary condition for a solid zone |
Example
"boundaries": {
"boundary_name_A": {
"type": "SlipWall"
},
"boundary_name_B":{
"type":"NoSlipWall",
"Velocity":["0.0","0.1*x+exp(y)+z^2","cos(0.2*x*pi)+sqrt(z^2+1)"]
},
"boundary_name_C": {
"type": "IsothermalWall",
"Temperature": 300
},
"boundary_name_D": {
"type": "Freestream"
},
"boundary_name_E": {
"type": "SubsonicOutflowPressure",
"staticPressureRatio": 1.0
},
"boundary_name_F": {
"type": "SubsonicOutflowMach",
"MachNumber": 0.2
},
"boundary_name_G": {
"type": "SubsonicInflow",
"totalPressureRatio": 1.0,
"totalTemperatureRatio": 1.0
},
"boundary_name_H": {
"type": "MassOutflow",
"massFlowRate": 0.2
},
"boundary_name_I": {
"type": "MassInflow",
"massFlowRate": 0.2
},
"boundary_name_K": {
"type": "WallFunction"
},
"boundary_name_L": {
"type": "TranslationallyPeriodic",
"pairedPatchName": "boundary_name_M"
},
"boundary_name_M": {
"type": "TranslationallyPeriodic"
},
"boundary_name_N": {
"type": "RotationallyPeriodic",
"pairedPatchName": "boundary_name_O",
"axisOfRotation": [1, 0, 0]
},
"boundary_name_O": {
"type": "RotationallyPeriodic"
},
"boundary_name_R": {
"type": "SolidIsothermalWall",
"Temperature": 1.2
},
"boundary_name_S": {
"type": "SolidAdiabaticWall"
}
}
4.4. volumeZones
#
OPTIONAL
This section defines the properties of volume zones. All volume zones are assumed to have modelType=FluidDynamics
unless specified otherwise. Each volume zone is specified with a structure as follows:
"volume_zone_name" :
{
"modelType" : "model_type"
}
The “volume_zone_name” needs to be consistent with the definitions in the mesh file.
The options thermalConductivity
, volumetricHeatSource
, heatCapacity
and initialCondition
are only valid for heat transfer zones.
Options |
Additional Options |
default |
Description |
---|---|---|---|
|
"FluidDynamics" |
[string] |
|
|
REQUIRED for |
[float] Thermal conductivity of the material (non-dimensional), \(\frac{k_s T_{\infty}}{\rho_{\infty} C_{\infty}^3 L_{gridUnit}}\) |
|
|
0 |
[float or expression] Volumetric heat source for a solid zone (non-dimensional), \(\frac{\dot{q}_s L_{gridUnit}}{\rho_{\infty} C_{\infty}^3}\) |
|
|
REQUIRED for |
[float] Heat capacity per volume of the material (non-dimensional), \(\frac{\rho_s c_s T_{\infty}}{\rho_{\infty}C_{\infty}^2}\) |
|
|
REQUIRED for |
[dict] |
|
|
[dict] Rotation inputs for rotating volume zones. Only fluid zones are supported. |
||
|
DEPENDS |
[math] Expression for rotation angle (in radians) as a function of time. Required if and none of: |
|
|
DEPENDS |
[math] Expression for rotation angle (in degrees) as a function of time. Required if none of: |
|
|
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 none of: |
|
|
DEPENDS |
[float] Nondimensional rotating speed, degrees/nondim-unit-time, = \(\text{omegaRadians}*180/PI\). Required if none of: |
|
|
REQUIRED |
[3-array(float)] Origin of rotation |
|
|
REQUIRED |
[3-array(float)] Axis of Rotation |
|
|
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. More information can be found at our knowledge base. |
Example 1
1"volumeZones": {
2 "SOLID": {
3 "modelType": "HeatTransfer",
4 "thermalConductivity": 0.003,
5 "volumetricHeatSource": "0.01*sin(pi*x)*sin(pi*y)"
6 }
7}
Example 2
1"volumeZones": {
2 "FLUID-OUTER-BLOCK": {
3 "modelType": "FluidDynamics"
4 },
5 "FLUID-MIDDLE-BLOCK": {
6 "modelType": "FluidDynamics",
7 "referenceFrame":{
8 "omegaRadians": 0.1,
9 "centerOfRotation": [1,2,3],
10 "axisOfRotation": [1,0,0]
11 }
12 },
13 "FLUID-INNER-BLOCK": {
14 "modelType": "FluidDynamics",
15 "referenceFrame":{
16 "omegaRadians": 0.2,
17 "centerOfRotation": [-4,5,-0.2],
18 "axisOfRotation": [0,0,-1],
19 "parentVolumeName": "FLUID-MIDDLE-BLOCK"
20 }
21 }
22}
Note
For simulations with rotational volume zones (non-zero omega), setting timeStepSize
to "inf"
is equivalent to running Mulitple Reference Frame (MRF) or Single Reference Frame (SRF) simulations. MRF is activated when multiple zones are present in the domain, whereas SRF is activated when only one volume zone is specified.
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 |
---|---|---|
|
"SpalartAllmaras" |
[string] |
|
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) |
|
0.0 |
[float] Tolerance to the relative residual, below which the solver goes to the next physical step. |
|
Configuration for the linear solver. |
|
|
4 |
[int] Frequency at which the jacobian is updated |
|
4 |
[int] Frequency at which to update the turbulence equation |
|
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. |
|
FALSE |
[boolean] Rotation correction for the turbulence model. Only supported for |
|
FALSE |
[boolean] Quadratic constitutive relation for turbulence shear stress tensor instead of Boussinesq Approximation |
|
2 |
[int] Order of accuracy in space |
|
0 |
[int] For physical steps less than the input value, the jacobian matrix is updated every pseudo-step overriding the |
|
FALSE |
[boolean] |
|
"maxEdgeLength" |
[string] Specifies the length used for the computation of LES length scale. The allowed inputs are |
|
{} |
[dict] A dictionary containing the DDES coefficients in the solver: SpalartAllmaras: |
Example
"turbulenceModelSolver" : {
"modelType" : "SpalartAllmaras",
"absoluteTolerance" : 1e-8,
"relativeTolerance" : 1e-2,
"linearSolverConfig": {
"maxIterations": 25
},
"DDES" : true,
"orderOfAccuracy" : 2,
"updateJacobianFrequency" : 4,
"equationEvalFrequency" : 1,
"rotationCorrection" : true,
"modelConstants" : {
"C_DES": 0.85,
"C_d": 8.0
}
}
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 |
---|---|---|
|
"None" |
[string] |
|
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) |
|
0.0 |
[float] Tolerance to the relative residual, below which the solver goes to the next physical step. |
|
Configuration for the linear solver. |
|
|
4 |
[int] Frequency at which the jacobian is updated |
|
4 |
[int] Frequency at which to update the transition equation |
|
2 |
[int] Order of accuracy in space |
|
8.15 |
[float] Critical Amplification Factor, Range from [1-11]. Only valid when |
|
0.1 |
Turbulence Intensity, Range from [0.03-2.5]. Only valid when |
|
0 |
[int] For physical steps less than the input value, the jacobian matrix is updated every pseudo-step overriding the |
Example
"transitionModelSolver": {
"modelType": "AmplificationFactorTransport",
"absoluteTolerance": 1e-10,
"linearSolverConfig": {
"maxIterations": 25
},
"orderOfAccuracy": 2,
"updateJacobianFrequency": 4,
"equationEvalFrequency": 4,
"Ncrit": 9
}
4.8. heatEquationSolver
#
OPTIONAL
This section specifies the numerical parameters of the heat equation solver for CHT applications.
Options |
Additional Options |
Default |
Description |
---|---|---|---|
|
10 for steady simulations. For unsteady cases this number is set to guarantee a maximum of 40 evaluations per time step. |
[int] Frequency at which to solve the heat equation in conjugate heat transfer simulations |
|
|
|
50 |
[int] Maximum number of linear solver iterations |
|
1.00E-10 |
[float] The linear solver converges when the final residual of the pseudo step is below this value. Either absolute tolerance or relative tolerance can be used to determine convergence. |
|
|
[float] The linear solver converges when the ratio of the final residual and the initial residual of the pseudo step is below this value. |
||
|
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
"heatEquationSolver": {
"linearSolverConfig": {
"maxIterations": 50,
"absoluteTolerance": 1e-10
},
"equationEvalFrequency": 10
}
4.9. initialCondition
#
OPTIONAL
This section of the configuration file specifies the initial condition for the simulation.
Options |
Default |
Description |
---|---|---|
|
"freestream" |
[string] |
Example
"initialCondition": {
"type": "expression",
"constants": {
"gamma": "1.4"
},
"rho": "1.0",
"u": "0.0",
"v": "0.0",
"w": "0.0",
"p": "1/gamma"
}
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 |
Additional Options |
Default |
Description |
---|---|---|---|
|
1 |
[int] Number of physical steps. "maxPhysicalSteps" is a supported alias for this entry. |
|
|
"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. |
|
|
2000 |
[int] Maximum pseudo steps within one physical step |
|
|
CFL settings within each physical step |
||
|
"ramp" |
When |
|
|
5 |
[int] Initial CFL for solving pseudo time step (applicable to |
|
|
200 |
[int] Final CFL for solving pseudo time step (applicable to |
|
|
40 |
[int] Number of pseudo steps before reaching CFL |
|
|
0.1 |
The minimum allowable value for CFL (applicable to |
|
|
Steady: 10000, Unsteady: 1000000 |
The maximum allowable value for CFL (applicable to |
|
|
1 |
The maximum allowable relative change of CFL (%) at each pseudo step (applicable to |
|
|
steady: 0.25, Unsteady: 1 |
This factor specifies the level of conservativeness when using |
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
"timeStepping": {
"timeStepSize": "inf",
"maxPhysicalSteps": 1,
"maxPseudoSteps": 10000,
"CFL": {
"initial": 1,
"final": 100,
"rampSteps": 2000
}
}
4.11. slidingInterfaces
(list)#
Deprecated since version release-23.3.2.0: Use of slidingInterfaces is deprecated. We highly recommend using volumeZone->referenceFrame for specifying rotational volume zones. More details on switching from sliding interfaces to volume zones can be found here. The details of slidingInterfaces can be found in previous versions of the documentation.
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 |
---|---|---|
|
REQUIRED |
[3-array(float)] center of the actuator disk |
|
REQUIRED |
[3-array(float)] direction of thrust, it is a unit vector |
|
REQUIRED |
[float] thickness of the actuator disk |
|
REQUIRED |
[list(float)] radius of the sampled locations in grid unit |
|
REQUIRED |
[list(float)] force per area in the axial direction, positive means the axial force follows the same direction as |
|
REQUIRED |
[list(float)] force per area in the circumferential direction, positive means the circumferential force follows the same direction as |
Example
"actuatorDisks":
[
{
"center":[0.0, 0.0, 0.0],
"axisThrust":[0.0,0.0,1.0],
"thickness": 0.01,
"forcePerArea":{
"radius":[0.01, 0.05, 0.1],
"thrust":[0.001, 0.02, 0],
"circumferential":[-0.0001, -0.003, 0]
}
}
]
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 |
---|---|---|
|
"rightHand" |
[string] the rule for rotation direction and thrust direction, “rightHand” or “leftHand”. |
|
REQUIRED |
[3-array(float)] center of the Blade Element Theory (BET) disk |
|
REQUIRED |
[3-array(float)] rotational axis of the BET disk, i.e. (+) thrust axis |
|
REQUIRED |
[int] number of blades to model |
|
REQUIRED |
[float] nondimensional radius of the rotor disk, = \(\text{Radius}_\text{dimensional}/L_{gridUnit}\) |
|
REQUIRED |
[float] nondimensional rotating speed, radians/nondim-unit-time, = \(\frac{\Omega*L_{gridUnit}}{C_\infty}\), where the SI unit of \(\Omega\) is rad/s. |
|
REQUIRED |
[float] nondimensional reference chord used to compute sectional blade loadings |
|
REQUIRED |
[float] Number of nodes used to compute the sectional thrust and torque coefficients \(C_t\) and \(C_q\), defined in BET Loading Output |
|
REQUIRED |
[float] nondimensional thickness of the BET disk |
|
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. |
|
Required if |
[3-array(float)] Orientation of the first blade in the BET model. Must be specified if performing an unsteady BET Line simulation. |
|
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. |
|
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. |
|
REQUIRED |
[list(dict)] A list of dictionaries for every radial location specified in |
|
REQUIRED |
[list(float)] A list of the radial locations in grid units at which \(C_l\) and \(C_d\) are specified in |
|
REQUIRED |
[list(float)] alphas associated with airfoil polars provided in |
|
REQUIRED |
[list(float)] Mach numbers associated with airfoil polars provided in |
|
REQUIRED |
[list(float)] Reynolds numbers associated with the airfoil polars provided in |
|
"inf" |
[float] Nondimensional distance between blade tip and solid bodies to define a tip loss factor. |
Example
"BETDisks": [
{
"rotationDirectionRule": "leftHand",
"centerOfRotation": [0, 0, 0],
"axisOfRotation": [0, 0, 1],
"numberOfBlades": 3,
"radius": 150,
"omega": 0.0046,
"chordRef": 14,
"thickness": 15,
"nLoadingNodes": 20,
"MachNumbers": [0],
"ReynoldsNumbers": [1000000],
"alphas": [
-180,
0,
180
],
"sectionalRadiuses": [
13.5,
120,
150
],
"twists": [
{
"radius": 13.5,
"twist": 40.29936539609504
},
{
"radius": 76.5,
"twist": 16.596477306554306
},
{
"radius": 150,
"twist": 3.97516
}
],
"chords": [
{
"radius": 13.4999999,
"chord": 0
},
{
"radius": 13.5,
"chord": 17.69622361
},
{
"radius": 150.0348189415042,
"chord": 14.004512929656503
}
],
"sectionalPolars": [
{
"liftCoeffs": [
[
[
8.998801703796744e-12,
0.019549999999999998,
-8.998801703796744e-12
]
]
],
"dragCoeffs": [
[
[
0.03000000000109987,
0.007595,
0.03000000000109987
]
]
]
},
{
"liftCoeffs": [
[
[
8.998801703796744e-12,
0.18164999999999998,
-8.998801703796744e-12
]
]
],
"dragCoeffs": [
[
[
0.03000000000109987,
0.0062699999999999995,
0.03000000000109987
]
]
]
},
{
"liftCoeffs": [
[
[
-8.998801703796744e-12,
0.0589,
-8.998801703796744e-12
]
]
],
"dragCoeffs": [
[
[
0.03000000000109987,
0.004765,
0.03000000000109987
]
]
]
}
],
"tipGap": "inf"
}
]
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 |
Additional Options |
Default |
Description |
---|---|---|---|
|
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. |
|
|
REQUIRED |
[3-array(float)] Forchheimer coefficient of the porous media model which determines the scaling of the inertial loss term |
|
|
REQUIRED |
[dict] Dictionary defining the properties of the region of the grid where the porous media model is applied |
|
|
REQUIRED |
[string] Type/Shape of volume zone. Possible values: “box” |
|
|
REQUIRED |
[3-array(float)] For “zoneType”: “box”, it is the center point of the box |
|
|
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. |
|
|
REQUIRED |
[3-array(float)] For “zoneType”: “box”, it is the length of the box in each of the x, y, z directions |
|
|
[0.02*lengths[0], 0.02*lengths[1], 0.02*lengths[2]] |
[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
"porousMedia": [
{
"DarcyCoefficient": [1000000, 0, 0],
"ForchheimerCoefficient": [1, 0, 0],
"volumeZone": {
"zoneType": "box",
"center": [0, 0, 0],
"lengths": [0.2, 0.2, 2],
"axes": [[0, 1, 0], [0, 0, 1]]
}
}
]
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 |
---|---|---|
|
REQUIRED |
[string] Name of the dynamics defined by the user |
|
Empty |
[dict] A list constants that can be used in the expressions. |
|
REQUIRED |
[list(string)] List of the inputs to define the user defined dynamics. Supported inputs are: |
|
Empty |
[list(string)] Names of boundaries to which the input variables belongs. If multiple boundaries are specified then the summation over the boundaries are used as the input. For input variables that already specified the source in the name (like torque_bet_NUM) this entry does not have any effect. |
|
Empty |
[dict] Name of the output variables and the expression for the output variables using input/state variables. Supported output variables are: |
|
Empty |
[list(string)] Name of the target to which the output variables belong to. For example this can be the rotating volume zone name. Only one output target is supported per user defined dynamics instance. |
|
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., |
|
Empty |
[list(string)] List of expressions for updating state variables. The list entries correspond to the update laws for |
Example
"userDefinedDynamics": [
{
"dynamicsName": "alphaController",
"inputVars": [
"CL"
],
"constants": {
"CLTarget": 0.4,
"Kp": 0.2,
"Ki": 0.002
},
"outputVars": {
"alphaAngle": "if (pseudoStep > 500) state[0]; else alphaAngle;"
},
"stateVarsInitialValue": [
"alphaAngle",
"0.0"
],
"updateLaw": [
"if (pseudoStep > 500) state[0] + Kp * (CLTarget - CL) + Ki * state[1]; else state[0];",
"if (pseudoStep > 500) state[1] + (CLTarget - CL); else state[1];"
],
"inputBoundaryPatches": [
"1"
]
}
]
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, point monitors, and aeroacoustics observers. For volumeZones
specified as HeatTransfer
, only output related to the heat equation, i.e. T
and residualHeatSolver
are valid.
Universal nondimensional variables supported by all types of output are presented below:
Name |
Description |
---|---|
|
Coefficient of pressure. \(C_p=(\frac{p-p_\infty}{\frac{1}{2}\rho_\infty{U_{ref}}^2})\) |
|
Gradient of primitive solution |
|
k and omega when using the kOmegaSST model |
|
Mach number |
|
Turbulent viscosity |
|
Ratio between turbulent viscosity and freestream dynamic viscosity, \(\mu_t/{\mu_\infty}\) |
|
Spalart-Almaras variable, nuHat |
|
Outputs rho, u, v, w, p (density, 3 velocities and pressure) |
|
Q criterion |
|
5 components of the N-S residual |
|
Residual for the transition model |
|
Residual for the turbulence model |
|
Entropy |
|
Solution for the N-S equation in conservative form |
|
Solution for the transition model |
|
Solution for the turbulence model |
|
Temperature |
|
Vorticity |
|
Wall distance |
|
Sensor showing where the numericalDissipationFactor has been increased |
|
Residual for the heat equation solver |
Additional nondimensional variables supported by volumeOutput and sliceOutput:
Name |
Description |
---|---|
|
Outputs BET disk related metrics, including variables such as |
|
Same as above but each BETdisk has its own |
Additional nondimensional variables supported by surfaceOutput:
Name |
Description |
---|---|
|
Viscous stress coefficient vector, = \(C_{f_{Vec}}[3]=\frac{\tau_{wall}[3]}{\frac{1}{2}\rho_\infty U_{ref}^2}\) |
|
Magnitude of |
|
Magnitude of |
|
Magnitude of |
|
Heat flux computed from nondimensional quantities. Multiply by \(\rho_\infty C_\infty^3\) to find the dimensional values. |
|
Wall normal direction (may not be a unit vector). Note: This variable does not support time average. |
|
\(\frac{\tau_{wall}[3]-(p-p_\infty)*normal[3]}{\rho_\infty C_\infty^2}\), where the \(normal[3]\) is the unit normal vector pointing from solid to fluid |
|
Velocity in rotating frame |
|
non-dimensional wall distance, \(y^+\) |
|
(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. |
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 outputFields
syntax as described below.
4.16.1. volumeOutput
#
OPTIONAL
Options |
Default |
Description |
---|---|---|
|
-1 |
[int] Frequency (in number of physical time steps) at which volume output is saved. -1 is at end of simulation. |
|
0 |
[int] Offset (in number of physical time steps) at which volume output animation is started. 0 is at beginning of simulation. |
|
FALSE |
[boolean] Enables computation of time-averaged quantities |
|
-1 |
[int] Frequency (in number of physical time steps) at which time averaged volume output is saved. -1 is at end of simulation. |
|
0 |
[int] Offset (in number of physical time steps) at which time averaged volume output animation is started. 0 is at beginning of simulation. |
|
0 |
[int] Physical time step to start calculating averaging |
|
[] |
[list(string)] List of output variables. Including universal output variables, and variables specific to volumeOutput. |
|
"paraview" |
[string] |
Example
"volumeOutput": {
"outputFormat": "tecplot",
"animationFrequency": -1,
"animationFrequencyOffset": 0,
"animationFrequencyTimeAverage": -1,
"animationFrequencyTimeAverageOffset": 0,
"computeTimeAverages": false,
"startAverageIntegrationStep": 0,
"outputFields": ["primitiveVars", "betMetrics", "qcriterion"]
}
4.16.2. surfaceOutput
#
OPTIONAL
Options |
Default |
Description |
---|---|---|
|
-1 |
[int] Frequency (in number of physical time steps) at which surface output is saved. -1 is at end of simulation. |
|
0 |
[int] Offset (in number of physical time steps) at which surface output animation is started. 0 is at beginning of simulation. |
|
"paraview" |
[string] |
|
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. |
|
FALSE |
[boolean] Enables computation of time-averaged quantities |
|
-1 |
[int] Frequency (in number of physical time steps) at which time averaged surface output is saved. -1 is at end of simulation. |
|
0 |
[int] Offset (in number of physical time steps) at which time averaged surface output animation is started. 0 is at beginning of simulation. |
|
0 |
[int] Physical time step to start calculating averaging |
|
[] |
[list(string)] List of output variables. Including universal output variables and variables specific to surfaceOutput. |
|
{} |
[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
"surfaceOutput": {
"animationFrequency": -1,
"animationFrequencyOffset": 0,
"animationFrequencyTimeAverage": -1,
"animationFrequencyTimeAverageOffset": 0,
"computeTimeAverages": false,
"outputFormat": "paraview",
"startAverageIntegrationStep": 0,
"writeSingleFile": false,
"outputFields": [ "yPlus" ],
"surfaces": {
"freestream": {
"outputFields": [ "Cp", "Mach" ]
# Will output "Cp", "Mach", "yPlus"
},
"symmetry": {
"outputFields": [ "T", "heatFlux" ]
# Will output "T", "heatFlux", "yPlus"
},
"wing": {
"outputFields": [ "CfVec" ]
# Will output "CfVec", "yPlus"
}
}
}
4.16.3. sliceOutput
#
OPTIONAL
Options |
Default |
Description |
---|---|---|
|
-1 |
[int] Frequency (in number of physical time steps) at which slice output is saved. -1 is at end of simulation. |
|
0 |
[int] Offset (in number of physical time steps) at which slice output animation is started. 0 is at beginning of simulation. |
|
"paraview" |
[string] |
|
[] |
[list(string)] List of output variables. Including universal output variables and variables specific to sliceOutput. |
|
{} |
[dict] Dictionary of output slices. The name of the slice is used as the key. See example below. |
|
[] |
[3-array(float)] Normal direction of the slice (within slices dictionary) |
|
[] |
[3-array(float)] Coordinates of a point on the slice (within slices dictionary) |
Example
"sliceOutput": {
"animationFrequency": -1,
"animationFrequencyOffset": 0,
"outputFormat": "tecplot",
"outputFields": [ "Cp" ],
"slices": {
"x0": {
"sliceNormal": [ 1, 0, 0 ],
"sliceOrigin": [ 0, 0, 0 ],
"outputFields": [ "Mach" ]
# Will output "Mach", "Cp"
},
"y1": {
"sliceNormal": [ 0, 1, 0 ],
"sliceOrigin": [ 2, 1, 0 ],
"outputFields": [ "T" ]
# Will output "T", "Cp"
}
}
}
4.16.4. isoSurfaceOutput
#
OPTIONAL
Options |
Additional Options |
Default |
Description |
---|---|---|---|
|
"paraview" |
[string] |
|
|
{} |
[dict] Dictionary of iso-surfaces. The key of the dictionary is the name of the iso-surface file to be written. |
|
|
[string] Isosurface field variable to be written. One of |
||
|
[float] The iso-value of |
||
|
[list(string)] List of output variables, see universal output variables |
||
|
-1 |
[int] Frequency (in number of physical time steps) at which volume output is saved. -1 is at end of simulation. |
|
|
0 |
[int] Offset (in number of physical time steps) at which volume output animation is started. 0 is at beginning of simulation. |
Example
"isoSurfaceOutput": {
"outputFormat": "tecplot",
"animationFrequency": 10,
"isoSurfaces": {
"q_1e-3": {
"surfaceField": "qcriterion",
"surfaceFieldMagnitude": 1e-3,
"outputFields": [ "Cp", "Mach" ]
}
}
},
4.16.5. monitorOutput
#
OPTIONAL
Options |
Additional Options |
Default |
Description |
---|---|---|---|
|
{} |
[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. |
|
|
[list(3-array(float))] A list of coordinates of the monitor points belonging to this monitor group |
||
|
[string] The type of monitor. Currently only |
||
|
[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
"monitorOutput": {
"monitors": {
"Group1": {
"type": "probe",
"monitorLocations": [
[ 0.12, 0.34, 0.262 ],
[ 3.124e-1, 0.01, 0.03 ]
],
"outputFields": [ "primitiveVars", "vorticity", "T", "s", "Cp", "mut" ]
}
}
}
4.16.6. aeroacousticOutput
#
The aeroacoustic solver is activated by having the :code`aeroacousticOutput` section in the input JSON file.
OPTIONAL
Options |
Additional Options |
Default |
Description |
---|---|---|---|
|
[] |
[list(3-array(float))] List of observer locations at which time history of acoustic pressure signal is stored in aeroacoustic output file. The observer locations can be outside the simulation domain, but cannot be on or inside the solid surfaces of the simulation domain. |
Example
"aeroacousticOutput": {
"observers": [
[0, 1, 0],
[1, 0, 0]
]
}