17 #ifndef __FINLEY_NODEFILE_H__
18 #define __FINLEY_NODEFILE_H__
24 #include <paso/Coupler.h>
25 #include <paso/Distribution.h>
68 const std::vector<int>& dofDistribution,
69 const std::vector<int>& nodeDistribution);
72 const std::vector<int>& dofDistribution);
75 void assignMPIRankToDOFs(std::vector<int>& mpiRankOfDOF,
const std::vector<int>& distribution);
93 std::vector<int>& buffer,
94 std::vector<int>& distribution,
bool useNodes);
264 #endif // __FINLEY_NODEFILE_H__
int * reducedNodesId
these are the packed versions of Id
Definition: finley/src/NodeFile.h:143
int * globalDegreesOfFreedom
Definition: finley/src/NodeFile.h:122
paso::Connector_ptr degreesOfFreedomConnector
Definition: finley/src/NodeFile.h:139
paso::Distribution_ptr reducedDegreesOfFreedomDistribution
Definition: finley/src/NodeFile.h:137
int getLastReducedNode() const
Definition: finley/src/NodeFile.h:181
int * Id
Id[i] is the id number of node i. It needs to be unique.
Definition: finley/src/NodeFile.h:114
const std::vector< int > & borrowReducedNodesTarget() const
Definition: finley/src/NodeFile.h:221
NodeMapping nodesMapping
Definition: finley/src/NodeFile.h:97
std::vector< int > tagsInUse
vector of tags which are actually used
Definition: finley/src/NodeFile.h:118
int numDim
number of spatial dimensions
Definition: finley/src/NodeFile.h:112
int status
Definition: finley/src/NodeFile.h:149
const std::vector< int > & borrowReducedDegreesOfFreedomTarget() const
Definition: finley/src/NodeFile.h:231
void createDOFMappingAndCoupling(bool reduced)
Definition: finley/src/NodeFile.cpp:785
std::pair< int, int > getGlobalIdRange() const
Definition: finley/src/NodeFile.cpp:249
int * degreesOfFreedomId
Definition: finley/src/NodeFile.h:144
paso::Distribution_ptr degreesOfFreedomDistribution
Definition: finley/src/NodeFile.h:136
void copyTable(int offset, int idOffset, int dofOffset, const NodeFile *in)
Definition: finley/src/NodeFile.cpp:304
NodeMapping degreesOfFreedomMapping
Definition: finley/src/NodeFile.h:104
void allocTable(int numNodes)
allocates the node table within this node file to hold NN nodes.
Definition: finley/src/NodeFile.cpp:108
Struct that holds MPI communicator, rank, size and a tag counter.
Definition: Esys_MPI.h:48
void assignMPIRankToDOFs(std::vector< int > &mpiRankOfDOF, const std::vector< int > &distribution)
Definition: finley/src/NodeFile.cpp:454
int getGlobalNumNodes() const
Definition: finley/src/NodeFile.h:166
const int * borrowTargetDegreesOfFreedom() const
Definition: finley/src/NodeFile.h:246
std::pair< int, int > getDOFRange() const
Definition: finley/src/NodeFile.cpp:238
boost::shared_ptr< Distribution > Distribution_ptr
Definition: Distribution.h:36
NodeFile(int nDim, Esys_MPIInfo *mpiInfo)
Definition: finley/src/NodeFile.cpp:82
void setValuesInUse(const int *values, const int numValues, std::vector< int > &valuesInUse, Esys_MPIInfo *mpiinfo)
Definition: finley/src/Util.cpp:346
void freeTable()
frees the node table within this node file
Definition: finley/src/NodeFile.cpp:144
void gather(int *index, const NodeFile *in)
Definition: finley/src/NodeFile.cpp:341
int getLastNode() const
Definition: finley/src/NodeFile.h:161
int getFirstNode() const
Definition: finley/src/NodeFile.h:156
std::vector< int > target
target[i] defines the target of FEM node i=0,...,numNodes-1
Definition: finley/src/NodeMapping.h:74
int createDenseReducedLabeling(const std::vector< short > &reducedMask, bool useNodes)
Definition: finley/src/NodeFile.cpp:715
int createDenseDOFLabeling()
Definition: finley/src/NodeFile.cpp:538
int * borrowGlobalNodesIndex() const
Definition: finley/src/NodeFile.h:171
paso::Distribution_ptr nodesDistribution
Definition: finley/src/NodeFile.h:134
Definition: finley/src/NodeMapping.h:29
int * borrowGlobalReducedNodesIndex() const
Definition: finley/src/NodeFile.h:191
const std::vector< int > & borrowDegreesOfFreedomTarget() const
Definition: finley/src/NodeFile.h:226
int createDenseNodeLabeling(std::vector< int > &nodeDistribution, const std::vector< int > &dofDistribution)
Definition: finley/src/NodeFile.cpp:601
int getNumTargets() const
returns the number of target nodes (number of items in the map array)
Definition: finley/src/NodeMapping.h:71
Data represents a collection of datapoints.
Definition: Data.h:71
void updateTagList()
Definition: finley/src/NodeFile.h:256
Definition: finley/src/NodeFile.h:31
int * reducedDegreesOfFreedomId
Definition: finley/src/NodeFile.h:145
std::pair< int, int > getGlobalDOFRange() const
Definition: finley/src/NodeFile.cpp:267
void print() const
Definition: finley/src/NodeFile.cpp:171
void setTags(const int newTag, const escript::Data &mask)
sets tags to newTag where mask>0
Definition: finley/src/NodeFile.cpp:217
int getNumDegreesOfFreedom() const
Definition: finley/src/NodeFile.h:206
const int * borrowTargetNodes() const
Definition: finley/src/NodeFile.h:236
void gather_global(const std::vector< int > &index, const NodeFile *in)
Definition: finley/src/NodeFile.cpp:349
void createNodeMappings(const std::vector< int > &indexReducedNodes, const std::vector< int > &dofDistribution, const std::vector< int > &nodeDistribution)
Definition: finley/src/NodeFile.cpp:1000
std::pair< int, int > getGlobalNodeIDIndexRange() const
Definition: finley/src/NodeFile.cpp:286
void scatter(int *index, const NodeFile *in)
Definition: finley/src/NodeFile.cpp:331
void setCoordinates(const escript::Data &newX)
copies the array newX into this->coordinates
Definition: finley/src/NodeFile.cpp:191
int getNumReducedNodes() const
Definition: finley/src/NodeFile.h:201
Esys_MPIInfo * MPIInfo
MPI information.
Definition: finley/src/NodeFile.h:108
boost::shared_ptr< Connector > Connector_ptr
Definition: Coupler.h:35
const int * borrowTargetReducedDegreesOfFreedom() const
Definition: finley/src/NodeFile.h:251
paso::Distribution_ptr reducedNodesDistribution
Definition: finley/src/NodeFile.h:135
NodeMapping reducedNodesMapping
Definition: finley/src/NodeFile.h:103
int * globalReducedNodesIndex
Definition: finley/src/NodeFile.h:130
const std::vector< int > & borrowNodesTarget() const
Definition: finley/src/NodeFile.h:216
NodeMapping reducedDegreesOfFreedomMapping
Definition: finley/src/NodeFile.h:105
std::vector< int > map
maps the target nodes back to the FEM nodes: target[map[i]]=i
Definition: finley/src/NodeMapping.h:76
int prepareLabeling(const std::vector< short > &mask, std::vector< int > &buffer, std::vector< int > &distribution, bool useNodes)
Definition: finley/src/NodeFile.cpp:478
int getNumNodes() const
returns the number of FEM nodes
Definition: finley/src/NodeFile.h:196
double * Coordinates
Coordinates[INDEX2(k,i,numDim)] is the k-th coordinate of node i.
Definition: finley/src/NodeFile.h:124
int * globalReducedDOFIndex
Definition: finley/src/NodeFile.h:127
int numNodes
number of nodes
Definition: finley/src/NodeFile.h:110
const int * borrowTargetReducedNodes() const
Definition: finley/src/NodeFile.h:241
int getGlobalNumReducedNodes() const
Definition: finley/src/NodeFile.h:186
int * Tag
Tag[i] is the tag of node i.
Definition: finley/src/NodeFile.h:116
paso::Connector_ptr reducedDegreesOfFreedomConnector
Definition: finley/src/NodeFile.h:140
int getFirstReducedNode() const
Definition: finley/src/NodeFile.h:176
int getNumReducedDegreesOfFreedom() const
Definition: finley/src/NodeFile.h:211
~NodeFile()
destructor
Definition: finley/src/NodeFile.cpp:101
int * globalNodesIndex
assigns each local reduced node a global unique Id in a dense labeling
Definition: finley/src/NodeFile.h:132