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