← Back to team overview

dolfin team mailing list archive

Re: Work on a new function.py

 

I haven't looked at the code in detail but the interface looks very
nice! I'll take a closer look once it's been added.

-- 
Anders


On Thu, Oct 23, 2008 at 11:37:57PM +0200, Johan Hake wrote:
> Hello!
> 
> I have worked on a "new" function.py. Please have a look. It is built around a 
> metaclass for Functions. It makes it "easy" to create both a) userdefined 
> python functions and b) compiled functions.
> 
> The work flow is the same for both cases: 
> 
>   1) Define a class 
>   2) Instantiate it with a FunctionSpace, and any user specific arguments
> 
> With the suggested design a user can define classes a la:
> 
>     class MyCustomFunction(Function):
>         def __init__(self,V,dummy):
>             # Note no call to Function.__init__!
>             self.dummy = dummy
>         
>         def eval(self,val,x):
>             val[0] = 0.5
>             val[1] = 0.5
>     
>         def dim(self):
>             return 2
>     
>         def rank(self):
>             return 1
>     
>     # Can also declare dim and rank as int attributes, see below
>         
>     class MyCustomCompiledFunction(Function):
>         cppcode = "Jada"
>         dim  = 1
>         rank = 0
> 
> They are then instantiated by:
> 
>     mesh = UnitSquare(10,10)
>     element = FiniteElement('Lagrange','triangle',1)
>     
>     print ""
>     V = FunctionSpace(mesh,element)
>     
>     print ""
>     f0 = MyCustomFunction(V,"Dummy")
>     
>     print ""
>     f1 = MyCustomCompiledFunction(V)
>     
>     try:
>         # Cannot instantiate the Function class
>         f2 = Function(V)
>     except Exception, e:
>         print e
> 
> With this interface only one user defined function can be compiled at a time, 
> but we will gain in similare workflow between pure python and compiled 
> functions.
> 
> I realize that the C++ design must be in place first before we can advance, 
> but this is a proof of principle, that we can use metaclasses to do nice 
> stuff for the end user.
> 
> Johan


> _______________________________________________
> DOLFIN-dev mailing list
> DOLFIN-dev@xxxxxxxxxx
> http://www.fenics.org/mailman/listinfo/dolfin-dev

Attachment: signature.asc
Description: Digital signature


References