BELFEM
0.9.0
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: we might not need this anymore
106
void
107
initialize_linear_projection_lists
();
108
109
//------------------------------------------------------------------------------
110
111
void
112
project_linear_field_to_higher_mesh
(
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
131
update_field_indices
(
Cell< Dof * >
& aDOFs );
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
cl_Cell.hpp
cl_FEM_Dof.hpp
cl_IWG.hpp
cl_Map.hpp
cl_Vector.hpp
belfem::Cell
Cell is a wrapper around the standard vector.
Definition
cl_Cell.hpp:42
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
this class creates the DOFs based on the passed equation object.
Definition
cl_FEM_DofManager.hpp:55
belfem::fem::Kernel
Top-level orchestrator; owns the mesh, materials, boundary conditions and DOF managers.
Definition
cl_FEM_Kernel.hpp:50
belfem::fem::dofmgr::FieldData::collect_node_owners
void collect_node_owners()
Definition
cl_FEM_DofMgr_FieldData.cpp:99
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:165
belfem::fem::dofmgr::FieldData::initialize_linear_projection_lists
void initialize_linear_projection_lists()
Definition
cl_FEM_DofMgr_FieldData.cpp:488
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:227
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:981
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:1128
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