Reference documentation for deal.II version 9.2.0
\(\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\}}\)
Static Public Member Functions | Static Public Attributes | List of all members
SelectEvaluator< dim, fe_degree, n_q_points_1d, n_components, Number > Struct Template Reference

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

Static Public Member Functions

static void evaluate (const internal::MatrixFreeFunctions::ShapeInfo< Number > &shape_info, Number *values_dofs_actual, Number *values_quad, Number *gradients_quad, Number *hessians_quad, Number *scratch_data, const bool evaluate_values, const bool evaluate_gradients, const bool evaluate_hessians)
 
static void integrate (const internal::MatrixFreeFunctions::ShapeInfo< Number > &shape_info, Number *values_dofs_actual, Number *values_quad, Number *gradients_quad, Number *scratch_data, const bool integrate_values, const bool integrate_gradients, const bool sum_into_values_array=false)
 

Static Public Attributes

static constexpr bool use_collocation
 

Detailed Description

template<int dim, int fe_degree, int n_q_points_1d, int n_components, typename Number>
struct SelectEvaluator< dim, fe_degree, n_q_points_1d, n_components, Number >

This class chooses an appropriate evaluation strategy based on the template parameters and the shape_info variable which contains runtime parameters. In case the template parameters fe_degree and n_q_points_1d contain valid information (i.e. fe_degree>-1 and n_q_points_1d>0), we simply pass these values to the respective template specializations. Otherwise, we perform a runtime matching of the runtime parameters to find the correct specialization. This matching currently supports \(0\leq fe\_degree \leq 9\) and \(degree+1\leq n\_q\_points\_1d\leq fe\_degree+2\).

Definition at line 495 of file evaluation_selector.h.

Member Function Documentation

◆ evaluate()

template<int dim, int fe_degree, int n_q_points_1d, int n_components, typename Number >
static void SelectEvaluator< dim, fe_degree, n_q_points_1d, n_components, Number >::evaluate ( const internal::MatrixFreeFunctions::ShapeInfo< Number > &  shape_info,
Number *  values_dofs_actual,
Number *  values_quad,
Number *  gradients_quad,
Number *  hessians_quad,
Number *  scratch_data,
const bool  evaluate_values,
const bool  evaluate_gradients,
const bool  evaluate_hessians 
)
static

Chooses an appropriate evaluation strategy for the evaluate function, i.e. this calls internal::FEEvaluationImpl::evaluate(), internal::FEEvaluationImplCollocation::evaluate() or internal::FEEvaluationImplTransformToCollocation::evaluate() with appropriate template parameters.

◆ integrate()

template<int dim, int fe_degree, int n_q_points_1d, int n_components, typename Number >
static void SelectEvaluator< dim, fe_degree, n_q_points_1d, n_components, Number >::integrate ( const internal::MatrixFreeFunctions::ShapeInfo< Number > &  shape_info,
Number *  values_dofs_actual,
Number *  values_quad,
Number *  gradients_quad,
Number *  scratch_data,
const bool  integrate_values,
const bool  integrate_gradients,
const bool  sum_into_values_array = false 
)
static

Chooses an appropriate evaluation strategy for the integrate function, i.e. this calls internal::FEEvaluationImpl::integrate(), internal::FEEvaluationImplCollocation::integrate() or internal::FEEvaluationImplTransformToCollocation::integrate() with appropriate template parameters.

Member Data Documentation

◆ use_collocation

template<int dim, int fe_degree, int n_q_points_1d, int n_components, typename Number >
constexpr bool SelectEvaluator< dim, fe_degree, n_q_points_1d, n_components, Number >::use_collocation
staticconstexpr
Initial value:
=
n_q_points_1d > fe_degree &&n_q_points_1d <= 3 * fe_degree / 2 + 1 &&
n_q_points_1d < 200

We enable a transformation to collocation for derivatives if it gives correct results (first condition), if it is the most efficient choice in terms of operation counts (second condition) and if we were able to initialize the fields in shape_info.templates.h from the polynomials (third condition).

Definition at line 504 of file evaluation_selector.h.


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