19#ifndef FEEvaluationWrapper_H_
20#define FEEvaluationWrapper_H_
32 template <dftfe::Int components>
36#define FEEvaluationWrapperTemplates(T1, T2) \
37 std::shared_ptr<dealii::FEEvaluation<3, T1, T2, components>>,
38#include "feevaluationWrapper.def"
39#undef FEEvaluationWrapperTemplates
40 std::shared_ptr<dealii::FEEvaluation<3, -1, 1, components>>>;
47#define FEEvaluationWrapperTemplates(T1, T2) \
48 std::shared_ptr<dealii::FEEvaluation<3, T1, T2, 3>>,
49#include "feevaluationWrapper3Comp.def"
50#undef FEEvaluationWrapperTemplates
51 std::shared_ptr<dealii::FEEvaluation<3, -1, 1, 3>>>;
55 template <dftfe::Int components>
59 template <
dftfe::Int components,
class... Args>
66 if constexpr (components == 1)
70#define FEEvaluationWrapperTemplates(T1, T2) \
71 case encodeFEEvaluation(T1, T2): \
72 return FEEvaluationObject<components>( \
73 std::make_shared<dealii::FEEvaluation<3, T1, T2, components>>( \
74 std::forward<Args>(args)...));
75#include "feevaluationWrapper.def"
76#undef FEEvaluationWrapperTemplates
79 std::make_shared<dealii::FEEvaluation<3, -1, 1, components>>(
80 std::forward<Args>(args)...));
83 if constexpr (components == 3)
87#define FEEvaluationWrapperTemplates(T1, T2) \
88 case encodeFEEvaluation(T1, T2): \
89 return FEEvaluationObject<components>( \
90 std::make_shared<dealii::FEEvaluation<3, T1, T2, components>>( \
91 std::forward<Args>(args)...));
92#include "feevaluationWrapper3Comp.def"
93#undef FEEvaluationWrapperTemplates
96 std::make_shared<dealii::FEEvaluation<3, -1, 1, components>>(
97 std::forward<Args>(args)...));
102 template <dftfe::Int components>
110 const dealii::MatrixFree<3, double> &matrixFreeData,
117 matrixFreeVectorComponent,
118 matrixFreeQuadratureComponent))
119 ,
n_q_points(matrixFreeData.get_n_q_points(matrixFreeQuadratureComponent))
122 template <
typename... Args>
126 std::visit([&](
auto &t) { t->reinit(std::forward<Args>(args)...); },
130 template <
typename... Args>
135 [&](
auto &t) { t->read_dof_values(std::forward<Args>(args)...); },
139 template <
typename... Args>
144 [&](
auto &t) { t->read_dof_values_plain(std::forward<Args>(args)...); },
148 template <
typename... Args>
152 std::visit([&](
auto &t) { t->evaluate(std::forward<Args>(args)...); },
156 template <
typename... Args>
161 [&](
auto &t) { t->submit_gradient(std::forward<Args>(args)...); },
165 template <
typename... Args>
169 std::visit([&](
auto &t) { t->submit_value(std::forward<Args>(args)...); },
173 template <
typename... Args>
178 [&](
auto &t) ->
decltype(
auto) {
179 return t->get_value(std::forward<Args>(args)...);
184 template <
typename... Args>
189 [&](
auto &t) ->
decltype(
auto) {
190 return t->get_gradient(std::forward<Args>(args)...);
195 template <
typename... Args>
200 [&](
auto &t) ->
decltype(
auto) {
201 return t->integrate_value(std::forward<Args>(args)...);
206 template <
typename... Args>
211 [&](
auto &t) ->
decltype(
auto) {
212 return t->get_hessian(std::forward<Args>(args)...);
217 template <
typename... Args>
221 std::visit([&](
auto &t) { t->integrate(std::forward<Args>(args)...); },
225 template <
typename... Args>
230 [&](
auto &t) ->
decltype(
auto) {
231 return t->quadrature_point(std::forward<Args>(args)...);
236 template <
typename... Args>
241 [&](
auto &t) ->
decltype(
auto) {
242 return t->JxW(std::forward<Args>(args)...);
247 template <
typename... Args>
253 t->distribute_local_to_global(std::forward<Args>(args)...);
const dftfe::uInt n_q_points
Definition feevaluationWrapper.h:259
decltype(auto) quadrature_point(Args &&...args)
Definition feevaluationWrapper.h:227
void read_dof_values(Args &&...args)
Definition feevaluationWrapper.h:132
decltype(auto) get_value(Args &&...args)
Definition feevaluationWrapper.h:175
void read_dof_values_plain(Args &&...args)
Definition feevaluationWrapper.h:141
void submit_gradient(Args &&...args)
Definition feevaluationWrapper.h:158
void integrate(Args &&...args)
Definition feevaluationWrapper.h:219
decltype(auto) JxW(Args &&...args)
Definition feevaluationWrapper.h:238
FEEvaluationObject< components > d_FEEvaluationObject
Definition feevaluationWrapper.h:262
decltype(auto) integrate_value(Args &&...args)
Definition feevaluationWrapper.h:197
void reinit(Args &&...args)
Definition feevaluationWrapper.h:124
void distribute_local_to_global(Args &&...args)
Definition feevaluationWrapper.h:249
decltype(auto) get_hessian(Args &&...args)
Definition feevaluationWrapper.h:208
decltype(auto) get_gradient(Args &&...args)
Definition feevaluationWrapper.h:186
void evaluate(Args &&...args)
Definition feevaluationWrapper.h:150
FEEvaluationWrapperClass(const dftfe::Int feOrder, const dftfe::Int quadrature, const dealii::MatrixFree< 3, double > &matrixFreeData, const dftfe::uInt matrixFreeVectorComponent, const dftfe::uInt matrixFreeQuadratureComponent)
Constructor.
Definition feevaluationWrapper.h:107
void submit_value(Args &&...args)
Definition feevaluationWrapper.h:167
Definition pseudoPotentialToDftfeConverter.cc:34
FEEvaluationObject< components > createFEEvaluationObject(dftfe::Int feOrder, dftfe::Int quadrature, Args &&...args)
Definition feevaluationWrapper.h:61
constexpr dftfe::Int encodeFEEvaluation(dftfe::Int a, dftfe::Int b)
Definition feevaluationWrapper.h:27
typename FEEvalTrait< components >::type FEEvaluationObject
Definition feevaluationWrapper.h:56
std::uint32_t uInt
Definition TypeConfig.h:10
std::int32_t Int
Definition TypeConfig.h:11
std::variant< #define FEEvaluationWrapperTemplates(T1, T2) \ # 1 "/github/workspace/include/feevaluationWrapper3Comp.def" 1 FEEvaluationWrapperTemplates(1, 2) FEEvaluationWrapperTemplates(1, 3) FEEvaluationWrapperTemplates(1, 4) FEEvaluationWrapperTemplates(1, 5) FEEvaluationWrapperTemplates(1, 6) FEEvaluationWrapperTemplates(1, 7) FEEvaluationWrapperTemplates(1, 8) FEEvaluationWrapperTemplates(1, 9) FEEvaluationWrapperTemplates(1, 10) FEEvaluationWrapperTemplates(1, 11) FEEvaluationWrapperTemplates(1, 12) FEEvaluationWrapperTemplates(1, 13) FEEvaluationWrapperTemplates(1, 14) # 49 "/github/workspace/include/feevaluationWrapper.h" 2 std::shared_ptr< dealii::FEEvaluation< 3, -1, 1, 3 > > > type
Definition feevaluationWrapper.h:46
Definition feevaluationWrapper.h:34
std::variant< #define FEEvaluationWrapperTemplates(T1, T2) \ # 1 "/github/workspace/include/feevaluationWrapper.def" 1 FEEvaluationWrapperTemplates(1, 2) FEEvaluationWrapperTemplates(1, 4) FEEvaluationWrapperTemplates(2, 3) FEEvaluationWrapperTemplates(2, 5) FEEvaluationWrapperTemplates(3, 4) FEEvaluationWrapperTemplates(3, 6) FEEvaluationWrapperTemplates(4, 5) FEEvaluationWrapperTemplates(4, 7) FEEvaluationWrapperTemplates(5, 6) FEEvaluationWrapperTemplates(5, 8) FEEvaluationWrapperTemplates(6, 7) FEEvaluationWrapperTemplates(6, 9) FEEvaluationWrapperTemplates(7, 8) FEEvaluationWrapperTemplates(7, 10) FEEvaluationWrapperTemplates(8, 9) FEEvaluationWrapperTemplates(8, 11) FEEvaluationWrapperTemplates(9, 10) FEEvaluationWrapperTemplates(9, 12) FEEvaluationWrapperTemplates(10, 11) FEEvaluationWrapperTemplates(10, 13) FEEvaluationWrapperTemplates(11, 12) FEEvaluationWrapperTemplates(11, 14) FEEvaluationWrapperTemplates(12, 13) FEEvaluationWrapperTemplates(12, 15) FEEvaluationWrapperTemplates(13, 14) FEEvaluationWrapperTemplates(13, 16) FEEvaluationWrapperTemplates(14, 15) FEEvaluationWrapperTemplates(14, 17)# 38 "/github/workspace/include/feevaluationWrapper.h" 2 std::shared_ptr< dealii::FEEvaluation< 3, -1, 1, components > > > type
Definition feevaluationWrapper.h:35