[dune-functions] GridFunction interface

Christian Engwer christian.engwer at uni-muenster.de
Fri Mar 20 17:40:22 CET 2015


On Fri, Mar 20, 2015 at 05:11:04PM +0100, Carsten Gräser wrote:
> Am 20.03.2015 um 16:52 schrieb Carsten Gräser:
> > Hi Christian,
> > 
> > Am 20.03.2015 um 16:32 schrieb Christian Engwer:
> >> Hi Oli,
> >>
> >>> I am not convinced either.  In fact I'd find 1) more unexpected than 2).
> >>> If I have a function that depends on some coordinates I'd expect its
> >>> derivatives to be wrt to these coordinates.  So if the function is a local
> >>> function I'd expect the derivatives to be wrt to local coordinates.
> >>> If I want them wrt global coordinates then I'd need to multiply by
> >>> JacobianInverseTransform.
> >>
> >> No, the problem was/is that you don't know what to do, because it
> >> depends on your particular type of function. Or lets ask the other way
> >> around, what would your local function return in case of the RT0
> >> function. Would it already perform the piola transformation?
> >>
> >> Christian
> > I still don't understand this point. The problem I mentioned,
> > and (as far as I understand) Olis answer is only about local
> > coordinates for the domain. Perhaps a formula will shed some light:
> > 
> > Lets assume f:\Omega \to V, E a fixed element, R the reference
> > element, and T:R \to E the geomertry map. Now let
> > 
> >   g = localFunction(f);
> >   g.bind(E);
> > 
> > Then we have g = f \circ T^{-1} : R \to V. But with approach 1)
> > we would have
> > 
> >   derivative(g) = f' \circ T^{-1} != g'
> Sorry, this should be
> 
>   g = f \circ T,    derivative(g) = f' \circ T != g'

you are right and I immediately copy/pasted this wrong notation my
example ;-)

> > and derivative(g)(x) \in L(E,V) instead of L(R,V). In contrast
> > 2) would lead to derivative(g) = g' and derivative(g)(x) \in L(R,V)
> > as expected.
> > 
> > As far as I understand you're taking about local E-dependent
> > coordinates for the range V which is orthogonal to the problem
> > mentioned above.
> 
> To answer your question with the Piola transformation: If f is
> (locally) given via the Piola transformation of some function
> h defined on R, i.e. f = P(h), then g=localFunction(f) would
> still be given by
> 
>   g = f \circ T = P(h) \circ T

but this is something different to what Oli suggested, because in this
case you would have to apply the piola transformation on the
element. Regarding the gradient it would however be consistent with
you approach.

Christian

> which gives
> 
>   g = 1/det(DT) DT h
> 
> so you will only do the image space part of the Piola transformation.
> 
> 
> Carsten
> 
> _______________________________________________
> dune-functions mailing list
> dune-functions at dune-project.org
> http://lists.dune-project.org/mailman/listinfo/dune-functions
> 

-- 
Prof. Dr. Christian Engwer 
Institut für Numerische und Angewandte Mathematik
Fachbereich Mathematik und Informatik der Universität Münster
Einsteinstrasse 62
48149 Münster

E-Mail	christian.engwer at uni-muenster.de
Telefon	+49 251 83-35067
FAX		+49 251 83-32729




More information about the dune-functions mailing list