|
| EvaluatorTensorProduct () |
|
| EvaluatorTensorProduct (const AlignedVector< Number2 > &shape_values, const AlignedVector< Number2 > &shape_gradients, const AlignedVector< Number2 > &shape_hessians, const unsigned int dummy1=0, const unsigned int dummy2=0) |
|
| EvaluatorTensorProduct (const Number2 *shape_values, const Number2 *shape_gradients, const Number2 *shape_hessians, const unsigned int dummy1=0, const unsigned int dummy2=0) |
|
template<int direction, bool contract_over_rows, bool add> |
void | values (const Number in[], Number out[]) const |
|
template<int direction, bool contract_over_rows, bool add> |
void | gradients (const Number in[], Number out[]) const |
|
template<int direction, bool contract_over_rows, bool add> |
void | hessians (const Number in[], Number out[]) const |
|
template<int direction, bool contract_over_rows, bool add> |
void | values_one_line (const Number in[], Number out[]) const |
|
template<int direction, bool contract_over_rows, bool add> |
void | gradients_one_line (const Number in[], Number out[]) const |
|
template<int direction, bool contract_over_rows, bool add> |
void | hessians_one_line (const Number in[], Number out[]) const |
|
template<int face_direction, bool contract_onto_face, bool add, int max_derivative> |
void | apply_face (const Number *DEAL_II_RESTRICT in, Number *DEAL_II_RESTRICT out) const |
|
template<
int dim,
int n_rows,
int n_columns, typename Number, typename Number2>
struct internal::EvaluatorTensorProduct< evaluate_general, dim, n_rows, n_columns, Number, Number2 >
Internal evaluator for shape function in arbitrary dimension using the tensor product form of the basis functions.
- Template Parameters
-
dim | Space dimension in which this class is applied |
n_rows | Number of rows in the transformation matrix, which corresponds to the number of 1d shape functions in the usual tensor contraction setting |
n_columns | Number of columns in the transformation matrix, which corresponds to the number of 1d shape functions in the usual tensor contraction setting |
Number | Abstract number type for input and output arrays |
Number2 | Abstract number type for coefficient arrays (defaults to same type as the input/output arrays); must implement operator* with Number and produce Number as an output to be a valid type |
Definition at line 182 of file tensor_product_kernels.h.
template<
int dim,
int n_rows,
int n_columns, typename Number , typename Number2 >
This function applies the tensor product kernel, corresponding to a multiplication of 1d stripes, along the given direction
of the tensor data in the input array. This function allows the in
and out
arrays to alias for the case n_rows == n_columns, i.e., it is safe to perform the contraction in place where in
and out
point to the same address. For the case n_rows != n_columns, the output is in general not correct.
- Template Parameters
-
direction | Direction that is evaluated |
contract_over_rows | If true, the tensor contraction sums over the rows in the given shape_data array, otherwise it sums over the columns |
add | If true, the result is added to the output vector, else the computed values overwrite the content in the output |
one_line | If true, the kernel is only applied along a single 1d stripe within a dim-dimensional tensor, not the full n_rows^dim points as in the false case. |
- Parameters
-
shape_data | Transformation matrix with n_rows rows and n_columns columns, stored in row-major format |
in | Pointer to the start of the input data vector |
out | Pointer to the start of the output data vector |
Definition at line 385 of file tensor_product_kernels.h.