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

The ndg_tu_alibdi class applies limiters to a dataset This is my attempt at implementation of DG limiter presented by Tu and Alibadi for Warpxm It is the "2D Limiter" presented in "Nodal Discontinuous Galerki Methods" by by Hesthaven and Warbarton. More...

#include <ndg_tu_alibadi.h>

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

Detailed Description

The ndg_tu_alibdi class applies limiters to a dataset This is my attempt at implementation of DG limiter presented by Tu and Alibadi for Warpxm It is the "2D Limiter" presented in "Nodal Discontinuous Galerki Methods" by by Hesthaven and Warbarton.

The DG formulation in that book is rather different from WARPXM so we'll see how this goes... The paper is: A SLOPE LIMITING PROCEDURE IN DISCONTINUOUS GALERKIN FINITE ELEMENT METHODS FOR GAS DYNAMICS APPLICATIONS. SHUANGZHANG TU AND SHAHROUZ ALIBADI INTERNATIONAL JOURNAL OF NUMERICAL ANALYSIS AND MODELING, Volume 2, Number 2, Pages 163

This isn't even implemented yet. I skipped this instead for Scott Moe's limiter

Public Member Functions

 ndg_tu_alibadi ()=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

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) override
 
virtual void limiting_kernel (const WxRange &element_scope_range, real time, std::vector< wxm::array::patch_array_t * > &input) override
 
void face_average (const WxRange &face_scope_range, const real time, const std::vector< wxm::array::patch_array_t * > &input)
 
void face_gradient (const WxRange &face_scope_range, const std::vector< wxm::array::patch_array_t * > &input)
 
void unlimited_centroid_gradient (const WxRange &element_scope_range)
 
void limited_centroid_gradient (const WxRange &element_scope_range)
 
void reconstruct_primitives (const WxRange &element_scope_range)
 
virtual void allocate () override
 
virtual void zero () 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< std::vector< real > > _q_avg_face_nodes
 
std::vector< std::vector< real > > _w_avg_face_nodes
 
std::vector< std::vector< real > > _w_face_gradients
 
std::vector< std::vector< real > > _w_unlimited_centroid_gradients
 
std::vector< std::vector< real > > _w_limited_centroid_gradients
 
std::vector< std::vector< real > > _w_limited
 
std::vector< std::vector< real > > _dw_limited
 
- 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_tu_alibadi()

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

Member Function Documentation

◆ allocate()

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

◆ averaging_kernel()

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

◆ face_average()

void wxm::dfem::variable_adjuster::limiter::ndg_tu_alibadi::face_average ( const WxRange face_scope_range,
const real  time,
const std::vector< wxm::array::patch_array_t * > &  input 
)
protected

◆ face_gradient()

void wxm::dfem::variable_adjuster::limiter::ndg_tu_alibadi::face_gradient ( const WxRange face_scope_range,
const std::vector< wxm::array::patch_array_t * > &  input 
)
protected

◆ limited_centroid_gradient()

void wxm::dfem::variable_adjuster::limiter::ndg_tu_alibadi::limited_centroid_gradient ( const WxRange element_scope_range)
protected

◆ limiting_kernel()

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

◆ reconstruct_primitives()

void wxm::dfem::variable_adjuster::limiter::ndg_tu_alibadi::reconstruct_primitives ( const WxRange element_scope_range)
protected

◆ setup()

virtual void wxm::dfem::variable_adjuster::limiter::ndg_tu_alibadi::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.

◆ unlimited_centroid_gradient()

void wxm::dfem::variable_adjuster::limiter::ndg_tu_alibadi::unlimited_centroid_gradient ( const WxRange element_scope_range)
protected

◆ zero()

virtual void wxm::dfem::variable_adjuster::limiter::ndg_tu_alibadi::zero ( )
overrideprotectedvirtual

Member Data Documentation

◆ _dw_limited

std::vector<std::vector<real> > wxm::dfem::variable_adjuster::limiter::ndg_tu_alibadi::_dw_limited
protected

◆ _q_avg_face_nodes

std::vector<std::vector<real> > wxm::dfem::variable_adjuster::limiter::ndg_tu_alibadi::_q_avg_face_nodes
protected

◆ _w_avg_face_nodes

std::vector<std::vector<real> > wxm::dfem::variable_adjuster::limiter::ndg_tu_alibadi::_w_avg_face_nodes
protected

◆ _w_face_gradients

std::vector<std::vector<real> > wxm::dfem::variable_adjuster::limiter::ndg_tu_alibadi::_w_face_gradients
protected

◆ _w_limited

std::vector<std::vector<real> > wxm::dfem::variable_adjuster::limiter::ndg_tu_alibadi::_w_limited
protected

◆ _w_limited_centroid_gradients

std::vector<std::vector<real> > wxm::dfem::variable_adjuster::limiter::ndg_tu_alibadi::_w_limited_centroid_gradients
protected

◆ _w_unlimited_centroid_gradients

std::vector<std::vector<real> > wxm::dfem::variable_adjuster::limiter::ndg_tu_alibadi::_w_unlimited_centroid_gradients
protected

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