Source code for g3d.flow.solver.step.runge_kutta

from typing import Any

from g3d.defs import G3DSizes

from g3d.flow.placeholders import ConsField
from g3d.flow.solver.step import G3DStep


[docs] class RungeKutta(G3DStep): def __init__(self, *args: Any, **kwargs: Any) -> None: self.__cons0 = ConsField() super().__init__(*args, **kwargs) def _allocate(self) -> None: super()._allocate() g3d_sizes = G3DSizes() self.__cons0.setup(n_cells=g3d_sizes.n_cells)
[docs] def fwd(self) -> None: """ """ self._domain.auxvr() self._ltsp() self.__cons0.set_from_cons_field(self._cons) # RK 1 self._dcons.evaluate() self._cons.WAXPY(1.0, self._dcons, self.__cons0) self.__cons0.AXPBY(0.5, 0.5, self._cons) self._domain.auxvr() # RK 2 self._dcons.evaluate() self._cons.WAXPY(0.5, self._dcons, self.__cons0) self._domain.auxvr() # RK 3 self._dcons.evaluate() self._cons.WAXPY(0.5, self._dcons, self.__cons0)