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