Reference documentation for deal.II version 8.5.1
Public Member Functions | List of all members
internal::EvaluatorTensorProduct< evaluate_evenodd, dim, fe_degree, n_q_points_1d, Number > Struct Template Reference

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

Public Member Functions

 EvaluatorTensorProduct ()
 
 EvaluatorTensorProduct (const AlignedVector< Number > &shape_values, const AlignedVector< Number > &shape_gradients, const AlignedVector< Number > &shape_hessians, const unsigned int dummy1=0, const unsigned int dummy2=0)
 

Detailed Description

template<int dim, int fe_degree, int n_q_points_1d, typename Number>
struct internal::EvaluatorTensorProduct< evaluate_evenodd, dim, fe_degree, n_q_points_1d, Number >

Internal evaluator for 1d-3d shape function using the tensor product form of the basis functions.

This class implements a different approach to the symmetric case for values, gradients, and Hessians also treated with the above functions: It is possible to reduce the cost per dimension from N^2 to N^2/2, where N is the number of 1D dofs (there are only N^2/2 different entries in the shape matrix, so this is plausible). The approach is based on the idea of applying the operator on the even and odd part of the input vectors separately, given that the shape functions evaluated on quadrature points are symmetric. This method is presented e.g. in the book "Implementing Spectral Methods for Partial Differential Equations" by David A. Kopriva, Springer, 2009, section 3.5.3 (Even-Odd-Decomposition). Even though the experiments in the book say that the method is not efficient for N<20, it is more efficient in the context where the loop bounds are compile-time constants (templates).

Definition at line 1037 of file tensor_product_kernels.h.

Constructor & Destructor Documentation

template<int dim, int fe_degree, int n_q_points_1d, typename Number >
internal::EvaluatorTensorProduct< evaluate_evenodd, dim, fe_degree, n_q_points_1d, Number >::EvaluatorTensorProduct ( )
inline

Empty constructor. Does nothing. Be careful when using 'values' and related methods because they need to be filled with the other pointer

Definition at line 1046 of file tensor_product_kernels.h.

template<int dim, int fe_degree, int n_q_points_1d, typename Number >
internal::EvaluatorTensorProduct< evaluate_evenodd, dim, fe_degree, n_q_points_1d, Number >::EvaluatorTensorProduct ( const AlignedVector< Number > &  shape_values,
const AlignedVector< Number > &  shape_gradients,
const AlignedVector< Number > &  shape_hessians,
const unsigned int  dummy1 = 0,
const unsigned int  dummy2 = 0 
)
inline

Constructor, taking the data from ShapeInfo (using the even-odd variants stored there)

Definition at line 1057 of file tensor_product_kernels.h.


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