xref: /petsc/src/sys/classes/viewer/interface/ftn-custom/zviewaf.c (revision 66af8762ec03dbef0e079729eb2a1734a35ed7ff)
1 #include <petsc/private/fortranimpl.h>
2 #include <petscviewer.h>
3 
4 #if defined(PETSC_HAVE_FORTRAN_CAPS)
5   #define petscviewersetformat_        PETSCVIEWERSETFORMAT
6   #define petscviewersettype_          PETSCVIEWERSETTYPE
7   #define petscviewergettype_          PETSCVIEWERGETTYPE
8   #define petscviewerpushformat_       PETSCVIEWERPUSHFORMAT
9   #define petscviewerpopformat_        PETSCVIEWERPOPFORMAT
10   #define petscviewerandformatcreate_  PETSCVIEWERANDFORMATCREATE
11   #define petscviewerandformatdestroy_ PETSCVIEWERANDFORMATDESTROY
12   #define petscviewergetsubviewer_     PETSCVIEWERGETSUBVIEWER
13   #define petscviewerrestoresubviewer_ PETSCVIEWERRESTORESUBVIEWER
14   #define petscviewierview_            PETSCVIEWERVIEW
15   #define petscviewerflush_            PETSCVIEWERFLUSH
16 #elif !defined(PETSC_HAVE_FORTRAN_UNDERSCORE)
17   #define petscviewersetformat_        petscviewersetformat
18   #define petscviewersettype_          petscviewersettype
19   #define petscviewergettype_          petscviewergettype
20   #define petscviewerpushformat_       petscviewerpushformat
21   #define petscviewerpopformat_        petscviewerpopformat
22   #define petscviewerandformatcreate_  petscviewerandformatcreate
23   #define petscviewerandformatdestroy_ petscviewerandformatdestroy
24   #define petscviewergetsubviewer_     petscviewergetsubviewer
25   #define petscviewerrestoresubviewer_ petscviewerrestoresubviewer
26   #define petscviewierview_            petscviewerview
27   #define petscviewerflush_            petscviewerflush
28 #endif
29 
30 PETSC_EXTERN void petscviewerflush_(PetscViewer *viewer, int *ierr)
31 {
32   PetscViewer v;
33   PetscPatchDefaultViewers_Fortran(viewer, v);
34   *ierr = PetscViewerFlush(v);
35 }
36 
37 PETSC_EXTERN void petscviewergetsubviewer_(PetscViewer *vin, MPI_Fint *comm, PetscViewer *outviewer, PetscErrorCode *ierr)
38 {
39   PetscViewer v;
40   PetscPatchDefaultViewers_Fortran(vin, v);
41   *ierr = PetscViewerGetSubViewer(v, MPI_Comm_f2c(*(comm)), outviewer);
42 }
43 
44 PETSC_EXTERN void petscviewerrestoresubviewer_(PetscViewer *vin, MPI_Fint *comm, PetscViewer *outviewer, PetscErrorCode *ierr)
45 {
46   PetscViewer v;
47   PetscPatchDefaultViewers_Fortran(vin, v);
48   *ierr = PetscViewerRestoreSubViewer(v, MPI_Comm_f2c(*(comm)), outviewer);
49 }
50 
51 PETSC_EXTERN PetscErrorCode PetscViewerSetFormatDeprecated(PetscViewer, PetscViewerFormat);
52 
53 PETSC_EXTERN void petscviewerandformatcreate_(PetscViewer *vin, PetscViewerFormat *format, PetscViewerAndFormat **vf, PetscErrorCode *ierr)
54 {
55   PetscViewer v;
56   PetscPatchDefaultViewers_Fortran(vin, v);
57   *ierr = PetscViewerAndFormatCreate(v, *format, vf);
58 }
59 
60 PETSC_EXTERN void petscviewerandformatdestroy_(PetscViewerAndFormat **vf, PetscErrorCode *ierr)
61 {
62   *ierr = PetscViewerAndFormatDestroy(vf);
63 }
64 
65 PETSC_EXTERN void petscviewersetformat_(PetscViewer *vin, PetscViewerFormat *format, PetscErrorCode *ierr)
66 {
67   PetscViewer v;
68   PetscPatchDefaultViewers_Fortran(vin, v);
69   *ierr = PetscViewerSetFormatDeprecated(v, *format);
70 }
71 
72 PETSC_EXTERN void petscviewersettype_(PetscViewer *x, char *type_name, PetscErrorCode *ierr, PETSC_FORTRAN_CHARLEN_T len)
73 {
74   char *t;
75 
76   FIXCHAR(type_name, len, t);
77   *ierr = PetscViewerSetType(*x, t);
78   if (*ierr) return;
79   FREECHAR(type_name, t);
80 }
81 
82 PETSC_EXTERN void petscviewergettype_(PetscViewer *viewer, char *type, PetscErrorCode *ierr, PETSC_FORTRAN_CHARLEN_T len)
83 {
84   const char *c1;
85 
86   *ierr = PetscViewerGetType(*viewer, &c1);
87   *ierr = PetscStrncpy(type, c1, len);
88   FIXRETURNCHAR(PETSC_TRUE, type, len);
89 }
90 
91 PETSC_EXTERN void petscviewerpushformat_(PetscViewer *vin, PetscViewerFormat *format, PetscErrorCode *ierr)
92 {
93   PetscViewer v;
94   PetscPatchDefaultViewers_Fortran(vin, v);
95   *ierr = PetscViewerPushFormat(v, *format);
96 }
97 
98 PETSC_EXTERN void petscviewerpopformat_(PetscViewer *vin, PetscErrorCode *ierr)
99 {
100   PetscViewer v;
101   PetscPatchDefaultViewers_Fortran(vin, v);
102   *ierr = PetscViewerPopFormat(v);
103 }
104 
105 PETSC_EXTERN void petscviewerview_(PetscViewer *vin, PetscViewer *viewerin, PetscErrorCode *ierr)
106 {
107   PetscViewer v, viewer;
108   PetscPatchDefaultViewers_Fortran(vin, v);
109   PetscPatchDefaultViewers_Fortran(viewerin, viewer);
110   *ierr = PetscViewerView(v, viewer);
111 }
112