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