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);