xref: /petsc/src/ksp/pc/impls/bjacobi/ftn-custom/zbjacobif.c (revision 17a42bb7546030dad7d7ce199606ca2e8f3a32eb)
1af0996ceSBarry Smith #include <petsc/private/fortranimpl.h>
2c6db04a5SJed Brown #include <petscksp.h>
3e54e4138SSatish Balay 
4e54e4138SSatish Balay #if defined(PETSC_HAVE_FORTRAN_CAPS)
5*17a42bb7SSatish Balay #define pcbjacobigetsubksp1_        PCBJACOBIGETSUBKSP1
6*17a42bb7SSatish Balay #define pcbjacobigetsubksp2_        PCBJACOBIGETSUBKSP2
7e54e4138SSatish Balay #elif !defined(PETSC_HAVE_FORTRAN_UNDERSCORE)
8*17a42bb7SSatish Balay #define pcbjacobigetsubksp1_        pcbjacobigetsubksp1
9*17a42bb7SSatish Balay #define pcbjacobigetsubksp2_        pcbjacobigetsubksp2
10e54e4138SSatish Balay #endif
11e54e4138SSatish Balay 
12*17a42bb7SSatish Balay PETSC_EXTERN void pcbjacobigetsubksp1_(PC *pc,PetscInt *n_local,PetscInt *first_local,KSP *ksp,PetscErrorCode *ierr)
13e54e4138SSatish Balay {
14e54e4138SSatish Balay   KSP      *tksp;
15e54e4138SSatish Balay   PetscInt i,nloc;
16e54e4138SSatish Balay   CHKFORTRANNULLINTEGER(n_local);
17e54e4138SSatish Balay   CHKFORTRANNULLINTEGER(first_local);
18de0953f6SBarry Smith   *ierr = PCBJacobiGetSubKSP(*pc,&nloc,first_local,&tksp); if (*ierr) return;
19e54e4138SSatish Balay   if (n_local) *n_local = nloc;
2012c1112bSBarry Smith   CHKFORTRANNULLOBJECT(ksp);
2112c1112bSBarry Smith   if (ksp) {
22e54e4138SSatish Balay     for (i=0; i<nloc; i++) {
23e54e4138SSatish Balay       ksp[i] = tksp[i];
24e54e4138SSatish Balay     }
25e54e4138SSatish Balay   }
2612c1112bSBarry Smith }
27*17a42bb7SSatish Balay PETSC_EXTERN void pcbjacobigetsubksp2_(PC *pc,PetscInt *n_local,PetscInt *first_local,KSP *ksp,PetscErrorCode *ierr)
28*17a42bb7SSatish Balay {
29*17a42bb7SSatish Balay   pcbjacobigetsubksp1_(pc,n_local,first_local,ksp,ierr);
30*17a42bb7SSatish Balay }
31