Hi,

I have just started to learn FEniCS. I am trying to understand an existing code and in some of the weak functions it uses grad and in some of them it uses .dx(0). I derived the analytical functions by hand both of them come from del(f)/del(x), where f is a scalar variable in the theory.

Can anyone explain what is the difference?

Say that your domain \Omega \subset \mathbb{R}^2, and call (x, y) the vector of coordinates in \Omega. Then \partial f/\partial x is implemented as `f.dx(0)`

, \partial f/\partial y is implemented as `f.dx(1)`

, while `grad(f)`

is the vector of partial derivatives, i.e. `grad(f) = [f.dx(0), f.dx(1)]`

.

1 Like

Thank you!

I think I understand. But for 1d domain, something like u.dx(0)*v.dx(0) should be the same as inner(grad(u), grad(v)), right?