On Tue, Oct 22, 2013 at 5:36 PM, Christophe Ortiz <
[email protected]> wrote:

>
>
> On Tue, Oct 22, 2013 at 3:37 PM, Matthew Knepley <[email protected]>wrote:
>
>> On Tue, Oct 22, 2013 at 8:29 AM, Christophe Ortiz <
>> [email protected]> wrote:
>>
>>> Hi Barry,
>>>
>>> Thanks for suggestions. Here is the output.
>>> Before using the options you suggest I get:
>>>
>>>  TSAdapt 'basic': step 182 accepted t=0.341561   + 3.416e-02
>>> wlte=1.1e-09 family='arkimex' scheme=0:'3' dt=3.757e-02
>>>       TSAdapt 'basic': step 183 accepted t=0.375717   + 3.757e-02
>>> wlte=9.05e-14 family='arkimex' scheme=0:'3' dt=4.133e-02
>>>       TSAdapt 'basic': step 184 stage rejected t=0.413289   + 4.133e-02
>>> retrying with dt=1.033e-02
>>>       TSAdapt 'basic': step 184 stage rejected t=0.413289   + 1.033e-02
>>> retrying with dt=2.583e-03
>>> ...
>>>       TSAdapt 'basic': step 184 stage rejected t=0.413289   +2.212e-198
>>> retrying with dt=5.529e-199
>>>       TSAdapt 'basic': step 184 stage rejected t=0.413289   +5.529e-199
>>> retrying with dt=1.382e-199
>>> [0]PETSC ERROR: --------------------- Error Message
>>> ------------------------------------
>>> [0]PETSC ERROR: Floating point exception!
>>> [0]PETSC ERROR: Vec entry at local location 12 is not-a-number or
>>> infinite at end of function: Parameter number 3!
>>>
>>>
>>>  I re-checked my Jacobian several times, and I found few errors. But now
>>> I think it is ok.
>>> Then, with the options you suggest, it stops immediatly. Not even one
>>> timestep:
>>>
>>
>> Something is very wrong here. The Jacobian should at least have something
>> on the diagonal from the time derivative,
>> but the Laplacian (u, v) and q (w) also have diagonals.
>>
>>    Matt
>>
>>
Hi guys,

I finally found what was wrong. I used -mat_view to check each element of
the Jacobian. The structure was ok but there was some unexpected values.
Then I checked my code and found a mistake while assigning values to some
array (the diagonal block). It was cumulating values during the loop for
(row i) {}. Now, at the beginning of the loop I use PetscMemzero(array) to
reset the array.

Now it works much better with 1bee and linesearch bt. It converges quickly
to large times in few timesteps.
Thanks all for your help and sorry to bother you so much :-).

Nevertheless...I still observe some problem, some oscillations in the
solution, but in some extreme cases. It occurs with the following system,
when q is very large:

u_t - alpha u_xx + (k.u.v - q.w) = 0
v_t - alpha v_xx + (k.u.v - q.w) = 0
w_t - (k.u.v - q.w) = 0

I guess the problem becomes stiff.
I tried assuming that the reaction is in steady state (w_t=0) and modifying
the IJacobian accordingly, but it did not work.

 Any suggestion to circumvent that ?
Christophe

Reply via email to