1 #include <petsc/private/fortranimpl.h> 2 #include <petscpc.h> 3 4 #if defined(PETSC_HAVE_FORTRAN_CAPS) 5 #define pcmgsetlevels_ PCMGSETLEVELS 6 #elif !defined(PETSC_HAVE_FORTRAN_UNDERSCORE) 7 #define pcmgsetlevels_ pcmgsetlevels 8 #endif 9 10 PETSC_EXTERN void pcmgsetlevels_(PC *pc,PetscInt *levels,MPI_Fint fcomms[], PetscErrorCode *ierr) 11 { 12 MPI_Comm *ccomms = NULL; 13 CHKFORTRANNULLMPICOMM(fcomms); 14 if (fcomms) { 15 *ierr = PetscMalloc1(*levels,&ccomms);if (*ierr) return; 16 for (PetscInt i=0; i<*levels; i++) { 17 ccomms[i] = MPI_Comm_f2c(fcomms[i]); 18 } 19 } 20 *ierr = PCMGSetLevels(*pc,*levels,ccomms);if (*ierr) return; 21 if (fcomms) *ierr = PetscFree(ccomms); 22 } 23 24