# -*- coding: utf-8 -*-
from pyfr.solvers.baseadvec import (BaseAdvectionIntInters,
BaseAdvectionMPIInters,
BaseAdvectionBCInters)
[docs]class EulerIntInters(BaseAdvectionIntInters):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self._be.pointwise.register('pyfr.solvers.euler.kernels.intcflux')
rsolver = self.cfg.get('solver-interfaces', 'riemann-solver')
tplargs = dict(ndims=self.ndims, nvars=self.nvars, rsolver=rsolver,
c=self.c)
self.kernels['comm_flux'] = lambda: self._be.kernel(
'intcflux', tplargs=tplargs, dims=[self.ninterfpts],
ul=self._scal_lhs, ur=self._scal_rhs,
magnl=self._mag_pnorm_lhs, nl=self._norm_pnorm_lhs
)
[docs]class EulerMPIInters(BaseAdvectionMPIInters):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self._be.pointwise.register('pyfr.solvers.euler.kernels.mpicflux')
rsolver = self.cfg.get('solver-interfaces', 'riemann-solver')
tplargs = dict(ndims=self.ndims, nvars=self.nvars, rsolver=rsolver,
c=self.c)
self.kernels['comm_flux'] = lambda: self._be.kernel(
'mpicflux', tplargs, dims=[self.ninterfpts],
ul=self._scal_lhs, ur=self._scal_rhs,
magnl=self._mag_pnorm_lhs, nl=self._norm_pnorm_lhs
)
class EulerBaseBCInters(BaseAdvectionBCInters):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self._be.pointwise.register('pyfr.solvers.euler.kernels.bccflux')
rsolver = self.cfg.get('solver-interfaces', 'riemann-solver')
tplargs = dict(ndims=self.ndims, nvars=self.nvars, rsolver=rsolver,
c=self.c, bctype=self.type)
self.kernels['comm_flux'] = lambda: self._be.kernel(
'bccflux', tplargs=tplargs, dims=[self.ninterfpts],
extrns=self._external_args, ul=self._scal_lhs,
magnl=self._mag_pnorm_lhs, nl=self._norm_pnorm_lhs,
**self._external_vals
)
class EulerSupInflowBCInters(EulerBaseBCInters):
type = 'sup-in-fa'
def __init__(self, be, lhs, elemap, cfgsect, cfg):
super().__init__(be, lhs, elemap, cfgsect, cfg)
tplc = self._exp_opts(
['rho', 'p', 'u', 'v', 'w'][:self.ndims + 2], lhs
)
self.c.update(tplc)
class EulerSupOutflowBCInters(EulerBaseBCInters):
type = 'sup-out-fn'
cflux_state = 'ghost'
class EulerCharRiemInvBCInters(EulerBaseBCInters):
type = 'char-riem-inv'
def __init__(self, be, lhs, elemap, cfgsect, cfg):
super().__init__(be, lhs, elemap, cfgsect, cfg)
tplc = self._exp_opts(
['rho', 'p', 'u', 'v', 'w'][:self.ndims + 2], lhs
)
self.c.update(tplc)
class EulerSlpAdiaWallBCInters(EulerBaseBCInters):
type = 'slp-adia-wall'