xref: /petsc/src/ksp/pc/impls/mg/ftn-custom/zmgf.c (revision 834855d6effb0d027771461c8e947ee1ce5a1e17)
1 #include <petsc/private/ftnimpl.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 
pcmgsetlevels_(PC * pc,PetscInt * levels,MPI_Fint fcomms[],PetscErrorCode * ierr)10 PETSC_EXTERN void pcmgsetlevels_(PC *pc, PetscInt *levels, MPI_Fint fcomms[], PetscErrorCode *ierr)
11 {
12   MPI_Comm *ccomms = NULL;
13   CHKFORTRANNULLMPICOMM(fcomms);
14   if (fcomms) {
15     *ierr = PetscMalloc1(*levels, &ccomms);
16     if (*ierr) return;
17     for (PetscInt i = 0; i < *levels; i++) ccomms[i] = MPI_Comm_f2c(fcomms[i]);
18   }
19   *ierr = PCMGSetLevels(*pc, *levels, ccomms);
20   if (*ierr) return;
21   if (fcomms) *ierr = PetscFree(ccomms);
22 }
23