Well, what I was trying to say is the need to get into the scalapack. Obviously, this need brings up the technical query on a proper PETSc function to build sparse matrix from a dense matrix of large size previously partitioned beyond the setting in PETSc. Otherwise, I would take another route to construct the matrix for PETSc.
Jinquan From: petsc-users-bounces at mcs.anl.gov [mailto:[email protected]] On Behalf Of Hong Zhang Sent: Thursday, August 09, 2012 11:21 AM To: PETSc users list Subject: Re: [petsc-users] Customizeing MatSetValuesBlocked(...) "QA means quality assurance.", which has nothing to do with the technical discussions here. However, I take this opportunity to promote http://aspiritech.org, an non-profit organization with a mission to provide employment on QA for high functioning individuals on the Autism Spectrum. Hong On Thu, Aug 9, 2012 at 12:28 PM, Jinquan Zhong <jzhong at scsolutions.com<mailto:jzhong at scsolutions.com>> wrote: Hope this is not too technical. :) **Jed, A'=[A^-1 U B], not the transpose of A. I understand that it's not the transpose. I still don't have a clue what the notation [A^{-1} U B] means. I would think it means some block decomposed thing, but I don't think you mean just adding columns or taking a product of matrices. Using some standard mathematical notation would help. >> A'=[A^-1 U B] means matrix A' consists all elements from A^-1, the inverted >> A, and all elements from B. One simple equation is K=[Kst] =A' = ASSEMBLE_ij (A^-1_ij) + ASSEMBLE_i'j'(B_i'j'), here (s,t), (i,j) and (i',j') = different index sets i.e., entry K_st= A^-1_st+ B_st, = 0 when A^-1_st=0 and B_st=0 = A^-1_st when B_st =0 = B_st when A^-1_st =0 We need to solve for A'*x=b. A is dense matrix. Where does A come from? Why is it dense? >> A comes from wave propagation. It is dense since it denotes a function of >> Green function. ** As I mentioned A'=K is the assembled global matrix using the rule K=A'=SIGMA_ij (A^-1_ij)+SIGMA_i'j'(B_i'j') from FEM. Here, SIGMA_ij (A^-1_ij) denotes the assembling process for A^-1_ij into K according the DOFs of each node in the FEM model, Is A^{-1} an operator on some subdomain? Are you trying to implement a substructuring algorithm? What is B physically? >> NO. A^{-1} denotes the inverted A. B is a sparse matrix of much larger >> order. Then there is no way A^{-1} should be stored as a dense matrix. o It is stored as a dense matrix in scalapack. It stays in the same way in cores as scalapack finishes its inversion. We could define A^-1 as dense matrix in PETSc. It should not be done this way. A^{-1} should not be stored explicitly. Store the sparse finite element matrix A. Then when you want to "apply A^{-1}", solve with the sparse matrix. ** Jed, you are getting close to understand the problem related to QA. A has to be inverted explicitly. A^-1 has to be known entry by entry such that each entry in B could be assembled with A^-1 to form A'=K. This is a requirement beyond technical issue. This is a QA issue. What does QA stand for? Can you explain why B needs the entries of A^{-1}? >> QA means quality assurance. It is a procedure to ensure product quality. >> In Eq. K=A'=ASSEMBLE_ij (A^-1_ij)+ ASSEMBLE_i'j'(B_i'j') Entry B_i'j' and A^-1_ij may or may not locate at the same row and col. That why we need explicitly each entry in B_i'j' and A^-1_ij to assemble K. The big picture is that K is the final sparse matrix we need to solve K*x=A'*x=b. However, K indexed by (s,t) needs to be constructed in terms of dense matrix A and sparse matrix B using index sets (i,j) and (i',j'). -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20120809/508ed3ee/attachment-0001.html>
