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