<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Thu, Mar 26, 2015 at 6:08 PM, Luc Berger-Vergiat <span dir="ltr"><<a href="mailto:lb2653@columbia.edu" target="_blank">lb2653@columbia.edu</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div bgcolor="#FFFFFF" text="#000000">
The difference between IS(1), IS(2) and IS(1)',IS(2)' is that they
operate on two different matrices. The former operate on A whereas
the operates on S and these matrices have different sizes so it's
not obvious to me that they IS would be identical? I guess it
depends on the initial ordering of the blocks of A, if A00 is
actually the bottom right block then I can see how the two are the
same.<br>
<br>
But just to get a confirmation here is a simple example: let's
assume I solve a 2D problem with momentum and energy conservation.<br>
In that case I get three equations per nodes:<br>
<br>
C1*d^2 u_x/dx^2 + C2*d^2 u_y/dxdy + a*dT/dt= fx ---> IS(0)<br>
C3*d^2 u_x/dxdy + C4*d^2 u_y/dy^2 + a*dT/dt = fy ---> IS(1)<br>
dT/dt + kappa*(d^2 T/dx^2 + d^2 T/dy^2) = fT --->
IS(2)<br>
<br>
This leads to a block matrix with 3x3 block per nodes. If I extract
the temperature problem, invert it and compute the schur complement
I will end up with S with the same size as the elasticity part of
the problem but will the IS(0) and IS(1) be the same for the
jacobian and the Schur complement?<br>
If that's the case that's awesome that you programmed it to keep
track of these things!<br></div></blockquote><div><br></div><div>Nope, I was misunderstanding. However, if you have a DM, you can get the new ISes the same</div><div>way. The Schur complement was formed using DMCreateSubDM(), and you can call the same</div><div>thing for those fields to get the subDM and those ISes. Does this makes sense?</div><div><br></div><div>If you do not have a DM, then its a translation process.</div><div><br></div><div> Thanks,</div><div><br></div><div> Matt</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div bgcolor="#FFFFFF" text="#000000">
<pre cols="72">Best,
Luc</pre>
<div>On 03/26/2015 06:05 PM, Matthew Knepley
wrote:<br>
</div>
<blockquote type="cite">
<div dir="ltr">
<div class="gmail_extra">
<div class="gmail_quote">On Thu, Mar 26, 2015 at 4:06 PM, Luc
Berger-Vergiat <span dir="ltr"><<a href="mailto:lb2653@columbia.edu" target="_blank">lb2653@columbia.edu</a>></span>
wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div bgcolor="#FFFFFF" text="#000000"> Ok,<br>
this work is still part of my Schur complement approach
using the full schur but with a block diagonal A00^-1.<br>
I implemented the computation of A00^-1 by extracting
each diagonal block and inverting them individually.<br>
This works quite well and does not cost some much,
especially since I can still use threads to accelerate
this process (I might send a question about this in the
future...).<br>
<br>
At the moment the most expensive part of the procedure
is inverting S (I'm using LU at the moment to make sure
that everything is implemented correctly) and the second
most expensive procedure is MatMatMult. I'm doing two of
these: A10 * A00^-1 and then a right multiplication by
A01.<br>
Decreasing that cost would be nice (I attached the
output of -log_summary for reference).<br>
I think I need to look for the objects that are not
Destroyed too.<br>
</div>
</blockquote>
<div><br>
</div>
<div>We will look, but this is a notoriously hard thing to
speed up. You might try the RAP code instead.</div>
<div><br>
</div>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div bgcolor="#FFFFFF" text="#000000"> Finally I now would
like to split the Schur complement into two submatrices.
I have an IS that tracks location of these sub-matrices
in the global system:<br>
<br>
[ A00 A01 A02 ] --> IS(0)<br>
A = [ A10 A11 A12 ] --> IS(1)<br>
[ A20 A21 A22 ] --> IS(2)<br>
<br>
How can I use IS(1) and IS(2) to track:<br>
<br>
S = [ A11 A12 ] _ [ A10] * [A00]^-1 * [ A01 A02 ]
= [ S11 S12 ] --> IS(1)'<br>
[ A21 A22 ] [
A20] = [ S21
S22 ] --> IS(2)'<br>
<br>
or is there a simple way to compute IS(1)' and IS(2)'
based on IS(1) and IS(2)?<br>
</div>
</blockquote>
<div><br>
</div>
<div>Aren't they identical?</div>
<div><br>
</div>
<div> Thanks,</div>
<div><br>
</div>
<div> Matt</div>
<div> </div>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div bgcolor="#FFFFFF" text="#000000"> Thanks!<br>
<pre cols="72">Best,
Luc</pre>
<div>On 03/26/2015 04:12 PM, Matthew Knepley wrote:<br>
</div>
<blockquote type="cite">
<div dir="ltr">
<div class="gmail_extra">
<div class="gmail_quote">On Thu, Mar 26, 2015 at
3:07 PM, Luc Berger-Vergiat <span dir="ltr"><<a href="mailto:lb2653@columbia.edu" target="_blank">lb2653@columbia.edu</a>></span>
wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hi all,<br>
I want to multiply two matrices together, one
is MATAIJ and the second is MATBAIJ, is there
a way to leverage the properties of the
blocked matrix in the BAIJ format or should I
just assemble the BAIJ matrix as AIJ?</blockquote>
<div><br>
</div>
<div>I am afraid you are currently stuck with
the latter.</div>
<div><br>
</div>
<div> Thanks,</div>
<div><br>
</div>
<div> Matt</div>
<div> </div>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span><font color="#888888"><br>
<span><font color="#888888">
-- <br>
Best,<br>
Luc<br>
<br>
<br>
</font></span></font></span></blockquote>
<span><font color="#888888"> </font></span></div>
<span><font color="#888888"> <br>
<br clear="all"><span><font color="#888888">
<div><br>
</div>
-- <br>
<div>What most experimenters take for granted
before they begin their experiments is
infinitely more interesting than any results
to which their experiments lead.<br>
-- Norbert Wiener</div>
</font></span></font></span></div><span><font color="#888888">
</font></span></div><span><font color="#888888">
</font></span></blockquote><span><font color="#888888">
<br>
</font></span></div><span><font color="#888888">
</font></span></blockquote><span><font color="#888888">
</font></span></div><span><font color="#888888">
<br>
<br clear="all">
<div><br>
</div>
-- <br>
<div>What most experimenters take for
granted before they begin their experiments is infinitely
more interesting than any results to which their experiments
lead.<br>
-- Norbert Wiener</div>
</font></span></div>
</div>
</blockquote>
<br>
</div>
</blockquote></div><br><br clear="all"><div><br></div>-- <br><div>What most experimenters take for granted before they begin their experiments is infinitely more interesting than any results to which their experiments lead.<br>-- Norbert Wiener</div>
</div></div>