Skip to content

Commit

Permalink
Merge pull request #15905 from kronbichler/cleanup_shape_info
Browse files Browse the repository at this point in the history
MatrixFree ShapeInfo: Move some code to UnivariateShapeData
  • Loading branch information
peterrum committed Aug 23, 2023
2 parents 0c27ebf + 36338ab commit 7af156d
Show file tree
Hide file tree
Showing 2 changed files with 194 additions and 205 deletions.
48 changes: 29 additions & 19 deletions include/deal.II/matrix_free/shape_info.h
Original file line number Diff line number Diff line change
Expand Up @@ -144,6 +144,35 @@ namespace internal
std::size_t
memory_consumption() const;

/**
* Evaluate the auxiliary polynomial space associated with the Lagrange
* polynomials in points of the given quadrature formula, filling the
* fields shape_[gradients,hessians]_collocation and related
* information.
*/
template <int dim, int spacedim>
void
evaluate_collocation_space(
const FiniteElement<dim, spacedim> &fe,
const Quadrature<1> & quad,
const std::vector<unsigned int> & lexicographic);

/**
* Check whether we have symmetries in the shape values. In that case,
* also fill the shape_???_eo fields.
*/
bool
check_and_set_shapes_symmetric();

/**
* Check whether symmetric 1d basis functions are such that the shape
* values form a diagonal matrix, i.e., the nodal points are collocated
* with the quadrature points. This allows for specialized algorithms
* that save some operations in the evaluation.
*/
bool
check_shapes_collocation() const;

/**
* Encodes the type of element detected at construction. FEEvaluation
* will select the most efficient algorithm based on the given element
Expand Down Expand Up @@ -578,25 +607,6 @@ namespace internal
* quadrature points to represent the correct order.
*/
dealii::Table<2, unsigned int> face_orientations_quad;

private:
/**
* Check whether we have symmetries in the shape values. In that case,
* also fill the shape_???_eo fields.
*/
bool
check_1d_shapes_symmetric(
UnivariateShapeData<Number> &univariate_shape_data);

/**
* Check whether symmetric 1d basis functions are such that the shape
* values form a diagonal matrix, i.e., the nodal points are collocated
* with the quadrature points. This allows for specialized algorithms
* that save some operations in the evaluation.
*/
bool
check_1d_shapes_collocation(
const UnivariateShapeData<Number> &univariate_shape_data) const;
};


Expand Down

0 comments on commit 7af156d

Please sign in to comment.