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/7ed746d3/attachment-0001.html>