afivo-streamer  1.1
1D/2D/3D streamer simulations with AMR
Time integration

Time integration method

Time integration is performed explicitly, using the Afivo time integration module, which is described in the Afivo online documentation.

Several time integrators can be used, which can be set using the time_integrator variable. The following options are currently supported:

  • forward_euler (first order)
  • heuns_method (second order, SSP)
  • midpoint_method (second order)
  • ssprk3 (third order, SSP)

Time step restrictions

Due to the explicit time integration, there are a number of time step restrictions:

  • A CFL condition
  • A condition due to explicit diffusion (usually not important, that's why diffusion is handled explicitly)
  • A time step restriction due to the plasma chemistry
  • A time step restriction due to the dielectric relaxation time

For more details about these time step restrictions, see e.g. the paper about afivo-streamer. More on the dielectric relaxation time, and ways to avoid it, can be found in this paper.

The plasma chemistry time step restriction is of the form

dt < max(n, n0) / (d/dt n)'

where d/dt n is the time derivative due to chemical reactions. When a density is (almost) zero, the parameter n0 avoids a very small time step. This parameter can be set in the m_dt module.

Relevant parameters

In the m_dt module, there are a couple of relevant parameters for the time integration:

call cfg_add_get(cfg, "dt_max", dt_max, &
"The maximum timestep (s)")
call cfg_add_get(cfg, "dt_min", dt_min, &
"The minimum timestep (s)")
call cfg_add_get(cfg, "dt_safety_factor", dt_safety_factor, &
"Safety factor for the time step")
call cfg_add_get(cfg, "dt_cfl_number", dt_cfl_number, &
"CFL number to use")
call cfg_add_get(cfg, "dt_chemistry_nmin", dt_chemistry_nmin, &
"If > 0, a density to control the accuracy of the chemistry time step")
call cfg_add_get(cfg, "dt_chemistry_limit_loss", dt_chemistry_limit_loss, &
"Limit dt to prevent negative densities due to loss reactions")

Abort on small time steps

When the time step becomes smaller than dt_min, the simulation will abort, assuming an instability has occurred. This can be prevented by:

  • Decreasing the minimal time step dt_min, see m_dt
  • Increasing the n0 for the chemistry time step (see above)