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

"""G3DIRSM static class"""
from .time import G3DTime


[docs] class G3DIRSM: """G3D Implicit Residual Smoothing (IRSM) placeholder""" __irsm_lambda = 1.0 __lambda_min = 1.0 __lambda_max = 0.0 __lambda_factor = 0.25 __relax = 0.9 __cfl_crit = 1.2 __cfl_max = 0.0 __cfl_activate = 1.0 __lambda_specified_by_user = False @property def irsm_lambda(self) -> float: """IRMS lambda value (default lambda = 1.0)""" return type(self).__irsm_lambda @irsm_lambda.setter def irsm_lambda(self, val: float) -> None: type(self).__irsm_lambda = val type(self).__lambda_specified_by_user = True @property def lambda_specified_by_user(self) -> bool: """IRSM lambda has been specified by user (default = False)""" return type(self).__lambda_specified_by_user @lambda_specified_by_user.setter def lambda_specified_by_user(self, b: bool = True) -> None: type(self).__lambda_specified_by_user = b @property def lambda_min(self) -> float: """IRSM lambda min value (default 1.0)""" return type(self).__lambda_min @lambda_min.setter def lambda_min(self, val: float) -> None: type(self).__lambda_min = val @property def lambda_max(self) -> float: """IRSM lambda max value (default 0.0)""" return type(self).__lambda_max @lambda_max.setter def lambda_max(self, val: float) -> None: type(self).__lambda_max = val @property def lambda_factor(self) -> float: """IRSM lambda factor (default 0.25)""" return type(self).__lambda_factor @lambda_factor.setter def lambda_factor(self, val: float) -> None: type(self).__lambda_factor = val @property def relax(self) -> float: """IRSM under relaxation factor (default 0.9)""" return type(self).__relax @relax.setter def relax(self, val: float) -> None: type(self).__relax = val @property def cfl_crit(self) -> float: """IRSM critical CFL value (default 1.2)""" return type(self).__cfl_crit @cfl_crit.setter def cfl_crit(self, val: float) -> None: type(self).__cfl_crit = val @property def cfl_max(self) -> float: """IRSM critical CFL max (default 0.0)""" return type(self).__cfl_max @cfl_max.setter def cfl_max(self, val: float) -> None: type(self).__cfl_max = val @property def cfl_activate(self) -> float: """IRSM activation CFL value (default 1.0)""" return type(self).__cfl_activate @cfl_activate.setter def cfl_activate(self, val: float) -> None: type(self).__cfl_activate = val
[docs] def update_lambda(self) -> None: """ update IRSM lambda value input: no input needed example: update_lambda() """ if type(self).__lambda_specified_by_user: return g3d_time = G3DTime() alfa = g3d_time.cfl / type(self).__cfl_crit type(self).__irsm_lambda = max(type(self).__lambda_factor * (alfa ** 2 - 1.0), type(self).__lambda_min)