Source code for g3d.defs.g3dramp

"""G3DRamp class definition"""
from typing import Any

import os

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

from g3d.defs import G3DEntity
from g3d.defs import G3DWorld
from g3d.defs import RampType


[docs] class G3DRamp(G3DEntity): """ G3DRamp base class extends G3DEntity """ def __init__(self, *args: Any, **kwargs: Any) -> None: """initialize G3DRamp placeholder""" self._type = RampType.UNDEFINED self._start_val = 0. self._end_val = 0. self._start_iter = 0 self._end_iter = 0 super().__init__(*args, **kwargs) def _set_default(self) -> None: super()._set_default() self._tag = 'g3d_ramp'
[docs] def set_from_key_value(self, key: str, value: Any) -> bool: """ sets code parameters from specified key => value data input: key, value valid keys for G3DCode base class: 'ramp_type', 'start_value', 'end_value', 'start_iter', 'end_iter' example: set_from_key_value(key, value) """ if super().set_from_key_value(key, value): return True elif key == 'ramp_type': self._type = value return True elif key == 'start_value': self._start_val = np.float64(value) return True elif key == 'end_value': self._end_val = np.float64(value) return True elif key == 'start_iter': self._start_iter = np.int64(value) return True elif key == 'end_iter': self._end_iter = np.int64(value) return True return False
[docs] def copy(self, r: 'G3DRamp'): super().copy(r) self._type = r.type self._start_val = r.start_val self._end_val = r.end_val self._start_iter = r.start_iter self._end_iter = r.end_iter
@property def type(self) -> Any: """ ramp type (Enum, default value = RampType.UNDEFINED) valid options: UNDEFINED, MACH, PRESSURE, TOTAL_PRESSURE, TOTAL_TEMPERATURE """ return self._type @type.setter def type(self, val: Any) -> None: if type(val) is RampType: self._type = val @property def start_val(self) -> float: """ramp start value""" return self._start_val @start_val.setter def start_val(self, val: float) -> None: self._start_val = val @property def end_val(self) -> float: """ramp end value""" return self._end_val @end_val.setter def end_val(self, val: float) -> None: self._end_val = val @property def start_iter(self) -> int: """ramp start iteration (ramp function will be activated at the specified iteration)""" return self._start_iter @start_iter.setter def start_iter(self, val: int) -> None: self._start_iter = val @property def end_iter(self) -> int: """ramp end iteration (ramp function will be deactivated at the specified iteration)""" return self._end_iter @end_iter.setter def end_iter(self, val: int) -> None: self._end_iter = val
[docs] def get_val(self) -> float: """ gets ramp value based on solver iteration no input """ g3d_world = G3DWorld() i = g3d_world.status.istep if i <= self._start_iter: return self._start_val elif i >= self._end_iter: return self._end_val else: return np.float64(i - self._start_iter + 1) / \ np.float64(self._end_iter - self._start_iter + 1) * \ (self._end_val - self._start_val) + self._start_val