dolfin team mailing list archive
-
dolfin team
-
Mailing list archive
-
Message #10244
Re: new Function design
On Tue, Oct 21, 2008 at 06:01:53PM +0100, Garth N. Wells wrote:
>
>
> Anders Logg wrote:
> > On Tue, Oct 21, 2008 at 04:45:01PM +0100, Garth N. Wells wrote:
> >> I have a few questions and thoughts regarding the new Function design
> >>
> >> * It's not clear to me what the intention is with user-defined
> >> functions. The functions Function::interpolate(...) never call eval(..),
> >> so they can't pick up user-defined values. Should Function::interpolate
> >> test for the presence of a GenericVector to decide whether or not the
> >> Function is discrete or user-defined?
> >
> > Yes, sorry. I've missed this. I'll fix it.
> >
> >> * It would be useful to declare user-defined functions without
> >> associating a FunctionSpace. If we want to interpolate the function, a
> >> FunctionSpace must then be provided. Anyone see any problems with this?
> >
> > The reasoning here is that all Functions must always be associated
> > with a FunctionSpace so that they may be correctly interpreted in
> > forms and correctly plotted. When a Function is created in PyDOLFIN,
> > it must always be associated with a certain FiniteElement (and in a
> > while FunctionSpace). It would simplify the handling of Functions if
> > they are always associated with a FunctionSpace.
> >
>
> I agree that is makes life simple if every function has a space, but it
> is a bit clunky for declaring user-defined functions. The forms must be
> declared first to extract the finite element to create the function
> space. Could look nasty when a lot of functions are involved.
>
> We have a function Function::interpolate which takes a function space V
> as an argument and it interpolates the function u in V. What if we
> permit undefined function spaces (which perhaps only have a domain)? We
> would then interpolate the user defined function u in the provided space V.
>
> Garth
Are user-defined functions ever used without being related to a
particular element/function space?
It don't think it will be very clumsy. The clumsy thing will be to (in
C++) get from something compiled by a form compiler to a FunctionSpace.
If we can make that operation smooth, then creating (user-defined)
functions will be very simple and convenient. One just needs to supply
the variable V holding the function space.
The current way of extracting function space data from the form is not
very nice (in C++). What would be the optimal way to initialize a
FunctionSpace in C++? We could think of extending the code generation
to generate code that makes this convenient.
--
Anders
Attachment:
signature.asc
Description: Digital signature
Follow ups
References