#include #include #if defined(PETSC_HAVE_FORTRAN_CAPS) #define pcmgsetlevels_ PCMGSETLEVELS #elif !defined(PETSC_HAVE_FORTRAN_UNDERSCORE) #define pcmgsetlevels_ pcmgsetlevels #endif PETSC_EXTERN void pcmgsetlevels_(PC *pc, PetscInt *levels, MPI_Fint fcomms[], PetscErrorCode *ierr) { MPI_Comm *ccomms = NULL; CHKFORTRANNULLMPICOMM(fcomms); if (fcomms) { *ierr = PetscMalloc1(*levels, &ccomms); if (*ierr) return; for (PetscInt i = 0; i < *levels; i++) ccomms[i] = MPI_Comm_f2c(fcomms[i]); } *ierr = PCMGSetLevels(*pc, *levels, ccomms); if (*ierr) return; if (fcomms) *ierr = PetscFree(ccomms); }