BELFEM 0.9.3
Berkeley Lab Finite Element Framework
Loading...
Searching...
No Matches
cl_FEM_DofManager.hpp
Go to the documentation of this file.
1/*
2 * BELFEM -- The Berkeley Lab Finite Element Framework
3 * Copyright (c) 2026, The Regents of the University of California,
4 * through Lawrence Berkeley National Laboratory (subject to receipt of any required
5 * approvals from the U.S. Dept. of Energy). All rights reserved.
6 *
7 * Developers: Christian Messe, Gregory Giard
8 *
9 * See the top-level LICENSE file for the complete license and disclaimer.
10 */
11#ifndef BELFEM_CL_FEM_DOFMANAGER_HPP
12#define BELFEM_CL_FEM_DOFMANAGER_HPP
13
14#include "typedefs.hpp"
15#include "cl_Cell.hpp"
16#include "cl_Vector.hpp"
17#include "cl_Map.hpp"
18#include "cl_Mesh.hpp"
19#include "cl_IWG.hpp"
20
21#include "cl_FEM_Dof.hpp"
22#include "cl_FEM_Bearing.hpp"
23#include "cl_FEM_Block.hpp"
24#include "cl_FEM_SideSet.hpp"
25
27
37
38namespace belfem
39{
40 namespace fem
41 {
42 class Kernel;
43 class Postprocessor ;
44
52 {
54 const index_t mIndex ;
55
57 dofmgr::Parameters * mParams ;
58
60 dofmgr::DofData * mDofData ;
61
63 dofmgr::BlockData * mBlockData ;
64
66 dofmgr::SideSetData * mSideSetData ;
67
69 dofmgr::BearingData * mBearingData ;
70
72 dofmgr::FieldData * mFieldData ;
73
75 dofmgr::SolverData * mSolverData ;
76
78 dofmgr::EigenValues * mEigenValues ;
79
81 bool mInitializedFlag = false ;
82
85 Cell< Postprocessor * > mPostprocessors ;
86
89 bool mJacobianIsUpToDate = false ;
90
93 Map< id_t, Element * > mElementMap ;
94
95 Cell< string > mPostprocessorSourceFields ;
96 Cell< string > mPostprocessorTargetFields ;
97
98//------------------------------------------------------------------------------
99 public:
100//------------------------------------------------------------------------------
101
107 Kernel * aParent,
108 const index_t aIndex );
109
110//-----------------------------------------------------------------------------
111
112 ~DofManager() override;
113
114//-----------------------------------------------------------------------------
115
119 void
120 set_equation( IWG * aIWG );
121
122//-----------------------------------------------------------------------------
123
127 void
128 print( const proc_t aRank=0 ) ;
129
130//------------------------------------------------------------------------------
131
132 uint
133 sideset_integration_order() const override ;
134
135//------------------------------------------------------------------------------
136
137 uint
138 block_integration_order() const override ;
139
140//------------------------------------------------------------------------------
141
143 integration_scheme() const override ;
144
145//------------------------------------------------------------------------------
146
147 bool
148 is_initialized() const override
149 {
150 return mInitializedFlag ;
151 }
152
153//------------------------------------------------------------------------------
154
155 Dof *
156 dof( const id_t aID ) override;
157
158//------------------------------------------------------------------------------
159
160 bool
161 dof_exists( const id_t aID ) const override ;
162
163//------------------------------------------------------------------------------
164
172 dofs();
173
174//-----------------------------------------------------------------------------
175
176 Bearing *
177 bearing( const id_t aID );
178
179//-----------------------------------------------------------------------------
180
181 SideSet *
182 sideset( const id_t aID ) override;
183
184//------------------------------------------------------------------------------
185
186 Block *
187 block( const id_t aID ) override;
188
189//------------------------------------------------------------------------------
190
191 void
193
194//------------------------------------------------------------------------------
195
196 id_t
197 calculate_dof_id( const mesh::Node * aNode , const uint aDofType ) const override;
198
199//------------------------------------------------------------------------------
200
201 id_t
202 calculate_dof_id( const mesh::Edge * aEdge , const uint aDofType ) const override;
203
204//------------------------------------------------------------------------------
205
206 id_t
207 calculate_dof_id( const mesh::Face * aFace , const uint aDofType ) const;
208
209//------------------------------------------------------------------------------
210
211 id_t
212 calculate_dof_id( const mesh::Facet * aFacet , const uint aDofType ) const override;
213
214//-----------------------------------------------------------------------------
215
216 void
217 initialize() override;
218
219//-----------------------------------------------------------------------------
220
226 void
227 initialize( const bool aSeedFreeDofsOnly );
228
229//------------------------------------------------------------------------------
230
231 void
232 zero();
233
234//-----------------------------------------------------------------------------
235
240 void
241 compute_jacobian( const bool aReset=true );
242
243//-----------------------------------------------------------------------------
244
245 void
246 compute_rhs( const bool aReset=true );
247
248//-----------------------------------------------------------------------------
249
250 void
251 compute_jacobian_and_rhs( const bool aReset=true );
252
253//-----------------------------------------------------------------------------
254
255 void
257
258//------------------------------------------------------------------------------
259
265 void
266 set_solver( const SolverParameters & aParams );
267
268//------------------------------------------------------------------------------
269
271 solver_data() ;
272
273//------------------------------------------------------------------------------
277 Solver *
278 solver();
279
280//-----------------------------------------------------------------------------
281
285 void
286 solve();
287
288//-----------------------------------------------------------------------------
289
292 void
294
295//-----------------------------------------------------------------------------
296
299 void
301
302//-----------------------------------------------------------------------------
303
307 real
308 residual( const uint aIteration );
309
310//-----------------------------------------------------------------------------
311
315 real
316 absolute_residual() const ;
317
318//-----------------------------------------------------------------------------
319
325 real
326 pre_update_residual() const ;
327
328//-----------------------------------------------------------------------------
329
334 real
335 fixed_point_residual() const ;
336
337//-----------------------------------------------------------------------------
338
343 bool
344 solve_failed() ;
345
346//-----------------------------------------------------------------------------
347
352 void
353 collect_fields( const Cell< string > & aFieldLabels ) override ;
354
355//-----------------------------------------------------------------------------
356
360 void
361 collect_field( const string & aFieldLabel ) ;
362
363//-----------------------------------------------------------------------------
364
369 void
370 distribute_fields( const Cell< string > & aFieldLabels ) override ;
371
372//-----------------------------------------------------------------------------
373
377 void
378 synchronize_fields( const Cell< string > & aFieldLabels ) override ;
379
380//-----------------------------------------------------------------------------
381
384 void
385 compute_volume_loads( const Vector< id_t > & aBlockIDs );
386
387//-----------------------------------------------------------------------------
397
398 SpMatrix *
399 system_matrix() ; // A: Free → Free coupling ( the Picard operator )
400
401//-----------------------------------------------------------------------------
402
403 SpMatrix *
404 dirichlet() ; // D matrix: Free → Fixed (Dirichlet BCs)
405
406//-----------------------------------------------------------------------------
407
408 SpMatrix *
409 enforcement() ; // E matrix: Fixed → Free (enforces constraints, computes forces)
410
411//-----------------------------------------------------------------------------
412
413 SpMatrix *
414 imposition() ; // I matrix: Fixed → Fixed (self-coupling of imposed values)
415
416//-----------------------------------------------------------------------------
417
418 SpMatrix *
419 full_mass();
420
421//-----------------------------------------------------------------------------
422
423 SpMatrix *
425
426//-----------------------------------------------------------------------------
427
429 void
430 full_lhs( Vector< real > & aLHS );
431
432//-----------------------------------------------------------------------------
433
437 rhs_vector();
438
439//------------------------------------------------------------------------------
440
441 real
442 rhs_norm();
443
444//------------------------------------------------------------------------------
445
446 void
447 load_system( const string & aPath );
448
449//------------------------------------------------------------------------------
450
451 void
452 save_system( const string & aPath );
453
454//------------------------------------------------------------------------------
455
456 void
458
459//------------------------------------------------------------------------------
460
467 void
469
470//------------------------------------------------------------------------------
471
472 void
474
475//------------------------------------------------------------------------------
476#ifdef BELFEM_HDF5
477
478 void
479 load_system( HDF5 & aFile );
480
481 void
482 save_system( HDF5 & aFile );
483
484#endif
485//-----------------------------------------------------------------------------
486
487 bool
488 sideset_exists( const id_t & aID ) const override ;
489
490//-----------------------------------------------------------------------------
491
492 bool
493 block_exists( const id_t & aID ) const override ;
494
495//-----------------------------------------------------------------------------
496
501 void
502 create_fields( IWG * aIWG );
503
504//-----------------------------------------------------------------------------
505
511
512//-----------------------------------------------------------------------------
513
517 void
519
520//-----------------------------------------------------------------------------
521
526 void
527 postprocess();
528
529//------------------------------------------------------------------------------
530
535 blocks();
536
537//------------------------------------------------------------------------------
538
543 sidesets();
544
545//------------------------------------------------------------------------------
550 index_t
551 number_of_wetted_nodes() const ;
552
553//------------------------------------------------------------------------------
554
555 void
557
558//------------------------------------------------------------------------------
559
564 eigen_values() ;
565
566//------------------------------------------------------------------------------
567
571 Element *
572 element( const id_t aID );
573
574 bool
575 element_exists( const id_t aID ) const ;
576
577//------------------------------------------------------------------------------
578
581
582//-----------------------------------------------------------------------------
583 private:
584//-----------------------------------------------------------------------------
585
586 void
587 reset();
588
589//------------------------------------------------------------------------------
590
591 void
592 init_dofs( const bool aSeedFreeDofsOnly );
593
594//------------------------------------------------------------------------------
595
596 void
597 init_work();
598
599//------------------------------------------------------------------------------
600
601 void
602 init_matrices();
603
604//-----------------------------------------------------------------------------
605
606 void
607 compute_rhs_vector();
608
609//-----------------------------------------------------------------------------
610
611 void
612 compute_rhs_matrix();
613
614//---------------------------------------------v--------------------------------
615
616 void
617 auto_set_materials();
618
619//------------------------------------------------------------------------------
620
621 void
622 consolidate_dofs();
623
624//------------------------------------------------------------------------------
625
626 void
627 consolidate_dofs( Element * aElement );
628
629//-----------------------------------------------------------------------------
630
631 void
632 link_bearings_with_dofs();
633
634//-----------------------------------------------------------------------------
635
636 void
637 create_element_map();
638
639//-----------------------------------------------------------------------------
640 };
641
642//-----------------------------------------------------------------------------
643
644 inline uint
646 {
647 return mParams->sideset_integration_order() ;
648 }
649
650//------------------------------------------------------------------------------
651
652 inline IntegrationScheme
654 {
655 return mParams->integration_scheme() ;
656 }
657
658//------------------------------------------------------------------------------
659
660 inline uint
662 {
663 return mParams->block_integration_order() ;
664 }
665
666
667//------------------------------------------------------------------------------
668
669 inline Dof *
671 {
672 return mDofData->dof( aID );
673 }
674
675//------------------------------------------------------------------------------
676
677 inline Cell< Dof * > &
679 {
680 return mDofData->dofs() ;
681 }
682
683//------------------------------------------------------------------------------
684
685 inline id_t
686 DofManager::calculate_dof_id( const mesh::Node * aNode , const uint aDofType ) const
687 {
688 return mDofData->node_dof_id( aNode->id(), aDofType );
689 }
690
691//------------------------------------------------------------------------------
692
693 inline id_t
694 DofManager::calculate_dof_id( const mesh::Facet * aFacet , const uint aDofType ) const
695 {
696 return mDofData->lambda_dof_id( aFacet->id(), aDofType );
697 }
698
699//------------------------------------------------------------------------------
700
701 inline id_t
702 DofManager::calculate_dof_id( const mesh::Edge * aEdge , const uint aDofType ) const
703 {
704 return mDofData->edge_dof_id( aEdge->id(), aDofType );
705 }
706
707//------------------------------------------------------------------------------
708
709 inline id_t
710 DofManager::calculate_dof_id( const mesh::Face * aFace , const uint aDofType ) const
711 {
712 return mDofData->face_dof_id( aFace->id(), aDofType );
713 }
714
715//------------------------------------------------------------------------------
716
717 inline Bearing *
719 {
720 return mBearingData->bearing( aID );
721 }
722
723//------------------------------------------------------------------------------
724
725 inline SideSet *
727 {
728 return mSideSetData->sideset( aID );
729 }
730
731//------------------------------------------------------------------------------
732
733 inline Block *
735 {
736 return mBlockData->block( aID );
737 }
738
739//------------------------------------------------------------------------------
740
741 inline dofmgr::SolverData *
743 {
744 return mSolverData ;
745 }
746
747//------------------------------------------------------------------------------
748
749 inline Solver *
751 {
752 return mSolverData->solver() ;
753 }
754
755//------------------------------------------------------------------------------
756
757 inline SpMatrix *
759 {
760 return mSolverData->system_matrix() ;
761 }
762
763//------------------------------------------------------------------------------
764
765 inline SpMatrix *
767 {
768 return mSolverData->dirichlet() ;
769 }
770
771 //------------------------------------------------------------------------------
772
773 inline SpMatrix *
775 {
776 return mSolverData->enforcement() ;
777 }
778
779//------------------------------------------------------------------------------
780
781 inline SpMatrix *
783 {
784 return mSolverData->imposition() ;
785 }
786
787//-----------------------------------------------------------------------------
788
789 inline SpMatrix *
791 {
792 return mSolverData->matrix( dofmgr::FullMass );
793 }
794
795//-----------------------------------------------------------------------------
796
797 inline SpMatrix *
799 {
800 return mSolverData->matrix( dofmgr::FullStiffness );
801 }
802
803//------------------------------------------------------------------------------
804
805 inline Vector< real > &
807 {
808 return mSolverData->rhs_vector() ;
809 }
810
811//-----------------------------------------------------------------------------
812
813 inline real
815 {
816 return mSolverData->rhs_norm() ;
817 }
818
819//-----------------------------------------------------------------------------
820
821 inline bool
822 DofManager::sideset_exists( const id_t & aID ) const
823 {
824 return mSideSetData->sideset_exists( aID );
825 }
826
827//-----------------------------------------------------------------------------
828
829 inline bool
830 DofManager::block_exists( const id_t & aID ) const
831 {
832 return mBlockData->block_exists( aID );
833 }
834
835//------------------------------------------------------------------------------
836
837 inline bool
838 DofManager::dof_exists( const id_t aID ) const
839 {
840 return mDofData->dof_exists( aID );
841 }
842
843//-----------------------------------------------------------------------------
844
850 {
851 return mPostprocessors ;
852 }
853
854//------------------------------------------------------------------------------
855
856 inline Cell< Block * > &
858 {
859 return mBlockData->blocks() ;
860 }
861
862//------------------------------------------------------------------------------
863
864 inline Cell< SideSet * > &
866 {
867 return mSideSetData->sidesets() ;
868 }
869
870//------------------------------------------------------------------------------
871
872 inline index_t
874 {
875 return mSideSetData->number_of_wetted_nodes() ;
876 }
877
878//------------------------------------------------------------------------------
879
880 inline dofmgr::EigenValues *
882 {
883 return mEigenValues ;
884 }
885
886 inline Element *
888 {
889 return mElementMap( aID );
890 }
891
892 inline bool
894 {
895 return mElementMap.key_exists( aID );
896 }
897
898//------------------------------------------------------------------------------
899
900 inline Cell< Dof * > &
902 {
903 return mDofData->abstract_dofs() ;
904 }
905
906//-----------------------------------------------------------------------------
907 } /* end namespace fem */
908} /* end namespace belfem */
909#endif //BELFEM_CL_FEM_DOFMANAGER_HPP
A bounds-checked wrapper around std::vector.
Definition cl_Cell.hpp:45
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:93
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()
Collective: computes the projection matrices; every rank must enter.
Definition cl_FEM_DofManager.cpp:1176
void compute_jacobian(const bool aReset=true)
Collective: every rank assembles and the matrices are collected across ranks.
Definition cl_FEM_DofManager.cpp:391
void compute_residual()
Definition cl_FEM_DofManager.cpp:933
Cell< SideSet * > & sidesets()
The sidesets of this manager; owned here, the container is a view.
Definition cl_FEM_DofManager.hpp:865
void set_equation(IWG *aIWG)
select the equation that is to be solved
Definition cl_FEM_DofManager.cpp:85
void full_lhs(Vector< real > &aLHS)
Resizes aLHS and fills it in DOF order: free DOFs first, then fixed.
Definition cl_FEM_DofManager.cpp:1436
void solve_from_residual()
Definition cl_FEM_DofManager.cpp:948
Cell< Block * > & blocks()
The blocks of this manager; owned here, the container is a view.
Definition cl_FEM_DofManager.hpp:857
dofmgr::EigenValues * eigen_values()
Borrowed from this manager, which owns it.
Definition cl_FEM_DofManager.hpp:881
SideSet * sideset(const id_t aID) override
Definition cl_FEM_DofManager.hpp:726
void print(const proc_t aRank=0)
Prints only on rank aRank.
Definition cl_FEM_DofManager.cpp:149
void extract_abstract_dofs_from_mesh()
Definition cl_FEM_DofManager.cpp:330
Cell< Postprocessor * > & postprocessors()
Owned by this manager; the container is a view.
Definition cl_FEM_DofManager.hpp:849
Bearing * bearing(const id_t aID)
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:161
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
Collective: a collect, a barrier, then a distribute.
Definition cl_FEM_DofManager.cpp:1057
bool dof_exists(const id_t aID) const override
Definition cl_FEM_DofManager.hpp:838
void compute_full_matrices()
Definition cl_FEM_DofManager.cpp:725
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:985
void compute_volume_loads(const Vector< id_t > &aBlockIDs)
Collective: every rank assembles its loads and they are collected here; a single right-hand side only...
Definition cl_FEM_DofManager.cpp:1068
void initialize() override
Definition cl_FEM_DofManager.cpp:290
DofManager(Kernel *aParent, const index_t aIndex)
Borrows aParent, which owns this manager.
Definition cl_FEM_DofManager.cpp:31
Element * element(const id_t aID)
One element by ID, through the element cache; borrowed.
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:1128
Cell< Dof * > & dofs()
The non-hanging dofs, free and fixed ( hanging dofs live in DofData::hanging_dofs() ).
Definition cl_FEM_DofManager.hpp:678
void postprocess()
Collective: distributes the source fields, runs every projector with a barrier each,...
Definition cl_FEM_DofManager.cpp:1209
void load_system(const string &aPath)
Definition cl_FEM_DofManager.cpp:1120
uint sideset_integration_order() const override
Definition cl_FEM_DofManager.hpp:645
SpMatrix * system_matrix()
Block form of the assembled system, x = free dofs, y = fixed dofs: [ J D ] [ x ] [ f ] [ E I ] [ y ] ...
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:1001
uint block_integration_order() const override
Definition cl_FEM_DofManager.hpp:661
void distribute_fields(const Cell< string > &aFieldLabels) override
Collective and asymmetric, the inverse of collect_fields(): the master sends, the workers receive; no...
Definition cl_FEM_DofManager.cpp:1049
void reset_convection()
Definition cl_FEM_DofManager.cpp:799
void compute_jacobian_and_rhs(const bool aReset=true)
Definition cl_FEM_DofManager.cpp:547
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()
Collective.
Definition cl_FEM_DofManager.cpp:913
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:1160
void set_solver(const SolverParameters &aParams)
Collective: every rank constructs the solver ( whose constructor synchronizes the solver settings fro...
Definition cl_FEM_DofManager.cpp:904
void compute_rhs(const bool aReset=true)
Definition cl_FEM_DofManager.cpp:501
void collect_field(const string &aFieldLabel)
Collects one field, with barriers before and after collection.
Definition cl_FEM_DofManager.cpp:1039
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:1152
void disconnect_dofs_from_mesh()
Definition cl_FEM_DofManager.cpp:1428
Solver * solver()
The solver is borrowed; this manager's solver data owns it.
Definition cl_FEM_DofManager.hpp:750
bool element_exists(const id_t aID) const
Definition cl_FEM_DofManager.hpp:893
Vector< real > & rhs_vector()
The assembled right-hand side as the solver data holds it: rank-local entries on the workers,...
Definition cl_FEM_DofManager.hpp:806
void zero()
Definition cl_FEM_DofManager.cpp:339
dofmgr::SolverData * solver_data()
Definition cl_FEM_DofManager.hpp:742
void collect_fields(const Cell< string > &aFieldLabels) override
Collective, a gather to the master rank: the workers send their packed node data, the master receives...
Definition cl_FEM_DofManager.cpp:1031
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:148
real absolute_residual() const
absolute residual norm of the last residual() call
Definition cl_FEM_DofManager.cpp:977
IntegrationScheme integration_scheme() const override
Definition cl_FEM_DofManager.hpp:653
Block * block(const id_t aID) override
Definition cl_FEM_DofManager.hpp:734
real residual(const uint aIteration)
Collective ( a barrier and four broadcasts ): the convergence measure of iteration aIteration,...
Definition cl_FEM_DofManager.cpp:969
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:993
Definition cl_FEM_Element.hpp:41
Prototype for Integrator of Weak Form Governing Equation.
Definition cl_IWG.hpp:81
Top-level orchestrator.
Definition cl_FEM_Kernel.hpp:56
Definition cl_FEM_Postprocessor.hpp:24
Definition cl_FEM_SideSet.hpp:64
Definition cl_FEM_DofMgr_BearingData.hpp:36
Definition cl_FEM_DofMgr_BlockData.hpp:32
The mesh must outlive the dof manager: the destructor releases the mesh dof containers that still hol...
Definition cl_FEM_DofMgr_DofData.hpp:41
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
Definition Node.py:1