Source code for g3d.flow.placeholders.turb

"""Turbulence model variables (static & dynamic) - flow field data placeholders"""
from typing import Any, Union, Tuple

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.flow.placeholders import FlowDataPlaceHolder

from g3d.flow.vars import Turb


[docs] class StaticTurbulenceModelVariables(FlowDataPlaceHolder): """Definition of class StaticTurbulenceModel, extends class FlowDataPlaceHolder: static turbulence model variables container""" def __init__(self, *args: Any, **kwargs: Any) -> None: super().__init__(*args, **kwargs)
[docs] class DynamicTurbulenceModelVariables(FlowDataPlaceHolder): """Definition of class DynamicTurbulenceModel, extends class FlowDataPlaceHolder: dynamic turbulence model variables container""" def __init__(self, *args: Any, **kwargs: Any) -> None: super().__init__(*args, **kwargs) @property def visct(self) -> ndarray: """Turbulent viscosity [kg/(m s)] Returns ------- ndarray turbulent viscosity array """ return self._visct def _set_default(self) -> None: super()._set_default() self._tag = 'turbulence model variables' def _define_variables(self) -> None: super()._define_variables() self._variables['visct'] = {} self._variables['visct']['longname'] = 'turbulence viscosity' self._variables['visct']['dimension'] = 'kg/(m s)' def _allocate_placeholders(self) -> None: super()._allocate_placeholders() self._visct = np.zeros(self._size) self._variables['visct']['ref'] = self._visct
[docs] def set_values(self, visct: Union[float, ndarray], idx: int = None) -> None: """Sets array values for all cells or cell with specified cell index to a set of initial values or data from provided arrays Parameters ---------- visct : float or ndarray : turbulent viscosity value or array of values idx : int : cell index (Default value = None) """ if idx is None: idx1, idx2 = self.get_range() self._visct[idx1:idx2] = visct else: self._visct[idx] = visct
[docs] def set_from_Turb(self, t: Turb) -> None: """Set array values from provided turbulence model variable object Parameters ---------- t : Turb : turbulence model variable object """ idx1, idx2 = self.get_range() self._visct[idx1:idx2] = t.visct
[docs] def set_from_arrays(self, visct: ndarray) -> None: """Set data from provided arrays Parameters ---------- visct : ndarray : turbulence viscosity data """ idx1, idx2 = self.get_range() self._visct[idx1:idx2] = visct[idx1:idx2]
[docs] def get_arrays(self) -> Union[ndarray, Tuple[ndarray, ...]]: """Gets turbulence model data arrays Returns ------- tuple data arrays (visct) """ idx1, idx2 = self.get_range() return \ self._visct[idx1:idx2]
[docs] def get_arrays_with_ghosts(self) -> Union[ndarray, Tuple[ndarray, ...]]: """Gets turbulence model data arrays including ghost cell values Returns ------- tuple data arrays (visct) """ return \ self._visct
[docs] def set_from_turb_field(self, t: 'DynamicTurbulenceModelVariables') -> None: """Copy data from provided turbulence model variables placeholder object Parameters ---------- t : DynamicTurbulenceModelVariables : dynamics turbulence model variables container """ visct = t.get_arrays() self.set_from_arrays(visct)
[docs] def get_visct_array(self) -> ndarray: """Gets turbulence viscosity array Returns ------- ndarray turbulence viscosity array """ idx1, idx2 = self.get_range() return self._visct[idx1:idx2]