1 /* $Id: petscviewer.h,v 1.77 2000/07/27 15:46:05 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 PetscViewerGetOutputname(PetscViewer,char**); 50 EXTERN int PetscViewerGetType(PetscViewer,PetscViewerType*); 51 EXTERN int PetscViewerSetType(PetscViewer,PetscViewerType); 52 EXTERN int PetscViewerDestroy(PetscViewer); 53 EXTERN int PetscViewerGetSingleton(PetscViewer,PetscViewer*); 54 EXTERN int PetscViewerRestoreSingleton(PetscViewer,PetscViewer*); 55 56 #define PETSC_VIEWER_FORMAT_ASCII_DEFAULT 0 57 #define PETSC_VIEWER_FORMAT_ASCII_MATLAB 1 58 #define PETSC_VIEWER_FORMAT_ASCII_IMPL 2 59 #define PETSC_VIEWER_FORMAT_ASCII_INFO 3 60 #define PETSC_VIEWER_FORMAT_ASCII_INFO_LONG 4 61 #define PETSC_VIEWER_FORMAT_ASCII_COMMON 5 62 #define PETSC_VIEWER_FORMAT_ASCII_SYMMODU 6 63 #define PETSC_VIEWER_FORMAT_ASCII_INDEX 7 64 #define PETSC_VIEWER_FORMAT_ASCII_DENSE 8 65 66 #define PETSC_VIEWER_FORMAT_BINARY_DEFAULT 9 67 #define PETSC_VIEWER_FORMAT_BINARY_NATIVE 10 68 69 #define PETSC_VIEWER_FORMAT_DRAW_BASIC 11 70 #define PETSC_VIEWER_FORMAT_DRAW_LG 12 71 #define PETSC_VIEWER_FORMAT_DRAW_CONTOUR 13 72 #define PETSC_VIEWER_FORMAT_DRAW_PORTS 15 73 74 #define PETSC_VIEWER_FORMAT_NATIVE 14 75 76 EXTERN int PetscViewerSetFormat(PetscViewer,int,char[]); 77 EXTERN int PetscViewerPushFormat(PetscViewer,int,char[]); 78 EXTERN int PetscViewerPopFormat(PetscViewer); 79 EXTERN int PetscViewerGetFormat(PetscViewer,int*); 80 EXTERN int PetscViewerFlush(PetscViewer); 81 82 /* 83 Operations explicit to a particular class of viewers 84 */ 85 EXTERN int PetscViewerASCIIGetPointer(PetscViewer,FILE**); 86 EXTERN int PetscViewerASCIIPrintf(PetscViewer,const char[],...); 87 EXTERN int PetscViewerASCIISynchronizedPrintf(PetscViewer,const char[],...); 88 EXTERN int PetscViewerASCIIPushTab(PetscViewer); 89 EXTERN int PetscViewerASCIIPopTab(PetscViewer); 90 EXTERN int PetscViewerASCIIUseTabs(PetscViewer,PetscTruth); 91 EXTERN int PetscViewerASCIISetTab(PetscViewer,int); 92 EXTERN int PetscViewerBinaryGetDescriptor(PetscViewer,int*); 93 EXTERN int PetscViewerBinaryGetInfoPointer(PetscViewer,FILE **); 94 EXTERN int PetscViewerBinarySetType(PetscViewer,PetscViewerBinaryType); 95 EXTERN int PetscViewerStringSPrintf(PetscViewer,char *,...); 96 EXTERN int PetscViewerStringSetString(PetscViewer,char[],int); 97 EXTERN int PetscViewerDrawClear(PetscViewer); 98 EXTERN int PetscViewerDrawSetInfo(PetscViewer,const char[],const char[],int,int,int,int); 99 EXTERN int PetscViewerSocketSetConnection(PetscViewer,const char[],int); 100 101 EXTERN int PetscViewerSetFilename(PetscViewer,const char[]); 102 EXTERN int PetscViewerGetFilename(PetscViewer,char**); 103 104 /* 105 These are all the default viewers that do not have 106 to be explicitly opened 107 */ 108 EXTERN PetscViewer PETSC_VIEWER_STDOUT_(MPI_Comm); 109 EXTERN PetscViewer PETSC_VIEWER_STDERR_(MPI_Comm); 110 EXTERN PetscViewer PETSC_VIEWER_DRAW_(MPI_Comm); 111 EXTERN PetscViewer PETSC_VIEWER_SOCKET_(MPI_Comm); 112 EXTERN PetscViewer PETSC_VIEWER_BINARY_(MPI_Comm); 113 114 #define PETSC_VIEWER_STDOUT_SELF PETSC_VIEWER_STDOUT_(PETSC_COMM_SELF) 115 #define PETSC_VIEWER_STDOUT_WORLD PETSC_VIEWER_STDOUT_(PETSC_COMM_WORLD) 116 #define PETSC_VIEWER_STDERR_SELF PETSC_VIEWER_STDERR_(PETSC_COMM_SELF) 117 #define PETSC_VIEWER_STDERR_WORLD PETSC_VIEWER_STDERR_(PETSC_COMM_WORLD) 118 #define PETSC_VIEWER_DRAW_SELF PETSC_VIEWER_DRAW_(PETSC_COMM_SELF) 119 #define PETSC_VIEWER_DRAW_WORLD PETSC_VIEWER_DRAW_(PETSC_COMM_WORLD) 120 #define PETSC_VIEWER_SOCKET_WORLD PETSC_VIEWER_SOCKET_(PETSC_COMM_WORLD) 121 #define PETSC_VIEWER_SOCKET_SELF PETSC_VIEWER_SOCKET_(PETSC_COMM_SELF) 122 #define PETSC_VIEWER_BINARY_WORLD PETSC_VIEWER_BINARY_(PETSC_COMM_WORLD) 123 #define PETSC_VIEWER_BINARY_SELF PETSC_VIEWER_BINARY_(PETSC_COMM_SELF) 124 125 /* 126 PetscViewer based on the ALICE Memory Snooper 127 */ 128 #if defined(PETSC_HAVE_AMS) 129 #include "ams.h" 130 EXTERN int PetscViewerAMSGetAMSComm(PetscViewer,AMS_Comm *); 131 EXTERN int PetscViewerAMSOpen(MPI_Comm,const char[],PetscViewer*); 132 EXTERN PetscViewer PETSC_VIEWER_AMS_(MPI_Comm); 133 EXTERN int PETSC_VIEWER_AMS_Destroy(MPI_Comm); 134 #define PETSC_VIEWER_AMS_WORLD PETSC_VIEWER_AMS_(PETSC_COMM_WORLD) 135 #endif 136 137 /* 138 PetscViewer utility routines used by PETSc that are not normally used 139 by users. 140 */ 141 EXTERN int PetscViewerSocketPutScalar(PetscViewer,int,int,Scalar*); 142 EXTERN int PetscViewerSocketPutReal(PetscViewer,int,int,double*); 143 EXTERN int PetscViewerSocketPutInt(PetscViewer,int,int*); 144 EXTERN int PetscViewerSocketPutSparse_Private(PetscViewer,int,int,int,Scalar*,int*,int *); 145 EXTERN int PetscViewerDestroyAMS_Private(void); 146 147 /* 148 Manages sets of viewers 149 */ 150 typedef struct _p_PetscViewers* PetscViewers; 151 EXTERN int PetscViewersCreate(MPI_Comm,PetscViewers*); 152 EXTERN int PetscViewersDestroy(PetscViewers); 153 EXTERN int PetscViewersGetViewer(PetscViewers,int,PetscViewer*); 154 155 #endif 156 157 158 159 160