Actual source code: zfieldsplitf.c

  1: #include <petsc/private/fortranimpl.h>
  2: #include <petscksp.h>

  4: #if defined(PETSC_HAVE_FORTRAN_CAPS)
  5:   #define pcfieldsplitgetsubksp_      PCFIELDSPLITGETSUBKSP
  6:   #define pcfieldsplitschurgetsubksp_ PCFIELDSPLITSCHURGETSUBKSP
  7: #elif !defined(PETSC_HAVE_FORTRAN_UNDERSCORE)
  8:   #define pcfieldsplitgetsubksp_      pcfieldsplitgetsubksp
  9:   #define pcfieldsplitschurgetsubksp_ pcfieldsplitschurgetsubksp
 10: #endif

 12: PETSC_EXTERN void pcfieldsplitschurgetsubksp_(PC *pc, PetscInt *n_local, KSP *ksp, PetscErrorCode *ierr)
 13: {
 14:   KSP     *tksp;
 15:   PetscInt i, nloc;
 16:   CHKFORTRANNULLINTEGER(n_local);
 17:   *ierr = PCFieldSplitSchurGetSubKSP(*pc, &nloc, &tksp);
 18:   if (*ierr) return;
 19:   if (n_local) *n_local = nloc;
 20:   CHKFORTRANNULLOBJECT(ksp);
 21:   if (ksp) {
 22:     for (i = 0; i < nloc; i++) ksp[i] = tksp[i];
 23:   }
 24:   *ierr = PetscFree(tksp);
 25: }

 27: PETSC_EXTERN void pcfieldsplitgetsubksp_(PC *pc, PetscInt *n_local, KSP *ksp, PetscErrorCode *ierr)
 28: {
 29:   KSP     *tksp;
 30:   PetscInt i, nloc;
 31:   CHKFORTRANNULLINTEGER(n_local);
 32:   *ierr = PCFieldSplitGetSubKSP(*pc, &nloc, &tksp);
 33:   if (*ierr) return;
 34:   if (n_local) *n_local = nloc;
 35:   CHKFORTRANNULLOBJECT(ksp);
 36:   if (ksp) {
 37:     for (i = 0; i < nloc; i++) ksp[i] = tksp[i];
 38:   }
 39:   *ierr = PetscFree(tksp);
 40: }