- 7.1.20.1 real dtime_start
- 7.1.20.2 real dtime_min
- 7.1.20.3 real dtime_max
- 7.1.20.4 real dtime_min_stop
- 7.1.20.5 real dtime_incmax
- 7.1.20.6 real c_courant
- 7.1.20.7 real c_courantmax
- 7.1.20.8 real c_maxeichange
- 7.1.20.9 real c_hydsoundcourant
- 7.1.20.10 real c_hydsoundcourantmax
- 7.1.20.11 real c_hydexpcourant
- 7.1.20.12 real c_hydexpcourantmax
- 7.1.20.13 real c_radcourant
- 7.1.20.14 real c_radcourantmax
- 7.1.20.15 real c_radmaxeichange
- 7.1.20.16 real c_viscourant
- 7.1.20.17 real c_viscourantmax

7.1.20 Time-step control

In this group parameters to control the time step restrictions can be set.

They are important because decide about performance and stability of CO5BOLD. 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).

1.0E+03

`0.0`

means that the original value from the start model is used.

c0='dtime_min=0.0 => no restriction'

1.0

`dtime_min`

= `dtime_max`

to some positive value.
A value `dtime_min`

0.0 means that this time step restriction
is completely ignored, which is the case that should usually be chosen.

c0='dtime_max=0.0 => no restriction'

1.0E+05

`dtime_min`

= `dtime_max`

to some positive value.
A value `dtime_max`

0.0 means that this time step restriction
is completely ignored, which is the case that should usually be chosen.

c0='dtime_min_stop=0.0 => no restriction' &

c1='dtime < dtime_min_stop => program stop'

1.0

`real dtime_min_stop`

=`0.0`

.
But in general, one should keep it activated and try to find a proper positive value.

c0='dtime_max<1.0 => no restriction' c1='typically 1.1'

1.2

`0.0`

deactivates this restriction.

7.1.20.6 real c_courant

c0='range: 0.0 < C_Courant <= 1.0, typically: 0.5'

0.5

`1.0`

is the very upper limit that guarantees stability
for some simple linear 1D test problems.
Recommended upper limits for fully non-linear simulations can be found in Tab.7.1.

c0='range: C_Courant < C_Courantmax <= 1.0, typically: 0.9'

0.8

`c_courant`

).
Usually this parameter should be restricted by
`c_courant`

`c_courantmax`

`1.0`

.
A value of `1.0`

is the very upper limit that guarantees stability
for some simple linear 1D test problems.
Recommended upper limits for fully non-linear simulations can be found in Tab.7.1.

c0='range: 0.1 - 1.0, typically 0.5, off:0.0'

0.5

`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 `c_maxeichange`

=`0.0`

.

7.1.20.9 real c_hydsoundcourant

`c_courant`

that gives
a time-step restriction based on
, another factor can
be specified that is based only on the sound speed , e.g. with
c0='range: 0.0 < c_hydsoundcourant <= 0.5, typically: 0.45'

0.48

`c_hydsoundcourant`

a positive value ) for 3D simulations with `hdsplit=CTU`

,
see Sect.7.1.8.3 and Table 7.1.
In this case, a value slightly smaller than is a reasonable choice.

`c_courantmax`

that gives
a time-step restriction based on
, another factor can
be specified that is based only on the sound speed , e.g. with
n='maximum HD sound-speed Courant factor' u=1 &

c0='range: c_hydsoundcourant < c_hydsoundcourantmax <= 0.5, typically: 0.5'

0.5

`c_hydsoundcourant/c_hydsoundcourantmax`

works together in a the
same way as described above for `c_courant/c_courantmax`

.

7.1.20.11 real c_hydexpcourant

c0='range: 0.0 < C_hydExpCourant < C_hydExpCourantmax, typically: 0.3'

0.2

c0='range: 0.0 < C_hydExpCourant < C_hydExpCourantmax, typically: 0.5'

0.3

`c_hydexpcourant`

/`c_hydexpcourantmax`

works analogously to the pair
`c_courant`

/`c_courantmax`

.

7.1.20.13 real c_radcourant

c0='range: 0.0 < C_radCourant, typically: 1.0'

2.5

`2.0`

would cause the temperature fluctuation on the shortest scale to flip its sign,
setting the absolute stability limit.
A value of `1.0`

would 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_radcourant`

the recommended typical radiative time step is
computed.

7.1.20.14 real c_radcourantmax

c0='range: C_radCourant <= C_radCourantmax, typically: 2.0'

3.0

`real c_radcourant`

.

7.1.20.15 real c_radmaxeichange

u=1 c0='range: 0.01 - 1.0'

0.25

`0.5`

.
Values between `0.1`

and `0.5`

seem reasonable.
A value `0.0`

deactivates 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_radmaxeichange`

to a proper value (say `0.25`

).
Then, `real c_radcourant`

(and `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 `c_radmaxeichange`

.

c0='range: 0.0 < C_visCourant, typically: 0.5-1.0, better 0.25'

0.5

`c_viscourant`

=`2.0`

.
Values around `0.5`

to `1.0`

are 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.

c0='range: C_visCourant <= C_visCourantmax, typically smaller than 2.0'

1.0

`c_viscourant`

and below `2.0`

.