On Sat, Oct 17, 2009 at 01:54:57PM +0100, Garth N. Wells wrote: > > > Johan Hake wrote: > > On Saturday 17 October 2009 12:32:54 Garth N. Wells wrote: > >> Will > >> > >> uh = U[1] > >> > >> return a deep or shallow copy of the sub-Function? > > > > To avoid confusion with the ufl interface we have limited the interface for > > SubFunctions in PyDOLFIN to split. split returns a shallow copy by default. > > pass True to split and it will return a deepcopy. In your case it would be: > > > > uh = U.split()[0] > > > > and > > > > uh = U.split(True)[0] > > > > operator[] is used when you define forms. We have not yet managed to merge > > the > > two operations into one. > > > > OK. Do we still have the function 'sub'? > > > >> Where is the operator [] define for sub-Functions? > > > > The operator you are using is the ufl one, which is defined in > > ufl.exproperators.py. > > > > OK, but it's not clear to me then what's happing with this extract of my > code: > > problem = VariationalProblem(a, L, bcs) > Uh = problem.solve() > > u = Expression("epx(x[0])", V = Vexact) > > uh = Uh[1] > M = (uh-u)*(uh-u)*dx > error = sqrt(assemble(M, mesh=mesh))
This should work fine since uh will be a component of the coefficient Uh in the UFL form. Same as when you write say inner(v, u)*dx or anything else that accesses components. So in summary [] can be used for any purpose in forms. It can also be used for plotting, but extracting the vector etc will not work. -- Anders > Garth > > > > Johan > > > _______________________________________________ > DOLFIN-dev mailing list > DOLFIN-dev@fenics.org > http://www.fenics.org/mailman/listinfo/dolfin-dev
signature.asc
Description: Digital signature
_______________________________________________ DOLFIN-dev mailing list DOLFIN-dev@fenics.org http://www.fenics.org/mailman/listinfo/dolfin-dev