1 | /*************************************** 2 | $Header: /cvsroot/petscgraphics/illuminator.h,v 1.16 2004/03/07 01:56:18 hazelsct Exp $ 3 | 4 | This is the interface for the Illuminator library. 5 | ***************************************/ 6 | 7 | #ifndef ILLUMINATOR_H 8 | #define ILLUMINATOR_H /*+ To stop multiple inclusions. +*/ 9 | #include <petscda.h> 10 | 11 | /* Core stuff */ 12 | int IllDrawTet (PetscScalar *coords, PetscScalar *vals, PetscScalar isoquant, PetscScalar *color); 13 | int IllDrawHex (PetscScalar *coords, PetscScalar *vals, PetscScalar isoquant, PetscScalar *color); 14 | int IllDraw3DBlock (int xd, int yd, int zd, int xs, int ys, int zs, int xm, 15 | int ym, int zm, PetscScalar *minmax, PetscScalar *vals, 16 | int skip, int n_quants, PetscScalar *isoquants, 17 | PetscScalar *colors); 18 | 19 | /*+ A value of 20 | +latex+{\tt field\_plot\_type} 21 | +html+ <tt>field_plot_type</tt> 22 | is attached to each field in a simulation in order to visualize them 23 | properly. Types are as follows: 24 | +*/ 25 | typedef enum { 26 | /*+Plot scalar field using colors.+*/ 27 | FIELD_SCALAR_COLORS=0x00, 28 | /*+Plot scalar field using contours.+*/ 29 | FIELD_SCALAR_CONTOURS=0x01, 30 | /*+Plot ternary data using red, green, blue for components (third component 31 | is inferred from first two).+*/ 32 | FIELD_TERNARY_RGB=0x10, 33 | /*+Plot vector field using arrows.+*/ 34 | FIELD_VECTOR_ARROWS=0x20, 35 | /*+Plot vector field using hue for direction, intensity for magnitude.+*/ 36 | FIELD_VECTOR_HUEINTENSE=0x21, 37 | /*+Plot transformation tensor field as vector triplets.+*/ 38 | FIELD_TENSOR_TRANSFORM_VECTORS=0x30, 39 | /*+Plot symmetric tensor field using lines in principal stress directions.+*/ 40 | FIELD_TENSOR_STRESS=0x38, 41 | /*+Plot symmetric tensor field using lines in principal stress directions, 42 | inferring last diagonal from the opposite of the sum of the other two.+*/ 43 | FIELD_TENSOR_STRESS_SHEAR=0x39 44 | } field_plot_type; 45 | 46 | /* PETSc stuff; xcut, ycut and zcut should almost always be PETSC_FALSE */ 47 | int DATriangulate 48 | (DA theda, Vec globalX, int this, PetscScalar *minmax, int n_quants, 49 | PetscScalar *isoquants, PetscScalar *colors, PetscTruth xcut, PetscTruth ycut, 50 | PetscTruth zcut); 51 | int DATriangulateLocal 52 | (DA theda, Vec localX, int this, PetscScalar *minmax, int n_quants, 53 | PetscScalar *isoquants, PetscScalar *colors, PetscTruth xcut, PetscTruth ycut, 54 | PetscTruth zcut); 55 | int IllErrorHandler (int id, char *message); 56 | 57 | /* Plot2D stuff, future development... */ 58 | 59 | /* int DAPlot (DA theda, Vec global, PetscScalar x_magnify, PetscScalar y_magnify, 60 | plot_type *types, void **params); */ 61 | 62 | /* IlluMulti load/save stuff, including compression #defines */ 63 | int IlluMultiLoad 64 | (char *basename, DA *theda, PetscScalar *wx,PetscScalar *wy,PetscScalar *wz, 65 | field_plot_type **fieldtypes, int *usermetacount, char ***usermetanames, 66 | char ***usermetadata); 67 | int IlluMultiRead (DA theda, Vec X, char *basename, int *usermetacount, 68 | char ***usermetanames, char ***usermetadata); 69 | int IlluMultiSave 70 | (DA theda, Vec X, char *basename, PetscScalar wx,PetscScalar wy,PetscScalar wz, 71 | field_plot_type *fieldtypes, int usermetacount, char **usermetanames, 72 | char **usermetadata, int compressed); 73 | #define COMPRESS_INT_MASK 0x30 74 | #define COMPRESS_INT_NONE 0x00 75 | #define COMPRESS_INT_LONG 0x10 76 | #define COMPRESS_INT_SHORT 0x20 77 | #define COMPRESS_INT_CHAR 0x30 78 | #define COMPRESS_GZIP_MASK 0x0F 79 | #define COMPRESS_GZIP_NONE 0x00 80 | #define COMPRESS_GZIP_FAST 0x01 81 | #define COMPRESS_GZIP_BEST 0x0A 82 | 83 | /* Geomview stuff */ 84 | int GeomviewBegin (MPI_Comm comm); 85 | int GeomviewEnd (MPI_Comm comm); 86 | int GeomviewDisplayTriangulation (MPI_Comm comm, PetscScalar *minmax, 87 | char *name, PetscTruth transparent); 88 | 89 | #endif /* ILLUMINATOR_H */