23 int myrank, petot, steptot;
24 int n_node, n_elem, shift, etype;
25 int data_tot_n, data_tot_e;
26 int table342[10] = {0, 1, 2, 3, 6, 4, 5, 7, 8, 9};
38 for(i=0; i<
data->nn_component; i++){
39 data_tot_n +=
data->nn_dof[i];
42 for(i=0; i<
data->ne_component; i++){
43 data_tot_e +=
data->ne_dof[i];
46 p = strrchr(outfile, (
int)(
unsigned char)
'/');
51 sprintf(file_vtu,
"%s/%s.%d.vtu", outfile1, outfile,
myrank);
58 sprintf(file_pvtu,
"%s.pvtu", outfile1);
59 outfp = fopen (file_pvtu,
"w");
60 fprintf (outfp,
"<?xml version=\"1.0\"?>\n");
61 fprintf (outfp,
"<VTKFile type=\"PUnstructuredGrid\" version=\"1.0\" byte_order=\"%s\">\n",
HECMW_endian_str());
62 fprintf (outfp,
"<PUnstructuredGrid>\n");
63 for(i=0; i<
data->ng_component; i++){
64 fprintf (outfp,
"<PDataArray type=\"Float32\" Name=\"%s\" NumberOfTuples=\"%d\"/>\n",
data->global_label[i],
data->ng_dof[i]);
66 fprintf (outfp,
"<PPoints>\n");
67 fprintf (outfp,
"<PDataArray type=\"Float32\" NumberOfComponents=\"3\"/>\n");
68 fprintf (outfp,
"</PPoints>\n");
69 fprintf (outfp,
"<PCells>\n");
70 fprintf (outfp,
"<PDataArray type=\"Int32\" Name=\"connectivity\" format=\"ascii\"/>\n");
71 fprintf (outfp,
"<PDataArray type=\"Int32\" Name=\"offsets\" format=\"ascii\"/>\n");
72 fprintf (outfp,
"<PDataArray type=\"UInt8\" Name=\"types\" format=\"ascii\"/>\n");
73 fprintf (outfp,
"</PCells>\n");
74 fprintf (outfp,
"<PPointData>\n");
75 for(i=0; i<
data->nn_component; i++){
76 fprintf (outfp,
"<PDataArray type=\"Float32\" Name=\"%s\" NumberOfComponents=\"%d\" format=\"ascii\"/>\n",
data->node_label[i],
data->nn_dof[i]);
78 fprintf (outfp,
"</PPointData>\n");
79 fprintf (outfp,
"<PCellData>\n");
80 fprintf (outfp,
"<PDataArray type=\"Int16\" Name=\"Mesh_Type\" NumberOfComponents=\"1\" format=\"ascii\"/>\n");
81 for(i=0; i<
data->ne_component; i++){
82 fprintf (outfp,
"<PDataArray type=\"Float32\" Name=\"%s\" NumberOfComponents=\"%d\" format=\"ascii\"/>\n",
data->elem_label[i],
data->ne_dof[i]);
84 fprintf (outfp,
"</PCellData>\n");
85 for(i=0; i<petot; i++){
86 sprintf (buf,
"./%s/%s.%d.vtu", outfile, outfile, i);
87 fprintf (outfp,
"<Piece Source=\"%s\"/>\n", buf);
89 fprintf (outfp,
"</PUnstructuredGrid>\n");
90 fprintf (outfp,
"</VTKFile>\n");
95 outfp = fopen (file_vtu,
"w");
96 fprintf (outfp,
"<?xml version=\"1.0\"?>\n");
97 fprintf (outfp,
"<VTKFile type=\"UnstructuredGrid\" version=\"1.0\">\n");
98 fprintf (outfp,
"<UnstructuredGrid>\n");
99 fprintf (outfp,
"<FieldData>\n");
100 for(i=0; i<
data->ng_component; i++){
101 fprintf (outfp,
"<DataArray type=\"Float32\" Name=\"%s\" NumberOfTuples=\"%d\" >\n",
data->global_label[i],
data->ng_dof[i]);
104 shift +=
data->ng_dof[j];
106 for(k=0; k<
data->ng_dof[i]; k++){
107 fprintf (outfp,
"%e ", (
float)
data->global_val_item[k+shift]);
109 fprintf (outfp,
"\n");
110 fprintf (outfp,
"</DataArray>\n");
112 fprintf (outfp,
"</FieldData>\n");
113 fprintf (outfp,
"<Piece NumberOfPoints=\"%d\" NumberOfCells=\"%d\">\n", n_node, n_elem);
114 fprintf (outfp,
"<Points>\n");
115 fprintf (outfp,
"<DataArray type=\"Float32\" NumberOfComponents=\"3\" format=\"ascii\">\n");
116 for(i=0; i<n_node; i++){
119 fprintf (outfp,
"</DataArray>\n");
120 fprintf (outfp,
"</Points>\n");
121 fprintf (outfp,
"<Cells>\n");
122 fprintf (outfp,
"<DataArray type=\"Int32\" Name=\"connectivity\" format=\"ascii\">\n");
123 for(i=0; i<n_elem; i++){
131 for(j=jS; j<jE-shift; j++){
135 for(j=jS; j<jE-shift; j++){
139 fprintf (outfp,
"\n");
141 fprintf (outfp,
"</DataArray>\n");
142 fprintf (outfp,
"<DataArray type=\"Int32\" Name=\"offsets\" format=\"ascii\">\n");
144 for(i=0; i<n_elem; i++){
150 fprintf (outfp,
"\n");
151 fprintf (outfp,
"</DataArray>\n");
152 fprintf (outfp,
"<DataArray type=\"UInt8\" Name=\"types\" format=\"ascii\">\n");
153 for(i=0; i<n_elem; i++){
156 fprintf (outfp,
"\n");
157 fprintf (outfp,
"</DataArray>\n");
158 fprintf (outfp,
"</Cells>\n");
159 fprintf (outfp,
"<PointData>\n");
160 for(i=0; i<
data->nn_component; i++){
161 fprintf (outfp,
"<DataArray type=\"Float32\" Name=\"%s\" NumberOfComponents=\"%d\" format=\"ascii\">\n",
data->node_label[i],
data->nn_dof[i]);
164 shift +=
data->nn_dof[j];
166 for(j=0; j<n_node; j++){
167 for(k=0; k<
data->nn_dof[i]; k++){
168 fprintf (outfp,
"%e ", (
float)
data->node_val_item[j*data_tot_n+k+shift]);
170 fprintf (outfp,
"\n");
172 fprintf (outfp,
"</DataArray>\n");
174 fprintf (outfp,
"</PointData>\n");
175 fprintf (outfp,
"<CellData>\n");
176 fprintf (outfp,
"<DataArray type=\"Int16\" Name=\"Mesh_Type\" NumberOfComponents=\"1\" format=\"ascii\">\n");
177 for(i=0; i<n_elem; i++){
180 fprintf (outfp,
"\n");
181 fprintf (outfp,
"</DataArray>\n");
182 for(i=0; i<
data->ne_component; i++){
183 fprintf (outfp,
"<DataArray type=\"Float32\" Name=\"%s\" NumberOfComponents=\"%d\" format=\"ascii\">\n",
data->elem_label[i],
data->ne_dof[i]);
186 shift +=
data->ne_dof[j];
188 for(j=0; j<n_elem; j++){
189 for(k=0; k<
data->ne_dof[i]; k++){
190 fprintf (outfp,
"%e ", (
float)
data->elem_val_item[j*data_tot_e+k+shift]);
192 fprintf (outfp,
"\n");
194 fprintf (outfp,
"</DataArray>\n");
196 fprintf (outfp,
"</CellData>\n");
197 fprintf (outfp,
"</Piece>\n");
198 fprintf (outfp,
"</UnstructuredGrid>\n");
199 fprintf (outfp,
"</VTKFile>\n");
207 int myrank, petot, steptot;
208 int n_node, n_elem, shift, etype;
209 int data_tot_n, data_tot_e, in, ioffset;
215 float val, val1, val2, val3;
219 int table342[10] = {0, 1, 2, 3, 6, 4, 5, 7, 8, 9};
228 for(i=0; i<
data->nn_component; i++){
229 data_tot_n +=
data->nn_dof[i];
232 for(i=0; i<
data->ne_component; i++){
233 data_tot_e +=
data->ne_dof[i];
236 sprintf(file_vtu,
"%s/%s.%d.vtu", outfile1, outfile,
myrank);
243 sprintf(file_pvtu,
"%s.pvtu", outfile1);
244 outfp = fopen (file_pvtu,
"wb");
245 fprintf (outfp,
"<?xml version=\"1.0\"?>\n");
246 fprintf (outfp,
"<VTKFile type=\"PUnstructuredGrid\" version=\"1.0\" byte_order=\"%s\" header_type=\"UInt32\">\n",
HECMW_endian_str());
247 fprintf (outfp,
"<PUnstructuredGrid>\n");
248 for(i=0; i<
data->ng_component; i++){
249 fprintf (outfp,
"<PDataArray type=\"Float32\" Name=\"%s\" NumberOfTuples=\"%d\"/>\n",
data->global_label[i],
data->ng_dof[i]);
251 fprintf (outfp,
"<PPoints>\n");
252 fprintf (outfp,
"<PDataArray type=\"Float32\" NumberOfComponents=\"3\"/>\n");
253 fprintf (outfp,
"</PPoints>\n");
254 fprintf (outfp,
"<PCells>\n");
255 fprintf (outfp,
"<PDataArray type=\"Int32\" Name=\"connectivity\" format=\"appended\"/>\n");
256 fprintf (outfp,
"<PDataArray type=\"Int32\" Name=\"offsets\" format=\"appended\"/>\n");
257 fprintf (outfp,
"<PDataArray type=\"Int32\" Name=\"types\" format=\"appended\"/>\n");
258 fprintf (outfp,
"</PCells>\n");
259 fprintf (outfp,
"<PPointData>\n");
260 for(i=0; i<
data->nn_component; i++){
261 fprintf (outfp,
"<PDataArray type=\"Float32\" Name=\"%s\" NumberOfComponents=\"%d\" format=\"appended\"/>\n",
data->node_label[i],
data->nn_dof[i]);
263 fprintf (outfp,
"</PPointData>\n");
264 fprintf (outfp,
"<PCellData>\n");
265 for(i=0; i<
data->ne_component; i++){
266 fprintf (outfp,
"<PDataArray type=\"Float32\" Name=\"%s\" NumberOfComponents=\"%d\" format=\"appended\"/>\n",
data->elem_label[i],
data->ne_dof[i]);
268 fprintf (outfp,
"<PDataArray type=\"Int32\" Name=\"Mesh_Type\" NumberOfComponents=\"1\" format=\"appended\"/>\n");
269 fprintf (outfp,
"</PCellData>\n");
270 for(i=0; i<petot; i++){
271 sprintf (buf,
"./%s/%s.%d.vtu", outfile, outfile, i);
272 fprintf (outfp,
"<Piece Source=\"%s\"/>\n", buf);
274 fprintf (outfp,
"</PUnstructuredGrid>\n");
275 fprintf (outfp,
"</VTKFile>\n");
281 ioffset = 5 +
data->nn_component +
data->ne_component;
285 for(i=0; i<n_elem; i++){
292 uint64 += jE-shift-jS;
296 offset[1] = offset[0] +
sizeof(int) + 3*n_node *
sizeof(
float);
297 offset[2] = offset[1] +
sizeof(int) + (
int)uint64*
sizeof(int);
298 offset[3] = offset[2] +
sizeof(int) + n_elem *
sizeof(
int);
299 offset[4] = offset[3] +
sizeof(int) + n_elem *
sizeof(
int);
300 for(i=0; i<
data->nn_component; i++){
301 offset[5+i] = offset[4+i] +
sizeof(int) +
data->nn_dof[i]*n_node*
sizeof(
int);
303 for(i=0; i<
data->ne_component; i++){
304 offset[5+
data->nn_component+i] = offset[4+
data->nn_component+i] +
sizeof(int) +
data->ne_dof[i]*n_elem*
sizeof(
int);
307 outfp = fopen (file_vtu,
"wb");
308 fprintf (outfp,
"<?xml version=\"1.0\"?>\n");
309 fprintf (outfp,
"<VTKFile type=\"UnstructuredGrid\" version=\"1.0\" byte_order=\"%s\" header_type=\"UInt32\">\n",
HECMW_endian_str());
310 fprintf (outfp,
"<UnstructuredGrid>\n");
311 fprintf (outfp,
"<FieldData>\n");
312 for(i=0; i<
data->ng_component; i++){
313 fprintf (outfp,
"<DataArray type=\"Float32\" Name=\"%s\" NumberOfTuples=\"%d\" >\n",
data->global_label[i],
data->ng_dof[i]);
316 shift +=
data->ng_dof[j];
318 for(k=0; k<
data->ng_dof[i]; k++){
319 fprintf (outfp,
"%e ", (
float)
data->global_val_item[k+shift]);
321 fprintf (outfp,
"\n");
322 fprintf (outfp,
"</DataArray>\n");
324 fprintf (outfp,
"</FieldData>\n");
325 fprintf (outfp,
"<Piece NumberOfPoints=\"%d\" NumberOfCells=\"%d\">\n", n_node, n_elem);
326 fprintf (outfp,
"<Points>\n");
327 fprintf (outfp,
"<DataArray type=\"Float32\" NumberOfComponents=\"3\" format=\"appended\" offset=\"%d\">\n", offset[0]);
328 fprintf (outfp,
"</DataArray>\n");
329 fprintf (outfp,
"</Points>\n");
330 fprintf (outfp,
"<Cells>\n");
331 fprintf (outfp,
"<DataArray type=\"Int32\" Name=\"connectivity\" format=\"appended\" offset=\"%d\">\n", offset[1]);
332 fprintf (outfp,
"</DataArray>\n");
333 fprintf (outfp,
"<DataArray type=\"Int32\" Name=\"offsets\" format=\"appended\" offset=\"%d\">\n", offset[2]);
334 fprintf (outfp,
"</DataArray>\n");
335 fprintf (outfp,
"<DataArray type=\"Int32\" Name=\"types\" format=\"appended\" offset=\"%d\">\n", offset[3]);
336 fprintf (outfp,
"</DataArray>\n");
337 fprintf (outfp,
"</Cells>\n");
338 fprintf (outfp,
"<PointData>\n");
340 for(i=0; i<
data->nn_component; i++){
341 fprintf (outfp,
"<DataArray type=\"Float32\" Name=\"%s\" NumberOfComponents=\"%d\" format=\"appended\" offset=\"%d\">\n",
data->node_label[i],
data->nn_dof[i], offset[4+i]);
342 fprintf (outfp,
"</DataArray>\n");
345 fprintf (outfp,
"</PointData>\n");
346 fprintf (outfp,
"<CellData>\n");
347 for(i=0; i<
data->ne_component; i++){
348 fprintf (outfp,
"<DataArray type=\"Float32\" Name=\"%s\" NumberOfComponents=\"%d\" format=\"appended\" offset=\"%d\">\n",
data->elem_label[i],
data->ne_dof[i], offset[4+
data->nn_component+i]);
349 fprintf (outfp,
"</DataArray>\n");
352 fprintf (outfp,
"<DataArray type=\"Int32\" Name=\"Mesh_Type\" NumberOfComponents=\"1\" format=\"appended\" offset=\"%d\">\n", offset[ioffset-1]);
353 fprintf (outfp,
"</DataArray>\n");
354 fprintf (outfp,
"</CellData>\n");
355 fprintf (outfp,
"</Piece>\n");
356 fprintf (outfp,
"</UnstructuredGrid>\n");
357 fprintf (outfp,
"<AppendedData encoding=\"raw\">\n");
359 fprintf (outfp,
" _");
360 uint32 = (uint32_t)(3*n_node*
sizeof(
float));
361 fwrite (&uint32,
sizeof(uint32), 1, outfp);
362 for(i=0; i<n_node; i++){
364 fwrite (&val,
sizeof(
float), 1, outfp);
366 fwrite (&val,
sizeof(
float), 1, outfp);
368 fwrite (&val,
sizeof(
float), 1, outfp);
371 uint32 = (uint32_t)(uint64*
sizeof(
int));
372 fwrite (&uint32,
sizeof(uint32), 1, outfp);
373 for(i=0; i<n_elem; i++){
381 for(j=jS; j<jE-shift; j++){
383 fwrite (&in,
sizeof(
int), 1, outfp);
386 for(j=jS; j<jE-shift; j++){
388 fwrite (&in,
sizeof(
int), 1, outfp);
393 uint32 = (uint32_t)(n_elem*
sizeof(
int));
394 fwrite (&uint32,
sizeof(uint32), 1, outfp);
396 for(i=0; i<n_elem; i++){
401 fwrite (&in,
sizeof(
int), 1, outfp);
404 uint32 = (uint32_t)(n_elem*
sizeof(
int));
405 fwrite (&uint32,
sizeof(uint32), 1, outfp);
406 for(i=0; i<n_elem; i++){
410 fwrite (&in,
sizeof(
int), 1, outfp);
413 for(i=0; i<
data->nn_component; i++){
414 uint32 = (uint32_t)(
data->nn_dof[i]*n_node*
sizeof(
int));
415 fwrite (&uint32,
sizeof(uint32), 1, outfp);
419 shift +=
data->nn_dof[j];
421 for(j=0; j<n_node; j++){
422 for(k=0; k<
data->nn_dof[i]; k++){
423 val = (float)
data->node_val_item[j*data_tot_n+k+shift];
424 fwrite (&val,
sizeof(
float), 1, outfp);
429 for(i=0; i<
data->ne_component; i++){
430 uint32 = (uint32_t)(
data->ne_dof[i]*n_elem*
sizeof(
int));
431 fwrite (&uint32,
sizeof(uint32), 1, outfp);
435 shift +=
data->ne_dof[j];
437 for(j=0; j<n_elem; j++){
438 for(k=0; k<
data->ne_dof[i]; k++){
439 val = (float)
data->elem_val_item[j*data_tot_e+k+shift];
440 fwrite (&val,
sizeof(
float), 1, outfp);
445 uint32 = (uint32_t)(n_elem*
sizeof(
int));
446 fwrite (&uint32,
sizeof(uint32), 1, outfp);
447 for(i=0; i<n_elem; i++){
451 fwrite (&in,
sizeof(
int), 1, outfp);
454 fprintf (outfp,
"</AppendedData>\n");
455 fprintf (outfp,
"</VTKFile>\n");