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