Lulu Liu <[email protected]> writes:

> Hi,
>
> I want to solve a stead-state problem G(u)=0 using the pseudo-transient
> continuation method.
>
> I saw the example petsc/src/ts/examples/tutorials/ex1,
>
>   ierr = TSSetRHSJacobian(ts,J,J,*FormJacobian*,&user);CHKERRQ(ierr);
>
> however, the analytical Jacobian in my problem is very complex and it is
> not easy to give the function "*FormJacobian*". If I run the code like
>
>  ./ex1 -ts_monitor_pseudo  -snes_mf
>
> Is it correct? Does it involves the time derivative term when using
> -snes_mf?

Let's be empirical about this for a moment:

$ diff -y <(./ex1 -ts_monitor_pseudo -pc_type none) <(./ex1 -ts_monitor_pseudo 
-snes_mf)
TS 0 dt 0.125 time 0 fnorm 0.207564                             TS 0 dt 0.125 
time 0 fnorm 0.207564
TS 1 dt 0.1375 time 0.1375 fnorm 0.184737                       TS 1 dt 0.1375 
time 0.1375 fnorm 0.184737
TS 2 dt 0.169939 time 0.307439 fnorm 0.160614                   TS 2 dt 
0.169939 time 0.307439 fnorm 0.160614
TS 3 dt 0.215009 time 0.522448 fnorm 0.135363                   TS 3 dt 
0.215009 time 0.522448 fnorm 0.135363
TS 4 dt 0.280628 time 0.803075 fnorm 0.109292                   TS 4 dt 
0.280628 time 0.803075 fnorm 0.109292
TS 5 dt 0.382327 time 1.1854 fnorm 0.0829356                    TS 5 dt 
0.382327 time 1.1854 fnorm 0.0829356
TS 6 dt 0.554213 time 1.73961 fnorm 0.0572092                   TS 6 dt 
0.554213 time 1.73961 fnorm 0.0572092
TS 7 dt 0.883779 time 2.62339 fnorm 0.0336678                 | TS 7 dt 0.88378 
time 2.62339 fnorm 0.0336678
TS 8 dt 1.65192 time 4.27531 fnorm 0.0147997                    TS 8 dt 1.65192 
time 4.27531 fnorm 0.0147997
TS 9 dt 4.13372 time 8.40904 fnorm 0.00359027                 | TS 9 dt 4.13372 
time 8.40903 fnorm 0.00359028
TS 10 dt 18.7439 time 27.153 fnorm 0.000240073                  TS 10 dt 
18.7439 time 27.153 fnorm 0.000240073
TS 11 dt 308.346 time 335.499 fnorm 1.04779e-06               | TS 11 dt 
308.346 time 335.499 fnorm 1.0478e-06
TS 12 dt 77713.9 time 78049.4 fnorm 1.82818e-11               | TS 12 dt 
77713.4 time 78048.9 fnorm 1.82938e-11
TS 13 dt 4.89944e+09 time 4.89952e+09 fnorm 0                 | TS 13 dt 
4.89623e+09 time 4.89631e+09 fnorm 0
TS 14 dt 5.38939e+21 time 5.38939e+21 fnorm 0                 | TS 14 dt 
5.38586e+21 time 5.38586e+21 fnorm 0
Number of pseudo timesteps = 14 final time 5.39e+21             Number of 
pseudo timesteps = 14 final time 5.39e+21


This certainly has the appearance of being identical up to rounding
error.  And indeed it is, since we are finite-differencing the
IFunction.

Attachment: pgpYpqrJiPNdV.pgp
Description: PGP signature

Reply via email to