1 /* $Id: petscviewer.h,v 1.79 2001/01/19 20:40:02 bsmith Exp bsmith $ */ 2 /* 3 PetscViewers are objects where other objects can be looked at or stored. 4 */ 5 6 #if !defined(__PETSCVIEWER_H) 7 #define __PETSCVIEWER_H 8 9 typedef struct _p_PetscViewer* PetscViewer; 10 11 /* 12 petsc.h must be included AFTER the definition of PetscViewer for ADIC to 13 process correctly. 14 */ 15 #include "petsc.h" 16 17 #define PETSC_VIEWER_COOKIE PETSC_COOKIE+1 18 typedef char*PetscViewerType; 19 20 #define PETSC_VIEWER_SOCKET "socket" 21 #define PETSC_VIEWER_ASCII "ascii" 22 #define PETSC_BINARY_VIEWER "binary" 23 #define PETSC_VIEWER_STRING "string" 24 #define PETSC_DRAW_VIEWER "draw" 25 #define PETSC_VIEWER_AMS "ams" 26 27 extern PetscFList PetscViewerList; 28 EXTERN int PetscViewerRegisterAll(char *); 29 EXTERN int PetscViewerRegisterDestroy(void); 30 31 EXTERN int PetscViewerRegister(char*,char*,char*,int(*)(PetscViewer)); 32 #if defined(PETSC_USE_DYNAMIC_LIBRARIES) 33 #define PetscViewerRegisterDynamic(a,b,c,d) PetscViewerRegister(a,b,c,0) 34 #else 35 #define PetscViewerRegisterDynamic(a,b,c,d) PetscViewerRegister(a,b,c,d) 36 #endif 37 EXTERN int PetscViewerCreate(MPI_Comm,PetscViewer*); 38 EXTERN int PetscViewerSetFromOptions(PetscViewer); 39 40 41 EXTERN int PetscViewerASCIIOpen(MPI_Comm,const char[],PetscViewer*); 42 typedef enum {PETSC_BINARY_RDONLY,PETSC_BINARY_WRONLY,PETSC_BINARY_CREATE} PetscViewerBinaryType; 43 EXTERN int PetscViewerBinaryOpen(MPI_Comm,const char[],PetscViewerBinaryType,PetscViewer*); 44 EXTERN int PetscViewerSocketOpen(MPI_Comm,const char[],int,PetscViewer*); 45 EXTERN int PetscViewerStringOpen(MPI_Comm,char[],int,PetscViewer*); 46 EXTERN int PetscViewerDrawOpen(MPI_Comm,const char[],const char[],int,int,int,int,PetscViewer*); 47 EXTERN int PetscViewerAMSSetCommName(PetscViewer,const char[]); 48 49 EXTERN int PetscViewerGetType(PetscViewer,PetscViewerType*); 50 EXTERN int PetscViewerSetType(PetscViewer,PetscViewerType); 51 EXTERN int PetscViewerDestroy(PetscViewer); 52 EXTERN int PetscViewerGetSingleton(PetscViewer,PetscViewer*); 53 EXTERN int PetscViewerRestoreSingleton(PetscViewer,PetscViewer*); 54 55 #define PETSC_VIEWER_FORMAT_ASCII_DEFAULT 0 56 #define PETSC_VIEWER_FORMAT_ASCII_MATLAB 1 57 #define PETSC_VIEWER_FORMAT_ASCII_IMPL 2 58 #define PETSC_VIEWER_FORMAT_ASCII_INFO 3 59 #define PETSC_VIEWER_FORMAT_ASCII_INFO_LONG 4 60 #define PETSC_VIEWER_FORMAT_ASCII_COMMON 5 61 #define PETSC_VIEWER_FORMAT_ASCII_SYMMODU 6 62 #define PETSC_VIEWER_FORMAT_ASCII_INDEX 7 63 #define PETSC_VIEWER_FORMAT_ASCII_DENSE 8 64 65 #define PETSC_VIEWER_FORMAT_BINARY_DEFAULT 9 66 #define PETSC_VIEWER_FORMAT_BINARY_NATIVE 10 67 68 #define PETSC_VIEWER_FORMAT_DRAW_BASIC 11 69 #define PETSC_VIEWER_FORMAT_DRAW_LG 12 70 #define PETSC_VIEWER_FORMAT_DRAW_CONTOUR 13 71 #define PETSC_VIEWER_FORMAT_DRAW_PORTS 15 72 73 #define PETSC_VIEWER_FORMAT_NATIVE 14 74 75 EXTERN int PetscViewerSetFormat(PetscViewer,int,char[]); 76 EXTERN int PetscViewerPushFormat(PetscViewer,int,char[]); 77 EXTERN int PetscViewerPopFormat(PetscViewer); 78 EXTERN int PetscViewerGetFormat(PetscViewer,int*); 79 EXTERN int PetscViewerFlush(PetscViewer); 80 81 /* 82 Operations explicit to a particular class of viewers 83 */ 84 EXTERN int PetscViewerASCIIGetPointer(PetscViewer,FILE**); 85 EXTERN int PetscViewerASCIIPrintf(PetscViewer,const char[],...); 86 EXTERN int PetscViewerASCIISynchronizedPrintf(PetscViewer,const char[],...); 87 EXTERN int PetscViewerASCIIPushTab(PetscViewer); 88 EXTERN int PetscViewerASCIIPopTab(PetscViewer); 89 EXTERN int PetscViewerASCIIUseTabs(PetscViewer,PetscTruth); 90 EXTERN int PetscViewerASCIISetTab(PetscViewer,int); 91 EXTERN int PetscViewerBinaryGetDescriptor(PetscViewer,int*); 92 EXTERN int PetscViewerBinaryGetInfoPointer(PetscViewer,FILE **); 93 EXTERN int PetscViewerBinarySetType(PetscViewer,PetscViewerBinaryType); 94 EXTERN int PetscViewerStringSPrintf(PetscViewer,char *,...); 95 EXTERN int PetscViewerStringSetString(PetscViewer,char[],int); 96 EXTERN int PetscViewerDrawClear(PetscViewer); 97 EXTERN int PetscViewerDrawSetInfo(PetscViewer,const char[],const char[],int,int,int,int); 98 EXTERN int PetscViewerSocketSetConnection(PetscViewer,const char[],int); 99 100 EXTERN int PetscViewerSetFilename(PetscViewer,const char[]); 101 EXTERN int PetscViewerGetFilename(PetscViewer,char**); 102 103 /* 104 These are all the default viewers that do not have 105 to be explicitly opened 106 */ 107 EXTERN PetscViewer PETSC_VIEWER_STDOUT_(MPI_Comm); 108 EXTERN PetscViewer PETSC_VIEWER_STDERR_(MPI_Comm); 109 EXTERN PetscViewer PETSC_VIEWER_DRAW_(MPI_Comm); 110 EXTERN PetscViewer PETSC_VIEWER_SOCKET_(MPI_Comm); 111 EXTERN PetscViewer PETSC_VIEWER_BINARY_(MPI_Comm); 112 113 #define PETSC_VIEWER_STDOUT_SELF PETSC_VIEWER_STDOUT_(PETSC_COMM_SELF) 114 #define PETSC_VIEWER_STDOUT_WORLD PETSC_VIEWER_STDOUT_(PETSC_COMM_WORLD) 115 #define PETSC_VIEWER_STDERR_SELF PETSC_VIEWER_STDERR_(PETSC_COMM_SELF) 116 #define PETSC_VIEWER_STDERR_WORLD PETSC_VIEWER_STDERR_(PETSC_COMM_WORLD) 117 #define PETSC_VIEWER_DRAW_SELF PETSC_VIEWER_DRAW_(PETSC_COMM_SELF) 118 #define PETSC_VIEWER_DRAW_WORLD PETSC_VIEWER_DRAW_(PETSC_COMM_WORLD) 119 #define PETSC_VIEWER_SOCKET_WORLD PETSC_VIEWER_SOCKET_(PETSC_COMM_WORLD) 120 #define PETSC_VIEWER_SOCKET_SELF PETSC_VIEWER_SOCKET_(PETSC_COMM_SELF) 121 #define PETSC_VIEWER_BINARY_WORLD PETSC_VIEWER_BINARY_(PETSC_COMM_WORLD) 122 #define PETSC_VIEWER_BINARY_SELF PETSC_VIEWER_BINARY_(PETSC_COMM_SELF) 123 124 /* 125 PetscViewer based on the ALICE Memory Snooper 126 */ 127 #if defined(PETSC_HAVE_AMS) 128 #include "ams.h" 129 EXTERN int PetscViewerAMSGetAMSComm(PetscViewer,AMS_Comm *); 130 EXTERN int PetscViewerAMSOpen(MPI_Comm,const char[],PetscViewer*); 131 EXTERN PetscViewer PETSC_VIEWER_AMS_(MPI_Comm); 132 EXTERN int PETSC_VIEWER_AMS_Destroy(MPI_Comm); 133 #define PETSC_VIEWER_AMS_WORLD PETSC_VIEWER_AMS_(PETSC_COMM_WORLD) 134 #endif 135 136 /* 137 PetscViewer utility routines used by PETSc that are not normally used 138 by users. 139 */ 140 EXTERN int PetscViewerSocketPutScalar(PetscViewer,int,int,Scalar*); 141 EXTERN int PetscViewerSocketPutReal(PetscViewer,int,int,double*); 142 EXTERN int PetscViewerSocketPutInt(PetscViewer,int,int*); 143 EXTERN int PetscViewerSocketPutSparse_Private(PetscViewer,int,int,int,Scalar*,int*,int *); 144 EXTERN int PetscViewerDestroyAMS_Private(void); 145 146 /* 147 Manages sets of viewers 148 */ 149 typedef struct _p_PetscViewers* PetscViewers; 150 EXTERN int PetscViewersCreate(MPI_Comm,PetscViewers*); 151 EXTERN int PetscViewersDestroy(PetscViewers); 152 EXTERN int PetscViewersGetViewer(PetscViewers,int,PetscViewer*); 153 154 #endif 155 156 157 158 159