On Tue, Dec 23, 2008 at 03:28:44PM +0000, Garth N. Wells wrote: > > > Anders Logg wrote: > > Why is there a pseudo time-stepping algorithm built into > > NonlinearPDE::solve? > > So that the PDE can be solved with a series of Newton steps and boundary > conditions can functions of pseudo time t. > > Will it not converge if we just call the > > NewtonSolver directly? > > > > Not always.
ok. > > It would be better if the LinearPDE and NonlinearPDE only provided a > > layer between the forms and the linear/nonlinear solvers. > > > > If we need a pseudo time-stepping algorith, it can be built into > > NewtonSolver, or maybe another class? > > > > I wouldn't put it NewtonSolver. Best to keep NewtonSolver abstract (i.e. > unaware of PDEs) and just let it perform Newton solves. We could create > a class like NonlinearSolver or NonlinearPDESolver. NonlinearPDESolver would not be consistent with the current LinearPDE class which is in some sense is a solver for linear PDEs. > Most nonlinear PDEs are sufficiently complex and the solution methods so > diverse that for non-trivial problems I would expect that a user will > implement the solution procedure, and a NonlinearPDE class is not very > useful. Perhaps we could just provide more building blocks to make the > construction of nonlinear solvers easy? I would be inclined to just remove the NonlinearPDE class and implement the pseudo time-stepping directly in the demo: while t < T: A = assemble() b = assemble() bc.apply() newton_solver.solve(...) f.t = t bc.t = t t += dt I've also been thinking about the LinearPDE class. Perhaps we should rename it to VariationalProblem? -- Anders
signature.asc
Description: Digital signature
_______________________________________________ DOLFIN-dev mailing list [email protected] http://www.fenics.org/mailman/listinfo/dolfin-dev
