/[escript]/branches/domexper/dudley/src/NodeFile.h
ViewVC logotype

Contents of /branches/domexper/dudley/src/NodeFile.h

Parent Directory Parent Directory | Revision Log Revision Log


Revision 3086 - (show annotations)
Thu Aug 5 05:07:58 2010 UTC (9 years, 6 months ago) by jfenwick
File MIME type: text/plain
File size: 7910 byte(s)
Another pass at removing finley

1
2 /*******************************************************
3 *
4 * Copyright (c) 2003-2010 by University of Queensland
5 * Earth Systems Science Computational Center (ESSCC)
6 * http://www.uq.edu.au/esscc
7 *
8 * Primary Business: Queensland, Australia
9 * Licensed under the Open Software License version 3.0
10 * http://www.opensource.org/licenses/osl-3.0.php
11 *
12 *******************************************************/
13
14
15 #ifndef INC_DUDLEY_NODEFILE
16 #define INC_DUDLEY_NODEFILE
17
18 #define MAX_numDim 3
19
20 #include "Dudley.h"
21 #include "NodeMapping.h"
22 #include "escript/DataC.h"
23 #include "paso/Distribution.h"
24 #include "paso/Coupler.h"
25
26 struct Dudley_NodeFile {
27 Paso_MPIInfo *MPIInfo; /* MPI information */
28
29 dim_t numNodes; /* number of nodes */
30 dim_t numDim; /* spatial dimension */
31 index_t *Id; /* Id[i] is the id number of node i. It need to be unique. */
32 index_t *Tag; /* Tag[i] is the tag of node i. */
33 index_t *tagsInUse; /* array of tags which are actually used */
34 dim_t numTagsInUse; /* number of tags used */
35
36 index_t* globalDegreesOfFreedom; /* globalDegreesOfFreedom[i] is the global degree of freedom assigned to node i */
37 /* this index is used to consider periodic boundary conditions by assigning */
38 /* the same degreesOfFreedom to the same node */
39 double *Coordinates; /* Coordinates[INDEX2(k,i,numDim)] is the k-th coordinate of the */
40 /* node i. */
41 index_t *globalReducedDOFIndex; /* assigns each local node a global unique Id in a dens labeling of reduced DOF*/
42 /* value <0 indicates that the DOF is not used */
43 index_t *globalReducedNodesIndex; /* assigns each local node a global unique Id in a dens labeling */
44 /* value <0 indicates that the DOF is not used */
45 index_t *globalNodesIndex; /* assigns each local reduced node a global unique Id in a dens labeling */
46
47
48 Dudley_NodeMapping *nodesMapping;
49 Dudley_NodeMapping *reducedNodesMapping;
50 Dudley_NodeMapping *degreesOfFreedomMapping;
51 Dudley_NodeMapping *reducedDegreesOfFreedomMapping;
52
53 Paso_Distribution *nodesDistribution;
54 Paso_Distribution *reducedNodesDistribution;
55 Paso_Distribution *degreesOfFreedomDistribution;
56 Paso_Distribution *reducedDegreesOfFreedomDistribution;
57
58 Paso_Connector* degreesOfFreedomConnector;
59 Paso_Connector *reducedDegreesOfFreedomConnector;
60
61 /* these a the packed versions of Id */
62 index_t *reducedNodesId;
63 index_t *degreesOfFreedomId;
64 index_t *reducedDegreesOfFreedomId;
65
66
67 int status; /* the status counts the updates done on the node coordinates */
68 /* the value of status is increased by when the node coordinates are updated.*/
69
70
71 };
72
73 typedef struct Dudley_NodeFile Dudley_NodeFile;
74
75
76
77 Dudley_NodeFile* Dudley_NodeFile_alloc(dim_t, Paso_MPIInfo *MPIInfo);
78 index_t Dudley_NodeFile_getFirstReducedNode(Dudley_NodeFile* in);
79 index_t Dudley_NodeFile_getLastReducedNode(Dudley_NodeFile* in);
80 dim_t Dudley_NodeFile_getGlobalNumReducedNodes(Dudley_NodeFile* in);
81 index_t* Dudley_NodeFile_borrowGlobalReducedNodesIndex(Dudley_NodeFile* in);
82 index_t Dudley_NodeFile_maxGlobalNodeIDIndex(Dudley_NodeFile* in);
83 index_t Dudley_NodeFile_maxGlobalReducedNodeIDIndex(Dudley_NodeFile* in);
84 index_t Dudley_NodeFile_GlobalDegreeOfFreedomIndex(Dudley_NodeFile* in);
85 index_t Dudley_NodeFile_GlobalReducedDegreeOfFreedomIndex(Dudley_NodeFile* in);
86
87 index_t Dudley_NodeFile_getFirstNode(Dudley_NodeFile* in);
88 index_t Dudley_NodeFile_getLastNode(Dudley_NodeFile* in);
89 dim_t Dudley_NodeFile_getGlobalNumNodes(Dudley_NodeFile* in);
90 index_t* Dudley_NodeFile_borrowGlobalNodesIndex(Dudley_NodeFile* in);
91
92 /* returns the number of target */
93 dim_t Dudley_NodeFile_getNumReducedNodes(Dudley_NodeFile* in);
94 dim_t Dudley_NodeFile_getNumDegreesOfFreedom(Dudley_NodeFile* in);
95 dim_t Dudley_NodeFile_getNumNodes(Dudley_NodeFile* in);
96 dim_t Dudley_NodeFile_getNumReducedDegreesOfFreedom(Dudley_NodeFile* in);
97
98 /* returns the mapping from local nodes to a target */
99 index_t* Dudley_NodeFile_borrowTargetReducedNodes(Dudley_NodeFile* in);
100 index_t* Dudley_NodeFile_borrowTargetDegreesOfFreedom(Dudley_NodeFile* in);
101 index_t* Dudley_NodeFile_borrowTargetNodes(Dudley_NodeFile* in);
102 index_t* Dudley_NodeFile_borrowTargetReducedDegreesOfFreedom(Dudley_NodeFile* in);
103 /* returns the mapping from target to the local nodes */
104 index_t* Dudley_NodeFile_borrowReducedNodesTarget(Dudley_NodeFile* in);
105 index_t* Dudley_NodeFile_borrowDegreesOfFreedomTarget(Dudley_NodeFile* in);
106 index_t* Dudley_NodeFile_borrowNodesTarget(Dudley_NodeFile* in);
107 index_t* Dudley_NodeFile_borrowReducedDegreesOfFreedomTarget(Dudley_NodeFile* in);
108
109 void Dudley_NodeFile_allocTable(Dudley_NodeFile*,dim_t);
110 void Dudley_NodeFile_free(Dudley_NodeFile*);
111 void Dudley_NodeFile_freeTable(Dudley_NodeFile*);
112 void Dudley_NodeFile_setIdGlobalRange(index_t*,index_t*,Dudley_NodeFile*);
113 void Dudley_NodeFile_setIdRange(index_t*,index_t*,Dudley_NodeFile*);
114 void Dudley_NodeFile_setDOFGlobalRange(index_t*,index_t*,Dudley_NodeFile*);
115 void Dudley_NodeFile_setDOFRange(index_t*,index_t*,Dudley_NodeFile*);
116
117
118 void Dudley_NodeFile_setGlobalDOFRange(index_t*,index_t*,Dudley_NodeFile*);
119 void Dudley_NodeFile_setGlobalIdRange(index_t*,index_t*,Dudley_NodeFile*);
120 index_t Dudley_NodeFile_maxGlobalDegreeOfFreedomIndex(Dudley_NodeFile*);
121 index_t Dudley_NodeFile_maxGlobalReducedDegreeOfFreedomIndex(Dudley_NodeFile*);
122
123 void Dudley_NodeFile_setReducedDOFRange(index_t*,index_t*,Dudley_NodeFile*);
124 dim_t Dudley_NodeFile_createDenseDOFLabeling(Dudley_NodeFile*);
125 dim_t Dudley_NodeFile_createDenseNodeLabeling(Dudley_NodeFile* in, index_t* node_distribution, const index_t* dof_distribution);
126 dim_t Dudley_NodeFile_createDenseReducedNodeLabeling(Dudley_NodeFile* in, index_t* reducedNodeMask);
127 dim_t Dudley_NodeFile_createDenseReducedDOFLabeling(Dudley_NodeFile* in, index_t* reducedNodeMask);
128 void Dudley_NodeFile_assignMPIRankToDOFs(Dudley_NodeFile* in,Paso_MPI_rank* mpiRankOfDOF, index_t *distribution);
129 void Dudley_NodeFile_gather(index_t*,Dudley_NodeFile*,Dudley_NodeFile*);
130 void Dudley_NodeFile_gather_global(index_t*,Dudley_NodeFile*,Dudley_NodeFile*);
131 void Dudley_NodeFile_gatherEntries(dim_t, index_t*, index_t, index_t, index_t*, index_t*, index_t*, index_t*, index_t*, index_t*, dim_t numDim, double*, double*);
132 void Dudley_NodeFile_copyTable(dim_t,Dudley_NodeFile*,dim_t,dim_t,Dudley_NodeFile*);
133 void Dudley_NodeFile_scatter(index_t*,Dudley_NodeFile*,Dudley_NodeFile*);
134 void Dudley_NodeFile_scatterEntries(dim_t, index_t*, index_t, index_t, index_t*, index_t*, index_t*, index_t*, index_t*, index_t*, dim_t numDim, double*, double*);
135 void Dudley_NodeFile_copyTable(dim_t,Dudley_NodeFile*,dim_t,dim_t,Dudley_NodeFile*);
136 void Dudley_NodeFile_setGlobalReducedDegreeOfFreedomRange(index_t* min_id,index_t* max_id,Dudley_NodeFile* in);
137 void Dudley_NodeFile_setGlobalNodeIDIndexRange(index_t* min_id,index_t* max_id,Dudley_NodeFile* in);
138 void Dudley_NodeFile_setGlobalReducedNodeIDIndexRange(index_t* min_id,index_t* max_id,Dudley_NodeFile* in);
139
140 /* ===================== */
141 void Dudley_NodeFile_setCoordinates(Dudley_NodeFile*,escriptDataC*);
142 void Dudley_NodeFile_setTags(Dudley_NodeFile*,const int,escriptDataC*);
143 void Dudley_NodeFile_setTagsInUse(Dudley_NodeFile* in);
144
145 #endif
146

Properties

Name Value
svn:eol-style native
svn:keywords Author Date Id Revision

  ViewVC Help
Powered by ViewVC 1.1.26