xref: /petsc/src/ksp/pc/impls/mg/ftn-custom/zmgf.c (revision 834855d6effb0d027771461c8e947ee1ce5a1e17)
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 Zhang PETSC_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