|
| ~FEEvaluationBaseData () |
|
unsigned int | get_mapping_data_index_offset () const |
|
internal::MatrixFreeFunctions::GeometryType | get_cell_type () const |
|
const internal::MatrixFreeFunctions::ShapeInfo< VectorizedArrayType > & | get_shape_info () const |
|
VectorizedArrayType | JxW (const unsigned int q_point) const |
|
Tensor< 2, dim, VectorizedArrayType > | inverse_jacobian (const unsigned int q_point) const |
|
Tensor< 1, dim, VectorizedArrayType > | get_normal_vector (const unsigned int q_point) const |
|
VectorizedArrayType | read_cell_data (const AlignedVector< VectorizedArrayType > &array) const |
|
void | set_cell_data (AlignedVector< VectorizedArrayType > &array, const VectorizedArrayType &value) const |
|
template<typename T > |
std::array< T, VectorizedArrayType::size()> | read_cell_data (const AlignedVector< std::array< T, VectorizedArrayType::size()>> &array) const |
|
template<typename T > |
void | set_cell_data (AlignedVector< std::array< T, VectorizedArrayType::size()>> &array, const std::array< T, VectorizedArrayType::size()> &value) const |
|
std::array< unsigned int, VectorizedArrayType::size()> | get_cell_ids () const |
|
std::array< unsigned int, VectorizedArrayType::size()> | get_cell_or_face_ids () const |
|
const std::vector< unsigned int > & | get_internal_dof_numbering () const |
|
ArrayView< VectorizedArrayType > | get_scratch_data () const |
|
unsigned int | get_quadrature_index () const |
|
unsigned int | get_current_cell_index () const |
|
unsigned int | get_active_fe_index () const |
|
unsigned int | get_active_quadrature_index () const |
|
|
| FEEvaluationBaseData (const MatrixFree< dim, Number, VectorizedArrayType > &matrix_free, const unsigned int dof_no, const unsigned int first_selected_component, const unsigned int quad_no, const unsigned int fe_degree, const unsigned int n_q_points, const bool is_interior_face, const unsigned int active_fe_index, const unsigned int active_quad_index) |
|
| FEEvaluationBaseData (const Mapping< dim > &mapping, const FiniteElement< dim > &fe, const Quadrature< 1 > &quadrature, const UpdateFlags update_flags, const unsigned int first_selected_component, const FEEvaluationBaseData< dim, Number, is_face, VectorizedArrayType > *other) |
|
| FEEvaluationBaseData (const FEEvaluationBaseData &other) |
|
FEEvaluationBaseData & | operator= (const FEEvaluationBaseData &other) |
|
|
AlignedVector< VectorizedArrayType > * | scratch_data_array |
|
VectorizedArrayType * | scratch_data |
|
const unsigned int | quad_no |
|
const MatrixFree< dim, Number, VectorizedArrayType > * | matrix_info |
|
const internal::MatrixFreeFunctions::DoFInfo * | dof_info |
|
const internal::MatrixFreeFunctions::MappingInfoStorage<(is_face ? dim - 1 :dim), dim, Number, VectorizedArrayType > * | mapping_data |
|
const unsigned int | active_fe_index |
|
const unsigned int | active_quad_index |
|
const internal::MatrixFreeFunctions::MappingInfoStorage<(is_face ? dim - 1 :dim), dim, Number, VectorizedArrayType >::QuadratureDescriptor * | descriptor |
|
const unsigned int | n_quadrature_points |
|
const internal::MatrixFreeFunctions::ShapeInfo< VectorizedArrayType > * | data |
|
const Tensor< 2, dim, VectorizedArrayType > * | jacobian |
|
const VectorizedArrayType * | J_value |
|
const Tensor< 1, dim, VectorizedArrayType > * | normal_vectors |
|
const Tensor< 1, dim, VectorizedArrayType > * | normal_x_jacobian |
|
const Number * | quadrature_weights |
|
unsigned int | cell |
|
bool | is_interior_face |
|
internal::MatrixFreeFunctions::DoFInfo::DoFAccessIndex | dof_access_index |
|
unsigned int | face_no |
|
unsigned int | face_orientation |
|
unsigned int | subface_index |
|
internal::MatrixFreeFunctions::GeometryType | cell_type |
|
std::shared_ptr< internal::MatrixFreeFunctions::MappingDataOnTheFly< dim, Number, VectorizedArrayType > > | mapped_geometry |
|
template<int dim, typename Number, bool is_face, typename VectorizedArrayType>
class FEEvaluationBaseData< dim, Number, is_face, VectorizedArrayType >
This base class of the FEEvaluation and FEFaceEvaluation classes handles mapping-related information independent of the degrees of freedom and finite element in use. This class provides access functionality for user code but is otherwise invisible without any public constructor. The usage is through the class FEEvaluation instead.
This class has four template arguments:
- Template Parameters
-
dim | Dimension in which this class is to be used |
Number | Number format, usually double or float |
is_face | Whether the class is used for a cell integrator (with quadrature dimension the same as the space dimension) or for a face integrator (with quadrature dimension one less) |
VectorizedArrayType | Type of array to be woked on in a vectorized fashion, defaults to VectorizedArray<Number> |
- Note
- Currently only VectorizedArray<Number, width> is supported as VectorizedArrayType.
Definition at line 37 of file evaluation_kernels.h.
template<int dim, typename Number, bool is_face, typename VectorizedArrayType>
unsigned int FEEvaluationBaseData< dim, Number, is_face, VectorizedArrayType >::get_mapping_data_index_offset |
( |
| ) |
const |
Return the index offset within the geometry fields for the cell the reinit()
function has been called for. This index can be used to access an index into a field that has the same compression behavior as the Jacobian of the geometry, e.g., to store an effective coefficient tensors that combines a coefficient with the geometry for lower memory transfer as the available data fields.
template<int dim, typename Number, bool is_face, typename VectorizedArrayType>
Tensor<2, dim, VectorizedArrayType> FEEvaluationBaseData< dim, Number, is_face, VectorizedArrayType >::inverse_jacobian |
( |
const unsigned int |
q_point | ) |
const |
Return the inverse and transposed version \(J^{-\mathrm T}\) of the Jacobian of the mapping between the unit to the real cell defined as \(J_{ij} = d x_i / d\hat x_j\). The \((i,j)\) entry of the returned tensor contains \(d\hat x_j/dx_i\), i.e., columns refer to reference space coordinates and rows to real cell coordinates. Thus, the returned tensor represents a covariant transformation, which is used in the FEEvaluationBase::get_gradient() function to transform the unit cell gradients to gradients on the real cell by a multiplication \(J^{-\mathrm T} \hat{\nabla} u_h\).
template<int dim, typename Number, bool is_face, typename VectorizedArrayType>
Tensor<1, dim, VectorizedArrayType> FEEvaluationBaseData< dim, Number, is_face, VectorizedArrayType >::get_normal_vector |
( |
const unsigned int |
q_point | ) |
const |
Return the unit normal vector on a face. Note that both sides of a face use the same orientation of the normal vector: For the faces enumerated as interior
in FaceToCellTopology and selected with the is_interior_face=true
flag of the constructor, this corresponds to the outer normal vector, whereas for faces enumerated as exterior
in FaceToCellTopology and selected with the is_interior_face=false
flag of the constructor, the normal points into the element as a consequence of the single normal vector.
- Note
- Only implemented in case
is_face == true
.
template<int dim, typename Number, bool is_face, typename VectorizedArrayType>
Copy assignment operator. If FEEvaluationBase was constructed from a mapping, fe, quadrature, and update flags, the underlying geometry evaluation based on FEValues will be deep-copied in order to allow for using in parallel with threads.
template<int dim, typename Number, bool is_face, typename VectorizedArrayType>
template<int , int , int , int , typename , typename >
template<int dim, typename Number, bool is_face, typename VectorizedArrayType>
VectorizedArrayType* FEEvaluationBaseData< dim, Number, is_face, VectorizedArrayType >::scratch_data |
|
protected |
This is the user-visible part of scratch_data_array, only showing the last part of scratch_data_array. The first part is consumed by values_dofs, values_quad, etc.
Definition at line 331 of file fe_evaluation.h.
template<int dim, typename Number, bool is_face, typename VectorizedArrayType>
A pointer to the unit cell shape data, i.e., values, gradients and Hessians in 1D at the quadrature points that constitute the tensor product. Also contained in matrix_info, but it simplifies code if we store a reference to it.
Definition at line 395 of file fe_evaluation.h.
template<int dim, typename Number, bool is_face, typename VectorizedArrayType>
const VectorizedArrayType* FEEvaluationBaseData< dim, Number, is_face, VectorizedArrayType >::J_value |
|
protected |
A pointer to the Jacobian determinant of the present cell. If on a Cartesian cell or on a cell with constant Jacobian, this is just the Jacobian determinant, otherwise the Jacobian determinant times the quadrature weight.
Definition at line 409 of file fe_evaluation.h.
template<int dim, typename Number, bool is_face, typename VectorizedArrayType>
Stores the subface index of the given face. Usually, this variable takes the value numbers::invalid_unsigned_int to indicate integration over the full face, but in case the current physical face has a neighbor that is more refined, it is a subface and must scale the entries in ShapeInfo appropriately.
Definition at line 463 of file fe_evaluation.h.
template<int dim, typename Number, bool is_face, typename VectorizedArrayType>
Stores the type of the cell we are currently working with after a call to reinit(). Valid values are cartesian
, affine
and general
, which have different implications on how the Jacobian transformations are stored internally in MappingInfo.
Definition at line 471 of file fe_evaluation.h.