xref: /petsc/src/dm/interface/ftn-custom/zdmf.c (revision c0dedaea2979d61a615b7bf0172de54067e60e4e)
1b45d2f2cSJed Brown #include <petsc-private/fortranimpl.h>
2c6db04a5SJed Brown #include <petscdm.h>
3665c2dedSJed Brown #include <petscviewer.h>
49a42bb27SBarry Smith 
59a42bb27SBarry Smith #if defined(PETSC_HAVE_FORTRAN_CAPS)
624e7ded0SBarry Smith #define dmview_                      DMVIEW
75b400853SJed Brown #define dmsetoptionsprefix_          DMSETOPTIONSPREFIX
8b412c318SBarry Smith #define dmsetmattype_                DMSETMATTYPE
9b412c318SBarry Smith #define dmsetvectype_                DMSETVECTYPE
10*c0dedaeaSBarry Smith #define dmgetmattype_                DMGETMATTYPE
11*c0dedaeaSBarry Smith #define dmgetvectype_                DMGETVECTYPE
129a42bb27SBarry Smith #elif !defined(PETSC_HAVE_FORTRAN_UNDERSCORE)
1324e7ded0SBarry Smith #define dmview_                      dmview
145b400853SJed Brown #define dmsetoptionsprefix_          dmsetoptionsprefix
15b412c318SBarry Smith #define dmsetmattype_                dmsetmattype
16b412c318SBarry Smith #define dmsetvectype_                dmsetvectype
17*c0dedaeaSBarry Smith #define dmgetmattype_                dmgetmattype
18*c0dedaeaSBarry Smith #define dmgetvectype_                dmgetvectype
199a42bb27SBarry Smith #endif
209a42bb27SBarry Smith 
21*c0dedaeaSBarry Smith PETSC_EXTERN void PETSC_STDCALL dmgetmattype_(DM *mm,CHAR name PETSC_MIXED_LEN(len),PetscErrorCode *ierr PETSC_END_LEN(len))
22*c0dedaeaSBarry Smith {
23*c0dedaeaSBarry Smith   const char *tname;
24*c0dedaeaSBarry Smith 
25*c0dedaeaSBarry Smith   *ierr = DMGetMatType(*mm,&tname);if (*ierr) return;
26*c0dedaeaSBarry Smith   if (name != PETSC_NULL_CHARACTER_Fortran) {
27*c0dedaeaSBarry Smith     *ierr = PetscStrncpy(name,tname,len);if (*ierr) return;
28*c0dedaeaSBarry Smith   }
29*c0dedaeaSBarry Smith   FIXRETURNCHAR(PETSC_TRUE,name,len);
30*c0dedaeaSBarry Smith }
31*c0dedaeaSBarry Smith 
32*c0dedaeaSBarry Smith PETSC_EXTERN void PETSC_STDCALL dmgetvectype_(DM *mm,CHAR name PETSC_MIXED_LEN(len),PetscErrorCode *ierr PETSC_END_LEN(len))
33*c0dedaeaSBarry Smith {
34*c0dedaeaSBarry Smith   const char *tname;
35*c0dedaeaSBarry Smith 
36*c0dedaeaSBarry Smith   *ierr = DMGetVecType(*mm,&tname);if (*ierr) return;
37*c0dedaeaSBarry Smith   if (name != PETSC_NULL_CHARACTER_Fortran) {
38*c0dedaeaSBarry Smith     *ierr = PetscStrncpy(name,tname,len);if (*ierr) return;
39*c0dedaeaSBarry Smith   }
40*c0dedaeaSBarry Smith   FIXRETURNCHAR(PETSC_TRUE,name,len);
41*c0dedaeaSBarry Smith }
42*c0dedaeaSBarry Smith 
438cc058d9SJed Brown PETSC_EXTERN void PETSC_STDCALL dmview_(DM *da,PetscViewer *vin,PetscErrorCode *ierr)
449a42bb27SBarry Smith {
459a42bb27SBarry Smith   PetscViewer v;
469a42bb27SBarry Smith   PetscPatchDefaultViewers_Fortran(vin,v);
479a42bb27SBarry Smith   *ierr = DMView(*da,v);
489a42bb27SBarry Smith }
49950540a4SJed Brown 
508cc058d9SJed Brown PETSC_EXTERN void PETSC_STDCALL dmsetoptionsprefix_(DM *dm,CHAR prefix PETSC_MIXED_LEN(len), PetscErrorCode *ierr PETSC_END_LEN(len))
515b400853SJed Brown {
525b400853SJed Brown   char *t;
535b400853SJed Brown 
545b400853SJed Brown   FIXCHAR(prefix,len,t);
555b400853SJed Brown   *ierr = DMSetOptionsPrefix(*dm,t);
565b400853SJed Brown   FREECHAR(prefix,t);
575b400853SJed Brown }
58b412c318SBarry Smith 
59b412c318SBarry Smith PETSC_EXTERN void PETSC_STDCALL dmsetmattype_(DM *dm,CHAR prefix PETSC_MIXED_LEN(len), PetscErrorCode *ierr PETSC_END_LEN(len))
60b412c318SBarry Smith {
61b412c318SBarry Smith   char *t;
62b412c318SBarry Smith 
63b412c318SBarry Smith   FIXCHAR(prefix,len,t);
64b412c318SBarry Smith   *ierr = DMSetMatType(*dm,t);
65b412c318SBarry Smith   FREECHAR(prefix,t);
66b412c318SBarry Smith }
67b412c318SBarry Smith 
68b412c318SBarry Smith 
69b412c318SBarry Smith PETSC_EXTERN void PETSC_STDCALL dmsetvectype_(DM *dm,CHAR prefix PETSC_MIXED_LEN(len), PetscErrorCode *ierr PETSC_END_LEN(len))
70b412c318SBarry Smith {
71b412c318SBarry Smith   char *t;
72b412c318SBarry Smith 
73b412c318SBarry Smith   FIXCHAR(prefix,len,t);
74b412c318SBarry Smith   *ierr = DMSetVecType(*dm,t);
75b412c318SBarry Smith   FREECHAR(prefix,t);
76b412c318SBarry Smith }
77