Thread Previous • Date Previous • Date Next • Thread Next |
Ouuch, i had apply(b) in void F instead of apply(b, x) ... thank you very (!!) much, Garth, this solved the problem! best regards, patrick Garth N. Wells wrote:
Check that you're applying the Dirichlet boundary conditions correctly, i.e. usingvoid apply(GenericMatrix& A, GenericVector& b, const GenericVector& x) const;which is for applying bcs within Newton iterations. Garth Patrick Riesen wrote:Hiso i corrected my form-file for the new representation of L = F and a = (F')u. However the solving still repeats and does not converge, the problem remains.i don't know if it has to with L being expected as a nonlinear form but my L = F is actually linear in u?it is linear in u because i put the nonlinear part ( the computation of the variable viscosity ) in another form file, so in the main form file (hence in L) i only have something likeeta*dot(D(v),D(u)) (D() is the symmetric part of grad(u)) and eta = trace(mult(D(u),D(u))^(exponent) i get from somewhere else. patrick Anders Logg wrote: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. ------------------------------------------------------------------------ __> 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" <priesen@xxxxxxxxxxxxxxx> 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 ifollowed the CahnHillard-demo to do something similar for updating from0.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 iinitialize 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 geta 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:/------------------------------------------------------------------------------- _uu = new Function(*_V); Function* __uu = dynamic_cast<Function*>(_uu); // 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 DOLFIN-dev@xxxxxxxxxx http://www.fenics.org/mailman/listinfo/dolfin-dev_______________________________________________ DOLFIN-dev mailing list DOLFIN-dev@xxxxxxxxxx http://www.fenics.org/mailman/listinfo/dolfin-dev_____________________________________________DOLFIN-dev mailing list DOLFIN-dev@xxxxxxxxxx http://www.fenics.org/mailman/listinfo/dolfin-dev_______________________________________________ DOLFIN-dev mailing list DOLFIN-dev@xxxxxxxxxx http://www.fenics.org/mailman/listinfo/dolfin-dev
Thread Previous • Date Previous • Date Next • Thread Next |