xref: /petsc/src/sys/classes/viewer/interface/viewa.c (revision 030f984af8d8bb4c203755d35bded3c05b3d83ce)
1 
2 #include <petsc/private/viewerimpl.h>  /*I "petscsys.h" I*/
3 
4 const char *const PetscViewerFormats[] = {
5   "DEFAULT",
6   "ASCII_MATLAB",
7   "ASCII_MATHEMATICA",
8   "ASCII_IMPL",
9   "ASCII_INFO",
10   "ASCII_INFO_DETAIL",
11   "ASCII_COMMON",
12   "ASCII_SYMMODU",
13   "ASCII_INDEX",
14   "ASCII_DENSE",
15   "ASCII_MATRIXMARKET",
16   "ASCII_VTK",
17   "ASCII_VTK_CELL",
18   "ASCII_VTK_COORDS",
19   "ASCII_PCICE",
20   "ASCII_PYTHON",
21   "ASCII_FACTOR_INFO",
22   "ASCII_LATEX",
23   "ASCII_XML",
24   "ASCII_FLAMEGRAPH",
25   "ASCII_GLVIS",
26   "ASCII_CSV",
27   "DRAW_BASIC",
28   "DRAW_LG",
29   "DRAW_LG_XRANGE",
30   "DRAW_CONTOUR",
31   "DRAW_PORTS",
32   "VTK_VTS",
33   "VTK_VTR",
34   "VTK_VTU",
35   "BINARY_MATLAB",
36   "NATIVE",
37   "HDF5_PETSC",
38   "HDF5_VIZ",
39   "HDF5_XDMF",
40   "HDF5_MAT",
41   "NOFORMAT",
42   "LOAD_BALANCE",
43   "FAILED",
44   "PetscViewerFormat",
45   "PETSC_VIEWER_",
46   NULL
47 };
48 
49 /*@C
50    PetscViewerSetFormat - Sets the format for PetscViewers.
51 
52    Logically Collective on PetscViewer
53 
54    This routine is deprecated, you should use PetscViewerPushFormat()/PetscViewerPopFormat()
55 
56    Input Parameters:
57 +  viewer - the PetscViewer
58 -  format - the format
59 
60    Level: intermediate
61 
62    Notes:
63    Available formats include
64 +    PETSC_VIEWER_DEFAULT - default format
65 .    PETSC_VIEWER_ASCII_MATLAB - MATLAB format
66 .    PETSC_VIEWER_ASCII_DENSE - print matrix as dense
67 .    PETSC_VIEWER_ASCII_IMPL - implementation-specific format
68       (which is in many cases the same as the default)
69 .    PETSC_VIEWER_ASCII_INFO - basic information about object
70 .    PETSC_VIEWER_ASCII_INFO_DETAIL - more detailed info
71        about object
72 .    PETSC_VIEWER_ASCII_COMMON - identical output format for
73        all objects of a particular type
74 .    PETSC_VIEWER_ASCII_INDEX - (for vectors) prints the vector
75        element number next to each vector entry
76 .    PETSC_VIEWER_ASCII_SYMMODU - print parallel vectors without
77        indicating the processor ranges
78 .    PETSC_VIEWER_ASCII_VTK - outputs the object to a VTK file (deprecated since v3.14)
79 .    PETSC_VIEWER_NATIVE - store the object to the binary
80        file in its native format (for example, dense
81        matrices are stored as dense), DMDA vectors are dumped directly to the
82        file instead of being first put in the natural ordering
83 .    PETSC_VIEWER_DRAW_BASIC - views the vector with a simple 1d plot
84 .    PETSC_VIEWER_DRAW_LG - views the vector with a line graph
85 -    PETSC_VIEWER_DRAW_CONTOUR - views the vector with a contour plot
86 
87    These formats are most often used for viewing matrices and vectors.
88 
89    If a format (for example PETSC_VIEWER_DRAW_CONTOUR) was applied to a viewer
90   where it didn't apply (PETSC_VIEWER_STDOUT_WORLD) it cause the default behavior
91   for that viewer to be used.
92 
93     Note: This supports passing in a NULL for the viewer for use in the debugger, but it should never be called in the code with a NULL viewer
94 
95 .seealso: PetscViewerGetFormat(), PetscViewerASCIIOpen(), PetscViewerBinaryOpen(), MatView(), VecView(), PetscViewerType,
96           PetscViewerPushFormat(), PetscViewerPopFormat(), PetscViewerDrawOpen(),PetscViewerSocketOpen()
97 @*/
98 PetscErrorCode  PetscViewerSetFormat(PetscViewer viewer,PetscViewerFormat format)
99 {
100   PetscFunctionBegin;
101   if (!viewer) viewer = PETSC_VIEWER_STDOUT_SELF;
102   PetscValidHeaderSpecific(viewer,PETSC_VIEWER_CLASSID,1);
103   PetscValidLogicalCollectiveEnum(viewer,format,2);
104   viewer->format = format;
105   PetscFunctionReturn(0);
106 }
107 
108 /*@C
109    PetscViewerPushFormat - Sets the format for file PetscViewers.
110 
111    Logically Collective on PetscViewer
112 
113    Input Parameters:
114 +  viewer - the PetscViewer
115 -  format - the format
116 
117    Level: intermediate
118 
119    Notes:
120    Available formats include
121 +    PETSC_VIEWER_DEFAULT - default format
122 .    PETSC_VIEWER_ASCII_MATLAB - MATLAB format
123 .    PETSC_VIEWER_ASCII_IMPL - implementation-specific format
124       (which is in many cases the same as the default)
125 .    PETSC_VIEWER_ASCII_INFO - basic information about object
126 .    PETSC_VIEWER_ASCII_INFO_DETAIL - more detailed info
127        about object
128 .    PETSC_VIEWER_ASCII_COMMON - identical output format for
129        all objects of a particular type
130 .    PETSC_VIEWER_ASCII_INDEX - (for vectors) prints the vector
131        element number next to each vector entry
132 .    PETSC_VIEWER_NATIVE - store the object to the binary
133        file in its native format (for example, dense
134        matrices are stored as dense), for DMDA vectors displays vectors in DMDA ordering, not natural
135 .    PETSC_VIEWER_DRAW_BASIC - views the vector with a simple 1d plot
136 .    PETSC_VIEWER_DRAW_LG - views the vector with a line graph
137 .    PETSC_VIEWER_DRAW_CONTOUR - views the vector with a contour plot
138 -    PETSC_VIEWER_ASCII_XML - saves the data in XML format, needed for PetscLogView() when viewing with PetscLogNestedBegin()
139 
140    These formats are most often used for viewing matrices and vectors.
141    Currently, the object name is used only in the MATLAB format.
142 
143 .seealso: PetscViewerASCIIOpen(), PetscViewerBinaryOpen(), MatView(), VecView(),
144           PetscViewerSetFormat(), PetscViewerPopFormat()
145 @*/
146 PetscErrorCode  PetscViewerPushFormat(PetscViewer viewer,PetscViewerFormat format)
147 {
148   PetscFunctionBegin;
149   PetscValidHeaderSpecific(viewer,PETSC_VIEWER_CLASSID,1);
150   PetscValidLogicalCollectiveEnum(viewer,format,2);
151   if (viewer->iformat > PETSCVIEWERFORMATPUSHESMAX-1) SETERRQ(PETSC_COMM_SELF,PETSC_ERR_ARG_OUTOFRANGE,"Too many PetscViewerPushFormat(), perhaps you forgot PetscViewerPopFormat()?");
152 
153   viewer->formats[viewer->iformat++] = viewer->format;
154   viewer->format                     = format;
155   PetscFunctionReturn(0);
156 }
157 
158 /*@C
159    PetscViewerPopFormat - Resets the format for file PetscViewers.
160 
161    Logically Collective on PetscViewer
162 
163    Input Parameters:
164 .  viewer - the PetscViewer
165 
166    Level: intermediate
167 
168 .seealso: PetscViewerASCIIOpen(), PetscViewerBinaryOpen(), MatView(), VecView(),
169           PetscViewerSetFormat(), PetscViewerPushFormat()
170 @*/
171 PetscErrorCode  PetscViewerPopFormat(PetscViewer viewer)
172 {
173   PetscFunctionBegin;
174   PetscValidHeaderSpecific(viewer,PETSC_VIEWER_CLASSID,1);
175   if (viewer->iformat <= 0) PetscFunctionReturn(0);
176 
177   viewer->format = viewer->formats[--viewer->iformat];
178   PetscFunctionReturn(0);
179 }
180 
181 /*@C
182    PetscViewerGetFormat - Gets the format for PetscViewers.
183 
184    Not collective
185 
186    Input Parameter:
187 .  viewer - the PetscViewer
188 
189    Output Parameter:
190 -  format - the format
191 
192    Level: intermediate
193 
194    Notes:
195    Available formats include
196 +    PETSC_VIEWER_DEFAULT - default format
197 .    PETSC_VIEWER_ASCII_MATLAB - MATLAB format
198 .    PETSC_VIEWER_ASCII_DENSE - print matrix as dense
199 .    PETSC_VIEWER_ASCII_IMPL - implementation-specific format
200       (which is in many cases the same as the default)
201 .    PETSC_VIEWER_ASCII_INFO - basic information about object
202 .    PETSC_VIEWER_ASCII_INFO_DETAIL - more detailed info
203        about object
204 .    PETSC_VIEWER_ASCII_COMMON - identical output format for
205        all objects of a particular type
206 .    PETSC_VIEWER_ASCII_INDEX - (for vectors) prints the vector
207        element number next to each vector entry
208 .    PETSC_VIEWER_ASCII_SYMMODU - print parallel vectors without
209        indicating the processor ranges
210 .    PETSC_VIEWER_ASCII_VTK - outputs the object to a VTK file (deprecated since v3.14)
211 .    PETSC_VIEWER_NATIVE - store the object to the binary
212        file in its native format (for example, dense
213        matrices are stored as dense), DMDA vectors are dumped directly to the
214        file instead of being first put in the natural ordering
215 .    PETSC_VIEWER_DRAW_BASIC - views the vector with a simple 1d plot
216 .    PETSC_VIEWER_DRAW_LG - views the vector with a line graph
217 -    PETSC_VIEWER_DRAW_CONTOUR - views the vector with a contour plot
218 
219    These formats are most often used for viewing matrices and vectors.
220 
221    If a format (for example PETSC_VIEWER_DRAW_CONTOUR) was applied to a viewer
222   where it didn't apply (PETSC_VIEWER_STDOUT_WORLD) it cause the default behavior
223   for that viewer to be used.
224 
225 .seealso: PetscViewerSetFormat(), PetscViewerASCIIOpen(), PetscViewerBinaryOpen(), MatView(), VecView(), PetscViewerType,
226           PetscViewerPushFormat(), PetscViewerPopFormat(), PetscViewerDrawOpen(),PetscViewerSocketOpen()
227 @*/
228 PetscErrorCode PetscViewerGetFormat(PetscViewer viewer,PetscViewerFormat *format)
229 {
230   PetscFunctionBegin;
231   *format =  viewer->format;
232   PetscFunctionReturn(0);
233 }
234