Point-wise norm of a vector field


I have a question regarding the point-wise norm of a vector field. Let’s say we have a vector field called d, which we quantified using FEniCSx and stored its values (d.x.array[:]) as a numpy array. The question is how to compute the norm of d at each DoF as a post-processing step.

I am unsure whether reshaping d.x.array[:] will give the x, y, and z components of d. Anyone ideas on this?

Hi Alireza,

The dof array is ordered by vertices, so if you have a vector \mathbf{u}=(u_x, u_y, u_z) in each vertex, then x.array[0:3] will be the values of u_x, u_y, u_z in the first vertex, x.array[3:6] will be the u_x, u_y, u_z values in the second vertex and so on.

So in this example case you could’ve reshaped into (for example)

values = d.x.array[:].reshape((int(len(d.x.array)/3), 3))

to get an array with 3-component vectors, which you could take the point-wise norm of.