<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Fri, Nov 29, 2013 at 10:43 AM, Nico Schlömer <span dir="ltr"><<a href="mailto:nico.schloemer@gmail.com" target="_blank">nico.schloemer@gmail.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hm, I tried<br>
<br>
================ *snip* ================<br>
  IS is;<br>
  ierr = ISCreateGeneral(PETSC_COMM_WORLD, u_indices.size(), u_indices.data(),<br>
                         PETSC_USE_POINTER, &is);<br>
  PCFieldSplitSetIS(pc, "u", is);<br>
  IS p_is;<br>
  ierr = ISCreateGeneral(PETSC_COMM_WORLD, p_indices.size(), p_indices.data(),<br>
                         PETSC_USE_POINTER, &p_is);<br>
  PCFieldSplitSetIS(pc, "p", p_is);<br>
================ *snap* ================<br>
<br>
now (where u_indices, p_indices are set to {0,1,3,4,6,7...},<br>
{2,5,8,...}), but I'm still getting<br>
<br>
================ *snip* ================<br>
[0]PETSC ERROR: Petsc has generated inconsistent data!<br>
[0]PETSC ERROR: Unhandled case, must have at least two fields, not 1!<br>
================ *snap* ================<br>
<br>
What would I have to look at to debug this?<br></blockquote><div><br></div><div>The PC is getting recreated somewhere in the intervening code. At least this makes the</div><div>most sense to me. I would get in the debugger and break in PCCreate_FieldSplit.</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">
--Nico<br>
<br>
On Thu, Nov 28, 2013 at 5:53 PM, Jed Brown <<a href="mailto:jedbrown@mcs.anl.gov">jedbrown@mcs.anl.gov</a>> wrote:<br>
> Nico Schlömer <<a href="mailto:nico.schloemer@gmail.com">nico.schloemer@gmail.com</a>> writes:<br>
><br>
>> Hi Jed,<br>
>><br>
>> thanks for the quick answer!<br>
>> I can of course generate the strided index sets (01x34x6...,<br>
>> xx2xx5x...) myself and insert them via PCFieldSplitSetIS(), but I<br>
>> thought that ultimately does the same thing that I would have liked<br>
>> PCFieldSplitSetFields() to do for me. Not true?<br>
><br>
> PCFieldSplitSetFields is something you call only once to identify all<br>
> the fields.  It doesn't let you group multiple strides in one, so you<br>
> could create "ux", "uy", and "p", but then those would be separate.  You<br>
> can create splits using numbers, -fieldsplit_block_size 3<br>
> -fieldsplit_0_fields 0,1 -fieldsplit_1_fields 2 (assuming collocated<br>
> discretization), but this can be rather opaque to maintain.<br>
</blockquote></div><br><br clear="all"><div><br></div>-- <br>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>