10#define IPPL_FEMSPACE_H
38 template <
typename T,
unsigned Dim,
unsigned NumElementDOFs,
typename ElementType,
39 typename QuadratureType,
typename FieldLHS,
typename FieldRHS>
75 const QuadratureType& quadrature);
190 const size_t& globalDOFIndex)
const = 0;
201 const size_t& localDOFIndex)
const = 0;
220 const size_t& elementIndex)
const = 0;
constexpr unsigned calculateNumElementVertices(unsigned Dim)
virtual KOKKOS_FUNCTION Vector< size_t, NumElementDOFs > getGlobalDOFIndices(const size_t &elementIndex) const =0
Get the global DOF indices (vector of global DOF indices) of an element.
virtual KOKKOS_FUNCTION size_t numGlobalDOFs() const =0
Degree of Freedom operations //////////////////////////////////////.
static constexpr unsigned numElementDOFs
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 size_t getElementIndex(const indices_t &ndindex) const
Get the global index of a mesh element given the NDIndex.
FiniteElementSpace(UniformCartesian< T, Dim > &mesh, ElementType &ref_element, const QuadratureType &quadrature)
Construct a new FiniteElementSpace object.
Vector< indices_t, numElementVertices > indices_list_t
static constexpr unsigned dim
Vector< size_t, Dim > indices_t
Vector< size_t, numElementVertices > vertex_indices_t
static constexpr unsigned numElementVertices
virtual KOKKOS_FUNCTION Vector< size_t, NumElementDOFs > getLocalDOFIndices() const =0
Get the local DOF indices (vector of local DOF indices) They are independent of the specific element ...
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).
const QuadratureType & quadrature_m
ElementType ref_element_m
KOKKOS_FUNCTION size_t numElementsInDim(const size_t &dim) const
Get the number of elements in a given dimension.
Vector< size_t, Dim > nr_m
Vector< point_t, numElementVertices > vertex_points_t
virtual KOKKOS_FUNCTION size_t getLocalDOFIndex(const size_t &elementIndex, const size_t &globalDOFIndex) const =0
Get the elements local DOF from the element index and global DOF index.
KOKKOS_FUNCTION indices_t getMeshVertexNDIndex(const size_t &vertex_index) const
Get the NDIndex of a mesh vertex.
virtual KOKKOS_FUNCTION size_t getGlobalDOFIndex(const size_t &elementIndex, const size_t &localDOFIndex) const =0
Get the global DOF index from the element index and local DOF.
Vector< double, Dim > origin_m
KOKKOS_FUNCTION vertex_points_t getElementMeshVertexPoints(const indices_t &elementNDIndex) const
Get all the global vertex points of an element (given by its NDIndex).
void setMesh(UniformCartesian< T, Dim > &mesh)
UniformCartesian< T, Dim > & mesh_m
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.
Vector< double, Dim > hr_m
KOKKOS_FUNCTION size_t numElements() const
Mesh and Element operations ///////////////////////////////////////.