deal.II version GIT relicensing-1929-g70a5450eef 2024-10-03 18:00:00+00:00
\(\newcommand{\dealvcentcolon}{\mathrel{\mathop{:}}}\) \(\newcommand{\dealcoloneq}{\dealvcentcolon\mathrel{\mkern-1.2mu}=}\) \(\newcommand{\jump}[1]{\left[\!\left[ #1 \right]\!\right]}\) \(\newcommand{\average}[1]{\left\{\!\left\{ #1 \right\}\!\right\}}\)
Loading...
Searching...
No Matches
Public Types | Static Public Member Functions | Static Public Attributes | List of all members
internal::FEEvaluationImpl< type, dim, fe_degree, n_q_points_1d, Number > Struct Template Reference

#include <deal.II/matrix_free/evaluation_kernels.h>

Public Types

using Number2 = typename FEEvaluationData< dim, Number, false >::shape_info_number_type
 
using Eval = EvaluatorTensorProduct< variant, dim, fe_degree+1, n_q_points_1d, Number, Number2 >
 

Static Public Member Functions

static void evaluate (const unsigned int n_components, const EvaluationFlags::EvaluationFlags evaluation_flag, const Number *values_dofs_actual, FEEvaluationData< dim, Number, false > &fe_eval)
 
static void integrate (const unsigned int n_components, const EvaluationFlags::EvaluationFlags integration_flag, Number *values_dofs_actual, FEEvaluationData< dim, Number, false > &fe_eval, const bool add_into_values_array)
 
static Eval create_evaluator_tensor_product (const MatrixFreeFunctions::UnivariateShapeData< Number2 > *univariate_shape_data)
 

Static Public Attributes

static const EvaluatorVariant variant
 

Detailed Description

template<MatrixFreeFunctions::ElementType type, int dim, int fe_degree, int n_q_points_1d, typename Number>
struct internal::FEEvaluationImpl< type, dim, fe_degree, n_q_points_1d, Number >

This struct performs the evaluation of function values and gradients for tensor-product finite elements. The operation is used for both the symmetric and non-symmetric case, which use different apply functions 'values', 'gradients' in the individual coordinate directions. The apply functions for values are provided through one of the template classes EvaluatorTensorProduct which in turn are selected from the MatrixFreeFunctions::ElementType template argument.

There are two specialized implementation classes FEEvaluationImplCollocation (for Gauss-Lobatto elements where the nodal points and the quadrature points coincide and the 'values' operation is identity) and FEEvaluationImplTransformToCollocation (which can be transformed to a collocation space and can then use the identity in these spaces), which both allow for shorter code.

Note
Hessians of the solution are handled in the general FEEvaluationImplSelector struct below, because they can be implemented with the only two code paths for all supported cases, including the specialized cases below.

Definition at line 112 of file evaluation_kernels.h.

Member Typedef Documentation

◆ Number2

template<MatrixFreeFunctions::ElementType type, int dim, int fe_degree, int n_q_points_1d, typename Number >
using internal::FEEvaluationImpl< type, dim, fe_degree, n_q_points_1d, Number >::Number2 = typename FEEvaluationData<dim, Number, false>::shape_info_number_type

Definition at line 116 of file evaluation_kernels.h.

◆ Eval

template<MatrixFreeFunctions::ElementType type, int dim, int fe_degree, int n_q_points_1d, typename Number >
using internal::FEEvaluationImpl< type, dim, fe_degree, n_q_points_1d, Number >::Eval = EvaluatorTensorProduct<variant, dim, fe_degree + 1, n_q_points_1d, Number, Number2>

Definition at line 119 of file evaluation_kernels.h.

Member Function Documentation

◆ evaluate()

template<MatrixFreeFunctions::ElementType type, int dim, int fe_degree, int n_q_points_1d, typename Number >
void internal::FEEvaluationImpl< type, dim, fe_degree, n_q_points_1d, Number >::evaluate ( const unsigned int  n_components,
const EvaluationFlags::EvaluationFlags  evaluation_flag,
const Number *  values_dofs_actual,
FEEvaluationData< dim, Number, false > &  fe_eval 
)
inlinestatic

Definition at line 194 of file evaluation_kernels.h.

◆ integrate()

template<MatrixFreeFunctions::ElementType type, int dim, int fe_degree, int n_q_points_1d, typename Number >
void internal::FEEvaluationImpl< type, dim, fe_degree, n_q_points_1d, Number >::integrate ( const unsigned int  n_components,
const EvaluationFlags::EvaluationFlags  integration_flag,
Number *  values_dofs_actual,
FEEvaluationData< dim, Number, false > &  fe_eval,
const bool  add_into_values_array 
)
inlinestatic

Definition at line 391 of file evaluation_kernels.h.

◆ create_evaluator_tensor_product()

template<MatrixFreeFunctions::ElementType type, int dim, int fe_degree, int n_q_points_1d, typename Number >
static Eval internal::FEEvaluationImpl< type, dim, fe_degree, n_q_points_1d, Number >::create_evaluator_tensor_product ( const MatrixFreeFunctions::UnivariateShapeData< Number2 > *  univariate_shape_data)
inlinestatic

Definition at line 140 of file evaluation_kernels.h.

Member Data Documentation

◆ variant

template<MatrixFreeFunctions::ElementType type, int dim, int fe_degree, int n_q_points_1d, typename Number >
const EvaluatorVariant internal::FEEvaluationImpl< type, dim, fe_degree, n_q_points_1d, Number >::variant
static
Initial value:
=
EvaluatorSelector<type, (fe_degree + n_q_points_1d > 4)>::variant
static const EvaluatorVariant variant

Definition at line 114 of file evaluation_kernels.h.


The documentation for this struct was generated from the following file: