Reference documentation for deal.II version 9.0.0
Static Public Member Functions | List of all members
internal::FEEvaluationImplBasisChange< variant, dim, basis_size_1, basis_size_2, n_components, Number, Number2 > Struct Template Reference

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

Static Public Member Functions

static void do_forward (const AlignedVector< Number2 > &transformation_matrix, const Number *values_in, Number *values_out, const unsigned int basis_size_1_variable=numbers::invalid_unsigned_int, const unsigned int basis_size_2_variable=numbers::invalid_unsigned_int)
 
static void do_backward (const AlignedVector< Number2 > &transformation_matrix, const bool add_into_result, Number *values_in, Number *values_out, const unsigned int basis_size_1_variable=numbers::invalid_unsigned_int, const unsigned int basis_size_2_variable=numbers::invalid_unsigned_int)
 
static void do_mass (const AlignedVector< Number2 > &transformation_matrix, const AlignedVector< Number > &coefficients, const Number *values_in, Number *scratch_data, Number *values_out)
 

Detailed Description

template<EvaluatorVariant variant, int dim, int basis_size_1, int basis_size_2, int n_components, typename Number, typename Number2>
struct internal::FEEvaluationImplBasisChange< variant, dim, basis_size_1, basis_size_2, n_components, Number, Number2 >

This struct implements the change between two different bases. This is an ingredient in the FEEvaluationImplTransformToCollocation class where we first transform to the appropriate basis where we can compute the derivative through collocation techniques.

This class allows for dimension-independent application of the operation, implemented by template recursion. It has been tested up to 6D.

Author
Katharina Kormann, Martin Kronbichler, 2017

Definition at line 569 of file evaluation_kernels.h.

Member Function Documentation

◆ do_forward()

template<EvaluatorVariant variant, int dim, int basis_size_1, int basis_size_2, int n_components, typename Number , typename Number2 >
static void internal::FEEvaluationImplBasisChange< variant, dim, basis_size_1, basis_size_2, n_components, Number, Number2 >::do_forward ( const AlignedVector< Number2 > &  transformation_matrix,
const Number *  values_in,
Number *  values_out,
const unsigned int  basis_size_1_variable = numbers::invalid_unsigned_int,
const unsigned int  basis_size_2_variable = numbers::invalid_unsigned_int 
)
inlinestatic

This applies the transformation that contracts over the rows of the coefficient array, generating values along the columns of the coefficient array.

Parameters
transformation_matrixThe coefficient matrix handed in as a vector, using basis_size_1 rows and basis_size_2 columns if interpreted as a matrix.
values_inThe array of the input of size basis_size_1^dim. It may alias with values_out
values_outThe array of size basis_size_2^dim where the results of the transformation are stored. It may alias with the values_in array.
basis_size_1_variableIn case the template argument basis_size_1 is zero, the size of the first basis can alternatively be passed in as a run time argument. The template argument takes precedence in case it is nonzero for efficiency reasons.
basis_size_2_variableIn case the template argument basis_size_1 is zero, the size of the second basis can alternatively be passed in as a run time argument.

Definition at line 599 of file evaluation_kernels.h.

◆ do_backward()

template<EvaluatorVariant variant, int dim, int basis_size_1, int basis_size_2, int n_components, typename Number , typename Number2 >
static void internal::FEEvaluationImplBasisChange< variant, dim, basis_size_1, basis_size_2, n_components, Number, Number2 >::do_backward ( const AlignedVector< Number2 > &  transformation_matrix,
const bool  add_into_result,
Number *  values_in,
Number *  values_out,
const unsigned int  basis_size_1_variable = numbers::invalid_unsigned_int,
const unsigned int  basis_size_2_variable = numbers::invalid_unsigned_int 
)
inlinestatic

This applies the transformation that contracts over the columns of the coefficient array, generating values along the rows of the coefficient array.

Parameters
transformation_matrixThe coefficient matrix handed in as a vector, using basis_size_1 rows and basis_size_2 columns if interpreted as a matrix.
add_into_resultDefine whether the result should be added into the array values_out (if true) or overwrite the previous content. The result is undefined in case values_in and values_out point to the same array and add_into_result is true, in which case an exception is thrown.
values_inThe array of the input of size basis_size_2^dim. It may alias with values_out. Note that the previous content of values_in is overwritten within the function.
values_outThe array of size basis_size_1^dim where the results of the transformation are stored. It may alias with the values_in array.
basis_size_1_variableIn case the template argument basis_size_1 is zero, the size of the first basis can alternatively be passed in as a run time argument. The template argument takes precedence in case it is nonzero for efficiency reasons.
basis_size_2_variableIn case the template argument basis_size_1 is zero, the size of the second basis can alternatively be passed in as a run time argument.

Definition at line 694 of file evaluation_kernels.h.

◆ do_mass()

template<EvaluatorVariant variant, int dim, int basis_size_1, int basis_size_2, int n_components, typename Number , typename Number2 >
static void internal::FEEvaluationImplBasisChange< variant, dim, basis_size_1, basis_size_2, n_components, Number, Number2 >::do_mass ( const AlignedVector< Number2 > &  transformation_matrix,
const AlignedVector< Number > &  coefficients,
const Number *  values_in,
Number *  scratch_data,
Number *  values_out 
)
inlinestatic

This operation applies a mass-matrix-like operation, consisting of a do_forward() operation, multiplication by the coefficients in the quadrature points, and the do_backward() operation.

Parameters
transformation_matrixThe coefficient matrix handed in as a vector, using basis_size_1 rows and basis_size_2 columns if interpreted as a matrix.
coefficientsThe array of coefficients by which the result is multiplied. Its length must be either basis_size_2^dim or n_components*basis_size_2^dim
values_inThe array of the input of size basis_size_2^dim. It may alias with values_out
scratch_dataArray to hold temporary data during the operation. Must be of length basis_size_2^dim
values_outThe array of size basis_size_1^dim where the results of the transformation are stored. It may alias with the values_in array.

Definition at line 775 of file evaluation_kernels.h.


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