Hello,
I just ran into a weird problem with DuMux 3.1. As I reported before, I
was having trouble replacing the numeric derivatives with my own
analytic ones. Now I made a very small and simplified example and made
some debug printing to track down the issue.
The problem being solved is 2p (TwoPIncompressibleLocalResidual), fully
implicit scheme. The assembler is FVAssembler<TypeTag,
DiffMethod::numeric>. The boundary conditions are: neumann (injection
well), all Dirichlet (production well). No customary flux derivatives,
no other fancy stuff.
Here is the first output of the debug printing that I added into
NewtonSolver::solveLinearSystem_:
Jacobian [n=4,m=4,rowdim=8,coldim=8]
row 0 5.20412e-12 -7.65000e+09 -5.10436e-12
0.00000e+00 . . . .
row 1 2.43297e-09 6.50250e+09 -2.43297e-09
0.00000e+00 . . . .
row 2 -5.10436e-12 0.00000e+00 1.02087e-11 -7.65000e+09
-5.10436e-12 0.00000e+00 . .
row 3 -2.43297e-09 0.00000e+00 4.86593e-09 6.50250e+09
-2.43297e-09 0.00000e+00 . .
row 4 . . -5.10436e-12 0.00000e+00
1.02087e-11 -7.65000e+09 -5.10436e-12 0.00000e+00
row 5 . . -2.43297e-09 0.00000e+00
4.86593e-09 6.50250e+09 -2.43297e-09 0.00000e+00
row 6 . . . . -5.10436e-12
0.00000e+00 1.53131e-11 -7.65000e+09
row 7 . . . . -2.43297e-09
0.00000e+00 7.29888e-09 6.50250e+09
residual [blocks=4,dimension=8]
row 0 -2.17e-02 0.00e+00 0.00e+00 0.00e+00 0.00e+00 0.00e+00 1.02e-06
4.87e-04
And the simulation goes fine after that (more or less). And here is what
the first debug output becomes when I use FVAssembler<TypeTag,
DiffMethod::analytic> instead:
Jacobian [n=4,m=4,rowdim=8,coldim=8]
row 0 5.10435e-12 -7.65000e+09 -5.10435e-12
0.00000e+00 . . . .
row 1 2.43296e-09 -6.50250e+09 -2.43296e-09
0.00000e+00 . . . .
row 2 -5.10435e-12 0.00000e+00 1.02087e-11 -7.65000e+09
-5.10435e-12 0.00000e+00 . .
row 3 -2.43296e-09 0.00000e+00 4.86593e-09 -6.50250e+09
-2.43296e-09 0.00000e+00 . .
row 4 . . -5.10435e-12 0.00000e+00
1.02087e-11 -7.65000e+09 -5.10435e-12 0.00000e+00
row 5 . . -2.43296e-09 0.00000e+00
4.86593e-09 -6.50250e+09 -2.43296e-09 0.00000e+00
row 6 . . . . -5.10435e-12
0.00000e+00 1.53131e-11 -7.65000e+09
row 7 . . . . -2.43296e-09
0.00000e+00 7.29889e-09 -6.50250e+09
residual [blocks=4,dimension=8]
row 0 -2.17e-02 0.00e+00 0.00e+00 0.00e+00 0.00e+00 0.00e+00 1.02e-06
4.87e-04
And the simulation stucks instantly. You see that the odd diagonal
elements have the opposite signs as compared to the ones of the analytic
Jacobian.
Did I run into a bug? Did I misuse DuMux? I will appreciate any comments.
Best regards,
Dmitry
_______________________________________________
Dumux mailing list
[email protected]
https://listserv.uni-stuttgart.de/mailman/listinfo/dumux