Wiki

Version 20 (Paul Fleurat-Lessard, 29/06/2011 16:44) → Version 21/22 (Paul Fleurat-Lessard, 04/08/2011 18:05)

h1. Portage de Path en Open Source

English version : [[WikiEnglish]]

Les éléments suivants sont repris de la page officielle du CBP sur le projet [[http://www.cbp.ens-lyon.fr/tiki-index.php?page=CarteOpenSource&bl=y]]

*Mots clés :* détermination de mécanismes., optimisation de chemin de réaction, coordonnées "chimiques"

h2. Introduction

Lorsque l'on considère des processus simples , mettant en jeu des réactifs de taille modeste, l'expérience du chimiste (ou du physicien, biochimiste...) est souvent suffisante pour avoir une idée raisonnable du mécanisme réactionnel sous-jacent. Cependant, dès que l'on considère un système réaliste, la détermination des mécanismes devient un art, et l'outil numérique devient un outil nécéssaire. Cependant, la plupart des méthodes actuelles génèrent un premier chemin possible, et tentent de l’améliorer de façon itérative. Une des difficultés à surmonter est le nombre très important de degrés de liberté d’une telle réaction : parmi tous les substituants, lesquels sont réellement décisifs pour le cours de la réaction ? L’expérience montre que souvent une très grande partie des substituants joue un rôle spectateur pendant une majorité des étapes élémentaires. Cependant, les programmes classiques ne savent pas différencier un groupe spectateur d’un groupe actif, et doivent ainsi considérer des milliers de distorsions possibles.

Notre approche est originale car notre programme de recherche de mécanisme se base sur la notion de groupe et de fonction réactive (telles qu’un substituant méthyle, un carbonyle…) et non plus simplement sur les atomes. Ceci permet la plupart du temps d’obtenir des chemins initiaux plus proches du processus réel que les méthodes standards. De plus, nous utilisons des algorithmes robustes et efficaces pour optimiser le chemin ce qui conduit à des temps de calculs bien inférieurs à ceux des approches usuelles.

h2. Le Pourquoi

Carte est un logiciel de construction et d'optimisation de chemin de réactions développé en Fortran 90 développé par Paul Fleurat-Lassard depuis une quinzaine d'années.
Carte utilise une analyse des systèmes réactifs basée sur la notion de groupes réactifs et de groupes spectateurs, ce qui lui permet d'être très efficace dans la construction d'un chemin initial et dans son optimisation pour trouver le mécanisme d'un processus.
Pour optimiser les chemins, Carte est couplé à des 'moteurs énergétiques' tels que Gaussian, MOPAC2009 ou VASP. Il existe aussi déjà la possibilité de le coupler à un code quelconque en utilisant des fichiers formatés.

De manière à assurer la pérennité du logiciel, de permettre son extension par la contribution des utilisateurs, de valoriser son existence dans le domaine des logiciels scientifiques, il serait souhaitable que ce logiciel puisse être compilé le plus simplement possible sur les architectures de calcul scientifique classiques, souvent basées autour de distribution GNU/Linux.
h2. Le Quoi

Le travail se décompose en plusieurs étapes :

* vérifier la compatibilité du logiciel avec un environnement de développement OpenSource (pour le compilateur, les librairies, etc)
* remplacer le cas échéant les librairies propriétaires utilisées par des équivalents Open Source
* assurer la pérennité du logiciel en le préparant aux futurs standard de Fortran (Fortran 95)
* créer une forge de développement pour permettre aux personnes intéressées de participer à son enrichissement

h2. Le Qui

* Pour qui : le logiciel est destiné à un public de chimistes théoriques
* Par qui :
** *le chef de projet fonctionnel* est Paul Fleurat-Lassard
** *le chef de projet informatique* est Emmanuel Quemener

h2. Le Quand

Aucune pression temporelle spécifique n'existe pour l'heure sur ce travail.

h2. Le Où

Le Centre Blaise Pascal mettra à disposition ses ressources matérielles et logicielles pour l'intégration logicielle dans un domaine OpenSource. Les environnements matériels se limiteront aux architectures i686 et x86_64.
Le PSMN sera utilisé pour évaluer la portabilité sur des compilateurs commerciaux et sur d'autre.

h2. Le Combien

L'utilisation d'outils OpenSource étant le contexte du projet, autant que possible, aucun coût logiciel n'est, pour l'heure, envisagé.

h2. Le Comment

# Vérification de la compilation sur architecture Open Source
# Création d'un projet sur une forge en accès restreint
# Evaluation des routines propriétaires à remplacer
# Développement d'un jeu de tests pour l'intégraton
# Evaluation des librairies de remplacement
# Remplacement des fonctions par leurs équivalents
# Vérification du fonctionnement par l'application du jeu de test
# Ouverture du projet sur la forge en accès public
# Paquetage du logiciel sur la distribution Debian

h1. Téléchargement du logiciel OpenPath

Le lien suivant permet de récupérer directement les sources du logiciels : http://forge.cbp.ens-lyon.fr/redmine/attachments/download/26/openpath_1.42.tgz http://forge.cbp.ens-lyon.fr/redmine/attachments/download/25/openpath_1.4.tgz

Le dossier @path@ contient, dans le _Repository_, tous les sources du programme.

Il est nécessaire de disposer d'un client @subversion@ pour télécharger les sources.

La récupération de l'ensemble des sources du projet se réalise avec la commande suivante : @svn checkout http://forge.cbp.ens-lyon.fr/svn/openpath@
* l'identifiant présenté ici est celui associé à la session utilisateur : ici @carteuser@
* si l'identifiant convient :
** entrer le mot de passe
* si l'identifiant ne convient pas :
** taper <entrée>
** entrer son identifiant à la suite de @Username: @
** entrer son mot de passe à l'invite @Password for '<mon identifiant>':@

<pre>
Authentication realm: <http://forge.cbp.ens-lyon.fr:80> Redmine SVN Repository
Password for 'carteuser':
...
</pre>

La version courante du projet est la 4 à la réalisation de cette documentation.

h1. Compilation du logiciel Carte

Par défaut,

h2. Sur architecture Open Source

<pre>
# Deplacement dans le dossier de Path, le programme principal
cd openpath/src
# Lancement de la compilation
make
</pre>

La compilation démarre sous GFortran par défaut et présente les sorties (partielles) suivantes
<pre>
...
Path.exe has been created.
gfortran -g -Wall -fbounds-check -o ../utils/xyz2scan ../utils/Xyz2Scan.f
gfortran -g -Wall -fbounds-check -o ../utils/xyz2path ../utils/Xyz2Path.f

Utilities have been created.
Make sure that they are in your PATH environment
rm m_mrgrnk.mod
</pre>

Au 25 février 2011, quelques avertissements informent que nombre de variables déclarées sont non utilisées. Ces avertissements ne gênent en rien la compilation et l'exécution du programme.

h1. Exécution du logiciel Carte

h2. Seul, pour récupérer la documentation

Appliquer la commande :
<pre>
# Dans le dossier de la compilation
./Path.exe -help
</pre>

Le programme renvoie vers le _shell_ :
<pre>
Path mini-help
--------------

Use: Path Input_file Output_file
Input_file starts with a Namelist called path

Compulsory variables are:
NGeomi: Number of geometries defining the Initial path
NGeomf: Number of geometries defining the Final path
Nat : Number of atoms

Other options
Input: string that indicates the type of the input geometries.
Accepted values are: Cart (or Xmol or Xyz) or Vasp
Prog: string that indicates the program that will be used for energy and gradient calculations.
Accepted values are: Gaussian, Vasp, Mopac or Ext
In case of a Gaussian or Mopac calculations, input must be set to Cart.
One example of a gaussian/mopac input should be added at the end of the
input file.See example file Test_G03.path or Test_Mopac.path
In the case of a VASP calculation, if input is set to Cart, then
the preamble of a VASP calculation should be added at the end of
the input file. See example file Test_VASP_cart.path
In the case of a VASP calculation, one should also give value of the
Runmode variable
Runmode: This indicates wether one should use VASP routine to calculate the energy
and gradient of the whole path or not. If one wants to use VASP,
Runmode must be set to PARA.
PathName: Prefix used to save the path. Default is Path
Poscar: string that will be used as the prefix for the different
POSCAR files in a VASP calculations. Usefull only if PathOnly=.TRUE.,
not used for internal calculations.
CalcName: Prefix for the files used for the energy and gradient calculations
ISuffix: Suffix for the input file.
OSuffix: suffix for the output file.
IGeomRef: Index of the geometry used to construct the internal coordinates.
Valid only for Coord=Zmat, Hybrid or Mixed
Fact: REAL used to define if two atoms are linked.
If d(A,B)<=fact*(rcov(A)+rcov(B)), then A and B are considered Linked.
debugFile: Name of the file that indicates which subroutine should print debug info.
Coord: System of coordinates to use. Possible choices are:
- CART (or Xyz): works in cartesian
- Zmat: works in internal coordinates (Zmat)
- Mixed: frozen atoms, as well as atoms defined by the
'cart' array(see below) are describe in CARTESIAN, whereas the
others are described in Zmat
- Baker: use of Baker coordinates, also called delocalized internal coordinates
- Hybrid: geometries are described in zmat, but the gradient are used in cartesian
Step_method: method to compute the step for optimizing a geometry; choices are:
- RFO: Rational function optimization
- GDIIS: Geometry optimization using direct inversion in the iterative supspace
HesUpd: method to update the hessian. By default, it is Murtagh-Sargent
Except for geometry optimization where it is BFGS.
MaxCyc: maximum number of iterations for the path optimization
Smax: Maximum length of a step during path optimization
SThresh: Step Threshold to consider that the path is stationary
GThresh: Gradient Threshold to consider that the path is stationary, only orthogonal part is taken
FTan: We moving the path, this gives the proportion of the displacement tangent to the path
that is kept. FTan=1. corresponds to the full displacement,
whereas FTan=0. gives a displacement orthogonal to the path.
IReparam: The path is not reparameterised at each iteration. This gives the frequency of reparameterization.
ISpline: By default, a linear interpolation is used to generate the path.
This option indicates the first step where spline interpolation is used.

Arrays:
Rcov: Array containing the covalent radii of the first 80 elements.
You can modify it using, rcov(6)=0.8.
Mass: Array containing the atomic mass of the first 80 elements.
AtTypes: Name of the different atoms used in a VASP calculations.
If not given, Path will read the POTCAR file.

Flags:
MW: Flag. True if one wants to work in Mass Weighted coordinates. Default=.TRUE.
Renum: Flag. True if one wants to reoder the atoms in the initial order. default is .TRUE. most of the time.
OptProd: True if one wants to optimize the geometry of the products.
OptReac: True if one wants to optimize the geometry of the reactants.
PathOnly:TRUE if one wants to generate the initial path, and stops.
Hinv: if True, then Hessian inversed is used.
IniHup: if True, then Hessian inverse is extrapolated using the initial path calculations.
HupNeighbour: if True, then Hessian inverse is extrapolated using the neighbouring points of the path.
FFrozen: True if one wants to freeze the positions of some atoms.
If True, a &frozenlist namelist containing the list of frozen atoms must be given.
If VASP is used, and frozen is not given
here, the program will use the F flags of the input geometry
FCart: True if one wants to describe some atoms using cartesian coordinates.
*** Only used in 'mixed' calculations. ***
If True, a &cartlist namelist containing the list of cart atoms must be given.
By default, only frozen atoms are described in cartesian coordinates.

DynMaxStep: if TRUE, the maximum allowed step is updated at each step, for each geometry.
If energy goes up, Smax=Smax*0.8, if not Smax=Smax*1.2.
It is ensured that the dynamical Smax is within [0.5*SMax_0,2*Smax_0]
Autocart: True if you want to let the program choosing the cartesian atoms.
VMD: TRUE if you want to use VMD to look at the Path. Used only for VASP for now
WriteVASP: TRUE if you want to print the images coordinates in POSCAR files.
See also the POSCAR option. This can be used only if prog or input=VASP.
</pre>

h2. Exécution d'un exemple complet Test_HCN_zmat_test

<pre>
# Se deplacer dans le dossier des exemples
cd ../examples/Test/Zmat
# Lancer l'execution : utilisation de l'exemple
../../../src/Path.exe HCN_zmat.path HCN_zmat.out
</pre>

Le document de sortie @Test_HCN_zmat_test.out@ (disponible dans @Files@) commence et termine par les lignes suivantes :
<pre>
Path v4.1793 (c) PFL/PD 2007-2010
Input has been set to the default: XYZ
Working in MW coordinates
Prog=TEST
EGrad.f90, L73, IOpt= 0
EGrad.f90, L73, IOpt= 0
EGrad.f90, L73, IOpt= 0
EGrad.f90, L73, IOpt= 0
EGrad.f90, L73, IOpt= 0
EGrad.f90, L73, IOpt= 0
EGrad.f90, L73, IOpt= 0
EGrad.f90, L73, IOpt= 0
EGrad.f90, L73, IOpt= 0
EGrad.f90, L73, IOpt= 0
GeomTmp=
1.053 1.113 2.832
GeomCart=
0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000
--- snip snip ---
Extrapol_int u,xgeom(NGeomI),s,dist,s-dist 11.000000000000000 11.000000000000000 1.3530023123052950 1.3530023123053081 -1.31006316905768472E-014
</pre>