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 comms[], PetscErrorCode *ierr) 11 { 12 MPI_Comm *ccomms; 13 14 CHKFORTRANNULLOBJECT(comms); 15 *ierr = PetscMalloc1(*levels,&ccomms);if (*ierr) return; 16 for (PetscInt i=0; i<*levels; i++) { 17 ccomms[i] = MPI_Comm_f2c(comms[i]); 18 } 19 *ierr = PCMGSetLevels(*pc,*levels,ccomms);if (*ierr) return; 20 *ierr = PetscFree(ccomms); 21 } 22 23