PETSC_INTERN PetscErrorCode MatDestroy_CHOLMOD(Mat F) { PetscErrorCode ierr; Mat_CHOLMOD *chol=(Mat_CHOLMOD*)F->data; PetscFunctionBegin; ierr = !cholmod_X_free_factor(&chol->factor,chol->common);CHKERRQ(ierr); ierr = !cholmod_X_finish(chol->common);CHKERRQ(ierr); ierr = PetscFree(chol->common);CHKERRQ(ierr); ierr = PetscFree(chol->matrix);CHKERRQ(ierr); ierr = PetscFree(F->data);CHKERRQ(ierr); PetscFunctionReturn(0); }
PetscErrorCode MatDestroy_CHOLMOD(Mat F) { PetscErrorCode ierr; Mat_CHOLMOD *chol=(Mat_CHOLMOD*)F->spptr; PetscFunctionBegin; if (chol) { ierr = !cholmod_X_free_factor(&chol->factor,chol->common);CHKERRQ(ierr); ierr = !cholmod_X_finish(chol->common);CHKERRQ(ierr); ierr = PetscFree(chol->common);CHKERRQ(ierr); ierr = PetscFree(chol->matrix);CHKERRQ(ierr); ierr = (*chol->Destroy)(F);CHKERRQ(ierr); } ierr = PetscFree(F->spptr);CHKERRQ(ierr); PetscFunctionReturn(0); }