<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body text="#000000" bgcolor="#FFFFFF">
<p>hi Matt,</p>
<br>
<div class="moz-cite-prefix">On 20/02/18 12:32, Matthew Knepley
wrote:<br>
</div>
<blockquote type="cite"
cite="mid:CAMYG4GkA2GC9F+rMCknKEwiS3wv0oWBjLRznihThgie8UJ-aWw@mail.gmail.com">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<div dir="ltr">
<div class="gmail_extra">
<div class="gmail_quote">On Mon, Feb 19, 2018 at 4:33 PM,
Adrian Croucher <span dir="ltr"><<a
href="mailto:a.croucher@auckland.ac.nz" target="_blank"
moz-do-not-send="true">a.croucher@auckland.ac.nz</a>></span>
wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0
.8ex;border-left:1px #ccc solid;padding-left:1ex">
<div text="#000000" bgcolor="#FFFFFF">
<p>hi Matt</p>
<p>I tried what you suggested and modified
DMPlexGetFieldType_Internal() so that all processes
have the same field type (ft):</p>
</div>
</blockquote>
<div>Yep, this is going to take specifying in the interface
that it is collective. It looks like it might be used as
if it is not. <br>
</div>
</div>
</div>
</div>
</blockquote>
<br>
It looks to me like that may not be the problem, actually. I think I
may have tracked it down though.<br>
<br>
In vec/vec/interface/rvector.c:1280, in VecGetSubVector():<br>
<br>
<tt> if (n%bs || bs == 1) bs = -1; /* Do not decide block size
if we do not have to */</tt><tt><br>
</tt><tt><br>
</tt>If there are no cells on one process (n = 0) then n%bs = 0, so
if bs > 1 the reassignment bs = -1 doesn't happen.<br>
<br>
If I alter it to:<br>
<br>
<tt> if (n%bs || bs == 1 || !n) bs = -1; /* Do not decide block
size if we do not have to */</tt><tt><br>
</tt><tt><br>
</tt>then it also sets bs = -1 on the n = 0 process, and it works
fine for my case.<br>
<br>
I'm not sure I fully understand the purpose of this line though, so
don't know if what I've done is always going to be the right thing?<br>
<br>
I also wondered if it would be desirable to ensure bs is consistent
across all processes, but am not sure what the right value would be
in that case. I tried doing an MPI_allreduce() on bs, to find the
minimum across processes (so if any were -1 then they all were) and
that also worked for my case.<br>
<br>
- Adrian<br>
<tt>
</tt>
<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>