Actual source code: schurm.h
1: #include <petsc/private/kspimpl.h>
2: #include <petsc/private/matimpl.h>
3: #include <petscksp.h>
5: typedef struct {
6: Mat A, Ap, B, C, D;
7: KSP ksp;
8: Vec work1, work2;
9: MatSchurComplementAinvType ainvtype;
10: } Mat_SchurComplement;
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(Mat, PetscOptionItems *);
18: PETSC_INTERN PetscErrorCode MatDestroy_SchurComplement(Mat);
19: PETSC_INTERN PetscErrorCode MatGetSchurComplement_Basic(Mat, IS, IS, IS, IS, MatReuse, Mat *, MatSchurComplementAinvType, MatReuse, Mat *);
21: PETSC_EXTERN PetscErrorCode MatCreate_SchurComplement(Mat);