00001 #include <stdio.h>
00002 #include <stdlib.h>
00003 #include <string.h>
00004 #ifndef _WIN32
00005 # include <unistd.h>
00006 #endif
00007 #include "cgnslib.h"
00008
00009 #define NUM_SIDE 5
00010
00011 float coord[NUM_SIDE*NUM_SIDE*NUM_SIDE];
00012
00013 #define CHECK(L,B) if(!(B)){fprintf(stderr,"mismatch in %s\n",L);exit(1);}
00014
00015 void error_exit (char *where)
00016 {
00017 fprintf (stderr, "ERROR:%s:%s\n", where, cg_get_error());
00018 exit (1);
00019 }
00020
00021 int main (int argc, char **argv)
00022 {
00023 int n, i, j, k, nuser, dim = 1;
00024 int cgfile, cgbase, cgzone, cgcoord, cgdset;
00025 int size[9];
00026 int ptlist[3] = {1, 2, 3};
00027 int ptrange[6] = {1, 1, 1, 2, 2, 2};
00028 int bcpoints[6], bcfaces[6];
00029 static char *fname = "extensions.cgns";
00030 char name[33];
00031 float data1 = 1;
00032 float data2 = 2;
00033 float exponents[8], rate[3], center[3];
00034 GridLocation_t gridloc;
00035 int ordinal, ndata, cgfam, cgbc, nunits, nexps;
00036 int elecflag, magnflag, condflag, dirichlet, neumann;
00037 PointSetType_t pttype;
00038 DataClass_t dclass;
00039 DataType_t dtype;
00040 BCType_t bctype;
00041 MassUnits_t mass;
00042 LengthUnits_t length;
00043 TimeUnits_t time;
00044 TemperatureUnits_t temp;
00045 AngleUnits_t angle;
00046 ElectricCurrentUnits_t current;
00047 SubstanceAmountUnits_t amount;
00048 LuminousIntensityUnits_t intensity;
00049 ModelType_t elecmodel;
00050 ModelType_t magnmodel;
00051 ModelType_t emconduct;
00052
00053 if (argc > 1) {
00054 n = 0;
00055 if (argv[1][n] == '-') n++;
00056 if (argv[1][n] == 'a' || argv[1][n] == 'A')
00057 i = CG_FILE_ADF;
00058 else if (argv[1][n] == 'h' || argv[1][n] == 'H')
00059 i = CG_FILE_HDF5;
00060 else if (argv[1][n] == 'x' || argv[1][n] == 'X')
00061 i = CG_FILE_XML;
00062 else {
00063 fprintf(stderr, "unknown option\n");
00064 exit (1);
00065 }
00066 if (cg_set_file_type(i))
00067 error_exit("cg_set_file_type");
00068 }
00069
00070 for (n = 0; n < 8; n++)
00071 exponents[n] = (float)n;
00072 for (n = 0; n < 3; n++) {
00073 rate[n] = (float)n;
00074 center[n] = (float)n;
00075 }
00076 for (n = 0; n < NUM_SIDE*NUM_SIDE*NUM_SIDE; n++)
00077 coord[n] = (float)n;
00078
00079 unlink (fname);
00080 printf ("creating CGNS file %s\n", fname);
00081 if (cg_open (fname, CG_MODE_WRITE, &cgfile) ||
00082 cg_base_write (cgfile, "Base", 3, 3, &cgbase))
00083 error_exit ("write base");
00084
00085
00086
00087 puts ("writing electromagnetics");
00088 if (cg_goto(cgfile, cgbase, NULL) ||
00089 cg_equationset_write (3) ||
00090 cg_goto(cgfile, cgbase, "FlowEquationSet_t", 1, NULL) ||
00091 cg_model_write("EMElectricFieldModel_t", Voltage) ||
00092 cg_model_write("EMMagneticFieldModel_t", Interpolated) ||
00093 cg_model_write("EMConductivityModel_t", Equilibrium_LinRessler))
00094 error_exit("write electromagnetics");
00095
00096
00097
00098 puts ("writing family/rotating");
00099 if (cg_family_write(cgfile, cgbase, "Family", &cgfam) ||
00100 cg_goto(cgfile, cgbase, "Family_t", cgfam, NULL) ||
00101 cg_rotating_write (rate, center))
00102 error_exit ("write family/rotating");
00103
00104
00105
00106 puts("writing FamilyBCDataSet");
00107 if (cg_fambc_write(cgfile, cgbase, cgfam, "FamilyBC", BCWall, &cgbc) ||
00108 cg_goto(cgfile, cgbase, "Family_t", cgfam, "FamilyBC_t", cgbc, NULL) ||
00109 cg_bcdataset_write ("FamilyBCDataSet", BCWallInviscid, Dirichlet))
00110 error_exit("write FamilyBCDataSet");
00111
00112
00113
00114 puts("writing user defined data under base");
00115 if (cg_goto (cgfile, cgbase, NULL) ||
00116 cg_user_data_write ("User"))
00117 error_exit ("write User");
00118 if (cg_goto (cgfile, cgbase, "UserDefinedData_t", 1, "end") ||
00119 cg_gridlocation_write (CellCenter) ||
00120 cg_famname_write ("Family") ||
00121 cg_ordinal_write (0) ||
00122 cg_array_write ("Data1", RealSingle, 1, &dim, &data1) ||
00123 cg_array_write ("Data2", RealSingle, 1, &dim, &data2))
00124 error_exit ("write User/data");
00125
00126 for (n = 1; n <= 2; n++) {
00127 if (cg_goto (cgfile, cgbase, "UserDefinedData_t", 1,
00128 "DataArray_t", n, "end") ||
00129 cg_dataclass_write (Dimensional) ||
00130 cg_units_write (Kilogram, Meter, Second, Kelvin, Radian) ||
00131 cg_exponents_write (RealSingle, exponents))
00132 error_exit (name);
00133 }
00134
00135
00136
00137
00138 if (cg_ptset_write (PointList, 1, ptlist) == CG_OK)
00139 printf ("WHAT!! - ptset should not work under base/userdata\n");
00140
00141
00142
00143 puts("writing zone");
00144 for (n = 0; n < 3; n++) {
00145 size[n] = NUM_SIDE;
00146 size[n+3] = NUM_SIDE - 1;
00147 size[n+6] = 0;
00148 }
00149 if (cg_zone_write (cgfile, cgbase, "Zone", size, Structured, &cgzone) ||
00150 cg_coord_write(cgfile, cgbase, cgzone, RealSingle,
00151 "CoordinateX", coord, &cgcoord) ||
00152 cg_coord_write(cgfile, cgbase, cgzone, RealSingle,
00153 "CoordinateY", coord, &cgcoord) ||
00154 cg_coord_write(cgfile, cgbase, cgzone, RealSingle,
00155 "CoordinateZ", coord, &cgcoord))
00156 cg_error_exit();
00157
00158
00159
00160 puts("writing Dirichlet BC with vertex range");
00161 for (n = 0; n < 3; n++) {
00162 bcpoints[n] = 1;
00163 bcpoints[n+3] = NUM_SIDE;
00164 bcfaces[n] = 1;
00165 bcfaces[n+3] = NUM_SIDE - 1;
00166 }
00167 bcpoints[5] = bcfaces[5] = 1;
00168 if (cg_boco_write (cgfile, cgbase, cgzone, "BC", BCWall,
00169 PointList, 1, bcpoints, &cgbc) ||
00170 cg_dataset_write (cgfile, cgbase, cgzone, cgbc,
00171 "DataSet", BCWallViscous, &cgdset) ||
00172 cg_bcdata_write (cgbase, cgfile, cgzone, cgbc, cgdset, Dirichlet))
00173 cg_error_exit();
00174
00175
00176
00177 puts("writing Dirichlet data at faces");
00178 if (cg_goto (cgfile, cgbase, "Zone_t", 1, "ZoneBC_t", 1, "BC_t", 1,
00179 "BCDataSet_t", 1, NULL) ||
00180 cg_gridlocation_write (KFaceCenter) ||
00181 cg_ptset_write (PointRange, 2, bcfaces))
00182 cg_error_exit();
00183
00184 #if 1
00185
00186
00187
00188 size[0] = (NUM_SIDE - 1) * (NUM_SIDE - 1);
00189 #else
00190
00191 size[0] = 1;
00192 #endif
00193 if (cg_goto (cgfile, cgbase, "Zone_t", 1, "ZoneBC_t", 1, "BC_t", 1,
00194 "BCDataSet_t", 1, "BCData_t", Dirichlet, NULL) ||
00195 cg_array_write ("Data", RealSingle, 1, size, coord))
00196 cg_error_exit();
00197
00198
00199
00200 puts("writing recursive user defined data under zone");
00201 for (i = 1; i <= 4; i++) {
00202 sprintf (name, "User%d", i);
00203 if (cg_goto (cgfile, cgbase, "Zone_t", cgzone, "end") ||
00204 cg_user_data_write (name))
00205 error_exit (name);
00206 if (cg_goto (cgfile, cgbase, "Zone_t", cgzone,
00207 "UserDefinedData_t", i, "end") ||
00208 cg_gridlocation_write (CellCenter) ||
00209 cg_famname_write ("Family") ||
00210 cg_ordinal_write (i) ||
00211 cg_ptset_write (PointList, 1, ptlist) ||
00212 cg_array_write ("Data1", RealSingle, 1, &dim, &data1) ||
00213 cg_array_write ("Data2", RealSingle, 1, &dim, &data2))
00214 error_exit (name);
00215 for (n = 1; n <= 2; n++) {
00216 if (cg_goto (cgfile, cgbase, "Zone_t", cgzone,
00217 "UserDefinedData_t", i,
00218 "DataArray_t", n, "end") ||
00219 cg_dataclass_write (Dimensional) ||
00220 cg_unitsfull_write (Kilogram, Meter, Second, Kelvin, Radian,
00221 Ampere, Mole, Candela) ||
00222 cg_expfull_write (RealSingle, exponents))
00223 error_exit (name);
00224 }
00225
00226 for (j = 1; j <= 3; j++) {
00227 sprintf (name, "User%d.%d", i, j);
00228 if (cg_goto (cgfile, cgbase, "Zone_t", cgzone,
00229 "UserDefinedData_t", i, "end") ||
00230 cg_user_data_write (name))
00231 error_exit (name);
00232 if (cg_goto (cgfile, cgbase, "Zone_t", cgzone,
00233 "UserDefinedData_t", i,
00234 "UserDefinedData_t", j, "end") ||
00235 cg_gridlocation_write (Vertex) ||
00236 cg_famname_write ("Family") ||
00237 cg_ordinal_write (i + j) ||
00238 cg_ptset_write (PointRange, 2, ptrange) ||
00239 cg_array_write ("Data1", RealSingle, 1, &dim, &data1) ||
00240 cg_array_write ("Data2", RealSingle, 1, &dim, &data2))
00241 error_exit (name);
00242 for (n = 1; n <= 2; n++) {
00243 if (cg_goto (cgfile, cgbase, "Zone_t", cgzone,
00244 "UserDefinedData_t", i,
00245 "UserDefinedData_t", j,
00246 "DataArray_t", n, "end") ||
00247 cg_dataclass_write (Dimensional) ||
00248 cg_unitsfull_write (Kilogram, Meter, Second, Kelvin,
00249 Radian, Ampere, Mole, Candela) ||
00250 cg_expfull_write (RealSingle, exponents))
00251 error_exit (name);
00252 }
00253
00254 for (k = 1; k <= 2; k++) {
00255 sprintf (name, "User%d.%d.%d", i, j, k);
00256 if (cg_goto (cgfile, cgbase, "Zone_t", cgzone,
00257 "UserDefinedData_t", i,
00258 "UserDefinedData_t", j, "end") ||
00259 cg_user_data_write (name))
00260 error_exit (name);
00261 if (cg_goto (cgfile, cgbase, "Zone_t", cgzone,
00262 "UserDefinedData_t", i,
00263 "UserDefinedData_t", j,
00264 "UserDefinedData_t", k, "end") ||
00265 cg_array_write ("Data1", RealSingle, 1, &dim, &data1) ||
00266 cg_array_write ("Data2", RealSingle, 1, &dim, &data2))
00267 error_exit (name);
00268 for (n = 1; n <= 2; n++) {
00269 if (cg_goto (cgfile, cgbase, "Zone_t", cgzone,
00270 "UserDefinedData_t", i,
00271 "UserDefinedData_t", j,
00272 "UserDefinedData_t", k,
00273 "DataArray_t", n, "end") ||
00274 cg_dataclass_write (Dimensional) ||
00275 cg_unitsfull_write (Kilogram, Meter, Second, Kelvin,
00276 Radian, Ampere, Mole, Candela) ||
00277 cg_expfull_write (RealSingle, exponents))
00278 error_exit (name);
00279 }
00280
00281 for (n = 1; n <= 2; n++) {
00282 sprintf (name, "User%d.%d.%d.%d", i, j, k, n);
00283 if (cg_goto (cgfile, cgbase, "Zone_t", cgzone,
00284 "UserDefinedData_t", i,
00285 "UserDefinedData_t", j,
00286 "UserDefinedData_t", k, "end") ||
00287 cg_user_data_write (name))
00288 error_exit (name);
00289 if (cg_goto (cgfile, cgbase, "Zone_t", cgzone,
00290 "UserDefinedData_t", i,
00291 "UserDefinedData_t", j,
00292 "UserDefinedData_t", k,
00293 "UserDefinedData_t", n, "end") ||
00294 cg_array_write ("Data1", RealSingle, 1, &dim, &data1) ||
00295 cg_array_write ("Data2", RealSingle, 1, &dim, &data2))
00296 error_exit (name);
00297 }
00298 }
00299 }
00300 }
00301
00302 puts ("closing and reopening in read mode");
00303 cg_close (cgfile);
00304
00305
00306
00307 if (cg_open (fname, CG_MODE_READ, &cgfile))
00308 cg_error_exit ();
00309 cgbase = cgzone = 1;
00310
00311
00312
00313 puts ("checking electromagnetics");
00314 if (cg_goto(cgfile, cgbase, NULL) ||
00315 cg_equationset_elecmagn_read(&elecflag, &magnflag, &condflag) ||
00316 cg_goto(cgfile, cgbase, "FlowEquationSet_t", 1, NULL) ||
00317 cg_model_read ("EMElectricFieldModel_t", &elecmodel) ||
00318 cg_model_read ("EMMagneticFieldModel_t", &magnmodel) ||
00319 cg_model_read ("EMConductivityModel_t", &emconduct))
00320 error_exit("electromagnetics read");
00321 CHECK ("ElectricFieldFlag", elecflag == 1);
00322 CHECK ("ElectricFieldModel", elecmodel == Voltage);
00323 CHECK ("MagneticFieldFlag", magnflag == 1);
00324 CHECK ("MagneticFieldModel", magnmodel == Interpolated);
00325 CHECK ("EMConductivityFlag", condflag == 1);
00326 CHECK ("EMConductivityModel", emconduct == Equilibrium_LinRessler);
00327
00328
00329
00330 puts ("checking family/rotating");
00331 if (cg_goto(cgfile, cgbase, "Family_t", 1, NULL) ||
00332 cg_rotating_read (rate, center))
00333 error_exit ("read family/rotating");
00334 for (n = 0; n < 3; n++) {
00335 CHECK ("rotation rate", rate[n] == (float)n);
00336 CHECK ("rotation center", center[n] == (float)n);
00337 }
00338
00339
00340
00341 puts("checking FamilyBCDataSet");
00342 *name = 0;
00343 if (cg_goto(cgfile, cgbase, "Family_t", 1, "FamilyBC_t", 1, NULL) ||
00344 cg_bcdataset_info(&ndata) ||
00345 cg_bcdataset_read (1, name, &bctype, &dirichlet, &neumann))
00346 error_exit("read FamilyBCDataSet");
00347 CHECK("bcdataset_info", ndata == 1);
00348 CHECK("bcdatset name", strcmp(name, "FamilyBCDataSet") == 0);
00349 CHECK("bcdatset type", bctype == BCWallInviscid);
00350 CHECK("bcdatset dirichlet", dirichlet == 1);
00351 CHECK("bcdatset neumann", neumann == 0);
00352
00353
00354
00355 puts("checking BC data");
00356 if (cg_boco_info (cgfile, cgbase, cgzone, 1, name, &bctype, &pttype,
00357 &n, size, &i, &dtype, &ndata))
00358 cg_error_exit();
00359 CHECK("BC_t name", strcmp(name, "BC") == 0);
00360 CHECK("BC_t type", bctype == BCWall);
00361 CHECK("BC_t pntset type", pttype == PointList);
00362 CHECK("BC_t npnts", n == 1);
00363
00364 if (cg_dataset_read (cgfile, cgbase, cgzone, 1, 1, name,
00365 &bctype, &dirichlet, &neumann) ||
00366 cg_goto (cgfile, cgbase, "Zone_t", 1, "ZoneBC_t", 1, "BC_t", 1,
00367 "BCDataSet_t", 1, NULL) ||
00368 cg_gridlocation_read (&gridloc) ||
00369 cg_ptset_info (&pttype, &n))
00370 cg_error_exit();
00371 CHECK("BCDataSet_t name", strcmp(name, "DataSet") == 0);
00372 CHECK("BCDataSet_t type", bctype == BCWallViscous);
00373 CHECK("BCDataSet_t location", gridloc == KFaceCenter);
00374 CHECK("BCDataSet_t pntset type", pttype == PointRange);
00375 CHECK("BC_t npnts", n == 2);
00376 CHECK("BCDataSet_t dirichlet", dirichlet == 1);
00377 CHECK("BCDataSet_t neumann", neumann == 0);
00378
00379
00380
00381 puts("checking user defined data");
00382 *name = 0;
00383 if (cg_goto (cgfile, cgbase, "UserDefinedData_t", 1, "end") ||
00384 cg_gridlocation_read (&gridloc) ||
00385 cg_famname_read (name) ||
00386 cg_ordinal_read (&ordinal) ||
00387 cg_narrays (&ndata))
00388 cg_error_exit ();
00389 CHECK ("gridlocation", gridloc == CellCenter);
00390 CHECK ("famname", strcmp (name, "Family") == 0);
00391 CHECK ("ordinal", ordinal == 0);
00392 CHECK ("narrays", ndata == 2);
00393
00394 if (cg_goto (cgfile, cgbase, "Zone_t", cgzone, "end") ||
00395 cg_nuser_data (&nuser))
00396 cg_error_exit ();
00397 CHECK ("nuserdata", nuser == 4);
00398
00399 for (i = 1; i <= 4; i++) {
00400 *name = 0;
00401 if (cg_goto (cgfile, cgbase, "Zone_t", cgzone,
00402 "UserDefinedData_t", i, "end") ||
00403 cg_gridlocation_read (&gridloc) ||
00404 cg_famname_read (name) ||
00405 cg_ordinal_read (&ordinal) ||
00406 cg_ptset_info (&pttype, &n) ||
00407 cg_ptset_read (ptlist) ||
00408 cg_narrays (&ndata) ||
00409 cg_nuser_data (&nuser))
00410 cg_error_exit ();
00411 CHECK ("gridlocation", gridloc == CellCenter);
00412 CHECK ("famname", strcmp (name, "Family") == 0);
00413 CHECK ("ordinal", ordinal == i);
00414 CHECK ("pointtype", pttype == PointList);
00415 CHECK ("npoints", n == 1);
00416 CHECK ("narrays", ndata == 2);
00417 CHECK ("nuserdata", nuser == 3);
00418
00419 for (j = 1; j <= 3; j++) {
00420 *name = 0;
00421 if (cg_goto (cgfile, cgbase, "Zone_t", cgzone,
00422 "UserDefinedData_t", i,
00423 "UserDefinedData_t", j, "end") ||
00424 cg_gridlocation_read (&gridloc) ||
00425 cg_famname_read (name) ||
00426 cg_ordinal_read (&ordinal) ||
00427 cg_ptset_info (&pttype, &n) ||
00428 cg_ptset_read (ptlist) ||
00429 cg_narrays (&ndata) ||
00430 cg_nuser_data (&nuser))
00431 cg_error_exit ();
00432 CHECK ("gridlocation", gridloc == Vertex);
00433 CHECK ("famname", strcmp (name, "Family") == 0);
00434 CHECK ("ordinal", ordinal == (i + j));
00435 CHECK ("pointtype", pttype == PointRange);
00436 CHECK ("npoints", n == 2);
00437 CHECK ("narrays", ndata == 2);
00438 CHECK ("nuserdata", nuser == 2);
00439
00440 for (n = 1; n <= 2; n++) {
00441 if (cg_goto (cgfile, cgbase, "Zone_t", cgzone,
00442 "UserDefinedData_t", i,
00443 "UserDefinedData_t", j,
00444 "DataArray_t", n, "end") ||
00445 cg_dataclass_read (&dclass) ||
00446 cg_nunits (&nunits) ||
00447 cg_unitsfull_read (&mass, &length, &time, &temp, &angle,
00448 ¤t, &amount, &intensity) ||
00449 cg_nexponents (&nexps) ||
00450 cg_expfull_read (exponents))
00451 cg_error_exit ();
00452 CHECK ("dataclass", dclass == Dimensional);
00453 CHECK ("nunits", nunits == 8);
00454 CHECK ("massunits", mass == Kilogram);
00455 CHECK ("lengthunits", length == Meter);
00456 CHECK ("timeunits", time == Second);
00457 CHECK ("tempunits", temp == Kelvin);
00458 CHECK ("angleunits", angle == Radian);
00459 CHECK ("currentunits", current == Ampere);
00460 CHECK ("amountunits", amount == Mole);
00461 CHECK ("intensityunits", intensity == Candela);
00462 CHECK ("nexponents", nexps == 8);
00463 for (n = 0; n < 8; n++)
00464 CHECK ("exponents", exponents[n] == (float)n);
00465 }
00466 }
00467 }
00468
00469 if (cg_goto (cgfile, cgbase, "Zone_t", cgzone,
00470 "UserDefinedData_t", 2, "UserDefinedData_t", 2,
00471 "UserDefinedData_t", 2, "UserDefinedData_t", 1, "end") ||
00472 cg_narrays (&ndata) ||
00473 cg_nuser_data (&nuser) ||
00474 cg_array_info (2, name, &dtype, &n, &dim) ||
00475 cg_array_read (1, &data1) ||
00476 cg_array_read (2, &data2))
00477 cg_error_exit ();
00478 CHECK ("narrays", ndata == 2);
00479 CHECK ("nuserdata", nuser == 0);
00480 CHECK ("arrayname", strcmp (name, "Data2") == 0);
00481 CHECK ("datatype", dtype == RealSingle);
00482 CHECK ("ndims", n == 1);
00483 CHECK ("dims", dim == 1);
00484 CHECK ("data1", data1 == 1.0);
00485 CHECK ("data2", data2 == 2.0);
00486
00487
00488
00489 puts("checking units and exponents");
00490 if (cg_goto(cgfile, cgbase, "UserDefinedData_t", 1,
00491 "DataArray_t", 1, NULL) ||
00492 cg_nunits (&nunits) ||
00493 cg_unitsfull_read (&mass, &length, &time, &temp, &angle,
00494 ¤t, &amount, &intensity) ||
00495 cg_nexponents (&nexps) ||
00496 cg_expfull_read (exponents))
00497 cg_error_exit ();
00498 CHECK ("nunits", nunits == 5);
00499 CHECK ("massunits", mass == Kilogram);
00500 CHECK ("lengthunits", length == Meter);
00501 CHECK ("timeunits", time == Second);
00502 CHECK ("tempunits", temp == Kelvin);
00503 CHECK ("angleunits", angle == Radian);
00504 CHECK ("currentunits", current == 0);
00505 CHECK ("amountunits", amount == 0);
00506 CHECK ("intensityunits", intensity == 0);
00507 CHECK ("nexponents", nexps == 5);
00508 for (n = 0; n < 5; n++)
00509 CHECK ("exponents", exponents[n] == (float)n);
00510 for (n = 6; n < 8; n++)
00511 CHECK ("exponents", exponents[n] == (float)0.0);
00512
00513
00514
00515 if (cg_goto(cgfile, cgbase, "Zone_t", 1, "UserDefinedData_t", 1,
00516 "DataArray_t", 1, NULL) ||
00517 cg_nunits (&nunits) ||
00518 cg_units_read (&mass, &length, &time, &temp, &angle) ||
00519 cg_nexponents (&nexps) ||
00520 cg_exponents_read (exponents))
00521 cg_error_exit ();
00522 CHECK ("nunits", nunits == 8);
00523 CHECK ("massunits", mass == Kilogram);
00524 CHECK ("lengthunits", length == Meter);
00525 CHECK ("timeunits", time == Second);
00526 CHECK ("tempunits", temp == Kelvin);
00527 CHECK ("angleunits", angle == Radian);
00528 CHECK ("nexponents", nexps == 8);
00529 for (n = 0; n < 5; n++)
00530 CHECK ("exponents", exponents[n] == (float)n);
00531
00532 puts ("closing file and reopening in modify mode");
00533 cg_close (cgfile);
00534
00535
00536
00537 if (cg_open (fname, CG_MODE_MODIFY, &cgfile))
00538 cg_error_exit ();
00539
00540 puts ("deleting user defined data and checking");
00541 if (cg_goto (cgfile, 1, "Zone_t", 1,
00542 "UserDefinedData_t", 3,
00543 "UserDefinedData_t", 2,
00544 "UserDefinedData_t", 1, "end") ||
00545 cg_nuser_data (&nuser))
00546 cg_error_exit ();
00547 CHECK ("nuserdata", nuser == 2);
00548 if (cg_delete_node ("User3.2.1.1") ||
00549 cg_nuser_data (&nuser))
00550 cg_error_exit ();
00551 CHECK ("nuserdata", nuser == 1);
00552
00553 puts ("closing file");
00554 cg_close (cgfile);
00555
00556 return 0;
00557 }
00558