1af0996ceSBarry Smith #include <petsc/private/fortranimpl.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 10*05552d4bSJunchao Zhang PETSC_EXTERN void pcmgsetlevels_(PC *pc,PetscInt *levels,MPI_Fint fcomms[], PetscErrorCode *ierr) 11e54e4138SSatish Balay { 12*05552d4bSJunchao Zhang MPI_Comm *ccomms = NULL; 13*05552d4bSJunchao Zhang CHKFORTRANNULLMPICOMM(fcomms); 14*05552d4bSJunchao Zhang if (fcomms) { 15d5a8f7e6SBarry Smith *ierr = PetscMalloc1(*levels,&ccomms);if (*ierr) return; 16d5a8f7e6SBarry Smith for (PetscInt i=0; i<*levels; i++) { 17*05552d4bSJunchao Zhang ccomms[i] = MPI_Comm_f2c(fcomms[i]); 18*05552d4bSJunchao Zhang } 19d5a8f7e6SBarry Smith } 20d5a8f7e6SBarry Smith *ierr = PCMGSetLevels(*pc,*levels,ccomms);if (*ierr) return; 21*05552d4bSJunchao Zhang if (fcomms) *ierr = PetscFree(ccomms); 22e54e4138SSatish Balay } 23e54e4138SSatish Balay 24