|
IBAMR
IBAMR version 0.19.
|
Class storing multiple libMesh::FE objects, each corresponding to a different quadrature rule. Each FE object is configured with a quadrature rule corresponding to the provided quad_key parameter.
More...
#include <ibtk/FECache.h>
Public Types | |
| using | key_type = quadrature_key_type |
| using | value_type = libMesh::FEBase |
Public Member Functions | |
| FECache (unsigned int dim, const libMesh::FEType &fe_type, FEUpdateFlags flags) | |
| value_type & | operator() (const key_type &quad_key, const libMesh::Elem *elem) |
| FEUpdateFlags | getFEUpdateFlags () const |
| libMesh::FEType | getFEType () const |
Protected Attributes | |
| const unsigned int | d_dim |
| const libMesh::FEType | d_fe_type |
| const FEUpdateFlags | d_update_flags |
| QuadratureCache | d_quadrature_cache |
| std::map< key_type, std::unique_ptr< libMesh::FEBase > > | d_fes |
The Lagrangian-Eulerian interaction code uses different quadrature rules on different Elems to account for the change in size, over time, of each corresponding grid cell. Since libMesh::FE objects cache values that are independent of the current cell (such as shape function values) but dependent upon the quadrature rule, it is much more efficient to store one FE object for each quadrature rule instead of constantly recomputing, e.g., shape function values.
This class essentially provides a wrapper around std::map to manage FE objects and the quadrature rules they use. The keys are descriptions of quadrature rules.
Key type. Completely describes (excepting p-refinement) a libMesh quadrature rule.
| using IBTK::FECache::value_type = libMesh::FEBase |
Type of values stored by this class that are accessible through operator[].
|
inline |
Constructor. Sets up a cache of FE objects calculating values for the given FEType argument. All cached FE objects have the same FEType.
| dim | The dimension of the FE object. |
| fe_type | The libMesh FEType object describing the relevant finite element. |
| flags | FEUpdateFlags indicating which values should be calculated by each libMesh::FEBase object. |
|
inline |
Return a reference to an FE object that matches the specified quadrature rule type and order on the given element.
| quad_key | a tuple of enums that completely describes a libMesh quadrature rule. |
| elem | Pointer to an element. This will be used to, if necessary, reinitialize the returned FE object. |
|
inline |
Return the FEUpdateFlags stored by the current FECache.
|
inline |
Return the FEType stored by the current FECache.
|
protected |
Dimension of the FE mesh.
|
protected |
Object describing the finite element type.
|
protected |
Update flags for the current object.
|
protected |
Managed libMesh::Quadrature objects. These are attached to the FE objects.
|
protected |
Managed libMesh::FE objects of specified dimension and family.
1.8.17