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