1 #include "exodusII.h"
2 #include <stdio.h>
3 #include <string.h>
4 #include <stdlib.h>
5
6 #if 1
7 int mymode = EX_MAPS_INT64_DB|EX_MAPS_INT64_API|EX_BULK_INT64_DB|EX_BULK_INT64_API|EX_IDS_INT64_API|EX_IDS_INT64_DB;
8 typedef int64_t INT;
9 #else
10 int mymode = 0;
11 typedef int INT;
12 #endif
13
14 #define EX_TEST_FILENAME "ExodusTestData.e"
15
16 /* ================ Coordinate Frames ================ */
17 int cf_ids[2] = {20, 13};
18 double pt_coords[9*2] = {1,0,0, 1,0,1, 2,0,0,
19 0,0,0, 1,0,0, 0,1,0};
20 char tags[2]={'r', 'c'};
21
22 /* ======== Coordinates and connectivity ========= */
23 double coordsX[] = {
24 0., 0., 0., 0.,
25 3., 3., 3., 3.,
26 -3., -3., -3., -3.
27 };
28
29 double coordsY[] = {
30 -1., 1., 1., -1.,
31 -3., 3., 3., -3.,
32 -3., 3., 3., -3.
33 };
34
35 double coordsZ[] = {
36 -1., -1., 1., 1.,
37 -3., -3., 3., 3.,
38 -3., -3., 3., 3.
39 };
40
41 const char* coordsNames[] = { "X", "Y", "Z" };
42
43 INT conn1[] = {
44 1, 2, 3, 4, 5, 6, 7, 8,
45 9, 10, 11, 12, 1, 2, 3, 4
46 };
47
48 INT conn2[] = { 1, 2, 3, 5 };
49
50 INT conn3[] = { 12, 11, 10, 9 };
51
52 INT conn4[] = {1, 3, 5, 7, 9, 11}; /* Sphere */
53
54 INT conn5[] = {12, 8, 11, 7, 10, 6, 9, 5}; /* Beam */
55
56 INT econn1[] = {
57 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12,
58 13, 14, 15, 16, 1, 2, 3, 4, 17, 18, 19, 20
59 };
60
61 INT fconn1[] = {
62 4, 5, 7, 6, 3, 2,
63 8, 9, 11, 10, 1, 3
64 };
65
66 INT ebconn1[] = {
67 1, 2,
68 2, 3,
69 3, 4,
70 4, 1,
71 5, 6,
72 6, 7,
73 7, 8,
74 8, 5,
75 1, 5,
76 2, 6,
77 4, 8,
78 3, 7,
79 9, 10,
80 10, 11,
81 11, 12,
82 12, 9,
83 9, 1,
84 10, 2,
85 12, 4,
86 11, 3
87 };
88
89 INT fbconn1[] = {
90 12, 11, 10, 9,
91 5, 6, 7, 8
92 };
93
94 INT fbconn2[] = {
95 1, 2, 3, 4
96 };
97
98 INT fbconn3[] = {
99 1, 5, 6, 2,
100 3, 7, 8, 4,
101 2, 6, 7, 3,
102 4, 8, 5, 1, 9, 1, 2, 10,
103 11, 3, 4, 12,
104 10, 2, 3, 11,
105 12, 4, 1, 9
106 };
107
108 INT nmap1[] = {
109 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1
110 };
111
112 INT nmap2[] = {
113 120, 110, 100, 90, 80, 70, 60, 50, 40, 30, 20, 10
114 };
115
116 INT edmap1[] = {
117 1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20
118 };
119
120
121 INT famap1[] = {
122 2, 1, 4, 3, 6, 5, 7, 8, 9, 10, 11
123 };
124
125 INT emap1[] = {
126 10, 20, 30, 44, 91,92,93,94,95,96, 88, 87, 86, 85
127 };
128
129 const char* eblk_names[] = {
130 "Eli_WALLACH",
131 "Angelo_NOVI",
132 "A_Shell",
133 "Some_Sphere_Elements",
134 "Reinforcement"
135 };
136
137 const char* edblk_names[] = { "Aldo_GIUFFRE" };
138 const char* fablk_names[] = {
139 "Livio_LORENZON",
140 "Claudio_SCARCHILLI",
141 "John_BARTHA"
142 };
143
144 const char* nmap_names[] = { "Luigi_PISTILLI" };
145 const char* edmap_names[] = { "Antonio_CASALE" };
146 const char* famap_names[] = { "Sandro_SCARCHILLI" };
147 const char* emap_names[] = { "Benito_STEFANELLI" };
148
149 /* ======== Sets ========= */
150 INT nset_nodes[] = {
151 5, 6, 9
152 };
153
154 INT eset_edges[] = {
155 1, 2, 4, 15, 19, 20
156 };
157
158 INT eset_orient[] = {
159 +1, +1, +1, +1, +1, -1
160 };
161
162 double eset_df[] = {
163 2., 2., 0.5, 0.5, 1., 1.
164 };
165
166 INT fset_faces[] = {
167 3, 9
168 };
169
170 INT fset_orient[] = {
171 +1, -1
172 };
173
174 INT sset_elems[] = {
175 1, 1, 1, 2, 2
176 };
177
178 INT sset_sides[] = {
179 1, 3, 5, 2, 4
180 };
181
182 INT sset1_elems[] = {
183 4, 4, 4
184 };
185
186 INT sset1_sides[] = {
187 1, 3, 5
188 };
189
190 INT elset_elems[] = {
191 1,
192 2
193 };
194
195 const char* elset_names[] = {
196 "Clint_EASTWOOD",
197 "Lee_VAN_CLEEF"
198 };
199
200 const char* nset_names[] = { "Ennio_MORRICONE" };
201 const char* eset_names[] = { "Rada_RASSIMOV" };
202 const char* fset_names[] = { "Enzo_PETITO" };
203 const char* sset_names[] = { "Luciano_VINCENZONI", "A_Very_Long_Name_That_Tests_Capability_for_Long_Names" };
204
205 /* ======== Attributes ========= */
206 const char* node_attr_names[] = {"Influence_Diameter"};
207 const char* edge_attr_names1[] = {"Sergio_LEONE"};
208
209 const char* face_attr_names1[] = {"GOOD"};
210 const char* face_attr_names2[] = {"BAD"};
211 const char* face_attr_names3[] = {"UGLY"};
212
213 const char* elem_attr_names1[] = {
214 "SPAGHETTI",
215 "WESTERN"
216 };
217
218 const char* elem_attr_names3[] = {
219 "Thickness"
220 };
221
222 const char* elem_attr_names4[] = {
223 "Radius", "Volume"
224 };
225
226 const char* elem_attr_names5[] = {
227 "Area", "I_1", "I_2", "J", "V_x", "V_y", "V_z"
228 };
229
230 const char* elem_var_names[] = {"my_stress_xx_1",
231 "my_stress_yy_1",
232 "my_stress_zz_1",
233 "my_stress_xy_1",
234 "my_stress_yz_1",
235 "my_stress_zx_1",
236 "my_stress_xx_2",
237 "my_stress_yy_2",
238 "my_stress_zz_2",
239 "my_stress_xy_2",
240 "my_stress_yz_2",
241 "my_stress_zx_2",
242 "von_mises_which_is_calculated_the_standard_way_from_stress",
243 "tension"
244 };
245
246 const char* nset_var_names[] = {"var_name.xx",
247 "var_name.yy",
248 "var_name.zz",
249 "var_name.xy",
250 "var_name.yz",
251 "var_name.zx"};
252
253 const char* sset_var_names[] = {"stressxx",
254 "stressyy",
255 "stresszz",
256 "stressxy",
257 "stressyz",
258 "stresszx"};
259
260 double edge_attr_values1[] = {
261 1., 2., 3., 5., 7., 11., 13., 17., 19., 23.,
262 29., 31., 37., 41., 43., 47., 53., 59., 61., 67.
263 };
264
265 double node_attr_values[] = { 12., 11., 10., 9., 8., 7., 6., 5., 4., 3., 2., 1.};
266
267 double face_attr_values1[] = {
268 71., 73.
269 };
270
271 double face_attr_values2[] = {
272 79.
273 };
274
275 double face_attr_values3[] = {
276 83., 89., 97., 101., 103., 107., 109., 113.
277 };
278
279 double elem_attr_values1[] = {
280 127., 101.,
281 137., 139.
282 };
283
284 double elem_attr_values4[] = {
285 .10, 0.0,
286 .11, 0.0,
287 .12, 0.0,
288 .13, 0.0,
289 .14, 0.0,
290 .15, 0.0
291 };
292
293 double elem_attr_values5[] = { /* 4 elements, 7 attributes/element */
294 1.0, 10.0, 11.0, 12.0, 0.0, 0.0, 1.0,
295 1.1, 10.1, 11.1, 12.1, 1.0, 0.0, 0.0,
296 1.2, 10.2, 11.2, 12.2, 0.0, 1.0, 0.0,
297 1.3, 10.3, 11.3, 12.3, 1.0, 1.0, 1.0
298 };
299
300 /* ======== Results variables ========= */
301 /* (2 time steps) */
302
303 double vals_glo_var[2][3] = {
304 { 36., 37., 38.},
305 { 42., 43., 44.}
306 };
307
308 double vals_nod_var[2][12] = {
309 { 0.1, 0.8, 0.0, 0.4, 0.3, 0.9, 0.8, 0.5, 0.3, 0.7, 0.4, 0.6 },
310 { 0.7, 0.5, 0.3, 0.5, 0.2, 0.7, 0.9, 0.8, 0.0, 0.2, 0.3, 0.5 }
311 } ;
312
313
314 double vals_edge_var1eb1[2][20] = {
315 { 20., 19., 18., 17., 16., 15., 14., 13., 12., 11., 10., 9., 8., 7., 6., 5., 4., 3., 2., 1. },
316 { 21., 20., 19., 18., 17., 16., 15., 14., 13., 12., 11., 10., 9., 8., 7., 6., 5., 4., 3., 2. }
317 };
318
319 double vals_edge_var2eb1[2][20] = {
320 { 1., 1., 0., 0., 1., 1., 2., 0., 2., 0., 1., 1., 1., 1., 0., 0., 2., 2., 2., 2. },
321 { 1., 1., 0., 0., 1., 1., 2., 0., 2., 0., 1., 1., 1., 1., 0., 0., 2., 2., 2., 2. }
322 };
323
324 double vals_face_var1fb1[2][2] = {
325 { 0, 1 },
326 { 2, 0 }
327 };
328
329 double vals_face_var1fb3[2][8] = {
330 { 1, 0, 2, 0, 3, 0, 4, 0 },
331 { 0, 1, 0, 2, 0, 3, 0, 4 }
332 };
333
334 double vals_elem_var[2][2*6*2] = {
335 { 8.0, 8.0, 8.1, 8.1, 8.2, 8.2, 8.3, 8.3, 8.4, 8.4, 8.5, 8.5, 18.0, 18.0, 18.1, 18.1, 18.2, 18.2, 18.3, 18.3, 18.4, 18.4, 18.5, 18.5 },
336 { -7.0, -7.0, -7.1, -7.1, -7.2, -7.2, -7.3, -7.3, -7.4, -7.4, -7.5, -7.5, -7.0, -17.0, -17.1, -17.1, -17.2, -17.2, -17.3, -17.3, -17.4, -17.4, -17.5, -17.5 }
337 };
338
339 double vals_elem_var1[2][1] = {
340 { 88.8 },
341 { 99.9 }
342 };
343
344 double vals_tension[2][4] = {
345 { 1000., 2000., 3000., 4000. },
346 { 2000., 4000., 6000., 8000. }
347 };
348
349 /* 2 time planes, 6 elements, 3 variables */
350 double vals_elem_var2[2][6*3] = {
351 { 1.01, 1.02, 1.03, 2.01, 2.02, 2.03, 3.01, 3.02, 3.03, 4.01, 4.02, 4.03, 5.01, 5.02, 5.03, 6.01, 6.02, 6.03 },
352 {11.01,11.02,11.03,12.01,12.02,12.03,13.01,13.02,13.03,14.01,14.02,14.03,15.01,15.02,15.03,16.01,16.02,16.03 }
353 };
354
355 double vals_nset_var[2][3*6] = {
356 { 8.0, 8.1, 8.2,
357 7.0, 7.1, 7.2,
358 6.0, 6.1, 6.2,
359 5.0, 5.1, 5.2,
360 4.0, 4.1, 4.2,
361 3.0, 3.1, 3.2},
362 { -8.0, -8.1, -8.2,
363 -7.0, -7.1, -7.2,
364 -6.0, -6.1, -6.2,
365 -5.0, -5.1, -5.2,
366 -4.0, -4.1, -4.2,
367 -3.0, -3.1, -3.2},
368 };
369
370 double vals_sset_var[2][5*6] = {
371 { 18.0, 18.1, 18.2, 18.3, 18.4,
372 17.0, 17.1, 17.2, 17.3, 17.4,
373 16.0, 16.1, 16.2, 16.3, 16.4,
374 15.0, 15.1, 15.2, 15.3, 15.4,
375 14.0, 14.1, 14.2, 14.3, 14.4,
376 13.0, 13.1, 13.2, 13.3, 13.4},
377 { -18.0, -18.1, -18.2, -18.3, -18.4,
378 -17.0, -17.1, -17.2, -17.3, -17.4,
379 -16.0, -16.1, -16.2, -16.3, -16.4,
380 -15.0, -15.1, -15.2, -15.3, -15.4,
381 -14.0, -14.1, -14.2, -14.3, -14.4,
382 -13.0, -13.1, -13.2, -13.3, -13.4},
383 };
384
385 double vals_fset_var1fs1[2][2] = {
386 { 1., 3. },
387 { 9., 27. }
388 };
389
390 #define EXCHECK(funcall,errmsg)\
391 if ( (funcall) < 0 ) \
392 { \
393 fprintf( stderr, errmsg ); \
394 return 1; \
395 }
396
ex_have_arg(int argc,char * argv[],const char * aname)397 int ex_have_arg( int argc, char* argv[], const char* aname )
398 {
399 int i;
400 for ( i = 0; i < argc; ++i )
401 if ( ! strcmp( argv[i], aname ) )
402 return 1;
403 return 0;
404 }
405
cCreateEdgeFace(int argc,char * argv[])406 int cCreateEdgeFace( int argc, char* argv[] )
407 {
408 int exoid;
409 int appWordSize = 8;
410 int diskWordSize = 8;
411 int concatBlocks = ex_have_arg( argc, argv, "-pcab" );
412 int concatSets = ex_have_arg( argc, argv, "-pcset" );
413 int concatResult = ex_have_arg( argc, argv, "-pvpax" );
414 double t;
415 int i;
416
417 ex_opts(EX_VERBOSE);
418
419 ex_init_params modelParams = {
420 "CreateEdgeFace Test", /* title */
421 3, /* num_dim */
422 12, /* num_nodes */
423 20, /* num_edge */
424 1, /* num_edge_blk */
425 11, /* num_face */
426 3, /* num_face_blk */
427 14, /* num_elem */
428 5, /* num_elem_blk */
429 1, /* num_node_sets */
430 1, /* num_edge_sets */
431 1, /* num_face_sets */
432 2, /* num_side_sets */
433 2, /* num_elem_sets */
434 1, /* num_node_map */
435 1, /* num_edge_map */
436 1, /* num_face_map */
437 1, /* num_elem_map */
438 };
439
440 ex_block_params blockParams;
441 ex_var_params varParams;
442
443 blockParams.edge_blk_id = (int*)malloc(1 * sizeof(INT));
444 blockParams.num_edge_this_blk = (int*)malloc(1 * sizeof(int));
445 blockParams.num_nodes_per_edge = (int*)malloc(1 * sizeof(int));
446 blockParams.num_attr_edge = (int*)malloc(1 * sizeof(int));
447 blockParams.face_blk_id = (int*)malloc(3 * sizeof(INT));
448 blockParams.num_face_this_blk = (int*)malloc(3 * sizeof(int));
449 blockParams.num_nodes_per_face = (int*)malloc(3 * sizeof(int));
450 blockParams.num_attr_face = (int*)malloc(3 * sizeof(int));
451 blockParams.elem_blk_id = (int*)malloc(5 * sizeof(INT));
452 blockParams.num_elem_this_blk = (int*)malloc(5 * sizeof(int));
453 blockParams.num_nodes_per_elem = (int*)malloc(5 * sizeof(int));
454 blockParams.num_edges_per_elem = (int*)malloc(5 * sizeof(int));
455 blockParams.num_faces_per_elem = (int*)malloc(5 * sizeof(int));
456 blockParams.num_attr_elem = (int*)malloc(5 * sizeof(int));
457
458 blockParams.edge_type = (char**)malloc(1 * sizeof(char*));
459 blockParams.edge_type[0] = (char*)malloc((MAX_STR_LENGTH+1) * sizeof(char));
460 blockParams.face_type = (char**)malloc(3 * sizeof(char*));
461 blockParams.face_type[0] = (char*)malloc((MAX_STR_LENGTH+1) * sizeof(char));
462 blockParams.face_type[1] = (char*)malloc((MAX_STR_LENGTH+1) * sizeof(char));
463 blockParams.face_type[2] = (char*)malloc((MAX_STR_LENGTH+1) * sizeof(char));
464 blockParams.elem_type = (char**)malloc(5 * sizeof(char*));
465 blockParams.elem_type[0] = (char*)malloc((MAX_STR_LENGTH+1) * sizeof(char));
466 blockParams.elem_type[1] = (char*)malloc((MAX_STR_LENGTH+1) * sizeof(char));
467 blockParams.elem_type[2] = (char*)malloc((MAX_STR_LENGTH+1) * sizeof(char));
468 blockParams.elem_type[3] = (char*)malloc((MAX_STR_LENGTH+1) * sizeof(char));
469 blockParams.elem_type[4] = (char*)malloc((MAX_STR_LENGTH+1) * sizeof(char));
470
471 ((INT*)blockParams.edge_blk_id)[0] = 100;
472 blockParams.num_edge_this_blk[0] = 20;
473 blockParams.num_nodes_per_edge[0] = 2;
474 blockParams.num_attr_edge[0] = 1;
475
476 ((INT*)blockParams.face_blk_id)[0] = 500;
477 ((INT*)blockParams.face_blk_id)[1] = 600;
478 ((INT*)blockParams.face_blk_id)[2] = 700;
479 blockParams.num_face_this_blk[0] = 2;
480 blockParams.num_face_this_blk[1] = 1;
481 blockParams.num_face_this_blk[2] = 8;
482 blockParams.num_nodes_per_face[0] = 4;
483 blockParams.num_nodes_per_face[1] = 4;
484 blockParams.num_nodes_per_face[2] = 4;
485 blockParams.num_attr_face[0] = 1;
486 blockParams.num_attr_face[1] = 1;
487 blockParams.num_attr_face[2] = 1;
488
489 ((INT*)blockParams.elem_blk_id)[0] = 200;
490 ((INT*)blockParams.elem_blk_id)[1] = 201;
491 ((INT*)blockParams.elem_blk_id)[2] = 100;
492 ((INT*)blockParams.elem_blk_id)[3] = 500;
493 ((INT*)blockParams.elem_blk_id)[4] = 2147483647;
494
495 blockParams.num_elem_this_blk[0] = 2;
496 blockParams.num_elem_this_blk[1] = 1;
497 blockParams.num_elem_this_blk[2] = 1;
498 blockParams.num_elem_this_blk[3] = 6;
499 blockParams.num_elem_this_blk[4] = 4;
500
501 blockParams.num_nodes_per_elem[0] = 8;
502 blockParams.num_nodes_per_elem[1] = 4;
503 blockParams.num_nodes_per_elem[2] = 4;
504 blockParams.num_nodes_per_elem[3] = 1;
505 blockParams.num_nodes_per_elem[4] = 2;
506
507 blockParams.num_edges_per_elem[0] = 12;
508 blockParams.num_edges_per_elem[1] = 0;
509 blockParams.num_edges_per_elem[2] = 0;
510 blockParams.num_edges_per_elem[3] = 0;
511 blockParams.num_edges_per_elem[4] = 0;
512
513 blockParams.num_faces_per_elem[0] = 6;
514 blockParams.num_faces_per_elem[1] = 0;
515 blockParams.num_faces_per_elem[2] = 0;
516 blockParams.num_faces_per_elem[3] = 0;
517 blockParams.num_faces_per_elem[4] = 0;
518
519 blockParams.num_attr_elem[0] = 2;
520 blockParams.num_attr_elem[1] = 0;
521 blockParams.num_attr_elem[2] = 1;
522 blockParams.num_attr_elem[3] = 2;
523 blockParams.num_attr_elem[4] = 7;
524
525 blockParams.define_maps = 0;
526
527 strcpy(blockParams.edge_type[0], "EDGE2");
528
529 strcpy(blockParams.face_type[0], "QUAD4");
530 strcpy(blockParams.face_type[1], "QUAD4");
531 strcpy(blockParams.face_type[2], "QUAD4");
532
533 strcpy(blockParams.elem_type[0], "HEX8");
534 strcpy(blockParams.elem_type[1], "TET4");
535 strcpy(blockParams.elem_type[2], "SHELL");
536 strcpy(blockParams.elem_type[3], "SPHERE");
537 strcpy(blockParams.elem_type[4], "beam");
538
539 varParams.edge_var_tab = (int*)malloc(2 * sizeof(int));
540 varParams.face_var_tab = (int*)malloc(3 * sizeof(int));
541 varParams.elem_var_tab = (int*)0;
542 varParams.nset_var_tab = (int*)0;
543 varParams.eset_var_tab = (int*)0;
544 varParams.fset_var_tab = (int*)malloc(1 * sizeof(int));
545 varParams.sset_var_tab = (int*)0;
546 varParams.elset_var_tab = (int*)0;
547
548 varParams.num_glob = 2;
549 varParams.num_node = 1;
550 varParams.num_edge = 2;
551 varParams.edge_var_tab[0] = 1;
552 varParams.edge_var_tab[1] = 1;
553 varParams.num_face = 1;
554 varParams.face_var_tab[0] = 1;
555 varParams.face_var_tab[1] = 1;
556 varParams.face_var_tab[2] = 1;
557 varParams.num_elem = 1;
558 varParams.num_nset = 0;
559 varParams.num_eset = 0;;
560 varParams.num_fset = 1;
561 varParams.fset_var_tab[0] = 1;
562 varParams.num_sset = 0;
563 varParams.num_elset = 0;
564
565 exoid = ex_create( EX_TEST_FILENAME, EX_CLOBBER|mymode, &appWordSize, &diskWordSize );
566 if ( exoid <= 0 )
567 {
568 fprintf( stderr, "Unable to open \"%s\" for writing.\n", EX_TEST_FILENAME );
569 return 1;
570 }
571
572 ex_set_max_name_length(exoid, 80);
573
574 EXCHECK( ex_put_init_ext( exoid, &modelParams ),
575 "Unable to initialize database.\n" );
576
577 /* Add a coordinate frame just to give test coverage... */
578 EXCHECK( ex_put_coordinate_frames(exoid, 2, cf_ids, pt_coords, tags),
579 "Unable to output coordinate frame.\n");
580
581 if ( concatBlocks ) {
582 EXCHECK( ex_put_concat_all_blocks( exoid, &blockParams ),
583 "Unable to initialize block params.\n" );
584 } else {
585 int blk;
586 for ( blk = 0; blk < modelParams.num_edge_blk; ++blk ) {
587 EXCHECK( ex_put_block( exoid, EX_EDGE_BLOCK, ((INT*)blockParams.edge_blk_id)[blk], blockParams.edge_type[blk],
588 blockParams.num_edge_this_blk[blk], blockParams.num_nodes_per_edge[blk], 0, 0,
589 blockParams.num_attr_edge[blk] ), "Unable to write edge block" );
590 }
591 for ( blk = 0; blk < modelParams.num_face_blk; ++blk ) {
592 EXCHECK( ex_put_block( exoid, EX_FACE_BLOCK, ((INT*)blockParams.face_blk_id)[blk], blockParams.face_type[blk],
593 blockParams.num_face_this_blk[blk], blockParams.num_nodes_per_face[blk], 0, 0,
594 blockParams.num_attr_face[blk] ), "Unable to write face block" );
595 }
596 for ( blk = 0; blk < modelParams.num_elem_blk; ++blk ) {
597 EXCHECK( ex_put_block( exoid, EX_ELEM_BLOCK, ((INT*)blockParams.elem_blk_id)[blk], blockParams.elem_type[blk],
598 blockParams.num_elem_this_blk[blk], blockParams.num_nodes_per_elem[blk],
599 blockParams.num_edges_per_elem[blk], blockParams.num_faces_per_elem[blk],
600 blockParams.num_attr_elem[blk] ), "Unable to write elem block" );
601 }
602 }
603
604 EXCHECK( ex_put_attr_param(exoid, EX_NODAL, 0, 1),
605 "Unable to put nodal attributes.\n" );
606
607 EXCHECK( ex_put_coord( exoid, (void*)coordsX, (void*)coordsY, (void*)coordsZ ),
608 "Unable to write coordinates.\n" );
609
610 EXCHECK( ex_put_coord_names( exoid, (char**)coordsNames ),
611 "Unable to write coordinate names.\n" );
612
613 /* =============== Connectivity ================== */
614 EXCHECK( ex_put_conn( exoid, EX_EDGE_BLOCK, ((INT*)blockParams.edge_blk_id)[0], ebconn1, 0, 0 ),
615 "Unable to write edge block connectivity.\n" );
616
617 EXCHECK( ex_put_conn( exoid, EX_FACE_BLOCK, ((INT*)blockParams.face_blk_id)[0], fbconn1, 0, 0 ),
618 "Unable to write face block 1 connectivity.\n" );
619 EXCHECK( ex_put_conn( exoid, EX_FACE_BLOCK, ((INT*)blockParams.face_blk_id)[1], fbconn2, 0, 0 ),
620 "Unable to write face block 2 connectivity.\n" );
621 EXCHECK( ex_put_conn( exoid, EX_FACE_BLOCK, ((INT*)blockParams.face_blk_id)[2], fbconn3, 0, 0 ),
622 "Unable to write face block 3 connectivity.\n" );
623
624 EXCHECK( ex_put_conn( exoid, EX_ELEM_BLOCK, ((INT*)blockParams.elem_blk_id)[0], conn1, econn1, fconn1 ),
625 "Unable to write elem block 1 connectivity.\n" );
626 EXCHECK( ex_put_conn( exoid, EX_ELEM_BLOCK, ((INT*)blockParams.elem_blk_id)[1], conn2, 0, 0 ),
627 "Unable to write elem block 2 connectivity.\n" );
628 EXCHECK( ex_put_conn( exoid, EX_ELEM_BLOCK, ((INT*)blockParams.elem_blk_id)[2], conn3, 0, 0 ),
629 "Unable to write elem block 3 connectivity.\n" );
630 EXCHECK( ex_put_conn( exoid, EX_ELEM_BLOCK, ((INT*)blockParams.elem_blk_id)[3], conn4, 0, 0 ),
631 "Unable to write elem block 4 connectivity.\n" );
632 EXCHECK( ex_put_conn( exoid, EX_ELEM_BLOCK, ((INT*)blockParams.elem_blk_id)[4], conn5, 0, 0 ),
633 "Unable to write elem block 5 connectivity.\n" );
634
635 EXCHECK( ex_put_names( exoid, EX_EDGE_BLOCK, (char**)edblk_names ), "Unable to write edge block names.\n" );
636 EXCHECK( ex_put_names( exoid, EX_FACE_BLOCK, (char**)fablk_names ), "Unable to write face block names.\n" );
637 EXCHECK( ex_put_names( exoid, EX_ELEM_BLOCK, (char**) eblk_names ), "Unable to write element block names.\n" );
638
639 /* =============== Number Maps ================== */
640 EXCHECK( ex_put_num_map( exoid, EX_NODE_MAP, 300, nmap1 ), "Unable to write node map.\n" );
641 EXCHECK( ex_put_num_map( exoid, EX_EDGE_MAP, 800, edmap1 ), "Unable to write edge map.\n" );
642 EXCHECK( ex_put_num_map( exoid, EX_FACE_MAP, 900, famap1 ), "Unable to write face map.\n" );
643 EXCHECK( ex_put_num_map( exoid, EX_ELEM_MAP, 400, emap1 ), "Unable to write element map.\n" );
644
645 EXCHECK( ex_put_names( exoid, EX_NODE_MAP, (char**) nmap_names ), "Unable to write node map names.\n" );
646 EXCHECK( ex_put_names( exoid, EX_EDGE_MAP, (char**)edmap_names ), "Unable to write edge map names.\n" );
647 EXCHECK( ex_put_names( exoid, EX_FACE_MAP, (char**)famap_names ), "Unable to write face map names.\n" );
648 EXCHECK( ex_put_names( exoid, EX_ELEM_MAP, (char**) emap_names ), "Unable to write element map names.\n" );
649
650 /* =============== Id Maps ================== */
651 EXCHECK( ex_put_id_map( exoid, EX_NODE_MAP, nmap2 ), "Unable to write node id map.\n" );
652 EXCHECK( ex_put_id_map( exoid, EX_EDGE_MAP, edmap1 ), "Unable to write edge id map.\n" );
653 EXCHECK( ex_put_id_map( exoid, EX_FACE_MAP, famap1 ), "Unable to write face id map.\n" );
654 EXCHECK( ex_put_id_map( exoid, EX_ELEM_MAP, emap1 ), "Unable to write element id map.\n" );
655
656 /* =============== Attribute names ================ */
657 EXCHECK( ex_put_attr_names( exoid, EX_EDGE_BLOCK, ((INT*)blockParams.edge_blk_id)[0], (char**)edge_attr_names1 ),
658 "Unable to write edge block 1 attribute names.\n" );
659
660 EXCHECK( ex_put_attr_names( exoid, EX_NODAL, 0, (char**)node_attr_names),
661 "Unable to write nodal attribute names.\n" );
662
663 EXCHECK( ex_put_attr_names( exoid, EX_FACE_BLOCK, ((INT*)blockParams.face_blk_id)[0], (char**)face_attr_names1 ),
664 "Unable to write face block 1 attribute names.\n" );
665 EXCHECK( ex_put_attr_names( exoid, EX_FACE_BLOCK, ((INT*)blockParams.face_blk_id)[1], (char**)face_attr_names2 ),
666 "Unable to write face block 1 attribute names.\n" );
667 EXCHECK( ex_put_attr_names( exoid, EX_FACE_BLOCK, ((INT*)blockParams.face_blk_id)[2], (char**)face_attr_names3 ),
668 "Unable to write face block 1 attribute names.\n" );
669
670 EXCHECK( ex_put_attr_names( exoid, EX_ELEM_BLOCK, ((INT*)blockParams.elem_blk_id)[0], (char**)elem_attr_names1 ),
671 "Unable to write elem block 1 attribute names.\n" );
672 EXCHECK( ex_put_attr_names( exoid, EX_ELEM_BLOCK, ((INT*)blockParams.elem_blk_id)[2], (char**)elem_attr_names3 ),
673 "Unable to write elem block 3 attribute names.\n" );
674 EXCHECK( ex_put_attr_names( exoid, EX_ELEM_BLOCK, ((INT*)blockParams.elem_blk_id)[3], (char**)elem_attr_names4 ),
675 "Unable to write elem block 4 attribute names.\n" );
676 EXCHECK( ex_put_attr_names( exoid, EX_ELEM_BLOCK, ((INT*)blockParams.elem_blk_id)[4], (char**)elem_attr_names5 ),
677 "Unable to write elem block 5 attribute names.\n" );
678
679 /* =============== Attribute values =============== */
680 EXCHECK( ex_put_attr( exoid, EX_EDGE_BLOCK, ((INT*)blockParams.edge_blk_id)[0], edge_attr_values1 ),
681 "Unable to write edge block 1 attribute values.\n" );
682 EXCHECK( ex_put_attr( exoid, EX_NODAL, 0, node_attr_values ),
683 "Unable to write node attribute values.\n" );
684
685 EXCHECK( ex_put_attr( exoid, EX_FACE_BLOCK, ((INT*)blockParams.face_blk_id)[0], face_attr_values1 ),
686 "Unable to write face block 1 attribute values.\n" );
687 EXCHECK( ex_put_attr( exoid, EX_FACE_BLOCK, ((INT*)blockParams.face_blk_id)[1], face_attr_values2 ),
688 "Unable to write face block 1 attribute values.\n" );
689 EXCHECK( ex_put_attr( exoid, EX_FACE_BLOCK, ((INT*)blockParams.face_blk_id)[2], face_attr_values3 ),
690 "Unable to write face block 1 attribute values.\n" );
691
692 EXCHECK( ex_put_attr( exoid, EX_ELEM_BLOCK, ((INT*)blockParams.elem_blk_id)[0], elem_attr_values1 ),
693 "Unable to write elem block 1 attribute values.\n" );
694 EXCHECK( ex_put_attr( exoid, EX_ELEM_BLOCK, ((INT*)blockParams.elem_blk_id)[2], elem_attr_values1 ),
695 "Unable to write elem block 3 attribute values.\n" );
696
697 for (i=0; i < 6; i++) {
698 elem_attr_values4[2*i+1] = 4.0 / 3.0 * 3.14 * elem_attr_values4[2*i] * elem_attr_values4[2*i] * elem_attr_values4[2*i];
699 }
700 EXCHECK( ex_put_attr( exoid, EX_ELEM_BLOCK, ((INT*)blockParams.elem_blk_id)[3], elem_attr_values4 ),
701 "Unable to write elem block 3 attribute values.\n" );
702 EXCHECK( ex_put_attr( exoid, EX_ELEM_BLOCK, ((INT*)blockParams.elem_blk_id)[4], elem_attr_values5 ),
703 "Unable to write elem block 4 attribute values.\n" );
704
705 /* =============== Set parameters ================= */
706 /* *** NEW API *** */
707 EXCHECK( ex_put_names( exoid, EX_NODE_SET, (char**)nset_names ), "Unable to write node set names.\n" );
708 EXCHECK( ex_put_names( exoid, EX_EDGE_SET, (char**)eset_names ), "Unable to write edge set names.\n" );
709 EXCHECK( ex_put_names( exoid, EX_FACE_SET, (char**)fset_names ), "Unable to write face set names.\n" );
710 EXCHECK( ex_put_names( exoid, EX_SIDE_SET, (char**)sset_names ), "Unable to write side set names.\n" );
711 EXCHECK( ex_put_names( exoid, EX_ELEM_SET, (char**)elset_names ), "Unable to write element set names.\n" );
712
713 if ( concatSets ) {
714 ex_set_specs setParams;
715
716 setParams.sets_ids = (int*)malloc(2*sizeof(INT));
717 setParams.num_entries_per_set = (int*)malloc(2*sizeof(int));
718 setParams.num_dist_per_set = (int*)malloc(2*sizeof(int));
719 setParams.sets_entry_index = (int*)malloc(2*sizeof(int));
720 setParams.sets_dist_index = (int*)malloc(2*sizeof(int));
721 setParams.sets_entry_list = (INT*)malloc(6*sizeof(INT));
722 setParams.sets_extra_list = (INT*)malloc(6*sizeof(INT));
723 setParams.sets_dist_fact = (double*)malloc(6*sizeof(double));
724
725 ((INT*)setParams.sets_ids)[0] = 1000;
726 ((INT*)setParams.num_entries_per_set)[0] = 3;
727 ((INT*)setParams.num_dist_per_set)[0] = 0;
728 ((INT*)setParams.sets_entry_index)[0] = 0;
729 ((INT*)setParams.sets_dist_index)[0] = 0;
730
731 {
732 INT* entry_list = setParams.sets_entry_list;
733 entry_list[0] = nset_nodes[0];
734 entry_list[1] = nset_nodes[1];
735 entry_list[2] = nset_nodes[2];
736 }
737
738 EXCHECK( ex_put_concat_sets( exoid, EX_NODE_SET, &setParams ), "Unable to write node sets.\n" );
739
740 ((INT*)setParams.sets_ids)[0] = 1200;
741 ((INT*)setParams.num_entries_per_set)[0] = 6;
742 ((INT*)setParams.num_dist_per_set)[0] = 6;
743 ((INT*)setParams.sets_entry_index)[0] = 0;
744 ((INT*)setParams.sets_dist_index)[0] = 0;
745
746 {
747 INT* entry_list = setParams.sets_entry_list;
748 INT* extra_list = setParams.sets_extra_list;
749
750 entry_list[0] = eset_edges[0];
751 entry_list[1] = eset_edges[1];
752 entry_list[2] = eset_edges[2];
753 entry_list[3] = eset_edges[3];
754 entry_list[4] = eset_edges[4];
755 entry_list[5] = eset_edges[5];
756
757 extra_list[0] = eset_orient[0];
758 extra_list[1] = eset_orient[1];
759 extra_list[2] = eset_orient[2];
760 extra_list[3] = eset_orient[3];
761 extra_list[4] = eset_orient[4];
762 extra_list[5] = eset_orient[5];
763 }
764
765 memcpy(setParams.sets_dist_fact, eset_df, sizeof(eset_df)/sizeof(eset_df[0]));
766
767 EXCHECK( ex_put_concat_sets( exoid, EX_EDGE_SET, &setParams ), "Unable to write edge sets.\n" );
768
769 ((INT*)setParams.sets_ids)[0] = 1400;
770 ((INT*)setParams.num_entries_per_set)[0] = 2;
771 ((INT*)setParams.num_dist_per_set)[0] = 0;
772 ((INT*)setParams.sets_entry_index)[0] = 0;
773 ((INT*)setParams.sets_dist_index)[0] = 0;
774 {
775 INT *entry_list = setParams.sets_entry_list;
776 INT *extra_list = setParams.sets_extra_list;
777
778 entry_list[0] = fset_faces[0];
779 entry_list[1] = fset_faces[1];
780
781 extra_list[0] = fset_orient[0];
782 extra_list[1] = fset_orient[1];
783 }
784
785 EXCHECK( ex_put_concat_sets( exoid, EX_FACE_SET, &setParams ), "Unable to write face sets.\n" );
786
787 ((INT*)setParams.sets_ids)[0] = 1400;
788 ((INT*)setParams.sets_ids)[1] = 1441;
789 ((INT*)setParams.num_entries_per_set)[0] = 5;
790 ((INT*)setParams.num_entries_per_set)[1] = 3;
791 ((INT*)setParams.num_dist_per_set)[0] = 0;
792 ((INT*)setParams.num_dist_per_set)[1] = 0;
793 ((INT*)setParams.sets_entry_index)[0] = 0;
794 ((INT*)setParams.sets_entry_index)[5] = 0;
795 ((INT*)setParams.sets_dist_index)[0] = 0;
796 memcpy(setParams.sets_entry_list, sset_elems, sizeof(sset_elems)/sizeof(sset_elems[0]));
797 memcpy(setParams.sets_extra_list, sset_sides, sizeof(sset_sides)/sizeof(sset_sides[0]));
798
799 EXCHECK( ex_put_concat_sets( exoid, EX_SIDE_SET, &setParams ), "Unable to write side sets.\n" );
800
801 ((INT*)setParams.sets_ids)[0] = 1800;
802 ((INT*)setParams.sets_ids)[1] = 1900;
803 ((INT*)setParams.num_entries_per_set)[0] = 1;
804 ((INT*)setParams.num_entries_per_set)[1] = 1;
805 ((INT*)setParams.num_dist_per_set)[0] = 0;
806 ((INT*)setParams.num_dist_per_set)[1] = 0;
807 ((INT*)setParams.sets_entry_index)[0] = 0;
808 ((INT*)setParams.sets_entry_index)[1] = 1;
809 ((INT*)setParams.sets_dist_index)[0] = 0;
810 ((INT*)setParams.sets_dist_index)[1] = 0;
811 memcpy(setParams.sets_entry_list, elset_elems, sizeof(elset_elems)/sizeof(elset_elems[0]));
812
813 EXCHECK( ex_put_concat_sets( exoid, EX_ELEM_SET, &setParams ), "Unable to write element sets.\n" );
814
815 } else {
816 EXCHECK( ex_put_set_param( exoid, EX_NODE_SET, 1000, 3, 0 ), "Unable to write node set params.\n" );
817 EXCHECK( ex_put_set( exoid, EX_NODE_SET, 1000, nset_nodes, 0 ), "Unable to write node set.\n" );
818
819 EXCHECK( ex_put_set_param( exoid, EX_EDGE_SET, 1200, 6, 6 ), "Unable to write edge set params.\n" );
820 EXCHECK( ex_put_set( exoid, EX_EDGE_SET, 1200, eset_edges, eset_orient ), "Unable to write edge set.\n" );
821 EXCHECK( ex_put_set_dist_fact( exoid, EX_EDGE_SET, 1200, eset_df ), "Unable to write edge set dist factors.\n" );
822
823 EXCHECK( ex_put_set_param( exoid, EX_FACE_SET, 1400, 2, 0 ), "Unable to write face set params.\n" );
824 EXCHECK( ex_put_set( exoid, EX_FACE_SET, 1400, fset_faces, fset_orient ), "Unable to write face set.\n" );
825
826 EXCHECK( ex_put_set_param( exoid, EX_SIDE_SET, 1600, 5, 0 ), "Unable to write side set params.\n" );
827 EXCHECK( ex_put_set( exoid, EX_SIDE_SET, 1600, sset_elems, sset_sides ), "Unable to write side set.\n" );
828
829 EXCHECK( ex_put_set_param( exoid, EX_SIDE_SET, 1661, 3, 0 ), "Unable to write side set params.\n" );
830 EXCHECK( ex_put_set( exoid, EX_SIDE_SET, 1661, sset1_elems, sset1_sides ), "Unable to write side set.\n" );
831
832 EXCHECK( ex_put_set_param( exoid, EX_ELEM_SET, 1800, 1, 0 ), "Unable to write element set 1 params.\n" );
833 EXCHECK( ex_put_set( exoid, EX_ELEM_SET, 1800, elset_elems + 0, 0 ), "Unable to write element set 1.\n" );
834 EXCHECK( ex_put_set_param( exoid, EX_ELEM_SET, 1900, 1, 0 ), "Unable to write element set 2 params.\n" );
835 EXCHECK( ex_put_set( exoid, EX_ELEM_SET, 1900, elset_elems + 1, 0 ), "Unable to write element set 2.\n" );
836 }
837
838 /* =============== Result variable params ========= */
839 if ( concatResult ) {
840 EXCHECK( ex_put_all_var_param_ext( exoid, &varParams ),
841 "Unable to write result variable parameter information.\n" );
842 } else {
843 EXCHECK( ex_put_variable_param( exoid, EX_GLOBAL, 3 ),
844 "Unable to write global result variable parameters.\n" );
845 EXCHECK( ex_put_variable_param( exoid, EX_NODAL, 1 ),
846 "Unable to write nodal result variable parameters.\n" );
847 EXCHECK( ex_put_variable_param( exoid, EX_ELEM_BLOCK, 14 ),
848 "Unable to write element result variable parameters.\n" );
849 EXCHECK( ex_put_variable_param( exoid, EX_EDGE_BLOCK, 2 ),
850 "Unable to write edge result variable parameters.\n" );
851 EXCHECK( ex_put_variable_param( exoid, EX_FACE_BLOCK, 1 ),
852 "Unable to write face result variable parameters.\n" );
853 EXCHECK( ex_put_variable_param( exoid, EX_FACE_SET, 1 ),
854 "Unable to write faceset result variable parameters.\n" );
855 EXCHECK( ex_put_variable_param( exoid, EX_SIDE_SET, 6 ),
856 "Unable to write sideset result variable parameters.\n" );
857 EXCHECK( ex_put_variable_param( exoid, EX_NODE_SET, 6 ),
858 "Unable to write nodeset result variable parameters.\n" );
859 }
860
861 /* =============== Result variable names ========== */
862 /* *** NEW API *** */
863 EXCHECK( ex_put_variable_name( exoid, EX_GLOBAL, 1, "A_vector_X" ), "Unable to write variable name.\n" );
864 EXCHECK( ex_put_variable_name( exoid, EX_GLOBAL, 2, "A_vector_Y" ), "Unable to write variable name.\n" );
865 EXCHECK( ex_put_variable_name( exoid, EX_GLOBAL, 3, "A_vector_Z" ), "Unable to write variable name.\n" );
866 EXCHECK( ex_put_variable_name( exoid, EX_NODAL, 1, "RHO" ), "Unable to write variable name.\n" );
867 EXCHECK( ex_put_variable_name( exoid, EX_EDGE_BLOCK, 1, "GAMMA1" ), "Unable to write variable name.\n" );
868 EXCHECK( ex_put_variable_name( exoid, EX_EDGE_BLOCK, 2, "GAMMA2" ), "Unable to write variable name.\n" );
869 EXCHECK( ex_put_variable_name( exoid, EX_FACE_BLOCK, 1, "PHI" ), "Unable to write variable name.\n" );
870 EXCHECK( ex_put_variable_names( exoid, EX_ELEM_BLOCK, 14, (char**)elem_var_names), "Unable to write variable name.\n" );
871 EXCHECK( ex_put_variable_names( exoid, EX_SIDE_SET, 6, (char**)sset_var_names), "Unable to write variable name.\n" );
872 EXCHECK( ex_put_variable_names( exoid, EX_NODE_SET, 6, (char**)nset_var_names), "Unable to write variable name.\n" );
873 EXCHECK( ex_put_variable_name( exoid, EX_FACE_SET, 1, "PHI0" ), "Unable to write variable name.\n" );
874
875 /* =============== Result variable values ========= */
876 t = 1.;
877 /* *** NEW API *** */
878 EXCHECK( ex_put_time( exoid, 1, &t ), "Unable to write time value.\n" );
879 EXCHECK( ex_put_var( exoid, 1, EX_GLOBAL, 1, 0/*N/A*/, 2, vals_glo_var[0] ), "Unable to write global var 1.\n" );
880 EXCHECK( ex_put_var( exoid, 1, EX_EDGE_BLOCK, 1, 100, 20, vals_edge_var1eb1[0] ), "Unable to write edge block 1 var 1.\n" );
881 EXCHECK( ex_put_var( exoid, 1, EX_EDGE_BLOCK, 2, 100, 20, vals_edge_var2eb1[0] ), "Unable to write edge block 1 var 2.\n" );
882 EXCHECK( ex_put_var( exoid, 1, EX_FACE_BLOCK, 1, 500, 2, vals_face_var1fb1[0] ), "Unable to write face block 1 var 1.\n" );
883 EXCHECK( ex_put_var( exoid, 1, EX_FACE_BLOCK, 1, 700, 8, vals_face_var1fb3[0] ), "Unable to write face block 3 var 1.\n" );
884
885 EXCHECK( ex_put_var( exoid, 1, EX_ELEM_BLOCK, 13, 201, 1, &vals_elem_var1[0] ), "Unable to write elem block 1 var 1.\n" );
886 EXCHECK( ex_put_var( exoid, 1, EX_ELEM_BLOCK, 14, 2147483647, 4, &vals_tension[0] ), "Unable to write elem block 1 var 1.\n" );
887 for(i=0; i < 6; i++){
888 /* There are 2 elements in the block and 12 variables (a composite tensor x 2) */
889 EXCHECK( ex_put_var( exoid, 1, EX_ELEM_BLOCK, i+1, 200, 2, &vals_elem_var[0][2*i] ), "Unable to write elem block 1 var 1.\n" );
890 EXCHECK( ex_put_var( exoid, 1, EX_ELEM_BLOCK, i+7, 200, 2, &vals_elem_var[0][12+2*i] ), "Unable to write elem block 1 var 1.\n" );
891 EXCHECK( ex_put_var( exoid, 1, EX_NODE_SET, i+1, 1000, 3, &vals_nset_var[0][3*i] ), "Unable to write elem block 1 var 1.\n" );
892 EXCHECK( ex_put_var( exoid, 1, EX_SIDE_SET, i+1, 1600, 5, &vals_sset_var[0][5*i] ), "Unable to write elem block 1 var 1.\n" );
893 }
894
895 EXCHECK( ex_put_var( exoid, 1, EX_FACE_SET, 1, 1400, 2, vals_fset_var1fs1[0] ), "Unable to write face set 1 var 1.\n" );
896
897 t = 2.;
898 EXCHECK( ex_put_time( exoid, 2, &t ), "Unable to write time value.\n" );
899 EXCHECK( ex_put_var( exoid, 2, EX_GLOBAL, 1, 0/*N/A*/, 2, vals_glo_var[1] ), "Unable to write global var 1.\n" );
900 EXCHECK( ex_put_var( exoid, 2, EX_EDGE_BLOCK, 1, 100, 20, vals_edge_var1eb1[1] ), "Unable to write edge block 1 var 1.\n" );
901 EXCHECK( ex_put_var( exoid, 2, EX_EDGE_BLOCK, 2, 100, 20, vals_edge_var2eb1[1] ), "Unable to write edge block 1 var 2.\n" );
902 EXCHECK( ex_put_var( exoid, 2, EX_FACE_BLOCK, 1, 500, 2, vals_face_var1fb1[1] ), "Unable to write face block 1 var 1.\n" );
903 EXCHECK( ex_put_var( exoid, 2, EX_FACE_BLOCK, 1, 700, 8, vals_face_var1fb3[1] ), "Unable to write face block 3 var 1.\n" );
904
905 EXCHECK( ex_put_var( exoid, 2, EX_ELEM_BLOCK, 13, 201, 1, &vals_elem_var1[1] ), "Unable to write elem block 1 var 1.\n" );
906 EXCHECK( ex_put_var( exoid, 2, EX_ELEM_BLOCK, 14, 2147483647, 4, &vals_tension[1] ), "Unable to write elem block 1 var 1.\n" );
907 for(i=0; i < 6; i++){
908 EXCHECK( ex_put_var( exoid, 2, EX_ELEM_BLOCK, i+1, 200, 2, &vals_elem_var[1][2*i] ), "Unable to write elem block 1 var 1.\n" );
909 EXCHECK( ex_put_var( exoid, 2, EX_ELEM_BLOCK, i+7, 200, 2, &vals_elem_var[1][12+2*i] ), "Unable to write elem block 1 var 1.\n" );
910 EXCHECK( ex_put_var( exoid, 2, EX_NODE_SET, i+1, 1000, 3, &vals_nset_var[1][3*i] ), "Unable to write elem block 1 var 1.\n" );
911 EXCHECK( ex_put_var( exoid, 2, EX_SIDE_SET, i+1, 1600, 5, &vals_sset_var[1][5*i] ), "Unable to write elem block 1 var 1.\n" );
912 }
913 EXCHECK( ex_put_var( exoid, 2, EX_FACE_SET, 1, 1400, 2, vals_fset_var1fs1[1] ), "Unable to write face set 1 var 1.\n" );
914
915 EXCHECK( ex_put_nodal_var( exoid, 1, 1, 12, vals_nod_var[0] ), "Unable to write nodal var 1.\n" );
916 EXCHECK( ex_put_nodal_var( exoid, 2, 1, 12, vals_nod_var[1] ), "Unable to write nodal var 1.\n" );
917
918 EXCHECK( ex_close( exoid ),
919 "Unable to close database.\n" );
920
921 return 0;
922 }
923
924 #if !defined(USING_CMAKE)
main(int argc,char * argv[])925 int main( int argc, char* argv[] )
926 {
927 return cCreateEdgeFace(argc, argv);
928 }
929 #endif
930