xref: /petsc/src/ksp/pc/impls/mg/ftn-custom/zmgf.c (revision d5a8f7e6b1c642fb14cbe2c9c1d7f6120d9aefd3)
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*d5a8f7e6SBarry Smith PETSC_EXTERN void pcmgsetlevels_(PC *pc,PetscInt *levels,MPI_Fint comms[], PetscErrorCode *ierr)
11e54e4138SSatish Balay {
12*d5a8f7e6SBarry Smith   MPI_Comm *ccomms;
13*d5a8f7e6SBarry Smith 
14ed7e4eddSMatthew Knepley   CHKFORTRANNULLOBJECT(comms);
15*d5a8f7e6SBarry Smith   *ierr = PetscMalloc1(*levels,&ccomms);if (*ierr) return;
16*d5a8f7e6SBarry Smith   for (PetscInt i=0; i<*levels; i++) {
17*d5a8f7e6SBarry Smith     ccomms[i] = MPI_Comm_f2c(comms[i]);
18*d5a8f7e6SBarry Smith   }
19*d5a8f7e6SBarry Smith   *ierr = PCMGSetLevels(*pc,*levels,ccomms);if (*ierr) return;
20*d5a8f7e6SBarry Smith   *ierr = PetscFree(ccomms);
21e54e4138SSatish Balay }
22e54e4138SSatish Balay 
23