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