<div dir="ltr">Are you running with --use-petsc-dm? Otherwise a DM might not be getting attached to SNES, hence, no call to DMCreateFieldDecomposition(). I need to fix that API in DMlibMesh -- if fell behind the analogous DMMoose API, which works correctly with petsc-3.4. It's unlikely to make it into HEAD before the release, though. <div>
<br></div><div>In the meantime you can work around this, if you can use -node_major_dofs (I think) to interlace the degrees of freedom, if all your variables are of the same type. Then you can use the more basic PETSc field definitions on the command line.<div>
Dmitry.</div><div><br></div></div><div class="gmail_extra"><br><br><div class="gmail_quote">On Sat, Jul 20, 2013 at 4:57 PM, subramanya sadasiva <span dir="ltr"><<a href="mailto:potaman@outlook.com" target="_blank">potaman@outlook.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div><div dir="ltr">Hi Dmitry, <div>I am using petsc 3.4.2 . I should have been clearer about the problem that I had. I was unable to see a call to DMCreateFieldDecomposition in gdb when I ran the code with a field split preconditioner specified. If the routine has not yet been updated, I can understand why it is causing problems.</div>
<div>Thanks, <br>Subramanya <br><br><div><hr>From: <a href="mailto:karpeev@mcs.anl.gov" target="_blank">karpeev@mcs.anl.gov</a><br>Date: Sat, 20 Jul 2013 16:42:50 -0500<br>Subject: Fwd: [petsc-users] Trying to set up a field-split preconditioner<br>
To: <a href="mailto:potaman@outlook.com" target="_blank">potaman@outlook.com</a>; <a href="mailto:libmesh-users@lists.sourceforge.net" target="_blank">libmesh-users@lists.sourceforge.net</a><div><div class="h5"><br><br><br>
<br><div dir="ltr">What version of petsc are you using?</div><div dir="ltr"><span style="font-size:12pt">DMlibMesh needs to be updated to serve the splits via DMCreateFieldDecomposition() correctly to petsc-3.4. Note that DMCreateFieldDecomposition() is called by PCFieldSplit from PETSc, so you wouldn't see those calls in the libMesh source.</span></div>
<div dir="ltr"><div><div dir="ltr">
<span><font color="#888888">
<div><br></div><div>Dmitry.</div></font></span><div><div><div><br><br><div>On Sat, Jul 20, 2013 at 6:35 AM, subramanya sadasiva <span dir="ltr"><<a href="mailto:potaman@outlook.com" target="_blank">potaman@outlook.com</a>></span> wrote:<br>
<blockquote style="border-left:1px #ccc solid;padding-left:1ex">Hi Matt, <br>
Libmesh does create the DM. This is the relevant code. <br>
<br>
ierr = DMCreateLibMesh(libMesh::COMM_WORLD, this->system(), &dm);CHKERRABORT(libMesh::COMM_WORLD, ierr);<br>
ierr = DMSetFromOptions(dm); CHKERRABORT(libMesh::COMM_WORLD, ierr);<br>
ierr = DMSetUp(dm); CHKERRABORT(libMesh::COMM_WORLD, ierr);<br>
ierr = SNESSetDM(this->_snes, dm); CHKERRABORT(libMesh::COMM_WORLD, ierr);<br>
<br>
I am unable to tell from the code whether the DMCreateFieldDecomposition is run at all. I will see if running in the debugger helps me figure it out.<br>
Thanks,<br>
Subramanya <br>
<br>
<br>
<br>
Date: Sat, 20 Jul 2013 06:22:30 -0500<br>
<div>Subject: Re: [petsc-users] Trying to set up a field-split preconditioner<br>
From: <a href="mailto:knepley@gmail.com" target="_blank">knepley@gmail.com</a><br>
To: <a href="mailto:potaman@outlook.com" target="_blank">potaman@outlook.com</a><br>
CC: <a href="mailto:petsc-users@mcs.anl.gov" target="_blank">petsc-users@mcs.anl.gov</a><br>
<br>
</div><div>On Sat, Jul 20, 2013 at 6:19 AM, subramanya sadasiva <<a href="mailto:potaman@outlook.com" target="_blank">potaman@outlook.com</a>> wrote:<br>
Hi Matt, <br>
The DM is created by the LibMesh code. The only thing I do directly with Petsc is set the solver prefixes which libmesh doesn't have an interface for at present . I have been able to set most options directly through command line options. this is the one case where that is not helping, and it might just be that I don't know how. Let me see if I am able to get this working.<br>
<br>
So does Libmesh create the PETSc solver? If so, it should be calling KSPSetDM() or SNESSetDM() or TSSetDM(). This<br>
is all I want to know. It seems like this is not the case since the PCFIELDSPLIT says it has no fields. Either that, or they have<br>
a bug in the DMCreateFieldDecomposition() implementation.<br>
<br>
Either way, it seems like the thing to do is run with -start_in_debugger, and break in PCFieldSplitSetDefaults() where that is called.<br>
<br>
Matt<br>
<br>
<br>
Thanks, <br>
Subramanya <br>
<br>
</div><div>Date: Sat, 20 Jul 2013 06:07:47 -0500<br>
Subject: Re: [petsc-users] Trying to set up a field-split preconditioner<br>
From: <a href="mailto:knepley@gmail.com" target="_blank">knepley@gmail.com</a><br>
To: <a href="mailto:potaman@outlook.com" target="_blank">potaman@outlook.com</a><br>
CC: <a href="mailto:libmesh-users@lists.sourceforge.net" target="_blank">libmesh-users@lists.sourceforge.net</a>; <a href="mailto:petsc-users@mcs.anl.gov" target="_blank">petsc-users@mcs.anl.gov</a><br>
<br>
On Fri, Jul 19, 2013 at 11:50 PM, subramanya sadasiva <<a href="mailto:potaman@outlook.com" target="_blank">potaman@outlook.com</a>> wrote:<br>
<br>
Hi Matt, <br>
I see that there is an implementation of the interface to DMCreateFieldDecomposition.html . <br>
So does this sound right?<br>
<br>
Yes, that should automatically provide the field decomposition. Since this is not happening, something is<br>
wrong in the code. Is the DM set in your solver?<br>
<br>
1. I get index sets ,and variable names from the dm create field decomposition <br>
2. Once I have these , I create fieldsplits and name them using this.. <br>
3. And I guess I should be ready to go.. <br>
One question that remains is that the fieldsplit is created on a full matrix. However, an algorithm such as VIRS operates only on a subset of this full DM. Will the fieldsplit and preconditioner created on the full DM carry over to the subsidiary DMs?<br>
<br>
VI is still new, and I have not tested in this case, but it is supposed to work.<br>
<br>
Thanks,<br>
<br>
Matt<br>
<br>
Thanks for all the help!<br>
Subramanya <br>
<br>
<br>
</div><div><div>Date: Fri, 19 Jul 2013 23:09:10 -0500<br>
Subject: Re: [petsc-users] Trying to set up a field-split preconditioner<br>
From: <a href="mailto:knepley@gmail.com" target="_blank">knepley@gmail.com</a><br>
To: <a href="mailto:potaman@outlook.com" target="_blank">potaman@outlook.com</a><br>
CC: <a href="mailto:petsc-users@mcs.anl.gov" target="_blank">petsc-users@mcs.anl.gov</a><br>
<br>
On Fri, Jul 19, 2013 at 9:59 PM, subramanya sadasiva <<a href="mailto:potaman@outlook.com" target="_blank">potaman@outlook.com</a>> wrote:<br>
Hi Matt, <br>
The DM being created is here (this is from Libmesh code <br>
(petscdmlibmesh.C ) <br>
<br>
01047 { <br>
01048 PetscErrorCode ierr;<br>
01049 PetscFunctionBegin;<br>
01050 ierr = DMCreate(comm, dm); CHKERRQ(ierr);<br>
01051 ierr = DMSetType(*dm, DMLIBMESH); CHKERRQ(ierr);<br>
01052 ierr = DMLibMeshSetSystem(*dm, sys); CHKERRQ(ierr);<br>
01053 PetscFunctionReturn(0);<br>
01054 }<br>
<br>
<br>
This file has methods to access the variables assigned to the DM (this seems to be stored in a struct.) <br>
So , I guess one should be able to add a bit of code to create sections as you mentioned somewhere around here. <br>
<br>
Okay, they have their own DM. It must implement one of the interfaces for field specification. They could provide<br>
<br>
<a href="http://www.mcs.anl.gov/petsc/petsc-current/docs/manualpages/DM/DMCreateFieldDecomposition.html" target="_blank">http://www.mcs.anl.gov/petsc/petsc-current/docs/manualpages/DM/DMCreateFieldDecomposition.html</a><br>
<br>
or at a lower level<br>
<br>
<a href="http://www.mcs.anl.gov/petsc/petsc-current/docs/manualpages/DM/DMCreateSubDM.html" target="_blank">http://www.mcs.anl.gov/petsc/petsc-current/docs/manualpages/DM/DMCreateSubDM.html</a><br>
<br>
which in turn can be constructed by specifying a default PetscSection<br>
<br>
<a href="http://www.mcs.anl.gov/petsc/petsc-current/docs/manualpages/DM/DMSetDefaultSection.html" target="_blank">http://www.mcs.anl.gov/petsc/petsc-current/docs/manualpages/DM/DMSetDefaultSection.html</a><br>
<br>
Matt<br>
<br>
Thanks, <br>
Subramanya <br>
<br>
<br>
<br>
<br>
<br>
Date: Fri, 19 Jul 2013 21:33:11 -0500<br>
Subject: Re: [petsc-users] Trying to set up a field-split preconditioner<br>
From: <a href="mailto:knepley@gmail.com" target="_blank">knepley@gmail.com</a><br>
To: <a href="mailto:potaman@outlook.com" target="_blank">potaman@outlook.com</a><br>
CC: <a href="mailto:petsc-users@mcs.anl.gov" target="_blank">petsc-users@mcs.anl.gov</a><br>
<br>
On Fri, Jul 19, 2013 at 9:17 PM, subramanya sadasiva <<a href="mailto:potaman@outlook.com" target="_blank">potaman@outlook.com</a>> wrote:<br>
Hi Matt, <br>
I am using Libmesh so the DM stuff is actually in the background, and unfortunately the matrix doesn't have a saddle point, <br>
I thought that <br>
<br>
-ch_solve_fieldsplit_block_size 2<br>
-ch_solve_fieldsplit_0_fields 0<br>
-ch_solve_fieldsplit_1_fields 1<br>
<br>
The block_size argument presumes you are using a DA. Are you?<br>
<br>
The other two options just say select the first DM field as field 0 in this PC, and the same with the second field. The<br>
DM must inform the PC about the initial field decomposition.<br>
<br>
would inform the solver of the structure. If this doesn't work owing to the fact that the problem is only being solved on a section of the mesh (because of the reduced space method), I guess I will have to use the PetscSection. Does that sound right?<br>
<br>
First, I think the right people to do this are the Libmesh people (we will of course help them). Second, you have not said<br>
whether you are using a structured or unstructured mesh. What DM class does the solver actually see?<br>
<br>
Thanks,<br>
<br>
Matt<br>
<br>
Thanks, <br>
Subramanya <br>
<br>
<br>
Subject: Re: [petsc-users] Trying to set up a field-split preconditioner<br>
From: <a href="mailto:knepley@gmail.com" target="_blank">knepley@gmail.com</a><br>
To: <a href="mailto:potaman@outlook.com" target="_blank">potaman@outlook.com</a><br>
CC: <a href="mailto:petsc-users@mcs.anl.gov" target="_blank">petsc-users@mcs.anl.gov</a>; <a href="mailto:libmesh-users@lists.sourceforge.net" target="_blank">libmesh-users@lists.sourceforge.net</a><br>
<br>
On Fri, Jul 19, 2013 at 7:56 PM, subramanya sadasiva <<a href="mailto:potaman@outlook.com" target="_blank">potaman@outlook.com</a>> wrote:<br>
Hi, <br>
I am trying to set up a fieldsplit preconditioner for my Cahn Hilliard solver and I get the following error, <br>
<br>
You have to tell the PCFIELDSPLIT about the dofs in each field. So<br>
<br>
1) You are probably not using a DA, since it would tell it automatically<br>
<br>
2) If you have a saddle point, you can use -pc_fieldsplit_detect_saddle_point<br>
<br>
3) If none of those apply, you can set a PetscSection describing your layout to the DM for the solver.<br>
Since this is new, I suspect you will need help, so mail back.<br>
<br>
Thanks,<br>
<br>
Matt<br>
<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, not 0!<br>
[0]PETSC ERROR: ------------------------------------------------------------------------<br>
<br>
These are the options that I am using, <br>
-ch_solve is just a prefix. <br>
<br>
<br>
<br>
-ch_solve_pc_type fieldsplit<br>
-ch_solve_pc_fieldsplit_type schur<br>
-ch_solve_fieldsplit_block_size 2<br>
-ch_solve_fieldsplit_0_field 1<br>
-ch_solve_fieldsplit_1_field 0<br>
-ch_solve_fieldsplit_0_ksp_type cg <br>
-ch_solve_fieldsplit_0_pc_type hypre<br>
-ch_solve_fieldsplit_0_pc_type_hypre boomeramg <br>
-ch_solve_fieldsplit_1_ksp_type cg<br>
-ch_solve_fieldsplit_1_pc_type hypre <br>
-ch_solve_fieldsplit_1_pc_type_hypre boomeramg<br>
<br>
Any ideas?<br>
<br>
Thanks,<br>
Subramanya <br>
<br>
<br>
<br>
<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>
<br>
<br>
<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>
<br>
<br>
<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>
<br>
<br>
<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>
<br>
<br>
<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 </div></div></blockquote></div><br></div><br clear="all"><div><br></div><br></div></div></div>
</div><br><br clear="all"><div><br></div><br>
</div></div></div></div></div> </div></div>
</blockquote></div><br><br>
</div></div>