In this group parameters to control the time step restrictions can be set.
They are important because decide about performance and stability of COBOLD. They should be tested and adjusted for a simulation of a new type of object. But all the dimensionless parameters can stay unchanged for a group of similar simulations. Only the parameters with an explicit time dimension should be checked in all cases (they scale with characteristic timescales and depend particularly on gravity).
real dtime_start f=E15.8 b=4 n='Start time step' u=s 1.0E+03A value
0.0means that the original value from the start model is used.
real dtime_min f=E15.8 b=4 n='Minimum time step' u=s & c0='dtime_min=0.0 => no restriction' 1.0This value is used even if restrictions from the Courant condition try to enforce a smaller value. A fixed time step can be prescribed by setting
dtime_maxto some positive value. A value
dtime_min0.0 means that this time step restriction is completely ignored, which is the case that should usually be chosen.
real dtime_max f=E15.8 b=4 n='Maximum time step' u=s & c0='dtime_max=0.0 => no restriction' 1.0E+05A fixed time step can be prescribed by setting
dtime_maxto some positive value. A value
dtime_max0.0 means that this time step restriction is completely ignored, which is the case that should usually be chosen.
real dtime_min_stop f=E15.8 b=4 n='Minimum time step' u=s & c0='dtime_min_stop=0.0 => no restriction' & c1='dtime < dtime_min_stop => program stop' 1.0If the actual time step falls below this value, the simulation finishes gracefully. This values has to specified as absolute time and has to be chosen carefully for each individual model (or each group of models). This time step restriction can be switched off by setting
0.0. But in general, one should keep it activated and try to find a proper positive value.
real dtime_incmax f=E15.8 b=4 n='Maximum time step increment factor' u=1 & c0='dtime_max<1.0 => no restriction' c1='typically 1.1' 1.2This value specifies the maximum factor by which the time step can be increased from step to step (even if the new Courant condition etc. would allow more). A value value
0.0deactivates this restriction.
real c_courant f=E15.8 b=4 n='HD Courant factor' u=1 & c0='range: 0.0 < C_Courant <= 1.0, typically: 0.5' 0.5From the minimum cell crossing time of a partial wave and this factor a recommendation for the next time step is computed. A value of
1.0is the upper limit which guarantees stability for some simple linear test problems. Values around
0.5are recommended for fully non-linear simulations.
real c_courantmax f=E15.8 b=4 n='maximum HD Courant factor' u=1 & c0='range: C_Courant < C_Courantmax <= 1.0, typically: 0.9' 0.8From the minimum cell crossing time of a partial wave and this factor an upper limit for the current time step is computed. If this limit is exceeded the computation is interrupted and resumed with a smaller time step (based on
c_courant). Usually this parameter should be restricted by
1.0. A value around
0.8appears to be a good choice.
real c_maxeichange f=E15.8 b=4 n='maximum hydro energy change' u=1 & c0='range: 0.1 - 1.0, typically 0.5, off:0.0' 0.5The default is
0.9. Nevertheless, since the Roe solver is constructed to handle shocks and rapid changes in density and energy, this check is usually not needed. It can be switched off by setting
real c_radcourant f=E15.8 b=4 n='RAD Courant factor' u=1 & c0='range: 0.0 < C_radCourant, typically: 1.0' 2.5If the estimate of the timescale would be correct a value of
2.0would cause the temperature fluctuation on the shortest scale to flip its sign, setting the absolute stability limit. A value of
1.0would lead to a damping of theses fluctuations within one time step. But in practice, even higher values (for example
2.5) show a reasonable behavior. This might be due to the effect that the shortest radiative timescale only occurs at single points (or in 2D layers) but that already the immediate neighbors have longer timescales and can damp the ``most sensitive points''. Based on
real c_radcourantthe recommended typical radiative time step is computed.
real c_radcourantmax f=E15.8 b=4 n='maximum RAD Courant factor' u=1 & c0='range: C_radCourant <= C_radCourantmax, typically: 2.0' 3.0This value will typically be somewhat larger than
real c_radmaxeichange f=E15.8 b=4 n='maximum radiative energy change' & u=1 c0='range: 0.01 - 1.0' 0.25The default is
0.5. Values between
0.5seem reasonable. A value
0.0deactivates this time step check. However, the check of the radiative energy change should usually be performed. A way to maximize the radiative time step (and therefore the performance of the entire code) can be to first set
real c_radmaxeichangeto a proper value (say
real c_radcourantmax) are adjusted (by trial and error) in a way that the radiative time step is almost always restricted by the ``Courant'' condition and only sometimes in extreme cases by the maximum energy change restriction. The computed output intensity should be checked for the size of its fluctuations due to a possibly too large value of
LHDradmodule only the radiative time step restriction due to energy changes can be relaxed further in the optically thin by specifying e.g.
real c_radthintimefac f=E15.8 b=4 & n='time scale reduction in optically thin' u=1 & c0='range: 0.1 - 1.0, typically: 0.5' 0.60A value
0.0switches off this relaxation.
real c_viscourant f=E15.8 b=4 n='viscous Courant factor' u=1 & c0='range: 0.0 < C_visCourant, typically: 0.5-1.0, better 0.25' 0.5As the corresponding viscous timescale is typically longer than the radiative one (and even the Courant timescale from the Roe hydrodynamics routines) this factor is often irrelevant. The absolute upper stability limit is located at
2.0. Values around
1.0are more typical. In some extreme cases in simulations of the solar chromosphere it has turned out that an even lower value (
0.2) is necessary to prevent some spikes in the neighborhood of strong colliding shocks.
real c_viscourantmax f=E15.8 b=4 n='maximum viscous Courant factor' u=1 & c0='range: C_visCourant <= C_visCourantmax, typically smaller than 2.0' 1.0Its value should be slightly above