zoomy_core.symsolver.strategies.hyperbolic

zoomy_core.symsolver.strategies.hyperbolic#

The explicit hyperbolic solver, written once for every backend: a finite-volume SSP-RK march with MOOD and IMEX options. A HyperbolicTemplate holds the configuration and its methods are the graphs a backend prints.

Module Contents#

Classes#

HyperbolicTemplate

The configuration of the explicit hyperbolic solver; its methods (step, dt, initial_aux, march) are the graphs a backend prints.

API#

class zoomy_core.symsolver.strategies.hyperbolic.HyperbolicTemplate(nsm, *, cfl, dimension, mood=False, dt_write=None, imex=False, cfl_check_every=10, wave_speed=CflWaveSpeed.faces, dt_constant=None, time_order=None, dt_checkpoint=None)#

The configuration of the explicit hyperbolic solver; its methods (step, dt, initial_aux, march) are the graphs a backend prints.

Initialization

Set the configuration; nsm is the NumericalSystemModel.

Args

  • cfl: CFL number.

  • dimension: mesh dimension, enters the CFL step.

  • mood: a-posteriori MOOD guard of the RK step.

  • dt_write: output interval; None: no output.

  • imex: False (implicit slots inside the RK step), Imex.lie (implicit step after it) or Imex.ssp2 (IMEX-SSP2(2,2,2) stages).

  • cfl_check_every: constant dt: CFL test every N steps (1: each, 0: never).

  • wave_speed: CFL speeds from the first stage’s Riemann problem (CflWaveSpeed.faces) or from the cell states of each face (CflWaveSpeed.cells).

  • dt_constant: constant step, or None for the adaptive CFL step.

  • time_order: SSP-RK order; None: the reconstruction order (2 for Imex.ssp2).

  • dt_checkpoint: interval of io.save_state (landed on); None: at the end only.

property order#

Reconstruction order of the NSM.

step(Q, Qaux, p, time, dt, mesh, *, coupled=None, dt_rule=None)#

One time step (Q, Qaux, dt): the (MOOD-guarded) RK step, then the implicit slots by Lie splitting or inside the stages of IMEX-SSP2 when imex is set.

Args

  • coupled: (mask, flux), the faces carrying a shared answer.

  • dt_rule: the first stage picks dt from its own face wave speeds (ssp2: the cell states’).

dt(Q, Qaux, p, mesh)#

The CFL step from the cell states of each face.

initial_aux(Q, Qaux, p, mesh)#

The aux of the initial state: pointwise formula and derivative aux.

march(Q, Qaux, p, time, time_end, mesh)#

March from time to time_end.

precice_march(Q, Qaux, p, time, mesh, *, side, subcycling=False)#

The march as one preCICE participant; preCICE ends the loop and the coupled faces carry the shared interface answer on (own, peer).

Args

  • side: 0 if this domain is the low side of the interface.

  • subcycling: False: one step per window (warns above the CFL step), mass conserved exactly. True: adaptive steps inside the window, mass not exactly conserved.

References

  • Chourdakis et al. 2022, https://doi.org/10.12688/openreseurope.14445.2