26#ifndef FEEvaluationWrapper_h
27#define FEEvaluationWrapper_h
29#include <boost/preprocessor.hpp>
34#include <deal.II/matrix_free/matrix_free.h>
35#include <deal.II/matrix_free/fe_evaluation.h>
46 dealii::LinearAlgebra::distributed::Vector<T,
47 dealii::MemorySpace::Host>;
79 evaluate(dealii::EvaluationFlags::EvaluationFlags evaluateFlags) = 0;
83 dealii::VectorizedArray<double> &alpha) = 0;
91 dealii::VectorizedArray<double> &alpha) = 0;
98 dealii::AlignedVector<dealii::VectorizedArray<double>> &alpha) = 0;
102 const dealii::VectorizedArray<double> &scaling,
103 dealii::AlignedVector<
104 dealii::Tensor<1, 3, dealii::VectorizedArray<double>>> &alpha) = 0;
108 dealii::AlignedVector<
109 dealii::Tensor<1, 3, dealii::VectorizedArray<double>>> &alpha) = 0;
113 dealii::AlignedVector<dealii::VectorizedArray<double>> &alpha) = 0;
116 virtual dealii::VectorizedArray<double>
121 const dealii::VectorizedArray<double> &value) = 0;
126 double * outputVector) = 0;
131 double * outputVector) = 0;
136 double * outputVector) = 0;
141 const dealii::VectorizedArray<double> &scaleValues,
142 const bool scaleValuesFlag,
143 const dealii::VectorizedArray<double> &scaleGradients,
144 const bool scaleGradientsFlag) = 0;
147 integrate(dealii::EvaluationFlags::EvaluationFlags evaluateFlags) = 0;
149 virtual dealii::Point<3, dealii::VectorizedArray<double>>
154 dealii::AlignedVector<dealii::VectorizedArray<double>> &tempVec) = 0;
160 template <
int FEOrder,
size_type num_1d_quadPo
ints,
size_type n_components>
165 const dealii::MatrixFree<3, double> &matrixFreeData,
166 const size_type matrixFreeVectorComponent,
167 const size_type matrixFreeQuadratureComponent);
172 dealii::FEEvaluation<3, FEOrder, num_1d_quadPoints, n_components>>
189 evaluate(dealii::EvaluationFlags::EvaluationFlags evaluateFlags)
override;
193 dealii::VectorizedArray<double> &alpha)
override;
201 dealii::VectorizedArray<double> &alpha)
override;
208 dealii::AlignedVector<dealii::VectorizedArray<double>> &alpha)
override;
211 submitValues(
const dealii::VectorizedArray<double> &scaling,
212 dealii::AlignedVector<
213 dealii::Tensor<1, 3, dealii::VectorizedArray<double>>>
218 dealii::Tensor<1, 3, dealii::VectorizedArray<double>>>
223 dealii::AlignedVector<dealii::VectorizedArray<double>> &alpha)
override;
225 dealii::VectorizedArray<double>
231 const dealii::VectorizedArray<double> &value)
override;
233 dealii::Point<3, dealii::VectorizedArray<double>>
239 double *outputVector)
override;
244 double * outputVector)
override;
249 double * outputVector)
override;
253 const dealii::VectorizedArray<double> &scaleValues,
254 const bool scaleValuesFlag,
255 const dealii::VectorizedArray<double> &scaleGradients,
256 const bool scaleGradientsFlag)
override;
260 dealii::EvaluationFlags::EvaluationFlags evaluateFlags)
override;
263 getValues(dealii::AlignedVector<dealii::VectorizedArray<double>> &tempVec)
272 template <
size_type numberOfComponents>
289 const dealii::MatrixFree<3, double> &matrixFreeData,
290 const size_type matrixFreeVectorComponent,
291 const size_type matrixFreeQuadratureComponent);
Definition: DealiiFEEvaluationWrapper.h:274
~DealiiFEEvaluationWrapper()
Definition: DealiiFEEvaluationWrapper.cpp:474
size_type d_num1dQuad
Definition: DealiiFEEvaluationWrapper.h:300
size_type d_feDegree
Definition: DealiiFEEvaluationWrapper.h:299
size_type d_matrixFreeQuadratureComponent
Definition: DealiiFEEvaluationWrapper.h:302
const dealii::MatrixFree< 3, double > * d_matrix_free_data
Definition: DealiiFEEvaluationWrapper.h:305
FEEvaluationWrapperBase & getFEEvaluationWrapperBase() const
Definition: DealiiFEEvaluationWrapper.cpp:484
size_type d_matrixFreeVectorComponent
Definition: DealiiFEEvaluationWrapper.h:301
std::unique_ptr< FEEvaluationWrapperBase > d_feEvaluationBase
Definition: DealiiFEEvaluationWrapper.h:304
Definition: DealiiFEEvaluationWrapper.h:42
virtual void readDoFValuesPlain(const distributedCPUVec< double > &tempvec)=0
Calls dealii::FEEvaluation::read_dofs_values_plain.
virtual void submitInterpolatedValuesAndMultiplySquared()=0
virtual void reinit(const size_type macrocell)=0
reinits the dealii::FEEvaluation object for the macrocellIndex
dealii::LinearAlgebra::distributed::Vector< T, dealii::MemorySpace::Host > distributedCPUVec
Definition: DealiiFEEvaluationWrapper.h:47
virtual void submitValues(const dealii::VectorizedArray< double > &scaling, dealii::AlignedVector< dealii::Tensor< 1, 3, dealii::VectorizedArray< double > > > &alpha)=0
virtual void readDoFValues(const distributedCPUVec< double > &tempvec)=0
Calls dealii::FEEvaluation::read_dof_values.
virtual void integrate(dealii::EvaluationFlags::EvaluationFlags evaluateFlags)=0
virtual void getQuadHessianForSubCell(const size_type subCellIndex, const double alpha, double *outputVector)=0
virtual void getValues(dealii::AlignedVector< dealii::VectorizedArray< double > > &tempVec)=0
virtual dealii::VectorizedArray< double > integrateValue()=0
virtual void submitInterpolatedValuesSubmitInterpolatedGradients(const dealii::VectorizedArray< double > &scaleValues, const bool scaleValuesFlag, const dealii::VectorizedArray< double > &scaleGradients, const bool scaleGradientsFlag)=0
virtual void alphaTimesQuadValuesPlusYFromSubCell(const size_type subCellIndex, const double alpha, double *outputVector)=0
virtual void submitInterpolatedValuesAndMultiply(dealii::VectorizedArray< double > &alpha)=0
virtual void getQuadGradientsForSubCell(const size_type subCellIndex, const double alpha, double *outputVector)=0
virtual void submitInterpolatedValuesAndMultiply(dealii::AlignedVector< dealii::VectorizedArray< double > > &alpha)=0
virtual size_type totalNumberofQuadraturePoints()=0
Returns the total number of quadrature points in all 3 directions.
virtual void distributeLocalToGlobal(distributedCPUVec< double > &tempvec)=0
virtual void submitValues(dealii::AlignedVector< dealii::VectorizedArray< double > > &alpha)=0
virtual void submitValueAtQuadpoint(const size_type iQuadPoint, const dealii::VectorizedArray< double > &value)=0
virtual dealii::Point< 3, dealii::VectorizedArray< double > > getQuadraturePoint(const size_type iQuadPoint)=0
virtual void submitGradients(dealii::AlignedVector< dealii::Tensor< 1, 3, dealii::VectorizedArray< double > > > &alpha)=0
virtual ~FEEvaluationWrapperBase()=0
Definition: DealiiFEEvaluationWrapper.cpp:53
virtual void submitInterpolatedGradientsAndMultiply(dealii::VectorizedArray< double > &alpha)=0
virtual void evaluate(dealii::EvaluationFlags::EvaluationFlags evaluateFlags)=0
Calls the dealii::FEEvaluation::evaluate.
Definition: DealiiFEEvaluationWrapper.h:162
void submitGradients(dealii::AlignedVector< dealii::Tensor< 1, 3, dealii::VectorizedArray< double > > > &alpha) override
Definition: DealiiFEEvaluationWrapper.cpp:225
void submitInterpolatedValuesAndMultiply(dealii::VectorizedArray< double > &alpha) override
Definition: DealiiFEEvaluationWrapper.cpp:110
void distributeLocalToGlobal(distributedCPUVec< double > &tempvec) override
Definition: DealiiFEEvaluationWrapper.cpp:399
void submitInterpolatedGradientsAndMultiply(dealii::VectorizedArray< double > &alpha) override
Definition: DealiiFEEvaluationWrapper.cpp:97
dealii::Point< 3, dealii::VectorizedArray< double > > getQuadraturePoint(const size_type iQuadPoint) override
Definition: DealiiFEEvaluationWrapper.cpp:391
void submitInterpolatedValuesSubmitInterpolatedGradients(const dealii::VectorizedArray< double > &scaleValues, const bool scaleValuesFlag, const dealii::VectorizedArray< double > &scaleGradients, const bool scaleGradientsFlag) override
Definition: DealiiFEEvaluationWrapper.cpp:167
void submitValues(const dealii::VectorizedArray< double > &scaling, dealii::AlignedVector< dealii::Tensor< 1, 3, dealii::VectorizedArray< double > > > &alpha) override
Definition: DealiiFEEvaluationWrapper.cpp:152
std::unique_ptr< dealii::FEEvaluation< 3, FEOrder, num_1d_quadPoints, n_components > > d_dealiiFEEvaluation
Definition: DealiiFEEvaluationWrapper.h:173
void getQuadHessianForSubCell(const size_type subCellIndex, const double alpha, double *outputVector) override
Definition: DealiiFEEvaluationWrapper.cpp:288
~FEEvaluationWrapperDerived()
Definition: DealiiFEEvaluationWrapper.cpp:48
void alphaTimesQuadValuesPlusYFromSubCell(const size_type subCellIndex, const double alpha, double *outputVector) override
Definition: DealiiFEEvaluationWrapper.cpp:246
void submitInterpolatedValuesAndMultiplySquared() override
Definition: DealiiFEEvaluationWrapper.cpp:123
size_type totalNumberofQuadraturePoints() override
Returns the total number of quadrature points in all 3 directions.
Definition: DealiiFEEvaluationWrapper.cpp:59
void reinit(const size_type macrocell) override
reinits the dealii::FEEvaluation object for the macrocellIndex
Definition: DealiiFEEvaluationWrapper.cpp:67
void readDoFValuesPlain(const distributedCPUVec< double > &tempvec) override
Calls dealii::FEEvaluation::read_dofs_values_plain.
Definition: DealiiFEEvaluationWrapper.cpp:81
void getValues(dealii::AlignedVector< dealii::VectorizedArray< double > > &tempVec) override
Definition: DealiiFEEvaluationWrapper.cpp:356
dealii::VectorizedArray< double > integrateValue() override
Definition: DealiiFEEvaluationWrapper.cpp:238
void evaluate(dealii::EvaluationFlags::EvaluationFlags evaluateFlags) override
Calls the dealii::FEEvaluation::evaluate.
Definition: DealiiFEEvaluationWrapper.cpp:88
void getQuadGradientsForSubCell(const size_type subCellIndex, const double alpha, double *outputVector) override
Definition: DealiiFEEvaluationWrapper.cpp:263
void submitValueAtQuadpoint(const size_type iQuadPoint, const dealii::VectorizedArray< double > &value) override
Definition: DealiiFEEvaluationWrapper.cpp:381
void integrate(dealii::EvaluationFlags::EvaluationFlags evaluateFlags) override
Definition: DealiiFEEvaluationWrapper.cpp:373
void readDoFValues(const distributedCPUVec< double > &tempvec) override
Calls dealii::FEEvaluation::read_dof_values.
Definition: DealiiFEEvaluationWrapper.cpp:74
dealii includes
Definition: AtomFieldDataSpherical.cpp:31
std::uint64_t size_type
Definition: TypeConfig.h:9