xref: /petsc/src/sys/classes/viewer/interface/ftn-custom/zviewaf.c (revision 3872ee93fc6fc5dd06e57f8e7b2853c37bc1be92)
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 #elif !defined(PETSC_HAVE_FORTRAN_UNDERSCORE)
16   #define petscviewersetformat_        petscviewersetformat
17   #define petscviewersettype_          petscviewersettype
18   #define petscviewergettype_          petscviewergettype
19   #define petscviewerpushformat_       petscviewerpushformat
20   #define petscviewerpopformat_        petscviewerpopformat
21   #define petscviewerandformatcreate_  petscviewerandformatcreate
22   #define petscviewerandformatdestroy_ petscviewerandformatdestroy
23   #define petscviewergetsubviewer_     petscviewergetsubviewer
24   #define petscviewerrestoresubviewer_ petscviewerrestoresubviewer
25   #define petscviewierview_            petscviewerview
26 #endif
27 
28 PETSC_EXTERN void petscviewergetsubviewer_(PetscViewer *vin, MPI_Fint *comm, PetscViewer *outviewer, PetscErrorCode *ierr)
29 {
30   PetscViewer v;
31   PetscPatchDefaultViewers_Fortran(vin, v);
32   *ierr = PetscViewerGetSubViewer(v, MPI_Comm_f2c(*(comm)), outviewer);
33 }
34 
35 PETSC_EXTERN void petscviewerrestoresubviewer_(PetscViewer *vin, MPI_Fint *comm, PetscViewer *outviewer, PetscErrorCode *ierr)
36 {
37   PetscViewer v;
38   PetscPatchDefaultViewers_Fortran(vin, v);
39   *ierr = PetscViewerRestoreSubViewer(v, MPI_Comm_f2c(*(comm)), outviewer);
40 }
41 
42 PETSC_EXTERN PetscErrorCode PetscViewerSetFormatDeprecated(PetscViewer, PetscViewerFormat);
43 
44 PETSC_EXTERN void petscviewerandformatcreate_(PetscViewer *vin, PetscViewerFormat *format, PetscViewerAndFormat **vf, PetscErrorCode *ierr)
45 {
46   PetscViewer v;
47   PetscPatchDefaultViewers_Fortran(vin, v);
48   *ierr = PetscViewerAndFormatCreate(v, *format, vf);
49 }
50 
51 PETSC_EXTERN void petscviewerandformatdestroy_(PetscViewerAndFormat **vf, PetscErrorCode *ierr)
52 {
53   *ierr = PetscViewerAndFormatDestroy(vf);
54 }
55 
56 PETSC_EXTERN void petscviewersetformat_(PetscViewer *vin, PetscViewerFormat *format, PetscErrorCode *ierr)
57 {
58   PetscViewer v;
59   PetscPatchDefaultViewers_Fortran(vin, v);
60   *ierr = PetscViewerSetFormatDeprecated(v, *format);
61 }
62 
63 PETSC_EXTERN void petscviewersettype_(PetscViewer *x, char *type_name, PetscErrorCode *ierr, PETSC_FORTRAN_CHARLEN_T len)
64 {
65   char *t;
66 
67   FIXCHAR(type_name, len, t);
68   *ierr = PetscViewerSetType(*x, t);
69   if (*ierr) return;
70   FREECHAR(type_name, t);
71 }
72 
73 PETSC_EXTERN void petscviewergettype_(PetscViewer *viewer, char *type, PetscErrorCode *ierr, PETSC_FORTRAN_CHARLEN_T len)
74 {
75   const char *c1;
76 
77   *ierr = PetscViewerGetType(*viewer, &c1);
78   *ierr = PetscStrncpy(type, c1, len);
79   FIXRETURNCHAR(PETSC_TRUE, type, len);
80 }
81 
82 PETSC_EXTERN void petscviewerpushformat_(PetscViewer *vin, PetscViewerFormat *format, PetscErrorCode *ierr)
83 {
84   PetscViewer v;
85   PetscPatchDefaultViewers_Fortran(vin, v);
86   *ierr = PetscViewerPushFormat(v, *format);
87 }
88 
89 PETSC_EXTERN void petscviewerpopformat_(PetscViewer *vin, PetscErrorCode *ierr)
90 {
91   PetscViewer v;
92   PetscPatchDefaultViewers_Fortran(vin, v);
93   *ierr = PetscViewerPopFormat(v);
94 }
95 
96 PETSC_EXTERN void petscviewerview_(PetscViewer *vin, PetscViewer *viewerin, PetscErrorCode *ierr)
97 {
98   PetscViewer v, viewer;
99   PetscPatchDefaultViewers_Fortran(vin, v);
100   PetscPatchDefaultViewers_Fortran(viewerin, viewer);
101   *ierr = PetscViewerView(v, viewer);
102 }
103