WARPXM v1.10.0
|
The ndg_t class is used for solving the discontinuous Galerkin method. More...
#include <ndg.h>
The ndg_t class is used for solving the discontinuous Galerkin method.
Public Member Functions | |
ndg_t () | |
Constructor. | |
void | setup (const WxCryptSet &wxc) override |
setup sets up the DG solver | |
const std::shared_ptr< TimestepConstraint > | solve (const real time, const variables_type &input, variables_type &output) override |
Computes the RHS. | |
const WxRange & | element_interior_range () const override |
Get a range of elements associated with the interior. | |
const WxRange & | element_periphery_range () const override |
Get a range of elements associated with the interior. | |
const WxRange & | element_full_range () const override |
Get a range of elements associated with the entire patch (periphery+interior) | |
size_t | get_num_dof () const override |
Gets the number of degrees of freedom per element per component. | |
Public Member Functions inherited from wxm::dfem::solver::spatial_solver_t | |
spatial_solver_t ()=default | |
~spatial_solver_t () override=default | |
void | setup (const WxCryptSet &wxc) override |
Setup the spatial solver using the cryptset. | |
virtual const std::shared_ptr< TimestepConstraint > | solve (const real time, const variables_type &input, variables_type &output)=0 |
Solves the spatial system. | |
virtual void | Barrier (const WxMsgBase &msg, const real time, variables_type &output) |
std::vector< wxm::array::patch_array_t * > | get_patch_arrays (const variables_type &in) const |
virtual const WxRange & | element_periphery_range () const =0 |
Get a range of elements associated with the periphery. | |
virtual const WxRange & | element_interior_range () const =0 |
Get a range of elements associated with the interior. | |
virtual const WxRange & | element_full_range () const =0 |
Get a range of elements associated with the entire patch (periphery+interior) | |
virtual void | zero_fluxes ()=0 |
const std::vector< size_t > & | get_output_indices () const |
std::vector< size_t > | convert_to_rhs_indexes (const std::vector< int > &indexes) const |
Converts a vector of indexes to RHS indexes TODO: probably can remove at some point in the future? | |
virtual size_t | get_num_dof () const =0 |
Gets the number of degrees of freedom per element per component. | |
void | process () override |
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 WmUnstructuredPatch & | get_patch () const |
const WmSolver & | get_solver () const |
Protected Member Functions | |
void | initializer_function () |
bool | add_definition (const WmApplication &app, const int key) |
const std::shared_ptr< TimestepConstraint > | ex_kernel (const WxRange &face_scope_range, const real time, const std::vector< wxm::array::patch_array_t * > &input) |
const std::shared_ptr< TimestepConstraint > | exKernelBC (const WxRange &face_scope_range, const real time, const std::vector< wxm::array::patch_array_t * > &input) |
virtual const std::shared_ptr< TimestepConstraint > | in_kernel (const WxRange &element_scope_range, const real time, const std::vector< wxm::array::patch_array_t * > &input) |
virtual void | rhs_kernel (const WxRange &element_scope_range, std::vector< wxm::array::patch_array_t * > &output) |
void | print_kernel (const WxRange &element_scope_range) |
void | zero_fluxes () override |
void | alloc_fluxes () |
Protected Attributes | |
real | _cfl |
bool | _test_dt |
bool | _sources_lgl |
bool | _sources_gq |
real | _penalty_beta |
real | _penalty_eta |
bool | _has_fluxes |
bool | _has_sources |
std::string | _basisSetName |
WmBasisArraySet | _basis_set |
std::string | _source_quad_style |
std::unique_ptr< WmUDGGeometry > | _dg_geometry |
std::vector< std::vector< std::vector< real > > > | _numerical_fluxes |
std::vector< std::vector< std::vector< std::vector< real > > > > | _internal_fluxes |
std::vector< std::vector< std::vector< real > > > | _sources |
std::vector< std::vector< size_t > > | app_to_rhs_idcs_num_flux |
Cache for convert_to_rhs_indexes() for numerical fluxes. | |
std::vector< std::vector< size_t > > | app_to_rhs_idcs_int_flux |
Cache for convert_to_rhs_indexes() for internal fluxes. | |
std::vector< std::vector< size_t > > | app_to_rhs_idcs_source |
Cache for convert_to_rhs_indexes() for sources. | |
std::vector< std::vector< size_t > > | _app_to_rhs_idcs_bc_num_flux |
Cache for convert_to_rhs_indexes() for bc numerical fluxes. | |
wxm::dfem::tools::scope_t | _element_flux |
wxm::dfem::tools::scope_t | _face_flux |
WxRange | _chunk_size_element |
WxRange | _chunk_size_face |
std::vector< std::string > | _numerical_flux_bc_boundaries |
vector of boundaries on which to apply boundary conditions through numerical fluxes | |
std::vector< int > | _numerical_flux_bc_boundary_global_face_indexes |
vector of boundary face indexes on which to apply boundary conditions through numerical fluxes | |
Protected Attributes inherited from wxm::dfem::solver::spatial_solver_t | |
std::vector< size_t > | rhs_idcs_ |
std::vector< size_t > | all_idcs_ |
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::solver::spatial_solver_t | |
typedef wxm::temporal_solver::variables_type | variables_type |
Public Attributes inherited from wxm::dfem::solver::spatial_solver_t | |
bool | test_dt = true |
True if this special solver should compute a stability-based recommended time step. | |
std::vector< std::unique_ptr< WmApplication > > | _apps |
wxm::dfem::solver::dg::ndg_t::ndg_t | ( | ) |
Constructor.
|
protected |
|
protected |
|
inlineoverridevirtual |
Get a range of elements associated with the entire patch (periphery+interior)
Implements wxm::dfem::solver::spatial_solver_t.
|
inlineoverridevirtual |
Get a range of elements associated with the interior.
Implements wxm::dfem::solver::spatial_solver_t.
|
inlineoverridevirtual |
Get a range of elements associated with the interior.
Implements wxm::dfem::solver::spatial_solver_t.
|
protected |
|
protected |
|
inlineoverridevirtual |
Gets the number of degrees of freedom per element per component.
Implements wxm::dfem::solver::spatial_solver_t.
|
protectedvirtual |
|
protected |
|
protected |
|
protectedvirtual |
|
overridevirtual |
|
overridevirtual |
Computes the RHS.
Implements wxm::dfem::solver::spatial_solver_t.
|
overrideprotectedvirtual |
Implements wxm::dfem::solver::spatial_solver_t.
|
protected |
Cache for convert_to_rhs_indexes() for bc numerical fluxes.
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
vector of boundaries on which to apply boundary conditions through numerical fluxes
|
protected |
vector of boundary face indexes on which to apply boundary conditions through numerical fluxes
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
Cache for convert_to_rhs_indexes() for internal fluxes.
|
protected |
Cache for convert_to_rhs_indexes() for numerical fluxes.
|
protected |
Cache for convert_to_rhs_indexes() for sources.