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