21 |
#include <ctype.h> |
#include <ctype.h> |
22 |
#include "Mesh.h" |
#include "Mesh.h" |
23 |
|
|
24 |
|
#define FSCANF_CHECK(scan_ret, reason) { if (scan_ret == EOF) perror(reason); return NULL; } |
25 |
|
|
26 |
/**************************************************************/ |
/**************************************************************/ |
27 |
|
|
28 |
/* reads a mesh from a Finley file of name fname */ |
/* reads a mesh from a Finley file of name fname */ |
40 |
double time0=Finley_timer(); |
double time0=Finley_timer(); |
41 |
FILE *fileHandle_p = NULL; |
FILE *fileHandle_p = NULL; |
42 |
ElementTypeId typeID, faceTypeID, contactTypeID, pointTypeID; |
ElementTypeId typeID, faceTypeID, contactTypeID, pointTypeID; |
43 |
|
int scan_ret; |
44 |
|
|
45 |
Finley_resetError(); |
Finley_resetError(); |
46 |
|
|
58 |
|
|
59 |
/* read header */ |
/* read header */ |
60 |
sprintf(frm,"%%%d[^\n]",LenString_MAX-1); |
sprintf(frm,"%%%d[^\n]",LenString_MAX-1); |
61 |
fscanf(fileHandle_p, frm, name); |
scan_ret = fscanf(fileHandle_p, frm, name); |
62 |
|
FSCANF_CHECK(scan_ret, "Finley_Mesh_read") |
63 |
|
|
64 |
/* get the nodes */ |
/* get the nodes */ |
65 |
|
|
66 |
fscanf(fileHandle_p, "%1d%*s %d\n", &numDim,&numNodes); |
scan_ret = fscanf(fileHandle_p, "%1d%*s %d\n", &numDim,&numNodes); |
67 |
|
FSCANF_CHECK(scan_ret, "Finley_Mesh_read") |
68 |
/* allocate mesh */ |
/* allocate mesh */ |
69 |
mesh_p = Finley_Mesh_alloc(name,numDim,order,reduced_order,mpi_info); |
mesh_p = Finley_Mesh_alloc(name,numDim,order,reduced_order,mpi_info); |
70 |
if (Finley_noError()) { |
if (Finley_noError()) { |
73 |
Finley_NodeFile_allocTable(mesh_p->Nodes, numNodes); |
Finley_NodeFile_allocTable(mesh_p->Nodes, numNodes); |
74 |
if (Finley_noError()) { |
if (Finley_noError()) { |
75 |
if (1 == numDim) { |
if (1 == numDim) { |
76 |
for (i0 = 0; i0 < numNodes; i0++) |
for (i0 = 0; i0 < numNodes; i0++) { |
77 |
fscanf(fileHandle_p, "%d %d %d %le\n", &mesh_p->Nodes->Id[i0], |
scan_ret = fscanf(fileHandle_p, "%d %d %d %le\n", &mesh_p->Nodes->Id[i0], |
78 |
&mesh_p->Nodes->globalDegreesOfFreedom[i0], &mesh_p->Nodes->Tag[i0], |
&mesh_p->Nodes->globalDegreesOfFreedom[i0], &mesh_p->Nodes->Tag[i0], |
79 |
&mesh_p->Nodes->Coordinates[INDEX2(0,i0,numDim)]); |
&mesh_p->Nodes->Coordinates[INDEX2(0,i0,numDim)]); |
80 |
|
FSCANF_CHECK(scan_ret, "Finley_Mesh_read") |
81 |
|
} |
82 |
} else if (2 == numDim) { |
} else if (2 == numDim) { |
83 |
for (i0 = 0; i0 < numNodes; i0++) |
for (i0 = 0; i0 < numNodes; i0++) { |
84 |
fscanf(fileHandle_p, "%d %d %d %le %le\n", &mesh_p->Nodes->Id[i0], |
scan_ret = fscanf(fileHandle_p, "%d %d %d %le %le\n", &mesh_p->Nodes->Id[i0], |
85 |
&mesh_p->Nodes->globalDegreesOfFreedom[i0], &mesh_p->Nodes->Tag[i0], |
&mesh_p->Nodes->globalDegreesOfFreedom[i0], &mesh_p->Nodes->Tag[i0], |
86 |
&mesh_p->Nodes->Coordinates[INDEX2(0,i0,numDim)], |
&mesh_p->Nodes->Coordinates[INDEX2(0,i0,numDim)], |
87 |
&mesh_p->Nodes->Coordinates[INDEX2(1,i0,numDim)]); |
&mesh_p->Nodes->Coordinates[INDEX2(1,i0,numDim)]); |
88 |
|
FSCANF_CHECK(scan_ret, "Finley_Mesh_read") |
89 |
|
} |
90 |
} else if (3 == numDim) { |
} else if (3 == numDim) { |
91 |
for (i0 = 0; i0 < numNodes; i0++) |
for (i0 = 0; i0 < numNodes; i0++) { |
92 |
fscanf(fileHandle_p, "%d %d %d %le %le %le\n", &mesh_p->Nodes->Id[i0], |
scan_ret = fscanf(fileHandle_p, "%d %d %d %le %le %le\n", &mesh_p->Nodes->Id[i0], |
93 |
&mesh_p->Nodes->globalDegreesOfFreedom[i0], &mesh_p->Nodes->Tag[i0], |
&mesh_p->Nodes->globalDegreesOfFreedom[i0], &mesh_p->Nodes->Tag[i0], |
94 |
&mesh_p->Nodes->Coordinates[INDEX2(0,i0,numDim)], |
&mesh_p->Nodes->Coordinates[INDEX2(0,i0,numDim)], |
95 |
&mesh_p->Nodes->Coordinates[INDEX2(1,i0,numDim)], |
&mesh_p->Nodes->Coordinates[INDEX2(1,i0,numDim)], |
96 |
&mesh_p->Nodes->Coordinates[INDEX2(2,i0,numDim)]); |
&mesh_p->Nodes->Coordinates[INDEX2(2,i0,numDim)]); |
97 |
|
FSCANF_CHECK(scan_ret, "Finley_Mesh_read") |
98 |
|
} |
99 |
} /* if else else */ |
} /* if else else */ |
100 |
} |
} |
101 |
/* read elements */ |
/* read elements */ |
102 |
if (Finley_noError()) { |
if (Finley_noError()) { |
103 |
|
|
104 |
fscanf(fileHandle_p, "%s %d\n", element_type, &numEle); |
scan_ret = fscanf(fileHandle_p, "%s %d\n", element_type, &numEle); |
105 |
|
FSCANF_CHECK(scan_ret, "Finley_Mesh_read") |
106 |
typeID=Finley_RefElement_getTypeId(element_type); |
typeID=Finley_RefElement_getTypeId(element_type); |
107 |
if (typeID==NoType) { |
if (typeID==NoType) { |
108 |
sprintf(error_msg,"Finley_Mesh_read :Unidentified element type %s",element_type); |
sprintf(error_msg,"Finley_Mesh_read :Unidentified element type %s",element_type); |
116 |
mesh_p->Elements->maxColor=numEle-1; |
mesh_p->Elements->maxColor=numEle-1; |
117 |
if (Finley_noError()) { |
if (Finley_noError()) { |
118 |
for (i0 = 0; i0 < numEle; i0++) { |
for (i0 = 0; i0 < numEle; i0++) { |
119 |
fscanf(fileHandle_p, "%d %d", &mesh_p->Elements->Id[i0], &mesh_p->Elements->Tag[i0]); |
scan_ret = fscanf(fileHandle_p, "%d %d", &mesh_p->Elements->Id[i0], &mesh_p->Elements->Tag[i0]); |
120 |
|
FSCANF_CHECK(scan_ret, "Finley_Mesh_read") |
121 |
mesh_p->Elements->Color[i0]=i0; |
mesh_p->Elements->Color[i0]=i0; |
122 |
mesh_p->Elements->Owner[i0]=0; |
mesh_p->Elements->Owner[i0]=0; |
123 |
for (i1 = 0; i1 < mesh_p->Elements->ReferenceElement->Type->numNodes; i1++) { |
for (i1 = 0; i1 < mesh_p->Elements->ReferenceElement->Type->numNodes; i1++) { |
124 |
fscanf(fileHandle_p, " %d", |
scan_ret = fscanf(fileHandle_p, " %d", |
125 |
&mesh_p->Elements->Nodes[INDEX2(i1, i0, mesh_p->Elements->ReferenceElement->Type->numNodes)]); |
&mesh_p->Elements->Nodes[INDEX2(i1, i0, mesh_p->Elements->ReferenceElement->Type->numNodes)]); |
126 |
|
FSCANF_CHECK(scan_ret, "Finley_Mesh_read") |
127 |
} /* for i1 */ |
} /* for i1 */ |
128 |
fscanf(fileHandle_p, "\n"); |
scan_ret = fscanf(fileHandle_p, "\n"); |
129 |
|
FSCANF_CHECK(scan_ret, "Finley_Mesh_read") |
130 |
} /* for i0 */ |
} /* for i0 */ |
131 |
} |
} |
132 |
} |
} |
134 |
} |
} |
135 |
/* get the face elements */ |
/* get the face elements */ |
136 |
if (Finley_noError()) { |
if (Finley_noError()) { |
137 |
fscanf(fileHandle_p, "%s %d\n", element_type, &numEle); |
scan_ret = fscanf(fileHandle_p, "%s %d\n", element_type, &numEle); |
138 |
|
FSCANF_CHECK(scan_ret, "Finley_Mesh_read") |
139 |
faceTypeID=Finley_RefElement_getTypeId(element_type); |
faceTypeID=Finley_RefElement_getTypeId(element_type); |
140 |
if (faceTypeID==NoType) { |
if (faceTypeID==NoType) { |
141 |
sprintf(error_msg,"Finley_Mesh_read :Unidentified element type %s for face elements",element_type); |
sprintf(error_msg,"Finley_Mesh_read :Unidentified element type %s for face elements",element_type); |
148 |
mesh_p->FaceElements->minColor=0; |
mesh_p->FaceElements->minColor=0; |
149 |
mesh_p->FaceElements->maxColor=numEle-1; |
mesh_p->FaceElements->maxColor=numEle-1; |
150 |
for (i0 = 0; i0 < numEle; i0++) { |
for (i0 = 0; i0 < numEle; i0++) { |
151 |
fscanf(fileHandle_p, "%d %d", &mesh_p->FaceElements->Id[i0], &mesh_p->FaceElements->Tag[i0]); |
scan_ret = fscanf(fileHandle_p, "%d %d", &mesh_p->FaceElements->Id[i0], &mesh_p->FaceElements->Tag[i0]); |
152 |
|
FSCANF_CHECK(scan_ret, "Finley_Mesh_read") |
153 |
mesh_p->FaceElements->Color[i0]=i0; |
mesh_p->FaceElements->Color[i0]=i0; |
154 |
mesh_p->FaceElements->Owner[i0]=0; |
mesh_p->FaceElements->Owner[i0]=0; |
155 |
for (i1 = 0; i1 < mesh_p->FaceElements->ReferenceElement->Type->numNodes; i1++) { |
for (i1 = 0; i1 < mesh_p->FaceElements->ReferenceElement->Type->numNodes; i1++) { |
156 |
fscanf(fileHandle_p, " %d", |
scan_ret = fscanf(fileHandle_p, " %d", |
157 |
&mesh_p->FaceElements->Nodes[INDEX2(i1, i0, mesh_p->FaceElements->ReferenceElement->Type->numNodes)]); |
&mesh_p->FaceElements->Nodes[INDEX2(i1, i0, mesh_p->FaceElements->ReferenceElement->Type->numNodes)]); |
158 |
|
FSCANF_CHECK(scan_ret, "Finley_Mesh_read") |
159 |
} /* for i1 */ |
} /* for i1 */ |
160 |
fscanf(fileHandle_p, "\n"); |
scan_ret = fscanf(fileHandle_p, "\n"); |
161 |
|
FSCANF_CHECK(scan_ret, "Finley_Mesh_read") |
162 |
} /* for i0 */ |
} /* for i0 */ |
163 |
} |
} |
164 |
} |
} |
166 |
} |
} |
167 |
/* get the Contact face element */ |
/* get the Contact face element */ |
168 |
if (Finley_noError()) { |
if (Finley_noError()) { |
169 |
fscanf(fileHandle_p, "%s %d\n", element_type, &numEle); |
scan_ret = fscanf(fileHandle_p, "%s %d\n", element_type, &numEle); |
170 |
|
FSCANF_CHECK(scan_ret, "Finley_Mesh_read") |
171 |
contactTypeID=Finley_RefElement_getTypeId(element_type); |
contactTypeID=Finley_RefElement_getTypeId(element_type); |
172 |
if (contactTypeID==NoType) { |
if (contactTypeID==NoType) { |
173 |
sprintf(error_msg,"Finley_Mesh_read: Unidentified element type %s for contact elements",element_type); |
sprintf(error_msg,"Finley_Mesh_read: Unidentified element type %s for contact elements",element_type); |
180 |
mesh_p->ContactElements->minColor=0; |
mesh_p->ContactElements->minColor=0; |
181 |
mesh_p->ContactElements->maxColor=numEle-1; |
mesh_p->ContactElements->maxColor=numEle-1; |
182 |
for (i0 = 0; i0 < numEle; i0++) { |
for (i0 = 0; i0 < numEle; i0++) { |
183 |
fscanf(fileHandle_p, "%d %d", &mesh_p->ContactElements->Id[i0], &mesh_p->ContactElements->Tag[i0]); |
scan_ret = fscanf(fileHandle_p, "%d %d", &mesh_p->ContactElements->Id[i0], &mesh_p->ContactElements->Tag[i0]); |
184 |
|
FSCANF_CHECK(scan_ret, "Finley_Mesh_read") |
185 |
mesh_p->ContactElements->Color[i0]=i0; |
mesh_p->ContactElements->Color[i0]=i0; |
186 |
mesh_p->ContactElements->Owner[i0]=0; |
mesh_p->ContactElements->Owner[i0]=0; |
187 |
for (i1 = 0; i1 < mesh_p->ContactElements->ReferenceElement->Type->numNodes; i1++) { |
for (i1 = 0; i1 < mesh_p->ContactElements->ReferenceElement->Type->numNodes; i1++) { |
188 |
fscanf(fileHandle_p, " %d", |
scan_ret = fscanf(fileHandle_p, " %d", |
189 |
&mesh_p->ContactElements->Nodes[INDEX2(i1, i0, mesh_p->ContactElements->ReferenceElement->Type->numNodes)]); |
&mesh_p->ContactElements->Nodes[INDEX2(i1, i0, mesh_p->ContactElements->ReferenceElement->Type->numNodes)]); |
190 |
|
FSCANF_CHECK(scan_ret, "Finley_Mesh_read") |
191 |
} /* for i1 */ |
} /* for i1 */ |
192 |
fscanf(fileHandle_p, "\n"); |
scan_ret = fscanf(fileHandle_p, "\n"); |
193 |
|
FSCANF_CHECK(scan_ret, "Finley_Mesh_read") |
194 |
} /* for i0 */ |
} /* for i0 */ |
195 |
} |
} |
196 |
} |
} |
198 |
} |
} |
199 |
/* get the nodal element */ |
/* get the nodal element */ |
200 |
if (Finley_noError()) { |
if (Finley_noError()) { |
201 |
fscanf(fileHandle_p, "%s %d\n", element_type, &numEle); |
scan_ret = fscanf(fileHandle_p, "%s %d\n", element_type, &numEle); |
202 |
|
FSCANF_CHECK(scan_ret, "Finley_Mesh_read") |
203 |
pointTypeID=Finley_RefElement_getTypeId(element_type); |
pointTypeID=Finley_RefElement_getTypeId(element_type); |
204 |
if (pointTypeID==NoType) { |
if (pointTypeID==NoType) { |
205 |
sprintf(error_msg,"Finley_Mesh_read: Unidentified element type %s for points",element_type); |
sprintf(error_msg,"Finley_Mesh_read: Unidentified element type %s for points",element_type); |
212 |
mesh_p->Points->minColor=0; |
mesh_p->Points->minColor=0; |
213 |
mesh_p->Points->maxColor=numEle-1; |
mesh_p->Points->maxColor=numEle-1; |
214 |
for (i0 = 0; i0 < numEle; i0++) { |
for (i0 = 0; i0 < numEle; i0++) { |
215 |
fscanf(fileHandle_p, "%d %d", &mesh_p->Points->Id[i0], &mesh_p->Points->Tag[i0]); |
scan_ret = fscanf(fileHandle_p, "%d %d", &mesh_p->Points->Id[i0], &mesh_p->Points->Tag[i0]); |
216 |
|
FSCANF_CHECK(scan_ret, "Finley_Mesh_read") |
217 |
mesh_p->Points->Color[i0]=i0; |
mesh_p->Points->Color[i0]=i0; |
218 |
mesh_p->Points->Owner[i0]=0; |
mesh_p->Points->Owner[i0]=0; |
219 |
for (i1 = 0; i1 < mesh_p->Points->ReferenceElement->Type->numNodes; i1++) { |
for (i1 = 0; i1 < mesh_p->Points->ReferenceElement->Type->numNodes; i1++) { |
220 |
fscanf(fileHandle_p, " %d", |
scan_ret = fscanf(fileHandle_p, " %d", |
221 |
&mesh_p->Points->Nodes[INDEX2(i1, i0, mesh_p->Points->ReferenceElement->Type->numNodes)]); |
&mesh_p->Points->Nodes[INDEX2(i1, i0, mesh_p->Points->ReferenceElement->Type->numNodes)]); |
222 |
|
FSCANF_CHECK(scan_ret, "Finley_Mesh_read") |
223 |
} /* for i1 */ |
} /* for i1 */ |
224 |
fscanf(fileHandle_p, "\n"); |
scan_ret = fscanf(fileHandle_p, "\n"); |
225 |
|
FSCANF_CHECK(scan_ret, "Finley_Mesh_read") |
226 |
} /* for i0 */ |
} /* for i0 */ |
227 |
} |
} |
228 |
} |
} |
230 |
/* get the name tags */ |
/* get the name tags */ |
231 |
if (Finley_noError()) { |
if (Finley_noError()) { |
232 |
if (feof(fileHandle_p) == 0) { |
if (feof(fileHandle_p) == 0) { |
233 |
fscanf(fileHandle_p, "%s\n", name); |
scan_ret = fscanf(fileHandle_p, "%s\n", name); |
234 |
|
FSCANF_CHECK(scan_ret, "Finley_Mesh_read") |
235 |
while (feof(fileHandle_p) == 0) { |
while (feof(fileHandle_p) == 0) { |
236 |
fscanf(fileHandle_p, "%s %d\n", name, &tag_key); |
scan_ret = fscanf(fileHandle_p, "%s %d\n", name, &tag_key); |
237 |
|
FSCANF_CHECK(scan_ret, "Finley_Mesh_read") |
238 |
Finley_Mesh_addTagMap(mesh_p,name,tag_key); |
Finley_Mesh_addTagMap(mesh_p,name,tag_key); |
239 |
} |
} |
240 |
} |
} |
277 |
ElementTypeId typeID, faceTypeID, contactTypeID, pointTypeID; |
ElementTypeId typeID, faceTypeID, contactTypeID, pointTypeID; |
278 |
Finley_TagMap* tag_map; |
Finley_TagMap* tag_map; |
279 |
index_t tag_key; |
index_t tag_key; |
280 |
|
int scan_ret; |
281 |
|
|
282 |
Finley_resetError(); |
Finley_resetError(); |
283 |
|
|
293 |
|
|
294 |
/* read header */ |
/* read header */ |
295 |
sprintf(frm,"%%%d[^\n]",LenString_MAX-1); |
sprintf(frm,"%%%d[^\n]",LenString_MAX-1); |
296 |
fscanf(fileHandle_p, frm, name); |
scan_ret = fscanf(fileHandle_p, frm, name); |
297 |
|
FSCANF_CHECK(scan_ret, "Finley_Mesh_read") |
298 |
|
|
299 |
/* get the number of nodes */ |
/* get the number of nodes */ |
300 |
fscanf(fileHandle_p, "%1d%*s %d\n", &numDim,&numNodes); |
scan_ret = fscanf(fileHandle_p, "%1d%*s %d\n", &numDim,&numNodes); |
301 |
|
FSCANF_CHECK(scan_ret, "Finley_Mesh_read") |
302 |
} |
} |
303 |
|
|
304 |
#ifdef PASO_MPI |
#ifdef PASO_MPI |
346 |
chunkNodes = 0; |
chunkNodes = 0; |
347 |
for (i1=0; i1<chunkSize; i1++) { |
for (i1=0; i1<chunkSize; i1++) { |
348 |
if (totalNodes >= numNodes) break; /* End of inner loop */ |
if (totalNodes >= numNodes) break; /* End of inner loop */ |
349 |
if (1 == numDim) |
if (1 == numDim) { |
350 |
fscanf(fileHandle_p, "%d %d %d %le\n", |
scan_ret = fscanf(fileHandle_p, "%d %d %d %le\n", |
351 |
&tempInts[0+i1], &tempInts[chunkSize+i1], &tempInts[chunkSize*2+i1], |
&tempInts[0+i1], &tempInts[chunkSize+i1], &tempInts[chunkSize*2+i1], |
352 |
&tempCoords[i1*numDim+0]); |
&tempCoords[i1*numDim+0]); |
353 |
if (2 == numDim) |
FSCANF_CHECK(scan_ret, "Finley_Mesh_read") |
354 |
fscanf(fileHandle_p, "%d %d %d %le %le\n", |
} |
355 |
|
if (2 == numDim) { |
356 |
|
scan_ret = fscanf(fileHandle_p, "%d %d %d %le %le\n", |
357 |
&tempInts[0+i1], &tempInts[chunkSize+i1], &tempInts[chunkSize*2+i1], |
&tempInts[0+i1], &tempInts[chunkSize+i1], &tempInts[chunkSize*2+i1], |
358 |
&tempCoords[i1*numDim+0], &tempCoords[i1*numDim+1]); |
&tempCoords[i1*numDim+0], &tempCoords[i1*numDim+1]); |
359 |
if (3 == numDim) |
FSCANF_CHECK(scan_ret, "Finley_Mesh_read") |
360 |
fscanf(fileHandle_p, "%d %d %d %le %le %le\n", |
} |
361 |
|
if (3 == numDim) { |
362 |
|
scan_ret = fscanf(fileHandle_p, "%d %d %d %le %le %le\n", |
363 |
&tempInts[0+i1], &tempInts[chunkSize+i1], &tempInts[chunkSize*2+i1], |
&tempInts[0+i1], &tempInts[chunkSize+i1], &tempInts[chunkSize*2+i1], |
364 |
&tempCoords[i1*numDim+0], &tempCoords[i1*numDim+1], &tempCoords[i1*numDim+2]); |
&tempCoords[i1*numDim+0], &tempCoords[i1*numDim+1], &tempCoords[i1*numDim+2]); |
365 |
|
FSCANF_CHECK(scan_ret, "Finley_Mesh_read") |
366 |
|
} |
367 |
totalNodes++; /* When do we quit the infinite loop? */ |
totalNodes++; /* When do we quit the infinite loop? */ |
368 |
chunkNodes++; /* How many nodes do we actually have in this chunk? It may be smaller than chunkSize. */ |
chunkNodes++; /* How many nodes do we actually have in this chunk? It may be smaller than chunkSize. */ |
369 |
} |
} |
433 |
/* Read the element typeID */ |
/* Read the element typeID */ |
434 |
if (Finley_noError()) { |
if (Finley_noError()) { |
435 |
if (mpi_info->rank == 0) { |
if (mpi_info->rank == 0) { |
436 |
fscanf(fileHandle_p, "%s %d\n", element_type, &numEle); |
scan_ret = fscanf(fileHandle_p, "%s %d\n", element_type, &numEle); |
437 |
|
FSCANF_CHECK(scan_ret, "Finley_Mesh_read") |
438 |
typeID=Finley_RefElement_getTypeId(element_type); |
typeID=Finley_RefElement_getTypeId(element_type); |
439 |
} |
} |
440 |
#ifdef PASO_MPI |
#ifdef PASO_MPI |
472 |
chunkEle = 0; |
chunkEle = 0; |
473 |
for (i0=0; i0<chunkSize; i0++) { |
for (i0=0; i0<chunkSize; i0++) { |
474 |
if (totalEle >= numEle) break; /* End inner loop */ |
if (totalEle >= numEle) break; /* End inner loop */ |
475 |
fscanf(fileHandle_p, "%d %d", &tempInts[i0*(2+numNodes)+0], &tempInts[i0*(2+numNodes)+1]); |
scan_ret = fscanf(fileHandle_p, "%d %d", &tempInts[i0*(2+numNodes)+0], &tempInts[i0*(2+numNodes)+1]); |
476 |
for (i1 = 0; i1 < numNodes; i1++) fscanf(fileHandle_p, " %d", &tempInts[i0*(2+numNodes)+2+i1]); |
FSCANF_CHECK(scan_ret, "Finley_Mesh_read") |
477 |
fscanf(fileHandle_p, "\n"); |
for (i1 = 0; i1 < numNodes; i1++) { |
478 |
|
scan_ret = fscanf(fileHandle_p, " %d", &tempInts[i0*(2+numNodes)+2+i1]); |
479 |
|
FSCANF_CHECK(scan_ret, "Finley_Mesh_read") |
480 |
|
} |
481 |
|
scan_ret = fscanf(fileHandle_p, "\n"); |
482 |
|
FSCANF_CHECK(scan_ret, "Finley_Mesh_read") |
483 |
totalEle++; |
totalEle++; |
484 |
chunkEle++; |
chunkEle++; |
485 |
} |
} |
539 |
/* Read the element typeID */ |
/* Read the element typeID */ |
540 |
if (Finley_noError()) { |
if (Finley_noError()) { |
541 |
if (mpi_info->rank == 0) { |
if (mpi_info->rank == 0) { |
542 |
fscanf(fileHandle_p, "%s %d\n", element_type, &numEle); |
scan_ret = fscanf(fileHandle_p, "%s %d\n", element_type, &numEle); |
543 |
|
FSCANF_CHECK(scan_ret, "Finley_Mesh_read") |
544 |
typeID=Finley_RefElement_getTypeId(element_type); |
typeID=Finley_RefElement_getTypeId(element_type); |
545 |
} |
} |
546 |
#ifdef PASO_MPI |
#ifdef PASO_MPI |
578 |
chunkEle = 0; |
chunkEle = 0; |
579 |
for (i0=0; i0<chunkSize; i0++) { |
for (i0=0; i0<chunkSize; i0++) { |
580 |
if (totalEle >= numEle) break; /* End inner loop */ |
if (totalEle >= numEle) break; /* End inner loop */ |
581 |
fscanf(fileHandle_p, "%d %d", &tempInts[i0*(2+numNodes)+0], &tempInts[i0*(2+numNodes)+1]); |
scan_ret = fscanf(fileHandle_p, "%d %d", &tempInts[i0*(2+numNodes)+0], &tempInts[i0*(2+numNodes)+1]); |
582 |
for (i1 = 0; i1 < numNodes; i1++) fscanf(fileHandle_p, " %d", &tempInts[i0*(2+numNodes)+2+i1]); |
FSCANF_CHECK(scan_ret, "Finley_Mesh_read") |
583 |
fscanf(fileHandle_p, "\n"); |
for (i1 = 0; i1 < numNodes; i1++) { |
584 |
|
scan_ret = fscanf(fileHandle_p, " %d", &tempInts[i0*(2+numNodes)+2+i1]); |
585 |
|
FSCANF_CHECK(scan_ret, "Finley_Mesh_read") |
586 |
|
} |
587 |
|
scan_ret = fscanf(fileHandle_p, "\n"); |
588 |
|
FSCANF_CHECK(scan_ret, "Finley_Mesh_read") |
589 |
totalEle++; |
totalEle++; |
590 |
chunkEle++; |
chunkEle++; |
591 |
} |
} |
645 |
/* Read the element typeID */ |
/* Read the element typeID */ |
646 |
if (Finley_noError()) { |
if (Finley_noError()) { |
647 |
if (mpi_info->rank == 0) { |
if (mpi_info->rank == 0) { |
648 |
fscanf(fileHandle_p, "%s %d\n", element_type, &numEle); |
scan_ret = fscanf(fileHandle_p, "%s %d\n", element_type, &numEle); |
649 |
|
FSCANF_CHECK(scan_ret, "Finley_Mesh_read") |
650 |
typeID=Finley_RefElement_getTypeId(element_type); |
typeID=Finley_RefElement_getTypeId(element_type); |
651 |
} |
} |
652 |
#ifdef PASO_MPI |
#ifdef PASO_MPI |
684 |
chunkEle = 0; |
chunkEle = 0; |
685 |
for (i0=0; i0<chunkSize; i0++) { |
for (i0=0; i0<chunkSize; i0++) { |
686 |
if (totalEle >= numEle) break; /* End inner loop */ |
if (totalEle >= numEle) break; /* End inner loop */ |
687 |
fscanf(fileHandle_p, "%d %d", &tempInts[i0*(2+numNodes)+0], &tempInts[i0*(2+numNodes)+1]); |
scan_ret = fscanf(fileHandle_p, "%d %d", &tempInts[i0*(2+numNodes)+0], &tempInts[i0*(2+numNodes)+1]); |
688 |
for (i1 = 0; i1 < numNodes; i1++) fscanf(fileHandle_p, " %d", &tempInts[i0*(2+numNodes)+2+i1]); |
FSCANF_CHECK(scan_ret, "Finley_Mesh_read") |
689 |
fscanf(fileHandle_p, "\n"); |
for (i1 = 0; i1 < numNodes; i1++) { |
690 |
|
scan_ret = fscanf(fileHandle_p, " %d", &tempInts[i0*(2+numNodes)+2+i1]); |
691 |
|
FSCANF_CHECK(scan_ret, "Finley_Mesh_read") |
692 |
|
} |
693 |
|
scan_ret = fscanf(fileHandle_p, "\n"); |
694 |
|
FSCANF_CHECK(scan_ret, "Finley_Mesh_read") |
695 |
totalEle++; |
totalEle++; |
696 |
chunkEle++; |
chunkEle++; |
697 |
} |
} |
751 |
/* Read the element typeID */ |
/* Read the element typeID */ |
752 |
if (Finley_noError()) { |
if (Finley_noError()) { |
753 |
if (mpi_info->rank == 0) { |
if (mpi_info->rank == 0) { |
754 |
fscanf(fileHandle_p, "%s %d\n", element_type, &numEle); |
scan_ret = fscanf(fileHandle_p, "%s %d\n", element_type, &numEle); |
755 |
|
FSCANF_CHECK(scan_ret, "Finley_Mesh_read") |
756 |
typeID=Finley_RefElement_getTypeId(element_type); |
typeID=Finley_RefElement_getTypeId(element_type); |
757 |
} |
} |
758 |
#ifdef PASO_MPI |
#ifdef PASO_MPI |
790 |
chunkEle = 0; |
chunkEle = 0; |
791 |
for (i0=0; i0<chunkSize; i0++) { |
for (i0=0; i0<chunkSize; i0++) { |
792 |
if (totalEle >= numEle) break; /* End inner loop */ |
if (totalEle >= numEle) break; /* End inner loop */ |
793 |
fscanf(fileHandle_p, "%d %d", &tempInts[i0*(2+numNodes)+0], &tempInts[i0*(2+numNodes)+1]); |
scan_ret = fscanf(fileHandle_p, "%d %d", &tempInts[i0*(2+numNodes)+0], &tempInts[i0*(2+numNodes)+1]); |
794 |
for (i1 = 0; i1 < numNodes; i1++) fscanf(fileHandle_p, " %d", &tempInts[i0*(2+numNodes)+2+i1]); |
FSCANF_CHECK(scan_ret, "Finley_Mesh_read") |
795 |
fscanf(fileHandle_p, "\n"); |
for (i1 = 0; i1 < numNodes; i1++) { |
796 |
|
scan_ret = fscanf(fileHandle_p, " %d", &tempInts[i0*(2+numNodes)+2+i1]); |
797 |
|
FSCANF_CHECK(scan_ret, "Finley_Mesh_read") |
798 |
|
} |
799 |
|
scan_ret = fscanf(fileHandle_p, "\n"); |
800 |
|
FSCANF_CHECK(scan_ret, "Finley_Mesh_read") |
801 |
totalEle++; |
totalEle++; |
802 |
chunkEle++; |
chunkEle++; |
803 |
} |
} |
860 |
long cur_pos, end_pos; |
long cur_pos, end_pos; |
861 |
if (mpi_info->rank == 0) { /* Master */ |
if (mpi_info->rank == 0) { /* Master */ |
862 |
/* Read the word 'Tag' */ |
/* Read the word 'Tag' */ |
863 |
if (! feof(fileHandle_p)) fscanf(fileHandle_p, "%s\n", name); |
if (! feof(fileHandle_p)) { |
864 |
|
scan_ret = fscanf(fileHandle_p, "%s\n", name); |
865 |
|
FSCANF_CHECK(scan_ret, "Finley_Mesh_read") |
866 |
|
} |
867 |
/* Read rest of file in one chunk, after using seek to find length */ |
/* Read rest of file in one chunk, after using seek to find length */ |
868 |
|
|
869 |
#if defined(_WIN32) /* windows ftell lies on unix formatted text files */ |
#if defined(_WIN32) /* windows ftell lies on unix formatted text files */ |
900 |
end_pos = ftell(fileHandle_p); |
end_pos = ftell(fileHandle_p); |
901 |
fseek(fileHandle_p, (long)cur_pos, SEEK_SET); |
fseek(fileHandle_p, (long)cur_pos, SEEK_SET); |
902 |
remainder = TMPMEMALLOC(end_pos-cur_pos+1, char); |
remainder = TMPMEMALLOC(end_pos-cur_pos+1, char); |
903 |
if (! feof(fileHandle_p)) fread(remainder, (size_t) end_pos-cur_pos, sizeof(char), fileHandle_p); |
if (! feof(fileHandle_p)) { |
904 |
|
scan_ret = fread(remainder, (size_t) end_pos-cur_pos, sizeof(char), fileHandle_p); |
905 |
|
FSCANF_CHECK(scan_ret, "Finley_Mesh_read") |
906 |
|
} |
907 |
remainder[end_pos-cur_pos] = 0; |
remainder[end_pos-cur_pos] = 0; |
908 |
#endif |
#endif |
909 |
len = strlen(remainder); |
len = strlen(remainder); |