On Sep 24, 2014, at 5:21 AM, anton <[email protected]> wrote:

> 
> On 09/23/2014 06:11 PM, Barry Smith wrote:
>> On Sep 23, 2014, at 9:50 AM, anton <[email protected]> wrote:
>> 
>>> Starting from version 3.5 the matrix parameters in SNESSetJacobian are no 
>>> longer pointers, hence my question:
>>> What is the most appropriate place to call SNESSetJacobian if I need  to 
>>> change the Jacobian during solution?
>>> What about FormFunction?
>>    Could you please explain why you need to change the Mat? Our hope was 
>> that people would not need to change it. Note that you can change the type 
>> of a matrix at any time. So for example inside your FormJacobian you can 
>> have code like MatSetType(J,MATAIJ) this wipes out the old matrix data 
>> structure and gives you an empty matrix of the new type ready to be 
>> preallocated and then filled. Let us know what you need.
> 
> 
> How should a user switch from assembled to a matrix-free Jacobian (for 
> example) within one run? Simplest is resetting SNES altogether, I guess.

   So you want to run, say, three steps of Newton “matrix-free” and then four 
steps with an explicit matrix? Then I guess you could call SNESSetJacobian() 
inside a SNES monitor routine, or even in your compute Jacobian routine. 
Calling it within FormFunction would not be a good idea since FormFunction is 
called in a variety of places.

  Barry

> 
> Anton
> 
>>   Barry
>> 
>>> Thanks,
>>> Anton
> 

Reply via email to