BELFEM 0.9.0
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: we might not need this anymore
106 void
108
109//------------------------------------------------------------------------------
110
111 void
113 const Cell< string > & aFieldLabels ) ;
114
115//------------------------------------------------------------------------------
116
120 void
121 distribute( const Cell< string > & aFieldLabels );
122
123//------------------------------------------------------------------------------
124
125 void
126 reset();
127
128//------------------------------------------------------------------------------
129
130 void
132
133//------------------------------------------------------------------------------
134 private:
135//------------------------------------------------------------------------------
136
137 void
138 communicate_corner_node_data(
139 const Cell< string > & aFieldLabels );
140
141//------------------------------------------------------------------------------
142
143 void
144 communicate_noncorner_node_data(
145 const Cell< string > & aFieldLabels,
146 Matrix< real > & aData ) ;
147
148
149//------------------------------------------------------------------------------
150
151 const Cell< index_t > &
152 field_indices( const EntityType aType,
153 const proc_t aTarget,
154 uint & aMultiplicity );
155
156//------------------------------------------------------------------------------
157
158 };
159//------------------------------------------------------------------------------
160 } /* end namespace dofmgr */
161 } /* end namespace fem */
162} /* end namespace belfem */
163
164
165#endif //BELFEM_CL_FEM_DOFMGR_FIELDDATA_HPP
Cell is a wrapper around the standard vector.
Definition cl_Cell.hpp:42
Top-level container for all mesh entities.
Definition cl_Mesh.hpp:60
Definition cl_FEM_Bearing.hpp:31
this class creates the DOFs based on the passed equation object.
Definition cl_FEM_DofManager.hpp:55
Top-level orchestrator; owns the mesh, materials, boundary conditions and DOF managers.
Definition cl_FEM_Kernel.hpp:50
void collect_node_owners()
Definition cl_FEM_DofMgr_FieldData.cpp:99
FieldData(DofManager *aParent)
Definition cl_FEM_DofMgr_FieldData.cpp:33
void collect_element_owners()
Definition cl_FEM_DofMgr_FieldData.cpp:165
void initialize_linear_projection_lists()
Definition cl_FEM_DofMgr_FieldData.cpp:488
void reset()
Definition cl_FEM_DofMgr_FieldData.cpp:54
void collect(const string &aLabel)
Definition cl_FEM_DofMgr_FieldData.cpp:227
void project_linear_field_to_higher_mesh(const Cell< string > &aFieldLabels)
Definition cl_FEM_DofMgr_FieldData.cpp:981
void distribute(const Cell< string > &aFieldLabels)
distributes the field data from the master to the others
Definition cl_FEM_DofMgr_FieldData.cpp:1128
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