To be honest, I would also assume these two to print the same. But I have been bit by the Function::assign-recreate-the-vector behavior quite many times now. The point is that the vector in a Function gets recreated after an assign.
from dolfin import * mesh = UnitSquareMesh(2,2) V = FunctionSpace(mesh,"CG",1) u0 = Function(V) u1 = Function(V) U = u0.vector() print "Same:", U.id()==u0.vector().id() u0.assign(u1) print "Same:", U.id()==u0.vector().id() Johan On Mon, May 26, 2014 at 1:32 PM, Martin Sandve Alnæs <[email protected]>wrote: > Johan, I don't understand what you mean by that. I would also expect these > to do the same, i.e. result in an exact copy of ut.vector()? > > Martin > > > On 26 May 2014 13:27, Johan Hake <[email protected]> wrote: > >> Function.assign re-create the FOOvector holding the actual values. I >> assume this explains the difference in behavior. >> >> Johan >> >> >> >> >> On Mon, May 26, 2014 at 1:09 PM, Miroslav Kuchta <[email protected]>wrote: >> >>> Hi, >>> >>> please consider the attached snippet. I would assume foo() and bar() >>> to do the same thing but that is not the case. Is this a bug in >>> Function.assign() or am I missing something about the method's behaviour? >>> Thanks for answer. >>> >>> Regards, Miro >>> _______________________________________________ >>> fenics mailing list >>> [email protected] >>> http://fenicsproject.org/mailman/listinfo/fenics >>> >>> >> >> _______________________________________________ >> fenics mailing list >> [email protected] >> http://fenicsproject.org/mailman/listinfo/fenics >> >> >
_______________________________________________ fenics mailing list [email protected] http://fenicsproject.org/mailman/listinfo/fenics
