I might have found a small-ish example (mytest_small.py) on a 3x3 grid, so 18+18+32 = 68 dof. on my college workstation I got: 0 SNES Function norm 1. 1 SNES Function norm 1.00952 2 SNES Function norm 0.19723 3 SNES Function norm 6.05373e-05 4 SNES Function norm 1.66218e-08 5 SNES Function norm < 1.e-11 on my laptop I got: 0 SNES Function norm 1. 1 SNES Function norm 0.985773 2 SNES Function norm 0.216432 3 SNES Function norm 6.34452e-05 4 SNES Function norm 1.74202e-08 5 SNES Function norm < 1.e-11 So they don't differ as much as the previous case. I've checked the Jacobian is not singular. I've saved down the Jacobian of F and compared them locally (jacobian1 and jacobian2.npy). The largest difference is 0.02 (0.04 vs 0.06) at location (24,53). See the jupyter noteboook. I'm trying to figure out what that value is associated with (it's dp/dv, but I'm not sure yet which cell it is from) Thanks, -TJ On 27/07/16 13:55, Colin Cotter wrote:
Hi TJ, We are currently discussing this in Slack if you would like to pop in?
On 27 July 2016 at 13:54, Sun, Tianjiao <tianjiao.sun14@imperial.ac.uk <mailto:tianjiao.sun14@imperial.ac.uk>> wrote:
Hi Lawrence,
20x20 is the smallest I tried. For smaller mesh the problem is not well-conditioned. I can think of some other test cases for smaller mesh.
I tried to run with snes_fd, and I got much similar but not still not identical results on both machines, so it does look like something to do with the Jacobian. I will try comparing the Jacobians and report back.
Thanks,
-TJ
On 27/07/16 13:36, Lawrence Mitchell wrote:
On 27/07/16 13:09, Tianjiao Sun wrote:
Hi team,
The attached script is a trimmed down version of the sort of problem I'm trying to run. Running it on most machines (I've tried 4 machines), I got this output:
$ python mytest.py 0 SNES Function norm 0.873814 1 SNES Function norm 0.245545 2 SNES Function norm 0.0178611 3 SNES Function norm 0.000156473 4 SNES Function norm 1.26023e-09
However, on my workstation in college (where I do most work unfortunately), I got:
0 SNES Function norm 0.873814 1 SNES Function norm 0.432782 2 SNES Function norm 0.0478636 3 SNES Function norm 0.0405004 4 SNES Function norm 0.0405004 5 SNES Function norm 0.0405004 6 SNES Function norm 0.0405004 7 SNES Function norm 0.0405004 8 SNES Function norm 0.0405004 9 SNES Function norm 0.0405004 10 SNES Function norm 0.0405004
I have tried to update and also reinstall firedrake, and pip list shows same version for FIAT, petsc, petsc4py, UFL (firedrake version is shown as 'unknown' though). The snes objects are identical as well. Is there anything else that I can check to see where the discrepancy occurs?
Does this problem exhibit on a small mesh?
Can you try comparing the jacobians on a machine that works and one that fails?
Lawrence
_______________________________________________ firedrake mailing list firedrake@imperial.ac.uk <mailto:firedrake@imperial.ac.uk> https://mailman.ic.ac.uk/mailman/listinfo/firedrake
-- http://www.imperial.ac.uk/people/colin.cotter
www.cambridge.org/9781107663916 <http://www.cambridge.org/9781107663916>
_______________________________________________ firedrake mailing list firedrake@imperial.ac.uk https://mailman.ic.ac.uk/mailman/listinfo/firedrake