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>
>> 

Reply via email to