BELFEM 0.9.3
Berkeley Lab Finite Element Framework
Loading...
Searching...
No Matches
cl_FEM_DofMgr_FieldData.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_DOFMGR_FIELDDATA_HPP
12#define BELFEM_CL_FEM_DOFMGR_FIELDDATA_HPP
13
14#include "typedefs.hpp"
15#include "cl_Cell.hpp"
16#include "cl_Map.hpp"
17#include "cl_Vector.hpp"
18#include "cl_IWG.hpp"
19#include "cl_FEM_Dof.hpp"
20namespace belfem
21{
22 class Mesh;
23
24 namespace fem
25 {
26 class Bearing;
27
28 class Kernel;
29
30 class DofManager;
31
32 namespace dofmgr
33 {
34//------------------------------------------------------------------------------
35
37 {
39 DofManager * mParent;
40
42 Kernel * mKernel;
43
45 Mesh * mMesh;
46
47 // my rank
48 const proc_t mCommRank;
49
50 // number of procs
51 const proc_t mCommSize ;
52
57 Cell< Vector< index_t > > mNodeOwnerList ;
58 Cell< Vector< index_t > > mElementOwnerList ;
59
60 index_t mMyNumberOfOwnedNodes = 0 ;
61 index_t mMyNumberOfOwnedElements = 0 ;
62
63 // special purpose data for linear to higher projection
64 Cell< Vector< index_t > > mAllCornerNodeIndices ;
65 Vector< index_t > mMyCornerNodeIndices ;
66
67
68 Cell< Vector< index_t > > mAllNonCornerNodeIndices ;
69 Cell< mesh::Node * > mMyNonCornerNodes ;
70
71 Vector< index_t > mMyNonCornerNodeIndices ;
72
73//------------------------------------------------------------------------------
74 public:
75//------------------------------------------------------------------------------
76
77 FieldData( DofManager * aParent ) ;
78
79//------------------------------------------------------------------------------
80
81 ~FieldData();
82
83//------------------------------------------------------------------------------
84
85 void
87
88//------------------------------------------------------------------------------
89
90 void
92
93//------------------------------------------------------------------------------
94
95 void
96 collect( const string & aLabel );
97
98//-----------------------------------------------------------------------------
99
100 void
101 collect( const Cell< string > & aLabels ) ;
102
103//-----------------------------------------------------------------------------
104
105 // TODO(cm): no caller; delete together with the definition
106 // in cl_FEM_DofMgr_FieldData.cpp
107 void
109
110//------------------------------------------------------------------------------
111
112 void
114 const Cell< string > & aFieldLabels ) ;
115
116//------------------------------------------------------------------------------
117
121 void
122 distribute( const Cell< string > & aFieldLabels );
123
124//------------------------------------------------------------------------------
125
126 void
127 reset();
128
129//------------------------------------------------------------------------------
130
131 void
133
134//------------------------------------------------------------------------------
135 private:
136//------------------------------------------------------------------------------
137
138 void
139 communicate_corner_node_data(
140 const Cell< string > & aFieldLabels );
141
142//------------------------------------------------------------------------------
143
144 void
145 communicate_noncorner_node_data(
146 const Cell< string > & aFieldLabels,
147 Matrix< real > & aData ) ;
148
149
150//------------------------------------------------------------------------------
151
152 const Cell< index_t > &
153 field_indices( const EntityType aType,
154 const proc_t aTarget,
155 uint & aMultiplicity );
156
157//------------------------------------------------------------------------------
158
159 };
160//------------------------------------------------------------------------------
161 } /* end namespace dofmgr */
162 } /* end namespace fem */
163} /* end namespace belfem */
164
165
166#endif //BELFEM_CL_FEM_DOFMGR_FIELDDATA_HPP
A bounds-checked wrapper around std::vector.
Definition cl_Cell.hpp:45
Top-level container for all mesh entities.
Definition cl_Mesh.hpp:60
Definition cl_FEM_Bearing.hpp:31
Main workhorse: DOF management, assembly coordination and the solver interface.
Definition cl_FEM_DofManager.hpp:52
Top-level orchestrator.
Definition cl_FEM_Kernel.hpp:56
void collect_node_owners()
Definition cl_FEM_DofMgr_FieldData.cpp:94
FieldData(DofManager *aParent)
Definition cl_FEM_DofMgr_FieldData.cpp:33
void collect_element_owners()
Definition cl_FEM_DofMgr_FieldData.cpp:154
void initialize_linear_projection_lists()
Definition cl_FEM_DofMgr_FieldData.cpp:456
void reset()
Definition cl_FEM_DofMgr_FieldData.cpp:54
void collect(const string &aLabel)
Definition cl_FEM_DofMgr_FieldData.cpp:213
void project_linear_field_to_higher_mesh(const Cell< string > &aFieldLabels)
Definition cl_FEM_DofMgr_FieldData.cpp:861
void distribute(const Cell< string > &aFieldLabels)
distributes the field data from the master to the others
Definition cl_FEM_DofMgr_FieldData.cpp:978
void update_field_indices(Cell< Dof * > &aDOFs)
Definition cl_FEM_DofMgr_FieldData.cpp:67
Definition cl_FEM_DofMgr_BearingData.cpp:23
Definition cl_IFB_LINE3.hpp:21
USER GUIDES:
Definition cl_Capacitor.cpp:16
unsigned int uint
Definition typedefs.hpp:30
int proc_t
Definition commtypes.hpp:29
EntityType
Definition Mesh_Enums.hpp:116
uint32_t index_t
Definition typedefs.hpp:52