1 /* $Id: petscviewer.h,v 1.81 2001/01/19 23:19:27 balay 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_VIEWER_BINARY "binary" 23 #define PETSC_VIEWER_STRING "string" 24 #define PETSC_VIEWER_DRAW "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 56 typedef enum { 57 PETSC_VIEWER_ASCII_DEFAULT, 58 PETSC_VIEWER_ASCII_MATLAB, 59 PETSC_VIEWER_ASCII_IMPL, 60 PETSC_VIEWER_ASCII_INFO, 61 PETSC_VIEWER_ASCII_INFO_LONG, 62 PETSC_VIEWER_ASCII_COMMON, 63 PETSC_VIEWER_ASCII_SYMMODU, 64 PETSC_VIEWER_ASCII_INDEX, 65 PETSC_VIEWER_ASCII_DENSE, 66 PETSC_VIEWER_BINARY_DEFAULT, 67 PETSC_VIEWER_BINARY_NATIVE, 68 PETSC_VIEWER_DRAW_BASIC, 69 PETSC_VIEWER_DRAW_LG, 70 PETSC_VIEWER_DRAW_CONTOUR, 71 PETSC_VIEWER_DRAW_PORTS, 72 PETSC_VIEWER_NATIVE, 73 PETSC_VIEWER_NOFORMAT} PetscViewerFormat; 74 75 76 77 EXTERN int PetscViewerSetFormat(PetscViewer,PetscViewerFormat); 78 EXTERN int PetscViewerPushFormat(PetscViewer,PetscViewerFormat); 79 EXTERN int PetscViewerPopFormat(PetscViewer); 80 EXTERN int PetscViewerGetFormat(PetscViewer,PetscViewerFormat*); 81 EXTERN int PetscViewerFlush(PetscViewer); 82 83 /* 84 Operations explicit to a particular class of viewers 85 */ 86 EXTERN int PetscViewerASCIIGetPointer(PetscViewer,FILE**); 87 EXTERN int PetscViewerASCIIPrintf(PetscViewer,const char[],...); 88 EXTERN int PetscViewerASCIISynchronizedPrintf(PetscViewer,const char[],...); 89 EXTERN int PetscViewerASCIIPushTab(PetscViewer); 90 EXTERN int PetscViewerASCIIPopTab(PetscViewer); 91 EXTERN int PetscViewerASCIIUseTabs(PetscViewer,PetscTruth); 92 EXTERN int PetscViewerASCIISetTab(PetscViewer,int); 93 EXTERN int PetscViewerBinaryGetDescriptor(PetscViewer,int*); 94 EXTERN int PetscViewerBinaryGetInfoPointer(PetscViewer,FILE **); 95 EXTERN int PetscViewerBinarySetType(PetscViewer,PetscViewerBinaryType); 96 EXTERN int PetscViewerStringSPrintf(PetscViewer,char *,...); 97 EXTERN int PetscViewerStringSetString(PetscViewer,char[],int); 98 EXTERN int PetscViewerDrawClear(PetscViewer); 99 EXTERN int PetscViewerDrawSetInfo(PetscViewer,const char[],const char[],int,int,int,int); 100 EXTERN int PetscViewerSocketSetConnection(PetscViewer,const char[],int); 101 102 EXTERN int PetscViewerSetFilename(PetscViewer,const char[]); 103 EXTERN int PetscViewerGetFilename(PetscViewer,char**); 104 105 /* 106 These are all the default viewers that do not have 107 to be explicitly opened 108 */ 109 EXTERN PetscViewer PETSC_VIEWER_STDOUT_(MPI_Comm); 110 EXTERN PetscViewer PETSC_VIEWER_STDERR_(MPI_Comm); 111 EXTERN PetscViewer PETSC_VIEWER_DRAW_(MPI_Comm); 112 EXTERN PetscViewer PETSC_VIEWER_SOCKET_(MPI_Comm); 113 EXTERN PetscViewer PETSC_VIEWER_BINARY_(MPI_Comm); 114 115 #define PETSC_VIEWER_STDOUT_SELF PETSC_VIEWER_STDOUT_(PETSC_COMM_SELF) 116 #define PETSC_VIEWER_STDOUT_WORLD PETSC_VIEWER_STDOUT_(PETSC_COMM_WORLD) 117 #define PETSC_VIEWER_STDERR_SELF PETSC_VIEWER_STDERR_(PETSC_COMM_SELF) 118 #define PETSC_VIEWER_STDERR_WORLD PETSC_VIEWER_STDERR_(PETSC_COMM_WORLD) 119 #define PETSC_VIEWER_DRAW_SELF PETSC_VIEWER_DRAW_(PETSC_COMM_SELF) 120 #define PETSC_VIEWER_DRAW_WORLD PETSC_VIEWER_DRAW_(PETSC_COMM_WORLD) 121 #define PETSC_VIEWER_SOCKET_WORLD PETSC_VIEWER_SOCKET_(PETSC_COMM_WORLD) 122 #define PETSC_VIEWER_SOCKET_SELF PETSC_VIEWER_SOCKET_(PETSC_COMM_SELF) 123 #define PETSC_VIEWER_BINARY_WORLD PETSC_VIEWER_BINARY_(PETSC_COMM_WORLD) 124 #define PETSC_VIEWER_BINARY_SELF PETSC_VIEWER_BINARY_(PETSC_COMM_SELF) 125 126 /* 127 PetscViewer based on the ALICE Memory Snooper 128 */ 129 #if defined(PETSC_HAVE_AMS) 130 #include "ams.h" 131 EXTERN int PetscViewerAMSGetAMSComm(PetscViewer,AMS_Comm *); 132 EXTERN int PetscViewerAMSOpen(MPI_Comm,const char[],PetscViewer*); 133 EXTERN PetscViewer PETSC_VIEWER_AMS_(MPI_Comm); 134 EXTERN int PETSC_VIEWER_AMS_Destroy(MPI_Comm); 135 #define PETSC_VIEWER_AMS_WORLD PETSC_VIEWER_AMS_(PETSC_COMM_WORLD) 136 #endif 137 138 /* 139 PetscViewer utility routines used by PETSc that are not normally used 140 by users. 141 */ 142 EXTERN int PetscViewerSocketPutScalar(PetscViewer,int,int,Scalar*); 143 EXTERN int PetscViewerSocketPutReal(PetscViewer,int,int,double*); 144 EXTERN int PetscViewerSocketPutInt(PetscViewer,int,int*); 145 EXTERN int PetscViewerSocketPutSparse_Private(PetscViewer,int,int,int,Scalar*,int*,int *); 146 EXTERN int PetscViewerDestroyAMS_Private(void); 147 148 /* 149 Manages sets of viewers 150 */ 151 typedef struct _p_PetscViewers* PetscViewers; 152 EXTERN int PetscViewersCreate(MPI_Comm,PetscViewers*); 153 EXTERN int PetscViewersDestroy(PetscViewers); 154 EXTERN int PetscViewersGetViewer(PetscViewers,int,PetscViewer*); 155 156 #endif 157 158 159 160 161