1 /*--------------------------------------------------------------*/
2 /* Header file for EnSight External Reader DSO Library Routines */
3 /*--------------------------------------------------------------*/
4 /* *************************************************************
5 * Copyright 1998 Computational Engineering International, Inc.
8 * Restricted Rights Legend
10 * Use, duplication, or disclosure of this
11 * software and its documentation by the
12 * Government is subject to restrictions as
13 * set forth in subdivision [(b)(3)(ii)] of
14 * the Rights in Technical Data and Computer
15 * Software clause at 52.227-7013.
16 * *************************************************************
18 #ifndef GLOBAL_EXTERN_H
19 #define GLOBAL_EXTERN_H
25 /*--------------------------------
26 * Set the reader version define
27 * (only one can be set at a time)
28 *--------------------------------*/
44 /*---------------------------------------*/
45 /* True/False and Error conditions, etc. */
46 /*---------------------------------------*/
47 #define Z_ERR (-1) /*Error return value.*/
48 #define Z_OK (1) /*Success return value.*/
49 #define Z_UNDEF (2) /*Undefined return value.*/
51 #define Z_NOT_IMPLEMENTED (3) /*Routine not implemented*/
52 /*(currently only checked for */
53 /* get_var_value_at_specific */
60 #define Z_BUFL (80) /* Typical string length */
62 #define Z_COMPX (0) /* x component */
63 #define Z_COMPY (1) /* y component */
64 #define Z_COMPZ (2) /* z component */
66 #define Z_STATIC (0) /* static geometry */
67 #define Z_CHANGE_COORDS (1) /* coordinate changing only */
68 #define Z_CHANGE_CONN (2) /* conectivity changing */
70 #define Z_GEOM (0) /* Geometry type */
71 #define Z_VARI (1) /* Variable type */
73 #define Z_SAVE_ARCHIVE (0) /* Save archive */
74 #define Z_REST_ARCHIVE (1) /* Restore archive */
76 #define Z_MAX_USERD_NAME (20) /* max length of reader name */
78 #define Z_PER_NODE (4) /* At Nodes Variable classif. */
79 #define Z_PER_ELEM (1) /* At Elements Variable classif.*/
81 #define Z_MAX_SETS (300)
83 #define Z_MX_MATERIALS (60)
85 #define Z_MXVARIABLEDESC 20 /*Interface Variables Max Name.*/
87 /* Useful macros for handling IEEE floats */
88 #define FLT_SGN_MASK 0x80000000U
89 #define FLT_EXP_MASK 0x7F800000U
90 #define FLT_MAN_MASK 0x007FFFFFU
91 #define FLT_EXP_BIAS 127
92 #define FLT_EXP_SHIFT 23
94 #define FLT_IS_FINITE(v) \
95 (((*((unsigned int*)&(v))) & FLT_EXP_MASK) != FLT_EXP_MASK)
97 #define FLT_IS_NAN(v) \
98 ((((*((unsigned int*)&(v))) & FLT_EXP_MASK) == FLT_EXP_MASK) && \
99 ((((*((unsigned int*)&(v))) & FLT_MAN_MASK) != 0U)
101 #define FLT_IS_INF(v) \
102 ((((*((unsigned int*)&(v))) & FLT_EXP_MASK) == FLT_EXP_MASK) && \
103 ((((*((unsigned int*)&(v))) & FLT_MAN_MASK) == 0U)
106 /*-----------------------------------*/
107 /* Unstructured coordinate structure */
108 /*-----------------------------------*/
112 /*-----------------------------------*/
113 /* Unstructured double coordinate structure */
114 /*-----------------------------------*/
133 /*-------------------
135 *-------------------*/
153 * If you mess with these, you must also
154 * change the get_z_maxtype
156 * to_int_elem_type routines
158 *----------------------------------------*/
159 #if (defined USERD_API_100 || defined USERD_API_200)
161 Z_POINT
, /* 00: 1 node point element */
162 Z_BAR02
, /* 01: 2 node bar */
163 Z_BAR03
, /* 02: 3 node bar */
164 Z_TRI03
, /* 03: 3 node triangle */
165 Z_TRI06
, /* 04: 6 node triangle */
166 Z_QUA04
, /* 05: 4 node quad */
167 Z_QUA08
, /* 06: 8 node quad */
168 Z_TET04
, /* 07: 4 node tetrahedron */
169 Z_TET10
, /* 08: 10 node tetrahedron */
170 Z_PYR05
, /* 09: 5 node pyramid */
171 Z_PYR13
, /* 10: 13 node pyramid */
172 Z_PEN06
, /* 11: 6 node pentahedron */
173 Z_PEN15
, /* 12: 15 node pentahedron */
174 Z_HEX08
, /* 13: 8 node hexahedron */
175 Z_HEX20
, /* 14: 20 node hexahedron */
179 #elif defined USERD_API_201
181 Z_POINT
, /* 00: 1 node point element */
182 Z_G_POINT
, /* 01: 1 node point element (ghost call) */
183 Z_BAR02
, /* 02: 2 node bar */
184 Z_G_BAR02
, /* 03: 2 node bar (ghost cell) */
185 Z_BAR03
, /* 04: 3 node bar */
186 Z_G_BAR03
, /* 05: 3 node bar (ghost cell) */
187 Z_TRI03
, /* 06: 3 node triangle */
188 Z_G_TRI03
, /* 07: 3 node triangle (ghost cell) */
189 Z_TRI06
, /* 08: 6 node triangle */
190 Z_G_TRI06
, /* 09: 6 node triangle (ghost cell) */
191 Z_QUA04
, /* 10: 4 node quad */
192 Z_G_QUA04
, /* 11: 4 node quad (ghost cell) */
193 Z_QUA08
, /* 12: 8 node quad */
194 Z_G_QUA08
, /* 13: 8 node quad (ghost cell) */
195 Z_TET04
, /* 14: 4 node tetrahedron */
196 Z_G_TET04
, /* 15: 4 node tetrahedron (ghost cell) */
197 Z_TET10
, /* 16: 10 node tetrahedron */
198 Z_G_TET10
, /* 17: 10 node tetrahedron (ghost cell) */
199 Z_PYR05
, /* 18: 5 node pyramid */
200 Z_G_PYR05
, /* 19: 5 node pyramid (ghost cell) */
201 Z_PYR13
, /* 20: 13 node pyramid */
202 Z_G_PYR13
, /* 21: 13 node pyramid (ghost cell) */
203 Z_PEN06
, /* 22: 6 node pentahedron */
204 Z_G_PEN06
, /* 23: 6 node pentahedron (ghost cell) */
205 Z_PEN15
, /* 24: 15 node pentahedron */
206 Z_G_PEN15
, /* 25: 15 node pentahedron (ghost cell) */
207 Z_HEX08
, /* 26: 8 node hexahedron */
208 Z_G_HEX08
, /* 27: 8 node hexahedron (ghost cell) */
209 Z_HEX20
, /* 28: 20 node hexahedron */
210 Z_G_HEX20
, /* 29: 20 node hexahedron (ghost cell) */
216 Z_POINT
, /* 00: 1 node point element */
217 Z_G_POINT
, /* 01: 1 node point element (ghost call) */
218 Z_BAR02
, /* 02: 2 node bar */
219 Z_G_BAR02
, /* 03: 2 node bar (ghost cell) */
220 Z_BAR03
, /* 04: 3 node bar */
221 Z_G_BAR03
, /* 05: 3 node bar (ghost cell) */
222 Z_TRI03
, /* 06: 3 node triangle */
223 Z_G_TRI03
, /* 07: 3 node triangle (ghost cell) */
224 Z_TRI06
, /* 08: 6 node triangle */
225 Z_G_TRI06
, /* 09: 6 node triangle (ghost cell) */
226 Z_QUA04
, /* 10: 4 node quad */
227 Z_G_QUA04
, /* 11: 4 node quad (ghost cell) */
228 Z_QUA08
, /* 12: 8 node quad */
229 Z_G_QUA08
, /* 13: 8 node quad (ghost cell) */
230 Z_TET04
, /* 14: 4 node tetrahedron */
231 Z_G_TET04
, /* 15: 4 node tetrahedron (ghost cell) */
232 Z_TET10
, /* 16: 10 node tetrahedron */
233 Z_G_TET10
, /* 17: 10 node tetrahedron (ghost cell) */
234 Z_PYR05
, /* 18: 5 node pyramid */
235 Z_G_PYR05
, /* 19: 5 node pyramid (ghost cell) */
236 Z_PYR13
, /* 20: 13 node pyramid */
237 Z_G_PYR13
, /* 21: 13 node pyramid (ghost cell) */
238 Z_PEN06
, /* 22: 6 node pentahedron */
239 Z_G_PEN06
, /* 23: 6 node pentahedron (ghost cell) */
240 Z_PEN15
, /* 24: 15 node pentahedron */
241 Z_G_PEN15
, /* 25: 15 node pentahedron (ghost cell) */
242 Z_HEX08
, /* 26: 8 node hexahedron */
243 Z_G_HEX08
, /* 27: 8 node hexahedron (ghost cell) */
244 Z_HEX20
, /* 28: 20 node hexahedron */
245 Z_G_HEX20
, /* 29: 20 node hexahedron (ghost cell) */
246 Z_NSIDED
, /* 30: n node polygon */
247 Z_G_NSIDED
, /* 31: n node polygon (ghost cell) */
248 Z_NFACED
, /* 32: n faced polyhedron */
249 Z_G_NFACED
, /* 33: n faced polyhedron (ghost cell) */
262 enum z_element_ids_opt
265 Z_ASSIGN_ELEMENT_IDS
,
270 /*-------------------------------*/
271 /* Unstructured/Structured types */
272 /*-------------------------------*/
273 enum z_structured_defs
275 Z_UNSTRUCTURED
, /* for unstructured part */
276 Z_STRUCTURED
, /* for structured (non-iblanked) part */
277 Z_IBLANKED
, /* for structured iblanked part */
281 /*----------------------------*/
282 /* Structured Iblanking types */
283 /*----------------------------*/
286 Z_EXT
, /* Exterior */
287 Z_INT
, /* Interior */
288 Z_BND
, /* Boundary */
289 Z_INTBND
, /* Internal boundary/baffle */
290 Z_SYM
, /* Symmetry surface */
291 Z_NO_OF_IBLANK_DOMAIN_ITEMS
295 /*-----------------------------------*/
296 /* Dataset Query file info Structure */
297 /*-----------------------------------*/
298 #define Z_MAXFILENP 255 /* Max file name and path.*/
299 #define Z_MAXTIMLEN 40 /* Max time str length */
300 #define Z_BUFLEN 82 /* Allocated length of the f_desc strings */
302 char name
[Z_MAXFILENP
];
304 char timemod
[Z_MAXTIMLEN
];
309 /*-------------------------------------------
310 * Mixed Material enum
312 * (Must be comparable to material_file_index
313 * in mat_defs.h of EnSight server)
314 *--------------------------------------------*/
315 enum z_material_file_index
324 /*-------------------------------------------
327 * (Must be comparable to matset_via_file_type
328 * in mat_defs.h of EnSight server)
329 *--------------------------------------------*/
330 enum z_matset_via_file_type
332 Z_MISET_VIA_SPARSE_MIX
, /* Original method prior to 07Feb07:mel*/
333 Z_MISET_VIA_ESCAL_VARS
, /* Materials via element scalar variables*/
334 Z_MISET_VIA_MAX_FTYPES
338 /* ---------------------------------------
339 * Extra GUI size stuff
341 * This is the maximum number of
342 * Extra GUI items that you are
343 * allowed of each type.
345 * Don't change these values!
346 * ------------------------------------- */
347 #define Z_MAX_NUM_GUI_PULL_ITEMS 20 /* max num GUI pulldowns */
348 #define Z_LEN_GUI_PULL_STR 80 /* max length of GUI pulldown string */
349 #define Z_LEN_GUI_FIELD_STR 256 /* max length of field string */
350 #define Z_LEN_GUI_TITLE_STR 40 /* max length of title string */
352 /* ---------------------------------------
353 * Extra data function defines (for "target")
355 * Don't change these values!
356 * ------------------------------------- */
357 #define DATA_TARGET_NONE 0
358 #define DATA_TARGET_SERVER 1
359 #define DATA_TARGET_SOS 2
360 #define DATA_TARGET_CLIENT 3
361 #define DATA_TARGET_PYTHON 0x10000000
362 #define DATA_TARGET_CMDLANG 0x20000000
363 #define DATA_TARGET_UNDEF_VAL 0x40000000
364 #define DATA_TARGET_OTHER 0x00000000
365 #define DATA_TARGET_MASK 0x0000000f
367 /* ---------------------------------------
368 * Failed elemenet enums
369 * --------------------------------------- */
371 enum z_element_failure_criteria
374 Z_ELE_FAILED_GREATER
,
377 Z_ELE_FAILED_NOT_EQUAL
,
382 enum z_element_failure_logic
384 Z_ELE_FAILED_LOGIC_NONE
,
385 Z_ELE_FAILED_LOGIC_AND
,
386 Z_ELE_FAILED_LOGIC_OR
,
387 Z_ELE_FAILED_LOGIC_MANY
390 /*----------------------------------------------------------
391 * We include the prototype header file
392 *----------------------------------------------------------*/
393 #include "global_extern_proto.h"
395 /* ---------------------
396 * export the file pointer if windows
397 * because windows can't open a file in the
398 * server and pass the FILE * pointer properly.
399 * --------------------- */
401 typedef struct _USERD_globals_struct
{
402 char arch_filename
[256];
403 unsigned long arch_fileptr
;
411 /*--------------------------------------------------------------------*/
412 #endif /*GLOBAL_EXTERN_H*/