[petsc-users] pcfieldsplit for a composite dm with multiple subfields

Gideon Simpson gideon.simpson at gmail.com
Thu Aug 27 21:32:18 CDT 2015


I’m getting the following errors:

[1]PETSC ERROR: Argument out of range
[1]PETSC ERROR: Inserting a new nonzero (40003, 0) into matrix

Could this have to do with me using the DMComposite with one da holding the scalar parameters and the other holding the field variables?

-gideon

> On Aug 27, 2015, at 10:15 PM, Matthew Knepley <knepley at gmail.com> wrote:
> 
> On Thu, Aug 27, 2015 at 9:11 PM, Gideon Simpson <gideon.simpson at gmail.com <mailto:gideon.simpson at gmail.com>> wrote:
> HI Barry,
> 
> Nope, I’m not doing any grid sequencing. Clearly that makes a lot of sense, to solve on a spatially coarse mesh for the field variables, interpolate onto the finer mesh, and then solve again.  I’m not entirely clear on the practical implementation
> 
> SNES should do this automatically using -snes_grid_sequence <k>.  If this does not work, complain. Loudly.
> 
>    Matt
> 
> -gideon
> 
>> On Aug 27, 2015, at 10:02 PM, Barry Smith <bsmith at mcs.anl.gov <mailto:bsmith at mcs.anl.gov>> wrote:
>> 
>> 
>>   Gideon,
>> 
>>    Are you using grid sequencing? Simply solve on a coarse grid, interpolate u1 and u2 to a once refined version of the grid and use that plus the mu lam as initial guess for the next level. Repeat to as fine a grid as you want. You can use DMRefine() and DMGetInterpolation() to get the interpolation needed to interpolate from the coarse to finer mesh.
>> 
>>    Then and only then you can use multigrid (with or without fieldsplit) to solve the linear problems for finer meshes. Once you have the grid sequencing working we can help you with this.
>> 
>>   Barry
>> 
>>> On Aug 27, 2015, at 7:00 PM, Gideon Simpson <gideon.simpson at gmail.com <mailto:gideon.simpson at gmail.com>> wrote:
>>> 
>>> I’m working on a problem which, morally, can be posed as a system of coupled semi linear elliptic PDEs together with unknown nonlinear eigenvalue parameters, loosely, of the form
>>> 
>>> -\Delta u_1 + f(u_1, u_2) = lam * u1 - mu * du2/dx 
>>> -\Delta u_2 + g(u_1, u_2) = lam * u2 + mu * du1/dx 
>>> 
>>> Currently, I have it set up with a DMComposite with two sub da’s, one for the parameters (lam, mu), and one for the vector field (u_1, u_2) on the mesh.  I have had success in solving this as a fully coupled system with SNES + sparse direct solvers (MUMPS, SuperLU).
>>> 
>>> Lately, I am finding that, when the mesh resolution gets fine enough (i.e.  10^6-10^8 lattice points), my SNES gets stuck with the function norm = O(10^{-4}),  eventually returning reason -6 (failed line search).
>>> 
>>> Perhaps there is another way around the above problem, but one thing I was thinking of trying would be to get away from direct solvers, and I was hoping to use field split for this.  However, it’s a bit beyond what I’ve seen examples for because it has 2 types of variables: scalar parameters which appear globally in the system and vector valued field variables.  Any suggestions on how to get started?
>>> 
>>> -gideon
>>> 
>> 
> 
> 
> 
> 
> -- 
> What most experimenters take for granted before they begin their experiments is infinitely more interesting than any results to which their experiments lead.
> -- Norbert Wiener

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20150827/b7ff1c22/attachment.html>


More information about the petsc-users mailing list