#include <cl_FEM_DofMgr_DofData.hpp>
Public Member Functions | |
| DofData (DofManager *aParent, Parameters *aParams) | |
| ~DofData () | |
| void | create_dofs (IWG *aIWG) |
| void | create_field_map (IWG *aIwg) |
| Cell< Dof * > & | dofs () |
| expose the dof container | |
| Cell< Dof * > & | hanging_dofs () |
| expose the hanging dof container | |
| bool | dof_exists (const id_t aID) const |
| check if a dof exists, needed for bearing creation | |
| index_t | doftype_to_field_index (const index_t aDofType) |
| Dof * | dof (const id_t aID) |
| id_t | node_dof_id (const id_t aNodeID, const uint aDofType) const |
| id_t | edge_dof_id (const id_t aEdgeID, const uint aDofType) const |
| id_t | face_dof_id (const id_t aFaceID, const uint aDofType) const |
| id_t | cell_dof_id (const id_t aCellID, const uint aDofType) const |
| id_t | lambda_dof_id (const id_t aFacetID, const uint aDofType) const |
| void | init_dof_values (const bool aFreeDofsOnly=false) |
| 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 independent reordering. | |
| 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 is complete. | |
| void | synchronize_dirichlet_bcs () |
| void | reorder_dofs (const Vector< id_t > &aGraphData, Graph &aFreeDofs, Graph &aFixedDofs) |
| Reorders DOFs to optimize matrix bandwidth for efficient solving. | |
| const index_t & | number_of_free_dofs () const |
| const index_t & | number_of_fixed_dofs () const |
| const index_t & | number_of_hanging_dofs () const |
| void | reset () |
| uint | num_dofs_per_element (const id_t aBlockID) const |
| computes the number of dofs per element on block | |
| uint | num_dofs_per_facet (const id_t aSideSetID) const |
| computes the number of dofs per element on sideset | |
| const Vector< index_t > & | dof_indices (const uint aProc) const |
| void | connect_dofs_to_mesh () |
| void | disconnect_dofs_from_mesh () |
| void | create_dofwise_t_matrices_master () |
| void | collect_hanging_dofs () |
| Cell< Dof * > & | abstract_dofs () |
| void | extract_abstract_dofs_from_mesh () |
| const index_t & | my_number_of_free_dofs () const |
| const index_t & | my_number_of_fixed_dofs () const |
| const index_t & | my_number_of_hanging_dofs () const |
| belfem::fem::dofmgr::DofData::DofData | ( | DofManager * | aParent, |
| Parameters * | aParams ) |
| belfem::fem::dofmgr::DofData::~DofData | ( | ) |
|
inline |
| void belfem::fem::dofmgr::DofData::collect_hanging_dofs | ( | ) |
| void belfem::fem::dofmgr::DofData::connect_dofs_to_mesh | ( | ) |
| void belfem::fem::dofmgr::DofData::create_dofs | ( | IWG * | aIWG | ) |
| void belfem::fem::dofmgr::DofData::create_dofwise_t_matrices_master | ( | ) |
| void belfem::fem::dofmgr::DofData::create_field_map | ( | IWG * | aIwg | ) |
| void belfem::fem::dofmgr::DofData::disconnect_dofs_from_mesh | ( | ) |
|
inline |
check if a dof exists, needed for bearing creation
|
inline |
|
inline |
| void belfem::fem::dofmgr::DofData::extract_abstract_dofs_from_mesh | ( | ) |
|
inline |
expose the hanging dof container
| void belfem::fem::dofmgr::DofData::init_dof_values | ( | const bool | aFreeDofsOnly = false | ) |
copy values between dofs and fields. Free dofs read field -> dof; fixed dofs write dof -> field, unless aFreeDofsOnly is set ( seeding mode: the field is the truth, e.g. a restored memdump, and a fixed dof may still hold a factory dummy )
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
computes the number of dofs per element on block
computes the number of dofs per element on sideset
|
inline |
|
inline |
|
inline |
| void belfem::fem::dofmgr::DofData::reorder_dofs | ( | const Vector< id_t > & | aGraphData, |
| Graph & | aFreeDofs, | ||
| Graph & | aFixedDofs ) |
Reorders DOFs to optimize matrix bandwidth for efficient solving.
Purpose:
Algorithm: Free DOFs:
Workflow - Master Rank (rank 0):
Workflow - Worker Ranks (rank > 0):
Index Fields After Reordering:
Preconditions:
Postconditions:
Note on aLinkToSelf:
| void belfem::fem::dofmgr::DofData::reset | ( | ) |
| void belfem::fem::dofmgr::DofData::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 is complete.
Purpose:
Preconditions:
Actions:
Postconditions:
Storage layout after restore: mDOFs[0..n-1] : free DOFs in reordered sequence mDOFs[n..n+m-1] : fixed DOFs in reordered sequence
| aFreeDofs | Input: sorted graph of free DOFs (will be cleared) |
| aFixedDofs | Input: sorted graph of fixed DOFs (will be cleared) |
| void belfem::fem::dofmgr::DofData::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 independent reordering.
Purpose:
Actions:
Postconditions:
| aFreeDofs | Output: graph container for free DOFs |
| aFixedDofs | Output: graph container for fixed DOFs |
| void belfem::fem::dofmgr::DofData::synchronize_dirichlet_bcs | ( | ) |