Gradient

Hello everyone,
I am doing some calculations, and in that, I need a partial derivative with respect to x. I am attaching the code here. Could you please confirm if that is the right way to do it? I am a little suspicious.

gfu = GridFunction(fes, name="us")
    gfu.Set(uinc)
    res = gfu.vec
    gfu.vec.data = a.mat.Inverse() * b.vec


    gfu1 = GridFunction(fes, name="ui")
    gfu1.Set(uinc)
    res = gfu1.vec
    gfu1.vec.data = res#a.mat.Inverse() * b.vec


    gfu2 = GridFunction(fes, name="ut")
    gfu2.Set(uinc)
    res = gfu2.vec
    gfu2.vec.data = res+a.mat.Inverse() * b.vec
    gradu = grad(gfu);
    gradut = grad(gfu2);
    gradui = grad(gfu1);
    gradux = gradu[0]
    gradutx = gradut[0]
    graduix = gradui[0]
    Y = -3;
    X = -28;
    u_t = gfu2((mesh(X,Y)));
    du_t = gradutx((mesh(X,Y)));
    Wt = np.real(1/2*mu*du_t*exp(-1j*omega*10)*np.conj((-1j*omega)*u_t*exp(-1j*omega*10)));

    X = 28;
    u_r = gfu((mesh(X,Y)));
    du_r = gradux((mesh(X,Y)));
    u_i = gfu1((mesh(X,Y)));
    du_i = graduix((mesh(X,Y)));
    Wr = -np.real(1/2*mu*du_r*exp(-1j*omega*10)*np.conj((-1j*omega)*u_r*exp(-1j*omega*10)));
    Wi = np.real(1/2*mu*du_i*exp(-1j*omega*10)*np.conj((-1j*omega)*u_i*exp(-1j*omega*10)));

In the code above, as you can see, I am calculating the gradients of three functions and then taking the x component out of them and then I want it at a point so I am using the mesh option.

Thank you.