Anders Logg wrote:
> On Fri, Oct 31, 2008 at 10:25:58AM +0000, Garth N. Wells wrote:
>>
>> Johan Hake wrote:
>>> On Friday 31 October 2008 11:05:19 Garth N. Wells wrote:
>>>> Johan Hake wrote:
>>>>> On Friday 31 October 2008 09:38:38 Anders Logg wrote:
>>>>>> On Fri, Oct 31, 2008 at 07:57:52AM +0000, Garth N. Wells wrote:
>>>>>>> Martin Sandve Alnæs wrote:
>>>>>>>> 2008/10/30 Johan Hake <[EMAIL PROTECTED]>:
>>>>>>>>> On Thursday 30 October 2008 19:20:06 Anders Logg wrote:
>>>>>>>>>> Most things are now in place, finally. At least we can run the
>>>>>>>>>> Poisson demo again... :-)
>>>>>>>>>>
>>>>>>>>>> Anyway, take a look at demo/pde/poisson/main.cpp and see what you
>>>>>>>>>> think. I think it looks pretty good, but please report if you have
>>>>>>>>>> any ideas for further improvements of the interface while we're at
>>>>>>>>>> it.
>>>>>>>>> It looks nice, but I see some magic which I wish you can shed some
>>>>>>>>> light on.
>>>>>>>>>
>>>>>>>>> The introduction of PoissionFunctionSpace is not clear for me. Why do
>>>>>>>>> we have to instantiate the forms with it?
>>>>>>>> Such that the Forms can use the same FunctionSpaces as are used in the
>>>>>>>> rest of the code, while the user stays in control of their allocation.
>>>>>>>> In particular, DofMaps needs to be shared between different parts of
>>>>>>>> the code.
>>>>>> In general the function spaces are named
>>>>>>
>>>>>>   PoissonBilinearFormArgumentSpace0
>>>>>>   PoissonBilinearFormArgumentSpace1
>>>>>>
>>>>>>   PoissonBilinearFormCoefficientSpace0
>>>>>>   PoissonBilinearFormCoefficientSpace1
>>>>>>   PoissonBilinearFormCoefficientSpace2
>>>>>>   PoissonBilinearFormCoefficientSpace3
>>>>>>   ...
>>>>>>
>>>>>> Then, if all forms appearing in a form file (both a and L) share the
>>>>>> same test space (which is natural), then an additional space will be
>>>>>> generated:
>>>>>>
>>>>>>   PoissonTestSpace
>>>>>>
>>>>>> Same for the trial space:
>>>>>>
>>>>>>   PoissonTrialSpace
>>>>>>
>>>>>> If all spaces in the form are the same, then a common space will be
>>>>>> generated:
>>>>>>
>>>>>>   PoissonFunctionSpace
>>>>>>
>>>>>> As noted by Martin, this allows a user to control the level of reuse
>>>>>> of function spaces.
>>>>> Ok.
>>>>>
>>>>>>>>> In the form file the two forms L and a are defined. These are then
>>>>>>>>> reflected in the main.cpp file as before. This is intuitive. But
>>>>>>>>> where does the PoissonFunctionSpace come from? I as a user has not
>>>>>>>>> defined it in the form file.
>>>>>>>>>
>>>>>>>>> It might help if we introduce the notion of FunctionSpace in FFC/UFL.
>>>>>>>>> Then some of the magic would disapear I think.
>>>>>>>> This could reinforce the problem with circular dependencies I
>>>>>>>> mentioned earlier. I don't see that anyone has adressed that issue.
>>>>>>>>
>>>>>>>>> The talk about a Function always knowing its Space was clear, you can
>>>>>>>>> always plot it, and so on. But then the introduction of the "magic"
>>>>>>>>> dedication of FunctionSpace broke that, and also made the actuall
>>>>>>>>> function of FunctionSpace more blurry.
>>>>>>>>>
>>>>>>>>> Intuitively I would prefer:
>>>>>>>>>
>>>>>>>>>  ...
>>>>>>>>>  PoissonFunctionSpace V(mesh);
>>>>>>>>>
>>>>>>>>>  Source f(V);
>>>>>>>>>  Flux g(V);
>>>>>>> The problem here is that f and g may come from a space other than V.
>>>>>>> The difficulty for a user is that it's hard (and error prone) to create
>>>>>>> the FunctionSpaces and associate them with the right Functions.
>>>>> Won't
>>>>>
>>>>>    PoissonBilinearForm a(V,V);
>>>>>    PoissonLinearForm L(V);
>>>>>
>>>>> be as error prone with different test and trial spaces too?
>>>> No, because there are never more that two, we can use the meaningful
>>>> names "Test" and "Trial" and they are always the first arguments to the
>>>> Form constructor.
>>>>
>>>> A possible solution along these lines was discussed last week which
>>>> involved giving PoissonBilinearFormCoefficientSpace1, etc, names which
>>>> involved the name used in the FFC input.
>>> Ok.
>>>
>>> If we have the same trial and test space, but different functionspaces. 
>>> Then I 
>>> suppose one only would like to create one space for the former. How would 
>>> this be done?
>>>
>>>   PoissonTestSpace TestV(mesh);
>>>   PoissonBilinearForm(TestV,TestV);
>>>
>> The above will work.
>>
>> Is there a nifty name we could use for when the test and trial spaces 
>> are the same? Could we still use PoissonFunctionSpace in this case, even 
>> if the there a coefficient functions from other spaces? This way only 
>> FunctionSpace would need to be declared.
>>
>> Garth
> 
> One option would be to use FunctionSpace only for common test and
> trial spaces and don't look at the coefficient spaces. These are
> assigned automatically anyway (unless the user really wants to specify
> them).
>

Sounds good to me.

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