1 /* $Id: viewer.h,v 1.59 1998/12/04 23:31:39 bsmith Exp bsmith $ */ 2 /* 3 Viewers are objects where other objects can be looked at or stored. 4 */ 5 6 #if !defined(__VIEWER_H) 7 #define __VIEWER_H 8 9 typedef struct _p_Viewer* Viewer; 10 11 /* 12 petsc.h must be included AFTER the definition of Viewer for ADIC to 13 process correctly. 14 */ 15 #include "petsc.h" 16 17 #define VIEWER_COOKIE PETSC_COOKIE+1 18 typedef char* ViewerType; 19 20 #define MATLAB_VIEWER "matlab" 21 #define ASCII_VIEWER "ascii" 22 #define BINARY_VIEWER "binary" 23 #define STRING_VIEWER "string" 24 #define DRAW_VIEWER "draw" 25 #define AMS_VIEWER "ams" 26 27 extern int ViewerASCIIOpen(MPI_Comm,const char[],Viewer*); 28 typedef enum {BINARY_RDONLY, BINARY_WRONLY, BINARY_CREATE} ViewerBinaryType; 29 extern int ViewerBinaryOpen(MPI_Comm,const char[],ViewerBinaryType,Viewer*); 30 extern int ViewerMatlabOpen(MPI_Comm,const char[],int,Viewer*); 31 extern int ViewerStringOpen(MPI_Comm,char[],int, Viewer*); 32 extern int ViewerDrawOpen(MPI_Comm,const char[],const char[],int,int,int,int,Viewer*); 33 extern int ViewerDrawOpenVRML(MPI_Comm,const char[],const char[],Viewer*); 34 35 extern int ViewerGetOutputname(Viewer,char**); 36 extern int ViewerGetType(Viewer,ViewerType*); 37 extern int ViewerDestroy(Viewer); 38 39 #define VIEWER_FORMAT_ASCII_DEFAULT 0 40 #define VIEWER_FORMAT_ASCII_MATLAB 1 41 #define VIEWER_FORMAT_ASCII_IMPL 2 42 #define VIEWER_FORMAT_ASCII_INFO 3 43 #define VIEWER_FORMAT_ASCII_INFO_LONG 4 44 #define VIEWER_FORMAT_ASCII_COMMON 5 45 #define VIEWER_FORMAT_ASCII_SYMMODU 6 46 #define VIEWER_FORMAT_ASCII_INDEX 7 47 #define VIEWER_FORMAT_ASCII_DENSE 8 48 49 #define VIEWER_FORMAT_BINARY_DEFAULT 0 50 #define VIEWER_FORMAT_BINARY_NATIVE 1 51 52 #define VIEWER_FORMAT_DRAW_BASIC 0 53 #define VIEWER_FORMAT_DRAW_LG 1 54 #define VIEWER_FORMAT_DRAW_CONTOUR 2 55 56 extern int ViewerSetFormat(Viewer,int,char[]); 57 extern int ViewerPushFormat(Viewer,int,char[]); 58 extern int ViewerPopFormat(Viewer); 59 extern int ViewerGetFormat(Viewer,int*); 60 extern int ViewerFlush(Viewer); 61 62 /* 63 Operations explicit to a particular class of viewers 64 */ 65 extern int ViewerASCIIGetPointer(Viewer,FILE**); 66 extern int ViewerASCIIPrintf(Viewer,const char[],...); 67 extern int ViewerASCIIPushTab(Viewer); 68 extern int ViewerASCIIPopTab(Viewer); 69 extern int ViewerBinaryGetDescriptor(Viewer,int*); 70 extern int ViewerBinaryGetInfoPointer(Viewer,FILE **); 71 extern int ViewerStringSPrintf(Viewer,char *,...); 72 extern int ViewerDrawClear(Viewer); 73 74 /* 75 These are all the default viewers that do not have 76 to be explicitly opened 77 */ 78 extern Viewer VIEWER_STDOUT_SELF; 79 extern Viewer VIEWER_STDERR_SELF; 80 extern Viewer VIEWER_STDOUT_WORLD; 81 extern Viewer VIEWER_STDOUT_(MPI_Comm); 82 extern int VIEWER_STDOUT_Destroy(MPI_Comm); 83 extern Viewer VIEWER_STDERR_WORLD; 84 extern Viewer VIEWER_STDERR_(MPI_Comm); 85 extern int VIEWER_STDERR_Destroy(MPI_Comm); 86 extern Viewer VIEWER_DRAWX_WORLD_PRIVATE_0; 87 extern Viewer VIEWER_DRAWX_WORLD_PRIVATE_1; 88 extern Viewer VIEWER_DRAWX_WORLD_PRIVATE_2; 89 extern Viewer VIEWER_DRAWX_SELF_PRIVATE; 90 extern Viewer VIEWER_MATLAB_WORLD_PRIVATE; 91 extern Viewer VIEWER_MATLAB_SELF_PRIVATE; /* not yet used */ 92 93 extern int ViewerInitializeDrawXWorld_Private_0(void); 94 extern int ViewerInitializeDrawXWorld_Private_1(void); 95 extern int ViewerInitializeDrawXWorld_Private_2(void); 96 extern int ViewerInitializeDrawXSelf_Private(void); 97 extern int ViewerInitializeMatlabWorld_Private(void); 98 extern Viewer VIEWER_DRAWX_(MPI_Comm); 99 extern int VIEWER_DRAWX_Destroy(MPI_Comm); 100 101 #define VIEWER_DRAWX_WORLD_0 \ 102 (ViewerInitializeDrawXWorld_Private_0(),VIEWER_DRAWX_WORLD_PRIVATE_0) 103 #define VIEWER_DRAWX_WORLD_1 \ 104 (ViewerInitializeDrawXWorld_Private_1(),VIEWER_DRAWX_WORLD_PRIVATE_1) 105 #define VIEWER_DRAWX_WORLD_2 \ 106 (ViewerInitializeDrawXWorld_Private_2(),VIEWER_DRAWX_WORLD_PRIVATE_2) 107 108 #define VIEWER_DRAWX_SELF \ 109 (ViewerInitializeDrawXSelf_Private(),VIEWER_DRAWX_SELF_PRIVATE) 110 #define VIEWER_DRAWX_WORLD VIEWER_DRAWX_WORLD_0 111 112 #define VIEWER_MATLAB_WORLD \ 113 (ViewerInitializeMatlabWorld_Private(),VIEWER_MATLAB_WORLD_PRIVATE) 114 115 /* 116 Viewer based on the ALICE Memory Snooper 117 */ 118 #if defined(HAVE_AMS) 119 #include "ams.h" 120 extern int ViewerAMSGetAMSComm(Viewer,AMS_Comm *); 121 extern int ViewerAMSOpen(MPI_Comm,const char[],Viewer*); 122 extern Viewer VIEWER_AMS_(MPI_Comm); 123 extern int VIEWER_AMS_Destroy(MPI_Comm); 124 extern Viewer VIEWER_AMS_WORLD_PRIVATE; 125 extern int ViewerInitializeAMSWorld_Private(void); 126 #define VIEWER_AMS_WORLD (ViewerInitializeAMSWorld_Private(),VIEWER_AMS_WORLD_PRIVATE) 127 #endif 128 129 /* 130 Viewer utility routines used by PETSc that are not normally used 131 by users. 132 */ 133 extern int ViewerMatlabPutScalar_Private(Viewer,int,int,Scalar*); 134 extern int ViewerMatlabPutDouble_Private(Viewer,int,int,double*); 135 extern int ViewerMatlabPutInt_Private(Viewer,int,int*); 136 extern int ViewerMatlabPutSparse_Private(Viewer,int,int,int,Scalar*,int*,int *); 137 extern int ViewerInitializeASCII_Private(void); 138 extern int ViewerDestroyASCII_Private(void); 139 extern int ViewerDestroyDrawX_Private(void); 140 extern int ViewerDestroyMatlab_Private(void); 141 extern int ViewerDestroyAMS_Private(void); 142 143 #endif 144 145