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

Simple scaling limiter which enforces positivity of density and pressure while preserving cell averages. More...

#include <ndg_euler_positivity_enforcing_limiter.h>

Inheritance diagram for wxm::dfem::variable_adjuster::limiter::positivity_enforcing::NDGEulerPositivityPreservingLimiter:
wxm::dfem::variable_adjuster::variable_adjuster_t WmPatchProcess

Detailed Description

Simple scaling limiter which enforces positivity of density and pressure while preserving cell averages.

Warpy constructor: warpy.variable_adjusters.limiters.dg_positivity_enforcing_limiter.dg_euler_positivity_enforcing_limiter

See also
Writeup document

Public Member Functions

 NDGEulerPositivityPreservingLimiter ()=default
 
virtual void setup (const WxCryptSet &wxc) override
 Setup the spatial solver using the cryptset.
 
void solve (real time, variables_type &input) override
 Applies the limiter to input by modifying it in place.
 
- Public Member Functions inherited from wxm::dfem::variable_adjuster::variable_adjuster_t
 variable_adjuster_t ()
 Constructor.
 
void setup (const WxCryptSet &wxc) override
 Setup the spatial solver using the cryptset.
 
virtual void solve (real time, variables_type &input)=0
 applies the variable adjuster to input
 
std::vector< wxm::array::patch_array_t * > get_patch_arrays (const variables_type &in)
 
void process () override
 
virtual const std::vector< size_t > & get_input_indices () const
 
int priority () const
 Getter function for priority.
 
virtual void Barrier (const WxMsgBase &msg, const real time, variables_type &input)
 An opportunity for the variable adjuster to perform any MPI operations it needs to after solve is called.
 
- Public Member Functions inherited from WmPatchProcess
 WmPatchProcess ()
 
virtual ~WmPatchProcess ()=default
 
void step ()
 
virtual void process ()=0
 
void setPatch (const WmUnstructuredPatch *patch)
 
void setParentTaskProcessor (WmPatchProcessor *taskProcessor)
 
virtual std::string name (std::string prefix="patchedProcessor.") const
 
virtual void setup (const WxCryptSet &wxc)
 
void setParentSolver (const WmSolverBase *solver)
 
void setDt (WxStepper::time_t dt)
 
void setTime (WxStepper::time_t time)
 
WxStepper::time_t getSuggestedDt () const
 
const WmUnstructuredPatchget_patch () const
 
const WmSolverget_solver () const
 

Protected Attributes

WmBasisArraySet _basis_set
 
std::unique_ptr< WmUDGGeometry_dg_geometry
 
real _eps_rho
 The minimum allowable value of density.
 
real _eps_p
 The minimum allowable value of internal energy, i.e.
 
bool _include_gaussian_quad_nodes
 Whether the basis's GQ nodes should be included in the set of positivity nodes.
 
bool _include_interior_lgl_nodes
 Whether the basis's interior LGL nodes should be included in the set of positivity nodes.
 
WxRange _element_range
 
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
 
- Protected Attributes inherited from wxm::dfem::variable_adjuster::variable_adjuster_t
std::vector< size_t > _var_idcs
 
std::vector< std::unique_ptr< WmApplication > > _apps
 
bool _grab_all = false
 
int _priority
 
- Protected Attributes inherited from WmPatchProcess
std::string _ppName
 
WmPatchProcessor_parentTaskProcessor
 
const WmUnstructuredPatch_patch
 
std::vector< std::string > _onSubdomains
 
WxStepper::time_t _time
 
WxStepper::time_t _dt
 
WxStepper::time_t _suggested_dt
 
WxLogStream _debStrm = WxLogger::get("warpx-root.console")->getDebugStream()
 
const WmSolverBase_parentSolver = nullptr
 

Additional Inherited Members

- Public Types inherited from wxm::dfem::variable_adjuster::variable_adjuster_t
typedef wxm::temporal_solver::variables_type variables_type
 

Constructor & Destructor Documentation

◆ NDGEulerPositivityPreservingLimiter()

wxm::dfem::variable_adjuster::limiter::positivity_enforcing::NDGEulerPositivityPreservingLimiter::NDGEulerPositivityPreservingLimiter ( )
default

Member Function Documentation

◆ setup()

virtual void wxm::dfem::variable_adjuster::limiter::positivity_enforcing::NDGEulerPositivityPreservingLimiter::setup ( const WxCryptSet wxc)
overridevirtual

Setup the spatial solver using the cryptset.

Parameters
wxcThe cryptset

Reimplemented from WmPatchProcess.

◆ solve()

void wxm::dfem::variable_adjuster::limiter::positivity_enforcing::NDGEulerPositivityPreservingLimiter::solve ( real  time,
variables_type input 
)
overridevirtual

Applies the limiter to input by modifying it in place.

Implements wxm::dfem::variable_adjuster::variable_adjuster_t.

Member Data Documentation

◆ _basis_set

WmBasisArraySet wxm::dfem::variable_adjuster::limiter::positivity_enforcing::NDGEulerPositivityPreservingLimiter::_basis_set
protected

◆ _dg_geometry

std::unique_ptr<WmUDGGeometry> wxm::dfem::variable_adjuster::limiter::positivity_enforcing::NDGEulerPositivityPreservingLimiter::_dg_geometry
protected

◆ _e_bar

std::vector<real> wxm::dfem::variable_adjuster::limiter::positivity_enforcing::NDGEulerPositivityPreservingLimiter::_e_bar
protected

◆ _element_range

WxRange wxm::dfem::variable_adjuster::limiter::positivity_enforcing::NDGEulerPositivityPreservingLimiter::_element_range
protected

◆ _eps_p

real wxm::dfem::variable_adjuster::limiter::positivity_enforcing::NDGEulerPositivityPreservingLimiter::_eps_p
protected

The minimum allowable value of internal energy, i.e.

\(p / (gamma-1)\)

◆ _eps_rho

real wxm::dfem::variable_adjuster::limiter::positivity_enforcing::NDGEulerPositivityPreservingLimiter::_eps_rho
protected

The minimum allowable value of density.

◆ _include_gaussian_quad_nodes

bool wxm::dfem::variable_adjuster::limiter::positivity_enforcing::NDGEulerPositivityPreservingLimiter::_include_gaussian_quad_nodes
protected

Whether the basis's GQ nodes should be included in the set of positivity nodes.

This should be set to true if the simulation involves source terms evaluated at the GQ nodes.

◆ _include_interior_lgl_nodes

bool wxm::dfem::variable_adjuster::limiter::positivity_enforcing::NDGEulerPositivityPreservingLimiter::_include_interior_lgl_nodes
protected

Whether the basis's interior LGL nodes should be included in the set of positivity nodes.

This should be set to true if the simulation involves source terms of variables at the standard LGL nodes.

Only needed in 2D and 3D. Has no effect in 1D since the standard positivity nodes are already precisely all the LGL nodes.

◆ _rho_bar

std::vector<real> wxm::dfem::variable_adjuster::limiter::positivity_enforcing::NDGEulerPositivityPreservingLimiter::_rho_bar
protected

◆ _rho_ux_bar

std::vector<real> wxm::dfem::variable_adjuster::limiter::positivity_enforcing::NDGEulerPositivityPreservingLimiter::_rho_ux_bar
protected

◆ _rho_uy_bar

std::vector<real> wxm::dfem::variable_adjuster::limiter::positivity_enforcing::NDGEulerPositivityPreservingLimiter::_rho_uy_bar
protected

◆ _rho_uz_bar

std::vector<real> wxm::dfem::variable_adjuster::limiter::positivity_enforcing::NDGEulerPositivityPreservingLimiter::_rho_uz_bar
protected

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