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

The ndg_moe_rossmanith class applies limiters to a dataset. More...

#include <ndg_moe_rossmanith.h>

Inheritance diagram for wxm::dfem::variable_adjuster::limiter::ndg_moe_rossmanith:
wxm::dfem::variable_adjuster::limiter::ndg_moment_slope_limiter_base wxm::dfem::variable_adjuster::variable_adjuster_t WmPatchProcess

Detailed Description

The ndg_moe_rossmanith class applies limiters to a dataset.

This is my attempt at implementation of DG limiter presented by Moe and Rossmanith for Warpxm

The paper is: A SIMPLE AND EFFECTIVE HIGH-ORDER SHOCK CAPTURING LIMITER FOR DISCONTINUOUS GALERKIN METHODS. SCOTT A. MOE, JAMES A. ROSSMANITH, DAVID C. SEAL. 2015. https://arxiv.org/abs/1507.03024

Public Member Functions

 ndg_moe_rossmanith ()=default
 
virtual void setup (const WxCryptSet &wxc) override
 Setup the spatial solver using the cryptset.
 
- Public Member Functions inherited from wxm::dfem::variable_adjuster::limiter::ndg_moment_slope_limiter_base
 ndg_moment_slope_limiter_base ()=default
 
virtual void setup (const WxCryptSet &wxc) override
 Setup the spatial solver using the cryptset.
 
void solve (real time, variables_type &input) override
 Solves the spatial system and puts result in _rhs.
 
- 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 Member Functions

real y_func (const real extremum, const real qi_bar, const real element_extremum) const
 
real phi_func (const real y) const
 
real alpha_func (const int elementIndex) const
 
virtual void limiting_kernel (const WxRange &element_scope_range, real time, std::vector< wxm::array::patch_array_t * > &input) override
 
virtual void allocate () override
 
- Protected Member Functions inherited from wxm::dfem::variable_adjuster::limiter::ndg_moment_slope_limiter_base
void primitive_kernel (const WxRange &element_scope_range, real time, std::string direction, const std::vector< std::vector< real > > &input, std::vector< std::vector< real > > &output)
 
virtual void averaging_kernel (const WxRange &element_scope_range, const WxRange &face_scope_range, const real time, const std::vector< wxm::array::patch_array_t * > &input)
 
virtual void limiting_kernel (const WxRange &element_scope_range, real time, std::vector< wxm::array::patch_array_t * > &input)=0
 
virtual void allocate ()
 
virtual void zero ()
 

Protected Attributes

std::vector< real_neighbor_upper_bound
 
std::vector< real_neighbor_lower_bound
 
std::vector< real_theta_M_i
 
std::vector< real_theta_m_i
 
std::vector< real_theta_i
 
real _alpha_coefficient
 
- Protected Attributes inherited from wxm::dfem::variable_adjuster::limiter::ndg_moment_slope_limiter_base
std::vector< real_global_averages
 
std::vector< real_global_centers
 
std::vector< real_global_maximums
 
std::vector< real_global_minimums
 
std::vector< real_global_w_averages
 
std::vector< real_global_w_centers
 
std::vector< real_global_w_maximums
 
std::vector< real_global_w_minimums
 
wxm::dfem::tools::scope_t _limiting_scope
 
wxm::dfem::tools::scope_t _averaging_scope
 
wxm::dfem::tools::scope_t _averaging_face_scope
 
std::string _basisSetName
 
WmBasisArraySet _basis_set
 
std::unique_ptr< WmUDGGeometry_dg_geometry
 
std::vector< std::vector< real > > _w
 
std::vector< std::vector< real > > _in_vec
 
std::vector< std::vector< real > > _out_vec
 
- 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

◆ ndg_moe_rossmanith()

wxm::dfem::variable_adjuster::limiter::ndg_moe_rossmanith::ndg_moe_rossmanith ( )
default

Member Function Documentation

◆ allocate()

virtual void wxm::dfem::variable_adjuster::limiter::ndg_moe_rossmanith::allocate ( )
overrideprotectedvirtual

◆ alpha_func()

real wxm::dfem::variable_adjuster::limiter::ndg_moe_rossmanith::alpha_func ( const int  elementIndex) const
protected

◆ limiting_kernel()

virtual void wxm::dfem::variable_adjuster::limiter::ndg_moe_rossmanith::limiting_kernel ( const WxRange element_scope_range,
real  time,
std::vector< wxm::array::patch_array_t * > &  input 
)
overrideprotectedvirtual

◆ phi_func()

real wxm::dfem::variable_adjuster::limiter::ndg_moe_rossmanith::phi_func ( const real  y) const
protected

◆ setup()

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

Setup the spatial solver using the cryptset.

Parameters
wxcThe cryptset

Reimplemented from wxm::dfem::variable_adjuster::limiter::ndg_moment_slope_limiter_base.

◆ y_func()

real wxm::dfem::variable_adjuster::limiter::ndg_moe_rossmanith::y_func ( const real  extremum,
const real  qi_bar,
const real  element_extremum 
) const
protected

Member Data Documentation

◆ _alpha_coefficient

real wxm::dfem::variable_adjuster::limiter::ndg_moe_rossmanith::_alpha_coefficient
protected

◆ _neighbor_lower_bound

std::vector<real> wxm::dfem::variable_adjuster::limiter::ndg_moe_rossmanith::_neighbor_lower_bound
protected

◆ _neighbor_upper_bound

std::vector<real> wxm::dfem::variable_adjuster::limiter::ndg_moe_rossmanith::_neighbor_upper_bound
protected

◆ _theta_i

std::vector<real> wxm::dfem::variable_adjuster::limiter::ndg_moe_rossmanith::_theta_i
protected

◆ _theta_M_i

std::vector<real> wxm::dfem::variable_adjuster::limiter::ndg_moe_rossmanith::_theta_M_i
protected

◆ _theta_m_i

std::vector<real> wxm::dfem::variable_adjuster::limiter::ndg_moe_rossmanith::_theta_m_i
protected

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