<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>