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