Source code for g3d.mesh.geo.region.prism_region

"""PrismRegion class definition"""
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 FunctionByPass
from g3d.defs import AngleType
from g3d.mesh.geo import Coord
from g3d.mesh.geo.region import Region


[docs] class PrismRegion(Region): def __init__(self, *args: Any, **kwargs: Any) -> None: super().__init__(*args, **kwargs) self._length = 0. self._ialt = AngleType.IALT_1 self._alpha = 0. self._beta = 0. def _set_default(self) -> None: super()._set_default() self._tag = 'prism_region' 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) is PrismRegion: # if caught by a super class, the child class instance of copy will be used args_stat[i] = 0 self.copy(arg) elif type(arg) is Region: args_stat[i] = 0 super().copy(arg) 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 == 'length' or key == 'l': self._length = value return True elif key == 'ialt': self._ialt = value return True elif key == 'alpha': self._alpha = value return True elif key == 'beta': self._beta = value return True return False
@property def length(self): """ :return: """ return self._length @length.setter def length(self, val): self._length = val @property def ialt(self): """ :return: """ return self._ialt @ialt.setter def ialt(self, val): self._ialt = val @property def alpha(self): """ :return: """ return self._alpha @alpha.setter def alpha(self, val): self._alpha = val @property def beta(self): """ :return: """ return self._beta @beta.setter def beta(self, val): self._beta = val
[docs] def copy(self, r: 'PrismRegion') -> None: super().copy(r) self._length = r.length self._ialt = r.ialt self._alpha = r.alpha self._beta = r.beta
[docs] def coord_is_in_region(self, c: Coord) -> bool: """ :param c: :return: """ return False