dolfin team mailing list archive
-
dolfin team
-
Mailing list archive
-
Message #16256
Re: Expression subclass
On Saturday 17 October 2009 11:48:57 Garth N. Wells wrote:
> I'd like to create a sub-class of Expression,
>
> class my_expression(Expression):
> def __init__(self, V, x):
> self.x =x
> Expression.__init__(V = V)
>
> but I'm having trouble with the constructor - I get the below error. Any
> tips?
The following should work:
from dolfin import *
class MyExpr(Expression):
def __init__(self, x, V=None):
self.x = x
def eval(self, values, x):
pass
m = UnitSquare(2,2)
V = FunctionSpace(m,"CG",1)
MyExpr(0.0, V=V)
This is somewhat inconsistent with how sub classing in Python works. Here you
should _not_ call the __init__ method of the base class.
The short reason is that this is done for you, while instantiating the
dynamically created class.
This is something that could be fixed using the suggested new design for
CompiledExpression, so one would require an initialization as you suggest
above.
Johan
> Garth
>
>
> line 120, in __init__
> raise TypeError, "Expression need to be initialized using either a
> 'cpp.FunctionSpace', using kwarg 'V', or an 'ufl.FiniteElement' using
> kwarg 'element'."
> TypeError: Expression need to be initialized using either a
> 'cpp.FunctionSpace', using kwarg 'V', or an 'ufl.FiniteElement' using
> kwarg 'element'.
> _______________________________________________
> DOLFIN-dev mailing list
> DOLFIN-dev@xxxxxxxxxx
> http://www.fenics.org/mailman/listinfo/dolfin-dev
>
Follow ups
References