1 #include <petsc/private/fortranimpl.h> 2 #include <petscdm.h> 3 #include <petscviewer.h> 4 5 #if defined(PETSC_HAVE_FORTRAN_CAPS) 6 #define dmcreatesuperdm_ DMCREATESUPERDM 7 #define dmcreatesubdm_ DMCREATESUBDM 8 #define dmdestroy_ DMDESTROY 9 #define dmload_ DMLOAD 10 #elif !defined(PETSC_HAVE_FORTRAN_UNDERSCORE) 11 #define dmcreatesuperdm_ dmreatesuperdm 12 #define dmcreatesubdm_ dmreatesubdm 13 #define dmdestroy_ dmdestroy 14 #define dmload_ dmload 15 #endif 16 17 PETSC_EXTERN void dmcreatesuperdm_(DM dms[], PetscInt *len, IS ***is, DM *superdm, int *ierr) 18 { 19 *ierr = DMCreateSuperDM(dms, *len, *is, superdm); 20 } 21 22 PETSC_EXTERN void dmcreatesubdm_(DM *dm, PetscInt *numFields, PetscInt fields[], IS *is, DM *subdm, int *ierr) 23 { 24 CHKFORTRANNULLOBJECT(is); 25 *ierr = DMCreateSubDM(*dm, *numFields, fields, is, subdm); 26 } 27 28 PETSC_EXTERN void dmdestroy_(DM *x, int *ierr) 29 { 30 PETSC_FORTRAN_OBJECT_F_DESTROYED_TO_C_NULL(x); 31 *ierr = DMDestroy(x); 32 if (*ierr) return; 33 PETSC_FORTRAN_OBJECT_C_NULL_TO_F_DESTROYED(x); 34 } 35