<html>
  <head>
    <meta content="text/html; charset=utf-8" http-equiv="Content-Type">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    <p>On 23/06/17 00:48, Matthew Knepley wrote:<br>
    </p>
    <blockquote
cite="mid:CAMYG4GkJC3vFUhbD7qefDsau7Qdi544=tK2jyQOmkYgpt10ewg@mail.gmail.com"
      type="cite">
      <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
      <div dir="ltr">
        <div class="gmail_extra">
          <div class="gmail_quote"><span class=""></span><br>
            <span class=""></span> If I understand what you mean, I
            considered doing something like that- basically just
            defining extra degrees of freedom in the cells where dual
            porosity is to be applied.<br>
            <blockquote class="gmail_quote" style="margin:0 0 0
              .8ex;border-left:1px #ccc solid;padding-left:1ex">
              <div bgcolor="#FFFFFF" text="#000000"> <br>
                It seemed to me that if I then went ahead and created
                the Jacobian matrix using DMCreateMatrix(), it would
                give me extra nonzero entries that shouldn't be there -
                interactions between the dual porosity variables in
                neighbouring cells. Is there any way to avoid that?</div>
            </blockquote>
            <div><br>
            </div>
            <div>Ah, this is a very good point. You would like sparse
              structure in the Jacobian blocks. Currently I do not have
              it,</div>
            <div>but DMNetwork does. I have been planning to unify the
              sparsity determination between the two. It is on the list.</div>
          </div>
        </div>
      </div>
    </blockquote>
    <br>
    I can see another possible problem with this approach, which is that
    the extra dual-porosity unknowns would presumably be interlaced with
    the others (the fracture unknowns) in the resulting vector. This
    might make it harder to apply PCFIELDSPLIT (I think?), where I want
    to partition the Jacobian into fracture and matrix parts to solve it
    more efficiently, as Jed and Barry suggested. <br>
    <br>
    I have played around a bit more with including the dual-porosity
    topology in the DMPlex. It seems to work OK if I just extend the DAG
    on the dual-porosity faces up to the maximum depth (so there is an
    unused edge and vertex associated with each dual-porosity face).<br>
    <br>
    I also had a closer look inside DMPlexStratify() and I can see that
    it won't work if different parts of the DAG have different heights.
    For my case I could possibly stratify it differently (starting from
    the cell end rather than the vertex end) and it might work, but I
    don't know if there are other DMPlex functions that might not like
    that kind of DAG either.<br>
    <br>
    - Adrian<br>
    <pre class="moz-signature" cols="72">-- 
Dr Adrian Croucher
Senior Research Fellow
Department of Engineering Science
University of Auckland, New Zealand
email: <a class="moz-txt-link-abbreviated" href="mailto:a.croucher@auckland.ac.nz">a.croucher@auckland.ac.nz</a>
tel: +64 (0)9 923 4611
</pre>
  </body>
</html>