WARPXM v1.10.0
Loading...
Searching...
No Matches
wxm::dfem::variable_adjuster::limiter::positivity_enforcing::EulerLimiterHelper Class Reference

Helper class for the NDGEulerPositivityPreservingLimiter. More...

#include <ndg_euler_positivity_enforcing_limiter.h>

Detailed Description

Helper class for the NDGEulerPositivityPreservingLimiter.

This class and its methods should not be used in isolation, only by the limiter class.

See also
NDGEulerPositivityPreservingLimiter
Writeup document

Public Member Functions

 EulerLimiterHelper (std::vector< real > &rho_bar, std::vector< real > &rho_ux_bar, std::vector< real > &rho_uy_bar, std::vector< real > &rho_uz_bar, std::vector< real > &e_bar, wxm::array::patch_array_t *rho, wxm::array::patch_array_t *rho_ux, wxm::array::patch_array_t *rho_uy, wxm::array::patch_array_t *rho_uz, wxm::array::patch_array_t *e, int num_pp_quad_nodes, int num_lagrange_nodes, int ndims)
 
void take_elementwise_averages (WmBasisArraySet &basis_set, WxRange &_element_range, int ndims)
 Take elementwise averages over the given element range, and write them to the _bar suffixed instance variables.
 
void convertElementLagrangeToPPQuadNodes (WmBasisArraySet &basis_set, int element_start, bool include_gaussian_quad_nodes, bool include_interior_lgl_nodes)
 Perform the conversion of Lagrange nodal to Positivity-preserving quadrature nodal values, for the given element start index.
 
real internalEnergyOfCellAverage (int element_index)
 Compute the internal energy of the cell average, e_bar - |rho_u_bar|^2 / (2*rho_bar).
 
real calculateAndScalePPQuadNodesByThetaRho (int element_index, real eps_rho)
 Perform the scaling by theta_rho.
 
real calculateThetaE (int element_index, real internal_energy_bar, real eps_p)
 
void scaleByThetaRhoAndThetaE (int element_index, real theta_rho, real theta_e)
 Complete the scaling by theta_rho and theta_e, overwriting the given element's data in _rho_array, _rho_ux_array, etc.
 

Static Public Member Functions

static real internal_energy (real rho, real rho_ux, real rho_uy, real rho_uz, real E, int ndims)
 Compute the internal energy, E - |rho_u|^2/(2*rho)
 
static real calculate_theta_rho (std::vector< real > &rho, real rho_bar, real eps_rho)
 

Public Attributes

int ndims
 
int num_lagrange_nodes
 
std::vector< real > & _rho_bar
 
std::vector< real > & _rho_ux_bar
 
std::vector< real > & _rho_uy_bar
 
std::vector< real > & _rho_uz_bar
 
std::vector< real > & _e_bar
 
std::vector< real_rho_pp_quad_node_values
 
std::vector< real_rho_ux_pp_quad_node_values
 
std::vector< real_rho_uy_pp_quad_node_values
 
std::vector< real_rho_uz_pp_quad_node_values
 
std::vector< real_e_pp_quad_node_values
 
wxm::array::patch_array_t_rho
 
wxm::array::patch_array_t_rho_ux
 
wxm::array::patch_array_t_rho_uy
 
wxm::array::patch_array_t_rho_uz
 
wxm::array::patch_array_t_e
 
wxm::dfem::array::patch_array_t_rho_array
 
wxm::dfem::array::patch_array_t_rho_ux_array
 
wxm::dfem::array::patch_array_t_rho_uy_array
 
wxm::dfem::array::patch_array_t_rho_uz_array
 
wxm::dfem::array::patch_array_t_e_array
 

Constructor & Destructor Documentation

◆ EulerLimiterHelper()

wxm::dfem::variable_adjuster::limiter::positivity_enforcing::EulerLimiterHelper::EulerLimiterHelper ( std::vector< real > &  rho_bar,
std::vector< real > &  rho_ux_bar,
std::vector< real > &  rho_uy_bar,
std::vector< real > &  rho_uz_bar,
std::vector< real > &  e_bar,
wxm::array::patch_array_t rho,
wxm::array::patch_array_t rho_ux,
wxm::array::patch_array_t rho_uy,
wxm::array::patch_array_t rho_uz,
wxm::array::patch_array_t e,
int  num_pp_quad_nodes,
int  num_lagrange_nodes,
int  ndims 
)
inline

Member Function Documentation

◆ calculate_theta_rho()

static real wxm::dfem::variable_adjuster::limiter::positivity_enforcing::EulerLimiterHelper::calculate_theta_rho ( std::vector< real > &  rho,
real  rho_bar,
real  eps_rho 
)
static

◆ calculateAndScalePPQuadNodesByThetaRho()

real wxm::dfem::variable_adjuster::limiter::positivity_enforcing::EulerLimiterHelper::calculateAndScalePPQuadNodesByThetaRho ( int  element_index,
real  eps_rho 
)

Perform the scaling by theta_rho.

◆ calculateThetaE()

real wxm::dfem::variable_adjuster::limiter::positivity_enforcing::EulerLimiterHelper::calculateThetaE ( int  element_index,
real  internal_energy_bar,
real  eps_p 
)

◆ convertElementLagrangeToPPQuadNodes()

void wxm::dfem::variable_adjuster::limiter::positivity_enforcing::EulerLimiterHelper::convertElementLagrangeToPPQuadNodes ( WmBasisArraySet basis_set,
int  element_start,
bool  include_gaussian_quad_nodes,
bool  include_interior_lgl_nodes 
)

Perform the conversion of Lagrange nodal to Positivity-preserving quadrature nodal values, for the given element start index.

Overwrites the _pp_quad_node_values arrays.

If include_gaussian_quad_nodes is set, also includes the basis's gaussian quadrature nodes in the positivity-preserving node set.

If include_interior_lgl_nodes is set, includes the basis's interior LGL collocation nodes.

◆ internal_energy()

static real wxm::dfem::variable_adjuster::limiter::positivity_enforcing::EulerLimiterHelper::internal_energy ( real  rho,
real  rho_ux,
real  rho_uy,
real  rho_uz,
real  E,
int  ndims 
)
static

Compute the internal energy, E - |rho_u|^2/(2*rho)

◆ internalEnergyOfCellAverage()

real wxm::dfem::variable_adjuster::limiter::positivity_enforcing::EulerLimiterHelper::internalEnergyOfCellAverage ( int  element_index)

Compute the internal energy of the cell average, e_bar - |rho_u_bar|^2 / (2*rho_bar).

◆ scaleByThetaRhoAndThetaE()

void wxm::dfem::variable_adjuster::limiter::positivity_enforcing::EulerLimiterHelper::scaleByThetaRhoAndThetaE ( int  element_index,
real  theta_rho,
real  theta_e 
)

Complete the scaling by theta_rho and theta_e, overwriting the given element's data in _rho_array, _rho_ux_array, etc.

◆ take_elementwise_averages()

void wxm::dfem::variable_adjuster::limiter::positivity_enforcing::EulerLimiterHelper::take_elementwise_averages ( WmBasisArraySet basis_set,
WxRange _element_range,
int  ndims 
)

Take elementwise averages over the given element range, and write them to the _bar suffixed instance variables.

Member Data Documentation

◆ _e

wxm::array::patch_array_t* wxm::dfem::variable_adjuster::limiter::positivity_enforcing::EulerLimiterHelper::_e

◆ _e_array

wxm::dfem::array::patch_array_t* wxm::dfem::variable_adjuster::limiter::positivity_enforcing::EulerLimiterHelper::_e_array

◆ _e_bar

std::vector<real>& wxm::dfem::variable_adjuster::limiter::positivity_enforcing::EulerLimiterHelper::_e_bar

◆ _e_pp_quad_node_values

std::vector<real> wxm::dfem::variable_adjuster::limiter::positivity_enforcing::EulerLimiterHelper::_e_pp_quad_node_values

◆ _rho

wxm::array::patch_array_t* wxm::dfem::variable_adjuster::limiter::positivity_enforcing::EulerLimiterHelper::_rho

◆ _rho_array

wxm::dfem::array::patch_array_t* wxm::dfem::variable_adjuster::limiter::positivity_enforcing::EulerLimiterHelper::_rho_array

◆ _rho_bar

std::vector<real>& wxm::dfem::variable_adjuster::limiter::positivity_enforcing::EulerLimiterHelper::_rho_bar

◆ _rho_pp_quad_node_values

std::vector<real> wxm::dfem::variable_adjuster::limiter::positivity_enforcing::EulerLimiterHelper::_rho_pp_quad_node_values

◆ _rho_ux

wxm::array::patch_array_t* wxm::dfem::variable_adjuster::limiter::positivity_enforcing::EulerLimiterHelper::_rho_ux

◆ _rho_ux_array

wxm::dfem::array::patch_array_t* wxm::dfem::variable_adjuster::limiter::positivity_enforcing::EulerLimiterHelper::_rho_ux_array

◆ _rho_ux_bar

std::vector<real>& wxm::dfem::variable_adjuster::limiter::positivity_enforcing::EulerLimiterHelper::_rho_ux_bar

◆ _rho_ux_pp_quad_node_values

std::vector<real> wxm::dfem::variable_adjuster::limiter::positivity_enforcing::EulerLimiterHelper::_rho_ux_pp_quad_node_values

◆ _rho_uy

wxm::array::patch_array_t* wxm::dfem::variable_adjuster::limiter::positivity_enforcing::EulerLimiterHelper::_rho_uy

◆ _rho_uy_array

wxm::dfem::array::patch_array_t* wxm::dfem::variable_adjuster::limiter::positivity_enforcing::EulerLimiterHelper::_rho_uy_array

◆ _rho_uy_bar

std::vector<real>& wxm::dfem::variable_adjuster::limiter::positivity_enforcing::EulerLimiterHelper::_rho_uy_bar

◆ _rho_uy_pp_quad_node_values

std::vector<real> wxm::dfem::variable_adjuster::limiter::positivity_enforcing::EulerLimiterHelper::_rho_uy_pp_quad_node_values

◆ _rho_uz

wxm::array::patch_array_t* wxm::dfem::variable_adjuster::limiter::positivity_enforcing::EulerLimiterHelper::_rho_uz

◆ _rho_uz_array

wxm::dfem::array::patch_array_t* wxm::dfem::variable_adjuster::limiter::positivity_enforcing::EulerLimiterHelper::_rho_uz_array

◆ _rho_uz_bar

std::vector<real>& wxm::dfem::variable_adjuster::limiter::positivity_enforcing::EulerLimiterHelper::_rho_uz_bar

◆ _rho_uz_pp_quad_node_values

std::vector<real> wxm::dfem::variable_adjuster::limiter::positivity_enforcing::EulerLimiterHelper::_rho_uz_pp_quad_node_values

◆ ndims

int wxm::dfem::variable_adjuster::limiter::positivity_enforcing::EulerLimiterHelper::ndims

◆ num_lagrange_nodes

int wxm::dfem::variable_adjuster::limiter::positivity_enforcing::EulerLimiterHelper::num_lagrange_nodes

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