A class representing a Lagrange space for finite element methods on a structured, rectilinear grid.
More...
|
|
typedef FiniteElementSpace< T, Dim, numElementDOFs, ElementType, QuadratureType, FieldLHS, FieldRHS >::indices_t | indices_t |
| |
|
typedef FiniteElementSpace< T, Dim, numElementDOFs, ElementType, QuadratureType, FieldLHS, FieldRHS >::point_t | point_t |
| |
|
typedef FiniteElementSpace< T, Dim, numElementDOFs, ElementType, QuadratureType, FieldLHS, FieldRHS >::vertex_points_t | vertex_points_t |
| |
|
typedef FieldLayout< Dim > | Layout_t |
| |
|
typedef detail::ViewType< T, Dim >::view_type | ViewType |
| |
|
typedef detail::ViewType< T, Dim, Kokkos::MemoryTraits< Kokkos::Atomic > >::view_type | AtomicViewType |
| |
|
typedef Vector< size_t, Dim > | indices_t |
| |
|
typedef Vector< T, Dim > | point_t |
| |
|
typedef Vector< size_t, numElementVertices > | vertex_indices_t |
| |
|
typedef Vector< indices_t, numElementVertices > | indices_list_t |
| |
|
typedef Vector< point_t, numElementVertices > | vertex_points_t |
| |
|
| | LagrangeSpace (UniformCartesian< T, Dim > &mesh, ElementType &ref_element, const QuadratureType &quadrature, Layout_t &layout) |
| | Construct a new LagrangeSpace object.
|
| |
| | LagrangeSpace (UniformCartesian< T, Dim > &mesh, ElementType &ref_element, const QuadratureType &quadrature) |
| | Construct a new LagrangeSpace object (without layout) This constructor is made to work with the default constructor in FEMPoissonSolver.h such that it is compatible with alpine.
|
| |
| void | initialize (UniformCartesian< T, Dim > &mesh, Layout_t &layout) |
| | Initialize a LagrangeSpace object created with the default constructor.
|
| |
|
void | initializeElementIndices (Layout_t &layout) |
| | Initialize a Kokkos view containing the element indices. This distributes the elements among MPI ranks.
|
| |
|
void | updateLayout (Layout_t &layout) |
| | Function to update the element partition and the layout of fields in the LagrangeSpace if the layout has been changed during the simulation (for example by the load balancer).
|
| |
| KOKKOS_FUNCTION size_t | numGlobalDOFs () const override |
| | Degree of Freedom operations //////////////////////////////////////.
|
| |
| KOKKOS_FUNCTION size_t | getLocalDOFIndex (const size_t &elementIndex, const size_t &globalDOFIndex) const override |
| | Get the elements local DOF from the element index and global DOF index.
|
| |
| KOKKOS_FUNCTION size_t | getGlobalDOFIndex (const size_t &elementIndex, const size_t &localDOFIndex) const override |
| | Get the global DOF index from the element index and local DOF.
|
| |
| KOKKOS_FUNCTION Vector< size_t, numElementDOFs > | getLocalDOFIndices () const override |
| | Get the local DOF indices (vector of local DOF indices) They are independent of the specific element because it only depends on the reference element type.
|
| |
| KOKKOS_FUNCTION Vector< size_t, numElementDOFs > | getGlobalDOFIndices (const size_t &element_index) const override |
| | Get the global DOF indices (vector of global DOF indices) of an element.
|
| |
| KOKKOS_FUNCTION T | evaluateRefElementShapeFunction (const size_t &localDOF, const point_t &localPoint) const |
| | Basis functions and gradients /////////////////////////////////////.
|
| |
| KOKKOS_FUNCTION point_t | evaluateRefElementShapeFunctionGradient (const size_t &localDOF, const point_t &localPoint) const |
| | Evaluate the gradient of the shape function of a local degree of freedom at a given point in the reference element.
|
| |
|
KOKKOS_FUNCTION point_t | getInverseTransposeTransformationJacobian (vertex_points_t pt) const |
| | Functions to access element info from outside /////////////////////.
|
| |
| template<typename F > |
| FieldLHS | evaluateAx (FieldLHS &field, F &evalFunction) |
| | Assembly operations ///////////////////////////////////////////////.
|
| |
|
template<typename F > |
| FieldLHS | evaluateAx_lower (FieldLHS &field, F &evalFunction) |
| |
|
template<typename F > |
| FieldLHS | evaluateAx_upper (FieldLHS &field, F &evalFunction) |
| |
|
template<typename F > |
| FieldLHS | evaluateAx_upperlower (FieldLHS &field, F &evalFunction) |
| |
|
template<typename F > |
| FieldLHS | evaluateAx_inversediag (FieldLHS &field, F &evalFunction) |
| |
|
template<typename F > |
| FieldLHS | evaluateAx_diag (FieldLHS &field, F &evalFunction) |
| |
| template<typename F > |
| FieldLHS | evaluateAx_lift (FieldLHS &field, F &evalFunction) |
| | Assemble the left stiffness matrix A of the system but only for the boundary values, so that they can be subtracted from the RHS for treatment of Dirichlet BCs.
|
| |
| void | evaluateLoadVector (FieldRHS &field) const |
| | Assemble the load vector b of the system Ax = b.
|
| |
|
void | evaluateLumpedMass (FieldRHS &field) const |
| | Functions for error computations, etc. ////////////////////////////.
|
| |
| template<typename F > |
| T | computeErrorL2 (const FieldLHS &u_h, const F &u_sol) const |
| | Error norm computations ///////////////////////////////////////////.
|
| |
| T | computeAvg (const FieldLHS &u_h) const |
| | Given a field, compute the average.
|
| |
|
DeviceStruct | getDeviceMirror () const |
| | Device struct definitions /////////////////////////////////////////.
|
| |
| | FiniteElementSpace (UniformCartesian< T, Dim > &mesh, ElementType &ref_element, const QuadratureType &quadrature) |
| | Construct a new FiniteElementSpace object.
|
| |
|
void | setMesh (UniformCartesian< T, Dim > &mesh) |
| |
| KOKKOS_FUNCTION size_t | numElements () const |
| | Mesh and Element operations ///////////////////////////////////////.
|
| |
| KOKKOS_FUNCTION size_t | numElementsInDim (const size_t &dim) const |
| | Get the number of elements in a given dimension.
|
| |
| KOKKOS_FUNCTION indices_t | getMeshVertexNDIndex (const size_t &vertex_index) const |
| | Get the NDIndex of a mesh vertex.
|
| |
| KOKKOS_FUNCTION size_t | getMeshVertexIndex (const indices_t &vertex_nd_index) const |
| | Get the global index of a mesh vertex given its NDIndex.
|
| |
| KOKKOS_FUNCTION indices_t | getElementNDIndex (const size_t &elementIndex) const |
| | Get the NDIndex (vector of indices for each dimension) of a mesh element.
|
| |
| KOKKOS_FUNCTION size_t | getElementIndex (const indices_t &ndindex) const |
| | Get the global index of a mesh element given the NDIndex.
|
| |
| KOKKOS_FUNCTION vertex_indices_t | getElementMeshVertexIndices (const indices_t &elementNDIndex) const |
| | Get all the global vertex indices of an element (given by its NDIndex).
|
| |
| KOKKOS_FUNCTION indices_list_t | getElementMeshVertexNDIndices (const indices_t &elementNDIndex) const |
| | Get all the NDIndices of the vertices of an element (given by its NDIndex).
|
| |
| KOKKOS_FUNCTION vertex_points_t | getElementMeshVertexPoints (const indices_t &elementNDIndex) const |
| | Get all the global vertex points of an element (given by its NDIndex).
|
| |
template<typename T, unsigned Dim, unsigned Order, typename ElementType, typename QuadratureType, typename FieldLHS, typename FieldRHS>
class ippl::LagrangeSpace< T, Dim, Order, ElementType, QuadratureType, FieldLHS, FieldRHS >
A class representing a Lagrange space for finite element methods on a structured, rectilinear grid.
- Template Parameters
-
| T | The floating point number type of the field values |
| Dim | The dimension of the mesh |
| Order | The order of the Lagrange space |
| QuadratureType | The type of the quadrature rule |
| FieldLHS | The type of the left hand side field |
| FieldRHS | The type of the right hand side field |