about MatAssemblyBegin and MatAssemblyEnd

Yujie recrusader at gmail.com
Sun Mar 2 23:47:23 CST 2008


 Hi, everyone

I just check the codes added by Barry for MPIDENSE_MPIAIJ. The codes is as
follows. I am wondering what context one may call MatAssemblyBegin and
MatAssemblyEnd?
>From the webpage, I can find some information about two functions:
"Begins assembling the matrix. This routine should be called after
completing all calls to MatSetValues()."
I mean that I don't know how to judge whether I should call two functions.
Could you give me some advice? thanks a lot.

4723 */
4724 PetscErrorCode MatMatMultNumeric_MPIDense_MPIAIJ(Mat A,Mat B,Mat C)
4725 {
4726 PetscErrorCode ierr;
4727 Mat_MPIDense *sub_c = (Mat_MPIDense*)C->data;
4728 Mat At,Bt,Ct;
4729
4730 PetscFunctionBegin;
4731 ierr = MatTranspose(A,MAT_INITIAL_MATRIX,&At);CHKERRQ(ierr);
4732 ierr = MatTranspose(B,MAT_INITIAL_MATRIX,&Bt);CHKERRQ(ierr);
4733 ierr = MatMatMult(Bt,At,MAT_INITIAL_MATRIX,1.0,&Ct);CHKERRQ(ierr);
4734 ierr = MatDestroy(At);CHKERRQ(ierr);
4735 ierr = MatDestroy(Bt);CHKERRQ(ierr);
4736 ierr = MatTranspose(Ct,MAT_REUSE_MATRIX,&C);CHKERRQ(ierr);
4737 ierr = MatDestroy(Ct);CHKERRQ(ierr);
4738
4739 C->assembled = PETSC_TRUE;
4740 ierr = MatAssemblyBegin(sub_c->A,MAT_FINAL_ASSEMBLY);CHKERRQ(ierr);
4741 ierr = MatAssemblyEnd(sub_c->A,MAT_FINAL_ASSEMBLY);CHKERRQ(ierr);
4742 if (!C->was_assembled) {
4743 ierr = MatSetUpMultiply_MPIDense(C);CHKERRQ(ierr);
4744 }
4745 PetscFunctionReturn(0);
4746 }



Regards,
Yujie
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20080303/f7ab2b2c/attachment.htm>


More information about the petsc-users mailing list