11#ifndef BELFEM_CL_FEM_DOFMANAGER_HPP
12#define BELFEM_CL_FEM_DOFMANAGER_HPP
84 bool mInitializedFlag = false ;
92 bool mJacobianIsUpToDate = false ;
153 return mInitializedFlag ;
162 dof(
const id_t aID )
override;
592 init_dofs(
const bool aSeedFreeDofsOnly );
607 compute_rhs_vector();
612 compute_rhs_matrix();
617 auto_set_materials();
627 consolidate_dofs(
Element * aElement );
632 link_bearings_with_dofs();
637 create_element_map();
647 return mParams->sideset_integration_order() ;
655 return mParams->integration_scheme() ;
663 return mParams->block_integration_order() ;
672 return mDofData->
dof( aID );
680 return mDofData->dofs() ;
688 return mDofData->node_dof_id( aNode->
id(), aDofType );
696 return mDofData->lambda_dof_id( aFacet->
id(), aDofType );
704 return mDofData->edge_dof_id( aEdge->
id(), aDofType );
712 return mDofData->face_dof_id( aFace->
id(), aDofType );
720 return mBearingData->bearing( aID );
728 return mSideSetData->sideset( aID );
736 return mBlockData->
block( aID );
752 return mSolverData->solver() ;
760 return mSolverData->system_matrix() ;
768 return mSolverData->dirichlet() ;
776 return mSolverData->enforcement() ;
784 return mSolverData->imposition() ;
808 return mSolverData->rhs_vector() ;
816 return mSolverData->rhs_norm() ;
824 return mSideSetData->sideset_exists( aID );
832 return mBlockData->block_exists( aID );
840 return mDofData->dof_exists( aID );
851 return mPostprocessors ;
859 return mBlockData->blocks() ;
867 return mSideSetData->sidesets() ;
875 return mSideSetData->number_of_wetted_nodes() ;
883 return mEigenValues ;
889 return mElementMap( aID );
895 return mElementMap.key_exists( aID );
903 return mDofData->abstract_dofs() ;
Cell is a wrapper around the standard vector.
Definition cl_Cell.hpp:42
Hierarchical data format I/O.
Definition cl_HDF5.hpp:39
Hash map (unordered key-value).
Definition cl_Map.hpp:75
Unified interface to the sparse direct solvers.
Definition cl_Solver.hpp:34
Configuration for a Solver.
Definition cl_SolverParameters.hpp:27
Sparse matrix in CSR or CSC format.
Definition cl_SpMatrix.hpp:52
Definition cl_FEM_Bearing.hpp:31
Definition cl_FEM_Block.hpp:35
mesh::Block * block()
expose block object on mesh
Definition cl_FEM_Block.hpp:82
Definition cl_FEM_Dof.hpp:28
Dof * dof(const uint aIndex)
access a dof
Definition cl_FEM_Dof.hpp:511
DofManagerBase(const DofManagerType aType, Kernel *aParent)
Definition cl_FEM_DofManagerBase.cpp:24
void initialize_postprocessors()
compute the matrices for the projections
Definition cl_FEM_DofManager.cpp:1323
void compute_jacobian(const bool aReset=true)
Definition cl_FEM_DofManager.cpp:441
void compute_residual()
Definition cl_FEM_DofManager.cpp:1062
Cell< SideSet * > & sidesets()
return the sidesets on this dof manager
Definition cl_FEM_DofManager.hpp:865
void set_equation(IWG *aIWG)
select the equation that is to be solved
Definition cl_FEM_DofManager.cpp:102
void full_lhs(Vector< real > &aLHS)
Definition cl_FEM_DofManager.cpp:1601
void solve_from_residual()
Definition cl_FEM_DofManager.cpp:1077
Cell< Block * > & blocks()
return the blocks on this dof manager
Definition cl_FEM_DofManager.hpp:857
dofmgr::EigenValues * eigen_values()
expose the eigenvalue tool
Definition cl_FEM_DofManager.hpp:881
SideSet * sideset(const id_t aID) override
return a specific sideset
Definition cl_FEM_DofManager.hpp:726
void print(const proc_t aRank=0)
a test routine for development
Definition cl_FEM_DofManager.cpp:173
void extract_abstract_dofs_from_mesh()
Definition cl_FEM_DofManager.cpp:378
Cell< Postprocessor * > & postprocessors()
expose the projector arrays
Definition cl_FEM_DofManager.hpp:849
Bearing * bearing(const id_t aID)
return a specific bearing
Definition cl_FEM_DofManager.hpp:718
void create_fields(IWG *aIWG)
check that the fields demanded by the IWG exist on the mesh and create them otherwise
Definition cl_FEM_DofManager.cpp:185
Cell< Dof * > & abstract_dofs()
Definition cl_FEM_DofManager.hpp:901
SpMatrix * dirichlet()
Definition cl_FEM_DofManager.hpp:766
void synchronize_fields(const Cell< string > &aFieldLabels) override
perform a collect first, then a distribute
Definition cl_FEM_DofManager.cpp:1192
bool dof_exists(const id_t aID) const override
Definition cl_FEM_DofManager.hpp:838
void compute_full_matrices()
Definition cl_FEM_DofManager.cpp:831
bool sideset_exists(const id_t &aID) const override
Definition cl_FEM_DofManager.hpp:822
real pre_update_residual() const
pre-update residual of the entry state under the current assembly ( Newton iterates only,...
Definition cl_FEM_DofManager.cpp:1116
void compute_volume_loads(const Vector< id_t > &aBlockIDs)
Definition cl_FEM_DofManager.cpp:1203
void initialize() override
Definition cl_FEM_DofManager.cpp:330
DofManager(Kernel *aParent, const index_t aIndex)
Definition cl_FEM_DofManager.cpp:31
Element * element(const id_t aID)
returns direct access to one element.
Definition cl_FEM_DofManager.hpp:887
index_t number_of_wetted_nodes() const
return the number of wetted nodes ( nodes on sidesets with a Neumann or Alpha BC )
Definition cl_FEM_DofManager.hpp:873
void save_system(const string &aPath)
Definition cl_FEM_DofManager.cpp:1275
Cell< Dof * > & dofs()
return the non-hanging dofs ( free and fixed; hanging dofs live in DofData::hanging_dofs() )
Definition cl_FEM_DofManager.hpp:678
void postprocess()
perform the L2 projections for the secondary fields
Definition cl_FEM_DofManager.cpp:1357
void load_system(const string &aPath)
Definition cl_FEM_DofManager.cpp:1267
uint sideset_integration_order() const override
Definition cl_FEM_DofManager.hpp:645
SpMatrix * system_matrix()
The JEDI Block Matrix System - May the Force be with you!
Definition cl_FEM_DofManager.hpp:758
SpMatrix * imposition()
Definition cl_FEM_DofManager.hpp:782
bool block_exists(const id_t &aID) const override
Definition cl_FEM_DofManager.hpp:830
bool solve_failed()
true if the last solve failed softly ( soft-fail contract, see solver::Wrapper ); rank-uniform
Definition cl_FEM_DofManager.cpp:1132
uint block_integration_order() const override
Definition cl_FEM_DofManager.hpp:661
void distribute_fields(const Cell< string > &aFieldLabels) override
sends field data from master to the others
Definition cl_FEM_DofManager.cpp:1184
void reset_convection()
Definition cl_FEM_DofManager.cpp:912
void compute_jacobian_and_rhs(const bool aReset=true)
Definition cl_FEM_DofManager.cpp:623
real rhs_norm()
Definition cl_FEM_DofManager.hpp:814
SpMatrix * enforcement()
Definition cl_FEM_DofManager.hpp:774
Dof * dof(const id_t aID) override
return a specific dof
Definition cl_FEM_DofManager.hpp:670
void solve()
Definition cl_FEM_DofManager.cpp:1039
id_t calculate_dof_id(const mesh::Node *aNode, const uint aDofType) const override
Definition cl_FEM_DofManager.hpp:686
void seed_dof_values()
Definition cl_FEM_DofManager.cpp:1307
void set_solver(const SolverParameters &aParams)
set the solver type for this field
Definition cl_FEM_DofManager.cpp:1029
void compute_rhs(const bool aReset=true)
Definition cl_FEM_DofManager.cpp:568
void collect_field(const string &aFieldLabel)
collects node data from the others and send it to master
Definition cl_FEM_DofManager.cpp:1174
SpMatrix * full_stiffness()
Definition cl_FEM_DofManager.hpp:798
SpMatrix * full_mass()
Definition cl_FEM_DofManager.hpp:790
void init_dof_values()
Definition cl_FEM_DofManager.cpp:1299
void disconnect_dofs_from_mesh()
Definition cl_FEM_DofManager.cpp:1593
Solver * solver()
expose the solver
Definition cl_FEM_DofManager.hpp:750
bool element_exists(const id_t aID) const
Definition cl_FEM_DofManager.hpp:893
Vector< real > & rhs_vector()
Definition cl_FEM_DofManager.hpp:806
void zero()
Definition cl_FEM_DofManager.cpp:387
dofmgr::SolverData * solver_data()
Definition cl_FEM_DofManager.hpp:742
void collect_fields(const Cell< string > &aFieldLabels) override
collects node data from the others and send it to master
Definition cl_FEM_DofManager.cpp:1166
bool is_initialized() const override
true once initialize() has frozen the free/fixed dof split and the matrix graphs; a first fix() of a ...
Definition cl_FEM_DofManager.hpp:151
real absolute_residual() const
absolute residual norm of the last residual() call
Definition cl_FEM_DofManager.cpp:1108
IntegrationScheme integration_scheme() const override
Definition cl_FEM_DofManager.hpp:653
Block * block(const id_t aID) override
return a specific block
Definition cl_FEM_DofManager.hpp:734
real residual(const uint aIteration)
Definition cl_FEM_DofManager.cpp:1100
real fixed_point_residual() const
fixed-point residual ||G(x)-x|| / ||x|| of the last Anderson update ( REAL_MAX while Anderson is off ...
Definition cl_FEM_DofManager.cpp:1124
Definition cl_FEM_Element.hpp:41
Prototype for Integrator of Weak Form Governing Equation.
Definition cl_IWG.hpp:81
Top-level orchestrator; owns the mesh, materials, boundary conditions and DOF managers.
Definition cl_FEM_Kernel.hpp:50
Definition cl_FEM_Postprocessor.hpp:24
Definition cl_FEM_SideSet.hpp:60
Definition cl_FEM_DofMgr_BearingData.hpp:36
Definition cl_FEM_DofMgr_BlockData.hpp:32
Definition cl_FEM_DofMgr_DofData.hpp:36
Definition cl_FEM_DofMgr_EigenValues.hpp:68
Definition cl_FEM_DofMgr_FieldData.hpp:37
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_SideSetData.hpp:39
Definition cl_FEM_DofMgr_SolverData.hpp:68
id_t id() const
Definition cl_Graph_Vertex.hpp:218
Special Edge class for NEDELEC-Type elements.
Definition cl_Edge.hpp:30
Definition cl_Face.hpp:29
Definition cl_Facet.hpp:24
@ FullMass
Definition cl_FEM_DofMgr_SolverData.hpp:56
@ FullStiffness
Definition cl_FEM_DofMgr_SolverData.hpp:57
Definition cl_IFB_LINE3.hpp:21
Definition cl_SolverMUMPS.cpp:26
USER GUIDES:
Definition cl_Capacitor.cpp:16
IntegrationScheme
Definition en_IntegrationScheme.hpp:22
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
double real
Definition typedefs.hpp:36