You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							104 lines
						
					
					
						
							3.8 KiB
						
					
					
				
			
		
		
	
	
							104 lines
						
					
					
						
							3.8 KiB
						
					
					
				| /*
 | |
|  * Copyright(C) 1999-2021 National Technology & Engineering Solutions
 | |
|  * of Sandia, LLC (NTESS).  Under the terms of Contract DE-NA0003525 with
 | |
|  * NTESS, the U.S. Government retains certain rights in this software.
 | |
|  *
 | |
|  * See packages/seacas/LICENSE for details
 | |
|  */
 | |
| 
 | |
| #include "exodusII.h"
 | |
| #include <inttypes.h>
 | |
| #include <stdio.h>
 | |
| #include <stdlib.h>
 | |
| #include <string.h>
 | |
| 
 | |
| #define STRINGIFY(x) #x
 | |
| #define TOSTRING(x)  STRINGIFY(x)
 | |
| 
 | |
| #define EXCHECK(funcall)                                                                           \
 | |
|   do {                                                                                             \
 | |
|     error = (funcall);                                                                             \
 | |
|     printf("after %s, error = %d\n", TOSTRING(funcall), error);                                    \
 | |
|     if (error != EX_NOERR) {                                                                       \
 | |
|       fprintf(stderr, "Error calling %s\n", TOSTRING(funcall));                                    \
 | |
|       ex_close(exoid);                                                                             \
 | |
|       exit(-1);                                                                                    \
 | |
|     }                                                                                              \
 | |
|   } while (0)
 | |
| 
 | |
| int main(int argc, char **argv)
 | |
| {
 | |
|   int exoid;
 | |
|   int error;
 | |
|   int CPU_word_size;
 | |
|   int IO_word_size;
 | |
|   int idum;
 | |
| 
 | |
|   float version;
 | |
|   float fdum;
 | |
| 
 | |
|   char *cdum = NULL;
 | |
| 
 | |
|   CPU_word_size = 0; /* sizeof(float) */
 | |
|   IO_word_size  = 0; /* use what is stored in file */
 | |
| 
 | |
|   ex_opts(EX_VERBOSE | EX_ABORT);
 | |
| 
 | |
|   /* open EXODUS II files */
 | |
|   exoid = ex_open("test-assembly.exo", /* filename path */
 | |
|                   EX_WRITE,            /* access mode = READ */
 | |
|                   &CPU_word_size,      /* CPU word size */
 | |
|                   &IO_word_size,       /* IO word size */
 | |
|                   &version);           /* ExodusII library version */
 | |
| 
 | |
|   printf("\nafter ex_open\n");
 | |
|   if (exoid < 0) {
 | |
|     exit(1);
 | |
|   }
 | |
| 
 | |
|   printf("test-assembly.exo is an EXODUSII file; version %4.2f\n", version);
 | |
|   /*   printf ("         CPU word size %1d\n",CPU_word_size);  */
 | |
|   printf("         I/O word size %1d\n", IO_word_size);
 | |
|   ex_inquire(exoid, EX_INQ_API_VERS, &idum, &version, cdum);
 | |
|   printf("EXODUSII API; version %4.2f\n", version);
 | |
| 
 | |
|   ex_inquire(exoid, EX_INQ_LIB_VERS, &idum, &version, cdum);
 | |
|   printf("EXODUSII Library API; version %4.2f (%d)\n", version, idum);
 | |
| 
 | |
|   /* read database parameters */
 | |
|   {
 | |
|     ex_init_params par;
 | |
|     EXCHECK(ex_get_init_ext(exoid, &par));
 | |
| 
 | |
|     printf("database parameters:\n");
 | |
|     printf("title =  '%s'\n", par.title);
 | |
|     printf("num_dim = %" PRId64 "\n", par.num_dim);
 | |
|     printf("num_assembly = %" PRId64 "\n", par.num_assembly);
 | |
|     printf("num_nodes = %" PRId64 "\n", par.num_nodes);
 | |
|     printf("num_edge = %" PRId64 "\n", par.num_edge);
 | |
|     printf("num_face = %" PRId64 "\n", par.num_face);
 | |
|     printf("num_elem = %" PRId64 "\n", par.num_elem);
 | |
|     printf("num_elem_blk = %" PRId64 "\n", par.num_elem_blk);
 | |
|     printf("num_node_sets = %" PRId64 "\n", par.num_node_sets);
 | |
|     printf("num_side_sets = %" PRId64 "\n", par.num_side_sets);
 | |
| 
 | |
|     /* Check that ex_inquire gives same title */
 | |
|     char title_chk[MAX_LINE_LENGTH + 1];
 | |
|     EXCHECK(ex_inquire(exoid, EX_INQ_TITLE, &idum, &fdum, title_chk));
 | |
|     if (strcmp(par.title, title_chk) != 0) {
 | |
|       printf("error in ex_inquire for EX_INQ_TITLE %s, vs %s\n", par.title, title_chk);
 | |
|     }
 | |
|   }
 | |
| 
 | |
|   /* See if we can add a new assembly to an existing file... */
 | |
|   {
 | |
|     int64_t     list_222[] = {100, 200, 300, 400};
 | |
|     ex_assembly assembly   = {222, "NewAssembly", EX_ASSEMBLY, 4, NULL};
 | |
|     EXCHECK(ex_put_assembly(exoid, assembly));
 | |
| 
 | |
|     assembly.entity_list = list_222;
 | |
|     EXCHECK(ex_put_assembly(exoid, assembly));
 | |
|   }
 | |
|   EXCHECK(ex_close(exoid));
 | |
|   return 0;
 | |
| }
 | |
| 
 |