dolfin team mailing list archive
-
dolfin team
-
Mailing list archive
-
Message #10576
Re: Dirichlet bc functions
On Mon, Nov 03, 2008 at 02:38:36PM +0000, Garth N. Wells wrote:
>
>
> 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
> >>>>>> DOLFIN-dev@xxxxxxxxxx
> >>>>>> 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
ok. It will also look the same as in Python.
--
Anders
Attachment:
signature.asc
Description: Digital signature
Follow ups
References