xref: /petsc/src/mat/impls/dummy/matdummy.c (revision a3b2e22bc9e962507181f2aa20d4b05f54cea8af)
1 #include <petsc/private/matimpl.h>      /*I "petscmat.h" I*/
2 #include <../src/sys/utils/hash.h>
3 
4 typedef struct {
5   PetscHashJK ht;
6   PetscInt   *dnz, *onz;
7 } Mat_Preallocator;
8 
9 PetscErrorCode MatDestroy_Dummy(Mat A)
10 {
11   PetscErrorCode    ierr;
12 
13   PetscFunctionBegin;
14   printf("MatDestroy_Dummy...\n");
15   ierr = PetscFree(A->data);CHKERRQ(ierr);
16   ierr = PetscObjectChangeTypeName((PetscObject) A, 0);CHKERRQ(ierr);
17   PetscFunctionReturn(0);
18 }
19 
20 PetscErrorCode MatSetOption_Dummy(Mat A, MatOption op, PetscBool flg)
21 {
22   PetscFunctionBegin;
23   PetscFunctionReturn(0);
24 }
25 
26 /*MC
27    MATDUMMY - A matrix type to be used for reusing specific internal data structure.
28 
29   Level: advanced
30 
31 .seealso: Mat
32 
33 M*/
34 
35 PETSC_EXTERN PetscErrorCode MatCreate_Dummy(Mat A)
36 {
37   PetscErrorCode    ierr;
38 
39   PetscFunctionBegin;
40   /* matrix ops */
41   ierr = PetscMemzero(A->ops, sizeof(struct _MatOps));CHKERRQ(ierr);
42   A->ops->destroy                 = MatDestroy_Dummy;
43 
44   /* special MATPREALLOCATOR functions */
45   ierr = PetscObjectChangeTypeName((PetscObject) A, MATDUMMY);CHKERRQ(ierr);
46   PetscFunctionReturn(0);
47 }
48