Which mesh/coordinate is used to compute dx(du) after moving mesh

Hi,

I am a bit confused with the following dxd(u) – based upon which mesh the derivative is calculated?

Tho=Th;
fespace Vh(Th,P2);
fespace Vho(Tho,P2);
Vh u;
Vho uo;

Tho=Th;
uo=u;
Th=movemesh (Th, …);
dxd(u); //first
u=u; // Is this just an interpolation?
dxd(u); // second
u[ ] = uo[ ]; // is this a Larangian update?
dxd(u); //third

Can I say the first dxd(u) is computed using the old mesh, and the second dxd(u) uses the new mesh, but the derivatives are the same? both of which are different to the third dxd(u)?

Best,
Yongxing.

dx(u) is the derivative of Finite element function u def on mesh Th.
if u is almost == x then du(u) is almost == 1 and this do not depend of the mesh.

The problem is when you say u==x, this is still a Eulerian view, isn’t it? Once you define u=x, for example the density function, on a mesh, then you move (may twist or squeeze) the mesh and let the assiciated u follow the mesh, i.e. a Lagrangian movement, the u cannot be x on the new mesh anymore.
Anyway, can I confirm that in FreeFEM++, u[ ]=uold[ ] is just a Lagrangian update?