BELFEM
0.9.3
Berkeley Lab Finite Element Framework
Toggle main menu visibility
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
"
20
namespace
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
36
class
FieldData
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
86
collect_node_owners
();
87
88
//------------------------------------------------------------------------------
89
90
void
91
collect_element_owners
();
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
108
initialize_linear_projection_lists
();
109
110
//------------------------------------------------------------------------------
111
112
void
113
project_linear_field_to_higher_mesh
(
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
132
update_field_indices
(
Cell< Dof * >
& aDOFs );
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
cl_Cell.hpp
cl_FEM_Dof.hpp
cl_IWG.hpp
cl_Map.hpp
cl_Vector.hpp
belfem::Cell
A bounds-checked wrapper around std::vector.
Definition
cl_Cell.hpp:45
belfem::Matrix< real >
belfem::Mesh
Top-level container for all mesh entities.
Definition
cl_Mesh.hpp:60
belfem::Vector< index_t >
belfem::fem::Bearing
Definition
cl_FEM_Bearing.hpp:31
belfem::fem::DofManager
Main workhorse: DOF management, assembly coordination and the solver interface.
Definition
cl_FEM_DofManager.hpp:52
belfem::fem::Kernel
Top-level orchestrator.
Definition
cl_FEM_Kernel.hpp:56
belfem::fem::dofmgr::FieldData::collect_node_owners
void collect_node_owners()
Definition
cl_FEM_DofMgr_FieldData.cpp:94
belfem::fem::dofmgr::FieldData::FieldData
FieldData(DofManager *aParent)
Definition
cl_FEM_DofMgr_FieldData.cpp:33
belfem::fem::dofmgr::FieldData::collect_element_owners
void collect_element_owners()
Definition
cl_FEM_DofMgr_FieldData.cpp:154
belfem::fem::dofmgr::FieldData::initialize_linear_projection_lists
void initialize_linear_projection_lists()
Definition
cl_FEM_DofMgr_FieldData.cpp:456
belfem::fem::dofmgr::FieldData::reset
void reset()
Definition
cl_FEM_DofMgr_FieldData.cpp:54
belfem::fem::dofmgr::FieldData::collect
void collect(const string &aLabel)
Definition
cl_FEM_DofMgr_FieldData.cpp:213
belfem::fem::dofmgr::FieldData::project_linear_field_to_higher_mesh
void project_linear_field_to_higher_mesh(const Cell< string > &aFieldLabels)
Definition
cl_FEM_DofMgr_FieldData.cpp:861
belfem::fem::dofmgr::FieldData::distribute
void distribute(const Cell< string > &aFieldLabels)
distributes the field data from the master to the others
Definition
cl_FEM_DofMgr_FieldData.cpp:978
belfem::fem::dofmgr::FieldData::update_field_indices
void update_field_indices(Cell< Dof * > &aDOFs)
Definition
cl_FEM_DofMgr_FieldData.cpp:67
belfem::fem::dofmgr
Definition
cl_FEM_DofMgr_BearingData.cpp:23
belfem::fem
Definition
cl_IFB_LINE3.hpp:21
belfem
USER GUIDES:
Definition
cl_Capacitor.cpp:16
belfem::uint
unsigned int uint
Definition
typedefs.hpp:30
belfem::proc_t
int proc_t
Definition
commtypes.hpp:29
belfem::EntityType
EntityType
Definition
Mesh_Enums.hpp:116
belfem::index_t
uint32_t index_t
Definition
typedefs.hpp:52
typedefs.hpp
src
fem
kernel
cl_FEM_DofMgr_FieldData.hpp
Generated by
1.18.0