16#ifndef HYPERDEAL_NDIM_FEEVALUATION_BASE
17#define HYPERDEAL_NDIM_FEEVALUATION_BASE
19#include <hyper.deal/base/config.h>
21#include <hyper.deal/matrix_free/matrix_free.h>
33 typename VectorizedArrayType>
37 static const int dim = dim_x + dim_v;
39 using NUMBER_ = Number;
40 using VEC_NUMBER_ = VectorizedArrayType;
43 static const unsigned int n_vectors = MF::VectorizedArrayTypeX::size();
44 static const unsigned int n_vectors_v = MF::VectorizedArrayTypeV::size();
46 static const int static_dofs =
47 dealii::Utilities::pow((degree + 1 > n_points) ? (degree + 1) : n_points,
50 using VectorizedArrayTypeX =
typename MF::VectorizedArrayTypeX;
51 using VectorizedArrayTypeV =
typename MF::VectorizedArrayTypeV;
80 const dealii::AlignedVector<Number> *
86 const dealii::AlignedVector<Number> *
93 dealii::AlignedVector<VectorizedArrayType>
data;
103 const dealii::MatrixFree<dim_x, Number, VectorizedArrayTypeX>
109 const dealii::MatrixFree<dim_v, Number, VectorizedArrayTypeV>
114 unsigned int macro_cell_x;
115 unsigned int macro_cell_v;
137 typename VectorizedArrayType>
143 VectorizedArrayType>::
146 : matrix_free(matrix_free)
147 , matrix_free_x(matrix_free.get_matrix_free_x())
148 , matrix_free_v(matrix_free.get_matrix_free_v())
150 this->
data.resize(static_dofs);
160 typename VectorizedArrayType>
167 VectorizedArrayType>::
171 this->macro_cell_x = cell_index.
x;
172 this->macro_cell_v = cell_index.
v / n_vectors_v;
173 this->lane_y = cell_index.
v % n_vectors_v;
174 this->macro = cell_index.
macro;
176 Assert(this->lane_y < this->n_vectors_v,
177 dealii::ExcIndexRange(this->lane_y, 0, n_vectors_v));
187 typename VectorizedArrayType>
188 VectorizedArrayType *
194 VectorizedArrayType>::get_data_ptr()
206 typename VectorizedArrayType>
207 const dealii::AlignedVector<Number> *
213 VectorizedArrayType>::get_shape_values()
const
225 typename VectorizedArrayType>
226 const dealii::AlignedVector<Number> *
232 VectorizedArrayType>::get_shape_gradients()
const
234 return shape_gradients;
Definition fe_evaluation_base.h:35
VectorizedArrayType * get_data_ptr()
Definition fe_evaluation_base.h:194
virtual void reinit(typename MatrixFree< dim_x, dim_v, Number, VectorizedArrayType >::ID cell_index)
Definition fe_evaluation_base.h:168
const dealii::AlignedVector< Number > * get_shape_gradients() const
Definition fe_evaluation_base.h:232
FEEvaluationBase(const MatrixFree< dim_x, dim_v, Number, VectorizedArrayType > &matrix_free)
Definition fe_evaluation_base.h:144
const dealii::AlignedVector< Number > * shape_values
Definition fe_evaluation_base.h:122
dealii::AlignedVector< VectorizedArrayType > data
Definition fe_evaluation_base.h:93
const MF & matrix_free
Definition fe_evaluation_base.h:98
const dealii::MatrixFree< dim_v, Number, VectorizedArrayTypeV > & matrix_free_v
Definition fe_evaluation_base.h:110
const dealii::MatrixFree< dim_x, Number, VectorizedArrayTypeX > & matrix_free_x
Definition fe_evaluation_base.h:104
const dealii::AlignedVector< Number > * get_shape_values() const
Definition fe_evaluation_base.h:213
virtual ~FEEvaluationBase()=default
const dealii::AlignedVector< Number > * shape_gradients
Definition fe_evaluation_base.h:127
Definition matrix_free.h:40
const unsigned int macro
Definition id.h:64
const unsigned int v
Definition id.h:59
const unsigned int x
Definition id.h:54