WARPXM v1.10.0
Loading...
Searching...
No Matches
wxm::apps::bc::flux_bc::five_moment::KineticToFiveMomentFluxBC Class Reference

Kinetic to 5 Moment Flux Boundary Condition This sets the numerical flux that for the fluid model at the boundary interface between the fluid and kinetic model. More...

#include <kinetic_to_five_moment_flux_bc.h>

Inheritance diagram for wxm::apps::bc::flux_bc::five_moment::KineticToFiveMomentFluxBC:
WmApplication wxm::app_base

Detailed Description

Kinetic to 5 Moment Flux Boundary Condition This sets the numerical flux that for the fluid model at the boundary interface between the fluid and kinetic model.

It is the summation of the flux determined from the intermediate interface distribution that is constructed from the part of the kinetic distribution going into the fluid domain and the part of the Maxwellian distribution on the fluid side that is going into the kinetic domain

This is the boundary condition for the fluid flux coming from the kinetic domain For continuity: (F dot n)* = (rho V) dot n = ((A int (vf) dv)_f2k + A int (vf) dv)_k2f) dot n f2k is the fluid to kinetic part k2f is the kinetic to fluid part int (vf) dv is simply the first moment calculated in another app, but it does not include the A so we add this back in

For momentum: (F dot n)* = (rhoVV + P) dot n = ((int (Avvf) dv)_f2k + (int (Avvf) dv)_k2f) dot n (int (Avvf) dv) is the full dyadic second moment calculated in another app and includes A

For energy (F dot n)* = (eV + PV + h) dot n = ((int (1/2Avv^2f) dv)_f2k + (int (1/2Avv^2f) dv)_k2f) dot n int (1/2Avv^2f) dv is the energy flux moment calculated in another app and includes A

The normal should point from fluid to kinetic, because we are looking for the fluid numerical flux, which should be automatically the normal that we have because we are solving this on the fluid side with the kinetic side being the "right" or "outside" or "+".

Public Member Functions

 KineticToFiveMomentFluxBC ()
 Constructor.
 
 ~KineticToFiveMomentFluxBC () override
 Destructor.
 
void setup (const WxCryptSet &wxc) override
 Setup.
 
const std::vector< int > & getInputVariableIndexes (int flag) const override
 Grab input variable indices.
 
const std::vector< int > & getOutputVariableIndexes (int flag) const override
 Grab output variable indices.
 
const std::vector< int > & getAuxiliaryVariableIndexes (int flag) const override
 
real bcNumericalFlux (const real *q_l, const real *q_r, const real *aux_l, const real *aux_r, const solverVariables_t *pFV, real *numericalFlux) const override
 Redefinition of the boundary condition numerical flux.
 
- Public Member Functions inherited from WmApplication
 WmApplication ()
 
virtual ~WmApplication ()=default
 
virtual void setup (const WxCryptSet &wxc)
 
virtual const std::vector< int > & getAuxiliaryVariableIndexes (int flag=WMAPPLICATIONFLAG_NONE) const
 
virtual const std::vector< int > & getCrossVariableIndexes (int flag=WMAPPLICATIONFLAG_NONE) const
 
const std::vector< std::string > & getBoundaryNames () const
 
bool isOnBoundary (const std::string &boundaryName) const
 
bool has (int flag) const
 
virtual real numerical_flux (const real *q_l, const real *q_r, const real *aux_l, const real *aux_r, const solverVariables_t *pFV, real *numericalFlux) const
 
virtual real internal_flux (const real *q, const real *aux, const solverVariables_t *pSV, std::vector< std::vector< real > > &internalFlux) const
 
virtual real source (const real *q, const real *aux, const elementGeometry_t *pEG, real *source) const
 
virtual void bc_q (const real *q_in, const real *aux_in, const real *aux_out, const solverVariables_t *pFV, real *q_out) const
 Boundary Condition Application which sets the boundary condition on ghost nodes.
 
virtual real bcNumericalFlux (const real *q_l, const real *q_r, const real *aux_l, const real *aux_r, const solverVariables_t *pFV, real *numericalFlux) const
 
virtual void conserved_to_primitive (const real *q, const real *aux, real *w) const
 
virtual void primitive_to_conserved (const real *w, const real *aux, real *q) const
 
virtual void evaluate_function (const real *q, const real *aux, const solverVariables_t *pSV, real *result) const
 
virtual void bc_q_kinetic (const real *q_in, const real *aux_in, const solverVariables_t *pFV, real *q_out) const
 
std::shared_ptr< std::string > app_name ()
 
virtual const std::vector< int > & getInputVariableIndexes (int flag=0) const
 
virtual const std::vector< int > & getOutputVariableIndexes (int flag=0) const
 

Protected Attributes

real _mass
 
std::vector< int > _kinetic_distribution_moment_variables
 
std::vector< int > _maxwellian_distribution_moment_variables
 
std::vector< int > _fluid_variables
 
- Protected Attributes inherited from WmApplication
std::string _app_name
 
WxLogStream _debStrm
 
std::vector< int > _allowedFlags
 
std::vector< std::string > _onBoundaries
 

Additional Inherited Members

- Public Types inherited from WmApplication
typedef Application_Variable WmApplication_Variable
 
typedef std::map< std::string, std::string > replaceMap_t
 
- Static Public Attributes inherited from wxm::app_base
static std::vector< int > empty
 
- Protected Member Functions inherited from wxm::app_base
virtual ~app_base ()=default
 

Constructor & Destructor Documentation

◆ KineticToFiveMomentFluxBC()

wxm::apps::bc::flux_bc::five_moment::KineticToFiveMomentFluxBC::KineticToFiveMomentFluxBC ( )

Constructor.

◆ ~KineticToFiveMomentFluxBC()

wxm::apps::bc::flux_bc::five_moment::KineticToFiveMomentFluxBC::~KineticToFiveMomentFluxBC ( )
override

Destructor.

Member Function Documentation

◆ bcNumericalFlux()

real wxm::apps::bc::flux_bc::five_moment::KineticToFiveMomentFluxBC::bcNumericalFlux ( const real q_l,
const real q_r,
const real aux_l,
const real aux_r,
const solverVariables_t pFV,
real numericalFlux 
) const
overridevirtual

Redefinition of the boundary condition numerical flux.

Parameters
constq_l - input variable left ("inside")
constq_r - input variable right ("outside")
constaux_l - auxiliary variable left ("inside")
constaux_r - auxiliary variable right ("outside")
constpFV - solver variable structure
numericalFlux- output numerical flux

Reimplemented from WmApplication.

◆ getAuxiliaryVariableIndexes()

const std::vector< int > & wxm::apps::bc::flux_bc::five_moment::KineticToFiveMomentFluxBC::getAuxiliaryVariableIndexes ( int  flag) const
inlineoverridevirtual

Reimplemented from WmApplication.

◆ getInputVariableIndexes()

const std::vector< int > & wxm::apps::bc::flux_bc::five_moment::KineticToFiveMomentFluxBC::getInputVariableIndexes ( int  flag) const
inlineoverridevirtual

Grab input variable indices.

Parameters
intflag - usually flag is given like flux type but usually not checked
Returns
vector of input variable indices

Reimplemented from wxm::app_base.

◆ getOutputVariableIndexes()

const std::vector< int > & wxm::apps::bc::flux_bc::five_moment::KineticToFiveMomentFluxBC::getOutputVariableIndexes ( int  flag) const
inlineoverridevirtual

Grab output variable indices.

Parameters
intflag - usually flag is given like flux type but usually not checked
Returns
vector of output variable indices

Reimplemented from wxm::app_base.

◆ setup()

void wxm::apps::bc::flux_bc::five_moment::KineticToFiveMomentFluxBC::setup ( const WxCryptSet wxc)
overridevirtual

Setup.

Parameters
WxCryptSetobject

Reimplemented from WmApplication.

Member Data Documentation

◆ _fluid_variables

std::vector<int> wxm::apps::bc::flux_bc::five_moment::KineticToFiveMomentFluxBC::_fluid_variables
protected

◆ _kinetic_distribution_moment_variables

std::vector<int> wxm::apps::bc::flux_bc::five_moment::KineticToFiveMomentFluxBC::_kinetic_distribution_moment_variables
protected

◆ _mass

real wxm::apps::bc::flux_bc::five_moment::KineticToFiveMomentFluxBC::_mass
protected

◆ _maxwellian_distribution_moment_variables

std::vector<int> wxm::apps::bc::flux_bc::five_moment::KineticToFiveMomentFluxBC::_maxwellian_distribution_moment_variables
protected

The documentation for this class was generated from the following file: