17 #ifndef __DUDLEY_NODEFILE_H__ 18 #define __DUDLEY_NODEFILE_H__ 23 #include <escript/Distribution.h> 26 #include <paso/Coupler.h> 28 #ifdef ESYS_HAVE_TRILINOS 29 #include <trilinoswrap/types.h> 50 void allocTable(
dim_t numNodes);
57 inline index_t getFirstNode()
const;
58 inline index_t getLastNode()
const;
59 inline dim_t getGlobalNumNodes()
const;
60 inline const index_t* borrowGlobalNodesIndex()
const;
63 inline dim_t getNumNodes()
const;
66 inline dim_t getNumDegreesOfFreedom()
const;
69 inline dim_t getNumDegreesOfFreedomTargets()
const;
72 inline const index_t* borrowNodesTarget()
const;
75 inline const index_t* borrowDegreesOfFreedomTarget()
const;
78 inline const index_t* borrowTargetDegreesOfFreedom()
const;
81 inline const index_t* borrowTargetNodes()
const;
83 inline void updateTagList();
87 dim_t createDenseDOFLabeling();
92 void createNodeMappings(
const IndexVector& dofDistribution,
95 void assignMPIRankToDOFs(
int* mpiRankOfDOF,
113 std::pair<index_t,index_t> getDOFRange()
const;
115 #ifdef ESYS_HAVE_TRILINOS 117 esys_trilinos::const_TrilinosGraph_ptr getTrilinosGraph()
const {
123 std::pair<index_t,index_t> getGlobalIdRange()
const;
124 std::pair<index_t,index_t> getGlobalDOFRange()
const;
125 std::pair<index_t,index_t> getGlobalNodeIDIndexRange()
const;
128 void createDOFMappingAndCoupling();
136 #ifdef ESYS_HAVE_TRILINOS 137 esys_trilinos::const_TrilinosGraph_ptr m_graph;
168 #ifdef ESYS_HAVE_PASO 185 return nodesDistribution->getFirstComponent();
190 return nodesDistribution->getLastComponent();
193 inline dim_t NodeFile::getGlobalNumNodes()
const 195 return nodesDistribution->getGlobalNumComponents();
198 inline const index_t* NodeFile::borrowGlobalNodesIndex()
const 200 return globalNodesIndex;
203 inline dim_t NodeFile::getNumNodes()
const 208 inline dim_t NodeFile::getNumDegreesOfFreedom()
const 210 return dofDistribution->getMyNumComponents();
213 inline dim_t NodeFile::getNumDegreesOfFreedomTargets()
const 215 return degreesOfFreedomMapping.numTargets;
218 inline const index_t* NodeFile::borrowNodesTarget()
const 220 return nodesMapping.map;
223 inline const index_t* NodeFile::borrowDegreesOfFreedomTarget()
const 225 return degreesOfFreedomMapping.map;
228 inline const index_t* NodeFile::borrowTargetNodes()
const 230 return nodesMapping.target;
233 inline const index_t* NodeFile::borrowTargetDegreesOfFreedom()
const 235 return degreesOfFreedomMapping.target;
238 inline void NodeFile::updateTagList()
246 #endif // __DUDLEY_NODEFILE_H__ std::vector< int > tagsInUse
vector of tags which are actually used
Definition: dudley/src/NodeFile.h:151
Definition: AbstractContinuousDomain.cpp:22
boost::shared_ptr< Distribution > Distribution_ptr
Definition: Distribution.h:24
std::vector< index_t > IndexVector
Definition: DataTypes.h:62
escript::Distribution_ptr dofDistribution
MPI distribution of degrees of freedom.
Definition: dudley/src/NodeFile.h:166
int * Tag
Tag[i] is the tag of node i.
Definition: dudley/src/NodeFile.h:149
boost::shared_ptr< JMPI_ > JMPI
Definition: EsysMPI.h:71
index_t * globalNodesIndex
assigns each local node a global unique ID in a dense labeling
Definition: dudley/src/NodeFile.h:160
void setValuesInUse(const int *values, dim_t numValues, std::vector< int > &valuesInUse, escript::JMPI mpiinfo)
Definition: dudley/src/Util.cpp:215
int index_t
type for array/matrix indices used both globally and on each rank
Definition: DataTypes.h:59
index_t * globalDegreesOfFreedom
Definition: dudley/src/NodeFile.h:156
double * Coordinates
Coordinates[INDEX2(k,i,numDim)] is the k-th coordinate of node i.
Definition: dudley/src/NodeFile.h:158
Data represents a collection of datapoints.
Definition: Data.h:63
escript::Distribution_ptr nodesDistribution
MPI distribution of nodes.
Definition: dudley/src/NodeFile.h:163
NodeMapping degreesOfFreedomMapping
Definition: dudley/src/NodeFile.h:131
A suite of factory methods for creating 2D and 3D dudley domains.
Definition: dudley/src/Assemble.h:31
dim_t numNodes
number of nodes
Definition: dudley/src/NodeFile.h:134
index_t * degreesOfFreedomId
Definition: dudley/src/NodeFile.h:172
void gather(int len, const index_t *index, int numData, const double *in, double *out)
Definition: dudley/src/Util.cpp:43
Definition: dudley/src/NodeMapping.h:26
boost::shared_ptr< Connector > Connector_ptr
Definition: Coupler.h:37
int status
Definition: dudley/src/NodeFile.h:176
Definition: escriptcore/src/IndexList.h:28
escript::JMPI MPIInfo
MPI information.
Definition: dudley/src/NodeFile.h:143
Definition: dudley/src/NodeFile.h:38
NodeMapping nodesMapping
Definition: dudley/src/NodeFile.h:130
int numDim
number of spatial dimensions
Definition: dudley/src/NodeFile.h:145
index_t dim_t
Definition: DataTypes.h:64
index_t * Id
Id[i] is the unique ID number of FEM node i.
Definition: dudley/src/NodeFile.h:147