[petsc-users] how to control snes_mf_operator

Matthew Knepley knepley at gmail.com
Tue Dec 11 16:29:33 CST 2012


On Tue, Dec 11, 2012 at 2:19 PM, Zou (Non-US), Ling <ling.zou at inl.gov> wrote:
> Matt, one more question.
>
> Can I combine the options
> -snes_type test
> and
> -mat_mffd_err 1.e-10
> to see the effect?

I do not understand your question. test does compare the analytic and
FD Jacobian
actions, but I thought you did not have an analytic action.

   Matt

> Best,
>
> Ling
>
>
>
> On Tue, Dec 11, 2012 at 2:47 PM, Zou (Non-US), Ling <ling.zou at inl.gov>
> wrote:
>>
>> thank you Matt. I will try to figure it out. Non-dimensionalization is
>> certainly something worth to try.
>>
>> Best,
>>
>> Ling
>>
>>
>> On Tue, Dec 11, 2012 at 2:41 PM, Matthew Knepley <knepley at gmail.com>
>> wrote:
>>>
>>> On Tue, Dec 11, 2012 at 1:40 PM, Matthew Knepley <knepley at gmail.com>
>>> wrote:
>>> > On Tue, Dec 11, 2012 at 1:34 PM, Zou (Non-US), Ling <ling.zou at inl.gov>
>>> > wrote:
>>> >> Dear All,
>>> >>
>>> >> I have recently had an issue using snes_mf_operator. I've tried to
>>> >> figure it
>>> >> out from PETSc manual and PETSc website but didn't get any luck, so I
>>> >> submit
>>> >> my question here and hope some one could help me out.
>>> >>
>>> >> (1)
>>> >> =================================================================
>>> >> A little bit background here: my problem has 7 variables, i.e.,
>>> >>
>>> >> U = [U0, U1, U2, U3, U4, U5, U6]
>>> >>
>>> >> U0 is in the order of 1.
>>> >> U1, U2, U4 and U5 in the oder of 100.
>>> >> U3 and U6 are in the order of 1.e8.
>>> >>
>>> >> I believe this should be quite common for most PETSc users.
>>> >>
>>> >> (2)
>>> >> =================================================================
>>> >> My problem here is, U0, by its physical meaning, has to be limited
>>> >> between 0
>>> >> and 1. When PETSc starts to perturb the initial solution of U (which I
>>> >> believe properly set) to approximate the operation of J (dU), the U0
>>> >> get a
>>> >> perturbation size in the order of 100, which causes problem as U0 has
>>> >> to be
>>> >> smaller than 1.
>>> >>
>>> >> From my observation, this same perturbation size, say eps, is applied
>>> >> on all
>>> >> U0, U1, U2, etc. <=== Is this the default setting?
>>> >> I also guess that this eps, in the order of 100, is determined from my
>>> >> initial solution vector and other related PETSc parameters.  <=== Is
>>> >> my
>>> >> guessing right?
>>> >>
>>> >> (3)
>>> >> =================================================================
>>> >> My question: I'd like to avoid a perturbation size ~100 on U0, i.e., I
>>> >> have
>>> >> to limit it to be ~0.01 (or some small number) to avoid the U0 > 1
>>> >> situation. Is there any way to control that?
>>> >> Or, is there any advanced option to control the perturbation size on
>>> >> different variables when using snes_mf_operator?
>>> >
>>> > Here is a description of the algorithm for calculating h. It seems to
>>> > me a better way to do this
>>> > is to non-dimensionalize first.
>>>
>>> I forgot the URL:
>>>
>>> http://www.mcs.anl.gov/petsc/petsc-dev/docs/manualpages/Mat/MatCreateMFFD.html#MatCreateMFFD
>>>
>>>    Matt
>>>
>>> >    Matt
>>> >
>>> >>
>>> >> Hope my explanation is clear. Please let me know if it is not.
>>> >>
>>> >>
>>> >> Best Regards,
>>> >>
>>> >> Ling
>>> >>
>>> >
>>> >
>>> >
>>> > --
>>> > 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


More information about the petsc-users mailing list