The DIABLO namelist is the primary source of parameters used in the nonlinear solver. Most of these parameters can be used on their default settings. However, there are a few essential lines that need to be added to any input file:
  1. diablo%istream and diablo%iground need to be set appropriately depending on the mesh (see below for description). Most of our meshes are set up consistently with the default values, but there may be exceptions, expecially for 2D cases.
  2. The dissipation parameters need to be set up appropriately depending on the case. If you are sure that your case is subsonic, consider setting the dissipation coefficients to the following:
    DIABLO% P_SWITCH = .false.,
    DIABLO% DIS2(1) = 0.0d0, DIABLO% DIS4(1) = 4.d-2,
    DIABLO% DIS2(2) = 0.0d0, DIABLO% DIS4(2) = 4.d-2,
    DIABLO% DIS2(3) = 0.0d0, DIABLO% DIS4(3) = 4.d-2,
    DIABLO% Vl = 0.025d0, DIABLO% Vn = 0.025d0,
    SAT_%Vl = 0.025d0, SAT_%Vn = 0.025d0
    Otherwise, if you are running anything that might have a shock in it:
    DIABLO% P_SWITCH = .true.,
    DIABLO% DIS2(1) = 1.0d0, DIABLO% DIS4(1) = 2.d-2,
    DIABLO% DIS2(2) = 1.0d0, DIABLO% DIS4(2) = 2.d-2,
    DIABLO% DIS2(3) = 1.0d0, DIABLO% DIS4(3) = 2.d-2,
    DIABLO% Vl = 0.025d0, DIABLO% Vn = 0.25d0,
    SAT_%Vl = 0.025d0, SAT_%Vn = 0.25d0
  3. diablo%dt_min needs to be set to the same value as diablo%a.
  4. diablo%nk_strtup should be set to 2.
  5. We typically use diablo%nk_time = 7, which is different from the default.
  6. Recommended that diablo%updat_frq be set between 1 and 3 (default is 5).

Turbulent flow solves
  1. Set diablo%viscous = .true., diablo%turbulnt = .true.
  2. Use smaller diablo%a, diablo%b, diablo%dt_min, and diablo%drop_tol. Recommend something like:
    diablo%a = 0.001, diablo%b =1.3, diablo%dt_min = 0.001, diablo%dtop_tol = 1.d-4.
  3. Set diablo%qcr = .true. for regions with high recirculation, for example cases with high AoA. Turning this on for other cases doesn't hurt accuracy, but will increase the CPU time.
  4. Generally should use the most accurate off-wall distance calculation diablo%d_type for analysis, though this is not currently (June 18, 2014) supported for optimization since it is not linearized. Also note that if the file mindist.dat is present then the value in this file will be used to get the off-wall distance, possibly to use the same value all the time in optimization so that it does not need to be linearized. However, if you are setting up a new turbulent case by simply copying an old one, make sure to delete this file since it will probably have the wrong off-wall distance for your case.

Click here to return to main Jetstream Input Parameters page.



Basic Setup



DIABLO%istream

Description: Coordinate direction of streamwise flow.
Parameter Type: Integer
Range of Acceptable values: [1,3] (inclusive interval)
Default Value: 1


DIABLO%iground

Description: Coordinate direction of verical direction.
Parameter Type: Integer
Range of Acceptable values: [1,3]
Default Value: 3


DIABLO%restart

Description: Is this a restart?
Parameter Type: Logical
Default Value: .false.
User Notes: Requires a results.q file to be present from a previous flow solve on th same mesh. Also, set diablo%use_frstrm to .false..


DIABLO%use_frstrm

Description: Use freestream to initialize the flow field?
Parameter Type: Logical
Default Value: .false.
User Notes: Used with diablo%restart.



Non-Linear Solver Options



DIABLO%nk_global

Description: Globalization strategy (for values 0, -1, and -2, refer to the HOM input parameters for homotopy continuation options)
Parameter Type: Integer
Range of Acceptable values: [-2, 4]
Default Value: 1
User Notes:

-2 --> Convex/global homotopy continuation (explicit monolithic algorithm)
-1 --> Convex/global homotopy continuation (monolithic algorithm)
0 --> Convex/global homotopy continuation (predictor-corrector algorithm)
1 --> Pseudo-transient
2 --> SAT continuation
3 --> Dissipation continuation
4 --> Source term continuation


DIABLO%nk_strtup

Description: Type of startup for pseudo-transient
Parameter Type: Integer
Range of Acceptable values: [1,2]
Default Value: 1
User Notes:
1 --> Inexact Newton startup
2 --> Approximate Newton (globalization phase) startup
Note that the default value will actually skip the globalization phase and put you directly into Newton's method.


DIABLO%rel_tol

Description: Relative tolerance for which to consider the flow solve converged.
Parameter Type: Real
Range of Acceptable values: [1.d-8.1.d-14]
Default Value: 1.d-10
User Notes: diablo%nk_global > 0 only. Usually, 1.d-10 to 1.d-12 for Euler and 1.d-12 to 1.d-14 for RANS. Use values in the smaller end for optimization cases.


DIABLO%abs_tol

Description: Absolute residual norm for which to consider the flow solve converged.
Parameter Type: Real
Range of Acceptable values: [1.d-9,1.d-15]
Default Value: 1
User Notes: diablo%nk_global > 0 only. Usually, 1.d-11 to 1.d-13 for Euler and 1.d-13 to 1.d-15 for RANS. Use values in the smaller end for optimization cases.


DIABLO%nk_its

Description: Maximum number of Newton-Krylov Iterations
Parameter Type: Integer
Range of Acceptable values: [1, large]
Default Value: 20


DIABLO%updat_frq

Description: The number of iterations between preconditioner, ilu, and time step updates. Startup phase only.
Parameter Type: Integer
Range of Acceptable values: [1, large]
Default Value: 5
User Notes: Default value is not recommended. Generally, we don't go higher than 3. If in doubt, set it to 1.


DIABLO%strtup_ls

Description: Line search method for startup phase.
Parameter Type: PTCLineSearch
Default Values:
diablo% strtup_ls% on = .false.
diablo% strtup_ls% steady = .true.
diablo% strtup_ls% dt_red_fac(1) = 7.5d-1
diablo% strtup_ls% dt_red_fac(2) = 7.5d-1
diablo% strtup_ls% eta_in = 1.d0
diablo% strtup_ls% eta_min = 7.5d-1
diablo% strtup_ls% damp = 0.9d0
diablo% strtup_ls% rfac_tol = 1.d0


DIABLO%newton_ls

Description: Line search method for startup phase.
Parameter Type: LineSearch
Default Values:
diablo% newton_ls% on = .false.
diablo% newton_ls% eta_in = 1.d0
diablo% newton_ls% eta_min = 7.5d-1
diablo% newton_ls% damp = 0.9d0
diablo% newton_ls% rfac_tol = 1.d0


DIABLO%pcality

Description: Physicality constraint options. This applies additional damping if the nonlinear solution update decreases the physical flow variable too much.
Parameter Type: PCality
Default Values:
diablo% pcality% on = .false.
diablo% pcality% maxits = 5
diablo% pcality% damp = 0.9d0
diablo% pcality% rho_mafd = 0.1d0
diablo% pcality% e_mafd = 0.1d0



Dissipation



DIABLO%idmodel

Description: Select artificial dissipation model to use in flow solver.
Parameter Type: Integer
Range of Acceptable values: 1,2
Default Value: 1
User Notes:
1 = Scalar dissipation
2 = Matrix dissipation
Other options present for unsteady flow solves. Consult P. Boom for details.


DIABLO%dis2

Description: The three (j,k,m) components of the 2nd-difference (1st-order) dissipation coefficients
Parameter Type: real(3)
Range of Acceptable values: [0, ~2)
Default Value: 1.d0
User Notes: This should be set to 0 if the pressure switch is turned off. Otherwise, set to 1 or higher if more dissipation is desired.


DIABLO%dis4

Description: The three (j,k,m) components of the 4th-difference (3rd order) dissipation coefficients
Parameter Type: real(3)
Range of Acceptable values: (0,~0.1)
Default Value: 2.d-2
User Notes: Usually we reduce the value when turning the pressure switch on.


DIABLO%prec_dlf

Description: Preconditioner lumping factor for the dissipation coefficients. This is
Parameter Type: real
Range of Acceptable values: [4,15]
Default Value: 6
User Notes: See Sydney Dias' thesis, where he performed some investigation of this parameter for the Euler equations (I think he used about 7-10?). In Michal Osusky's thesis, he found that 10-12 works best for RANS cases.


DIABLO%p_switch

Description: Controls usage of the pressure switch to activate 2nd difference artificial dissipation.
Parameter Type: Logical
Default Value: false
User Notes: This is used for shock capturing, and is generally accompanied by several other parameter changes. Ssee the notes at the top of this wiki page.



Pseudo-Transient (PTC)



DIABLO%nk_time

Description: Sets how the reference time step is calculated
Parameter Type: Integer
Range of Acceptable values: {[0, 11], 17}
Default Value: 4
User Notes:
*Some of these entries need to be edited by someone who knows more about them.
0 --> Infinite time step (full NK)
1 -->
2 -->
3 -->
4 -->
5 -->
6 -->
7 --> Update formula from Jason Hicken's thesis (This is what we normally use). The formula is AB^n, where n is the iteration coutn, but is only updated when the preconditioner is updated (see diablo%ilu_updat_frq).
8 --> Special case used for flow around sphere
9 --> dt = 1E10
10 --> Time step selection from David Kam' s thesis
11 --> I don't know, something about turbulence
17 --> Special case that can go back to the approximate Newton phase if needed in some RANS cases.


DIABLO%dt_min

Description: Minimum reference time step size. Usually, set to the same value as diablo%a.
Parameter Type: Real
Range of Acceptable values: See diablo%a below.
Default Value: 1.d3
User Notes: If not changed from the default value, this will cause major convergence problems.


DIABLO%a

Description: The value of A used in diablo%nk_time = 7. This determines the initial time step. Make sure to also set dt_min to this value.
Parameter Type: Real
Range of Acceptable values: Usually between 0.5 and 0.01 for Euler, 0.01 and 0.0001 for RANS.
Default Value: 0.5
User Notes: For RANS cases, the value should be adjusted based on the off-wall spacing, where smaller values are typically used for smaller off-wall spacing.


DIABLO%b

Description: The value of B used in diablo%nk_time = 7. This affects how aggressively the time step is updated. This is also used with the parameter update in SAT-based continuation (nk_global=2).
Parameter Type: Real
Range of Acceptable values: Usually between 1.2 and 1.8 for Euler, 1.1 and 1.3 for RANS.
Default Value: 1.2
User Notes: For RANS cases, the value should be adjusted based on the off-wall spacing, where smaller values are typically used for smaller off-wall spacing.


DIABLO%alpha

Description: Parameter used in the time term in the Newton phase.
Parameter Type: Real
Range of Acceptable values: (0,large)
Default Value: 1000
User Notes: There is generally not much reason to change this.


DIABLO%beta

Description: Parameter used in the time term in the Newton phase. This is also use for the parameter update for DBC (nk_global = 3) according to the formula lambda = min(diablo% lambda_drop*lambda, diablo% lambda*resid_dropdiablo% beta).
Parameter Type: Real
Range of Acceptable values: (0, large)
Default Value: 1
User Notes: There is generally not much reason to change this for PTC. For DBC, try diablo% beta = 2.



Old Homotopy (diablo% nk_global > 1)



DIABLO%pc_its

Description: Maximum number of predictor-corrector iterations
Parameter Type: Integer
Range of Acceptable values: [2, large]
Default Value: 20


DIABLO%lambda

Description: Initial value of the continuation parameter lambda.
Parameter Type: Real
Range of Acceptable values: (0,large)
Default Value: 1


DIABLO%lambda_drop

Description: Aggressiveness with which to update lambda. Smaller values are more aggressive.
Parameter Type: Real
Range of Acceptable values: (0,lambda)
Default Value: 0.5



Preconditioner Options



DIABLO%ilu_opt

Description: ILU fill methodology.
Parameter Type: Character
Range of Acceptable values: 'iluk', 'ilut'
Default Value: 'iluk'


DIABLO%strtup_ilut

Description: Options for ILUT in the startup phase. Only active if diablo%ilu_opt = 'ilut'.
Parameter Type: ilut_opts
Default Values:
diablo% strtup_ilut% droptol = 1.d-4
diablo% strtup_ilut% adpfactor = 0.d0
diablo% strtup_ilut% lev_fil = 10
diablo% strtup_ilut% bnorm = 2
diablo% strtup_ilut% pivoting = .false.
diablo% strtup_ilut% diagcomp = .false.
diablo% strtup_ilut% rowave = .false.


DIABLO%newton_ilut

Description: Options for ILUT in the Newton phase. Only active if diablo%ilu_opt = 'ilut'.
Parameter Type: ilut_opts
Default Values:
diablo% newton_ilut% droptol = 1.d-4
diablo% newton_ilut% adpfactor = 0.d0
diablo% newton_ilut% lev_fil = 10
diablo% newton_ilut% bnorm = 2
diablo% newton_ilut% pivoting = .false.
diablo% newton_ilut% diagcomp = .false.
diablo% newton_ilut% rowave = .false.


DIABLO%lev_fil

Description: Fill level used for the preconditioner. Only active if diablo%ilu_opt = 'iluk'.
Parameter Type: Integer
Range of Acceptable values: [1, large]
Default Value: 1
User Notes:
Using higher fill results in larger ILU factorization time and memory cost but faster linear solver time. Here are some parameters that were found to be efficient:
  • Euler flow: 1 or 2 (Dias)
  • Laminar: 2 or 3 (Osusky)
  • RANS: 3 or 4 (Osusky)
It has also been found that finer grids benefit more from this higher fill, especially for RANS flow. This is most likely due to the migration of the eigenvalues towards the imaginary axis as the mesh is refined, reducing the matrix definiteness. As definiteness decreases, so does the relative size of the initial ILU(p) fill elements, making low fill levels less effective in such cases.


DIABLO%app_lev_fil

Description: Fill level for approximate Newton phase. Only active if diablo%ilu_opt = 'iluk'.
Parameter Type: Integer
Range of Acceptable values: [1, 5]
Default Value: 1
User Notes:
The linear solver is better-conditioned during startup and generally does not require as high fill as in the inexact Newton phase.
  • Euler flow: 0 or 1 (Dias)
  • Laminar: 2 (Osusky)
  • RANS: 2 or 3 (Osusky)


DIABLO%updat_frq

Description: Nonlinear iterations between updates of the preconditioner and time step during the approximate Newton phase.
Parameter Type: Integer
Range of Acceptable values: [1,5]
Default Value: 5
User Notes: Preconditioner is updated every iteration during inexact Newton phase


DIABLO%schur_its

Description: Maximum number of approximate Schur iterations.
Parameter Type: Integer
Range of Acceptable values: [1, large]
Default Value: 5


DIABLO%schur_tol

Description: Tolerance used by the Schur complement method.
Parameter Type: real
Range of Acceptable values: (0,1)
Default Value: 1.d-2



Linear Solver Options



DIABLO%strtup

Description: Startup (approximate Newton phase) parameters for the linear solver.
Parameter Type: LinSolvOpts
Default Values:
diablo% strtup% solver = 'fgmrs'
diablo% strtup% matvec = 'apprx'
diablo% strtup% prec = 'schur'
diablo% strtup% krylv_size = 40
diablo% strtup% krylv_max = 40
diablo% strtup% gcrot_k = 1
diablo% strtup% sol_init = .false.
diablo% strtup% rel_lin_tol = 1.d-1


DIABLO%newton

Description: Startup (approximate Newton phase) parameters for the linear solver.
Parameter Type: LinSolvOpts
Default Values:
diablo% newton% solver = 'fgmrs'
diablo% newton% matvec = 'frcht'
diablo% newton% prec = 'schur'
diablo% newton% krylv_size = 40
diablo% newton% krylv_max = 40
diablo% newton% gcrot_k = 1
diablo% newton% sol_init = .false.
diablo% newton% rel_lin_tol = 1.d-2


DIABLO%row_norm

Description: Normalize all rows before sending to linear solver? Note that this will replace other row scaling.
Parameter Type: Logical
Default Value: .false.
User Notes:
The result of this scaling is that the linear solver will be better conditioned but the nonlinear updates will be less effective. When turning this on, it is best to also reduce diablo%b (since more time steps will need to be taken) and it may also be more efficient to reduce the preconditioner fill level. This has an even greater effect for RANS cases since it completely changes the order of magnitude of the residual; the tolerances to use (especially diablo%drop_tol) should be closer to Euler parameters when using this scaling for RANS.


DIABLO%col_norm

Description: Normalize all columns before sending to linear solver? Note that this will replace other column scaling. If diablo%row_norm is also on, the row normalization will be applied before the column scaling vector is calculated so that only the columns are "truly" normalized.
Parameter Type: Logical
Default Value: .false.
User Notes:
Column scaling is normally only applied for RANS equations. It seems to have very little effect for Euler solves.


DIABLO%linsolve_info

Description: Outputs additional info during linear solve.
Parameter Type: Logical
Default Value: .true.


Viscous (Laminar/Turbulent)



DIABLO%viscous

Description: This toggles the viscous terms.
Parameter Type: Logical
Default Value: .false.
User Notes: Without turning on the diablo%turbulnt or diablo%unsteady flags, this will result in a laminar flow solve. For laminar flow, Reynolds numbers higher than about 1.d3 will be pretty unstable and convergence should not be expected.


DIABLO%viscross

Description: Turns on the cross-derivative terms for the viscous terms.
Parameter Type: Logical
Default Value: .false.
User Notes: Reduces cost and accuracy.


DIABLO%visc_true_ave

Description: Determines whether true averaging is used for the viscous terms
Parameter Type: Logical
Default Value: .true.


DIABLO%constVis

Description: Sutherland's law linearization
Parameter Type: Logical
Default Value: .true.


DIABLO%visc_srf_sat

Description: Selects which type of viscous surface SAT to use.
Parameter Type: Integer
Range of Acceptable values: [1,5]
Default Value: 1
User Notes:
1 --> Zero temperature gradient
2 --> Zero pressure and density graident
3 --> Isothermal temperature based on freestream
4 --> Modification of case 2
5 --> Alternate formulation of adiabatic condition, where the temperature gradient is enforced through a flux SAT


DIABLO%visc_bnd2

Description: Turns on the second order SAT boundary stencil for the viscous terms
Parameter Type: Logical
Default Value: .true.


DIABLO%ff_mu_friction

Description: Use farfield viscosity in friction force calculation?
Parameter Type: Logical
Default Value: .true.



RANS

See Michal Osusky's thesis for more information on our RANS implementation


DIABLO%turbulnt

Description: Turns on RANS. Note that DIABLO% VISCOUS has to be true as well.
Parameter Type: Logical
Default Value: .false.
User Notes: Make sure diablo%viscous is also .true.


DIABLO%t_nut_ff

Description: Farfield value of the turbulent variable nu_t.
Parameter Type: real
Default Value: 3.d0


DIABLO%sa_jscale

Description: The main effect of turning this on is that a factor of J^-1 is included in the Jacobian in the SA model inside the derivative similar to the mean flow equations in conservative form. Otherwise, the J^-1 factor is still applied after the residual is calculated. However, there are other effects too, since the ordering of operations carried out in the inherent scaling and auto-scaling are effected, generally resulting in poorer performance for diablo%nk_global>0 cases. This also results in slight discrepancy (usually <0.1%) in final CL and CD values.
Parameter Type: Logical
Default Value: .false.
User notes:
Recommended value for diablo%nk_global >0 is .false.
Currently (Aug 2013), diablo%nk_global = 0 cases wiil automatically set this value to .true.. The next merge will support both values, and performance seems to not be significantly affected by the value.


DIABLO%trip_type

Description: Transition enforcement for SA turbulence model.
Parameter Type: Integer
Default Value: 0


DIABLO%sa_diss

Description: Type of dissipation to use for the SA turbulence model
Parameter Type: Integer
Default Value: 0


DIABLO%t_trip1

Description: Turn on the ft1 trip term in the SA model?
Parameter Type: Logical
Default Value: .false.
User notes: Requires a special input file called grid.trip. See the appendix of Michal Osusky's thesis for an example.


DIABLO%t_trip2

Description: Turn on the ft2 trip term in the SA model?
Parameter Type: Logical
Default Value: .true.


DIABLO%qcr

Description: Turn on QCR correction for RANS flow solves
Parameter Type: Logical
Default Value: .false.


DIABLO%d_type

Description: Off-wall distance calculation used in the product/destruction terms of the SA model
Parameter Type: Integer
Default Value: 0
0 --> Uses distance to nearest surface node
1 --> Uses normal distance to the surface
2 --> More accurate (but more expensive) version of 1
See MO's DPW5 paper to see the effects.


DIABLO%t_output

Description: Output turbulent data? This will produce an additional results.tinfo file that contains additional turbulent data, such as trimming locations.
Parameter Type: Logical
Default Value: .false.



Unsteady



DIABLO%unsteady

Description: This flag toggles unsteady (time-accurate) flow solves.
Parameter Type: Logical
Default Value: .false.



Obsolete



DIABLO%gmres_its_min


DIABLO%nk_pfrz


DIABLO%nk_its_min

DIABLO%col_scale