Reference documentation for deal.II version 9.5.0
|
Typedefs | |
template<typename F > | |
using | argument_type_t = typename argument_type< F >::type |
template<typename T > | |
using | has_block_t = decltype(std::declval< T const >().block(0)) |
template<typename T > | |
using | has_n_blocks_t = decltype(std::declval< T const >().n_blocks()) |
template<typename T > | |
using | set_ghost_state_t = decltype(std::declval< T const >().set_ghost_state(std::declval< bool >())) |
Enumerations | |
enum class | FEEvaluationImplHangingNodesRunnerTypes { scalar , vectorized } |
enum class | VectorizationTypes { index , group , mask , sorted } |
enum class | HelperType { constant , dynamic } |
enum | EvaluatorVariant { evaluate_general , evaluate_symmetric , evaluate_evenodd , evaluate_symmetric_hierarchical , evaluate_raviart_thomas } |
enum class | EvaluatorQuantity { value , gradient , hessian } |
Functions | |
template<int dim> | |
Point< dim+1 > | create_higher_dim_point (const Point< dim > &point, const unsigned int component_in_dim_plus_1, const double coordinate_value) |
void | ensure_kokkos_initialized () |
internal::GenericDoFsPerObject | expand (const unsigned int dim, const std::vector< unsigned int > &dofs_per_object, const ReferenceCell reference_cell) |
constexpr ReferenceCell | make_reference_cell_from_int (const std::uint8_t kind) |
template<typename MatrixType > | |
void | reinit (MatrixBlock< MatrixType > &v, const BlockSparsityPattern &p) |
template<typename number > | |
void | reinit (MatrixBlock<::SparseMatrix< number > > &v, const BlockSparsityPattern &p) |
constexpr bool | use_collocation_evaluation (const unsigned int fe_degree, const unsigned int n_q_points_1d) |
template<typename VectorizedArrayType , typename Number2 > | |
void | do_vectorized_read (const Number2 *src_ptr, VectorizedArrayType &dst) |
template<typename Number , std::size_t width> | |
void | do_vectorized_read (const Number *src_ptr, VectorizedArray< Number, width > &dst) |
template<typename VectorizedArrayType , typename Number2 > | |
void | do_vectorized_gather (const Number2 *src_ptr, const unsigned int *indices, VectorizedArrayType &dst) |
template<typename Number , std::size_t width> | |
void | do_vectorized_gather (const Number *src_ptr, const unsigned int *indices, VectorizedArray< Number, width > &dst) |
template<typename VectorizedArrayType , typename Number2 > | |
void | do_vectorized_add (const VectorizedArrayType src, Number2 *dst_ptr) |
template<typename Number , std::size_t width> | |
void | do_vectorized_add (const VectorizedArray< Number, width > src, Number *dst_ptr) |
template<typename VectorizedArrayType , typename Number2 > | |
void | do_vectorized_scatter_add (const VectorizedArrayType src, const unsigned int *indices, Number2 *dst_ptr) |
template<typename Number , std::size_t width> | |
void | do_vectorized_scatter_add (const VectorizedArray< Number, width > src, const unsigned int *indices, Number *dst_ptr) |
template<typename Number > | |
void | adjust_for_face_orientation (const unsigned int dim, const unsigned int n_components, const EvaluationFlags::EvaluationFlags flag, const unsigned int *orientation, const bool integrate, const std::size_t n_q_points, Number *tmp_values, Number *values_quad, Number *gradients_quad, Number *hessians_quad) |
template<typename Number , typename VectorizedArrayType > | |
void | adjust_for_face_orientation_per_lane (const unsigned int dim, const unsigned int n_components, const unsigned int v, const EvaluationFlags::EvaluationFlags flag, const unsigned int *orientation, const bool integrate, const std::size_t n_q_points, Number *tmp_values, VectorizedArrayType *values_quad, VectorizedArrayType *gradients_quad=nullptr, VectorizedArrayType *hessians_quad=nullptr) |
template<int n_face_orientations, typename Processor , typename EvaluationData , const bool check_face_orientations = false> | |
void | fe_face_evaluation_process_and_io (Processor &proc, const unsigned int n_components, const EvaluationFlags::EvaluationFlags evaluation_flag, typename Processor::Number2_ *global_vector_ptr, const std::vector< ArrayView< const typename Processor::Number2_ > > *sm_ptr, const EvaluationData &fe_eval, typename Processor::VectorizedArrayType_ *temp1) |
template<int degree, typename EvaluatorType , typename... Args> | |
bool | instantiation_helper_run (const unsigned int given_degree, const unsigned int n_q_points_1d, Args &...args) |
template<int degree, typename EvaluatorType , typename... Args> | |
bool | instantiation_helper_degree_run (const unsigned int given_degree, Args &...args) |
static ::ExceptionBase & | ExcAccessToUninitializedField () |
static ::ExceptionBase & | ExcMatrixFreeAccessToUninitializedMappingField (std::string arg1) |
template<int dim, int n_rows_static, int n_columns_static, typename Number , typename Number2 , int direction, bool contract_over_rows, bool add, int type, bool one_line> | |
void | even_odd_apply (const int n_rows_in, const int n_columns_in, const Number2 *DEAL_II_RESTRICT shapes, const Number *in, Number *out) |
template<int dim, typename Number > | |
void | compute_values_of_array (::ndarray< Number, 2, dim > *shapes, const std::vector< Polynomials::Polynomial< double > > &poly, const Point< dim, Number > &p, const unsigned int derivative=1) |
template<typename Number > | |
void | compute_values_of_array (::ndarray< Number, 2, 0 > *, const std::vector< Polynomials::Polynomial< double > > &, const Point< 0, Number > &, const unsigned int) |
template<int dim, int length, typename Number2 , typename Number , int n_values = 1, bool do_renumber = true> | |
std::array< typename ProductTypeNoPoint< Number, Number2 >::type, 2+n_values > | do_interpolate_xy (const Number *values, const std::vector< unsigned int > &renumber, const ::ndarray< Number2, 2, dim > *shapes, const int n_shapes_runtime, int &i) |
template<int dim, typename Number , typename Number2 , int n_values = 1, bool do_renumber = true> | |
std::array< typename ProductTypeNoPoint< Number, Number2 >::type, dim+n_values > | evaluate_tensor_product_value_and_gradient_shapes (const ::ndarray< Number2, 2, dim > *shapes, const int n_shapes, const Number *values, const std::vector< unsigned int > &renumber={}) |
template<int dim, typename Number , typename Number2 , int n_values = 1> | |
std::array< typename ProductTypeNoPoint< Number, Number2 >::type, dim+n_values > | evaluate_tensor_product_value_and_gradient_linear (const unsigned int n_shapes, const Number *values, const Point< dim, Number2 > &p, const std::vector< unsigned int > &renumber={}) |
template<int dim, typename Number , typename Number2 > | |
std::pair< typename ProductTypeNoPoint< Number, Number2 >::type, Tensor< 1, dim, typename ProductTypeNoPoint< Number, Number2 >::type > > | evaluate_tensor_product_value_and_gradient (const std::vector< Polynomials::Polynomial< double > > &poly, const std::vector< Number > &values, const Point< dim, Number2 > &p, const bool d_linear=false, const std::vector< unsigned int > &renumber={}) |
template<int dim, int length, typename Number2 , typename Number , bool do_renumber = true> | |
ProductTypeNoPoint< Number, Number2 >::type | do_interpolate_xy_value (const Number *values, const std::vector< unsigned int > &renumber, const ::ndarray< Number2, 2, dim > *shapes, const int n_shapes_runtime, int &i) |
template<int dim, typename Number , typename Number2 , bool do_renumber = true> | |
ProductTypeNoPoint< Number, Number2 >::type | evaluate_tensor_product_value_shapes (const ::ndarray< Number2, 2, dim > *shapes, const int n_shapes, const Number *values, const std::vector< unsigned int > &renumber={}) |
template<int dim, typename Number , typename Number2 > | |
ProductTypeNoPoint< Number, Number2 >::type | evaluate_tensor_product_value_linear (const unsigned int n_shapes, const Number *values, const Point< dim, Number2 > &p, const std::vector< unsigned int > &renumber={}) |
template<int dim, typename Number , typename Number2 > | |
ProductTypeNoPoint< Number, Number2 >::type | evaluate_tensor_product_value (const std::vector< Polynomials::Polynomial< double > > &poly, const std::vector< Number > &values, const Point< dim, Number2 > &p, const bool d_linear=false, const std::vector< unsigned int > &renumber={}) |
template<int derivative_order, typename Number , typename Number2 > | |
Tensor< 1, 1, typename ProductTypeNoPoint< Number, Number2 >::type > | evaluate_tensor_product_higher_derivatives (const std::vector< Polynomials::Polynomial< double > > &poly, const std::vector< Number > &values, const Point< 1, Number2 > &p, const std::vector< unsigned int > &renumber={}) |
template<int derivative_order, typename Number , typename Number2 > | |
Tensor< 1, derivative_order+1, typename ProductTypeNoPoint< Number, Number2 >::type > | evaluate_tensor_product_higher_derivatives (const std::vector< Polynomials::Polynomial< double > > &poly, const std::vector< Number > &values, const Point< 2, Number2 > &p, const std::vector< unsigned int > &renumber={}) |
template<int derivative_order, typename Number , typename Number2 > | |
Tensor< 1,((derivative_order+1) *(derivative_order+2))/2, typename ProductTypeNoPoint< Number, Number2 >::type > | evaluate_tensor_product_higher_derivatives (const std::vector< Polynomials::Polynomial< double > > &poly, const std::vector< Number > &values, const Point< 3, Number2 > &p, const std::vector< unsigned int > &renumber={}) |
template<int dim, typename Number , typename Number2 > | |
SymmetricTensor< 2, dim, typename ProductTypeNoPoint< Number, Number2 >::type > | evaluate_tensor_product_hessian (const std::vector< Polynomials::Polynomial< double > > &poly, const std::vector< Number > &values, const Point< dim, Number2 > &p, const std::vector< unsigned int > &renumber={}) |
template<int dim, int length, typename Number2 , typename Number , bool add, int n_values = 1> | |
void | do_apply_test_functions_xy (Number2 *values, const ::ndarray< Number, 2, dim > *shapes, const std::array< Number2, 2+n_values > &test_grads_value, const int n_shapes_runtime, int &i) |
template<int dim, typename Number , typename Number2 , bool add, int n_values = 1> | |
void | integrate_add_tensor_product_value_and_gradient_shapes (const ::ndarray< Number, 2, dim > *shapes, const int n_shapes, const Number2 *value, const Tensor< 1, dim, Number2 > &gradient, Number2 *values) |
template<int dim, typename Number , typename Number2 , bool add, int n_values = 1> | |
void | integrate_add_tensor_product_value_and_gradient_linear (const unsigned int n_shapes, const Number2 *value, const Tensor< 1, dim, Number2 > &gradient, Number2 *values, const Point< dim, Number > &p) |
template<int dim, typename Number , typename Number2 , int n_values = 1> | |
void | integrate_tensor_product_value_and_gradient (const ::ndarray< Number, 2, dim > *shapes, const unsigned int n_shapes, const Number2 *value, const Tensor< 1, dim, Number2 > &gradient, Number2 *values, const Point< dim, Number > &p, const bool is_linear, const bool do_add) |
template<int dim, int length, typename Number2 , typename Number , bool add> | |
void | do_apply_test_functions_xy_value (Number2 *values, const ::ndarray< Number, 2, dim > *shapes, const Number2 &test_value, const int n_shapes_runtime, int &i) |
template<int dim, typename Number , typename Number2 , bool add> | |
void | integrate_add_tensor_product_value_shapes (const ::ndarray< Number, 2, dim > *shapes, const int n_shapes, const Number2 &value, Number2 *values) |
template<int dim, typename Number , typename Number2 , bool add> | |
void | integrate_add_tensor_product_value_linear (const unsigned int n_shapes, const Number2 &value, Number2 *values, const Point< dim, Number > &p) |
template<int dim, typename Number , typename Number2 > | |
void | integrate_tensor_product_value (const ::ndarray< Number, 2, dim > *shapes, const unsigned int n_shapes, const Number2 &value, Number2 *values, const Point< dim, Number > &p, const bool is_linear, const bool do_add) |
template<int dim, int n_points_1d_template, typename Number > | |
void | weight_fe_q_dofs_by_entity (const Number *weights, const unsigned int n_components, const int n_points_1d_non_template, Number *data) |
template<int dim, int n_points_1d_template, typename Number > | |
void | weight_fe_q_dofs_by_entity_shifted (const Number *weights, const unsigned int n_components, const int n_points_1d_non_template, Number *data) |
template<int dim, int n_points_1d_template, typename Number > | |
bool | compute_weights_fe_q_dofs_by_entity (const Number *data, const unsigned int n_components, const int n_points_1d_non_template, Number *weights) |
template<int dim, int n_points_1d_template, typename Number > | |
bool | compute_weights_fe_q_dofs_by_entity_shifted (const Number *data, const unsigned int n_components, const int n_points_1d_non_template, Number *weights) |
template<typename VectorType , std::enable_if_t<!has_local_element< VectorType >, VectorType > * = nullptr> | |
VectorType::value_type | vector_access (const VectorType &vec, const unsigned int entry) |
template<typename VectorType , std::enable_if_t<!has_local_element< VectorType >, VectorType > * = nullptr> | |
VectorType::value_type & | vector_access (VectorType &vec, const unsigned int entry) |
template<typename VectorType , std::enable_if_t< has_add_local_element< VectorType >, VectorType > * = nullptr> | |
void | vector_access_add (VectorType &vec, const unsigned int entry, const typename VectorType::value_type &val) |
template<typename VectorType , std::enable_if_t< has_add_local_element< VectorType >, VectorType > * = nullptr> | |
void | vector_access_add_global (VectorType &vec, const types::global_dof_index entry, const typename VectorType::value_type &val) |
template<typename VectorType , std::enable_if_t< has_set_local_element< VectorType >, VectorType > * = nullptr> | |
void | vector_access_set (VectorType &vec, const unsigned int entry, const typename VectorType::value_type &val) |
template<int dim, typename Number , typename VectorizedArrayType , typename VectorType , std::enable_if_t<!has_partitioners_are_compatible< VectorType >, VectorType > * = nullptr> | |
void | check_vector_compatibility (const VectorType &vec, const MatrixFree< dim, Number, VectorizedArrayType > &matrix_free, const internal::MatrixFreeFunctions::DoFInfo &dof_info) |
template<class DI > | |
bool | is_active_iterator (const DI &) |
template<class ACCESSOR > | |
bool | is_active_iterator (const TriaActiveIterator< ACCESSOR > &) |
template<class ACCESSOR > | |
bool | is_active_iterator (const ::FilteredIterator< TriaActiveIterator< ACCESSOR > > &) |
template<int dim, class DOFINFO , class A > | |
void | assemble (const MeshWorker::DoFInfoBox< dim, DOFINFO > &dinfo, A *assembler) |
template<int dim> | |
unsigned int | get_degree (const std::vector< typename BarycentricPolynomials< dim >::PolyType > &polys) |
template<typename Number > | |
std::enable_if_t<!std::is_unsigned< Number >::value, typename numbers::NumberTraits< Number >::real_type > | get_abs (const Number a) |
template<typename Number > | |
std::enable_if_t< std::is_unsigned< Number >::value, Number > | get_abs (const Number a) |
template<typename VectorType , std::enable_if_t< has_set_ghost_state< VectorType >, VectorType > * = nullptr> | |
void | set_ghost_state (VectorType &vector, const bool ghosted) |
template<int dim, int spacedim, bool lda, class OutputVector , typename number > | |
void | set_dof_values (const DoFCellAccessor< dim, spacedim, lda > &cell, const Vector< number > &local_values, OutputVector &values, const bool perform_check) |
template<int dim, int spacedim, bool lda, class OutputVector , typename number > | |
void | process_by_interpolation (const DoFCellAccessor< dim, spacedim, lda > &cell, const Vector< number > &local_values, OutputVector &values, const types::fe_index fe_index_, const std::function< void(const DoFCellAccessor< dim, spacedim, lda > &cell, const Vector< number > &local_values, OutputVector &values)> &processor) |
template<int dim, int spacedim> | |
std::string | policy_to_string (const ::internal::DoFHandlerImplementation::Policy::PolicyBase< dim, spacedim > &policy) |
unsigned int | number_unique_entries (const std::vector< unsigned int > &vector) |
template<int dim, int spacedim = dim> | |
Table< 2, unsigned int > | setup_primitive_offset_table (const FESystem< dim, spacedim > &fe, const unsigned int base_no) |
template<int dim, int spacedim = dim> | |
std::vector< typename FESystem< dim, spacedim >::BaseOffsets > | setup_nonprimitive_offset_table (const FESystem< dim, spacedim > &fe, const unsigned int base_no) |
template<int dim, int spacedim = dim> | |
void | copy_primitive_base_element_values (const FESystem< dim, spacedim > &fe, const unsigned int base_no, const UpdateFlags base_flags, const Table< 2, unsigned int > &base_to_system_table, const FEValuesImplementation::FiniteElementRelatedData< dim, spacedim > &base_data, FEValuesImplementation::FiniteElementRelatedData< dim, spacedim > &output_data) |
template<int dim, int spacedim = dim> | |
void | copy_nonprimitive_base_element_values (const FESystem< dim, spacedim > &fe, const unsigned int base_no, const unsigned int n_q_points, const UpdateFlags base_flags, const std::vector< typename FESystem< dim, spacedim >::BaseOffsets > &offsets, const FEValuesImplementation::FiniteElementRelatedData< dim, spacedim > &base_data, FEValuesImplementation::FiniteElementRelatedData< dim, spacedim > &output_data) |
template<class VectorType > | |
VectorType::value_type | get_vector_element (const VectorType &vector, const types::global_dof_index cell_number) |
IndexSet::value_type | get_vector_element (const IndexSet &is, const types::global_dof_index cell_number) |
template<int dim, int spacedim> | |
std::vector< unsigned int > | make_shape_function_to_row_table (const FiniteElement< dim, spacedim > &fe) |
template<typename Number , typename Number2 > | |
void | do_function_values (const ArrayView< Number2 > &dof_values, const ::Table< 2, double > &shape_values, std::vector< Number > &values) |
template<int dim, int spacedim, typename VectorType > | |
void | do_function_values (const ArrayView< typename VectorType::value_type > &dof_values, const ::Table< 2, double > &shape_values, const FiniteElement< dim, spacedim > &fe, const std::vector< unsigned int > &shape_function_to_row_table, ArrayView< VectorType > values, const bool quadrature_points_fastest=false, const unsigned int component_multiple=1) |
template<int order, int spacedim, typename Number > | |
void | do_function_derivatives (const ArrayView< Number > &dof_values, const ::Table< 2, Tensor< order, spacedim > > &shape_derivatives, std::vector< Tensor< order, spacedim, Number > > &derivatives) |
template<int order, int dim, int spacedim, typename Number > | |
void | do_function_derivatives (const ArrayView< Number > &dof_values, const ::Table< 2, Tensor< order, spacedim > > &shape_derivatives, const FiniteElement< dim, spacedim > &fe, const std::vector< unsigned int > &shape_function_to_row_table, ArrayView< std::vector< Tensor< order, spacedim, Number > > > derivatives, const bool quadrature_points_fastest=false, const unsigned int component_multiple=1) |
template<int spacedim, typename Number , typename Number2 > | |
void | do_function_laplacians (const ArrayView< Number2 > &dof_values, const ::Table< 2, Tensor< 2, spacedim > > &shape_hessians, std::vector< Number > &laplacians) |
template<int dim, int spacedim, typename VectorType , typename Number > | |
void | do_function_laplacians (const ArrayView< Number > &dof_values, const ::Table< 2, Tensor< 2, spacedim > > &shape_hessians, const FiniteElement< dim, spacedim > &fe, const std::vector< unsigned int > &shape_function_to_row_table, std::vector< VectorType > &laplacians, const bool quadrature_points_fastest=false, const unsigned int component_multiple=1) |
Tensor< 1, 3 > | apply_exponential_map (const Tensor< 1, 3 > &u, const Tensor< 1, 3 > &dir) |
Tensor< 1, 3 > | projected_direction (const Tensor< 1, 3 > &u, const Tensor< 1, 3 > &v) |
template<int spacedim> | |
Point< spacedim > | compute_normal (const Tensor< 1, spacedim > &, bool=false) |
Point< 3 > | compute_normal (const Tensor< 1, 3 > &vector, bool normalize=false) |
template<int dim, int spacedim> | |
void | extract_interpolation_matrices (const DoFHandler< dim, spacedim > &dof, ::Table< 2, FullMatrix< double > > &matrices) |
template<int dim, int spacedim> | |
void | restriction_additive (const FiniteElement< dim, spacedim > &, std::vector< std::vector< bool > > &) |
template<int dim, int spacedim> | |
void | restriction_additive (const ::hp::FECollection< dim, spacedim > &fe, std::vector< std::vector< bool > > &restriction_is_additive) |
Variables | |
bool | dealii_initialized_kokkos = false |
static const constexpr ::ndarray< unsigned int, 6, 2 > | wedge_table_1 |
static const constexpr ::ndarray< unsigned int, 18, 2 > | wedge_table_2 |
template<template< class... > class Op, class... Args> | |
constexpr bool | is_supported_operation |
template<typename T > | |
constexpr bool | has_block = internal::is_supported_operation<has_block_t, T> |
template<typename T > | |
constexpr bool | has_n_blocks |
template<typename T > | |
constexpr bool | is_block_vector = has_block<T> &&has_n_blocks<T> |
template<typename VectorType > | |
constexpr bool | is_dealii_vector |
template<typename T > | |
constexpr bool | has_set_ghost_state |
static constexpr double | invalid_pull_back_coordinate = 20.0 |
This namespace defines the copy and set functions used in AlignedVector. These functions operate in parallel when there are enough elements in the vector.
using internal::argument_type_t = typedef typename argument_type<F>::type |
Definition at line 1833 of file exceptions.h.
using internal::has_block_t = typedef decltype(std::declval<T const>().block(0)) |
Definition at line 49 of file block_vector_base.h.
using internal::has_n_blocks_t = typedef decltype(std::declval<T const>().n_blocks()) |
Definition at line 55 of file block_vector_base.h.
using internal::set_ghost_state_t = typedef decltype(std::declval<T const>().set_ghost_state(std::declval<bool>())) |
Helper functions that call set_ghost_state() if the vector supports this operation.
Definition at line 99 of file dof_accessor_set.cc.
|
strong |
Enumerator | |
---|---|
scalar | |
vectorized |
Definition at line 41 of file evaluation_kernels_hanging_nodes.h.
|
strong |
Helper enum to specify the type of vectorization for FEEvaluationImplHangingNodesRunnerTypes::scalar.
Definition at line 53 of file evaluation_kernels_hanging_nodes.h.
|
strong |
Helper enum to specify which Helper implementation should be used.
Definition at line 1107 of file evaluation_kernels_hanging_nodes.h.
In this namespace, the evaluator routines that evaluate the tensor products are implemented.
Enumerator | |
---|---|
evaluate_general | Do not use anything more than the tensor product structure of the finite element. |
evaluate_symmetric | Perform evaluation by exploiting symmetry in the finite element: i.e., skip some computations by utilizing the symmetry in the shape functions and quadrature points. |
evaluate_evenodd | Use symmetry to apply the operator to even and odd parts of the input vector separately: see the documentation of the EvaluatorTensorProduct specialization for more information. |
evaluate_symmetric_hierarchical | Use symmetry in Legendre and similar polynomial spaces where the shape functions with even number are symmetric about the center of the quadrature points (think about even polynomial degrees) and the shape functions with odd number are anti-symmetric about the center of the quadrature points (think about odd polynomial degrees). This allows to use a strategy similar to the even-odd technique but without separate coefficient arrays. See the documentation of the EvaluatorTensorProduct specialization for more information. |
evaluate_raviart_thomas | Raviart-Thomas elements with anisotropic polynomials. |
Definition at line 38 of file tensor_product_kernels.h.
|
strong |
Determine which quantity should be computed via the tensor product kernels.
Enumerator | |
---|---|
value | Evaluate/integrate by shape functions. |
gradient | Evaluate/integrate by gradients of the shape functions. |
hessian | Evaluate/integrate by hessians of the shape functions. |
Definition at line 79 of file tensor_product_kernels.h.
Point< dim+1 > internal::create_higher_dim_point | ( | const Point< dim > & | point, |
const unsigned int | component_in_dim_plus_1, | ||
const double | coordinate_value | ||
) |
Creates a (dim + 1
)-dimensional point by copying over the coordinates of the incoming dim
-dimensional point and setting the "missing" (dim + 1
)-dimensional component to the incoming coordinate value.
For example, given the input \(\{(x, y), 2, z \}\) this function creates the point \((x, y, z)\).
The coordinates of the dim
-dimensional point are written to the coordinates of the (dim + 1
)-dimensional point in the order of the convention given by the function coordinate_to_one_dim_higher. Thus, the order of coordinates on the lower-dimensional point are not preserved: \(\{(z, x), 1, y \}\) creates the point \((x, y, z)\).
Definition at line 24 of file function_restriction.cc.
void internal::ensure_kokkos_initialized | ( | ) |
internal::GenericDoFsPerObject internal::expand | ( | const unsigned int | dim, |
const std::vector< unsigned int > & | dofs_per_object, | ||
const ReferenceCell | reference_cell | ||
) |
Utility function to convert "dofs per object" information of a dim
dimensional reference cell reference_cell
.
Definition at line 25 of file fe_data.cc.
|
inlineconstexpr |
A helper function to create a ReferenceCell object from an integer. ReferenceCell objects are "singletons" (actually, "multitons" – there are multiple, but they are only a handful and these are all that can be used). What is then necessary is to have a way to create these with their internal id to distinguish the few possible ones in existence. We could do this via a public constructor of ReferenceCell, but that would allow users to create ones outside the range we envision, and we don't want to do that. Rather, the constructor that takes an integer is made private
but we have this one function in an internal namespace that is a friend of the class and can be used to create the objects.
Definition at line 961 of file reference_cell.h.
void internal::reinit | ( | MatrixBlock< MatrixType > & | v, |
const BlockSparsityPattern & | p | ||
) |
Definition at line 618 of file matrix_block.h.
void internal::reinit | ( | MatrixBlock<::SparseMatrix< number > > & | v, |
const BlockSparsityPattern & | p | ||
) |
Definition at line 627 of file matrix_block.h.
|
constexpr |
Helper function to specify whether transformation to collocation should be used: It should give correct results (first condition), we need to be able to initialize the fields in shape_info.templates.h from the polynomials (second condition), and it should be the most efficient choice in terms of operation counts (third condition).
Definition at line 2250 of file evaluation_kernels.h.
void internal::do_vectorized_read | ( | const Number2 * | src_ptr, |
VectorizedArrayType & | dst | ||
) |
Definition at line 3838 of file evaluation_kernels.h.
void internal::do_vectorized_read | ( | const Number * | src_ptr, |
VectorizedArray< Number, width > & | dst | ||
) |
Definition at line 3850 of file evaluation_kernels.h.
void internal::do_vectorized_gather | ( | const Number2 * | src_ptr, |
const unsigned int * | indices, | ||
VectorizedArrayType & | dst | ||
) |
Definition at line 3860 of file evaluation_kernels.h.
void internal::do_vectorized_gather | ( | const Number * | src_ptr, |
const unsigned int * | indices, | ||
VectorizedArray< Number, width > & | dst | ||
) |
Definition at line 3874 of file evaluation_kernels.h.
void internal::do_vectorized_add | ( | const VectorizedArrayType | src, |
Number2 * | dst_ptr | ||
) |
Definition at line 3886 of file evaluation_kernels.h.
void internal::do_vectorized_add | ( | const VectorizedArray< Number, width > | src, |
Number * | dst_ptr | ||
) |
Definition at line 3898 of file evaluation_kernels.h.
void internal::do_vectorized_scatter_add | ( | const VectorizedArrayType | src, |
const unsigned int * | indices, | ||
Number2 * | dst_ptr | ||
) |
Definition at line 3910 of file evaluation_kernels.h.
void internal::do_vectorized_scatter_add | ( | const VectorizedArray< Number, width > | src, |
const unsigned int * | indices, | ||
Number * | dst_ptr | ||
) |
Definition at line 3924 of file evaluation_kernels.h.
void internal::adjust_for_face_orientation | ( | const unsigned int | dim, |
const unsigned int | n_components, | ||
const EvaluationFlags::EvaluationFlags | flag, | ||
const unsigned int * | orientation, | ||
const bool | integrate, | ||
const std::size_t | n_q_points, | ||
Number * | tmp_values, | ||
Number * | values_quad, | ||
Number * | gradients_quad, | ||
Number * | hessians_quad | ||
) |
Definition at line 3942 of file evaluation_kernels.h.
void internal::adjust_for_face_orientation_per_lane | ( | const unsigned int | dim, |
const unsigned int | n_components, | ||
const unsigned int | v, | ||
const EvaluationFlags::EvaluationFlags | flag, | ||
const unsigned int * | orientation, | ||
const bool | integrate, | ||
const std::size_t | n_q_points, | ||
Number * | tmp_values, | ||
VectorizedArrayType * | values_quad, | ||
VectorizedArrayType * | gradients_quad = nullptr , |
||
VectorizedArrayType * | hessians_quad = nullptr |
||
) |
Definition at line 4005 of file evaluation_kernels.h.
void internal::fe_face_evaluation_process_and_io | ( | Processor & | proc, |
const unsigned int | n_components, | ||
const EvaluationFlags::EvaluationFlags | evaluation_flag, | ||
typename Processor::Number2_ * | global_vector_ptr, | ||
const std::vector< ArrayView< const typename Processor::Number2_ > > * | sm_ptr, | ||
const EvaluationData & | fe_eval, | ||
typename Processor::VectorizedArrayType_ * | temp1 | ||
) |
Definition at line 4555 of file evaluation_kernels.h.
bool internal::instantiation_helper_run | ( | const unsigned int | given_degree, |
const unsigned int | n_q_points_1d, | ||
Args &... | args | ||
) |
Definition at line 33 of file evaluation_template_factory_internal.h.
bool internal::instantiation_helper_degree_run | ( | const unsigned int | given_degree, |
Args &... | args | ||
) |
Definition at line 65 of file evaluation_template_factory_internal.h.
|
inline |
Definition at line 1597 of file tensor_product_kernels.h.
|
inline |
Computes the values and derivatives of the 1d polynomials poly
at the specified point p
and stores it in shapes
.
Definition at line 3007 of file tensor_product_kernels.h.
|
inline |
Specialization of above function for dim = 0. Should not be called.
Definition at line 3030 of file tensor_product_kernels.h.
|
inline |
Interpolate inner dimensions of tensor product shape functions.
Definition at line 3055 of file tensor_product_kernels.h.
|
inline |
Interpolates the values and gradients into the points specified in compute_values_of_array()
with help of the precomputed shapes
.
Definition at line 3142 of file tensor_product_kernels.h.
|
inline |
Specializes evaluate_tensor_product_value_and_gradient()
for linear polynomials which massively reduces the necessary instructions.
Definition at line 3242 of file tensor_product_kernels.h.
|
inline |
Compute the polynomial interpolation of a tensor product shape function \(\varphi_i\) given a vector of coefficients \(u_i\) in the form \(u_h(\mathbf{x}) = \sum_{i=1}^{k^d} \varphi_i(\mathbf{x}) u_i\). The shape functions \(\varphi_i(\mathbf{x}) =
\prod_{d=1}^{\text{dim}}\varphi_{i_d}^\text{1d}(x_d)\) represent a tensor product. The function returns a pair with the value of the interpolation as the first component and the gradient in reference coordinates as the second component. Note that for compound types (e.g. the values
field begin a Point<spacedim> argument), the components of the gradient are sorted as Tensor<1, dim, Tensor<1, spacedim>> with the derivatives as the first index; this is a consequence of the generic arguments in the function.
poly | The underlying one-dimensional polynomial basis \(\{\varphi^{1d}_{i_1}\}\) given as a vector of polynomials. |
values | The expansion coefficients \(u_i\) of type Number in the polynomial interpolation. The coefficients can be simply double variables but e.g. also Point<spacedim> in case they define arithmetic operations with the type Number2 . |
p | The position in reference coordinates where the interpolation should be evaluated. |
d_linear | Flag to specify whether a d-linear (linear in 1d, bi-linear in 2d, tri-linear in 3d) interpolation should be made, which allows to unroll loops and considerably speed up evaluation. |
renumber | Optional parameter to specify a renumbering in the coefficient vector, assuming that values[renumber[i]] returns the lexicographic (tensor product) entry of the coefficients. If the vector is entry, the values are assumed to be sorted lexicographically. |
Definition at line 3374 of file tensor_product_kernels.h.
|
inline |
Definition at line 3416 of file tensor_product_kernels.h.
|
inline |
Definition at line 3451 of file tensor_product_kernels.h.
|
inline |
Definition at line 3517 of file tensor_product_kernels.h.
|
inline |
Definition at line 3574 of file tensor_product_kernels.h.
|
inline |
This function computes derivatives of arbitrary orders in 1d, returning a Tensor with the respective derivative
Definition at line 3613 of file tensor_product_kernels.h.
|
inline |
This function computes derivatives of arbitrary orders in 2d, returning a Tensor with the respective derivatives
Definition at line 3653 of file tensor_product_kernels.h.
|
inline |
This function computes derivatives of arbitrary orders in 3d, returning a Tensor with the respective derivatives
Definition at line 3705 of file tensor_product_kernels.h.
SymmetricTensor< 2, dim, typename ProductTypeNoPoint< Number, Number2 >::type > internal::evaluate_tensor_product_hessian | ( | const std::vector< Polynomials::Polynomial< double > > & | poly, |
const std::vector< Number > & | values, | ||
const Point< dim, Number2 > & | p, | ||
const std::vector< unsigned int > & | renumber = {} |
||
) |
Definition at line 3769 of file tensor_product_kernels.h.
|
inline |
Test inner dimensions of tensor product shape functions and accumulate.
Definition at line 3818 of file tensor_product_kernels.h.
|
inline |
Same as evaluate_tensor_product_value_and_gradient_shapes() but for integration.
Definition at line 3931 of file tensor_product_kernels.h.
|
inline |
Specializes integrate_add_tensor_product_value_and_gradient_shapes()
for linear polynomials which massively reduces the necessary instructions.
Definition at line 4015 of file tensor_product_kernels.h.
|
inline |
Calls the correct integrate_add_tensor_product_value_and_gradient_
...() function depending on if values should be added to or set and if polynomials are linear.
Definition at line 4179 of file tensor_product_kernels.h.
|
inline |
Test inner dimensions of tensor product shape functions and accumulate.
Definition at line 4236 of file tensor_product_kernels.h.
|
inline |
Same as evaluate_tensor_product_value_shapes() but for integration.
Definition at line 4292 of file tensor_product_kernels.h.
|
inline |
Specializes integrate_tensor_product_value_shapes()
for linear polynomials which massively reduces the necessary instructions.
Definition at line 4349 of file tensor_product_kernels.h.
|
inline |
Calls the correct integrate_add_tensor_product_value_
...() function depending on if values should be added to or set and if polynomials are linear.
Definition at line 4450 of file tensor_product_kernels.h.
|
inline |
Definition at line 4502 of file tensor_product_kernels.h.
|
inline |
Definition at line 4540 of file tensor_product_kernels.h.
|
inline |
Definition at line 4587 of file tensor_product_kernels.h.
|
inline |
Definition at line 4648 of file tensor_product_kernels.h.
|
inline |
Definition at line 46 of file vector_access_internal.h.
|
inline |
Definition at line 60 of file vector_access_internal.h.
|
inline |
Definition at line 97 of file vector_access_internal.h.
|
inline |
Definition at line 123 of file vector_access_internal.h.
|
inline |
Definition at line 149 of file vector_access_internal.h.
|
inline |
Definition at line 182 of file vector_access_internal.h.
|
inline |
|
inline |
|
inline |
void internal::assemble | ( | const MeshWorker::DoFInfoBox< dim, DOFINFO > & | dinfo, |
A * | assembler | ||
) |
unsigned int internal::get_degree | ( | const std::vector< typename BarycentricPolynomials< dim >::PolyType > & | polys | ) |
Get the highest degree of the barycentric polynomial (in Cartesian coordinates).
Definition at line 30 of file polynomials_barycentric.cc.
std::enable_if_t<!std::is_unsigned< Number >::value, typename numbers::NumberTraits< Number >::real_type > internal::get_abs | ( | const Number | a | ) |
In the set_dof_values(), we need to invoke abs() also on unsigned data types, which is ill-formed on newer C++ standards. To avoid this, we use std::abs on default types, but simply return the number on unsigned types.
Definition at line 63 of file dof_accessor_set.cc.
std::enable_if_t< std::is_unsigned< Number >::value, Number > internal::get_abs | ( | const Number | a | ) |
Definition at line 70 of file dof_accessor_set.cc.
void internal::set_ghost_state | ( | VectorType & | vector, |
const bool | ghosted | ||
) |
Definition at line 110 of file dof_accessor_set.cc.
void internal::set_dof_values | ( | const DoFCellAccessor< dim, spacedim, lda > & | cell, |
const Vector< number > & | local_values, | ||
OutputVector & | values, | ||
const bool | perform_check | ||
) |
Helper function that sets the values on a cell, but also checks if the new values are similar to the old values.
Definition at line 135 of file dof_accessor_set.cc.
void internal::process_by_interpolation | ( | const DoFCellAccessor< dim, spacedim, lda > & | cell, |
const Vector< number > & | local_values, | ||
OutputVector & | values, | ||
const types::fe_index | fe_index_, | ||
const std::function< void(const DoFCellAccessor< dim, spacedim, lda > &cell, const Vector< number > &local_values, OutputVector &values)> & | processor | ||
) |
Definition at line 179 of file dof_accessor_set.cc.
std::string internal::policy_to_string | ( | const ::internal::DoFHandlerImplementation::Policy::PolicyBase< dim, spacedim > & | policy | ) |
Definition at line 54 of file dof_handler.cc.
Definition at line 99 of file fe_data.cc.
Table< 2, unsigned int > internal::setup_primitive_offset_table | ( | const FESystem< dim, spacedim > & | fe, |
const unsigned int | base_no | ||
) |
Setup a table of offsets for a primitive FE. Unlike the nonprimitive case, here the number of nonzero components per shape function is always 1 and the number of components in the FE is always the multiplicity.
Definition at line 57 of file fe_system.cc.
std::vector< typename FESystem< dim, spacedim >::BaseOffsets > internal::setup_nonprimitive_offset_table | ( | const FESystem< dim, spacedim > & | fe, |
const unsigned int | base_no | ||
) |
Setup a table of offsets for a nonprimitive FE.
Definition at line 94 of file fe_system.cc.
void internal::copy_primitive_base_element_values | ( | const FESystem< dim, spacedim > & | fe, |
const unsigned int | base_no, | ||
const UpdateFlags | base_flags, | ||
const Table< 2, unsigned int > & | base_to_system_table, | ||
const FEValuesImplementation::FiniteElementRelatedData< dim, spacedim > & | base_data, | ||
FEValuesImplementation::FiniteElementRelatedData< dim, spacedim > & | output_data | ||
) |
Copy data between internal FEValues objects from a primitive FE to the current FE.
Definition at line 135 of file fe_system.cc.
void internal::copy_nonprimitive_base_element_values | ( | const FESystem< dim, spacedim > & | fe, |
const unsigned int | base_no, | ||
const unsigned int | n_q_points, | ||
const UpdateFlags | base_flags, | ||
const std::vector< typename FESystem< dim, spacedim >::BaseOffsets > & | offsets, | ||
const FEValuesImplementation::FiniteElementRelatedData< dim, spacedim > & | base_data, | ||
FEValuesImplementation::FiniteElementRelatedData< dim, spacedim > & | output_data | ||
) |
Copy data between internal FEValues objects from a nonprimitive FE to the current FE.
Definition at line 190 of file fe_system.cc.
|
inline |
Definition at line 60 of file fe_values.cc.
|
inline |
Definition at line 69 of file fe_values.cc.
|
inline |
Definition at line 80 of file fe_values.cc.
void internal::do_function_values | ( | const ArrayView< Number2 > & | dof_values, |
const ::Table< 2, double > & | shape_values, | ||
std::vector< Number > & | values | ||
) |
Definition at line 2820 of file fe_values.cc.
void internal::do_function_values | ( | const ArrayView< typename VectorType::value_type > & | dof_values, |
const ::Table< 2, double > & | shape_values, | ||
const FiniteElement< dim, spacedim > & | fe, | ||
const std::vector< unsigned int > & | shape_function_to_row_table, | ||
ArrayView< VectorType > | values, | ||
const bool | quadrature_points_fastest = false , |
||
const unsigned int | component_multiple = 1 |
||
) |
Definition at line 2860 of file fe_values.cc.
void internal::do_function_derivatives | ( | const ArrayView< Number > & | dof_values, |
const ::Table< 2, Tensor< order, spacedim > > & | shape_derivatives, | ||
std::vector< Tensor< order, spacedim, Number > > & | derivatives | ||
) |
Definition at line 2971 of file fe_values.cc.
void internal::do_function_derivatives | ( | const ArrayView< Number > & | dof_values, |
const ::Table< 2, Tensor< order, spacedim > > & | shape_derivatives, | ||
const FiniteElement< dim, spacedim > & | fe, | ||
const std::vector< unsigned int > & | shape_function_to_row_table, | ||
ArrayView< std::vector< Tensor< order, spacedim, Number > > > | derivatives, | ||
const bool | quadrature_points_fastest = false , |
||
const unsigned int | component_multiple = 1 |
||
) |
Definition at line 3011 of file fe_values.cc.
void internal::do_function_laplacians | ( | const ArrayView< Number2 > & | dof_values, |
const ::Table< 2, Tensor< 2, spacedim > > & | shape_hessians, | ||
std::vector< Number > & | laplacians | ||
) |
Definition at line 3118 of file fe_values.cc.
void internal::do_function_laplacians | ( | const ArrayView< Number > & | dof_values, |
const ::Table< 2, Tensor< 2, spacedim > > & | shape_hessians, | ||
const FiniteElement< dim, spacedim > & | fe, | ||
const std::vector< unsigned int > & | shape_function_to_row_table, | ||
std::vector< VectorType > & | laplacians, | ||
const bool | quadrature_points_fastest = false , |
||
const unsigned int | component_multiple = 1 |
||
) |
Definition at line 3155 of file fe_values.cc.
Tensor< 1, 3 > internal::apply_exponential_map | ( | const Tensor< 1, 3 > & | u, |
const Tensor< 1, 3 > & | dir | ||
) |
Definition at line 52 of file manifold_lib.cc.
Definition at line 72 of file manifold_lib.cc.
Point< spacedim > internal::compute_normal | ( | const Tensor< 1, spacedim > & | , |
bool | = false |
||
) |
Definition at line 83 of file manifold_lib.cc.
Definition at line 90 of file manifold_lib.cc.
void internal::extract_interpolation_matrices | ( | const DoFHandler< dim, spacedim > & | dof, |
::Table< 2, FullMatrix< double > > & | matrices | ||
) |
Generate a table that contains interpolation matrices between each combination of finite elements used in a DoFHandler of some kind. Since not all elements can be interpolated onto each other, the table may contain empty matrices for those combinations of elements for which no such interpolation is implemented.
Definition at line 220 of file solution_transfer.cc.
void internal::restriction_additive | ( | const FiniteElement< dim, spacedim > & | , |
std::vector< std::vector< bool > > & | |||
) |
Definition at line 257 of file solution_transfer.cc.
void internal::restriction_additive | ( | const ::hp::FECollection< dim, spacedim > & | fe, |
std::vector< std::vector< bool > > & | restriction_is_additive | ||
) |
Definition at line 263 of file solution_transfer.cc.
bool internal::dealii_initialized_kokkos = false |
Records if Kokkos has been initialized by deal.II. The value stored is only meaningful after ensure_kokkos_initialized() has been called.
Decompose the shape-function index of a linear wedge into an index to access the right shape function within the triangle and within the line.
Definition at line 36 of file polynomials_wedge.h.
Decompose the shape-function index of a quadratic wedge into an index to access the right shape function within the triangle and within the line.
Definition at line 44 of file polynomials_wedge.h.
|
constexpr |
A constexpr
variable that describes whether or not Op<Args...>
is a valid expression.
The way this is used is to define an Op
operation template that describes the operation we want to perform, and Args
is a template pack that describes the arguments to the operation. This variable then states whether the operation, with these arguments, leads to a valid C++ expression.
An example is if one wanted to find out whether a type T
has a get_mpi_communicator()
member function. In that case, one would write the operation as
and could define a variable like
The trick used here is that get_mpi_communicator_op
is a general template, but when used with a type that does not have a get_mpi_communicator()
member variable, the decltype(...)
operation will fail because its argument does not represent a valid expression for such a type. In other words, for such types T
that do not have such a member function, the general template get_mpi_communicator_op
represents a valid declaration, but the instantiation get_mpi_communicator_op<T>
is not, and the variable declared here detects and reports this.
Definition at line 158 of file template_constraints.h.
|
constexpr |
Definition at line 52 of file block_vector_base.h.
|
constexpr |
Definition at line 58 of file block_vector_base.h.
|
constexpr |
Definition at line 62 of file block_vector_base.h.
|
constexpr |
Check if a vector is a deal.II vector.
Definition at line 79 of file dof_accessor_set.cc.
|
constexpr |
Definition at line 103 of file dof_accessor_set.cc.
|
staticconstexpr |
Definition at line 46 of file manifold_lib.cc.