Re: [firedrake] weirdness on bendy branch
Hi Stephan. Thanks, I will look into this first thing next week and will get back to you. Cheers -- Fabio 2015-11-19 14:59 GMT+00:00 Kramer, Stephan <s.kramer@imperial.ac.uk>:
Hey guys
More weirdness related to facet integrals from IP viscosity that only appears with COFFEE optimisations. This time both on the bendy branches and on master (of last week). In the code below, the matrices M, Ms and M1+M2 should all be the same.
For DG1 they are not equal on a recent (last week, before any sprint merges) install of firedrake/ffc/ufl/coffee on master. It is also incorrect on an older install I had, so it's not a recent thing. DG1 does however produce the right answer on the bendy branches: firedrake (bendy_changes) + ffc/ufl (fd_bendy) + coffee (master).
For RT1 on the other hand it's the opposite: the matrices are correct and equal on master, but with bendy some of them are different from the correct answer.
All of this only if use COFFEE optimisation, i.e. with parameters['coffee']={} the matrices are correct and all equal.
I realize at this point the best thing to do is probably to wait if this all gets magically fixed when the sprint is over - will report back if not - but just thought to let you guys know already
Cheers Stephan
from firedrake import * mesh2d = UnitSquareMesh(1,1) U = VectorFunctionSpace(mesh2d, "DG", 1) v = TestFunction(U) u = Function(U)
#parameters['coffee']={} n = FacetNormal(mesh2d)
def outer_jump(v, n): return outer(v('+'), n('+'))+outer(v('-'), n('-'))
F1 = inner(outer_jump(v, n), outer_jump(u,n))*dS F2 = inner(outer_jump(v, n), outer_jump(n,u))*dS F = inner(outer_jump(v, n), outer_jump(u,n)+outer_jump(n,u))*dS
M1 = assemble(derivative(F1, u)).M.values M2 = assemble(derivative(F2, u)).M.values Ms = assemble(derivative(F1+F2, u)).M.values M = assemble(derivative(F, u)).M.values print abs(M-(M1+M2)).max() print abs(M-Ms).max()
_______________________________________________ firedrake mailing list firedrake@imperial.ac.uk https://mailman.ic.ac.uk/mailman/listinfo/firedrake
Hi Stephan Thanks a lot for pointing this out. Could you try this new branch in coffee: fix-replacement Hopefully this should fix the issue. Keep me posted. Ah, don't forget to clean the cache Cheers -- Fabio 2015-11-20 9:16 GMT+00:00 Fabio Luporini <f.luporini12@imperial.ac.uk>:
Hi Stephan. Thanks, I will look into this first thing next week and will get back to you.
Cheers
-- Fabio
2015-11-19 14:59 GMT+00:00 Kramer, Stephan <s.kramer@imperial.ac.uk>:
Hey guys
More weirdness related to facet integrals from IP viscosity that only appears with COFFEE optimisations. This time both on the bendy branches and on master (of last week). In the code below, the matrices M, Ms and M1+M2 should all be the same.
For DG1 they are not equal on a recent (last week, before any sprint merges) install of firedrake/ffc/ufl/coffee on master. It is also incorrect on an older install I had, so it's not a recent thing. DG1 does however produce the right answer on the bendy branches: firedrake (bendy_changes) + ffc/ufl (fd_bendy) + coffee (master).
For RT1 on the other hand it's the opposite: the matrices are correct and equal on master, but with bendy some of them are different from the correct answer.
All of this only if use COFFEE optimisation, i.e. with parameters['coffee']={} the matrices are correct and all equal.
I realize at this point the best thing to do is probably to wait if this all gets magically fixed when the sprint is over - will report back if not - but just thought to let you guys know already
Cheers Stephan
from firedrake import * mesh2d = UnitSquareMesh(1,1) U = VectorFunctionSpace(mesh2d, "DG", 1) v = TestFunction(U) u = Function(U)
#parameters['coffee']={} n = FacetNormal(mesh2d)
def outer_jump(v, n): return outer(v('+'), n('+'))+outer(v('-'), n('-'))
F1 = inner(outer_jump(v, n), outer_jump(u,n))*dS F2 = inner(outer_jump(v, n), outer_jump(n,u))*dS F = inner(outer_jump(v, n), outer_jump(u,n)+outer_jump(n,u))*dS
M1 = assemble(derivative(F1, u)).M.values M2 = assemble(derivative(F2, u)).M.values Ms = assemble(derivative(F1+F2, u)).M.values M = assemble(derivative(F, u)).M.values print abs(M-(M1+M2)).max() print abs(M-Ms).max()
_______________________________________________ firedrake mailing list firedrake@imperial.ac.uk https://mailman.ic.ac.uk/mailman/listinfo/firedrake
On 23/11/15 17:31, Fabio Luporini wrote:
Hi Stephan
Thanks a lot for pointing this out. Could you try this new branch in coffee:
fix-replacement
Great! All fixed again - checked all combinations of bendy/non-bendy and DG1/RT1. Will add this to a regression test that includes previous issues and put it up for PR Thanks a lot Cheers Stephan
participants (2)
-
Fabio Luporini
-
Stephan Kramer