1 #include <petsc/private/matimpl.h> /*I "petscmat.h" I*/ 2 #include <../src/mat/impls/aij/seq/aij.h> 3 4 PetscErrorCode MatDestroy_Dummy_Submatrices(Mat C) 5 { 6 PetscErrorCode ierr; 7 Mat_SubSppt *submatj = (Mat_SubSppt*)C->data; 8 9 PetscFunctionBegin; 10 ierr = submatj->destroy(C);CHKERRQ(ierr); 11 ierr = MatDestroySubMatrices_Private(submatj);CHKERRQ(ierr); 12 PetscFunctionReturn(0); 13 } 14 15 PetscErrorCode MatDestroy_Dummy(Mat A) 16 { 17 PetscErrorCode ierr; 18 19 PetscFunctionBegin; 20 ierr = PetscObjectChangeTypeName((PetscObject)A,0);CHKERRQ(ierr); 21 PetscFunctionReturn(0); 22 } 23 24 /*MC 25 MATDUMMY - A matrix type to be used for reusing specific internal data structure. 26 27 Level: advanced 28 29 .seealso: Mat 30 31 M*/ 32 33 PETSC_EXTERN PetscErrorCode MatCreate_Dummy(Mat A) 34 { 35 PetscErrorCode ierr; 36 37 PetscFunctionBegin; 38 /* matrix ops */ 39 ierr = PetscMemzero(A->ops,sizeof(struct _MatOps));CHKERRQ(ierr); 40 A->ops->destroy = MatDestroy_Dummy; 41 42 /* special MATPREALLOCATOR functions */ 43 ierr = PetscObjectChangeTypeName((PetscObject)A,MATDUMMY);CHKERRQ(ierr); 44 PetscFunctionReturn(0); 45 } 46