00001 #include <stdio.h> 00002 #include <stdlib.h> 00003 #include <string.h> 00004 #ifndef _WIN32 00005 # include <unistd.h> 00006 #endif 00007 #include "utils.h" 00008 00009 int main (int argc, char **argv) 00010 { 00011 int na, narrays = 100, arraysize = 1024; 00012 int cgfile, cgbase; 00013 char name[33]; 00014 float *array; 00015 double start, end; 00016 static char *fname = "array.cgns"; 00017 00018 if (argc > 1) { 00019 narrays = atoi (argv[1]); 00020 if (argc > 2) 00021 arraysize = atoi (argv[2]); 00022 } 00023 printf ("writing %d arrays of size %d\n", narrays, arraysize); 00024 array = (float *) malloc (arraysize * sizeof(float)); 00025 if (NULL == array) { 00026 fprintf (stderr, "malloc failed\n"); 00027 exit (1); 00028 } 00029 for (na = 0; na < arraysize; na++) 00030 array[na] = (float)na; 00031 00032 unlink (fname); 00033 start = elapsed_time (); 00034 if (cg_open (fname, CG_MODE_WRITE, &cgfile) || 00035 cg_base_write (cgfile, "Base", 3, 3, &cgbase) || 00036 cg_goto (cgfile, cgbase, NULL) || 00037 cg_user_data_write ("Data") || 00038 cg_goto (cgfile, cgbase, "UserDefinedData_t", 1, NULL)) 00039 cg_error_exit(); 00040 00041 for (na = 1; na <= narrays; na++) { 00042 sprintf (name, "Array%d", na); 00043 if (cg_array_write (name, RealSingle, 1, &arraysize, array)) 00044 cg_error_exit (); 00045 } 00046 if (cg_close(cgfile)) cg_error_exit(); 00047 end = elapsed_time (); 00048 printf ("time = %g secs, size = %g Mb\n", 00049 end - start, file_size(fname)); 00050 #if 0 00051 puts ("rewriting the file"); 00052 fflush (stdout); 00053 start = elapsed_time (); 00054 if (cg_open (fname, CG_MODE_MODIFY, &cgfile)) cg_error_exit(); 00055 cgbase = 1; 00056 00057 if (cg_goto (cgfile, cgbase, "UserDefinedData_t", 1, NULL)) 00058 cg_error_exit(); 00059 for (na = 1; na <= narrays; na++) { 00060 sprintf (name, "Array%d", na); 00061 if (cg_array_write (name, RealSingle, 1, &arraysize, array)) 00062 cg_error_exit (); 00063 } 00064 if (cg_close(cgfile)) cg_error_exit(); 00065 end = elapsed_time (); 00066 printf ("time = %g secs, size = %g Mb\n", 00067 end - start, file_size(fname)); 00068 #endif 00069 return 0; 00070 } 00071