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