12#ifndef BELFEM_CL_FEM_DOFMGR_DOFDATA_HPP
13#define BELFEM_CL_FEM_DOFMGR_DOFDATA_HPP
84 index_t mNumberOfFixedDofs = 0 ;
85 index_t mNumberOfHangingDofs = 0 ;
86 index_t mMyNumberOfFreeDofs = 0 ;
87 index_t mMyNumberOfFixedDofs = 0 ;
88 index_t mMyNumberOfHangingDofs = 0 ;
152 const uint aDofType )
const ;
159 const uint aDofType )
const ;
166 const uint aDofType )
const ;
173 const uint aDofType )
const ;
180 const uint aDofType )
const ;
217 Graph & aFixedDofs );
320 count_node_dofs(
IWG * aIWG,
328 count_edge_dofs(
IWG * aIWG,
336 count_face_dofs(
IWG * aIWG,
344 count_cell_dofs(
IWG * aIWG,
352 count_lambda_dofs(
IWG * aIWG,
377 compute_dof_offsets(
IWG * aIWG );
382 remove_hanging_dofs_from_container();
411 return mHangingDOFs ;
419 return mDofMap( aID );
427 return mDofMap.key_exists( aID );
435 return mDofTypeToField( aDofType );
443 const uint aDofType )
const
445 return aNodeID * mNumDofTypes + aDofType ;
453 const uint aDofType )
const
455 return mEdgeDofOffset + aEdgeID * mNumDofTypes + aDofType ;
463 const uint aDofType )
const
465 return mFaceDofOffset + aFaceID * mNumDofTypes + aDofType ;
473 const uint aDofType )
const
475 return mCellDofOffset + aCellID * mNumDofTypes + aDofType ;
483 const uint aDofType )
const
485 return mLambdaDofOffset + aFacetID * mNumDofTypes + aDofType ;
493 return mNumberOfFreeDofs ;
501 return mNumberOfFixedDofs ;
509 return mNumberOfHangingDofs ;
517 "DofTables have not been allocated yet");
519 return mDofIndexTables( aProc );
524 template<
typename T >
528 for ( T * tBasis : aBasis )
530 tBasis->allocate_dof_container();
538 BELFEM_ASSERT( mCommRank == 0,
"Abstract dofs can only be accessed by master");
539 return mAbstractDOFs;
547 return mMyNumberOfFreeDofs;
555 return mMyNumberOfFixedDofs;
563 return mMyNumberOfHangingDofs;
#define BELFEM_ASSERT(aCheck,...)
Definition assert.hpp:244
Compile-time fixed-size bitset.
Definition cl_Bitset.hpp:32
A bounds-checked wrapper around std::vector.
Definition cl_Cell.hpp:45
Hash map (unordered key-value).
Definition cl_Map.hpp:75
Top-level container for all mesh entities.
Definition cl_Mesh.hpp:60
Definition cl_FEM_Dof.hpp:28
Main workhorse: DOF management, assembly coordination and the solver interface.
Definition cl_FEM_DofManager.hpp:52
Prototype for Integrator of Weak Form Governing Equation.
Definition cl_IWG.hpp:81
Top-level orchestrator.
Definition cl_FEM_Kernel.hpp:56
id_t lambda_dof_id(const id_t aFacetID, const uint aDofType) const
Definition cl_FEM_DofMgr_DofData.hpp:481
void collect_hanging_dofs()
Definition cl_FEM_DofMgr_DofData.cpp:1930
const index_t & my_number_of_hanging_dofs() const
Definition cl_FEM_DofMgr_DofData.hpp:561
uint num_dofs_per_element(const id_t aBlockID) const
computes the number of dofs per element on block
Definition cl_FEM_DofMgr_DofData.cpp:2980
id_t edge_dof_id(const id_t aEdgeID, const uint aDofType) const
Definition cl_FEM_DofMgr_DofData.hpp:451
void split_dof_container(Cell< graph::Vertex * > &aFreeDofs, Cell< graph::Vertex * > &aFixedDofs)
Temporarily splits the unified DOF container (mDOFs) into separate free and fixed DOF graphs for inde...
Definition cl_FEM_DofMgr_DofData.cpp:2498
const index_t & number_of_fixed_dofs() const
Definition cl_FEM_DofMgr_DofData.hpp:499
Cell< Dof * > & hanging_dofs()
expose the hanging dof container
Definition cl_FEM_DofMgr_DofData.hpp:409
const index_t & my_number_of_free_dofs() const
Definition cl_FEM_DofMgr_DofData.hpp:545
index_t doftype_to_field_index(const index_t aDofType)
Definition cl_FEM_DofMgr_DofData.hpp:433
uint num_dofs_per_facet(const id_t aSideSetID) const
computes the number of dofs per element on sideset
Definition cl_FEM_DofMgr_DofData.cpp:3000
void create_dofwise_t_matrices_master()
Definition cl_FEM_DofMgr_DofData.cpp:3010
id_t face_dof_id(const id_t aFaceID, const uint aDofType) const
Definition cl_FEM_DofMgr_DofData.hpp:461
Cell< Dof * > & dofs()
expose the dof container
Definition cl_FEM_DofMgr_DofData.hpp:401
void create_dofs(IWG *aIWG)
Definition cl_FEM_DofMgr_DofData.cpp:130
void reset()
Definition cl_FEM_DofMgr_DofData.cpp:71
DofData(DofManager *aParent, Parameters *aParams)
Definition cl_FEM_DofMgr_DofData.cpp:48
bool dof_exists(const id_t aID) const
check if a dof exists, needed for bearing creation
Definition cl_FEM_DofMgr_DofData.hpp:425
void extract_abstract_dofs_from_mesh()
Definition cl_FEM_DofMgr_DofData.cpp:3661
void init_dof_values(const bool aFreeDofsOnly=false)
Definition cl_FEM_DofMgr_DofData.cpp:2413
void disconnect_dofs_from_mesh()
Definition cl_FEM_DofMgr_DofData.cpp:686
void create_field_map(IWG *aIwg)
Definition cl_FEM_DofMgr_DofData.cpp:566
const index_t & my_number_of_fixed_dofs() const
Definition cl_FEM_DofMgr_DofData.hpp:553
Dof * dof(const id_t aID)
Definition cl_FEM_DofMgr_DofData.hpp:417
void reorder_dofs(const Vector< id_t > &aGraphData, Graph &aFreeDofs, Graph &aFixedDofs)
Reorders DOFs to optimize matrix bandwidth for efficient solving.
Definition cl_FEM_DofMgr_DofData.cpp:2807
void connect_dofs_to_mesh()
Definition cl_FEM_DofMgr_DofData.cpp:654
void synchronize_dirichlet_bcs()
Definition cl_FEM_DofMgr_DofData.cpp:2619
id_t node_dof_id(const id_t aNodeID, const uint aDofType) const
Definition cl_FEM_DofMgr_DofData.hpp:441
id_t cell_dof_id(const id_t aCellID, const uint aDofType) const
Definition cl_FEM_DofMgr_DofData.hpp:471
void restore_dof_container(Cell< graph::Vertex * > &aFreeDofs, Cell< graph::Vertex * > &aFixedDofs)
Restores the unified DOF container (mDOFs) from separate free and fixed DOF graphs after reordering i...
Definition cl_FEM_DofMgr_DofData.cpp:2584
Cell< Dof * > & abstract_dofs()
Definition cl_FEM_DofMgr_DofData.hpp:536
const index_t & number_of_free_dofs() const
Definition cl_FEM_DofMgr_DofData.hpp:491
const Vector< index_t > & dof_indices(const uint aProc) const
Definition cl_FEM_DofMgr_DofData.hpp:514
const index_t & number_of_hanging_dofs() const
Definition cl_FEM_DofMgr_DofData.hpp:507
this is a parameter object that contains the relevant information for managing the DOFs
Definition cl_FEM_DofMgr_Parameters.hpp:34
Definition cl_FEM_DofMgr_BearingData.cpp:23
void allocate_dof_containers(Cell< T * > aBasis)
Definition cl_FEM_DofMgr_DofData.hpp:526
Definition cl_IFB_LINE3.hpp:21
USER GUIDES:
Definition cl_Capacitor.cpp:16
Cell< graph::Vertex * > Graph
Definition cl_Graph_Vertex.hpp:331
constexpr id_t gNoID
Definition typedefs.hpp:58
unsigned int uint
Definition typedefs.hpp:30
unsigned int id_t
Definition typedefs.hpp:41
int proc_t
Definition commtypes.hpp:29
uint32_t index_t
Definition typedefs.hpp:52
#define BELFEM_UINT_MAX
Definition typedefs.hpp:79