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