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

Class used implementing artificial viscosity limiter based on velocity gradient as desribed in Eric Meier Dissertation (2011, Univ. More...

#include <artificial_viscosity_limiter_meier.h>

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

Detailed Description

Class used implementing artificial viscosity limiter based on velocity gradient as desribed in Eric Meier Dissertation (2011, Univ.

Washington, Appx B) Add a diffusion term to the equation adding dissipatin to compressional modes causing shocks Applied on the momentum equation for p=(px,py,pz) Uses Local Discontinuous Galerkin or Interior Penalty d/dt (p) + div (-2 nu Io (|grad u|) o grad u) or (px) (-2 nu |vx_x| vx_x) d/dt (py) + d/dx (0) (pz) (0)

        (0)
 + d/dy (-2 nu |vy_y| vy_y)
        (0)

        (0)
+ d/dz (0)
        (-2 nu |vz_z| vz_z)

        (0)
      = (0)
        (0)

where nu is the viscosity

Public Member Functions

 ArtificialViscosityLimiterMeier ()
 Constructor.
 
 ~ArtificialViscosityLimiterMeier () override
 Destructor.
 
void setup (const WxCryptSet &wxc) override
 Setup.
 
const std::vector< int > & getInputVariableIndexes (int flag) const override
 Get input variable indices.
 
const std::vector< int > & getAuxiliaryVariableIndexes (int flag) const override
 Get auxiliary variable indices.
 
const std::vector< int > & getOutputVariableIndexes (int flag) const override
 Get output variable indices.
 
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 definition.
 
real internal_flux (const real *q, const real *aux, const solverVariables_t *pSV, std::vector< std::vector< real > > &internalFlux) const override
 Internal flux definition.
 
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
 Specific Numerical flux definition for local discontinuous galerkin method Called by the numerical flux function.
 
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
 Specific Numerical flux definition for interior penalty method Called by the numerical flux function.
 
- 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::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

◆ ArtificialViscosityLimiterMeier()

wxm::apps::mhd::limiters::ArtificialViscosityLimiterMeier::ArtificialViscosityLimiterMeier ( )

Constructor.

◆ ~ArtificialViscosityLimiterMeier()

wxm::apps::mhd::limiters::ArtificialViscosityLimiterMeier::~ArtificialViscosityLimiterMeier ( )
override

Destructor.

Member Function Documentation

◆ getAuxiliaryVariableIndexes()

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

Get auxiliary variable indices.

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

Reimplemented from WmApplication.

◆ getInputVariableIndexes()

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

Get 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::ArtificialViscosityLimiterMeier::getOutputVariableIndexes ( int  flag) const
inlineoverridevirtual

Get 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::ArtificialViscosityLimiterMeier::internal_flux ( const real q,
const real aux,
const solverVariables_t pSV,
std::vector< std::vector< real > > &  internalFlux 
) const
overridevirtual

Internal flux definition.

Parameters
constpointer to q vars
constpointer to aux vars
constpointer to solverVariables_t struct
2Dvector of internal flux to be modified by this function
Returns
timestep

Reimplemented from WmApplication.

◆ numerical_flux()

real wxm::apps::mhd::limiters::ArtificialViscosityLimiterMeier::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 definition.

Parameters
constpointer to left q vars
constpointer to right q vars
constpointer to left aux vars
constpointer to right aux vars
constpointer to solverVariables_t struct
pointerto numerical flux array to be modified by this function
Returns
timestep

Reimplemented from WmApplication.

◆ numerical_flux_ip()

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

Specific Numerical flux definition for interior penalty method Called by the numerical flux function.

Parameters
constpointer to left q vars
constpointer to right q vars
constpointer to left aux vars
constpointer to right aux vars
constpointer to solverVariables_t struct
pointerto numerical flux array to be modified by this function
Returns
timestep

◆ numerical_flux_ldg()

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

Specific Numerical flux definition for local discontinuous galerkin method Called by the numerical flux function.

Parameters
constpointer to left q vars
constpointer to right q vars
constpointer to left aux vars
constpointer to right aux vars
constpointer to solverVariables_t struct
pointerto numerical flux array to be modified by this function
Returns
timestep

◆ setup()

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

Setup.

Parameters
WxCryptSetobject

Reimplemented from WmApplication.

Member Data Documentation

◆ _aux_variables

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

◆ _coefficient

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

◆ _gradient_method

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

◆ _input_variables

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

◆ _output_variables

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

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