[petsc-users] Question about using MatSNESMFWPSetComputeNormU

최경준 kyungjun.choi92 at gmail.com
Thu Aug 18 11:42:02 CDT 2016


Thanks for your helpful answers.

Here's another question...

As I read some example PETSc codes, I noticed that there should be a
preconditioning matrix (e.g. approx. jacobian matrix) when using
MatCreateSNESMF().

I mean,
after calling MatCreateSNESMF(snes, A, ier),
there should be another matrix preA(preconditioning matrix) to use
SNESSetJacobian(snes, A, preA, FormJacobian, ctx, ier).


1) Is there any way that I can use matrix-free method without making
preconditioning matrix?

2) I have a reference code, and the code adopts

MatFDColoringCreate()
and finally uses
SNESComputeJacobianDefaultColor() at FormJacobian stage.

But I can't see the inside of the fdcolor and I'm curious of this
mechanism. Can you explain this very briefly or tell me an example code
that I can refer to. ( I think none of PETSc example code is using
fdcolor..)


Best,

Kyungjun.

2016-08-19 0:54 GMT+09:00 Matthew Knepley <knepley at gmail.com>:

> On Thu, Aug 18, 2016 at 10:39 AM, 최경준 <kyungjun.choi92 at gmail.com> wrote:
>
>> 1) I wanna know the difference between applying option with command line
>> and within source code.
>> From my experience, command line option helps set other default settings
>> that I didn't applied, I guess.
>>
>
> The command line arguments are applied to an object when *SetFromOptions()
> is called, so in this case
> you want SNESSetFromOptions() on the solver. There should be no difference
> from using the API.
>
>
>> 2) I made a matrix-free matrix with MatCreateSNESMF function, and every
>> time I check my snes context with SNESView,
>>
>>     Mat Object:     1 MPI processes
>>       type: mffd
>>       rows=11616, cols=11616
>>         Matrix-free approximation:
>>           err=1.49012e-08 (relative error in function evaluation)
>>           The compute h routine has not yet been set
>>
>> at the end of line shows there's no routine for computing h value.
>> I used MatMFFDWPSetComputeNormU function, but it didn't work I think.
>> Is it ok if I leave the h value that way? Or should I have to set h
>> computing routine?
>>
>
> I am guessing you are calling the function on a different object from the
> one that is viewed here.
> However, there will always be a default function for computing h.
>
>   Thanks,
>
>     Matt
>
>
>> Kyungjun.
>>
>> 2016-08-18 23:18 GMT+09:00 Matthew Knepley <knepley at gmail.com>:
>>
>>> On Thu, Aug 18, 2016 at 8:35 AM, 최경준 <kyungjun.choi92 at gmail.com> wrote:
>>>
>>>> Hi, I'm trying to set my SNES matrix-free with Walker & Pernice way of
>>>> computing h value.
>>>>
>>>> I found above command (MatSNESMFWPSetComputeNormU) but my fortran
>>>> compiler couldn't fine any reference of that command.
>>>>
>>>> I checked Petsc changes log, but there weren't any mentions about that
>>>> command.
>>>>
>>>> Should I have to include another specific header file?
>>>>
>>>
>>> We have this function
>>>
>>>   http://www.mcs.anl.gov/petsc/petsc-current/docs/manualpage
>>> s/Mat/MatMFFDWPSetComputeNormU.html
>>>
>>> but I would recommend using the command line option
>>>
>>>   *-mat_mffd_compute_normu*
>>>
>>>   Thanks,
>>>
>>>      Matt
>>>
>>> Thank you always.
>>>>
>>>
>>>
>>>
>>> --
>>> 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/20160819/0e0ecfcf/attachment-0001.html>


More information about the petsc-users mailing list