Anders Logg wrote:
> On Mon, Nov 03, 2008 at 11:22:26AM +0000, Garth N. Wells wrote:
>>
>> Anders Logg wrote:
>>> On Sun, Nov 02, 2008 at 06:29:25PM +0000, Garth N. Wells wrote:
>>>> Anders Logg wrote:
>>>>> On Sun, Nov 02, 2008 at 05:52:21PM +0000, Garth N. Wells wrote:
>>>>>> Do we want to insist that Dirichlet bc functions that do not appear 
>>>>>> inside a form are constructed with a FunctionSpace? DirichletBC is 
>>>>>> supplied with a FunctionSpace, so if the bc Function does not have a 
>>>>>> FunctionSpace, we could attach one automatically.
>>>>>>
>>>>>> Garth
>>>>>> _______________________________________________
>>>>>> DOLFIN-dev mailing list
>>>>>> [email protected]
>>>>>> http://www.fenics.org/mailman/listinfo/dolfin-dev
>>>>> I think this is already handled. Look in the Poisson demo. It uses a
>>>>> Constant to set the BC and it does not have a FunctionSpace attached
>>>>> to it. The DirichletBC class now uses its own FunctionSpace rather
>>>>> than the one that the Function has (if any). There is a check (in
>>>>> DirichletBC::check()) that checks that the FunctionSpace for the
>>>>> Function is the same as the one in the DirichletBC.
>>>>>
>>>> It works for Constant, but not for Functions. I was getting an error 
>>>> when Function::interpolate is called. Function::interpolate leads to 
>>>> eval being called, in which case there is a test for the FunctionSpace 
>>>> which fails. Constant provides its own eval and therefore doesn't have a 
>>>> problem.
>>>>
>>>> For now, I've added a test in DirichletBC for the FunctionSpace. What we 
>>>> can add is an attach function if there is no FunctionSpace associated.
>>>>
>>>> Garth
>>> In which demo does this show up? Is there a simple way I can comment
>>> something out to reproduce the error so I understand what goes wrong?
>>>
>> Look at /demo/nls/nonlinearpoisson/cpp.
>>
>> If you change
>>
>>    DirichletBoundaryCondition g(V, t);
>>
>> to
>>
>>    DirichletBoundaryCondition g(t);
>>
>> it will break down.
>>
>> Garth
> 
> ok I see the problem now.
> 
> The problem is a user may choose to either overload a scalar eval
> function or a tensor eval function and we need to decide which one
> after the callback from ufc::function::evaluate(). If the
> FunctionSpace is not known, we can't decide which one to pick.
> 
> If we insist that one should be able to pass a Function without a
> FunctionSpace to a DirichletBC, then we must remove the scalar eval
> function.
>

Fine with me. I think that it makes things simpler because the eval 
interface remains the same for all user-defined functions.

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