Hello,
Here is what I do currently :
md = gf.Model("real")
md.add_fem_variable("u", self.V)
md.add_fem_variable("phi", self.V) # Represents a basis function
md.add_data("p", 1)
md.set_variable("p", p)
md.set_variable("u", u)
grad_norm = np.zeros(nbdof_V)
for i in tqdm(range(nbdof_V)):
phi = np.zeros(self.nbdof_V)
phi[i] = 1
self.md.set_variable("phi", phi)
grad_norm[i] = (2+2*p)*gf.asm_generic(self.IM, 0, "sign(u)*pow(abs(u), 1+2*p)*phi", -1, md)
Sorry I should have included this snippet from the beginning.
Have a great day.
Best,
Eloi.