Thread Previous • Date Previous • Date Next • Thread Next |
Anders Logg wrote:
Why is there a pseudo time-stepping algorithm built intoNonlinearPDE::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.
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.
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?
Garth
Then there's the question of how to feedback the current pseudo-time from the solver to the user (who may define fields in terms of the pseudo-time). One option could be to let users overload a function update(t) which is called with the current pseudo-time. Then the user may do whatever with the pseudo-time, such as updating coefficients and boundary conditions. ------------------------------------------------------------------------ _______________________________________________ DOLFIN-dev mailing list DOLFIN-dev@xxxxxxxxxx http://www.fenics.org/mailman/listinfo/dolfin-dev
Thread Previous • Date Previous • Date Next • Thread Next |