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

[cid:[email protected]]



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]<mailto:[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]<mailto:[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.

Attachment: Ritz_routines.tar.gz
Description: Ritz_routines.tar.gz

Reply via email to