SOLVER+Namelist+Input+Parameters

toc 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: > 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
 * 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:
 * 1) diablo%dt_min needs to be set to the same value as diablo%a.
 * 2) diablo%nk_strtup should be set to 2.
 * 3) We typically use diablo%nk_time = 7, which is different from the default.
 * 4) Recommended that diablo%updat_frq be set between 1 and 3 (default is 5).

Turbulent flow solves > diablo%a = 0.001, diablo%b =1.3, diablo%dt_min = 0.001, diablo%dtop_tol = 1.d-4.
 * 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:
 * 1) 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.
 * 2) 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
//**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..
 * //Description://** Is this a restart?
 * //Parameter Type://** Logical
 * //Default Value://** .false.

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

=**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
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.
 * //Description://** Type of startup for pseudo-transient
 * //Parameter Type://** Integer
 * //Range of Acceptable values://** [1,2]
 * //Default Value://** 1
 * //User Notes://**

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
//**User Notes:**// Default value is not recommended. Generally, we don't go higher than 3. If in doubt, set it to 1.
 * //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

DIABLO%strtup_ls
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
 * //Description://** Line search method for startup phase.
 * //Parameter Type://** PTCLineSearch
 * //Default Values://**

DIABLO%newton_ls
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
 * //Description://** Line search method for startup phase.
 * //Parameter Type://** LineSearch
 * //Default Values://**

DIABLO%pcality
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
 * //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://**

=**Dissipation**=

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

DIABLO%dis2
//**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.
 * //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

DIABLO%dis4
//**User Notes:**// Usually we reduce the value when turning the pressure switch on.
 * //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

DIABLO%prec_dlf
//**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.
 * //Description://** Preconditioner lumping factor for the dissipation coefficients. This is
 * //Parameter Type://** real
 * //Range of Acceptable values://** [4,15]
 * //Default Value://** 6

DIABLO%p_switch
//**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.
 * //Description://** Controls usage of the pressure switch to activate 2nd difference artificial dissipation.
 * //Parameter Type://** Logical
 * //Default Value://** false

=**Pseudo-Transient (PTC)**=

DIABLO%nk_time
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.
 * //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.

DIABLO%dt_min
//**User Notes:**// If not changed from the default value, this will cause major convergence problems.
 * //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

DIABLO%a
//**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.
 * //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

DIABLO%b
//**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.
 * //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

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

DIABLO%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.
 * //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_drop**diablo% beta).**

=**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
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.
 * //Description://** Options for ILUT in the startup phase. Only active if diablo%ilu_opt = 'ilut'.
 * //Parameter Type://** ilut_opts
 * //Default Values://**

DIABLO%newton_ilut
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.
 * //Description://** Options for ILUT in the Newton phase. Only active if diablo%ilu_opt = 'ilut'.
 * //Parameter Type://** ilut_opts
 * //Default Values://**

DIABLO%lev_fil
//**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: 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.
 * //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
 * Euler flow: 1 or 2 (Dias)
 * Laminar: 2 or 3 (Osusky)
 * RANS: 3 or 4 (Osusky)

DIABLO%app_lev_fil
//**User Notes:**// The linear solver is better-conditioned during startup and generally does not require as high fill as in the inexact Newton phase.
 * //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
 * 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
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
 * //Description://** Startup (approximate Newton phase) parameters for the linear solver.
 * //Parameter Type://** LinSolvOpts
 * //Default Values://**

DIABLO%newton
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
 * //Description://** Startup (approximate Newton phase) parameters for the linear solver.
 * //Parameter Type://** LinSolvOpts
 * //Default Values://**

DIABLO%row_norm
//**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.
 * //Description://** Normalize all rows before sending to linear solver? Note that this will replace other row scaling.
 * //Parameter Type://** Logical
 * //Default Value://** .false.

DIABLO%col_norm
//**User Notes:**// Column scaling is normally only applied for RANS equations. It seems to have very little effect for Euler solves.
 * //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.

DIABLO%linsolve_info

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

=**Viscous (Laminar/Turbulent)**=

** DIABLO%viscous **
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.
 * //Description://** This toggles the viscous terms.
 * //Parameter Type://** Logical
 * //Default Value://** .false.

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

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
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
 * //Description://** Selects which type of viscous surface SAT to use.
 * //Parameter Type://** Integer
 * //Range of Acceptable values://** [1,5]
 * //Default Value://** 1

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
//**User Notes:**// Make sure diablo%viscous is also .true.
 * //Description://** Turns on RANS. Note that DIABLO% VISCOUS has to be true as well.
 * //Parameter Type://** Logical
 * //Default Value://** .false.

DIABLO%t_nut_ff

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

DIABLO%sa_jscale
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.
 * //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:**

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
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.
 * //Description://** Off-wall distance calculation used in the product/destruction terms of the SA model
 * //Parameter Type://** Integer
 * //Default Value://** 0

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%nk_pfrz

 * DIABLO%nk_its_min **


 * DIABLO%col_scale **