1 /* $Id: petscviewer.h,v 1.85 2001/08/06 21:13:28 bsmith Exp $ */ 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 /*S 10 PetscViewer - Abstract PETSc object that helps view (in ASCII, binary, graphically etc) 11 other PETSc objects 12 13 Level: beginner 14 15 Concepts: viewing 16 17 .seealso: PetscViewerCreate(), PetscViewerSetType(), PetscViewerType 18 S*/ 19 typedef struct _p_PetscViewer* PetscViewer; 20 21 /* 22 petsc.h must be included AFTER the definition of PetscViewer for ADIC to 23 process correctly. 24 */ 25 #include "petsc.h" 26 27 #define PETSC_VIEWER_COOKIE PETSC_COOKIE+1 28 29 /*E 30 PetscViewerType - String with the name of a PETSc PETScViewer 31 32 Level: beginner 33 34 .seealso: PetscViewerSetType(), PetscViewer 35 E*/ 36 typedef char* PetscViewerType; 37 #define PETSC_VIEWER_SOCKET "socket" 38 #define PETSC_VIEWER_ASCII "ascii" 39 #define PETSC_VIEWER_BINARY "binary" 40 #define PETSC_VIEWER_STRING "string" 41 #define PETSC_VIEWER_DRAW "draw" 42 #define PETSC_VIEWER_AMS "ams" 43 44 extern PetscFList PetscViewerList; 45 EXTERN int PetscViewerRegisterAll(char *); 46 EXTERN int PetscViewerRegisterDestroy(void); 47 48 EXTERN int PetscViewerRegister(char*,char*,char*,int(*)(PetscViewer)); 49 #if defined(PETSC_USE_DYNAMIC_LIBRARIES) 50 #define PetscViewerRegisterDynamic(a,b,c,d) PetscViewerRegister(a,b,c,0) 51 #else 52 #define PetscViewerRegisterDynamic(a,b,c,d) PetscViewerRegister(a,b,c,d) 53 #endif 54 EXTERN int PetscViewerCreate(MPI_Comm,PetscViewer*); 55 EXTERN int PetscViewerSetFromOptions(PetscViewer); 56 57 EXTERN int PetscViewerASCIIOpen(MPI_Comm,const char[],PetscViewer*); 58 typedef enum {PETSC_BINARY_RDONLY,PETSC_BINARY_WRONLY,PETSC_BINARY_CREATE} PetscViewerBinaryType; 59 EXTERN int PetscViewerBinaryOpen(MPI_Comm,const char[],PetscViewerBinaryType,PetscViewer*); 60 EXTERN int PetscViewerSocketOpen(MPI_Comm,const char[],int,PetscViewer*); 61 EXTERN int PetscViewerStringOpen(MPI_Comm,char[],int,PetscViewer*); 62 EXTERN int PetscViewerDrawOpen(MPI_Comm,const char[],const char[],int,int,int,int,PetscViewer*); 63 EXTERN int PetscViewerAMSSetCommName(PetscViewer,const char[]); 64 65 EXTERN int PetscViewerGetType(PetscViewer,PetscViewerType*); 66 EXTERN int PetscViewerSetType(PetscViewer,PetscViewerType); 67 EXTERN int PetscViewerDestroy(PetscViewer); 68 EXTERN int PetscViewerGetSingleton(PetscViewer,PetscViewer*); 69 EXTERN int PetscViewerRestoreSingleton(PetscViewer,PetscViewer*); 70 71 72 /*E 73 PetscViewerFormat - Way a viewer presents the object 74 75 Level: beginner 76 77 .seealso: PetscViewerSetFormat(), PetscViewer, PetscViewerType, PetscViewerPushFormat(), PetscViewerPopFormat() 78 E*/ 79 typedef enum { 80 PETSC_VIEWER_ASCII_DEFAULT, 81 PETSC_VIEWER_ASCII_MATLAB, 82 PETSC_VIEWER_ASCII_IMPL, 83 PETSC_VIEWER_ASCII_INFO, 84 PETSC_VIEWER_ASCII_INFO_LONG, 85 PETSC_VIEWER_ASCII_COMMON, 86 PETSC_VIEWER_ASCII_SYMMODU, 87 PETSC_VIEWER_ASCII_INDEX, 88 PETSC_VIEWER_ASCII_DENSE, 89 PETSC_VIEWER_BINARY_DEFAULT, 90 PETSC_VIEWER_BINARY_NATIVE, 91 PETSC_VIEWER_DRAW_BASIC, 92 PETSC_VIEWER_DRAW_LG, 93 PETSC_VIEWER_DRAW_CONTOUR, 94 PETSC_VIEWER_DRAW_PORTS, 95 PETSC_VIEWER_NATIVE, 96 PETSC_VIEWER_NOFORMAT} PetscViewerFormat; 97 98 EXTERN int PetscViewerSetFormat(PetscViewer,PetscViewerFormat); 99 EXTERN int PetscViewerPushFormat(PetscViewer,PetscViewerFormat); 100 EXTERN int PetscViewerPopFormat(PetscViewer); 101 EXTERN int PetscViewerGetFormat(PetscViewer,PetscViewerFormat*); 102 EXTERN int PetscViewerFlush(PetscViewer); 103 104 /* 105 Operations explicit to a particular class of viewers 106 */ 107 EXTERN int PetscViewerASCIIGetPointer(PetscViewer,FILE**); 108 EXTERN int PetscViewerASCIIPrintf(PetscViewer,const char[],...); 109 EXTERN int PetscViewerASCIISynchronizedPrintf(PetscViewer,const char[],...); 110 EXTERN int PetscViewerASCIIPushTab(PetscViewer); 111 EXTERN int PetscViewerASCIIPopTab(PetscViewer); 112 EXTERN int PetscViewerASCIIUseTabs(PetscViewer,PetscTruth); 113 EXTERN int PetscViewerASCIISetTab(PetscViewer,int); 114 EXTERN int PetscViewerBinaryGetDescriptor(PetscViewer,int*); 115 EXTERN int PetscViewerBinaryGetInfoPointer(PetscViewer,FILE **); 116 EXTERN int PetscViewerBinarySetType(PetscViewer,PetscViewerBinaryType); 117 EXTERN int PetscViewerStringSPrintf(PetscViewer,char *,...); 118 EXTERN int PetscViewerStringSetString(PetscViewer,char[],int); 119 EXTERN int PetscViewerDrawClear(PetscViewer); 120 EXTERN int PetscViewerDrawSetInfo(PetscViewer,const char[],const char[],int,int,int,int); 121 EXTERN int PetscViewerSocketSetConnection(PetscViewer,const char[],int); 122 123 EXTERN int PetscViewerSetFilename(PetscViewer,const char[]); 124 EXTERN int PetscViewerGetFilename(PetscViewer,char**); 125 126 /* 127 These are all the default viewers that do not have 128 to be explicitly opened 129 */ 130 EXTERN PetscViewer PETSC_VIEWER_STDOUT_(MPI_Comm); 131 EXTERN PetscViewer PETSC_VIEWER_STDERR_(MPI_Comm); 132 EXTERN PetscViewer PETSC_VIEWER_DRAW_(MPI_Comm); 133 EXTERN PetscViewer PETSC_VIEWER_SOCKET_(MPI_Comm); 134 EXTERN PetscViewer PETSC_VIEWER_BINARY_(MPI_Comm); 135 136 #define PETSC_VIEWER_STDOUT_SELF PETSC_VIEWER_STDOUT_(PETSC_COMM_SELF) 137 #define PETSC_VIEWER_STDOUT_WORLD PETSC_VIEWER_STDOUT_(PETSC_COMM_WORLD) 138 #define PETSC_VIEWER_STDERR_SELF PETSC_VIEWER_STDERR_(PETSC_COMM_SELF) 139 #define PETSC_VIEWER_STDERR_WORLD PETSC_VIEWER_STDERR_(PETSC_COMM_WORLD) 140 #define PETSC_VIEWER_DRAW_SELF PETSC_VIEWER_DRAW_(PETSC_COMM_SELF) 141 #define PETSC_VIEWER_DRAW_WORLD PETSC_VIEWER_DRAW_(PETSC_COMM_WORLD) 142 #define PETSC_VIEWER_SOCKET_WORLD PETSC_VIEWER_SOCKET_(PETSC_COMM_WORLD) 143 #define PETSC_VIEWER_SOCKET_SELF PETSC_VIEWER_SOCKET_(PETSC_COMM_SELF) 144 #define PETSC_VIEWER_BINARY_WORLD PETSC_VIEWER_BINARY_(PETSC_COMM_WORLD) 145 #define PETSC_VIEWER_BINARY_SELF PETSC_VIEWER_BINARY_(PETSC_COMM_SELF) 146 147 /* 148 PetscViewer based on the ALICE Memory Snooper 149 */ 150 #if defined(PETSC_HAVE_AMS) 151 #include "ams.h" 152 EXTERN int PetscViewerAMSGetAMSComm(PetscViewer,AMS_Comm *); 153 EXTERN int PetscViewerAMSOpen(MPI_Comm,const char[],PetscViewer*); 154 EXTERN int PetscViewerAMSLock(PetscViewer); 155 EXTERN PetscViewer PETSC_VIEWER_AMS_(MPI_Comm); 156 EXTERN int PETSC_VIEWER_AMS_Destroy(MPI_Comm); 157 #define PETSC_VIEWER_AMS_WORLD PETSC_VIEWER_AMS_(PETSC_COMM_WORLD) 158 #endif 159 160 /* 161 PetscViewer utility routines used by PETSc that are not normally used 162 by users. 163 */ 164 EXTERN int PetscViewerSocketPutScalar(PetscViewer,int,int,PetscScalar*); 165 EXTERN int PetscViewerSocketPutReal(PetscViewer,int,int,PetscReal*); 166 EXTERN int PetscViewerSocketPutInt(PetscViewer,int,int*); 167 EXTERN int PetscViewerSocketPutSparse_Private(PetscViewer,int,int,int,PetscScalar*,int*,int *); 168 EXTERN int PetscViewerDestroyAMS_Private(void); 169 170 /*S 171 PetscViewers - Abstract collection of PetscViewers 172 173 Level: intermediate 174 175 Concepts: viewing 176 177 .seealso: PetscViewerCreate(), PetscViewerSetType(), PetscViewerType, PetscViewer, PetscViewersCreate(), 178 PetscViewersGetViewer() 179 S*/ 180 typedef struct _p_PetscViewers* PetscViewers; 181 EXTERN int PetscViewersCreate(MPI_Comm,PetscViewers*); 182 EXTERN int PetscViewersDestroy(PetscViewers); 183 EXTERN int PetscViewersGetViewer(PetscViewers,int,PetscViewer*); 184 185 #endif 186 187 188 189 190