[firedrake] absolute value of gradient

George Ovchinnikov lives9 at gmail.com
Fri Nov 20 18:18:23 GMT 2015


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 at imperial.ac.uk
> https://mailman.ic.ac.uk/mailman/listinfo/firedrake
> 




More information about the firedrake mailing list