xref: /petsc/include/petscviewer.h (revision b5758dff40dc4232f7fa9713b5481f7e0e0d5d24)
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