Great, Thanks!
> On Nov 20, 2015, at 8:15 PM, Satish Balay <[email protected]> wrote:
>
> added the patch in branch balay/add-KSPComputeRitz-patch [over master]
>
> ran a build with alltests - and now merged to next.
>
> Thanks,
> Satish
>
> On Fri, 20 Nov 2015, Barry Smith wrote:
>
>>
>> Nicolas,
>>
>> Sorry about not responding. It would be easier for me if this was
>> submitted as a pull request.
>>
>> Jed and/or Satish,
>>
>> Could you please create a branch from the patch file (since you guys
>> love receiving patch files), look at it and then put it into next for
>> testing? ASAP
>>
>> Thanks
>>
>> Barry
>>
>>
>>> On Nov 20, 2015, at 12:00 PM, TARDIEU Nicolas <[email protected]>
>>> wrote:
>>>
>>> Dear PETSc Team,
>>>
>>> May I request your opinion of the development proposal in the following
>>> mail.
>>> This work has been carried out in the framework of a PhD thesis ; besides
>>> the scientific goals, the proposed features are intended to be integrated
>>> in the open-source software Code_Aster, a general purpose finite element
>>> solver developed at EDF R&D, in particular for nuclear safety assessment.
>>> In order to ensure the perennity of the development, their integration
>>> within PETSc is crucial.
>>>
>>> This is why I gently request your position on their integration in PETSc.
>>> Let us know your policy on the subject and do not hesitate to request for
>>> extra integration work if needed.
>>>
>>> Best regards,
>>> Nicolas
>>>
>>> <image001.png>
>>>
>>> Nicolas Tardieu
>>> Head of the Rotating Machinery Group
>>> EDF - R&D
>>>
>>> [email protected]
>>> Tél. : +33 1 47 65 39 05
>>>
>>>
>>>
>>>
>>> ---------- Forwarded message ----------
>>> From: Sylvain Mercier <[email protected]>
>>> Date: 2015-11-03 17:09 GMT+01:00
>>> Subject: [petsc-dev] Contribution proposal about the computation of
>>> (harmonic) Ritz pairs within GMRES
>>> To: [email protected]
>>>
>>>
>>> Hi everyone,
>>>
>>> During my phd thesis, I have worked on solving sequences of linear
>>> systems with slowly varying matrices using GMRES(restart). In
>>> particular, I have developed a preconditioning technique to improve
>>> the action of an existing "first-level preconditioner". This new
>>> method is defined using Ritz or harmonic Ritz vectors obtained at the
>>> end of the solution of a linear system. Then I have developed two
>>> routines in PETSc (that I've called KSPSetComputeRitz and
>>> KSPComputeRitz) in order to compute the (harmonic) Ritz pairs
>>> associated to the smallest or largest (harmonic) Ritz values in
>>> modulus computed from the Hessenberg matrix of the last complete cycle
>>> in GMRES.
>>>
>>> Beyond the application to the preconditioning technique that I have
>>> developed, this routine can be used to recover approximated eigenpairs
>>> (and not only eigenvalues as already available in PETSc) of the
>>> preconditioned matrix at the end of a solution with GMRES. That is why
>>> I propose this contribution.
>>>
>>> Two new routines has been developed, similarly to the existing
>>> routines KSPSetComputeEigenvalues and KSPComputeEigenvalues.
>>>
>>> The first one is called KSPSetComputeRitz and sets a flag so that the
>>> last complete Hessenberg matrix computed with GMRES(restart) will be
>>> stored. Here is the synopsis of the current version (located in
>>> src/ksp/ksp/interface/itfunc.c)
>>>
>>> PetscErrorCode KSPSetComputeEigenvalues(KSP ksp,PetscBool flg)
>>>
>>> Input Parameters
>>> ksp - iterative context obtained from KSPCreate()
>>> flg - PETSC_TRUE or PETSC_FALSE
>>>
>>>
>>> The second routine aims at computing the Ritz or harmonic Ritz
>>> associated to the smallest or largest values in modulus. Here is the
>>> synopsis of the current version (located in
>>> src/ksp/ksp/impls/gmres/gmreig.c)
>>>
>>> PetscErrorCode KSPComputeRitz(KSP ksp,PetscBool ritz,PetscBool
>>> small,PetscInt *nrit,Vec S[],PetscReal tetar[],PetscReal tetai[])
>>>
>>> Input Parameter
>>> ksp - iterative context obtained from KSPCreate()
>>> ritz - PETSC_TRUE or PETSC_FALSE to compute Ritz pairs
>>> and harmonic Ritz pairs, respectively
>>> small - PETSC_TRUE or PETSC_FALSE to compute pairs
>>> associated to smallest or largest values in modulus, respectively
>>>
>>> Input/Output parameter
>>> n - The number of required and recovered pairs
>>>
>>> Output Parameters
>>> S[] - a multidimensional PETSc vector to store
>>> the (harmonic) Ritz vectors, provided by user with a dimension of at
>>> least n
>>> tetar - real part of computed (harmonic) Ritz values, provided
>>> by user with a dimension of at least n
>>> tetai - imaginary part of computed (harmonic) Ritz values,
>>> provided by user with a dimension of at least n
>>>
>>> This routine has been developed whithin GMRES for real-valued linear
>>> systems. Then the (harmonic) Ritz pairs are possibly complex-valued
>>> and conjugated. In this case, two successive columns of S are equal to
>>> the real and the imaginary parts of the vectors. Finally, the routine
>>> KSPSolve_GMRES (located in src/ksp/ksp/impls/gmres/gmreig.c) has been
>>> modified in order to store the Hessenberg matrix and the basis vectors
>>> of the Krylov subspace as soon as a complete cycle has been performed.
>>>
>>> To conclude, I propose to contribute to PETSc with these developments
>>> (I have followed the conventions detailed in the developer guide).
>>> Please find attached a patch and the modified files.
>>>
>>> Regards,
>>> Sylvain
>>>
>>>
>>>
>>> Ce message et toutes les pièces jointes (ci-après le 'Message') sont
>>> établis à l'intention exclusive des destinataires et les informations qui y
>>> figurent sont strictement confidentielles. Toute utilisation de ce Message
>>> non conforme à sa destination, toute diffusion ou toute publication totale
>>> ou partielle, est interdite sauf autorisation expresse.
>>>
>>> Si vous n'êtes pas le destinataire de ce Message, il vous est interdit de
>>> le copier, de le faire suivre, de le divulguer ou d'en utiliser tout ou
>>> partie. Si vous avez reçu ce Message par erreur, merci de le supprimer de
>>> votre système, ainsi que toutes ses copies, et de n'en garder aucune trace
>>> sur quelque support que ce soit. Nous vous remercions également d'en
>>> avertir immédiatement l'expéditeur par retour du message.
>>>
>>> Il est impossible de garantir que les communications par messagerie
>>> électronique arrivent en temps utile, sont sécurisées ou dénuées de toute
>>> erreur ou virus.
>>> ____________________________________________________
>>>
>>> This message and any attachments (the 'Message') are intended solely for
>>> the addressees. The information contained in this Message is confidential.
>>> Any use of information contained in this Message not in accord with its
>>> purpose, any dissemination or disclosure, either whole or partial, is
>>> prohibited except formal approval.
>>>
>>> If you are not the addressee, you may not copy, forward, disclose or use
>>> any part of it. If you have received this message in error, please delete
>>> it and all copies from your system and notify the sender immediately by
>>> return message.
>>>
>>> E-mail communication cannot be guaranteed to be timely secure, error or
>>> virus-free.
>>>
>>> <Ritz_routines.tar.gz>
>>