[petsc-users] PetscDSSetJacobianPreconditioner causing DIVERGED_LINE_SEARCH for multi-field problem

Sander Arens Sander.Arens at UGent.be
Thu Mar 3 10:28:23 CST 2016


Sure, here it is.

Thanks,
Sander

On 3 March 2016 at 15:33, Matthew Knepley <knepley at gmail.com> wrote:

> On Thu, Mar 3, 2016 at 8:05 AM, Sander Arens <Sander.Arens at ugent.be>
> wrote:
>
>> Yes, the matrix is created by one of the assembly functions in Plex, so
>> that answers my question. I was confused by this because I couldn't see
>> this information when using -snes_view.
>>
>
> Hmm, then something is wrong because the block size should be printed for
> the matrix at the end of the solver in -snes_view, Can you
> send that to me?
>
>   Thanks,
>
>      Matt
>
>
>> Thanks for the helpful replies,
>> Sander
>>
>> On 3 March 2016 at 14:52, Matthew Knepley <knepley at gmail.com> wrote:
>>
>>> On Thu, Mar 3, 2016 at 7:49 AM, Sander Arens <Sander.Arens at ugent.be>
>>> wrote:
>>>
>>>> And how can I do this? Because when I look at all the options with
>>>> -help I can strangely enough only find -fieldsplit_pressure_mat_block_size
>>>> and not -fieldsplit_displacement_mat_block_size.
>>>>
>>>
>>> Maybe I am missing something here. The matrix from which you calculate
>>> the preconditioner using GAMG must be created somewhere. Why
>>> is the block size not specified at creation time? If the matrix is
>>> created by one of the assembly functions in Plex, and the PetscSection has
>>> a number of field components, then the block size will already be set.
>>>
>>>   Thanks,
>>>
>>>      Matt
>>>
>>>
>>>> Thanks,
>>>> Sander
>>>>
>>>> On 3 March 2016 at 14:21, Matthew Knepley <knepley at gmail.com> wrote:
>>>>
>>>>> On Thu, Mar 3, 2016 at 6:20 AM, Sander Arens <Sander.Arens at ugent.be>
>>>>> wrote:
>>>>>
>>>>>> Ok, I forgot to call SNESSetJacobian(snes, J, P, NULL, NULL) with J
>>>>>> != P, which caused to write the mass matrix into the (otherwise zero) (1,1)
>>>>>> block of the Jacobian and which was the reason for the linesearch to fail.
>>>>>> However, after fixing that and trying to solve it with FieldSplit
>>>>>> with LU factorization for the (0,0) block it failed because there were zero
>>>>>> pivots for all rows.
>>>>>>
>>>>>> Anyway, I found out that attaching the mass matrix to the Lagrange
>>>>>> multiplier field also worked.
>>>>>>
>>>>>> Another related question for my elasticity problem: after creating
>>>>>> the rigid body modes with DMPlexCreateRigidBody and attaching it to the
>>>>>> displacement field, does the matrix block size of the (0,0) block still
>>>>>> have to be set for good performance with gamg? If so, how can I do this?
>>>>>>
>>>>>
>>>>> Yes, it should be enough to set the block size of the preconditioner
>>>>> matrix.
>>>>>
>>>>>   Matt
>>>>>
>>>>>
>>>>>> Thanks,
>>>>>> Sander
>>>>>>
>>>>>> On 2 March 2016 at 12:25, Matthew Knepley <knepley at gmail.com> wrote:
>>>>>>
>>>>>>> On Wed, Mar 2, 2016 at 5:13 AM, Sander Arens <Sander.Arens at ugent.be>
>>>>>>> wrote:
>>>>>>>
>>>>>>>> Hi,
>>>>>>>>
>>>>>>>> I'm trying to set a mass matrix preconditioner for the Schur
>>>>>>>> complement of an incompressible finite elasticity problem. I tried using
>>>>>>>> the command PetscDSSetJacobianPreconditioner(prob, 1, 1, g0_pre_mass_pp,
>>>>>>>> NULL, NULL, NULL) (field 1 is the Lagrange multiplier field).
>>>>>>>> However, this causes a DIVERGED_LINE_SEARCH due to to Nan or Inf in
>>>>>>>> the function evaluation after Newton iteration 1. (Btw, I'm using the next
>>>>>>>> branch).
>>>>>>>>
>>>>>>>> Is this because I didn't use PetscDSSetJacobianPreconditioner for
>>>>>>>> the other blocks (which uses the Jacobian itself for preconditioning)? If
>>>>>>>> so, how can I tell Petsc to use the Jacobian for those blocks?
>>>>>>>>
>>>>>>>
>>>>>>> 1) I put that code in very recently, and do not even have sufficient
>>>>>>> test, so it may be buggy
>>>>>>>
>>>>>>> 2) If you are using FieldSplit, you can control which blocks come
>>>>>>> from A and which come from the preconditioner P
>>>>>>>
>>>>>>>
>>>>>>> http://www.mcs.anl.gov/petsc/petsc-current/docs/manualpages/PC/PCFieldSplitSetDiagUseAmat.html#PCFieldSplitSetDiagUseAmat
>>>>>>>
>>>>>>> http://www.mcs.anl.gov/petsc/petsc-current/docs/manualpages/PC/PCFieldSplitSetOffDiagUseAmat.html#PCFieldSplitSetOffDiagUseAmat
>>>>>>>
>>>>>>>
>>>>>>>> I guess when using PetscDSSetJacobianPreconditioner the
>>>>>>>> preconditioner is recomputed at every Newton step, so for a constant mass
>>>>>>>> matrix this might not be ideal. How can I avoid recomputing this at every
>>>>>>>> Newton iteration?
>>>>>>>>
>>>>>>>
>>>>>>> Maybe we need another flag like
>>>>>>>
>>>>>>>
>>>>>>> http://www.mcs.anl.gov/petsc/petsc-current/docs/manualpages/SNES/SNESSetLagPreconditioner.html
>>>>>>>
>>>>>>> or we need to expand
>>>>>>>
>>>>>>>
>>>>>>> http://www.mcs.anl.gov/petsc/petsc-current/docs/manualpages/SNES/SNESSetLagJacobian.html
>>>>>>>
>>>>>>> to separately cover the preconditioner matrix. However, both
>>>>>>> matrices are computed by one call so this would
>>>>>>> involve interface changes to user code, which we do not like to do.
>>>>>>> Right now it seems like a small optimization.
>>>>>>> I would want to wait and see whether it would really be maningful.
>>>>>>>
>>>>>>>   Thanks,
>>>>>>>
>>>>>>>     Matt
>>>>>>>
>>>>>>>
>>>>>>>> Thanks,
>>>>>>>> Sander
>>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> --
>>>>>>> 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
>>>>>>>
>>>>>>
>>>>>>
>>>>>
>>>>>
>>>>> --
>>>>> 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
>>>>>
>>>>
>>>>
>>>
>>>
>>> --
>>> 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
>>>
>>
>>
>
>
> --
> 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/20160303/f9b36cdb/attachment-0001.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: snes
Type: application/octet-stream
Size: 20713 bytes
Desc: not available
URL: <http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20160303/f9b36cdb/attachment-0001.obj>


More information about the petsc-users mailing list