Time stepping
There are several ways that the inputs are used to determine the time step of particle-only, fluid-only, and coupled fluid-particle systems.
Fluid-only simulations
In fluid-only simulations, setting mfix.fixed_dt
causes the fluid to advance with a
fixed (constant) time step. If mfix.fixed_dt
is not defined, then an appropriate time
step is computed based on the advective CFL condition.
Caution
The adaptive time step based on the advective CFL condition is always computed and is strongly recommended for most cases.
For a fixed time step simiulation, if the computed step size is smaller than
mfix.fixed_dt
for a fixed, the simulation aborts with the message:amrex::Abort::0::"Fixed dt is too large for fluid solve !!!
For simulations using the adaptive time step:
If the computed time step is larger than
mfix.dt_max
, then the time step is set todt_max
If the computed time step is smaller than
mfix.dt_min
, then the simulation aborts with the message:amrex::Abort::0::"Current dt is smaller than dt_min !!!
Particle-only DEM simulations
In particle-only DEM simulations, the time step used to advance particles, dtsolid
,
is determined by computing the collision time tcoll
from particle properties, then dividing
the result by the number of steps per collision, tcoll_ratio
:
dtsolid = tcoll / tcoll_ratio;
Note
mfix.fixed_dt
must be defined for particle-only DEM simulations, however it is only
used to determine the frequency of outputs and has no effect on the particle advance. If
a positive value is not specified for mfix.fixed_dt
, then the code aborts with the
following message:
amrex::abort::0::if running particle-only must specify fixed_dt in the inputs file !!!
Coupled fluid-DEM simulations
In a coupled fluid-DEM simulation, the fluid time step, dt
, and the particle time step,
dtsolid
, are computed the same as in fluid-only and DEM-only simulations, respectively.
If dt < dtsolid
, then the particle sub-time step, subdt
, is set to the fluid time
step and one particle advance is taken. However, if dt > dtsolid
(which is usually the
case), then the number of sub-steps needed for DEM particles to advance the same total time
as the fluid, nsubsteps
, is computed by dividing dt
by dtsolid
and the particle
sub-time step is computed by dividing dt
by nsubsteps
.
int nsubsteps = 1;
amrex::Real subdt = dt;
if (dt > dtsolid) {
nsubsteps = amrex::Math::ceil(dt / dtsolid);
subdt = dt / nsubsteps;
}
The following inputs are defined using the mfix
prefix.
Key |
Description |
Type |
Default |
---|---|---|---|
max_step |
Maximum number of time steps to take |
Int |
-1 |
stop_time |
Maximum time to reach (s) |
Real |
-1.0 |
fixed_dt |
Flag to use a fixed time step |
Int |
0 |
cfl |
CFL constraint (dt < cfl * dx / u)
|
Real |
See note |
dt_min |
Abort if |
Real |
1.e-6 |
dt_max |
Maximum value of |
Real |
1.e14 |
tcoll_ratio |
DEM time step equals the min collision time divided by this value |
Real |
50.0 |
walltime_limit |
Runtime limit specified with format HH:MM:SS. When the runtime has almost reached the limit (approaching is computed by considering the average runtime needed for each step) then the simulation ends and a clean exit is performed |
String |
“” |
clean_exit |
This input represents the name of a file that, if found in the run folder, makes the code stop and perform a clean exit |
String |
“” |
In the case of unsteady flow, the simulation will stop when either the number of steps
reaches max_step
or time reaches stop_time
.
The following inputs are defined using the mfix
prefix and are only relevant if running a steady state simulation.
Key |
Description |
Type |
Default |
---|---|---|---|
steady_state |
Are we running a steady-state calculation? |
Int |
0 |
steady_state_tol |
Tolerance for checking if we have reached steady state (Must be set if steady_state = 1) |
Real |
None |
steady_state_maxiter |
Maximum number of allowed iterations to converge to steady state |
Int |
100000000 |