On Tue, Apr 5, 2011 at 4:28 AM, Thomas Witkowski <span dir="ltr"><<a href="mailto:thomas.witkowski@tu-dresden.de">thomas.witkowski@tu-dresden.de</a>></span> wrote:<br><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
Jed Brown wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
On Tue, Mar 29, 2011 at 15:29, Thomas Witkowski <<a href="mailto:thomas.witkowski@tu-dresden.de" target="_blank">thomas.witkowski@tu-dresden.de</a> <mailto:<a href="mailto:thomas.witkowski@tu-dresden.de" target="_blank">thomas.witkowski@tu-dresden.de</a>>> wrote:<br>

<br>
    Is there any example which makes use of it?<br>
<br>
<br>
src/snes/examples/tutorials/ex28.c is a (contrived) multi-physics prototype that uses MatNest tranparently if you run with -pack_dm_mat_type nest (currently, you should add -pc_type fieldsplit -pc_fieldsplit_type additive because off-diagonal blocks are not automatically preallocated).<br>

<br>
There are also two tests that use the low-level API:<br>
<br>
$ grep -l MatNest src/**/tests/*.c<br>
src/ksp/ksp/examples/tests/ex22.c<br>
src/snes/examples/tests/ex17.c<br>
</blockquote>
So, I reimplemented my code to assemble the matrices to a MatNest matrix. This seems to work fine. But how to define the FieldSplits? I did it in the following way:<br>
<br>
   KSP solver;<br>
   PC pc;<br>
   KSPCreate(PETSC_COMM_WORLD, &solver);<br>
   KSPGetPC(solver, &pc);<br>
   const PetscInt interiorField[1] = {0};<br>
   const PetscInt boundaryField[1] = {1};<br>
   PCFieldSplitSetFields(pc, "interior", 1, interiorField);<br>
   PCFieldSplitSetFields(pc, "boundary", 1, boundaryField);<br>
<br>
When I run my code with the options "-ksp_type preonly -pc_type fieldsplit -pc_fieldsplit_type schur", I get the following errors in KSPSolve:<br>
<br>
[0]PETSC ERROR: --------------------- Error Message ------------------------------------<br>
[0]PETSC ERROR: Petsc has generated inconsistent data!<br>
[0]PETSC ERROR: Unhandled case, must have at least two fields!<br>
<br>
Is the creation of the split wrong? If not, what is a good way to figure out the problem?</blockquote><div><br></div><div>This is almost certainly a problem with the setup order. In this code, the PC type is not yet set</div>
<div>so the FieldSplit calls are ignored. When it finally is set, there are no fields defined. I would call</div><div>KSPSetFromOptions() before retrieving the PC.</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;">
<font color="#888888"><br>
Thomas<br>
</font></blockquote></div><br><br clear="all"><br>-- <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<br>