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