SNESSetUp() and matrix-free options
Barry Smith
bsmith at mcs.anl.gov
Fri May 8 13:55:25 CDT 2009
Quick look is ok for me.
Barry
On May 8, 2009, at 1:39 PM, Lisandro Dalcin wrote:
> Well, it was not so easy to change the options name...
>
> We would need to update docs, tests, tutorial examples, and at this
> point it is not clear if we could agree on better options names...
>
> I'm now following a different approach, hope the diff attached make it
> clear enough... Just take a look to changes to SNESSetFromOptions()
>
> -
>
>
> On Thu, May 7, 2009 at 10:26 PM, Barry Smith <bsmith at mcs.anl.gov>
> wrote:
>>
>> How about?
>>
>> -snes_mf (means what it currently means)
>>
>> -snes_mf operator (means what -snes_mf_operator means)
>>
>> Barry
>>
>> On May 7, 2009, at 6:03 PM, Lisandro Dalcin wrote:
>>
>>> On Thu, May 7, 2009 at 6:14 PM, Jed Brown <jed at 59a2.org> wrote:
>>>>
>>>> Barry Smith wrote:
>>>>>
>>>>> I understand this. I just don't view this as a big deal worth
>>>>> changing the code over.
>>>>
>>>> I agree. My comment was that *if* the options were to be
>>>> changed, as
>>>> Lisandro was suggesting, then it would be better to eliminate
>>>> unnecessary options conflicts.
>>>>
>>>
>>> Well, now that I'm actually writing the code, things are a bit more
>>> clear...
>>>
>>> perhaps we should have just two options
>>>
>>> 1) -snes_mf, if passed, should be string "full" or "operator" (not
>>> sure about these)
>>> 2) -snes_mf_version, if passed, should be integer 1 or 2
>>>
>>> In Python pseudocode (thinking options like a Python dict)
>>>
>>>
>>> if "snes_mf" in options:
>>>
>>> version = options.get("snes_mf_version", 1)
>>> if version == 1:
>>> MatCreateSNESMF(...)
>>> elif version == 2:
>>> SNESDefaultMatrixFreeCreate2(...)
>>> else:
>>> raise PetscError
>>>
>>> value = options["snes_mf"]
>>> if value == "operator":
>>> SNESSetJacobian(J,0,0,...)
>>> elif value == "full":
>>> SNESSetJacobian(J,J,MatMFFDComputeJacobian)
>>> else:
>>> raise PetscError
>>>
>>>
>>> Note that I expect snes_mf_version=2 (despite being MatShell
>>> based) to
>>> work with snes_mf="operator"
>>>
>>> What do you think?
>>>
>>> --
>>> Lisandro Dalcín
>>> ---------------
>>> Centro Internacional de Métodos Computacionales en Ingeniería
>>> (CIMEC)
>>> Instituto de Desarrollo Tecnológico para la Industria Química
>>> (INTEC)
>>> Consejo Nacional de Investigaciones Científicas y Técnicas (CONICET)
>>> PTLC - Güemes 3450, (3000) Santa Fe, Argentina
>>> Tel/Fax: +54-(0)342-451.1594
>>
>>
>
>
>
> --
> Lisandro Dalcín
> ---------------
> Centro Internacional de Métodos Computacionales en Ingeniería (CIMEC)
> Instituto de Desarrollo Tecnológico para la Industria Química (INTEC)
> Consejo Nacional de Investigaciones Científicas y Técnicas (CONICET)
> PTLC - Güemes 3450, (3000) Santa Fe, Argentina
> Tel/Fax: +54-(0)342-451.1594
> <snes.diff>
More information about the petsc-dev
mailing list