Anders Logg wrote:
> On Tue, Oct 28, 2008 at 03:13:52PM +0100, Martin Sandve Alnæs wrote:
>> 2008/10/28 Kristian Oelgaard <[EMAIL PROTECTED]>:
>>> Quoting DOLFIN <[EMAIL PROTECTED]>:
>>>
>>>> One or more new changesets pushed to the primary dolfin repository.
>>>> A short summary of the last three changesets is included below.
>>>>
>>>> changeset:   5040:14dbf71b2272b246d861b28d38a8cf79cbabadbd
>>>> tag:         tip
>>>> user:        Anders Logg <[EMAIL PROTECTED]>
>>>> date:        Tue Oct 28 14:28:50 2008 +0100
>>>> files:       dolfin/fem/Assembler.cpp
>>>> description:
>>>> Fix assembly over interior facets, DG demo seems to work now
>>> Yes indeed. When I was re-writing the main.cpp file for this demo I noticed 
>>> that
>>> it was easy to get confused about which FunctionSpace to use.
>>>
>>> E.g., for u and v I could use one of the following:
>>> PoissonBilinearFormArgumentSpace0
>>> PoissonBilinearFormArgumentSpace1
>>> PoissonLinearFormArgumentSpace0
>>> PoissonLinearFormCoefficientSpace0
>>> PoissonTestSpace
>>> PoissonTrialSpace
>>>
>>> and still get the same result. For forms with many functions this only gets
>>> worse. A nice feature would be if one could do:
>>>
>>> PoissonFunctionSpace v("v");
>>> PoissonFunctionSpace u("u");
>>> PoissonFunctionSpace n("n");
>>> PoissonFunctionSpace h("h");
>>>
>>> or something similar, to be sure that the function space was picked 
>>> correctly.
>>>
>>> Kristian
>> Perhaps it's better to encode this name in the classname though?
>>
>> PoissonFunctionSpace_h
>> PoissonFunctionSpace::h
>>
>> these can just be typedefs to a unique "FunctionSpace_CHECKSUM",
>> where checksum is something like the cache checksum.
> 
> How about some magic?
> 
> We can extend Martin's suggestion from yesterday to make the following
> possible:
> 
>   Function f;
>   Function g;
> 
>   Form a(V, V);
>   a.f = f;
>   a.g = g;
> 
> We just need to make sure that the assignment operator checks whether
> or not the Function assigned has a FunctionSpace defined, and
> otherwise figures out which one to use and then sets it.
> 

Looks relatively simple to implement and clear to use, as long as 
reserved C++ names are not used in the FFC input.

We do then need to allow Functions to be created without a 
FunctionSpace. I was thinking we would make Function::Function() 
protected which won't be possible with the above design.

Garth


> 
> 
> ------------------------------------------------------------------------
> 
> _______________________________________________
> DOLFIN-dev mailing list
> [email protected]
> http://www.fenics.org/mailman/listinfo/dolfin-dev


_______________________________________________
DOLFIN-dev mailing list
[email protected]
http://www.fenics.org/mailman/listinfo/dolfin-dev

Reply via email to