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

An artificial dissipation limiter for MHD that uses divergence of velocity as a shock sensor. More...

#include <artificial_dissipation.h>

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

Detailed Description

An artificial dissipation limiter for MHD that uses divergence of velocity as a shock sensor.

Similar to Von Neumann and Richtmyer, J. Appl. Phys. 21, 232 (1950) dissipation may be added to continuity, momentum, and energy equations.

See writeup document for details.

Associated cylindrical source term is ArtificialDissipationCylSource.

Warpy constructor: warpy.apps.mhd.imhd.imhd.artificial_dissipation

Public Member Functions

 ArtificialDissipation ()
 Constructor.
 
 ~ArtificialDissipation () 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 redefinition from wmapplication 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 wmapplication 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
 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 _gas_gamma
 Adiabatic Index.
 
real _mass
 Mass of species.
 
real _charge
 Ion charge of species.
 
real _min_density
 Density floor.
 
real _min_pressure
 Pressure floor.
 
real _coeff_dens
 Coefficient on artificial diffusivity for density.
 
real _coeff_mom
 Coefficient on artificial diffusivity for moment.
 
real _coeff_heat
 Coefficient on artificial diffusivity for heat flux.
 
real _diff_cap
 Maximum diffusivity.
 
bool _use_v_anom
 If True will convect momentum and energy consistent with an anomalous velocity associated with artificial density diffusion.
 
real _cfl_diff
 Factor in dt calculation for diffusion.
 
real _dx_cut
 Minimum value for dx_eff.
 
bool _is_cyl
 
int _ir
 
int _ith
 
int _iz
 
std::string _gradient_method
 gradient calculation method ("ip" or "ldg")
 
std::vector< int > _input_variables
 
std::vector< int > _aux_variables
 
std::vector< int > _output_variables
 
std::vector< std::vector< real > > _flux_tensor
 
- 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

◆ ArtificialDissipation()

wxm::apps::mhd::limiters::ArtificialDissipation::ArtificialDissipation ( )

Constructor.

◆ ~ArtificialDissipation()

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

Destructor.

Member Function Documentation

◆ getAuxiliaryVariableIndexes()

const std::vector< int > & wxm::apps::mhd::limiters::ArtificialDissipation::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::ArtificialDissipation::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::ArtificialDissipation::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::ArtificialDissipation::internal_flux ( const real q,
const real aux,
const solverVariables_t pSV,
std::vector< std::vector< real > > &  internalFlux 
) const
overridevirtual

Internal flux redefinition from wmapplication parent.

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::ArtificialDissipation::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 wmapplication parent.

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::ArtificialDissipation::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::ArtificialDissipation::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::ArtificialDissipation::setup ( const WxCryptSet wxc)
overridevirtual

Setup.

Parameters
WxCryptSetobject

Reimplemented from WmApplication.

Member Data Documentation

◆ _aux_variables

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

◆ _cfl_diff

real wxm::apps::mhd::limiters::ArtificialDissipation::_cfl_diff
protected

Factor in dt calculation for diffusion.

◆ _charge

real wxm::apps::mhd::limiters::ArtificialDissipation::_charge
protected

Ion charge of species.

◆ _coeff_dens

real wxm::apps::mhd::limiters::ArtificialDissipation::_coeff_dens
protected

Coefficient on artificial diffusivity for density.

◆ _coeff_heat

real wxm::apps::mhd::limiters::ArtificialDissipation::_coeff_heat
protected

Coefficient on artificial diffusivity for heat flux.

◆ _coeff_mom

real wxm::apps::mhd::limiters::ArtificialDissipation::_coeff_mom
protected

Coefficient on artificial diffusivity for moment.

◆ _diff_cap

real wxm::apps::mhd::limiters::ArtificialDissipation::_diff_cap
protected

Maximum diffusivity.

◆ _dx_cut

real wxm::apps::mhd::limiters::ArtificialDissipation::_dx_cut
protected

Minimum value for dx_eff.

If 0, will just use cfl grid-dependent dx metric, dx_eff = cfl * dx

◆ _flux_tensor

std::vector<std::vector<real> > wxm::apps::mhd::limiters::ArtificialDissipation::_flux_tensor
mutableprotected

◆ _gas_gamma

real wxm::apps::mhd::limiters::ArtificialDissipation::_gas_gamma
protected

Adiabatic Index.

◆ _gradient_method

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

gradient calculation method ("ip" or "ldg")

◆ _input_variables

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

◆ _ir

int wxm::apps::mhd::limiters::ArtificialDissipation::_ir
protected

◆ _is_cyl

bool wxm::apps::mhd::limiters::ArtificialDissipation::_is_cyl
protected

◆ _ith

int wxm::apps::mhd::limiters::ArtificialDissipation::_ith
protected

◆ _iz

int wxm::apps::mhd::limiters::ArtificialDissipation::_iz
protected

◆ _mass

real wxm::apps::mhd::limiters::ArtificialDissipation::_mass
protected

Mass of species.

◆ _min_density

real wxm::apps::mhd::limiters::ArtificialDissipation::_min_density
protected

Density floor.

◆ _min_pressure

real wxm::apps::mhd::limiters::ArtificialDissipation::_min_pressure
protected

Pressure floor.

◆ _output_variables

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

◆ _use_v_anom

bool wxm::apps::mhd::limiters::ArtificialDissipation::_use_v_anom
protected

If True will convect momentum and energy consistent with an anomalous velocity associated with artificial density diffusion.

Default False.


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