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

Barry Smith bsmith at mcs.anl.gov
Thu Aug 27 21:02:45 CDT 2015

```   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> 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
>

```