WARPXM v1.10.0
Loading...
Searching...
No Matches
wxm::dfem::variable_adjuster::gradient::gradient_interior_penalty_internal_approximation Class Reference

The WmVariableAdjusterGradient class is a gradient interior penalty approximation variable adjuster. More...

#include <gradient_interior_penalty_internal_approximation.h>

Inheritance diagram for wxm::dfem::variable_adjuster::gradient::gradient_interior_penalty_internal_approximation:
wxm::dfem::variable_adjuster::variable_adjuster_t WmPatchProcess

Detailed Description

The WmVariableAdjusterGradient class is a gradient interior penalty approximation variable adjuster.

Specifically we are looking for the calculation Y_ijk == dq_i/dx_j|_k = dq_i/d_\xi_l d\xi_l/d_x_j|_k = d(q_im \psi_m)/d\xi_l J^-1_lj|_k = J^-1_lj q_im d\psi_m/d_\xi_l|_k where it can be derived for nodal basis Dr_klm == d\psi_m/d_\xi_l|_k = M^-1_kn A_nlm so then Y_ijk = J^-1_lj q_im Dr_klm

Public Member Functions

 gradient_interior_penalty_internal_approximation ()=default
 
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

void alloc_fluxes ()
 
void zero_fluxes ()
 
void ex_kernel (const WxRange &face_scope_range, std::vector< wxm::array::patch_array_t * > &input)
 
void ldg_scheme (const int faceIndex, const int local_face_node_index, const int global_node_index_in, const int global_node_index_out, solverVariables_t *pSV, std::vector< wxm::array::patch_array_t * > &input)
 
void ip_scheme (const int faceIndex, const int local_face_node_index, const int global_node_index_in, const int global_node_index_out, solverVariables_t *pSV, std::vector< wxm::array::patch_array_t * > &input)
 
void in_kernel (const WxRange &element_scope_range, std::vector< wxm::array::patch_array_t * > &input)
 
void co_kernel (const WxRange &element_scope_range, std::vector< wxm::array::patch_array_t * > &input)
 

Protected Attributes

std::vector< size_t > _gradient_input_indexes
 
std::vector< size_t > _gradient_output_indexes
 
real _penalty_beta
 
real _penalty_eta
 
std::string _basisSetName
 
WmBasisArraySet _basis_set
 
std::unique_ptr< WmUDGGeometry_dg_geometry
 
std::vector< std::vector< std::vector< std::vector< real > > > > _numerical_fluxes
 
std::vector< std::vector< std::vector< real > > > _internal_fluxes
 
wxm::dfem::tools::scope_t _element_flux
 
wxm::dfem::tools::scope_t _face_flux
 
WxRange _chunk_size_element
 
WxRange _chunk_size_face
 
- 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

◆ gradient_interior_penalty_internal_approximation()

wxm::dfem::variable_adjuster::gradient::gradient_interior_penalty_internal_approximation::gradient_interior_penalty_internal_approximation ( )
default

Member Function Documentation

◆ alloc_fluxes()

void wxm::dfem::variable_adjuster::gradient::gradient_interior_penalty_internal_approximation::alloc_fluxes ( )
protected

◆ co_kernel()

void wxm::dfem::variable_adjuster::gradient::gradient_interior_penalty_internal_approximation::co_kernel ( const WxRange element_scope_range,
std::vector< wxm::array::patch_array_t * > &  input 
)
protected

◆ ex_kernel()

void wxm::dfem::variable_adjuster::gradient::gradient_interior_penalty_internal_approximation::ex_kernel ( const WxRange face_scope_range,
std::vector< wxm::array::patch_array_t * > &  input 
)
protected

◆ in_kernel()

void wxm::dfem::variable_adjuster::gradient::gradient_interior_penalty_internal_approximation::in_kernel ( const WxRange element_scope_range,
std::vector< wxm::array::patch_array_t * > &  input 
)
protected

◆ ip_scheme()

void wxm::dfem::variable_adjuster::gradient::gradient_interior_penalty_internal_approximation::ip_scheme ( const int  faceIndex,
const int  local_face_node_index,
const int  global_node_index_in,
const int  global_node_index_out,
solverVariables_t pSV,
std::vector< wxm::array::patch_array_t * > &  input 
)
protected

◆ ldg_scheme()

void wxm::dfem::variable_adjuster::gradient::gradient_interior_penalty_internal_approximation::ldg_scheme ( const int  faceIndex,
const int  local_face_node_index,
const int  global_node_index_in,
const int  global_node_index_out,
solverVariables_t pSV,
std::vector< wxm::array::patch_array_t * > &  input 
)
protected

◆ setup()

void wxm::dfem::variable_adjuster::gradient::gradient_interior_penalty_internal_approximation::setup ( const WxCryptSet wxc)
overridevirtual

Setup the spatial solver using the cryptset.

Parameters
wxcThe cryptset

Reimplemented from WmPatchProcess.

◆ solve()

void wxm::dfem::variable_adjuster::gradient::gradient_interior_penalty_internal_approximation::solve ( real  time,
variables_type input 
)
overridevirtual

Solves the spatial system and puts result in _rhs.

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

◆ zero_fluxes()

void wxm::dfem::variable_adjuster::gradient::gradient_interior_penalty_internal_approximation::zero_fluxes ( )
protected

Member Data Documentation

◆ _basis_set

WmBasisArraySet wxm::dfem::variable_adjuster::gradient::gradient_interior_penalty_internal_approximation::_basis_set
protected

◆ _basisSetName

std::string wxm::dfem::variable_adjuster::gradient::gradient_interior_penalty_internal_approximation::_basisSetName
protected

◆ _chunk_size_element

WxRange wxm::dfem::variable_adjuster::gradient::gradient_interior_penalty_internal_approximation::_chunk_size_element
protected

◆ _chunk_size_face

WxRange wxm::dfem::variable_adjuster::gradient::gradient_interior_penalty_internal_approximation::_chunk_size_face
protected

◆ _dg_geometry

std::unique_ptr<WmUDGGeometry> wxm::dfem::variable_adjuster::gradient::gradient_interior_penalty_internal_approximation::_dg_geometry
protected

◆ _element_flux

wxm::dfem::tools::scope_t wxm::dfem::variable_adjuster::gradient::gradient_interior_penalty_internal_approximation::_element_flux
protected

◆ _face_flux

wxm::dfem::tools::scope_t wxm::dfem::variable_adjuster::gradient::gradient_interior_penalty_internal_approximation::_face_flux
protected

◆ _gradient_input_indexes

std::vector<size_t> wxm::dfem::variable_adjuster::gradient::gradient_interior_penalty_internal_approximation::_gradient_input_indexes
protected

◆ _gradient_output_indexes

std::vector<size_t> wxm::dfem::variable_adjuster::gradient::gradient_interior_penalty_internal_approximation::_gradient_output_indexes
protected

◆ _internal_fluxes

std::vector<std::vector<std::vector<real> > > wxm::dfem::variable_adjuster::gradient::gradient_interior_penalty_internal_approximation::_internal_fluxes
protected

◆ _numerical_fluxes

std::vector<std::vector<std::vector<std::vector<real> > > > wxm::dfem::variable_adjuster::gradient::gradient_interior_penalty_internal_approximation::_numerical_fluxes
protected

◆ _penalty_beta

real wxm::dfem::variable_adjuster::gradient::gradient_interior_penalty_internal_approximation::_penalty_beta
protected

◆ _penalty_eta

real wxm::dfem::variable_adjuster::gradient::gradient_interior_penalty_internal_approximation::_penalty_eta
protected

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