1*6dd63270SBarry Smith #include <petsc/private/ftnimpl.h> 21193e19dSBarry Smith #include <petscksp.h> 31193e19dSBarry Smith 41193e19dSBarry Smith #if defined(PETSC_HAVE_FORTRAN_CAPS) 51193e19dSBarry Smith #define pcfieldsplitgetsubksp_ PCFIELDSPLITGETSUBKSP 6285fb4e2SStefano Zampini #define pcfieldsplitschurgetsubksp_ PCFIELDSPLITSCHURGETSUBKSP 71193e19dSBarry Smith #elif !defined(PETSC_HAVE_FORTRAN_UNDERSCORE) 81193e19dSBarry Smith #define pcfieldsplitgetsubksp_ pcfieldsplitgetsubksp 9285fb4e2SStefano Zampini #define pcfieldsplitschurgetsubksp_ pcfieldsplitschurgetsubksp 101193e19dSBarry Smith #endif 111193e19dSBarry Smith 1219caf8f3SSatish Balay PETSC_EXTERN void pcfieldsplitschurgetsubksp_(PC *pc, PetscInt *n_local, KSP *ksp, PetscErrorCode *ierr) 13285fb4e2SStefano Zampini { 14285fb4e2SStefano Zampini KSP *tksp; 15285fb4e2SStefano Zampini PetscInt i, nloc; 16285fb4e2SStefano Zampini CHKFORTRANNULLINTEGER(n_local); 175975b3b6SBarry Smith *ierr = PCFieldSplitSchurGetSubKSP(*pc, &nloc, &tksp); 185975b3b6SBarry Smith if (*ierr) return; 19285fb4e2SStefano Zampini if (n_local) *n_local = nloc; 20285fb4e2SStefano Zampini CHKFORTRANNULLOBJECT(ksp); 21285fb4e2SStefano Zampini if (ksp) { 22285fb4e2SStefano Zampini for (i = 0; i < nloc; i++) ksp[i] = tksp[i]; 23285fb4e2SStefano Zampini } 24285fb4e2SStefano Zampini *ierr = PetscFree(tksp); 25285fb4e2SStefano Zampini } 26285fb4e2SStefano Zampini 2719caf8f3SSatish Balay PETSC_EXTERN void pcfieldsplitgetsubksp_(PC *pc, PetscInt *n_local, KSP *ksp, PetscErrorCode *ierr) 281193e19dSBarry Smith { 291193e19dSBarry Smith KSP *tksp; 301193e19dSBarry Smith PetscInt i, nloc; 311193e19dSBarry Smith CHKFORTRANNULLINTEGER(n_local); 325975b3b6SBarry Smith *ierr = PCFieldSplitGetSubKSP(*pc, &nloc, &tksp); 335975b3b6SBarry Smith if (*ierr) return; 341193e19dSBarry Smith if (n_local) *n_local = nloc; 351193e19dSBarry Smith CHKFORTRANNULLOBJECT(ksp); 361193e19dSBarry Smith if (ksp) { 372fa5cd67SKarl Rupp for (i = 0; i < nloc; i++) ksp[i] = tksp[i]; 381193e19dSBarry Smith } 39e06cc25fSBarry Smith *ierr = PetscFree(tksp); 401193e19dSBarry Smith } 41