dolfin team mailing list archive
-
dolfin team
-
Mailing list archive
-
Message #24751
Re: Fwd: [Branch ~dolfin-core/dolfin/main] Rev 6347: Fix problem with default values for linear solver and preconditioner,
On 20 October 2011 12:36, Anders Logg <logg@xxxxxxxxx> wrote:
> On Thu, Oct 20, 2011 at 11:46:58AM +0100, Garth N. Wells wrote:
>> On 20 October 2011 11:28, Anders Logg <logg@xxxxxxxxx> wrote:
>> > The problem was the newly added check that the preconditioner must be
>> > set to "none" when a direct method is used. This wasn't checked
>> > before.
>> >
>> > The default values have now been changed (in LinearSolver,
>> > LinearVariationalSoler and NonlinearVariationalSolver) to
>> >
>> > "default"
>> > "none"
>> >
>>
>> Does this mean that a user who selects an iterative solver will, by
>> default, not employ any preconditioning?
>
> Yes.
>
> That will be suboptimal. Perhaps we could change the values to
>
> default, default
>
> but then we need to check that the backends handle "default" for
> preconditioners.
>
> Can you have a look at LinearSolver.cpp and check the logic?
>
I would rather roll back to how it was. We can make changes for 1.1.
The change undid changes that we made a long time ago to resolve some
issues. It may have been suboptimal, but what the recent change seeks
to address is minor. I don't see the need for a change just before 1.0
that can have a big impact (looks like tests are now failing). The
real solution is to carefully re-assess the solver interfaces. An
option is to treat all solvers as iterative, and make LU a
preconditioner. This is for post 1.0.
Garth
> --
> Anders
>
>
>> Garth
>>
>>
>>
>> > This will result in LU being chosen in LinearSolver.cpp.
>> >
>> > All the logic for this is in the constructor of LinearSolver.cpp if
>> > more tuning is needed.
>> >
>> >
>> >
>> > On Thu, Oct 20, 2011 at 10:22:45AM +0100, Garth N. Wells wrote:
>> >> What was the problem that has been 'fixed'?
>> >>
>> >> Garth
>> >>
>> >> ---------- Forwarded message ----------
>> >> From: <noreply@xxxxxxxxxxxxx>
>> >> Date: 20 October 2011 10:11
>> >> Subject: [Branch ~dolfin-core/dolfin/main] Rev 6347: Fix problem with
>> >> default values for linear solver and preconditioner,
>> >> To: Garth Wells <gnw20@xxxxxxxxx>
>> >>
>> >>
>> >> ------------------------------------------------------------
>> >> revno: 6347
>> >> committer: Anders Logg <logg@xxxxxxxxx>
>> >> branch nick: work
>> >> timestamp: Thu 2011-10-20 11:09:10 +0200
>> >> message:
>> >> Fix problem with default values for linear solver and preconditioner,
>> >> now set to "default" and "none".
>> >> modified:
>> >> dolfin/fem/LinearVariationalSolver.h
>> >> dolfin/fem/NonlinearVariationalSolver.h
>> >> dolfin/la/LinearSolver.h
>> >>
>> >>
>> >
>> >> === modified file 'dolfin/fem/LinearVariationalSolver.h'
>> >> --- dolfin/fem/LinearVariationalSolver.h 2011-06-22 10:01:17 +0000
>> >> +++ dolfin/fem/LinearVariationalSolver.h 2011-10-20 09:09:10 +0000
>> >> @@ -18,7 +18,7 @@
>> >> // Modified by Marie E. Rognes, 2011.
>> >> //
>> >> // First added: 2011-01-14 (2008-12-26 as VariationalProblem)
>> >> -// Last changed: 2011-06-22
>> >> +// Last changed: 2011-10-20
>> >>
>> >> #ifndef __LINEAR_VARIATIONAL_SOLVER_H
>> >> #define __LINEAR_VARIATIONAL_SOLVER_H
>> >> @@ -53,8 +53,8 @@
>> >> {
>> >> Parameters p("linear_variational_solver");
>> >>
>> >> - p.add("linear_solver", "lu");
>> >> - p.add("preconditioner", "default");
>> >> + p.add("linear_solver", "default");
>> >> + p.add("preconditioner", "none");
>> >> p.add("symmetric", false);
>> >> p.add("reset_jacobian", true);
>> >>
>> >>
>> >> === modified file 'dolfin/fem/NonlinearVariationalSolver.h'
>> >> --- dolfin/fem/NonlinearVariationalSolver.h 2011-08-24 22:15:11 +0000
>> >> +++ dolfin/fem/NonlinearVariationalSolver.h 2011-10-20 09:09:10 +0000
>> >> @@ -18,7 +18,7 @@
>> >> // Modified by Marie E. Rognes, 2011.
>> >> //
>> >> // First added: 2011-01-14 (2008-12-26 as VariationalProblem.h)
>> >> -// Last changed: 2011-06-22
>> >> +// Last changed: 2011-10-20
>> >>
>> >> #ifndef __NONLINEAR_VARIATIONAL_SOLVER_H
>> >> #define __NONLINEAR_VARIATIONAL_SOLVER_H
>> >> @@ -57,8 +57,8 @@
>> >> {
>> >> Parameters p("nonlinear_variational_solver");
>> >>
>> >> - p.add("linear_solver", "lu");
>> >> - p.add("preconditioner", "default");
>> >> + p.add("linear_solver", "default");
>> >> + p.add("preconditioner", "none");
>> >> p.add("symmetric", false);
>> >> p.add("reset_jacobian", true);
>> >>
>> >>
>> >> === modified file 'dolfin/la/LinearSolver.h'
>> >> --- dolfin/la/LinearSolver.h 2011-10-07 12:24:30 +0000
>> >> +++ dolfin/la/LinearSolver.h 2011-10-20 09:09:10 +0000
>> >> @@ -44,8 +44,8 @@
>> >> public:
>> >>
>> >> /// Create linear solver
>> >> - LinearSolver(std::string method = "lu",
>> >> - std::string preconditioner = "ilu");
>> >> + LinearSolver(std::string method = "default",
>> >> + std::string preconditioner = "none");
>> >>
>> >> /// Destructor
>> >> ~LinearSolver();
>> >>
>> >
>> >> _______________________________________________
>> >> Mailing list: https://launchpad.net/~dolfin
>> >> Post to : dolfin@xxxxxxxxxxxxxxxxxxx
>> >> Unsubscribe : https://launchpad.net/~dolfin
>> >> More help : https://help.launchpad.net/ListHelp
>> >
>> >
>
--
Garth N. Wells
Department of Engineering, University of Cambridge
http://www.eng.cam.ac.uk/~gnw20
Follow ups
References