Skip to content
This repository has been archived by the owner on May 11, 2021. It is now read-only.

Super Time Stepping

Patrick Mullen edited this page Oct 31, 2018 · 44 revisions

Explicit integration of diffusive physics requires taking a parabolic time-step, which is proportional to , where is the linear resolution of the calculation. This parabolic time-step is often much smaller than the hyperbolic time-step, thus dramatically increasing the required compute time when running Athena++ with diffusive physics enabled.

Super-time-stepping offers an avenue to bypass the penalty associated with taking the parabolic time-step. When super-time-stepping is enabled, diffusive physics is treated in an operator-split fashion using the RKL1 algorithm (see Meyer et al. 2014). This enables us to take the hyperbolic time-step inside the main integration loop, while diffusion physics is integrated over a super-time-step (equal to the hyperbolic time-step) in an operator-split update. Each super-time-step is comprised of several sub-stages, where the stability criterion for these stages is given by the recursion relation of Legendre polynomials.

Important Note: Super-time-stepping with the RKL1 algorithm is only a first-order scheme.

Configuration

Presently, super-time-stepping can only be applied to problems with diffusive physics. To enable super-time-stepping, configure Athena++ with the -sts option.

> python configure.py -sts

Input File

If super-time-stepping is enabled, at least one of the following input parameters for diffusion processes must be set in the input file under the <problem> block:

    <problem>
    nu_iso      = 0.01       # isotropic viscosity coefficient
    nu_aniso    = 0.0        # anisotropic viscosity coefficient
    kappa_iso   = 0.01       # isotropic thermal conduction coefficient
    kappa_aniso = 0.0        # anisotropic thermal conduction coefficient
    eta_ohm     = 0.01       # Ohmic resistivity coefficient
    eta_ad      = 0.0        # Ambipolar diffusion coefficient

Example

Ohmic diffusion of a Gaussian magnetic field:

> python configure.py -b -sts --prob=resist --flux=hlld --eos=isothermal

Convergence and Performance

Error convergence and performance diagnostics for super-time-stepping vs. explicit integration in Ohmic diffusion problem:

Note

  • Mesh refinement with super-time-stepping is not yet available.
  • Time dependent boundary conditions (e.g., shearing BC's -shear) and source terms are not yet compatible with super-time-stepping.
Clone this wiki locally