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 cgfile, cgbase, cgzone, cgcoord;
00010 int size[9];
00011
00012 #define NUM_SIDE 5
00013
00014 float coord[NUM_SIDE*NUM_SIDE*NUM_SIDE];
00015
00016 int main (int argc, char **argv)
00017 {
00018 int i, type = 0;
00019 int n, nz, nzones = 250;
00020 double start, finish;
00021 char name[33], linkpath[65];
00022 static char *fname = "zones.cgns";
00023 static char *linkname = "zones_link.cgns";
00024
00025 for (n = 1; n < argc; n++) {
00026 i = 0;
00027 if (argv[n][i] == '-') i++;
00028 if (argv[n][i] == 'a' || argv[n][i] == 'A')
00029 type = CG_FILE_ADF;
00030 else if (argv[n][i] == 'h' || argv[n][i] == 'H')
00031 type = CG_FILE_HDF5;
00032 else if (argv[n][i] == 'x' || argv[n][i] == 'X')
00033 type = CG_FILE_XML;
00034 else
00035 nzones = atoi (&argv[n][i]);
00036 }
00037 if (cg_set_file_type(type))
00038 cg_error_exit();
00039
00040 for (n = 0; n < 3; n++) {
00041 size[n] = NUM_SIDE;
00042 size[n+3] = NUM_SIDE - 1;
00043 size[n+6] = 0;
00044 }
00045 printf ("number of zones = %d\n", nzones);
00046
00047 unlink (fname);
00048 printf ("creating zones ...");
00049 fflush (stdout);
00050 start = elapsed_time ();
00051 if (cg_open (fname, CG_MODE_WRITE, &cgfile) ||
00052 cg_base_write (cgfile, "Base", 3, 3, &cgbase))
00053 cg_error_exit();
00054 for (nz = 1; nz <= nzones; nz++) {
00055 sprintf (name, "Zone%d", nz);
00056 if (cg_zone_write (cgfile, cgbase, name, size, Structured, &cgzone))
00057 cg_error_exit();
00058 if (cg_coord_write(cgfile, cgbase, cgzone, RealSingle,
00059 "CoordinateX", coord, &cgcoord) ||
00060 cg_coord_write(cgfile, cgbase, cgzone, RealSingle,
00061 "CoordinateY", coord, &cgcoord) ||
00062 cg_coord_write(cgfile, cgbase, cgzone, RealSingle,
00063 "CoordinateZ", coord, &cgcoord))
00064 cg_error_exit();
00065 }
00066 finish = elapsed_time ();
00067 printf (" %g secs\n", finish - start);
00068
00069 printf ("closing file ...");
00070 fflush (stdout);
00071 start = elapsed_time ();
00072 if (cg_close(cgfile)) cg_error_exit();
00073 finish = elapsed_time ();
00074 printf (" %g secs\n", finish - start);
00075 printf ("file size = %g Mb\n", file_size(fname));
00076
00077 printf ("opening file ...");
00078 fflush (stdout);
00079 start = elapsed_time ();
00080 if (cg_open (fname, CG_MODE_MODIFY, &cgfile)) cg_error_exit();
00081 finish = elapsed_time ();
00082 printf (" %g secs\n", finish - start);
00083 cgbase = 1;
00084
00085 printf ("modifying file ...");
00086 fflush (stdout);
00087 start = elapsed_time ();
00088 for (nz = 1; nz <= nzones; nz++) {
00089 sprintf (name, "Zone%d", nz);
00090 if (cg_zone_write (cgfile, cgbase, name, size, Structured, &cgzone))
00091 cg_error_exit();
00092 if (cg_coord_write(cgfile, cgbase, cgzone, RealSingle,
00093 "CoordinateX", coord, &cgcoord) ||
00094 cg_coord_write(cgfile, cgbase, cgzone, RealSingle,
00095 "CoordinateY", coord, &cgcoord) ||
00096 cg_coord_write(cgfile, cgbase, cgzone, RealSingle,
00097 "CoordinateZ", coord, &cgcoord))
00098 cg_error_exit();
00099 }
00100 finish = elapsed_time ();
00101 printf (" %g secs\n", finish - start);
00102
00103 printf ("writing file ...");
00104 fflush (stdout);
00105 start = elapsed_time ();
00106 if (cg_close (cgfile)) cg_error_exit();
00107 finish = elapsed_time ();
00108 printf (" %g secs\n", finish - start);
00109 printf ("file size = %g Mb\n", file_size(fname));
00110
00111 unlink (linkname);
00112 printf ("creating link file ...");
00113 fflush (stdout);
00114 start = elapsed_time ();
00115 if (cg_open (linkname, CG_MODE_WRITE, &cgfile) ||
00116 cg_base_write (cgfile, "Base", 3, 3, &cgbase))
00117 cg_error_exit();
00118 for (nz = 1; nz <= nzones; nz++) {
00119 sprintf (name, "Link to Zone%d", nz);
00120 sprintf (linkpath, "/Base/Zone%d", nz);
00121 if (cg_goto (cgfile, cgbase, "end") ||
00122 cg_link_write (name, fname, linkpath))
00123 cg_error_exit();
00124 }
00125 cg_close (cgfile);
00126 finish = elapsed_time ();
00127 printf (" %g secs\n", finish - start);
00128 printf ("file size = %g Mb\n", file_size(linkname));
00129
00130 printf ("opening link file ...");
00131 fflush (stdout);
00132 start = elapsed_time ();
00133 if (cg_open (linkname, CG_MODE_READ, &cgfile)) cg_error_exit();
00134 finish = elapsed_time ();
00135 printf (" %g secs\n", finish - start);
00136 cg_close (cgfile);
00137
00138 return 0;
00139 }
00140