"""implicit residual smoothing (IRSM) flux modifier"""
from typing import TYPE_CHECKING
from numpy import ndarray
from g3d.flow.solver.rhs.fluxmodifiers import FluxModifier
from g3d.flow.domain import Domain
if TYPE_CHECKING:
from g3d.flow.solver.rhs import Flux
[docs]
class IRSM(FluxModifier):
"""
"""
def __init__(self) -> None:
super().__init__()
self.__IRSM_operator = self._domain.get_IRSM_operator()
[docs]
def associate(self, flux: 'Flux', dt: ndarray, dom: Domain) -> None:
"""
:param flux:
:param dt:
:param dom:
"""
super().associate(flux, dt, dom)
self.__IRSM_operator = self._domain.get_IRSM_operator()
[docs]
def evaluate(self) -> None:
"""
"""
idx1, idx2 = self._get_range()
for i in range(self._n_var):
self.__IRSM_operator.smooth(self._pointers[i][idx1:idx2])