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 #define WRITE_NODES 0
00010 #define WRITE_BCDATA 1
00011
00012 #define NNODES 1000
00013 #define NCELLS 1000
00014 #define NBCPNTS 100
00015
00016 char *fname = "bcdata.cgns";
00017
00018 int cgfile, cgbase, cgzone, cgcoord, cgsect, cgbc, cgdset;
00019 char name[33];
00020
00021 int size[] = {NNODES, NCELLS, 0};
00022 float coord[NNODES];
00023 int elements[4*NCELLS];
00024
00025 int npnts = NBCPNTS;
00026 int pnts[NBCPNTS];
00027 int dims[] = {NBCPNTS};
00028 float data[NBCPNTS];
00029
00030 float start, finish;
00031
00032 int main (int argc, char **argv)
00033 {
00034 int i, j, nb = 50, nv = 100;
00035
00036 if (argc > 1) {
00037 nb = atoi (argv[1]);
00038 if (argc > 2)
00039 nv = atoi (argv[2]);
00040 }
00041 #if WRITE_NODES
00042 printf ("number of nodes = %d\n", NNODES);
00043 printf ("number of elements = %d\n", NCELLS);
00044 #endif
00045 #if WRITE_BCDATA
00046 printf ("number of BC data pts = %d\n", NBCPNTS);
00047 #endif
00048 printf ("number of BC_t = %d\n", nb);
00049 printf ("number of BCDataSet_t = %d\n", nv);
00050
00051 unlink (fname);
00052 printf ("creating file ...");
00053 fflush (stdout);
00054 start = elapsed_time();
00055
00056 if (cg_open (fname, CG_MODE_WRITE, &cgfile) ||
00057 cg_base_write (cgfile, "Base", 3, 3, &cgbase) ||
00058 #if WRITE_NODES
00059 cg_zone_write (cgfile, cgbase, "Zone", size, Unstructured, &cgzone) ||
00060 cg_coord_write (cgfile, cgbase, cgzone, RealSingle,
00061 "CoordinateX", coord, &cgcoord) ||
00062 cg_coord_write (cgfile, cgbase, cgzone, RealSingle,
00063 "CoordinateY", coord, &cgcoord) ||
00064 cg_coord_write (cgfile, cgbase, cgzone, RealSingle,
00065 "CoordinateZ", coord, &cgcoord) ||
00066 cg_section_write (cgfile, cgbase, cgzone, "Elements", TETRA_4,
00067 1, NCELLS, 0, elements, &cgsect))
00068 #else
00069 cg_zone_write (cgfile, cgbase, "Zone", size, Unstructured, &cgzone))
00070 #endif
00071 cg_error_exit();
00072
00073 for (j = 1; j <= nb; j++) {
00074 sprintf (name, "BC%d", j);
00075 if (cg_boco_write (cgfile, cgbase, cgzone, name, BCWall, ElementList,
00076 npnts, pnts, &cgbc))
00077 cg_error_exit();
00078
00079 for (i = 1; i <= nv; i++) {
00080 sprintf (name, "BCData%d", i);
00081 if (cg_dataset_write (cgfile, cgbase, cgzone, cgbc, name,
00082 BCWall, &cgdset) ||
00083 #if WRITE_BCDATA
00084 cg_bcdata_write (cgfile, cgbase, cgzone, cgbc, cgdset,
00085 Dirichlet) ||
00086 cg_goto (cgfile, cgbase, "Zone_t", 1, "ZoneBC_t", 1,
00087 "BC_t", cgbc, "BCDataSet_t", cgdset, "end") ||
00088 cg_descriptor_write ("label", name) ||
00089 cg_descriptor_write ("basis", "intensive") ||
00090 cg_goto (cgfile, cgbase, "Zone_t", 1, "ZoneBC_t", 1,
00091 "BC_t", cgbc, "BCDataSet_t", cgdset,
00092 "BCData_t", Dirichlet, "end") ||
00093 cg_array_write ("Data", RealSingle, 1, dims, data))
00094 #else
00095 cg_bcdata_write (cgfile, cgbase, cgzone, cgbc, cgdset,
00096 Dirichlet))
00097 #endif
00098 cg_error_exit();
00099 }
00100 }
00101
00102 finish = elapsed_time();
00103 printf (" %.2f secs\n", finish - start);
00104
00105 printf ("closing file ...");
00106 fflush (stdout);
00107 start = elapsed_time();
00108 if (cg_close(cgfile)) cg_error_exit();
00109 finish = elapsed_time();
00110 printf (" %.2f secs\n", finish - start);
00111
00112 printf ("opening file ...");
00113 fflush (stdout);
00114 start = elapsed_time();
00115 if (cg_open (fname, CG_MODE_MODIFY, &cgfile)) cg_error_exit();
00116 finish = elapsed_time();
00117 printf (" %.2f secs\n", finish - start);
00118 cg_close (cgfile);
00119
00120 return 0;
00121 }
00122