Johan Hake wrote:
> On Tuesday 29 September 2009 22:39:02 Anders Logg wrote:
>> On Tue, Sep 29, 2009 at 10:29:14PM +0200, Johan Hake wrote:
>>> On Tuesday 29 September 2009 22:10:54 Anders Logg wrote:
>>>> On Tue, Sep 29, 2009 at 08:55:03PM +0100, Garth N. Wells wrote:
>>>>> I'm looking forward to seeing the new code. Is all the old
>>>>> functionality still in place?
>>>> Yes and no. Everything except the generated CoefficientSet stuff
>>>> should still work in the C++ interface, but the Python interface won't
>>>> work until the corresponding changes have been made on the Python side.
>>>>
>>>> Here's some more information about the changes:
>>>>
>>>> 1. Subclassing Function and overloading eval() has been replaced by
>>>> the Expression subclass which works in the same way with eval().
>>>>
>>>> 2. All the old functionality/logic of the Function class is still in
>>>> place but it can now be cleaned up and simplified.
>>>>
>>>> 3. A Function will now *always* have a FunctionSpace and *always* have
>>>> a vector.
>>> Good!
>>>
>>>> 4. An Expression *never* has a FunctionSpace and *never* has a vector.
>>> Also good! Should we consider (re-)adding a value_rank and dimension
>>> method to the expression class?
>> Yes, perhaps. But it's very convenient not having to specify it. We
>> could make it optional.
> 
> Ok. No big dealt for me. In Python we can solve this for Expressions anyway.
> 
>>> Also what would the preferred solution be for a Python expression. It
>>> should not have a FunctionSpace but we need a FunctionSpace to initialize
>>> the ufl.Function. Or rather the ufl.FiniteElement that comes with the
>>> FunctionSpace.
>>>
>>> I see two alternatives:
>>> 1) Instantiate an Expression with a FunctionSpace, then let the
>>> FunctionSpace reside in the Python layer. The ufl.FiniteElement is used
>>> to instantiate the ufl.Function.
>>>
>>> 2) Instantiate an Expression with a ufl.FiniteElement. The problem with
>>> this is that we have not exposed the ufl.FiniteElement in the PyDOLFIN
>>> interface previously. But the confusion with an expression having a
>>> FunctionSpace is partly avoided.
>>>
>>> In both cases I could add checks for rank and dimensions in the Python
>>> layer if we decides to not require it for the C++ interface.
>> I think we discussed the possibility of detecting the value dimension
>> from the expression 
> 
> Yes, but a user can initialize an Expression with the wrong 
> FunctionSpace/FiniteElement compared to what the expression looks like.
> 
>> and automatically using piecewise linears if not
>> otherwise specified. 
>>
>> The function space could be an optional argument:
>>
>>   f = Expression("sin(x[0])", V=V)
> 
> We cannot automatically figure out the topological dimension, can we?
>

We can from the function space.

> Should we require that an Expression is instantiated using just a 
> ufl.FiniteElement? In this way it would be clear that the Expression is not 
> defined in a FunctionSpace? It would then look like:
> 
>   f = Expression(V.ufl_element(),"sin(x[0])")
> 
> or something.
> 

Doesn't this defeat the purpose of having 'Expression' (i.e. no function 
space)? Could we just pass the cell type?

Garth

>> Then it would be clear that f is not a function in V, but V is only
>> some additional information about how f should be used in forms.
>>
>>>> 5. FunctionSpaces are not attached to coefficients when doing a.f = f.
>>>>
>>>> 6. The DOLFIN wrappers have been simplified and now rely on the
>>>> new very simple CoefficientAssigner class.
>>>>
>>>> 7. The assembler works through the common base class Coefficient, in
>>>> particular the restrict() function for restricting to a local element.
>>> Nice!
>> This also removes one of the too many interpolate() functions which is
>> good.
> 
> Ok.
> 
> Johan
> _______________________________________________
> DOLFIN-dev mailing list
> DOLFIN-dev@fenics.org
> http://www.fenics.org/mailman/listinfo/dolfin-dev


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

Reply via email to