1 /* include file for CGNS imports */ 2 3 #ifndef _cgnsIMPORT_H_ 4 #define _cgnsIMPORT_H_ 5 6 #include "cgnslib.h" 7 8 #ifndef CGNSTYPES_H 9 # define cgsize_t int 10 #endif 11 #ifndef CGNS_ENUMT 12 # define CGNS_ENUMT(e) e 13 # define CGNS_ENUMV(e) e 14 #endif 15 16 /*--- allowable element types ---*/ 17 18 #define cgnsELEM_TET 4 /* tet element (4 nodes ) */ 19 #define cgnsELEM_PYR 5 /* pyramid element (5 nodes ) */ 20 #define cgnsELEM_WDG 6 /* wedge element (6 nodes) */ 21 #define cgnsELEM_HEX 8 /* hex element (8 nodes) */ 22 23 /*--- allowable region types ---*/ 24 25 #define cgnsREG_NODES 1 26 #define cgnsREG_FACES 2 27 #define cgnsREG_ELEMS 3 28 29 /*--- convert element ID/face number to face ID */ 30 31 #define cgnsFACEID(elemid,facenum) ((elemid << 3) | (facenum & 7)) 32 33 /*--- function prototypes ---*/ 34 35 #ifdef __cplusplus 36 extern "C" { 37 #endif 38 39 void cgnsImportError ( /* define callback for errors */ 40 void (*callback)( /* user-supplied call back routine */ 41 char *errmsg /* error message */ 42 ) 43 ); 44 45 void cgnsImportFatal ( /* terminate with error message */ 46 char *errmsg /* error message */ 47 ); 48 49 double cgnsImportSetTol (/* setup node checking tolerance */ 50 double tol /* tolerance for comparisons */ 51 ); 52 53 double cgnsImportGetTol (/* get duplicate node tolerance */ 54 int rel_tol /* 0 - absolute tol, else relative tol */ 55 ); 56 57 void cgnsImportSetCheck (/* set dup checking for new nodes */ 58 int set /* 0 - allow dup checking, else disallow */ 59 ); 60 61 cgsize_t cgnsImportRange (/* returns bounding box of nodes */ 62 double *xmin, /* lower x limit */ 63 double *ymin, /* lower y limit */ 64 double *zmin, /* lower z limit */ 65 double *xmax, /* upper x limit */ 66 double *ymax, /* upper y limit */ 67 double *zmax /* upper z limit */ 68 ); 69 70 cgsize_t cgnsImportCheck (/* check for duplicate nodes */ 71 int rel_tol /* 0 - absolute tol, else relative tol */ 72 ); 73 74 cgsize_t cgnsImportMap ( /* explicitly map 2 nodes */ 75 cgsize_t nodeid, /* reference node id */ 76 cgsize_t mapid /* node id to map */ 77 ); 78 79 cgsize_t cgnsImportNode (/* import a node */ 80 cgsize_t nodeid, /* node number */ 81 double x, /* x coordinate */ 82 double y, /* y coordinate */ 83 double z /* z coordinate */ 84 ); 85 86 cgsize_t cgnsImportSetNode (/* set node coordinates */ 87 cgsize_t nodeid, /* node ID */ 88 double x, /* coordinates */ 89 double y, 90 double z 91 ); 92 93 cgsize_t cgnsImportGetNode (/* get node coordinates */ 94 cgsize_t nodeid, /* node ID */ 95 double *x, /* returned coordinates */ 96 double *y, 97 double *z 98 ); 99 100 cgsize_t *cgnsImportNodeList (/* return list of all node ID's */ 101 void 102 ); 103 104 int cgnsImportAddVariable (/*add a variable to the nodes */ 105 char *varname /* name of the variable */ 106 ); 107 108 int cgnsImportGetVariable (/* return variable number */ 109 char *varname /* name of the variable */ 110 ); 111 112 cgsize_t cgnsImportVariable (/* set variable value at node */ 113 cgsize_t nodeid, /* node number */ 114 int varnum, /* variable number */ 115 double val /* variable value */ 116 ); 117 118 int cgnsImportElement ( /* import an element */ 119 cgsize_t elemid, /* element number */ 120 int elemtype, /* element type - tet,pyr,wdg or hex */ 121 cgsize_t *nodelist /* node numbers defining element */ 122 ); 123 124 int cgnsImportGetElement (/* get element nodes */ 125 cgsize_t elemid, /* element ID */ 126 cgsize_t nodeid[] /* returned node IDs */ 127 ); 128 129 cgsize_t *cgnsImportElementList (/* return list of all element ID's */ 130 void 131 ); 132 133 int cgnsImportGetFace ( /* get element face nodes */ 134 cgsize_t elemid, /* element ID */ 135 int facenum, /* element face number */ 136 cgsize_t nodeid[] /* face nodes */ 137 ); 138 139 int cgnsImportFindFace ( /* get element face number */ 140 cgsize_t elemid, /* element ID */ 141 int nnodes, /* number of nodes */ 142 cgsize_t nodeid[] /* face nodes */ 143 ); 144 145 cgsize_t cgnsImportBegReg (/* begin a region specification */ 146 char *regname, /* region name */ 147 int regtype /* type of region (nodes,faces or elements) */ 148 ); 149 150 cgsize_t cgnsImportAddReg (/* add nodes to a region specification */ 151 cgsize_t numobjs, /* number of objects to add */ 152 cgsize_t *objlist /* object list for region */ 153 ); 154 155 cgsize_t cgnsImportEndReg (/* end region specification */ 156 void 157 ); 158 159 cgsize_t cgnsImportRegion (/* import region of nodes */ 160 char *regname, /* region name */ 161 int regtype, /* region type */ 162 cgsize_t numobjs, /* number of objects in region */ 163 cgsize_t *objlist /* object IDs in region */ 164 ); 165 166 char **cgnsImportRegionList (/* get list of region names */ 167 void 168 ); 169 170 cgsize_t *cgnsImportGetRegion (/* get region object ID's */ 171 char *regname /* region name */ 172 ); 173 174 int cgnsImportOpen ( /* open CGNS file */ 175 char *filename /* name of the file */ 176 ); 177 178 int cgnsImportBase ( /* set CGNS base */ 179 char *basename /* name for base */ 180 ); 181 182 void cgnsImportZone ( /* set CGNS zone */ 183 char *zonename /* name for zone */ 184 ); 185 186 int cgnsImportWrite ( /* write data to CGNS file */ 187 void 188 ); 189 190 void cgnsImportClose ( /* close the CGNS file */ 191 void 192 ); 193 194 #ifdef __cplusplus 195 } 196 #endif 197 198 #endif /* _cgnsIMPORT_H_ */ 199