[dune-functions] GridFunction interface

Carsten Gräser graeser at mi.fu-berlin.de
Fri Mar 20 17:11:04 CET 2015


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'

> 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

which gives

  g = 1/det(DT) DT h

so you will only do the image space part of the Piola transformation.


Carsten




More information about the dune-functions mailing list