FEI Package Browser (Single Doxygen Collection)
Version of the Day
Toggle main menu visibility
Loading...
Searching...
No Matches
base
fei_NodeDatabase.hpp
Go to the documentation of this file.
1
#ifndef _NodeDatabase_hpp_
2
#define _NodeDatabase_hpp_
3
4
/*--------------------------------------------------------------------*/
5
/* Copyright 2005 Sandia Corporation. */
6
/* Under the terms of Contract DE-AC04-94AL85000, there is a */
7
/* non-exclusive license for use of this work by or on behalf */
8
/* of the U.S. Government. Export of this program may require */
9
/* a license from the United States Government. */
10
/*--------------------------------------------------------------------*/
11
12
#include "
fei_macros.hpp
"
13
#include "
fei_fwd.hpp
"
14
#include "
fei_defs.h
"
15
#include "
fei_NodeDescriptor.hpp
"
16
#include "
fei_Pool_alloc.hpp
"
17
#include "
fei_mpi.h
"
18
19
#include <map>
20
65
66
class
NodeDatabase
{
67
public
:
69
NodeDatabase
(std::map<int,int>* fieldDatabase,
70
NodeCommMgr
* nodeCommMgr);
71
73
virtual
~NodeDatabase
();
74
78
int
getNumNodeDescriptors
()
const
{
return
(
nodePtrs_
.size() ); };
79
83
std::map<GlobalID,int>&
getNodeIDs
() {
return
(
nodeIDs_
); };
84
94
int
getNodeWithID
(
GlobalID
nodeID,
const
NodeDescriptor
*& node)
const
;
95
int
getNodeWithID
(
GlobalID
nodeID,
NodeDescriptor
*& node);
96
106
int
getNodeWithNumber
(
int
nodeNumber,
const
NodeDescriptor
*& node)
const
;
107
114
int
getNodeWithEqn
(
int
eqnNumber,
const
NodeDescriptor
*& node)
const
;
115
121
void
getNodeAtIndex
(
int
i,
const
NodeDescriptor
*& node)
const
;
122
void
getNodeAtIndex
(
int
i,
NodeDescriptor
*& node);
123
129
int
countLocalNodalEqns
(
int
localRank);
130
137
int
countLocalNodeDescriptors
(
int
localRank);
138
144
int
getIndexOfID
(
GlobalID
nodeID)
const
;
145
153
int
initNodeID
(
GlobalID
nodeID);
154
162
int
initNodeIDs
(
GlobalID
* nodeIDs,
int
numNodes);
163
177
int
synchronize
(
int
firstLocalNodeNumber,
178
int
firstLocalEqn,
179
int
localRank,
180
MPI_Comm
comm);
181
185
int
getAssociatedNodeNumber
(
int
eqnNumber);
186
190
int
getAssociatedFieldID
(
int
eqnNumber);
191
193
bool
isSynchronized
() {
return
(
synchronized_
); };
194
195
private
:
196
NodeDatabase
(
const
NodeDatabase
& src);
197
NodeDatabase
&
operator=
(
const
NodeDatabase
& src);
198
199
void
deleteMemory
();
200
201
std::vector<NodeDescriptor*>
nodePtrs_
;
202
203
std::vector<int>
eqnNumbers_
;
//eqnNumbers_ will be a sorted list of the
204
//first global equation number at each node
205
//in nodePtrs_.
206
//the relationship between eqnNumbers_ and
207
std::vector<int>
eqnNodeIndices_
;
//eqnNodeIndices_ is like this:
208
//if eqn == eqnNumbers_[i], then
209
// nodePtrs_[eqnNodeIndices_[i]] points to
210
// the node with 'eqn'
211
212
std::map<GlobalID,int>
nodeIDs_
;
//nodeIDs_ maps node-ID to an index into
213
//the nodePtrs_ array of NodeDescriptors.
214
215
std::map<int,int>
nodeNumbers_
;
216
217
bool
synchronized_
;
218
bool
need_to_alloc_and_sync_
;
219
220
std::map<int,int>*
fieldDB_
;
221
NodeCommMgr
*
nodeCommMgr_
;
222
223
int
numLocalNodes_
;
224
int
firstLocalNodeNumber_
,
lastLocalNodeNumber_
;
225
226
fei_Pool_alloc<NodeDescriptor>
nodePool_
;
227
};
228
229
#endif
NodeCommMgr
Definition
fei_NodeCommMgr.hpp:37
NodeDatabase::nodePtrs_
std::vector< NodeDescriptor * > nodePtrs_
Definition
fei_NodeDatabase.hpp:201
NodeDatabase::getIndexOfID
int getIndexOfID(GlobalID nodeID) const
Definition
fei_NodeDatabase.cpp:195
NodeDatabase::synchronized_
bool synchronized_
Definition
fei_NodeDatabase.hpp:217
NodeDatabase::synchronize
int synchronize(int firstLocalNodeNumber, int firstLocalEqn, int localRank, MPI_Comm comm)
Definition
fei_NodeDatabase.cpp:243
NodeDatabase::getNodeWithID
int getNodeWithID(GlobalID nodeID, const NodeDescriptor *&node) const
Definition
fei_NodeDatabase.cpp:55
NodeDatabase::getNodeWithNumber
int getNodeWithNumber(int nodeNumber, const NodeDescriptor *&node) const
Definition
fei_NodeDatabase.cpp:81
NodeDatabase::NodeDatabase
NodeDatabase(const NodeDatabase &src)
NodeDatabase::~NodeDatabase
virtual ~NodeDatabase()
Definition
fei_NodeDatabase.cpp:40
NodeDatabase::eqnNodeIndices_
std::vector< int > eqnNodeIndices_
Definition
fei_NodeDatabase.hpp:207
NodeDatabase::isSynchronized
bool isSynchronized()
Definition
fei_NodeDatabase.hpp:193
NodeDatabase::operator=
NodeDatabase & operator=(const NodeDatabase &src)
NodeDatabase::firstLocalNodeNumber_
int firstLocalNodeNumber_
Definition
fei_NodeDatabase.hpp:224
NodeDatabase::getAssociatedNodeNumber
int getAssociatedNodeNumber(int eqnNumber)
Definition
fei_NodeDatabase.cpp:344
NodeDatabase::nodeCommMgr_
NodeCommMgr * nodeCommMgr_
Definition
fei_NodeDatabase.hpp:221
NodeDatabase::fieldDB_
std::map< int, int > * fieldDB_
Definition
fei_NodeDatabase.hpp:220
NodeDatabase::getNodeWithEqn
int getNodeWithEqn(int eqnNumber, const NodeDescriptor *&node) const
Definition
fei_NodeDatabase.cpp:100
NodeDatabase::initNodeIDs
int initNodeIDs(GlobalID *nodeIDs, int numNodes)
Definition
fei_NodeDatabase.cpp:231
NodeDatabase::getNodeIDs
std::map< GlobalID, int > & getNodeIDs()
Definition
fei_NodeDatabase.hpp:83
NodeDatabase::NodeDatabase
NodeDatabase(std::map< int, int > *fieldDatabase, NodeCommMgr *nodeCommMgr)
Definition
fei_NodeDatabase.cpp:23
NodeDatabase::countLocalNodalEqns
int countLocalNodalEqns(int localRank)
Definition
fei_NodeDatabase.cpp:161
NodeDatabase::getNodeAtIndex
void getNodeAtIndex(int i, const NodeDescriptor *&node) const
Definition
fei_NodeDatabase.cpp:137
NodeDatabase::eqnNumbers_
std::vector< int > eqnNumbers_
Definition
fei_NodeDatabase.hpp:203
NodeDatabase::nodeNumbers_
std::map< int, int > nodeNumbers_
Definition
fei_NodeDatabase.hpp:215
NodeDatabase::getAssociatedFieldID
int getAssociatedFieldID(int eqnNumber)
Definition
fei_NodeDatabase.cpp:380
NodeDatabase::getNumNodeDescriptors
int getNumNodeDescriptors() const
Definition
fei_NodeDatabase.hpp:78
NodeDatabase::initNodeID
int initNodeID(GlobalID nodeID)
Definition
fei_NodeDatabase.cpp:206
NodeDatabase::countLocalNodeDescriptors
int countLocalNodeDescriptors(int localRank)
Definition
fei_NodeDatabase.cpp:184
NodeDatabase::deleteMemory
void deleteMemory()
Definition
fei_NodeDatabase.cpp:46
NodeDatabase::nodePool_
fei_Pool_alloc< NodeDescriptor > nodePool_
Definition
fei_NodeDatabase.hpp:226
NodeDatabase::lastLocalNodeNumber_
int lastLocalNodeNumber_
Definition
fei_NodeDatabase.hpp:224
NodeDatabase::nodeIDs_
std::map< GlobalID, int > nodeIDs_
Definition
fei_NodeDatabase.hpp:212
NodeDatabase::numLocalNodes_
int numLocalNodes_
Definition
fei_NodeDatabase.hpp:223
NodeDatabase::need_to_alloc_and_sync_
bool need_to_alloc_and_sync_
Definition
fei_NodeDatabase.hpp:218
NodeDescriptor
Definition
fei_NodeDescriptor.hpp:36
fei_Pool_alloc
Definition
fei_Pool_alloc.hpp:34
fei_NodeDescriptor.hpp
fei_Pool_alloc.hpp
fei_defs.h
GlobalID
int GlobalID
Definition
fei_defs.h:60
fei_fwd.hpp
fei_macros.hpp
fei_mpi.h
MPI_Comm
#define MPI_Comm
Definition
fei_mpi.h:56
Generated by
1.17.0