xref: /petsc/src/dm/interface/ftn-custom/zdmf.c (revision bebe2cf65d55febe21a5af8db2bd2e168caaa2e7)
1 #include <petsc/private/fortranimpl.h>
2 #include <petscdm.h>
3 #include <petscviewer.h>
4 
5 #if defined(PETSC_HAVE_FORTRAN_CAPS)
6 #define dmview_                      DMVIEW
7 #define dmsetoptionsprefix_          DMSETOPTIONSPREFIX
8 #define dmsetmattype_                DMSETMATTYPE
9 #define dmsetvectype_                DMSETVECTYPE
10 #define dmgetmattype_                DMGETMATTYPE
11 #define dmgetvectype_                DMGETVECTYPE
12 #elif !defined(PETSC_HAVE_FORTRAN_UNDERSCORE)
13 #define dmview_                      dmview
14 #define dmsetoptionsprefix_          dmsetoptionsprefix
15 #define dmsetmattype_                dmsetmattype
16 #define dmsetvectype_                dmsetvectype
17 #define dmgetmattype_                dmgetmattype
18 #define dmgetvectype_                dmgetvectype
19 #endif
20 
21 PETSC_EXTERN void PETSC_STDCALL dmgetmattype_(DM *mm,CHAR name PETSC_MIXED_LEN(len),PetscErrorCode *ierr PETSC_END_LEN(len))
22 {
23   const char *tname;
24 
25   *ierr = DMGetMatType(*mm,&tname);if (*ierr) return;
26   if (name != PETSC_NULL_CHARACTER_Fortran) {
27     *ierr = PetscStrncpy(name,tname,len);if (*ierr) return;
28   }
29   FIXRETURNCHAR(PETSC_TRUE,name,len);
30 }
31 
32 PETSC_EXTERN void PETSC_STDCALL dmgetvectype_(DM *mm,CHAR name PETSC_MIXED_LEN(len),PetscErrorCode *ierr PETSC_END_LEN(len))
33 {
34   const char *tname;
35 
36   *ierr = DMGetVecType(*mm,&tname);if (*ierr) return;
37   if (name != PETSC_NULL_CHARACTER_Fortran) {
38     *ierr = PetscStrncpy(name,tname,len);if (*ierr) return;
39   }
40   FIXRETURNCHAR(PETSC_TRUE,name,len);
41 }
42 
43 PETSC_EXTERN void PETSC_STDCALL dmview_(DM *da,PetscViewer *vin,PetscErrorCode *ierr)
44 {
45   PetscViewer v;
46   PetscPatchDefaultViewers_Fortran(vin,v);
47   *ierr = DMView(*da,v);
48 }
49 
50 PETSC_EXTERN void PETSC_STDCALL dmsetoptionsprefix_(DM *dm,CHAR prefix PETSC_MIXED_LEN(len), PetscErrorCode *ierr PETSC_END_LEN(len))
51 {
52   char *t;
53 
54   FIXCHAR(prefix,len,t);
55   *ierr = DMSetOptionsPrefix(*dm,t);
56   FREECHAR(prefix,t);
57 }
58 
59 PETSC_EXTERN void PETSC_STDCALL dmsetmattype_(DM *dm,CHAR prefix PETSC_MIXED_LEN(len), PetscErrorCode *ierr PETSC_END_LEN(len))
60 {
61   char *t;
62 
63   FIXCHAR(prefix,len,t);
64   *ierr = DMSetMatType(*dm,t);
65   FREECHAR(prefix,t);
66 }
67 
68 
69 PETSC_EXTERN void PETSC_STDCALL dmsetvectype_(DM *dm,CHAR prefix PETSC_MIXED_LEN(len), PetscErrorCode *ierr PETSC_END_LEN(len))
70 {
71   char *t;
72 
73   FIXCHAR(prefix,len,t);
74   *ierr = DMSetVecType(*dm,t);
75   FREECHAR(prefix,t);
76 }
77