WARPXM v1.10.0
Loading...
Searching...
No Matches
gradient_interior_penalty_internal_approximation.h
Go to the documentation of this file.
1#ifndef WMGRADIENT_INTERIOR_PENALTY_INTERNAL_APPROXIMATION_H
2#define WMGRADIENT_INTERIOR_PENALTY_INTERNAL_APPROXIMATION_H
3
4// Wm includes
5#include "dfem/tools/tools.h"
7#include <memory>
8
9namespace wxm
10{
11namespace dfem
12{
13namespace variable_adjuster
14{
15namespace gradient
16{
17
37{
38public:
40
45 void setup(const WxCryptSet& wxc) override;
46
50 void solve(real time, variables_type& input) override;
51
52protected:
55
56 void ex_kernel(const WxRange& face_scope_range,
57 std::vector<wxm::array::patch_array_t*>& input);
58 void ldg_scheme(const int faceIndex,
59 const int local_face_node_index,
60 const int global_node_index_in,
61 const int global_node_index_out,
63 std::vector<wxm::array::patch_array_t*>& input);
64 void ip_scheme(const int faceIndex,
65 const int local_face_node_index,
66 const int global_node_index_in,
67 const int global_node_index_out,
69 std::vector<wxm::array::patch_array_t*>& input);
70
71 void in_kernel(const WxRange& element_scope_range,
72 std::vector<wxm::array::patch_array_t*>& input);
73 void co_kernel(const WxRange& element_scope_range,
74 std::vector<wxm::array::patch_array_t*>& input);
75
76 std::vector<size_t> _gradient_input_indexes;
77 std::vector<size_t> _gradient_output_indexes;
78
79 // Penalty for gradient solvers
82
83 // Spatial basis set name
84 std::string _basisSetName;
85
86 // Spatial basis set
88
89 // WmUDGGeometry
90 std::unique_ptr<WmUDGGeometry> _dg_geometry;
91
92 // Fluxes
93 std::vector<std::vector<std::vector<std::vector<real>>>> _numerical_fluxes;
94 std::vector<std::vector<std::vector<real>>> _internal_fluxes;
95
98
101
102private:
105 operator=(const gradient_interior_penalty_internal_approximation& var) = delete;
106
110};
111
113} // namespace gradient
114} // namespace variable_adjuster
115} // namespace dfem
116} // namespace wxm
117
118#endif // WMGRADIENT_INTERIOR_PENALTY_INTERNAL_APPROXIMATION_H
Definition: wmbasisarrayset.h:13
WxCryptSet extends WxCrypt by providing, in addition to name-value pairs, an set of named WxCryptSets...
Definition: wxcryptset.h:35
WxRange represents a hyper-rectangular domain of an n-dimensional space of integers.
Definition: wxrange.h:23
Definition: tools.h:22
The WmVariableAdjusterGradient class is a gradient interior penalty approximation variable adjuster.
Definition: gradient_interior_penalty_internal_approximation.h:37
std::vector< size_t > _gradient_output_indexes
Definition: gradient_interior_penalty_internal_approximation.h:77
void in_kernel(const WxRange &element_scope_range, 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)
real _penalty_eta
Definition: gradient_interior_penalty_internal_approximation.h:81
real _penalty_beta
Definition: gradient_interior_penalty_internal_approximation.h:80
std::unique_ptr< WmUDGGeometry > _dg_geometry
Definition: gradient_interior_penalty_internal_approximation.h:90
std::vector< size_t > _gradient_input_indexes
Definition: gradient_interior_penalty_internal_approximation.h:76
std::string _basisSetName
Definition: gradient_interior_penalty_internal_approximation.h:84
void co_kernel(const WxRange &element_scope_range, std::vector< wxm::array::patch_array_t * > &input)
wxm::dfem::tools::scope_t _face_flux
Definition: gradient_interior_penalty_internal_approximation.h:97
std::vector< std::vector< std::vector< real > > > _internal_fluxes
Definition: gradient_interior_penalty_internal_approximation.h:94
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)
WxRange _chunk_size_face
Definition: gradient_interior_penalty_internal_approximation.h:100
void ex_kernel(const WxRange &face_scope_range, std::vector< wxm::array::patch_array_t * > &input)
WxRange _chunk_size_element
Definition: gradient_interior_penalty_internal_approximation.h:99
void solve(real time, variables_type &input) override
Solves the spatial system and puts result in _rhs.
wxm::dfem::tools::scope_t _element_flux
Definition: gradient_interior_penalty_internal_approximation.h:96
WmBasisArraySet _basis_set
Definition: gradient_interior_penalty_internal_approximation.h:87
void setup(const WxCryptSet &wxc) override
Setup the spatial solver using the cryptset.
std::vector< std::vector< std::vector< std::vector< real > > > > _numerical_fluxes
Definition: gradient_interior_penalty_internal_approximation.h:93
The WmVariableAdjuster class is a base class for variable adjusters.
Definition: variable_adjuster.h:31
wxm::temporal_solver::variables_type variables_type
Definition: variable_adjuster.h:41
Base namespace for everything not included in the global namespace.
Definition: field_source.h:8
Definition: wmapplication.h:38
#define real
Definition: wmoclunstructuredreconstruction.h:11