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