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