I am considering geometric evolution problems (curvature flow). Here, I need to solve for a velocity field v: Γ_h → R^3 to evolve (deform) the surface Γ_h.
However, I need to decompose the velocity into tangential and normal components and solve them separately. I may need bilinear forms similar to these two:
I now understand the differentiation of the product of the vector nsurf and the vector v using the product rule:
Grad(nsurf_now) * v + Grad(v).Trace() * nsurf_now
However, I may also need to compute the matrix grad(Ptau * v).Trace() , where I need to apply the product rule to the multiplication of the matrix Ptau = Id(3) - OuterProduct(nsurf, nsurf) and the vector v.
At this point, Grad(Ptau) might be a third-order tensor. I would like to ask how to correctly apply the product rule in NGSolve to compute grad(Ptau * v).Trace().Currently, my formulation:
Grad(Ptau) * v + Ptau * Grad(v).Trace()
throws an error. I suspect the issue is with the multiplication Grad(Ptau) * v, as the operation involving a third-order tensor may not be correctly handled.
Yes, thank you for sharing, Prof. Schöberl. The code for computing Gaussian curvature using Regge finite elements is very helpful to me. I will read it carefully.