1 #include <petsc/private/kspimpl.h> 2 #include <petsc/private/matimpl.h> 3 #include <petscksp.h> 4 5 typedef struct { 6 Mat A,Ap,B,C,D; 7 KSP ksp; 8 Vec work1,work2; 9 MatSchurComplementAinvType ainvtype; 10 } Mat_SchurComplement; 11 12 PETSC_INTERN PetscErrorCode MatCreateVecs_SchurComplement(Mat N, Vec*, Vec*); 13 PETSC_INTERN PetscErrorCode MatView_SchurComplement(Mat, PetscViewer); 14 PETSC_INTERN PetscErrorCode MatMultTranspose_SchurComplement(Mat, Vec, Vec); 15 PETSC_INTERN PetscErrorCode MatMult_SchurComplement(Mat, Vec, Vec); 16 PETSC_INTERN PetscErrorCode MatMultAdd_SchurComplement(Mat, Vec, Vec, Vec); 17 PETSC_INTERN PetscErrorCode MatSetFromOptions_SchurComplement(PetscOptionItems*, Mat); 18 PETSC_INTERN PetscErrorCode MatDestroy_SchurComplement(Mat); 19 PETSC_INTERN PetscErrorCode MatGetSchurComplement_Basic(Mat, IS, IS, IS, IS, MatReuse, Mat*, MatSchurComplementAinvType, MatReuse, Mat*); 20 21 PETSC_EXTERN PetscErrorCode MatCreate_SchurComplement(Mat); 22