WARPXM v1.10.0
Loading...
Searching...
No Matches
wxm::apps::mhd::limiters::ArtificialViscosityLimiter Class Reference

Class used implementing artificial viscosity limiter based on velocity divergence Adds a diffusion term to the equation based on the compressibility of the fluid Applied on the momentum equation for p=(px,py,pz) Uses Local Discontinuous Galerkin or Interior Penalty d/dt (p) + div (-nu * m * grad u) = 0 where nu is the viscosity coefficient m is an extra multiplier which is either: |div u|, or (div u)^2. More...

#include <artificial_viscosity_limiter.h>

Inheritance diagram for wxm::apps::mhd::limiters::ArtificialViscosityLimiter:
WmApplication wxm::app_base

Detailed Description

Class used implementing artificial viscosity limiter based on velocity divergence Adds a diffusion term to the equation based on the compressibility of the fluid Applied on the momentum equation for p=(px,py,pz) Uses Local Discontinuous Galerkin or Interior Penalty d/dt (p) + div (-nu * m * grad u) = 0 where nu is the viscosity coefficient m is an extra multiplier which is either: |div u|, or (div u)^2.

Public Member Functions

 ArtificialViscosityLimiter ()
 Constructor.
 
 ~ArtificialViscosityLimiter ()
 Destructor.
 
const std::vector< int > & getInputVariableIndexes (int flag) const override
 Grab input variable indices.
 
const std::vector< int > & getAuxiliaryVariableIndexes (int flag) const override
 Grab auxiliary variable indices.
 
const std::vector< int > & getOutputVariableIndexes (int flag) const override
 Grab output variable indices.
 
void setup (const WxCryptSet &wxc) override
 Setup function.
 
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 override
 Numerical flux redefinition from parent.
 
real internal_flux (const real *q, const real *aux, const solverVariables_t *pSV, std::vector< std::vector< real > > &internalFlux) const override
 Internal flux redefinition from parent.
 
real numerical_flux_ldg (const real *q_l, const real *q_r, const real *aux_l, const real *aux_r, const solverVariables_t *pFV, real *numericalFlux) const
 Numerical flux call as determined by local discontinuous galerkin method.
 
real numerical_flux_ip (const real *q_l, const real *q_r, const real *aux_l, const real *aux_r, const solverVariables_t *pFV, real *numericalFlux) const
 Numerical flux call as determined by interior penalty method.
 
- 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 _coefficient
 
std::string _gradient_method
 
std::string _diffusion_factor
 
std::vector< int > _input_variables
 
std::vector< int > _aux_variables
 
std::vector< int > _output_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

◆ ArtificialViscosityLimiter()

wxm::apps::mhd::limiters::ArtificialViscosityLimiter::ArtificialViscosityLimiter ( )

Constructor.

◆ ~ArtificialViscosityLimiter()

wxm::apps::mhd::limiters::ArtificialViscosityLimiter::~ArtificialViscosityLimiter ( )

Destructor.

Member Function Documentation

◆ getAuxiliaryVariableIndexes()

const std::vector< int > & wxm::apps::mhd::limiters::ArtificialViscosityLimiter::getAuxiliaryVariableIndexes ( int  flag) const
inlineoverridevirtual

Grab auxiliary variable indices.

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

Reimplemented from WmApplication.

◆ getInputVariableIndexes()

const std::vector< int > & wxm::apps::mhd::limiters::ArtificialViscosityLimiter::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 fluid indices

Reimplemented from wxm::app_base.

◆ getOutputVariableIndexes()

const std::vector< int > & wxm::apps::mhd::limiters::ArtificialViscosityLimiter::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 fluid indices

Reimplemented from wxm::app_base.

◆ internal_flux()

real wxm::apps::mhd::limiters::ArtificialViscosityLimiter::internal_flux ( const real q,
const real aux,
const solverVariables_t pSV,
std::vector< std::vector< real > > &  internalFlux 
) const
overridevirtual

Internal flux redefinition from parent.

Parameters
q- conserved variables
aux- auxiliary variables
pSV- solverVariables_t object
internalFlux- the internal flux 2d vector that is calculated and output

Reimplemented from WmApplication.

◆ numerical_flux()

real wxm::apps::mhd::limiters::ArtificialViscosityLimiter::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
overridevirtual

Numerical flux redefinition from parent.

Parameters
q_l- left node conserved variables
q_r- right node conserved variables
aux_l- left node auxiliary variables
aux_r- right node conserved variables
pFV- solverVariables_t object
numericalFlux- the numerical flux vector that is calculated and output

Reimplemented from WmApplication.

◆ numerical_flux_ip()

real wxm::apps::mhd::limiters::ArtificialViscosityLimiter::numerical_flux_ip ( const real q_l,
const real q_r,
const real aux_l,
const real aux_r,
const solverVariables_t pFV,
real numericalFlux 
) const

Numerical flux call as determined by interior penalty method.

Parameters
q_l- left node conserved variables
q_r- right node conserved variables
aux_l- left node auxiliary variables
aux_r- right node conserved variables
pFV- solverVariables_t object
numericalFlux- the numerical flux vector that is calculated and output

◆ numerical_flux_ldg()

real wxm::apps::mhd::limiters::ArtificialViscosityLimiter::numerical_flux_ldg ( const real q_l,
const real q_r,
const real aux_l,
const real aux_r,
const solverVariables_t pFV,
real numericalFlux 
) const

Numerical flux call as determined by local discontinuous galerkin method.

Parameters
q_l- left node conserved variables
q_r- right node conserved variables
aux_l- left node auxiliary variables
aux_r- right node conserved variables
pFV- solverVariables_t object
numericalFlux- the numerical flux vector that is calculated and output

◆ setup()

void wxm::apps::mhd::limiters::ArtificialViscosityLimiter::setup ( const WxCryptSet wxc)
overridevirtual

Setup function.

Parameters
wxc- cryptset object defining what is needed by the limiter

Reimplemented from WmApplication.

Member Data Documentation

◆ _aux_variables

std::vector<int> wxm::apps::mhd::limiters::ArtificialViscosityLimiter::_aux_variables
protected

◆ _coefficient

real wxm::apps::mhd::limiters::ArtificialViscosityLimiter::_coefficient
protected

◆ _diffusion_factor

std::string wxm::apps::mhd::limiters::ArtificialViscosityLimiter::_diffusion_factor
protected

◆ _gradient_method

std::string wxm::apps::mhd::limiters::ArtificialViscosityLimiter::_gradient_method
protected

◆ _input_variables

std::vector<int> wxm::apps::mhd::limiters::ArtificialViscosityLimiter::_input_variables
protected

◆ _output_variables

std::vector<int> wxm::apps::mhd::limiters::ArtificialViscosityLimiter::_output_variables
protected

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