GCAS GCAS GCAS GCAS GCAS GCAS GCAS GCAS GCAS GCAS ------------------------------------------------------------------- fait la reunion de plusieurs fichiers RasOrb pour creer un fichier d'orbitales ou : - les occupees, actives et virtuelles sont prises dans les differents RasOrb Methode : Aller prendre les occupees, actives et virtuelles dans tous les fichiers RasOrb Certaines actives peuvent etre "en double", ayant ete generees par plusiurs rasscf differents. Elles ne sont alors pas identiques, mais presque. Etape 1 Actives : Construire la matrice de recouvrement entre toutes les actives la diagonaliser. On obtient des valeurs propres presque entieres. valeur propre 1. Correspond a une active generee 1 fois dans les calculs rasscf precedents. Le vecteur propre correspond a l'orbitale active valeur propre ~n. L'active etait presente n fois dans les Rasorb le vecteur propre est une moyenne de toutes les actives similaires valeur propre ~0. pour chaque valeur propre ~n, il y a n-1 valeurs propres ~0. Les vecteurs correspondants sont a eliminer. Etape 2 L'espace actif etant construit, on va fabriquer les occupees et les virtuelles Occupees : On voudrait employer la meme metrhode que pour les actives, mais le nombre d'occupees cumule pour tous les fichiers est trop grand. On ne pourrait pas diagonaliser. Donc : - on prend le fichier numero 1 - on boucle sur les occupees - pour l'occupee n, on cherche son equivalent dans tous les autres fichiers - si on tombe sur une active dans un des fichiers, on laisse tomber l'orbitale - sinon, on a nf orbitales, nf etant le nombre de fichiers. On applique la meme methode que pour les actives (mat de recouvrement, diag, on ne retient que l'orbitale de valeur propre ~nf Virtuelles : comme les occupees Etape 4 orthogonalisation hierarchisee act, puis occ+virt ------------------------------------------------------------------- En entree (tous fichiers sur $WorkDir) : - Un fichier GINPORB d'orbitales localisees (GINPORB est en general la copie de LOCORB obtenu par dolo) - Les fichiers Info et Mono - le fichier SCH_FERMI cree par dolo En donnee : - Une ligne &gcas prefix='...',nprint=..,symm= / prefix : obligatoire symm : obligatoire sur les vieilles versions de molcas, si on veut une file molden. - Une ligne de donnee pour le calcul rasscf &ras name='...',symmetry=.,spin=.,nactel=. / cette ligne servira a generer les donnees de rasscf. "name" est le nom donne au calcul - Pour chaque ligne &ras name=..., il y a plusieurs lignes &ras isy=.,occvir='...',label='...........' / (une par orbitale active) label est le nom de l'orbitale active telle qu'elle apparait dans LOCORB En sortie :- Un fichier d'orbitales, genre de RasOrb avec beaucoup d'actives. ($Project.GCasOrb) - Un fichier d'orbitales locales, correspondant a LOCORB projete sur $Project.GCasOrb ($Project.LocGCasOrb) - un fichier rasscf de sortie pour chaque calcul rasscf (OUT_LOC_RASSCFname, name etant la donnee de & ras) - un fichier d'orbitales rasscf par calcul rasscf (Project.Orb.T) si on a deja fait tourner gcas pour quelques rasscf mais pas tous, le programme teste l' existence fichiers OUT_LOC_RASSCFname et Project.Orb.name et, si tout est bon, ne reexecute pas rasscf. Exemple de donnees : gcas << EOF &gcas prefix='FeL2.',nprint=0 &ras name='GS1',symmetry=1,spin=1,nactel=6 / &ras isy=2,occvir='OCC',label='O_FE.D.LP03' / &ras isy=3,occvir='OCC',label='O_FE.D.LP02' / &ras isy=4,occvir='OCC',label='O_FE.D.LP01' / &ras name='GS5',symmetry=1,spin=5,nactel=6 / &ras isy=2,occvir='OCC',label='O_FE.D.LP03' / &ras isy=3,occvir='OCC',label='O_FE.D.LP02' / &ras isy=4,occvir='OCC',label='O_FE.D.LP01' / &ras isy=1,occvir='VIR',label='O_FE.D.VI01' / &ras isy=1,occvir='VIR',label='O_FE.D.VI02' / &ras name='MLCT2',symmetry=1,spin=3,nactel=2 / &ras isy=2,occvir='OCC',label='O_FE.D.LP03' / &ras isy=2,occvir='VIR',label='O_N2~C5.DL01' / &ras name='MLCT3',symmetry=1,spin=3,nactel=2 / &ras isy=3,occvir='OCC',label='O_FE.D.LP02' / &ras isy=3,occvir='VIR',label='O_N18~C21.DL01' / &ras name='MLCT4',symmetry=1,spin=3,nactel=2,ciroot=2,2,1 / &ras isy=4,occvir='OCC',label='O_FE.D.LP01' / &ras isy=4,occvir='VIR',label='O_N2~C5.DL' / &ras isy=4,occvir='VIR',label='O_N18~C21.DL' / / EOF