Source code for g3d.defs.world.numerics.time

"""G3DTime static class"""
from typing import Any

from g3d.defs import TIMESTEPTypes
from g3d.defs import TimeStepperMode


[docs] class G3DTime: """G3D time placeholder""" __time_mode = TIMESTEPTypes.LOCAL_TIME_STEPPING __time_stepper_mode = TimeStepperMode.EXPLICIT_RUNGE_KUTTA __cfl = 0.9 __n_sub_iter = 10 __dtime = 1.e-5 # time mode @property def time_mode(self) -> Any: """ solver time mode (Enum, default value = TIMESTEPTypes.LOCAL_TIME_STEPPING) valid options: LOCAL_TIME_STEPPING, TIME_ACCURATE_CFL, TIME_ACCURATE_CONSTANT_TIME_STEP """ return type(self).__time_mode @time_mode.setter def time_mode(self, m: Any) -> None: if type(m) is TIMESTEPTypes: type(self).__time_mode = m # time stepper mode @property def time_stepper_mode(self) -> Any: """ solver time stepper mode (Enum, default value = TimeStepperMode.EXPLICIT_RUNGE_KUTTA) valid options: EXPLICIT_RUNGE_KUTTA, BACKWARD_EULER_DUAL_TIME_STEPPER, CRANK_NICOLSON_DUAL_TIME_STEPPER, TURKEL_BACKWARD_EULER_DUAL_TIME_STEPPER """ return type(self).__time_stepper_mode @time_stepper_mode.setter def time_stepper_mode(self, m: Any) -> None: if type(m) is TimeStepperMode: type(self).__time_stepper_mode = m # CFL number @property def cfl(self) -> float: """solver CFL number (default value = 0.9)""" return type(self).__cfl @cfl.setter def cfl(self, val: float) -> None: type(self).__cfl = val # time step (for time accurate simulations) @property def dtime(self) -> float: """solver time step (used in combination with time-accurate time mode)""" return type(self).__dtime @dtime.setter def dtime(self, dt: float) -> None: type(self).__dtime = dt # subiterations (dual-time-stepper) @property def n_sub_iter(self) -> int: """maximum number of subiterations (used in combination with dual time stepping time mode)""" return type(self).__n_sub_iter @n_sub_iter.setter def n_sub_iter(self, N: int) -> None: type(self).__n_sub_iter = N