xref: /petsc/src/sys/classes/viewer/interface/viewa.c (revision 5b6bfdb9644f185dbf5e5a09b808ec241507e1e7)
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 
134    These formats are most often used for viewing matrices and vectors.
135    Currently, the object name is used only in the MATLAB format.
136 
137    Concepts: PetscViewer^setting format
138 
139 .seealso: PetscViewerASCIIOpen(), PetscViewerBinaryOpen(), MatView(), VecView(),
140           PetscViewerSetFormat(), PetscViewerPopFormat()
141 @*/
142 PetscErrorCode  PetscViewerPushFormat(PetscViewer viewer,PetscViewerFormat format)
143 {
144   PetscFunctionBegin;
145   PetscValidHeaderSpecific(viewer,PETSC_VIEWER_CLASSID,1);
146   PetscValidLogicalCollectiveEnum(viewer,format,2);
147   if (viewer->iformat > PETSCVIEWERFORMATPUSHESMAX-1) SETERRQ(PETSC_COMM_SELF,PETSC_ERR_ARG_OUTOFRANGE,"Too many PetscViewerPushFormat(), perhaps you forgot PetscViewerPopFormat()?");
148 
149   viewer->formats[viewer->iformat++] = viewer->format;
150   viewer->format                     = format;
151   PetscFunctionReturn(0);
152 }
153 
154 /*@C
155    PetscViewerPopFormat - Resets the format for file PetscViewers.
156 
157    Logically Collective on PetscViewer
158 
159    Input Parameters:
160 .  viewer - the PetscViewer
161 
162    Level: intermediate
163 
164    Concepts: PetscViewer^setting format
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 
186 
187 
188