Yes, the bilinear form should be the linearized nonlinear form (not
minus).

Note that with UFL, it's now possible to just write down the nonlinear
form

  (v, F(u)) = 0 for all v

and then let UFL compute the linearization.

-- 
Anders


On Fri, May 01, 2009 at 05:01:30PM +0200, Patrick Riesen wrote:
> ouuuuu, this might be the lucky guess, i wasn't aware of that...
> 
> Ostien, Jakob T wrote:
> > In a totally blind guess, I believe that for a nonlinear problem, the linear
> > form used to require a minus sign (DOLFIN 0.8), but now (DOLFIN 0.9+) the
> > minus sign is built into NewtonSolver.  You might want to check that first.
> > 
> > Jake
> > 
> > 
> > On 5/1/09 3:09 AM, "Patrick Riesen" <[email protected]> wrote:
> > 
> >> hello!
> >>
> >> i want to update my powerlaw solver from dolfin 0.8 to dolfin 0.9.2.
> >> the solver class is derived from the NonlinearProblem class and i
> >> followed the CahnHillard-demo to do something similar for updating from
> >> 0.8 to 0.9.2.
> >>
> >> However I have a problem which i do not understand:
> >>
> >> If i hand the created forms to VariationalProblem and let it solve, all
> >> works fine and in the second iteration the newton solver converges (if i
> >> initialize a newtonian problem just for checking).
> >>
> >> if i do
> >>
> >> newtonsolver.solve(*this,uu->vector());
> >>
> >> the problem gets solved as well, i.e. all bcs and my own void F and void
> >> J get called but it does not converge, it's like the problem gets solved
> >> over and over again and the solution is added, because in the end i get
> >> a solution but it's the number of iterations \times velocity.
> >>
> >> i tried all kinds of things (with/without pointers, no cast/cast,
> >> different classes for problem/solve ...) but i don't get it, i miss
> >> something.
> >>
> >> maybe somebody has a hint or does see my error and can help me turn on
> >> the light?
> >>
> >> many thanks in advance
> >>
> >> patrick
> >>
> >>
> >> below is a code snippet of the main part:
> >> /-----------------------------------------------------------------------------
> >>
> >>    // create the forms
> >>    a_powstokes = new PowerlawStokesBilinearForm(*_V,*_V);
> >>    PowerlawStokesBilinearForm* _a_powstokes =
> >> dynamic_cast<PowerlawStokesBilinearForm*>(a_powstokes);
> >>    _a_powstokes->w0 = *__uu;
> >>    _a_powstokes->eta1 = eta;
> >>    _a_powstokes->eta2 = d_eta;
> >>
> >>
> >>    L_powstokes = new PowerlawStokesLinearForm(*_V);
> >>    PowerlawStokesLinearForm* _L_powstokes =
> >> dynamic_cast<PowerlawStokesLinearForm*>(L_powstokes);
> >>    _L_powstokes->w0 = *__uu;
> >>    _L_powstokes->eta1 = eta;
> >>    _L_powstokes->f = f;
> >>
> >> //   VariationalProblem pde(*a_powstokes, *L_powstokes, bcs, true);
> >> //   pde.solve(fluid.velocity(),fluid.pressure());
> >>
> >>    newtonsolver.solve(*this,__uu->vector());
> >> _______________________________________________
> >> DOLFIN-dev mailing list
> >> [email protected]
> >> http://www.fenics.org/mailman/listinfo/dolfin-dev
> >>
> > 
> 
> _______________________________________________
> DOLFIN-dev mailing list
> [email protected]
> http://www.fenics.org/mailman/listinfo/dolfin-dev

Attachment: signature.asc
Description: Digital signature

_______________________________________________
DOLFIN-dev mailing list
[email protected]
http://www.fenics.org/mailman/listinfo/dolfin-dev

Reply via email to