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