Chaffra! There are some distinctions you need to make:
1) DOLFIN Constants, Expressions and Functions 2) UFL Coefficients and math expressions Constants and Expressions are spatial functions that can be evaluated at any point. A Function is a function which is defined on a Finite element space, given by its basis functions and a vector of expansion coefficients. Evaluation of a Function is done by interpolation of the basis functions. UFL provides a mathematical language to define integrals over spatial domains of finite element functions. In its form the integral is purely abstract and just destribe a set of operations. A Coefficient in UFL is just an abstract representation which can not be evaluated at any spatial point, but should only be used to described integrals within UFL. UFL integrals, or forms, can be assembled over a specific domain (mesh) in DOLFIN to produce a scalar, vector or matrix. A user need to provide a map of what the ufl Coefficients whould represent, eg, a particular DOLFIN Constant. In the python interface of DOLFIN we have let DOLIN Constant, Expression and Function inherit from ufl.Coefficient. By this we automatically associate the DOLFIN entity with the ufl Coefficient, and the user do not have to provide the map. This means that eventhough these entities can be evaluated, they are evaluated as DOLFIN objects. When you then take grad on a function: f = Functions(V) gf = grad(f) you get a pure ufl enitity that cannot be evaluated, because the grad here just represent an operation on f. The only way to actually evaluate grad(f) is to project it (and ) to a Finite element space. gf = project(grad(f)) gf is now a DOLFIN Function and can be evaluated: gf(0) In Python you can also do: plot(grad()) But this involves a call to project behind the scenes. Johan On Friday April 29 2011 10:59:20 Chaffra wrote: > Question #154756 on DOLFIN changed: > https://answers.launchpad.net/dolfin/+question/154756 > > Chaffra gave more information on the question: > I guess I am a little confused about the way expressions get evaluated. > It looks like Function and Expression objects do not call > ufl.terminal.Terminal.evaluate. Where is their evaluation defined? _______________________________________________ Mailing list: https://launchpad.net/~dolfin Post to : dolfin@lists.launchpad.net Unsubscribe : https://launchpad.net/~dolfin More help : https://help.launchpad.net/ListHelp