On Thu, 23 Jan 2014 18:19:45 +0100
Jan Blechta <[email protected]> wrote:

> On Thu, 23 Jan 2014 08:53:13 -0800
> Nikolaus Rath <[email protected]> wrote:
> 
> > On 01/23/2014 04:19 AM, Jan Blechta wrote:
> > > On Wed, 22 Jan 2014 11:39:30 -0800
> > > Nikolaus Rath <[email protected]> wrote:
> > > 
> > >> Hi Jan,
> > >>
> > >> It was my impression from the other thread that I could handle
> > >> the problem of multiple solutions by giving the nullspace to the
> > >> solver. But I'll try the Laplace constraint as well.
> > >>
> > >> But then, even with u constrained, I still need to somehow put
> > >> the same constraint on the test functions, don't I? That's the
> > >> part I'm struggling with.
> > > 
> > > Sure. This is why it seems logical to me to constraint both trial
> > > and test space by Laplace equation. Nevertheless I did not think
> > > it over a much.
> > 
> > 
> > For what it's worth, it seems logical to me as well... I just don't
> > know how to impose the second constraint.
> 
> Check
> http://fenicsproject.org/documentation/dolfin/1.3.0/python/demo/documented/neumann-poisson/python/documentation.html
> 
> Testing by (v, 0) and (v + c, 0) gives linearly dependent equations -
> in fact, the same. Similar construction can apply to your problem.

Here, I meant (v, 0) and (v + arbitrary_constant, 0). And it holds
because "the sufficient condition"
  \int f \dx + \int g \ds = c |\Omega|
is fulfilled.

Jan

> 
> Jan
> 
> > 
> > So, if anyone could give me a hint or point me to a demo that shows
> > how to constrain test functions, I'd be very happy.
> > 
> > 
> > Best,
> > Nikolaus
> > 
> > 
> > 
> > >> On 01/22/2014 11:22 AM, Jan Blechta wrote:
> > >>> Actually there is a very good reason to constraint also u, say
> > >>> by Laplace equation in the interior, as your original problem is
> > >>> singular on a usual H^1 space - there are infinintely many
> > >>> solutions to the problem. So you need to pick some.
> > >>>
> > >>> Jan
> > >>> ------------------------------------------------------------------------
> > >>> From: Nikolaus Rath <mailto:[email protected]>
> > >>> Sent: ‎22/‎01/‎2014 19:27
> > >>> To: Jan Blechta <mailto:[email protected]>
> > >>> Cc: [email protected] <mailto:[email protected]>
> > >>> Subject: Re: [FEniCS] How to impose constraints on test
> > >>> functions?
> > >>>
> > >>> On 01/21/2014 01:57 AM, Jan Blechta wrote:
> > >>>>>>>> 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
> > >>>>
> > >>>> Correct.
> > >>>
> > >>> Ah, good :-). Thanks!
> > >>>
> > >>>
> > >>> Could you also give me a similar hint for my original problem?
> > >>>
> > >>> To recap: I want to find u on the boundary such that with
> > >>>
> > >>> L = dot(f, grad(v)) * dx
> > >>> a = u * dot(grad(v), FacetNormal(mesh)) * ds
> > >>>
> > >>> L(v) == a(u, v) holds for all v that satisfy div(grad(v)) = 0
> > >>> (without any boundary conditions on v).
> > >>>
> > >>>
> > >>> I tried to start setting up the potential problem:
> > >>>
> > >>> \Psi(u) = 1/2 a(u,u) - L(u)
> > >>>
> > >>> but in contrast to the Poisson-Neumann example, now the
> > >>> constraint isn't on the solution u but on the test functions v,
> > >>> so I'm not sure how I can add the Lagrange multiplier here...
> > >>> As far as I can see, there's no reason to constrain the
> > >>> variation of u to satisfy Laplace's equation when looking for a
> > >>> stationary point of \Psi.
> > >>>
> > >>> What am I missing this time?
> > >>>
> > >>>
> > >>> Thanks so much for all your help!
> > >>> Nikolaus
> > >>
> > >>
> > > 
> > 
> > 
> 
> _______________________________________________
> fenics mailing list
> [email protected]
> http://fenicsproject.org/mailman/listinfo/fenics

_______________________________________________
fenics mailing list
[email protected]
http://fenicsproject.org/mailman/listinfo/fenics

Reply via email to