xref: /petsc/src/mat/impls/dummy/matdummy.c (revision efd4aadf157bf1ba2d80c2be092fcf4247860003)
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