On 31 July 2015 at 08:42, Mikael Mortensen <mikael.morten...@gmail.com>
wrote:

>
> On 30 Jul 2015, at 17:13, Garth N. Wells <gn...@cam.ac.uk> wrote:
>
>
> On 30 July 2015 at 13:19, Mikael Mortensen <mikael.morten...@gmail.com>
> wrote:
>
>>
>> On 30 Jul 2015, at 13:54, Jan Blechta <blec...@karlin.mff.cuni.cz> wrote:
>>
>> On Thu, 30 Jul 2015 12:27:47 +0100
>> "Garth N. Wells" <gn...@cam.ac.uk> wrote:
>>
>> On 30 July 2015 at 12:18, Mikael Mortensen
>> <mikael.morten...@gmail.com> wrote:
>>
>> Hi
>>
>> Back from vacation and very pleased :-) to find that I can update my
>> Fenics installation to version 1.6 in less than 10 minutes! Used to
>> take at least a few days.
>>
>> Now I’m trying to upgrade my applications to 1.6 and I just found
>> that some of the common preconditioners (jacobi, bjacobi,
>> additive_schwarz) have gone missing. Any reason for this or is it a
>> mistake? They seem to have disappeared recently from the map
>> _methods_descr in PETScPreconditioner.cpp.
>>
>>
>> The code in question was a mess and the wrapping approach
>> unsustainable, which is why it was removed.
>>
>>
>> Including these three lines in creating _methods_descr in
>> PETScPreconditioner.cpp seems to work. Why do you consider it messy?
>>
>>     {"jacobi",           "Jacobi iteration"},
>>     {"bjacobi",          "Block Jacobi iteration"},
>>     {"additive_schwarz", "Additive Schwarz"},
>>
>>
> Removing the first two was an error by me when stripping out CUSP. They
> can go back. I'll blame my mistake on some bad indentation of an #ifedf  ;).
>
>
> Yes, I see that one.
>
> It's not sensible to provide Additive Schwarz since it has a raft of
> options that should be set on it, but we can't sustainably wrap these. With
> the forthcoming design clean up, a user will have complete control over an
> Additive Schwarz PC.
>
>
> Ok, so do you suggest removing additive_schwarz then and keeping the other
> two, or keep also additive_schwarz until 1.7? In case schwarz is removed we
> need to do a bit of cleaning up, since schwarz has a parameter (in
> Krylovsolver::default_parameters()). I can make a PR either way.
>
>
Leave additive_schwarz  out - my implementation was half-baked.

Garth


> Mikael
>
>
> Garth
>
>
>> Jacobi and additive_schwarz are the two best preconditioners for a
>> momentum solve in Navier-Stokes and I don’t think they should have been
>> removed without even making the ChangeLog.
>>
>>
>> The demand for the wrapping comes from the requirement of having
>> certain amount of control portable across backends. Is this requirement
>> getting abandoned, or at least weakened?
>>
>>
>> Another issue is that most users will simply
>> print list_krylov_solver_preconditioners, and they will then not know that
>> they can actually create a jacobi preconditioner. If they do find out they
>> will have to do something (not portable across backends) like
>>
>> p = PETScPreconditioner(‘jacobi’)
>> solver = PETScKrylovSolver(‘cg’, p)
>>
>> where they used to be able to do
>>
>> solver = KrylovSolver(“cg”, ‘jacobi’)
>>
>> Not much more complex, but certainly not very user-friendly to hide
>> preconditioners like this.
>>
>>
>
>
>
>>
>> Jan
>>
>>
>> You can control the PETSc preconditioners via PETSc options. This
>> gives you far greater control, makes DOLFIN code simpler and provides
>> greater consistency when using PETSc solver.  There will be more
>> changes in DOLFIN 1.7 to give greater control over preconditioning.
>>
>>
>> Ok, what are actually the plans for 1.7?
>>
>> Mikael
>>
>>
>>
>> Garth
>>
>>
>>
>>
>> Best regards
>>
>> Mikael
>>
>> _______________________________________________
>> fenics mailing list
>> fenics@fenicsproject.org
>> http://fenicsproject.org/mailman/listinfo/fenics
>>
>>
>
_______________________________________________
fenics mailing list
fenics@fenicsproject.org
http://fenicsproject.org/mailman/listinfo/fenics

Reply via email to