16dd63270SBarry Smith #include <petsc/private/ftnimpl.h> 2c6db04a5SJed Brown #include <petscpc.h> 3e54e4138SSatish Balay 4e54e4138SSatish Balay #if defined(PETSC_HAVE_FORTRAN_CAPS) 5e54e4138SSatish Balay #define pcmgsetlevels_ PCMGSETLEVELS 6e54e4138SSatish Balay #elif !defined(PETSC_HAVE_FORTRAN_UNDERSCORE) 7e54e4138SSatish Balay #define pcmgsetlevels_ pcmgsetlevels 8e54e4138SSatish Balay #endif 9e54e4138SSatish Balay pcmgsetlevels_(PC * pc,PetscInt * levels,MPI_Fint fcomms[],PetscErrorCode * ierr)1005552d4bSJunchao ZhangPETSC_EXTERN void pcmgsetlevels_(PC *pc, PetscInt *levels, MPI_Fint fcomms[], PetscErrorCode *ierr) 11e54e4138SSatish Balay { 1205552d4bSJunchao Zhang MPI_Comm *ccomms = NULL; 1305552d4bSJunchao Zhang CHKFORTRANNULLMPICOMM(fcomms); 1405552d4bSJunchao Zhang if (fcomms) { 155975b3b6SBarry Smith *ierr = PetscMalloc1(*levels, &ccomms); 165975b3b6SBarry Smith if (*ierr) return; 17*ac530a7eSPierre Jolivet for (PetscInt i = 0; i < *levels; i++) ccomms[i] = MPI_Comm_f2c(fcomms[i]); 1805552d4bSJunchao Zhang } 195975b3b6SBarry Smith *ierr = PCMGSetLevels(*pc, *levels, ccomms); 205975b3b6SBarry Smith if (*ierr) return; 2105552d4bSJunchao Zhang if (fcomms) *ierr = PetscFree(ccomms); 22e54e4138SSatish Balay } 23