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