← Back to team overview

dolfin team mailing list archive

Re: Python sun functions

 

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@xxxxxxxxxx
> http://www.fenics.org/mailman/listinfo/dolfin-dev

Attachment: signature.asc
Description: Digital signature


Follow ups

References