On 01/20/2014 02:13 PM, Nikolaus Rath wrote:
> On 01/18/2014 04:12 AM, Jan Blechta wrote:
>> On Fri, 17 Jan 2014 16:54:27 -0800
>> Nikolaus Rath <[email protected]> wrote:
>>
>>> On 01/09/2014 11:19 AM, Jan Blechta wrote:
>>>>>>> I would like to solve the following equation (which does not
>>>>>>> directly come from a PDE):
>>>>>>>
>>>>>>> \int dV f(x) * \partial_r g(x) = \int dA u(x) * \partial_n g(x)
>>>>>>>
>>>>>>> f(x) is known, u(x) is unknown, and the equation should hold for
>>>>>>> any g(x) that satisfy Laplace's equation.
>>>>>>>
>>>>>>> In other words, I'm looking for a weight function u(x), such that
>>>>>>> the surface integral of the normal derivative of any g(x)
>>>>>>> (weighted by u) gives the same result as the volume integral of
>>>>>>> the radial derivative of
>>>>>>> g(x) (weighted by the known function f(x)).
>>>>>>>
>>>>>>> Is it possible to do this with FEniCS?
>>>>>>> It seems that the equation itself is easy to express in UFL, but
>>>>>>> I am not sure how do deal with the fact that there are no
>>>>>>> boundary conditions, and that any trial function g(x) needs to
>>>>>>> satisfy Laplace's equation.
>>>>>>
>>>>>> Yes. Look at the demo
>>>>>>
>>>>>> demo/documented/neumann-poisson
>>>>>>
>>> [...]
>>>>>
>>>>> However, even after going through the example, I'm not sure how I
>>>>> can tell FEniCS to use only trial functions satisfying Laplace's
>>>>> equation. In the example, the constraint on the test functions
>>>>> seems to fix just the constant offset. It's not clear to me to
>>>>> extend this to something more complicated, where the constraint
>>>>> itself takes the form of a PDE. Do you think you could explain in
>>>>> a bit more detail?
>>>>
>>>> You change the constraint to Laplace problem, and the space R for
>>>> Lagrange multiplier and corresponding test function to some
>>>> appropriate FE subspace of Sobolev space W_0^{1,2}. Hint:
>>>> http://en.wikipedia.org/wiki/Lagrange_multipliers_on_Banach_spaces
>>>
>>>
>>> Alright, I did quite a bit of reading now (mostly Gockenbach, also
>>> looked into Bhatti, Reddy and Strang), and I think I got the part
>>> about natural/essential vs Neumann/Dirichlet boundary conditions (and
>>> also got a lot more understanding of the finite element method
>>> itself). Thanks for the pointers!
>>>
>>>
>>> However, I am still struggling to combine the finite element method
>>> with Lagrange multipliers. I think I have a good handle on Lagrange
>>> multipliers for constrained optimization of a scalar function or
>>> integral, but I fail to transfer this to FE.
>>
>> Ok, potential for Poisson problem is
>>
>> \Psi(u) = 1/2 \int |\nabla u|^2 - L(u)
>
> Ah, the potential is the starting point. Thanks!
>
>> So if you want to minimize \Psi on V = H^1(\Omega) subject to constraint
>> \int u = 0, you do can try to find a minimum (u, c) \in (V \times R) of
>>
>> \Psi(u) - c \int u
>>
>
> My apologies if I'm slow, but why would I want to find a minimum (u,c)
> \in (V * R)? It seems to me that I don't want to find a specific value c
> -- I want a minimum u \in V \forall c.
Nevermind that question. Since c is the Lagrange multiplier of course we
need to solve for it. I got confused because I didn't see any additional
constraint equations being used to actually determine the value. But
that is just because of the special case \int u = 0, correct?
For the more general case \int u = u0, am I right that we'd need to
set up an extra term in the linear form?
(u, c) = TrialFunction(W)
(v, d) = TestFunctions(W)
g = Expression("-sin(5*x[0])")
a = (inner(grad(u), grad(v)) + c*v + u*d)*dx
L = g*v*ds + Constant(u0) * d * dx
Best,
Nikolaus
_______________________________________________
fenics mailing list
[email protected]
http://fenicsproject.org/mailman/listinfo/fenics