Source code for g3d.flow.solver.limiters.limiter

"""limiter base class"""
from typing import Any

import os

if os.environ.get('__USE_CUDA', '0') == '1':
    import cupy as np
    from cupy import ndarray
else:
    import numpy as np
    from numpy import ndarray

from g3d.defs import G3DEntity
from g3d.defs import FunctionByPass
from g3d.flow.domain import Domain


[docs] class Limiter(G3DEntity): def __init__(self, *args: Any, **kwargs: Any) -> None: super().__init__(*args, **kwargs) self._limit = None def _set_default(self) -> None: super()._set_default() self._tag = 'g3d_limiter' def _set_from_args(self, *args: Any, **kwargs: Any) -> ndarray: bps = self._get_function_evaluate_status(**kwargs) if bps is FunctionByPass.SELF: args_stat = np.ones(len(args)) else: args_stat = super()._set_from_args(*args) if bps in [FunctionByPass.EVALUATE, FunctionByPass.SELF]: if np.sum(args_stat) > 0: for i in range(len(args)): if args_stat[i] == 1: arg = args[i] if type(arg) in [float, np.float64, np.float32, int, np.int64, np.int32]: self._limit = np.float64(arg) args_stat[i] = 0 return args_stat
[docs] def set_from_key_value(self, key: str, value: Any) -> bool: if super().set_from_key_value(key, value): return True elif key == 'limit': self._limit = value return True return False
[docs] def evaluate(self, dom: Domain) -> None: """ :param dom: """ pass