# Gradients of the NDSolve PDE solution

I would like to understand, how to obtain gradients of the PDE solution obtained with NDSolve. To be precise let us consider a Laplace equation from one of the examples:

Clear[x, y, f];
Needs["NDSolveFEM"]
emesh = ToElementMesh[Disk[]];

f = NDSolveValue[{Derivative[0, 2][u][x, y] +
Derivative[2, 0][u][x, y] == 0,
DirichletCondition[u[x, y] == Sin[x y], True]},
u, {x, y} ∈ emesh]

This returns the interpolation function which one can plot and integrate:

NIntegrate[f[x, y], {x, y} ∈ emesh]

(*  1.52794*10^-8  *)

Plot3D[f[x, y], {x, y} ∈ emesh]

This, however, does not work:

g[x_, y_] := D[f[x, y], x];
Plot3D[g[x, y], {x, y} ∈ emesh]

Since Integrate does not work on this result, only NIntegratedoes, the problem is probably that one needs to apply a numeric derivative. What and how?

• Duplicate: 1301. Also related: 48383, 50791, 69188. – Michael E2 Jun 8 '15 at 15:36
• @MichaelE2 but this is completely different: its on a mesh :-) – chris Jun 8 '15 at 16:05
• @chris I'm a little slow to understand the ":-)" -- I thought you would object that it's a two-variable function (instead of single-variable). :-) – Michael E2 Jun 8 '15 at 16:14
• @Michael E2 Thank you for the most useful references – Alexei Boulbitch Jun 10 '15 at 7:29