FrontISTR  5.7.0
Large-scale structural analysis program with finit element method
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>
9 #include "hecmw_common_define.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 
16 static int conv_index_ucd2hec_rod1[] = {0, 1};
17 
18 static int conv_index_ucd2hec_rod2[] = {0, -1, 2};
19 
20 static int conv_index_ucd2hec_tri1[] = {0, 1, 2};
21 
22 static int conv_index_ucd2hec_tri2[] = {0, 1, 2, -1, -1, -1};
23 
24 static int conv_index_ucd2hec_qua1[] = {0, 1, 2, 3};
25 
26 static int conv_index_ucd2hec_qua2[] = {0, 1, 2, 3, -1, -1, -1, -1};
27 
28 static int conv_index_ucd2hec_tet1[] = {0, 3, 2, 1};
29 
30 static int conv_index_ucd2hec_tet2[] = {0, 3, 2, 1, -1, -1, -1, -1, -1, -1};
31 
32 static int conv_index_ucd2hec_pri1[] = {3, 4, 5, 0, 1, 2};
33 
34 static int conv_index_ucd2hec_pri2[] = {3, 4, 5, 0, 1, 2, -1, -1,
35  -1, -1, -1, -1, -1, -1, -1};
36 
37 static int conv_index_ucd2hec_hex1[] = {4, 5, 6, 7, 0, 1, 2, 3};
38 
39 static 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 
42 static int conv_index_ucd2hec_pyr1[] = {4, 0, 1, 2, 3};
43 
44 static int conv_index_ucd2hec_pyr2[] = {4, 0, 1, 2, 3, -1, -1,
45  -1, -1, -1, -1, -1, -1};
46 
47 static int conv_index_ucd2hec_mst1[] = {0, 1, 2, 3};
48 
49 static int conv_index_ucd2hec_mst2[] = {0, 1, 2, 3, -1, -1, -1, -1};
50 
51 static int conv_index_ucd2hec_msq1[] = {0, 1, 2, 3, 4};
52 
53 static int conv_index_ucd2hec_msq2[] = {0, 1, 2, 3, 4, -1, -1, -1, -1};
54 
55 static int conv_index_ucd2hec_jtt1[] = {3, 4, 5, 0, 1, 2};
56 
57 static int conv_index_ucd2hec_jtt2[] = {3, 4, 5, 0, 1, 2,
58  -1, -1, -1, -1, -1, -1};
59 
60 static int conv_index_ucd2hec_jtq1[] = {4, 5, 6, 7, 0, 1, 2, 3};
61 
62 static 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
66 static int conv_index_ucd2hec_bem1[] = {
67  0, 1
68 };
69 
70 static int conv_index_ucd2hec_bem2[] = {
71  0, -1, 1
72 };
73 #endif
74 
75 static int conv_index_ucd2hec_sht1[] = {0, 1, 2};
76 
77 static int conv_index_ucd2hec_sht2[] = {0, 1, 2, -1, -1, -1};
78 
79 static int conv_index_ucd2hec_shq1[] = {0, 1, 2, 3};
80 
81 static int conv_index_ucd2hec_shq2[] = {0, 1, 2, 3, -1, -1, -1, -1};
82 
83 static int conv_index_ucd2hec_ln[] = {0, 1};
84 
85 static int conv_index_ucd2hec_ptt1[] = {0, 1, 2};
86 
87 static int conv_index_ucd2hec_ptt2[] = {0, 1, 2, -1, -1, -1};
88 
89 static int conv_index_ucd2hec_ptq1[] = {0, 1, 2, 3};
90 
91 static int conv_index_ucd2hec_ptq2[] = {0, 1, 2, 3, -1, -1, -1, -1};
92 
93 static 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) {
102  HECMW_print_msg(HECMW_LOG_WARN, HECMW_ALL_E0101, "mesh is not set");
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 
658 extern 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 
665 extern 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 }
HECMW_LOG_WARN
#define HECMW_LOG_WARN
Definition: hecmw_log.h:17
HECMW_MAX_NODE_JTT2
#define HECMW_MAX_NODE_JTT2
Definition: hecmw_common_define.h:330
HECMW_ETYPE_LN14
#define HECMW_ETYPE_LN14
Definition: hecmw_common_define.h:59
hecmw_etype.h
hecmwST_result_data
Definition: hecmw_result.h:11
HECMW_ETYPE_JTQ1
#define HECMW_ETYPE_JTQ1
Definition: hecmw_common_define.h:44
HECMW_ETYPE_MST1
#define HECMW_ETYPE_MST1
Definition: hecmw_common_define.h:36
HECMW_ETYPE_LN33
#define HECMW_ETYPE_LN33
Definition: hecmw_common_define.h:70
HECMW_ucd_legacy_print
int HECMW_ucd_legacy_print(const struct hecmwST_local_mesh *mesh, const struct hecmwST_result_data *result, const char *ofname)
Definition: hecmw_ucd_print.c:665
HECMW_MAX_NODE_MSQ2
#define HECMW_MAX_NODE_MSQ2
Definition: hecmw_common_define.h:326
HECMW_ETYPE_SHQ2
#define HECMW_ETYPE_SHQ2
Definition: hecmw_common_define.h:52
HECMW_ETYPE_LN22
#define HECMW_ETYPE_LN22
Definition: hecmw_common_define.h:63
HECMW_get_date
char * HECMW_get_date(void)
Definition: hecmw_util.c:29
hecmwST_local_mesh::elem_node_item
int * elem_node_item
Definition: hecmw_struct.h:196
HECMW_MAX_NODE_MST2
#define HECMW_MAX_NODE_MST2
Definition: hecmw_common_define.h:324
HECMW_ETYPE_LN51
#define HECMW_ETYPE_LN51
Definition: hecmw_common_define.h:80
HECMW_ucd_print
int HECMW_ucd_print(const struct hecmwST_local_mesh *mesh, const struct hecmwST_result_data *result, const char *ofname)
Definition: hecmw_ucd_print.c:658
HECMW_MAX_NODE_HEX1
#define HECMW_MAX_NODE_HEX1
Definition: hecmw_common_define.h:318
mesh
struct hecmwST_local_mesh * mesh
Definition: hecmw_repart.h:71
HECMW_MAX_NODE_PYR1
#define HECMW_MAX_NODE_PYR1
Definition: hecmw_common_define.h:321
HECMW_ETYPE_ROD2
#define HECMW_ETYPE_ROD2
Definition: hecmw_common_define.h:18
HECMW_ETYPE_PTT2
#define HECMW_ETYPE_PTT2
Definition: hecmw_common_define.h:93
HECMW_ETYPE_MSQ2
#define HECMW_ETYPE_MSQ2
Definition: hecmw_common_define.h:39
hecmw_result.h
hecmwST_local_mesh
Definition: hecmw_struct.h:139
HECMW_ETYPE_PRI2
#define HECMW_ETYPE_PRI2
Definition: hecmw_common_define.h:30
HECMW_ETYPE_SHQ1
#define HECMW_ETYPE_SHQ1
Definition: hecmw_common_define.h:51
HECMW_ETYPE_TRI2
#define HECMW_ETYPE_TRI2
Definition: hecmw_common_define.h:20
hecmwST_local_mesh::elem_type
int * elem_type
Definition: hecmw_struct.h:191
hecmwST_local_mesh::n_elem
int n_elem
Definition: hecmw_struct.h:184
HECMW_ETYPE_SHT2
#define HECMW_ETYPE_SHT2
Definition: hecmw_common_define.h:50
HECMW_MAX_NODE_JTT1
#define HECMW_MAX_NODE_JTT1
Definition: hecmw_common_define.h:329
HECMW_ETYPE_LN35
#define HECMW_ETYPE_LN35
Definition: hecmw_common_define.h:72
HECMW_ETYPE_PRI1
#define HECMW_ETYPE_PRI1
Definition: hecmw_common_define.h:29
HECMW_MAX_NODE_PTQ2
#define HECMW_MAX_NODE_PTQ2
Definition: hecmw_common_define.h:382
HECMW_get_ucd_label
char * HECMW_get_ucd_label(int etype)
Definition: hecmw_etype.c:1230
HECMW_MAX_NODE_JTQ1
#define HECMW_MAX_NODE_JTQ1
Definition: hecmw_common_define.h:331
HECMW_MAX_NODE_PTT2
#define HECMW_MAX_NODE_PTT2
Definition: hecmw_common_define.h:380
HECMW_ETYPE_JTB1
#define HECMW_ETYPE_JTB1
Definition: hecmw_common_define.h:40
hecmwST_result_data::ne_component
int ne_component
Definition: hecmw_result.h:17
HECMW_ETYPE_LN62
#define HECMW_ETYPE_LN62
Definition: hecmw_common_define.h:87
hecmwST_local_mesh::n_node
int n_node
Definition: hecmw_struct.h:161
hecmw_struct.h
hecmwST_local_mesh::node
double * node
Definition: hecmw_struct.h:170
HECMW_ETYPE_LN66
#define HECMW_ETYPE_LN66
Definition: hecmw_common_define.h:91
HECMW_ETYPE_LN25
#define HECMW_ETYPE_LN25
Definition: hecmw_common_define.h:66
HECMW_ETYPE_PYR2
#define HECMW_ETYPE_PYR2
Definition: hecmw_common_define.h:35
HECMW_ETYPE_QUA1
#define HECMW_ETYPE_QUA1
Definition: hecmw_common_define.h:22
HECMW_MAX_NODE_QUA2
#define HECMW_MAX_NODE_QUA2
Definition: hecmw_common_define.h:311
HECMW_ETYPE_LN55
#define HECMW_ETYPE_LN55
Definition: hecmw_common_define.h:84
HECMW_ETYPE_JTT2
#define HECMW_ETYPE_JTT2
Definition: hecmw_common_define.h:43
HECMW_ETYPE_LN16
#define HECMW_ETYPE_LN16
Definition: hecmw_common_define.h:61
HECMW_MAX_NODE_TRI2
#define HECMW_MAX_NODE_TRI2
Definition: hecmw_common_define.h:309
HECMW_ETYPE_LN56
#define HECMW_ETYPE_LN56
Definition: hecmw_common_define.h:85
HECMW_ETYPE_ROD1
#define HECMW_ETYPE_ROD1
Definition: hecmw_common_define.h:17
hecmwST_local_mesh::elem_node_index
int * elem_node_index
Definition: hecmw_struct.h:195
HECMW_ETYPE_LN13
#define HECMW_ETYPE_LN13
Definition: hecmw_common_define.h:58
HECMW_ETYPE_JTQ2
#define HECMW_ETYPE_JTQ2
Definition: hecmw_common_define.h:45
HECMW_MAX_NODE_PYR2
#define HECMW_MAX_NODE_PYR2
Definition: hecmw_common_define.h:322
hecmwST_result_data::node_val_item
double * node_val_item
Definition: hecmw_result.h:25
HECMW_ETYPE_PYR1
#define HECMW_ETYPE_PYR1
Definition: hecmw_common_define.h:34
HECMW_MAX_NODE_TET1
#define HECMW_MAX_NODE_TET1
Definition: hecmw_common_define.h:313
HECMW_ETYPE_LN64
#define HECMW_ETYPE_LN64
Definition: hecmw_common_define.h:89
HECMW_ETYPE_LN63
#define HECMW_ETYPE_LN63
Definition: hecmw_common_define.h:88
HECMW_ETYPE_MSQ1
#define HECMW_ETYPE_MSQ1
Definition: hecmw_common_define.h:38
HECMW_ETYPE_LN15
#define HECMW_ETYPE_LN15
Definition: hecmw_common_define.h:60
HECMW_MAX_NODE_JTB1
#define HECMW_MAX_NODE_JTB1
Definition: hecmw_common_define.h:327
HECMW_ETYPE_LN46
#define HECMW_ETYPE_LN46
Definition: hecmw_common_define.h:79
HECMW_ALL_E0101
#define HECMW_ALL_E0101
Definition: hecmw_msgno.h:8
hecmwST_result_data::nn_dof
int * nn_dof
Definition: hecmw_result.h:19
HECMW_ETYPE_SHT1
#define HECMW_ETYPE_SHT1
Definition: hecmw_common_define.h:49
HECMW_MAX_NODE_PTT1
#define HECMW_MAX_NODE_PTT1
Definition: hecmw_common_define.h:379
HECMW_ETYPE_LN11
#define HECMW_ETYPE_LN11
Definition: hecmw_common_define.h:56
HECMW_ETYPE_LN65
#define HECMW_ETYPE_LN65
Definition: hecmw_common_define.h:90
HECMW_MAX_NODE_SHT2
#define HECMW_MAX_NODE_SHT2
Definition: hecmw_common_define.h:337
HECMW_MAX_NODE_LN11
#define HECMW_MAX_NODE_LN11
Definition: hecmw_common_define.h:343
hecmwST_result_data::nn_component
int nn_component
Definition: hecmw_result.h:16
hecmwST_result_data::elem_label
char ** elem_label
Definition: hecmw_result.h:23
HECMW_ETYPE_LN45
#define HECMW_ETYPE_LN45
Definition: hecmw_common_define.h:78
HECMW_ETYPE_LN24
#define HECMW_ETYPE_LN24
Definition: hecmw_common_define.h:65
HECMW_ETYPE_LN36
#define HECMW_ETYPE_LN36
Definition: hecmw_common_define.h:73
HECMW_ETYPE_HEX1
#define HECMW_ETYPE_HEX1
Definition: hecmw_common_define.h:31
hecmw_ucd_print.h
HECMW_MAX_NODE_TET2
#define HECMW_MAX_NODE_TET2
Definition: hecmw_common_define.h:315
HECMW_ETYPE_PTQ1
#define HECMW_ETYPE_PTQ1
Definition: hecmw_common_define.h:94
HECMW_ETYPE_LN44
#define HECMW_ETYPE_LN44
Definition: hecmw_common_define.h:77
HECMW_ETYPE_TRI1
#define HECMW_ETYPE_TRI1
Definition: hecmw_common_define.h:19
HECMW_ETYPE_LN52
#define HECMW_ETYPE_LN52
Definition: hecmw_common_define.h:81
HECMW_ETYPE_LN12
#define HECMW_ETYPE_LN12
Definition: hecmw_common_define.h:57
HECMW_ETYPE_MST2
#define HECMW_ETYPE_MST2
Definition: hecmw_common_define.h:37
hecmw_common_define.h
HECMW_MAX_NODE_JTQ2
#define HECMW_MAX_NODE_JTQ2
Definition: hecmw_common_define.h:332
HECMW_ETYPE_TET2
#define HECMW_ETYPE_TET2
Definition: hecmw_common_define.h:27
HECMW_MAX_NODE_ROD2
#define HECMW_MAX_NODE_ROD2
Definition: hecmw_common_define.h:307
HECMW_MAX_NODE_PTQ1
#define HECMW_MAX_NODE_PTQ1
Definition: hecmw_common_define.h:381
HECMW_ETYPE_LN42
#define HECMW_ETYPE_LN42
Definition: hecmw_common_define.h:75
HECMW_MAX_NODE_ROD1
#define HECMW_MAX_NODE_ROD1
Definition: hecmw_common_define.h:306
hecmwST_result_data::node_label
char ** node_label
Definition: hecmw_result.h:22
hecmwST_result_data::elem_val_item
double * elem_val_item
Definition: hecmw_result.h:26
HECMW_ETYPE_LN23
#define HECMW_ETYPE_LN23
Definition: hecmw_common_define.h:64
HECMW_ETYPE_LN31
#define HECMW_ETYPE_LN31
Definition: hecmw_common_define.h:68
HECMW_print_msg
void HECMW_print_msg(int loglv, int msgno, const char *fmt,...)
Definition: hecmw_util.c:138
HECMW_ETYPE_QUA2
#define HECMW_ETYPE_QUA2
Definition: hecmw_common_define.h:23
HECMW_set_error
int HECMW_set_error(int errorno, const char *fmt,...)
Definition: hecmw_error.c:37
HECMW_MAX_NODE_SHT1
#define HECMW_MAX_NODE_SHT1
Definition: hecmw_common_define.h:336
HECMW_ETYPE_LN53
#define HECMW_ETYPE_LN53
Definition: hecmw_common_define.h:82
HECMW_MAX_NODE_PRI1
#define HECMW_MAX_NODE_PRI1
Definition: hecmw_common_define.h:316
NULL
#define NULL
Definition: hecmw_io_nastran.c:30
HECMW_MAX_NODE_QUA1
#define HECMW_MAX_NODE_QUA1
Definition: hecmw_common_define.h:310
HECMW_MAX_NODE_MSQ1
#define HECMW_MAX_NODE_MSQ1
Definition: hecmw_common_define.h:325
HECMW_MAX_NODE_SHQ1
#define HECMW_MAX_NODE_SHQ1
Definition: hecmw_common_define.h:338
HECMW_ETYPE_LN41
#define HECMW_ETYPE_LN41
Definition: hecmw_common_define.h:74
HECMW_ETYPE_PTT1
#define HECMW_ETYPE_PTT1
Definition: hecmw_common_define.h:92
HECMW_ETYPE_HEX2
#define HECMW_ETYPE_HEX2
Definition: hecmw_common_define.h:33
HECMW_MAX_NODE_SHQ2
#define HECMW_MAX_NODE_SHQ2
Definition: hecmw_common_define.h:339
HECMW_ETYPE_LN26
#define HECMW_ETYPE_LN26
Definition: hecmw_common_define.h:67
hecmw_util.h
HECMW_MAX_NODE_MST1
#define HECMW_MAX_NODE_MST1
Definition: hecmw_common_define.h:323
HECMW_MAX_NODE_TRI1
#define HECMW_MAX_NODE_TRI1
Definition: hecmw_common_define.h:308
HECMW_ETYPE_LN43
#define HECMW_ETYPE_LN43
Definition: hecmw_common_define.h:76
HECMW_ETYPE_TET1
#define HECMW_ETYPE_TET1
Definition: hecmw_common_define.h:25
HECMW_ETYPE_LN32
#define HECMW_ETYPE_LN32
Definition: hecmw_common_define.h:69
HECMW_ETYPE_LN21
#define HECMW_ETYPE_LN21
Definition: hecmw_common_define.h:62
HECMW_ETYPE_PTQ2
#define HECMW_ETYPE_PTQ2
Definition: hecmw_common_define.h:95
HECMW_ETYPE_LN34
#define HECMW_ETYPE_LN34
Definition: hecmw_common_define.h:71
HECMW_ETYPE_LN54
#define HECMW_ETYPE_LN54
Definition: hecmw_common_define.h:83
HECMW_MAX_NODE_PRI2
#define HECMW_MAX_NODE_PRI2
Definition: hecmw_common_define.h:317
HECMW_ETYPE_JTT1
#define HECMW_ETYPE_JTT1
Definition: hecmw_common_define.h:42
hecmwST_result_data::ne_dof
int * ne_dof
Definition: hecmw_result.h:20
HECMW_ETYPE_LN61
#define HECMW_ETYPE_LN61
Definition: hecmw_common_define.h:86
HECMW_MAX_NODE_HEX2
#define HECMW_MAX_NODE_HEX2
Definition: hecmw_common_define.h:320