Hi Lawrence, I have an equation g(u, w) = f. I need to set w, to minimize certain functional F(u,f). I'm using greedy approach. By means of firedrake I got sensitivity vector of given functional (i.e. how F changes with respect to change of w at position of i-th basis function). Then I "cut" (i.e. set to small, non zero value) w corresponding the smallest values in sensitivity vector. This approach is unstable w.r.t to mesh size and has other problems. The idea is to use Tikhonov regularization, that is to "cut" w corresponding the smallest values in sensitivity vector - \alpha \|grad(w)| For this I need point-wise access to grad(w). Hopefully this is clear enough description as I tried to make it brief. --George On 18.11.2015 19:21, Lawrence Mitchell wrote:
On 18/11/15 15:42, George Ovchinnikov wrote:
Hello folks,
I have a scalar field in 2D, $w$, say:
V = FunctionSpace(mesh, "CG", 1) w = Function(V) w.interpolate(Expression("1"))
and I need too find an norm of grad(w) in every point of the given area, i.e. get a scalar field back.
I've found no way to iterate through individual elements of grad(w) to be able to do in manually, neither abs(grad(w)) or something similar works. Any ideas? Do I need to solve some variational problem for this, too?
You can't do this pointwise because the strong gradient doesn't exist.
What do you later want to use this for. If you need |grad(w)| in a form, you can just write it in directly. When you say norm grad(w), do you mean:
sqrt(dot(grad(w), grad(w))) ?
Lawrence
_______________________________________________ firedrake mailing list firedrake@imperial.ac.uk https://mailman.ic.ac.uk/mailman/listinfo/firedrake