FrontISTR 5.2.0
Large-scale structural analysis program with finit element method
Loading...
Searching...
No Matches
hecmw_ucd_print.c
Go to the documentation of this file.
1/*****************************************************************************
2 * Copyright (c) 2019 FrontISTR Commons
3 * This software is released under the MIT License, see LICENSE.txt
4 *****************************************************************************/
5
6#include <stdio.h>
7#include <stdlib.h>
8#include <errno.h>
10#include "hecmw_struct.h"
11#include "hecmw_result.h"
12#include "hecmw_util.h"
13#include "hecmw_etype.h"
14#include "hecmw_ucd_print.h"
15
16static int conv_index_ucd2hec_rod1[] = {0, 1};
17
18static int conv_index_ucd2hec_rod2[] = {0, -1, 2};
19
20static int conv_index_ucd2hec_tri1[] = {0, 1, 2};
21
22static int conv_index_ucd2hec_tri2[] = {0, 1, 2, -1, -1, -1};
23
24static int conv_index_ucd2hec_qua1[] = {0, 1, 2, 3};
25
26static int conv_index_ucd2hec_qua2[] = {0, 1, 2, 3, -1, -1, -1, -1};
27
28static int conv_index_ucd2hec_tet1[] = {0, 3, 2, 1};
29
30static int conv_index_ucd2hec_tet2[] = {0, 3, 2, 1, -1, -1, -1, -1, -1, -1};
31
32static int conv_index_ucd2hec_pri1[] = {3, 4, 5, 0, 1, 2};
33
34static int conv_index_ucd2hec_pri2[] = {3, 4, 5, 0, 1, 2, -1, -1,
35 -1, -1, -1, -1, -1, -1, -1};
36
37static int conv_index_ucd2hec_hex1[] = {4, 5, 6, 7, 0, 1, 2, 3};
38
39static int conv_index_ucd2hec_hex2[] = {4, 5, 6, 7, 0, 1, 2, 3, -1, -1,
40 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1};
41
42static int conv_index_ucd2hec_pyr1[] = {4, 0, 1, 2, 3};
43
44static int conv_index_ucd2hec_pyr2[] = {4, 0, 1, 2, 3, -1, -1,
45 -1, -1, -1, -1, -1, -1};
46
47static int conv_index_ucd2hec_mst1[] = {0, 1, 2, 3};
48
49static int conv_index_ucd2hec_mst2[] = {0, 1, 2, 3, -1, -1, -1, -1};
50
51static int conv_index_ucd2hec_msq1[] = {0, 1, 2, 3, 4};
52
53static int conv_index_ucd2hec_msq2[] = {0, 1, 2, 3, 4, -1, -1, -1, -1};
54
55static int conv_index_ucd2hec_jtt1[] = {3, 4, 5, 0, 1, 2};
56
57static int conv_index_ucd2hec_jtt2[] = {3, 4, 5, 0, 1, 2,
58 -1, -1, -1, -1, -1, -1};
59
60static int conv_index_ucd2hec_jtq1[] = {4, 5, 6, 7, 0, 1, 2, 3};
61
62static int conv_index_ucd2hec_jtq2[] = {4, 5, 6, 7, 0, 1, 2, 3,
63 -1, -1, -1, -1, -1, -1, -1, -1};
64
65#if 0
66static int conv_index_ucd2hec_bem1[] = {
67 0, 1
68};
69
70static int conv_index_ucd2hec_bem2[] = {
71 0, -1, 1
72};
73#endif
74
75static int conv_index_ucd2hec_sht1[] = {0, 1, 2};
76
77static int conv_index_ucd2hec_sht2[] = {0, 1, 2, -1, -1, -1};
78
79static int conv_index_ucd2hec_shq1[] = {0, 1, 2, 3};
80
81static int conv_index_ucd2hec_shq2[] = {0, 1, 2, 3, -1, -1, -1, -1};
82
83static int conv_index_ucd2hec_ln[] = {0, 1};
84
85static int conv_index_ucd2hec_ptt1[] = {0, 1, 2};
86
87static int conv_index_ucd2hec_ptt2[] = {0, 1, 2, -1, -1, -1};
88
89static int conv_index_ucd2hec_ptq1[] = {0, 1, 2, 3};
90
91static int conv_index_ucd2hec_ptq2[] = {0, 1, 2, 3, -1, -1, -1, -1};
92
93static int ucd_print(const struct hecmwST_local_mesh *mesh,
94 const struct hecmwST_result_data *result,
95 const char *ofname, int flag_oldUCD) {
96 int nn_item = 0, ne_item = 0;
97 int node_index;
98 int i, j;
99 FILE *fp;
100
101 if (mesh == NULL) {
103 return 1;
104 }
105 if (result == NULL) {
106 HECMW_print_msg(HECMW_LOG_WARN, HECMW_ALL_E0101, "result data is not set");
107 return 1;
108 }
109 if (ofname == NULL) {
111 "output file name is not set");
112 return 1;
113 }
114
115 if ((fp = fopen(ofname, "w")) == NULL) {
116 HECMW_set_error(errno, "");
117 return -1;
118 }
119
120 for (nn_item = 0, i = 0; i < result->nn_component; i++) {
121 nn_item += result->nn_dof[i];
122 }
123 for (ne_item = 0, i = 0; i < result->ne_component; i++) {
124 ne_item += result->ne_dof[i];
125 }
126
127 if (flag_oldUCD) {
128 fprintf(fp, "%d %d %d %d 0\n", mesh->n_node, mesh->n_elem, nn_item,
129 ne_item);
130 } else {
131 /* comment part */
132 fprintf(fp, "# File Format : multi-step UCD data for unstructured mesh\n");
133 fprintf(fp, "# created by HEC-MW ( %s )\n", HECMW_get_date());
134
135 /* header part */
136 fprintf(fp, "%d\n", 1);
137 fprintf(fp, "data\n");
138 fprintf(fp, "step%d\n", 1);
139 fprintf(fp, "%d %d\n", mesh->n_node, mesh->n_elem);
140 }
141
142 /* nodal information */
143 for (i = 0; i < mesh->n_node; i++) {
144 fprintf(fp, "%d %.7lE %.7lE %.7lE\n", i + 1, mesh->node[3 * i],
145 mesh->node[3 * i + 1], mesh->node[3 * i + 2]);
146 }
147
148 /* element information */
149 for (i = 0; i < mesh->n_elem; i++) {
150 switch (mesh->elem_type[i]) {
151 case HECMW_ETYPE_ROD1:
152 fprintf(fp, "%d %d %s", i + 1, 0,
154 node_index = mesh->elem_node_index[i];
155 for (j = 0; j < HECMW_MAX_NODE_ROD1; j++) {
156 if (conv_index_ucd2hec_rod1[j] >= 0) {
157 fprintf(
158 fp, " %d",
159 mesh->elem_node_item[node_index + conv_index_ucd2hec_rod1[j]]);
160 }
161 }
162 break;
163
164 case HECMW_ETYPE_ROD2:
165 fprintf(fp, "%d %d %s", i + 1, 0,
167 node_index = mesh->elem_node_index[i];
168 for (j = 0; j < HECMW_MAX_NODE_ROD2; j++) {
169 if (conv_index_ucd2hec_rod2[j] >= 0) {
170 fprintf(
171 fp, " %d",
172 mesh->elem_node_item[node_index + conv_index_ucd2hec_rod2[j]]);
173 }
174 }
175 break;
176
177 case HECMW_ETYPE_TRI1:
178 fprintf(fp, "%d %d %s", i + 1, 0,
180 node_index = mesh->elem_node_index[i];
181 for (j = 0; j < HECMW_MAX_NODE_TRI1; j++) {
182 if (conv_index_ucd2hec_tri1[j] >= 0) {
183 fprintf(
184 fp, " %d",
185 mesh->elem_node_item[node_index + conv_index_ucd2hec_tri1[j]]);
186 }
187 }
188 break;
189
190 case HECMW_ETYPE_TRI2:
191 fprintf(fp, "%d %d %s", i + 1, 0,
193 node_index = mesh->elem_node_index[i];
194 for (j = 0; j < HECMW_MAX_NODE_TRI2; j++) {
195 if (conv_index_ucd2hec_tri2[j] >= 0) {
196 fprintf(
197 fp, " %d",
198 mesh->elem_node_item[node_index + conv_index_ucd2hec_tri2[j]]);
199 }
200 }
201 break;
202
203 case HECMW_ETYPE_QUA1:
204 fprintf(fp, "%d %d %s", i + 1, 0,
206 node_index = mesh->elem_node_index[i];
207 for (j = 0; j < HECMW_MAX_NODE_QUA1; j++) {
208 if (conv_index_ucd2hec_qua1[j] >= 0) {
209 fprintf(
210 fp, " %d",
211 mesh->elem_node_item[node_index + conv_index_ucd2hec_qua1[j]]);
212 }
213 }
214 break;
215
216 case HECMW_ETYPE_QUA2:
217 fprintf(fp, "%d %d %s", i + 1, 0,
219 node_index = mesh->elem_node_index[i];
220 for (j = 0; j < HECMW_MAX_NODE_QUA2; j++) {
221 if (conv_index_ucd2hec_qua2[j] >= 0) {
222 fprintf(
223 fp, " %d",
224 mesh->elem_node_item[node_index + conv_index_ucd2hec_qua2[j]]);
225 }
226 }
227 break;
228
229 case HECMW_ETYPE_TET1:
230 fprintf(fp, "%d %d %s", i + 1, 0,
232 node_index = mesh->elem_node_index[i];
233 for (j = 0; j < HECMW_MAX_NODE_TET1; j++) {
234 if (conv_index_ucd2hec_tet1[j] >= 0) {
235 fprintf(
236 fp, " %d",
237 mesh->elem_node_item[node_index + conv_index_ucd2hec_tet1[j]]);
238 }
239 }
240 break;
241
242 case HECMW_ETYPE_TET2:
243 fprintf(fp, "%d %d %s", i + 1, 0,
245 node_index = mesh->elem_node_index[i];
246 for (j = 0; j < HECMW_MAX_NODE_TET2; j++) {
247 if (conv_index_ucd2hec_tet2[j] >= 0) {
248 fprintf(
249 fp, " %d",
250 mesh->elem_node_item[node_index + conv_index_ucd2hec_tet2[j]]);
251 }
252 }
253 break;
254
255 case HECMW_ETYPE_PRI1:
256 fprintf(fp, "%d %d %s", i + 1, 0,
258 node_index = mesh->elem_node_index[i];
259 for (j = 0; j < HECMW_MAX_NODE_PRI1; j++) {
260 if (conv_index_ucd2hec_pri1[j] >= 0) {
261 fprintf(
262 fp, " %d",
263 mesh->elem_node_item[node_index + conv_index_ucd2hec_pri1[j]]);
264 }
265 }
266 break;
267
268 case HECMW_ETYPE_PRI2:
269 fprintf(fp, "%d %d %s", i + 1, 0,
271 node_index = mesh->elem_node_index[i];
272 for (j = 0; j < HECMW_MAX_NODE_PRI2; j++) {
273 if (conv_index_ucd2hec_pri2[j] >= 0) {
274 fprintf(
275 fp, " %d",
276 mesh->elem_node_item[node_index + conv_index_ucd2hec_pri2[j]]);
277 }
278 }
279 break;
280
281 case HECMW_ETYPE_HEX1:
282 fprintf(fp, "%d %d %s", i + 1, 0,
284 node_index = mesh->elem_node_index[i];
285 for (j = 0; j < HECMW_MAX_NODE_HEX1; j++) {
286 if (conv_index_ucd2hec_hex1[j] >= 0) {
287 fprintf(
288 fp, " %d",
289 mesh->elem_node_item[node_index + conv_index_ucd2hec_hex1[j]]);
290 }
291 }
292 break;
293
294 case HECMW_ETYPE_HEX2:
295 fprintf(fp, "%d %d %s", i + 1, 0,
297 node_index = mesh->elem_node_index[i];
298 for (j = 0; j < HECMW_MAX_NODE_HEX2; j++) {
299 if (conv_index_ucd2hec_hex2[j] >= 0) {
300 fprintf(
301 fp, " %d",
302 mesh->elem_node_item[node_index + conv_index_ucd2hec_hex2[j]]);
303 }
304 }
305 break;
306
307 case HECMW_ETYPE_PYR1:
308 fprintf(fp, "%d %d %s", i + 1, 0,
310 node_index = mesh->elem_node_index[i];
311 for (j = 0; j < HECMW_MAX_NODE_PYR1; j++) {
312 if (conv_index_ucd2hec_pyr1[j] >= 0) {
313 fprintf(
314 fp, " %d",
315 mesh->elem_node_item[node_index + conv_index_ucd2hec_pyr1[j]]);
316 }
317 }
318 break;
319
320 case HECMW_ETYPE_PYR2:
321 fprintf(fp, "%d %d %s", i + 1, 0,
323 node_index = mesh->elem_node_index[i];
324 for (j = 0; j < HECMW_MAX_NODE_PYR2; j++) {
325 if (conv_index_ucd2hec_pyr2[j] >= 0) {
326 fprintf(
327 fp, " %d",
328 mesh->elem_node_item[node_index + conv_index_ucd2hec_pyr2[j]]);
329 }
330 }
331 break;
332
333 case HECMW_ETYPE_MST1:
334 fprintf(fp, "%d %d %s", i + 1, 0,
336 node_index = mesh->elem_node_index[i];
337 for (j = 0; j < HECMW_MAX_NODE_MST1; j++) {
338 if (conv_index_ucd2hec_mst1[j] >= 0) {
339 fprintf(
340 fp, " %d",
341 mesh->elem_node_item[node_index + conv_index_ucd2hec_mst1[j]]);
342 }
343 }
344 break;
345
346 case HECMW_ETYPE_MST2:
347 fprintf(fp, "%d %d %s", i + 1, 0,
349 node_index = mesh->elem_node_index[i];
350 for (j = 0; j < HECMW_MAX_NODE_MST2; j++) {
351 if (conv_index_ucd2hec_mst2[j] >= 0) {
352 fprintf(
353 fp, " %d",
354 mesh->elem_node_item[node_index + conv_index_ucd2hec_mst2[j]]);
355 }
356 }
357 break;
358
359 case HECMW_ETYPE_MSQ1:
360 fprintf(fp, "%d %d %s", i + 1, 0,
362 node_index = mesh->elem_node_index[i];
363 for (j = 0; j < HECMW_MAX_NODE_MSQ1; j++) {
364 if (conv_index_ucd2hec_msq1[j] >= 0) {
365 fprintf(
366 fp, " %d",
367 mesh->elem_node_item[node_index + conv_index_ucd2hec_msq1[j]]);
368 }
369 }
370 break;
371
372 case HECMW_ETYPE_MSQ2:
373 fprintf(fp, "%d %d %s", i + 1, 0,
375 node_index = mesh->elem_node_index[i];
376 for (j = 0; j < HECMW_MAX_NODE_MSQ2; j++) {
377 if (conv_index_ucd2hec_msq2[j] >= 0) {
378 fprintf(
379 fp, " %d",
380 mesh->elem_node_item[node_index + conv_index_ucd2hec_msq2[j]]);
381 }
382 }
383 break;
384
385 case HECMW_ETYPE_JTB1:
386 fprintf(fp, "%d %d %s", i + 1, 0,
388 node_index = mesh->elem_node_index[i];
389 for (j = 0; j < HECMW_MAX_NODE_JTB1; j++) {
390 if (conv_index_ucd2hec_rod1[j] >= 0) {
391 fprintf(
392 fp, " %d",
393 mesh->elem_node_item[node_index + conv_index_ucd2hec_rod1[j]]);
394 }
395 }
396 break;
397
398 case HECMW_ETYPE_JTT1:
399 fprintf(fp, "%d %d %s", i + 1, 0,
401 node_index = mesh->elem_node_index[i];
402 for (j = 0; j < HECMW_MAX_NODE_JTT1; j++) {
403 if (conv_index_ucd2hec_jtt1[j] >= 0) {
404 fprintf(
405 fp, " %d",
406 mesh->elem_node_item[node_index + conv_index_ucd2hec_jtt1[j]]);
407 }
408 }
409 break;
410
411 case HECMW_ETYPE_JTT2:
412 fprintf(fp, "%d %d %s", i + 1, 0,
414 node_index = mesh->elem_node_index[i];
415 for (j = 0; j < HECMW_MAX_NODE_JTT2; j++) {
416 if (conv_index_ucd2hec_jtt2[j] >= 0) {
417 fprintf(
418 fp, " %d",
419 mesh->elem_node_item[node_index + conv_index_ucd2hec_jtt2[j]]);
420 }
421 }
422 break;
423
424 case HECMW_ETYPE_JTQ1:
425 fprintf(fp, "%d %d %s", i + 1, 0,
427 node_index = mesh->elem_node_index[i];
428 for (j = 0; j < HECMW_MAX_NODE_JTQ1; j++) {
429 if (conv_index_ucd2hec_jtq1[j] >= 0) {
430 fprintf(
431 fp, " %d",
432 mesh->elem_node_item[node_index + conv_index_ucd2hec_jtq1[j]]);
433 }
434 }
435 break;
436
437 case HECMW_ETYPE_JTQ2:
438 fprintf(fp, "%d %d %s", i + 1, 0,
440 node_index = mesh->elem_node_index[i];
441 for (j = 0; j < HECMW_MAX_NODE_JTQ2; j++) {
442 if (conv_index_ucd2hec_jtq2[j] >= 0) {
443 fprintf(
444 fp, " %d",
445 mesh->elem_node_item[node_index + conv_index_ucd2hec_jtq2[j]]);
446 }
447 }
448 break;
449
450 case HECMW_ETYPE_SHT1:
451 fprintf(fp, "%d %d %s", i + 1, 0,
453 node_index = mesh->elem_node_index[i];
454 for (j = 0; j < HECMW_MAX_NODE_SHT1; j++) {
455 if (conv_index_ucd2hec_sht1[j] >= 0) {
456 fprintf(
457 fp, " %d",
458 mesh->elem_node_item[node_index + conv_index_ucd2hec_sht1[j]]);
459 }
460 }
461 break;
462
463 case HECMW_ETYPE_SHT2:
464 fprintf(fp, "%d %d %s", i + 1, 0,
466 node_index = mesh->elem_node_index[i];
467 for (j = 0; j < HECMW_MAX_NODE_SHT2; j++) {
468 if (conv_index_ucd2hec_sht2[j] >= 0) {
469 fprintf(
470 fp, " %d",
471 mesh->elem_node_item[node_index + conv_index_ucd2hec_sht2[j]]);
472 }
473 }
474 break;
475
476 case HECMW_ETYPE_SHQ1:
477 fprintf(fp, "%d %d %s", i + 1, 0,
479 node_index = mesh->elem_node_index[i];
480 for (j = 0; j < HECMW_MAX_NODE_SHQ1; j++) {
481 if (conv_index_ucd2hec_shq1[j] >= 0) {
482 fprintf(
483 fp, " %d",
484 mesh->elem_node_item[node_index + conv_index_ucd2hec_shq1[j]]);
485 }
486 }
487 break;
488
489 case HECMW_ETYPE_SHQ2:
490 fprintf(fp, "%d %d %s", i + 1, 0,
492 node_index = mesh->elem_node_index[i];
493 for (j = 0; j < HECMW_MAX_NODE_SHQ2; j++) {
494 if (conv_index_ucd2hec_shq2[j] >= 0) {
495 fprintf(
496 fp, " %d",
497 mesh->elem_node_item[node_index + conv_index_ucd2hec_shq2[j]]);
498 }
499 }
500 break;
501
502 case HECMW_ETYPE_LN11:
503 case HECMW_ETYPE_LN12:
504 case HECMW_ETYPE_LN13:
505 case HECMW_ETYPE_LN14:
506 case HECMW_ETYPE_LN15:
507 case HECMW_ETYPE_LN16:
508 case HECMW_ETYPE_LN21:
509 case HECMW_ETYPE_LN22:
510 case HECMW_ETYPE_LN23:
511 case HECMW_ETYPE_LN24:
512 case HECMW_ETYPE_LN25:
513 case HECMW_ETYPE_LN26:
514 case HECMW_ETYPE_LN31:
515 case HECMW_ETYPE_LN32:
516 case HECMW_ETYPE_LN33:
517 case HECMW_ETYPE_LN34:
518 case HECMW_ETYPE_LN35:
519 case HECMW_ETYPE_LN36:
520 case HECMW_ETYPE_LN41:
521 case HECMW_ETYPE_LN42:
522 case HECMW_ETYPE_LN43:
523 case HECMW_ETYPE_LN44:
524 case HECMW_ETYPE_LN45:
525 case HECMW_ETYPE_LN46:
526 case HECMW_ETYPE_LN51:
527 case HECMW_ETYPE_LN52:
528 case HECMW_ETYPE_LN53:
529 case HECMW_ETYPE_LN54:
530 case HECMW_ETYPE_LN55:
531 case HECMW_ETYPE_LN56:
532 case HECMW_ETYPE_LN61:
533 case HECMW_ETYPE_LN62:
534 case HECMW_ETYPE_LN63:
535 case HECMW_ETYPE_LN64:
536 case HECMW_ETYPE_LN65:
537 case HECMW_ETYPE_LN66:
538 fprintf(fp, "%d %d %s", i + 1, 0,
540 node_index = mesh->elem_node_index[i];
541 for (j = 0; j < HECMW_MAX_NODE_LN11; j++) {
542 if (conv_index_ucd2hec_ln[j] >= 0) {
543 fprintf(
544 fp, " %d",
545 mesh->elem_node_item[node_index + conv_index_ucd2hec_ln[j]]);
546 }
547 }
548 break;
549
550 case HECMW_ETYPE_PTT1:
551 fprintf(fp, "%d %d %s", i + 1, 0,
553 node_index = mesh->elem_node_index[i];
554 for (j = 0; j < HECMW_MAX_NODE_PTT1; j++) {
555 if (conv_index_ucd2hec_ptt1[j] >= 0) {
556 fprintf(
557 fp, " %d",
558 mesh->elem_node_item[node_index + conv_index_ucd2hec_ptt1[j]]);
559 }
560 }
561 break;
562
563 case HECMW_ETYPE_PTT2:
564 fprintf(fp, "%d %d %s", i + 1, 0,
566 node_index = mesh->elem_node_index[i];
567 for (j = 0; j < HECMW_MAX_NODE_PTT2; j++) {
568 if (conv_index_ucd2hec_ptt2[j] >= 0) {
569 fprintf(
570 fp, " %d",
571 mesh->elem_node_item[node_index + conv_index_ucd2hec_ptt2[j]]);
572 }
573 }
574 break;
575
576 case HECMW_ETYPE_PTQ1:
577 fprintf(fp, "%d %d %s", i + 1, 0,
579 node_index = mesh->elem_node_index[i];
580 for (j = 0; j < HECMW_MAX_NODE_PTQ1; j++) {
581 if (conv_index_ucd2hec_ptq1[j] >= 0) {
582 fprintf(
583 fp, " %d",
584 mesh->elem_node_item[node_index + conv_index_ucd2hec_ptq1[j]]);
585 }
586 }
587 break;
588
589 case HECMW_ETYPE_PTQ2:
590 fprintf(fp, "%d %d %s", i + 1, 0,
592 node_index = mesh->elem_node_index[i];
593 for (j = 0; j < HECMW_MAX_NODE_PTQ2; j++) {
594 if (conv_index_ucd2hec_ptq2[j] >= 0) {
595 fprintf(
596 fp, " %d",
597 mesh->elem_node_item[node_index + conv_index_ucd2hec_ptq2[j]]);
598 }
599 }
600 break;
601
602 default:
603 return -1;
604 }
605 fprintf(fp, "\n");
606 }
607
608 /* data part */
609 if (!flag_oldUCD) {
610 fprintf(fp, "%d %d\n", nn_item, ne_item);
611 }
612
613 if (result->nn_component > 0) {
614 fprintf(fp, "%d", result->nn_component);
615 for (i = 0; i < result->nn_component; i++) {
616 fprintf(fp, " %d", result->nn_dof[i]);
617 }
618 fprintf(fp, "\n");
619
620 for (i = 0; i < result->nn_component; i++) {
621 fprintf(fp, "%s, unit_unknown\n", result->node_label[i]);
622 }
623
624 for (i = 0; i < mesh->n_node; i++) {
625 fprintf(fp, "%d", i + 1);
626 for (j = 0; j < nn_item; j++) {
627 fprintf(fp, " %.7lE", result->node_val_item[nn_item * i + j]);
628 }
629 fprintf(fp, "\n");
630 }
631 }
632
633 if (result->ne_component > 0) {
634 fprintf(fp, "%d", result->ne_component);
635 for (i = 0; i < result->ne_component; i++) {
636 fprintf(fp, " %d", result->ne_dof[i]);
637 }
638 fprintf(fp, "\n");
639
640 for (i = 0; i < result->ne_component; i++) {
641 fprintf(fp, "%s, unit_unknown\n", result->elem_label[i]);
642 }
643
644 for (i = 0; i < mesh->n_elem; i++) {
645 fprintf(fp, "%d", i + 1);
646 for (j = 0; j < ne_item; j++) {
647 fprintf(fp, " %.7lE", result->elem_val_item[ne_item * i + j]);
648 }
649 fprintf(fp, "\n");
650 }
651 }
652
653 fclose(fp);
654
655 return 0;
656}
657
658extern int HECMW_ucd_print(const struct hecmwST_local_mesh *mesh,
659 const struct hecmwST_result_data *result,
660 const char *ofname) {
661 int flag_oldUCD = 0;
662 return ucd_print(mesh, result, ofname, flag_oldUCD);
663}
664
665extern int HECMW_ucd_legacy_print(const struct hecmwST_local_mesh *mesh,
666 const struct hecmwST_result_data *result,
667 const char *ofname) {
668 int flag_oldUCD = 1;
669 return ucd_print(mesh, result, ofname, flag_oldUCD);
670}
#define HECMW_MAX_NODE_LN11
#define HECMW_ETYPE_PRI1
#define HECMW_ETYPE_PRI2
#define HECMW_ETYPE_LN24
#define HECMW_ETYPE_MST1
#define HECMW_MAX_NODE_PTT1
#define HECMW_MAX_NODE_SHT2
#define HECMW_MAX_NODE_MSQ1
#define HECMW_ETYPE_LN54
#define HECMW_ETYPE_LN51
#define HECMW_ETYPE_LN15
#define HECMW_ETYPE_JTB1
#define HECMW_ETYPE_PYR1
#define HECMW_MAX_NODE_TET2
#define HECMW_ETYPE_LN66
#define HECMW_ETYPE_LN65
#define HECMW_ETYPE_LN11
#define HECMW_ETYPE_LN43
#define HECMW_ETYPE_QUA2
#define HECMW_MAX_NODE_SHQ2
#define HECMW_ETYPE_LN42
#define HECMW_MAX_NODE_ROD2
#define HECMW_ETYPE_LN32
#define HECMW_MAX_NODE_PYR2
#define HECMW_MAX_NODE_MST2
#define HECMW_MAX_NODE_JTT1
#define HECMW_MAX_NODE_QUA1
#define HECMW_ETYPE_LN55
#define HECMW_MAX_NODE_TET1
#define HECMW_ETYPE_MSQ2
#define HECMW_ETYPE_LN61
#define HECMW_ETYPE_JTQ2
#define HECMW_ETYPE_LN22
#define HECMW_ETYPE_SHQ1
#define HECMW_ETYPE_SHT1
#define HECMW_ETYPE_TET2
#define HECMW_MAX_NODE_PRI2
#define HECMW_MAX_NODE_PTQ1
#define HECMW_MAX_NODE_PRI1
#define HECMW_ETYPE_PTQ1
#define HECMW_ETYPE_JTT2
#define HECMW_ETYPE_PTT1
#define HECMW_ETYPE_LN26
#define HECMW_ETYPE_LN33
#define HECMW_ETYPE_LN53
#define HECMW_ETYPE_LN64
#define HECMW_MAX_NODE_PTQ2
#define HECMW_ETYPE_LN13
#define HECMW_ETYPE_LN46
#define HECMW_MAX_NODE_HEX1
#define HECMW_ETYPE_SHT2
#define HECMW_ETYPE_LN34
#define HECMW_MAX_NODE_TRI1
#define HECMW_MAX_NODE_PYR1
#define HECMW_ETYPE_TRI1
#define HECMW_ETYPE_LN41
#define HECMW_ETYPE_ROD2
#define HECMW_MAX_NODE_HEX2
#define HECMW_ETYPE_HEX1
#define HECMW_MAX_NODE_QUA2
#define HECMW_ETYPE_JTT1
#define HECMW_ETYPE_ROD1
#define HECMW_MAX_NODE_TRI2
#define HECMW_ETYPE_LN62
#define HECMW_ETYPE_LN45
#define HECMW_ETYPE_JTQ1
#define HECMW_ETYPE_QUA1
#define HECMW_MAX_NODE_PTT2
#define HECMW_ETYPE_LN35
#define HECMW_MAX_NODE_ROD1
#define HECMW_ETYPE_LN63
#define HECMW_ETYPE_LN25
#define HECMW_ETYPE_PYR2
#define HECMW_MAX_NODE_SHQ1
#define HECMW_ETYPE_LN36
#define HECMW_ETYPE_TET1
#define HECMW_ETYPE_LN52
#define HECMW_ETYPE_LN16
#define HECMW_ETYPE_LN12
#define HECMW_ETYPE_MSQ1
#define HECMW_MAX_NODE_MST1
#define HECMW_ETYPE_LN23
#define HECMW_MAX_NODE_JTQ2
#define HECMW_ETYPE_HEX2
#define HECMW_ETYPE_TRI2
#define HECMW_ETYPE_PTT2
#define HECMW_ETYPE_LN31
#define HECMW_MAX_NODE_MSQ2
#define HECMW_MAX_NODE_JTT2
#define HECMW_ETYPE_LN21
#define HECMW_MAX_NODE_JTB1
#define HECMW_ETYPE_PTQ2
#define HECMW_ETYPE_LN56
#define HECMW_ETYPE_LN44
#define HECMW_ETYPE_MST2
#define HECMW_ETYPE_SHQ2
#define HECMW_MAX_NODE_SHT1
#define HECMW_ETYPE_LN14
#define HECMW_MAX_NODE_JTQ1
struct hecmwST_local_mesh * mesh
Definition: hecmw_repart.h:71
int HECMW_set_error(int errorno, const char *fmt,...)
Definition: hecmw_error.c:37
char * HECMW_get_ucd_label(int etype)
Definition: hecmw_etype.c:1216
#define NULL
#define HECMW_LOG_WARN
Definition: hecmw_log.h:17
#define HECMW_ALL_E0101
Definition: hecmw_msgno.h:12
int HECMW_ucd_legacy_print(const struct hecmwST_local_mesh *mesh, const struct hecmwST_result_data *result, const char *ofname)
int HECMW_ucd_print(const struct hecmwST_local_mesh *mesh, const struct hecmwST_result_data *result, const char *ofname)
char * HECMW_get_date(void)
Definition: hecmw_util.c:29
void HECMW_print_msg(int loglv, int msgno, const char *fmt,...)
Definition: hecmw_util.c:138
double * elem_val_item
Definition: hecmw_result.h:23
double * node_val_item
Definition: hecmw_result.h:22