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