17#include <lf/mesh/mesh.h>
21#include "assembly_types.h"
227 [[
nodiscard]]
virtual std::shared_ptr<const lf::mesh::Mesh>
Mesh()
const = 0;
249 unsigned int ctrl = 0);
269 using dof_map_t = std::map<lf::base::RefEl, base::size_type>;
444 LF_VERIFY_MSG(
false,
"Illegal entity type");
472 LF_VERIFY_MSG(
false,
"Illegal entity type");
480 std::shared_ptr<const lf::mesh::Mesh>
mesh_;
487 std::array<std::vector<gdof_idx_t>, 3>
dofs_;
564 template <
typename LOCALDOFINFO>
569 LF_ASSERT_MSG((
mesh_p_->DimMesh() == 2),
"Can handle 2D meshes only");
765 std::shared_ptr<const lf::mesh::Mesh>
mesh_p_;
787 std::array<std::vector<gdof_idx_t>, 3>
dofs_;
A general (interface) class for DOF handling, see Lecture Document Paragraph 2.7.4....
virtual std::shared_ptr< const lf::mesh::Mesh > Mesh() const =0
Acess to underlying mesh object.
void PrintInfo(std::ostream &stream, const DofHandler &dof_handler, unsigned int ctrl=0)
Output information about the given dof handler to the given stream object.
DofHandler(DofHandler &&)=default
DofHandler & operator=(DofHandler &&)=default
virtual size_type NumInteriorDofs(const lf::mesh::Entity &entity) const =0
provides number of shape functions associated with an entity
DofHandler()=default
Default constructor, can only be called from derived class.
DofHandler(const DofHandler &)=default
virtual const lf::mesh::Entity & Entity(gdof_idx_t dofnum) const =0
retrieve unique entity at which a basis function is located
virtual std::span< const gdof_idx_t > GlobalDofIndices(const lf::mesh::Entity &entity) const =0
access to indices of global dof's belonging to an entity
virtual std::span< const gdof_idx_t > InteriorGlobalDofIndices(const lf::mesh::Entity &entity) const =0
global indices of shape functions associated with an entity_
virtual size_type NumLocalDofs(const lf::mesh::Entity &entity) const =0
tells the number of degrees of freedom subordinate/_belonging_ to to an entity
virtual size_type NumDofs() const =0
total number of dof's handled by the object
virtual ~DofHandler()=default
virtual Destructor
DofHandler & operator=(const DofHandler &)=default
Dof handler allowing variable local dof layouts.
std::vector< const lf::mesh::Entity * > dof_entities_
size_type NumInteriorDofs(const lf::mesh::Entity &entity) const override
provides number of shape functions associated with an entity
DynamicFEDofHandler & operator=(const DynamicFEDofHandler &)=delete
Copy assignment is forbidden.
std::shared_ptr< const lf::mesh::Mesh > mesh_p_
std::span< const gdof_idx_t > InteriorGlobalDofIndices(const lf::mesh::Entity &entity) const override
global indices of shape functions associated with an entity_
std::span< const gdof_idx_t > GlobalDofIndices(const lf::mesh::Entity &entity) const override
access to indices of global dof's belonging to an entity
DynamicFEDofHandler(DynamicFEDofHandler &&)=default
A DynamicFEDofHandler can be move constructed.
DynamicFEDofHandler & operator=(DynamicFEDofHandler &&)=default
A DynamicFEDofHandler can be moved into.
DynamicFEDofHandler(std::shared_ptr< const lf::mesh::Mesh > mesh_p, LOCALDOFINFO &&locdof)
Set-up of dof handler.
std::array< std::vector< size_type >, 3 > offsets_
size_type NumLocalDofs(const lf::mesh::Entity &entity) const override
tells the number of degrees of freedom subordinate/_belonging_ to to an entity
std::array< std::vector< gdof_idx_t >, 3 > dofs_
const lf::mesh::Entity & Entity(gdof_idx_t dofnum) const override
retrieve unique entity at which a basis function is located
std::shared_ptr< const lf::mesh::Mesh > Mesh() const override
Acess to underlying mesh object.
~DynamicFEDofHandler() override=default
Virtual destructor.
std::array< std::vector< size_type >, 3 > num_int_dofs_
DynamicFEDofHandler(const DynamicFEDofHandler &)=delete
It doesn't make much sense to copy construct a DynamicFEDofHandler.
size_type NumDofs() const override
total number of dof's handled by the object
Represents a reference element with all its properties.
static constexpr RefEl kSegment()
Returns the (1-dimensional) reference segment.
static constexpr RefEl kPoint()
Returns the (0-dimensional) reference point.
static constexpr RefEl kTria()
Returns the reference triangle.
static constexpr RefEl kQuad()
Returns the reference quadrilateral.
Interface class representing a topological entity in a cellular complex
void AssembleMatrixLocally(dim_t codim, const DofHandler &dof_handler_trial, const DofHandler &dof_handler_test, ENTITY_MATRIX_PROVIDER &entity_matrix_provider, TMPMATRIX &matrix)
Assembly function for standard assembly of finite element matrices.
D.o.f. index mapping and assembly facilities.
lf::base::glb_idx_t glb_idx_t
lf::base::size_type size_type
std::ostream & operator<<(std::ostream &o, const COOMatrix< SCALARTYPE > &mat)