← Back to team overview

dolfin team mailing list archive

Re: Value shape for subclasses of Expression

 

On Thu, Nov 26, 2009 at 04:07:47PM +0100, Anders Logg wrote:
> On Thu, Nov 26, 2009 at 02:20:56PM +0100, Anders Logg wrote:
> > We are currently able to automatically detect the value shape of an
> > Expression defined like this:
> >
> >   f = Expression(("x[0]", "sin(x[1])"))
> >
> > But not if it is defined like this:
> >
> >   class MyExpression(Expression):
> >       def eval(self, values, x):
> >           values[0] = x[0]
> >           values[1] = sin(x[1])
> >
> > How should the value shape be specified for a subclass of an
> > expression?
> >
> > We had value_rank, value_dim before. We might either require
> >
> >   def value_shape(self):
> >       return (2,)
> >
> > or sending value shape to the constructor:
> >
> >   f = MyExpression(shape=(2,))
> >
> > Or there might be some other trick we can do.
>
> I have added a dim() function to the interface of subclassed
> Expressions.
>
> This can return either an integer or a tuple:
>
>  1      <--> scalar
>  2      <--> vector of dimension 2
>  3      <--> vector of dimension 3
>  (1,)   <--> scalar
>  (2,)   <--> vector of dimension 2
>  (2, 2) <--> matrix of dimension 2 x 2
>
> It should work now but the elasticity demo is failing because FFC is
> not correctly adjusting the cells for mixed elements (I think).

It works now after a fix in UFL.

--
Anders

Attachment: signature.asc
Description: Digital signature


References