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