From 45937de5a3ba52ba6ee2ba119346d021ca028bf4 Mon Sep 17 00:00:00 2001 From: nadia Date: Tue, 3 May 2016 11:54:25 +0200 Subject: [PATCH] Ajout des manuels --- Manuals/calculs_cholesky_emploi | 253 +++++++++ Manuals/casdet_emploi | 178 +++++++ Manuals/casdi_emploi | 313 +++++++++++ Manuals/casdiloc_emploi | 243 +++++++++ Manuals/casdint_emploi | 43 ++ Manuals/copie_ordre_emploi | 22 + Manuals/desymorb_emploi | 39 ++ Manuals/dolo_emploi | 493 +++++++++++++++++ Manuals/ecrimat_emploi | 44 ++ Manuals/faiano_emploi | 132 +++++ Manuals/gcas_emploi | 120 +++++ Manuals/gcasdeloc_emploi | 86 +++ Manuals/hieror_emploi | 49 ++ Manuals/ijkl_emploi | 39 ++ Manuals/ijkloc_emploi | 75 +++ Manuals/inserorb_emploi | 46 ++ Manuals/iternat_emploi | 112 ++++ Manuals/lewis_emploi | 544 +++++++++++++++++++ Manuals/locas_emploi | 70 +++ Manuals/loccasscf_emploi | 88 ++++ Manuals/locnat_emploi | 22 + Manuals/modif_LOCORB_emploi | 34 ++ Manuals/modif_fermi_emploi | 32 ++ Manuals/molcost_emploi | 124 +++++ Manuals/naturalt_emploi | 20 + Manuals/noscf_emploi | 97 ++++ Manuals/oldorb_emploi | 17 + Manuals/proj_scf_emploi | 59 +++ Manuals/schmudorb_emploi | 901 ++++++++++++++++++++++++++++++++ Manuals/troncorb_emploi | 24 + 30 files changed, 4319 insertions(+) create mode 100755 Manuals/calculs_cholesky_emploi create mode 100755 Manuals/casdet_emploi create mode 100755 Manuals/casdi_emploi create mode 100755 Manuals/casdiloc_emploi create mode 100755 Manuals/casdint_emploi create mode 100755 Manuals/copie_ordre_emploi create mode 100755 Manuals/desymorb_emploi create mode 100755 Manuals/dolo_emploi create mode 100755 Manuals/ecrimat_emploi create mode 100755 Manuals/faiano_emploi create mode 100755 Manuals/gcas_emploi create mode 100755 Manuals/gcasdeloc_emploi create mode 100755 Manuals/hieror_emploi create mode 100755 Manuals/ijkl_emploi create mode 100755 Manuals/ijkloc_emploi create mode 100755 Manuals/inserorb_emploi create mode 100755 Manuals/iternat_emploi create mode 100755 Manuals/lewis_emploi create mode 100755 Manuals/locas_emploi create mode 100755 Manuals/loccasscf_emploi create mode 100755 Manuals/locnat_emploi create mode 100755 Manuals/modif_LOCORB_emploi create mode 100755 Manuals/modif_fermi_emploi create mode 100755 Manuals/molcost_emploi create mode 100755 Manuals/naturalt_emploi create mode 100755 Manuals/noscf_emploi create mode 100755 Manuals/oldorb_emploi create mode 100755 Manuals/proj_scf_emploi create mode 100755 Manuals/schmudorb_emploi create mode 100755 Manuals/troncorb_emploi diff --git a/Manuals/calculs_cholesky_emploi b/Manuals/calculs_cholesky_emploi new file mode 100755 index 0000000..c43f113 --- /dev/null +++ b/Manuals/calculs_cholesky_emploi @@ -0,0 +1,253 @@ + CALCULS CHOLESKY CALCULS CHOLESKY CALCULS CHOLESKY CALCULS CHOLESKY +16 dec 2010 + + +I Calculs CASDI + +I.1. Les integrales bi-electroniques sont obtenues dans motra. + ========================================================= + La seule difference dans les fichiers de donnees est d'ajouter CHOL ou + HIGH ou LOW dans les donnees de seward. + + - Le calcul motra est tres long, et cette methode n'est pas la meilleure. + + +I.2. Motra transforme les vecteurs de Cholesky, qui sont transformes en + integrales par un programme ulterieur (chol_X). + ========================================================= + chol_X ne les calcule + pas toutes. Il commence par calculer les integrales d'echange, puis, + des seuils etant donnes, ne calcule que les integrales entre orbitales + en "interaction forte" + + seward donnee supplementaire "CHOL" ou "HIGH" ou "LOW" + scf + (rasscf) + + motra donnees supplementaires (2 lignes): CTONLY + (dans cet ordre !) KPQ + (Cholesky Transformation ONLY ; kpq : dans les + vecteurs cholesky V(k,pq) k sont les lignes + et pq les colonnes + PAS DE GEL EN DONNEE ! + + molcost donnees supplementaires : ychol=T + frozen, delete, fermi (apres gel) sont + donnes ICI + si on veut reordonner les orbitales en + Occ Act Virt (pour Nevpt2) donner ICI + act, ninact + + chol_X donnees : &chol sli1=1.d-7,sli2=1.d-7 / + dans l'integrale (ij|kl): + sli1 : seuil pour considerer la distance i-j + sli2 : seuil pour considerer la distance ij-kl + + casdet + casdi donnee obligatoire : itest(63)=1 + (les integrales sont lues sur ijcl1,ijcl2,ijcl3) + + +II. Calculs en Orbitales Localisees + +II.1. Calculs CASDI + + seward donnee supplementaire "CHOL" ou "HIGH" ou "LOW" + scf + (rasscf) + + dolo donner &smu ychol=T dans DOLOIN + (proj_scf) + schmudort + cp LOCORB INPORB + + motra DOLO_MOTRAIN + DOLO_MOTRAIN a ete cree dans dolo + par rapport a motra, il a les 2 lignes + supplementaires : + CTONLY + KPQ + (Cholesky Transformation ONLY ; kpq : dans les + vecteurs cholesky V(k,pq) k sont les lignes + et pq les colonnes + pas de gel ni de del en donnee + + molcost < DOLO_MOLCOSTIN + DOLO_MOLCOSTIN a ete cree dans dolo + avec la donnee supplementaire : ychol=T + frozen, delete, fermi (apres gel) sont + donnes ici + + chol_X donnees : &chol sli1=1.d-7,sli2=1.d-7 / + dans l'integrale (ij|kl): + sli1 : seuil pour considerer la distance i-j + sli2 : seuil pour considerer la distance ij-kl + casdet + casdi donnee obligatoire : itest(63)=1 + (les integrales sont lues sur ijcl1,ijcl2,ijcl3) + + +II.2. Calculs CASDILOC + + Motra transforme les vecteurs de Cholesky. Puis molcost les reecrit + dans un fichier lu par ijkloc. ijkloc transforme les vecteurs de Cholesky + de la base atomique a la base moleculaire, puis calcule les integrales en + bas locale, conformement a ds seuils en donnee. + + seward donnee supplementaire "CHOL" ou "HIGH" ou "LOW" + scf + (rasscf) + + si localisation dolo : + dolo donner &smu ychol=T dans DOLOIN + (proj_scf) + schmudort + cp LOCORB INPORB + si localisation lewis : + lewis + cp LOCORB INPORB + donner ychol=T dans &lewis + + + + motra DOLO_MOTRAIN (DOLO_MOTRAIN a ete genere dans dolo ou lewis) + DOLO_MOTRAIN a ete cree dans dolo (ou lewis) + par rapport a motra, il a les 2 lignes + supplementaires (a cause de la donnee ychol=T + dans dolo ou lewis) : + CTONLY + KPQ + (Cholesky Transformation ONLY ; kpq : dans les + vecteurs cholesky V(k,pq) k sont les lignes + et pq les colonnes + pas de gel ni de del en donnee + + molcost < DOLO_MOLCOSTIN (DOLO_MOLCOSTIN a ete genere dans dolo ou lewis) + DOLO_MOLCOSTIN a ete cree dans dolo (ou lewis) + avec la donnee supplementaire : ychol=T + frozen, delete, fermi (apres gel) sont + donnes ici + + + ijkloc donnee supplementaire : ychol=T + sli1 : seuil, dans (ijkl) pour les + distributions i-j et k-l + sli2 : seuil d'interaction de ij avec kl + + casdiloc + + +exemple de fichier casdiloc + +#!/bin/bash +Project='acetone' +CurrDir=$PWD +WorkDir=$CurrDir/TMP +export Project WorkDir CurrDir +export PATH=$PATH:/home/daniel/cost2/bin +export MOLCAS=/home/daniel/7.7.dev +echo 'Start of job:' $Project +echo 'Current directory:' $CurrDir +echo 'Scratch directory:' $WorkDir +cd $WorkDir +#------------------------------------------------------------------------------# +# Start executing molcas job # +#------------------------------------------------------------------------------# + + +######################seward scf############ +rm -fr $WorkDir +mkdir $WorkDir +cd $WorkDir +molcas $CurrDir/sewin +molcas $CurrDir/scfin +cp ../TMP0/acetone.ScfOrb . +############################################ + +##############interface##################### +molcost << EOF + &cost prefix='acetone.', ymo=f / +EOF +########################################### + +######## LOCALISATION ################################### +dolo +proj_scf << EOF + &pscf prefix='acetone.' / +EOF +mv NONORLOC_scf NONORLOC +schmudort << EOF + &ort / +EOF +########################################### + +############# motra ######################## +cp LOCORB INPORB +molcas DOLO_MOTRAIN +########################################### + +############# molcost ######################## +molcost < DOLO_MOLCOSTIN +########################################### + +############# ijkloc ######################## +ijkloc << EOF + &ijkloc prefix='acetone.',ychol=t,nprint=1 + symm='XY X',sli=0.d0 / +EOF +########################################### + +############# casdiloc ################## +casdiloc << EOF + &locci prefix='acetone.',gener='CAS+SD' + / +EOF +########################################### + 1,1 Haut +DOLOIN: + + &smufil prefix='acetone.' / + &smu + nprint=0,ychol=t + orb='acetone.ScfOrb' / + / + &oao / +C* 1s(1) pr=1 +O* 1s(1) pr=1 +C* 1s(2) pr=2 +O* 1s(2) pr=2 +H* 1s(1) pr=2 +C* 2p(1) pr=2 +O* 2p(1) pr=2 +fin + &orb symm='XY X' / + &smufil prefix='acetone.' / + &smu + nprint=0,ychol=t + orb='acetone.ScfOrb' / + / + &oao / +C* 1s(1) pr=1 +O* 1s(1) pr=1 +C* 1s(2) pr=2 +O* 1s(2) pr=2 +H* 1s(1) pr=2 +C* 2p(1) pr=2 +O* 2p(1) pr=2 +fin + &orb symm='XY X' / + + +OLD_DATA: + +BOND_ BASREF='O:1S(2) 2P(1),C:1S(2) 2P(1),H:1S(1)' +BOND_ CHAIN='C1=O1(LP2)' +BOND_ CHAIN='C1-C2' +BOND_ CHAIN='C2-H1' +BOND_ CHAIN='C2-H2' +CORE_ C* 1S(1) label='G' +CORE_ O* 1S(1) label='G' + + + + diff --git a/Manuals/casdet_emploi b/Manuals/casdet_emploi new file mode 100755 index 0000000..edbdcb5 --- /dev/null +++ b/Manuals/casdet_emploi @@ -0,0 +1,178 @@ + + + + + XXXX XX XXXXX XXXXX XXXXXXX XXXXXXX + X X X X X X X X X X X X + X X X X X X X + X X X X X X X X X + X X X XXXXX X X XXXX X + X X X X X X X X X + X XXXXX X X X X X + X X X X X X X X X X X + XXXX XXX XXX XXXXX XXXXX XXXXXXX XXX + + + + + +Le programme casdet permet de : + + - generer un espace de determinants. Cet espace est forme d'un + espace modele (ou generateur) qui est un CAS ou un espace + selectionne et d'un espace plus vaste genere a partir de + l'espace modele (simples, simples et doubles, DDCI ...) + (Programme Casdet) + + +INPUT FILES: + +"prefix"Info: created by molcost (ASCII file) +"prefix"Mono: created by molcost (binary file) + +OUTPUT FILES: +"prefix"det: contains determinants (binary file) +"prefix"cdi: gives info to casdi (ASCII file) + + + +INPUT DATA: +2 namelists: + + &cdfil + prefix= name of the project, with a point (.) at the end + ex: Project=PROJ in molcas + --> prefix='PROJ.' in casdet + this data MUST be given + Facultative data: input and output files have by default the names: + "prefix"Info, "prefix"Mono, "prefix"det + info='III' Info file's name is "prefix"III + Mono='MMM' Mono file's name is "prefix"MMM + det='DDD' det file's name is "prefix"DDD + info1='III' Info file's name is III + info1='MMM' Mono file's name is MMM + info1='DDD' Det file's name is DDD + / + + &cd + gener= 'CAS+SD' 'CAS+SD' (CAS + Simples et Doubles) (defaut) + 'CAS+S' (CAS + Simples) + 'CAS+DDCI' (CAS + espace DDCI) + 'CAS+DDC2' (CAS + espace DDCI2) + 'CAS' (CAS seul) + 'SEL+SD' (esp selectionne+Simples et Doubles) + 'SEL+S' (esp selectionne + Simples) + 'SEL+DDCI' (esp selectionne + espace DDCI) + 'SEL+DDC2' (esp selectionne + espace DDCI2) + 'SEL' (esp selectionne seul) + 'SEL','SEL+S','SEL+DDC2','SEL+DDCI','SEL+SD' + noac 0 number of active orbitals + nelac 0 number of active electrons + numac 16*0 active orbitals in the list of orb in molcost + ms2 double de la valeur de Sz + is0 groupe de symetrie des fonctions d'onde cherchees + nprint 0 0 ou 1 + / + + si gener = SEL... + +une namelist &mr par determinant de reference fourni en donnee + &mr + ic= occupation du CAS. Si par exemple on veut occuper les + orbitales 3 et 4 par 2 et un electrons : ic=3,3,4. + ic=3,-3,-4 est aussi accepte, les signes '-' sont mis a +. + ce qui permet eventuellement d'utiliser les fichiers + ESSOUT ou ESCASOUT generes par le programme casdi, fichiers + pour lesquels les spins sont specifies. + Tous les equivalents de spin sont generes automatiquement + + exemple + &cd gener='SEL+S,... / + &mr ic=2,2, / + &mr ic=3,3, / + ... + + it= trous dans les references (max=2 memes commentaires que pour ic) + + ip= virtuelles occupees (max=2 memes commentaires que pour ic) + + file= nom de fichier contenant les namelists &mr + si "file" est donne (donc different du defaut file=' '), le + programme cesse de chercher les determinants dans le + fichier de donner, et les cherche dans le fichier "file" + + presel= fabrication d'un espace de determinants. + methode : 2 passages casdet + passage 1 : presel='S' ou 'SD' (defaut ' ') + ' ' : pas de preselection + 'S' : on genere tous les simples a partir d'un espace + de determinants donnes individuellement + 'SD' : idem, generation SD + On donne ensuite les determinants generateurs + &mrsel ic=.... / + &mrsel ic=.... / + ... + Attention, on ne peut donner que ic, les generateurs sont + donc definis a partir du CAS + passage 2 : + gener='SEL+S' out 'SEL+SD' + &mr file='PRESEL' / + + exemple : + passage 1 : + &cdfil prefix='n2.' / + &cd gener='CAS+S',noac=7,numac=2,3,4,5,10,13,15,nelac=8, + presel='SD',nprint=0 / + &mrsel ic=2,2,3,3,4,4,5,5, / + &mrsel ic=2,2,3,3,4,4,5,10, / + passage 2 : + &cdfil prefix='n2.' / + &cd gener='SEL+S',noac=7,numac=2,3,4,5,10,13,15,nelac=8, + nprint=1 / + &mr file='PRESEL' / + + + + Remarques : + - On peut donner plusieurs fois le meme determinant. Les redondants + sont elimines + - Le programme casdet cree un fichier CASOUT qui contient tous + les determinants du CAS sous la forme des namelists &mr + - Le programme casdi cree un fichier ESSOUT de la forme : + &ess it=...,ic=...,ip=...,v=... / + on peut utiliser ce fichier en remplacant ess par mr. Les signes + "-" sont ignores, ainsi que les coefficients v + - TOUTES les orbitales qui, dans une donnee mr sont : + . non doublement occupees en dessous du niveau de fermi + . non vides au-dessus + sont considerees comme ACTIVES (attention donc a la limite de + 16 actives) + + yf_act= + .true. (defaut) les orbitales actives declarees dans + &cd restent les actives de casdi. Dans ce cas, on NE PEUT PAS + utiliser les donnees it et ip + + .false. la liste des orbitales actives est modifiee. Sont + retirees celles toujours doublement occupees en-dessous + du niveau de Fermi, et celles toujours vides au-dessus. + Sont rajoutees toutes celles qui apparaissent dans it et ip. + + &end + + + REMARQUE IMPORTANTE : quand gener = 'CAS+...', tous les determinants + possibles sont generes. La seule limitation est le nombre de trous + et particules. Par exemple, si gener = 'CAS+SD', tous les + determinants possibles ayant 2 trous et 2 particules au plus + sont presents, MEME S'ILS NE SONT PAS ENGENDRABLES A L'ORDRE 2 + a partir du CAS. + + Quand gener='SEL+...', c'est different. Seuls les determinants + dont un equivalent de spin peut etre genere a l'ordre 2 a partir + du CAS sont presents. + + Ainsi, si, avec gener='SEL+SD', on donne le CAS complet en donnee, + on obtiendra MOINS de determinants que avec la donnee gener = 'CAS+SD' + + diff --git a/Manuals/casdi_emploi b/Manuals/casdi_emploi new file mode 100755 index 0000000..2a31868 --- /dev/null +++ b/Manuals/casdi_emploi @@ -0,0 +1,313 @@ + + + + XXXX XX XXXXX XXXXX XXXXX + X X X X X X X X + X X X X X X + X X X X X X X + X X X XXXXX X X X + X X X X X X X + X XXXXX X X X X + X X X X X X X X X + XXXX XXX XXX XXXXX XXXXX XXXXX + + +************ +MRCI Program +************ + +-------------- +I INPUT/OUTPUT +-------------- + +INPUT FILES: + +"prefix"Info: created by molcost (ASCII file) +"prefix"Mono: created by molcost (binary file) +"prefix"det: contains determinants (binary file created by casdet) +"prefix"cdi: contains info from casdet (ASCII file created by casdet) +"prefix"ijcl: integral file (binary file created by molcost) +Facultative: +"prefix"ess: input vector used with nessai=2 (identical to "prefix"davec) + + + +OUTPUT FILES: +"prefix"davec: contains eigenvector (binary file) +"prefix"dens: contains density matrix (binary file) + + +INPUT DATA: +2 namelists: +1) + &cdifil + prefix= name of the project, with a point (.) at the end + ex: Project=PROJ in molcas + --> prefix='PROJ.' in casdet + this data MUST be given + Facultative data: + ymatonly F T : lit la matrice sur disque et la diagonalise, + sans avoir besoin d'autre donnee ou + fichier supplementaires + + + + input and output files have by default the names: + "prefix"Info, "prefix"Mono, "prefix"det + info='III' Info file's name is "prefix"III + Mono='MMM' Mono file's name is "prefix"MMM + det='DDD' det file's name is "prefix"DDD + ess='EEE' ess file's name is "prefix"EEE + dens='ddd' dens file's name is "prefix"ddd + info1='III' Info file's name is III + info1='MMM' Mono file's name is MMM + info1='DDD' Det file's name is DDD + ess1='EEE' ess file's name is EEE + dens1='ddd' dens file's name is ddd + / + + +2) + &dav + La namelist &dav contient un tres grand nombre de donnees + Cependant, toutes les donnees sont facultatives + D'autre part, seul un peiti nombre est a connaitre absolument + + Donnees "tres utiles" + + +nvec= 1 nb of eigenvalues +ihab= 0 1 SC2 calculation (see SC2 part) + 2 SC2 calculation for excited states (see SC2 part) +ihab= 1 if ihab>0: 1 ou 2 calcul SC2 (see SC2 part) +iprec= 6 precision : seuil d'arret a 10**(-iprec) +niter= nombre d'iterations (defaut 50) +nessai= 0 0: No trial vector + 1: give trial vectors manually (see trial vect part) + 2: reads vect from preceeding calculation +twvec= 0.03 seuil d'ecriture des coefficients des vecteurs + propres sur la sortie +twess= seuil d'ecriture des coefficients des vecteurs + propres dans le fichier ESSOUT (en clair) +syspin= '0' (defaut) pour avoir tous les vecteurs propres + '+' pour avoir les vecteurs symetriques par + retournement des spins (singulets, quintuplets...) + '-' pour avoir les vecteurs antisymetriques par + retournement des spins (triplets...) + Attention, si ms2 est different de 0, syspin='0' +ydens= 1 1: calcul et ecriture sur file de la matrice densite +ywcas= F T ecriture en sortie de tous les determinants du + CAS. Creation d'un fichier ESCASOUT + (en clair, comme ESSOUT) +twcas= 0.03 seuil d'ecriture en sortie des determinants du CAS. + + + Autres donnees : + +maxda2 nombre max de vecteurs gardes sur file +calcul= 'M', 'D' ou 'MD' +- calcul= 'M' : calcule seulement la matrice et la stocke sur + file a la maniere Moyen ou Inidet (reels en + simple precision) +- calcul= 'D' : diagonalise la matrice calculee par un passage + calcul= 'M' ou toute autre matrice ecrite de + la meme facon +- calcul= 'MD' : diagonalisation directe (defaut) +stop= 'FIN', 'DEL', 'ORDET', 'ITERNAT' +- stop='FIN' : (par defaut) le calcul va jusqu'a la fin +- stop='DEL' : le calcul va jusqu'a la fin, et n'efface pas les fichiers + temporaires. Pour faire un restart +- stop='ITERNAT' : le calcul va jusqu'a la fin, et n'efface pas certains + fichiers temporaires. Pour les calculs iternat. Voir + le mode d'emploi de ITERNAT +- stop='ORDET' : s'arrete apres avoir reordonnee les determinants en + fonction de leur adresse et avoir cree le fichier + correspondant ORDET. +restart= 'INT', 'DET', 'INTDET' ( apres un calcul stop='del' ou + eventuellment un calcul mal fini) +- restart= 'INT'. On ne reordonne pas les integrales, parce que + ce sont les memes pour 2 calculs (ex. meme geometrie, + 2 symetries differentes) +- restart= 'DET'. On ne recalcule pas les listes de determinants. (CAS + de 2 calculs avec meme espace IC, mais 2 geometries + differentes par exemple) +- restart= 'INTDET'. Tout est conserve. Les 2 calculs sont identiques. + (ex. le 1er n'a pas converge, ou on a oublie de demander + un habillage ...) +- irest=1 : equivalent a restart= 'INTDET' (defaut 0) +- sint : seuil en dessous duquel une integrale moleculaire est consideree + comme nulle (defaut 0.d0) +- ydens : T ecriture de la matrice densite dans un fichier prefixdens + (defaut T) + + / + + + +------------------------- +II additional information +------------------------- + + + +1. VECTEURS D'ESSAI + + &dav + + nessai= 0, 1, 2 (defaut 0) + - 0 les vecteurs d'essai ont la forme suivante : + + 1. 0. 0. 0. + 0. 0. 0. 0. + 0. 1. 0. 0. + 0. 0. 0. 1. + 0. 0. 0. 0. + 0. 0. 0. 0. + 0. 0. 1. 0. + 0. 0. 0. 0. + ........ + ou les "1" sont places sur les determinants dont les valeurs + diagonales sont les plus basses. Si on utilise la symetrie de spin + (donnee syspin), ces orbitales sont symetrisees, ce qui peut donner + un meilleur point de depart. + c'est un peu primaire, mais ca marche en general assez bien + + On peut rajouter la donnee : + lvec= les numeros de vecteurs lus sur un fichier PREFIX.ess issu + d'un calcul precedent. Le fichier PREFIX.ess est le fichier binaire + resultat d'un calcul casdi precedent. On fai simplement : + cp PREFIX.davec PREFIX.ess + + par exemple + a) 1er calcul nessai=0, nvec=2 + b) On s'apercoit qu'on a besoin en fait de 5 vecteurs + cp PREFIX.davec PREFIX.ess + c) 2eme calcul casdi nessai=0,lvec=1,2,nvec=5 + les vecteurs d'essai utilises par casdi sont alors : + - les 2 vecteurs du calcul precedent + - des vecteurs avec des "1" sur les plus basses valeurs diagonales + pour les 3 autres vecteurs, + comme pour un calcul nessai=0 standard + (utile quand on s'apercoit qu'on na pas demande assez de vecteurs). + + - 1 les vecteurs d'essai sont donnes "en clair" : + + +1) en namelist sous la forme : + &ess it=... ic=... ip=... v=... / + &ess it=... ic=... ip=... v=... / + &ess it=... ic=... ip=... v=... / + &ess it=... ic=... ip=... v=... / + &ess it=... ic=... ip=... v=... / + ................... + a raison d'une namelist par coefficient du vecteur pour + les coefficients importants + + it : trous it=3 : trou alpha en 3 + it=2,-4 : trou alpha en 2 et beta en 4 + ip : particules meme principe + ic : CAS donne en OCCUPATION ic=2,-2,4 : 2 electrons + alpha en 2 et 4, un beta en 2 + v : cofficients (estimes) du (des) vecteur(s) propre(s) + + Un fichier contenant des vecteurs d'essai donnes sous cette + forme est genere au cours de chaque calcul. Son nom est ESSOUT. + Il suffit de le coller a la fin des donnees. Le premier calcul + peut etre par exemple un CAS_CI (gener='CAS' dans la namelist + cd de CASDET. Si ywcas=T, on genere aussi un fichier ESCASOUT, + qui contient tout les determinants du CAS + +2) par le nom d'un fichier contenant les donnees &ess + c'est commode si on veut utiliser un calcul precedent + exemple : calcul CASCI avec ywcas=T + --> produit un fichier en clair "ESCASOUT" + calcul CAS+SD avec nessai=1 et + &ess file='ESCASOUT' / + + + - 2 les vecteurs d'essai sont lus a partir d'un calcul + precedent sur le fichier PREFIX.ess + cd fichier PREFIX.ess a la meme structure que le fichier + PREFIX.davec correspondant a la sortie d'un calcul precedent + + + +VI CALCULS SC2 + + + Les donnees sont dans la namelis &dav de casdi + + La donnee qui gouverne les calculs SC2 est ihab + + ihab = 0 diagonalisation simple + + ihab = 1 calcul SC2 + - si l'habillage se fait par rapport a l'etat fondamental + et que celui-ci est couches fermees, pas d'autre donnee + - dans le cas contraire, on doit remarquer que lhabillage + se fait par rapport : + * a un etat (on utilise ses coefficients) + * a un determinant (dominant en general dans cet etat) + + - le determinant dominant est defini par la namelist deth + &deth ith=... ,iph=... / + ou ith et iph sont les trous et particules du + determinant de reference par rapport a la REFERENCE + COUCHES FERMEES occupee jusqu'au niveau de Fermi + + exemple d'un systeme a 10 electrons, ou les orbitales + 5 et 6 sont actives + le determinant donne dans ess par + &ess it=-2,3,ic=5,-6,ip=10,-12 / + sera ecrit + &deth ith=-2,3,-5,iph=-6,10,-12 / + pour un nombre impair d'electrons, on ecrit un particule en + moins + &deth ith=-2,3,-5,iph=-6,-10, / + de facon a avoir plus de spins beta que alpha + + - l'etat de reference est CHOISI par le programme parmi + les ihvec etats les plus bas : c'est celui pour lequel + le determinant donne dans deth a le plus grand coefficient + ihvec = 1 par defaut. Il arrive que, au cours des + iterations d'habillage, l'etat de reference "descende" + au-dessous de ceux qui le precedaient. Il restera ainsi + le vecteur "habilleur" + + maxith nombre maximal d'iterations d'habillage. (defaut 10) + + sh seuil d'arret du processus SC2. Si le coefficient du + determinant de reference est inferieur a sh, le + programme s'arrete (defaut 0.5) + + ihab = 2 calcul SC2 par rapport a une autre reference + ce calcul suit necessairement un calcul ihab=1, et se sert + du fichier PREFIX.sc2ex + Il permet d'obtenir les autres racines excitees de la + Matrice SC2 obtenue avec ihab=1 + ATTENTION : par rapport au calcul ihab=1, seule la + symetrie de la fonction d'onde peut changer. En particulier, + ni le nombre d'electrons, ni l'espace actifs ne peuvent + etre modifies. + yfpspi : attention, peu teste ! + pour un calcul SC2, oblige le vecteur a rester fonction + propre de spin (ce que n'assure pas SC2) + yhmono : habillage par rapport aux monoexcites + + + Autres donnees concernant l'habillage + + + + hab= 'SC2', 'ACPF', 'AQCC' (si ihab=1) + (defaut='SC2') fait un calcul ACPF ou AQCC au lieu de SC2 + ipresc= precision pour l'habillage (10**(-iprec)) + ihprec= dans un calcul SC2 : abaissement de la precision de diagonalisation + pour les premieres iterations d'habillage (car on + peut converger la diagonalisation de facon approximative + quand on n'a pas encore habille) + (defaut : 3 soit un abaissement de precision de 10**(-3)) + mettre ihprec=0 si on veut connaitre le resultat du calcul + SDCI + ihvec : nombre de vecteurs parmi lesquels on choisit le vecteur + d'habillage. (defaut 1) diff --git a/Manuals/casdiloc_emploi b/Manuals/casdiloc_emploi new file mode 100755 index 0000000..776de6a --- /dev/null +++ b/Manuals/casdiloc_emploi @@ -0,0 +1,243 @@ + + +========================================================================== +========================================================================== + + CASDILOC CASDILOC CASDILOC CASDILOC + + CI Program for localized orbitals. Long-range interactions between + occupied and virtual orbtals are neglected + +========================================================================== +========================================================================== + + +Input files: + + Files created by ijkloc: + ~ijcllocinfo, ~ijclloc2, ~ijclloc3, ~ijclloc4 + ~Monoloc, ~Infoloc (identical to ~Mono and ~Info of molcost) + ~LOinfo + (where ~ means prefix...) + ORB_IJKLOC + + eventually: + topo: links between orbitals + + +Data: + &locci + +Compulsory data: + prefix= + +Facultative data: + noac= -1 number of active orbitals + if noac=-1, noac,numac are recalculated using + information from preceding programs. + numac= 16*0 active orbitals + ms2= 0 Sz*2 + nessai= 0 trial vectors + 0: on the lowest value(s) of the diagonal + 1: given by the user. give &locess namelist(s) + 2: read from previous calculation + 3: CAS prediagonalization + nvec 1 number of vectors + dim_heff 50 maximal size of the effective hamiltonian, i.e. + which corresponds to the number of Psi and H*Psi + stored on disk. Mustbe larger than twice nvec + nprint 0 0,1,2,3 print option + ywcas F T: writes all coefficients of CAS determinants, + whatever the value of the coefficient + niter 50 number of iterations + prec 1.d-6 convergence precision + calcul 'MD' 'MD' normal. Direct diagonalization + 'M' Matrix calculation, stored on mat file + diagonaliser ensuite avec casdi (calcul='D') + il faut alors : + - mettre ygendet=T dans &locci, pour avoir les det + - renommer la matrice MAT en Project.mat + gener 'CAS+SD' CAS+SD, CAS+S, CAS+DDCI, CAS+DDC2, CAS + 'SEL+SD' Selected Active Space. + The Active Space is given with individual space + determinants. All spin distributions are + authomatically generated. + possible data: SEL+SD, SEL+S, SEL+DDCI, SEL+DDC2, + SEL + The determinants are given as follows: + after the &locci data: &locci ... / + &selec + for each determinant, a list of occupations in I1 + format (noac numbers 0, 1 or 2, corresponding to + the occupation of active orbitals, according to + their position in the list of orbitals. + end the Data by a line FIN or END + example: + &locci ... / + &selec / + 2200 + 1111 + end + syspin '0' '0' no spin symmetry + '+' gives singlets, quintets... + '-' gives triplets... + is0 0 symmetry of the eigenvectors + does not consider symmetry + n computes vectors of symmetry n + liens 'KIJ' 'KIJ' links obtained from exchange integrals + 'FILE' links given in toto ascii file + 'ALL' all orbitals linked + 'ATOM' see below "liens='ATOM'" + sl1 if liens='KIJ'. + threshold to consider 2 orbitals as bonded + LO1 bonded to LO2 if Kij(LO1,LO2)>sl1 + (LO1 is occupied, LO2 is virtual) + sl2 threshold to consider 2 pairs of LOs as bonded + (LO1,LO2) bonded to i(LO3,LO4) + if any (Kij(LO1/LO2,LO3/LO4)>sl2) + (introduce dispersive terms) + sli as sl1 and sl2, for integrals + (LO1 LO2 || LO3 LO4) + (one threshold only: sli1=sli2) + zone ' ' To define different zones of the molecule with + different sl,sl2 and sli thresholds + default: one zone (the whole molecule), + same sl,sl2 and sli on the whole molecule. + + 1. The zones are defined using file .LOinfo + created at the localisation step + - Edit the file .LOinfo + structure of .LOinfo: + column 1: rank of LO in dolo or lewis + column 2: rank of LO in ijkloc (and casdiloc) + column 3: LO label + column 4: OCC/VIRT + column 5: type of LO: SIG/PI/LP/DIFF_S/DIFF/PX... + column 6: number of atoms in LO + column 7...: atoms of LO + example of 3 zones: + zone 0 contains active orbitals + add LOs to zone 0: example + zone(1)='+orb:PI;+N:10;+typ:DIFF_PX' + adds to zone 0: + . LOs for which the string "PI" is present + in label (column 3) + . LO of rank 10 in column 2 + . LO for which the string "DIFF_PX" is present + in column 5 + no other possibility for the moment + idem to fill zone 1. Give zone(2)= + Rem: LOs already defined in zone 0 remain in + zone 0! + Once given all zones until zone_n, + the remaining LOs are in zone_(n+1) + + 2. The zones are defined by the atoms A1,A2,A3. + example of 3 zones: + Zone 0: all atoms, unless redefined after + zone 1: a part of the molecule, + defined by atoms A1,A2,A3. + zone 1 = all orbitals on A1, A2 or A3 + zone 2: another part of the molecule, + defined by atoms A4,A5 + Data: zone='A1,A2,A3','A4,A5',sl=0.001,0.003,0.01 + sli=0.0001,0.0003,0.001,sl2=0.0001,0.0003,0.001 + zone 0: sl=0.001,sli=0.0001,sl2=0.0001 + zone 1: sl=0.003,sli=0.0003,sl2=0.0003 + zone 2: sl=0.01,sli=0.001,sl2=0.001 + + data of type "1." cannot be mixed with data "2." + The program finds whether types 1. or 2. is used + no further indicqtion is needed. + + Warning: zones with lowests rank + correspond to the most important + parts of the molecule + +itest(29)=0 : (defaut) zone de la liaison i-j = min((zone(i),zone(j)) +itest(29)=1 zone de la liaison i-j = max((zone(i),zone(j)) +itest(29)=2 zone de la liaison i-j = moyenne((zone(i),zone(j)), +Notice: itest(29)=0 corresponds to the LARGEST space, 1 to the smallest +2 is inbetween +et les seuils consideres sont la moyenne entre les seuils des zones de i et j + ysuiv,isuiv,suiv: + ysuiv F T: The converged eigenvectors correspond to the + trial ones, in the same order + suiv 0.8 in ysuiv, "correspond" means the overlap between + trial and converged vectors is larger or equal + to suiv + isuiv nvec+3 the maximum number of vectors to be computed in + the seach of vectors corresponding to the guess. + + ycaspair F T: when two bonds (occ,virt) are linked to the + CAS, they authomatically form a bond pair + sl 0.01 when liens='KIJ': threshold of the exchange + integrals to consider two orbitals as linked. + s 0.03 threshold for printing of the determinants and + coefficients of the eigenvector(s) + stop 'fin' eventually stops the program before end + 'fin': full calculation + 'NDET': stops after calculation of the nb of det + 'TOPO'; stops after calaculation of TOPO matrix + 'SL': analyses thresholds and zones, then stops + 'ESSAI': computes trial vectors and stops + info 'Infoloc' suffix of the name of infoloc file + info1 ' ' name of the infoloc file. If info1=' ', the name + is prefix//info + other file names: same rules + mono='Monoloc', topo, ijclloc2, ijclloc3, ijclloc4, + davec, + +**************** Size Consistent Dressing + mhab 0 0: no dressing + 1: CEPA_0 dressing (Correlation Energy) + 2: improved CEPA_0 dressing (Correlation Energy, + without redondants) + 3: Class Dressing + nhab 1 Reference eigenvector for dressing + iterh 2 davidson iteration after which dressing begins +note: if mhab/=0 nessai is put to 3 + +ytestgendet F T : et mprint(7)=1 : ecrit les determinants + + +***************if nessai=1: + for each vector: + &locess + it= holes + ip= particles + c= active occupation + v= 0. coefficient + end of vector: + &locess c='FIN' / or + &locess c='END' / + + example (nvec=2) + + &locess c='20',v=1., / + &locess c='fin' / + &locess c='+-',v=1. / + &locess c='-+',v=-1. / + &locess c='fin' / + +***************if nessai=2: + reads trial vector on file ess1 + default: ess1="prefix"ess + the name ess1 may be modified in namelist &cdifil + + +***************if liens='ATOM': + + 1. Condition: each bond name (O_....) must contain the name of the atoms + involved in the bond. No other information must contain + the name of an atom (be careful with "sigma" if there is a "Si" atom...) + 2. all couple of bonds containing the same atom are authomatically linked + 3. links with the CAS: data: + + &loc_at +CAS +list of atoms +end + + all bonds containing an atom of the list are linked to the CAS + diff --git a/Manuals/casdint_emploi b/Manuals/casdint_emploi new file mode 100755 index 0000000..d98e69a --- /dev/null +++ b/Manuals/casdint_emploi @@ -0,0 +1,43 @@ +##################################################################### + CASDINT CASDINT CASDINT CASDINT CASDINT CASDINT +##################################################################### + +c-------------------------------------------------------------------- +c CALCUL DES INTEGRALES DIRECTE + ECHANGE +c-------------------------------------------------------------------- + +Programme se placant avan casdi, qui calcule les integrales "Direct - Echange" +a partir des integrales "Directes" + + +En donnees : + +&casdint prefix='n2.', / + +donnees facultatives : +mono1,info1,ijcl1, +ijcl21,ijcl31,ijcl41 +ijcl,ijcl2,ijcl3 +ijcl4 : Donnees pour renommer les fichiers +mem : memoire disponible (en Mb) +maxlong : longueur max d'un fichier + +mem et maxlong dependent de la machine, et le defaut est mis a la compilation + + +En entree : + +integrales moleculaires (ijcl) +Info +Mono + + +En sortie : + +Integrales moleculaires a 2 indices : ijcl2 +Integrales moleculaires a 3 indices : ijcl3 +Integrales moleculaires a 4 indices : ijcl4 + + +Programme casdi qui suit : ajouter la donnee "&dav itest(63)=T" + diff --git a/Manuals/copie_ordre_emploi b/Manuals/copie_ordre_emploi new file mode 100755 index 0000000..48e80fd --- /dev/null +++ b/Manuals/copie_ordre_emploi @@ -0,0 +1,22 @@ +*********** +copie_ordre +*********** + +Ce que fait le programme : +1. Il lit 2 fichiers d'orbitales (sous leur forme en clair) fich1 et fich_ref +2. De "fich1", on gardera les coefficients des orbitales. +3. De "fich_ref", on gardera l'ordre des orbitales, leurs occupations + et leurs labels. +4. Le nom du fichier de sortie (reordonne) est "fich2" + +Le reordonnancement se fait par la lecture des labels A PARTIR DU 3eme +caractere (on ne tient pas compte du debut du label A_, C_ ...) +---> Les deux fichiers doivent avoir les memes labels (ils peuvent differer +par les 2 premiers caracteres) + + +donnees : + + &cop fich1='...',fich2=' ',fich_ref=' ' / + + diff --git a/Manuals/desymorb_emploi b/Manuals/desymorb_emploi new file mode 100755 index 0000000..45828e3 --- /dev/null +++ b/Manuals/desymorb_emploi @@ -0,0 +1,39 @@ + DESYMORB +! +!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! +! Desymetrisation des orbitales molcas (fichier type INPORB) +! 1) execute un rasscf CIONLY +! 2) recupere le fichier molden, lit les orbitales desymetrisees +! 3) recupere les labels des OA, les reordonne +!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! +! +Donnees + + &desymorb prefix= + basis= atome par atome, donner le nombre de s,p,d... + basis='h1:1s',C3:3s2p1d',... (obligatoire) + symm= symetries comme donnees dans seward + ex : symm='X XY' + mono1 nom du fichier Mono (def. prefixMono) + info1 nom du fichier Info (def. prefixInfo) + rasscf T: le fichier molden n'exixte pas, on + execute rasscf (def. T) + + +Utilisation + +cp "nom_du_fichier_a_desymetriser" INPORB +desymorb + + + +Fichiers + +en entree : + Info1 + Mono1 + INPORB (orb en clair, a desymetriser) + +en sortie + DESYMORB (orb en clair, desymetriseees) + DESYMORB2 (fichier binaire pour ijkloc) diff --git a/Manuals/dolo_emploi b/Manuals/dolo_emploi new file mode 100755 index 0000000..259a463 --- /dev/null +++ b/Manuals/dolo_emploi @@ -0,0 +1,493 @@ +! +! +! Program dolo +! +! + +Files to be read : - molcost files + - an orbital file (RasOrb, ScfOrb...) + +output files : - NONORLOC + (Local Orbitals: they are not orthogonal, and are + written in the basis of the OAO (Orthogonalized + Atomic Orbitals)) + + +I. +############## +Preliminairies +############## + +design the molecule, with atom names + +II. +#### +Data +#### + +1. A DOLOIN file (see "DOLOIN" part) + +2. The data to generate local Orbitals (LO) can be given + - interactively + - or can be prepared in the file 'OLD_DATA' + OLD_DATA can be obtained from an interactive run + + +############## +How it works +############## + +--------------------------------------------------- + a. Interactive run (program idolo) +--------------------------------------------------- + + enter: + export CurrDir=... + export WorkDir=... + export Project=... + export PATH=$PATH:...cost/bin + +prepare a DOLOIN file + eventually copy an old OLD_DATA_nn file (of a previous run) to OLD_DATA + + + - enter: idolo + The program starts, and asks for a data to generate one or several LO's + (see below list of commands) + + - In the same time, the program generates a new file OLD_DATA_1, + or OLD_DATA_2, or OLD_DATA_n+1, if OLD_DATA_n is the last existing one + In this file, it writes the data you just entered + + If the program crashes, or if you stop it, data already entered are + in OLD_DATA_x. Copy OLD_DATA_x to OLD_DATA, verify if everything is OK, + and re-enter "dolo" + +---------------------------------------------------- + b. background run (program dolo) +---------------------------------------------------- + + the script looks like: + + export CurrDir=... + export WorkDir=... + export Project=... + export PATH=$PATH:...cost/bin + molcost < INPUT + dolo + (proj_scf < INPUT ; cp NONORLOC_scf NONORLOC) + schmudort < INPUT + +prepare a DOLOIN file +dolo needs a correct OLD_DATA file + +############# +Possible Data +############# + + Many possibilities exist to enter a data line which will generate + one or several LO's. + + ----------------------------------------- + a. Basic generation of one or several LO + ----------------------------------------- + The "basic data" correspond to those read by the program + it is easier to use "macro data" (see below) + The program transforms the "macro data" into "basic data" + + example: + O_C2H1 C2 1S(2) 2P(1) : H1 1S(1) (1,1) + (not case sensitive) + + explanation: + + O_C2H1 is the label of the LO('s). + - The first letter (here: O), can be + A: active. C: core. G: frozen. O: other + - _ character number 2: compulsory + - characters 3 to 12. Name of the LO, chosen by the user + + C2 1S(2) 2P(1) , H1 1S(1) + atoms and AO's that describe the LO. Here, the LO is described by + atoms C2 and H1. The AO's for C2 are 1S(2) (i.e. the second S in the + ANO basis set, corresponding to the valence shell), and for H1 it is + 1S(1) + + the atoms are separated by ":" + There is in theory no limitation in the number of atoms/AO. + + (1,1): first number: 1 bonding LO + second number: 1 anti-bonding LO + for a double bond, we would have (2,2) + for a core orbital, there would be only one atom, and (1,0) + Warning! For a SINGLE bond, appearing TWICE for symmetry reasons + we would have (2,2)! + + + ----------------- + Macro data + ----------------- + The "macro data" are easier to use. In the code, they generate + basic data + There are two main "macro data". Ther names are "bond_" and "deloc_" + Almost everything can be done with these two data + + There are other kinds of data (core_, sigma_ etc...) + They may produce errors, if there is symmetry. Be careful, and verify + that you really obtained what you wanted. + + + ----------------------------------------- + b. An macro data: BOND_ + ----------------------------------------- + a subset of the Lewis structure is given by: + + chain='AT1-AT2-AT3...' + where: + ATi are labels of atoms + "-" can be -, =, ~ for single, double and triple bonds + An information may be added to ATi: + ATi(LPn) or ATi(SYn) (lone pairs, bonds invariant under + a symmetry transformation) (see below the examples) + + :::::::::::::::::::::::: + Give basis set for atoms + :::::::::::::::::::::::: + + bond_ basref='...' + + These is a preliminary data, which defines the default basis set for all + following bond_ data. The default may be changed by another "bas" data. + It can be ignored for a particular bond_ data, by giving "bas=" (as in + many examples below) + + example: BOND_ BASREF='O:1S(2) 2P(1),C:1S(2) 2P(1),H:1S(1)' + + :::::::::::::::::::::::: + Change suffix to ".PI" + :::::::::::::::::::::::: + + if the suffix of the LO label is ".SG" and it corresponds to a pi LO + it is possible to change the label + + Add label='P' to the BOND_ data + bond_ chain='...',label='P' + the name of the generated LO will be: + O_"...".PI + + + + + + :::::::::::::::::::::::: + example 1: (single bond) + :::::::::::::::::::::::: + + the example of (a) can be written: + bond_ chain='C2-H1',bas='1S(2) 2P(1)','H1 1S(1)' + The label of the LO is chosen by the program (O_C2H1.SG) + n=2: there are 2 atoms (default value: 2) + + :::::::::::::::::::::::::::::::::::: + example 2: (double and triple bond) + :::::::::::::::::::::::::::::::::::: + + a) bond_ n=2,chain='C2=C1',bas=2*'1S(2) 2P(1)' + generated labels: O_C2H1.SG O_C2H1.PI + b) bond_ n=2,chain='C2~C1',bas=2*'1S(2) 2P(1)' + generated labels: O_C2H1.SG O_C2H1.P1 O_C2H1.P2 + + :::::::::::::::::::::::::::::::::: + example 3: (bonds and lone pairs) + :::::::::::::::::::::::::::::::::: + + HO H7 + \ _ / + H2-C1 - C3H3 = C4H4 - C5H5 = N - C6H6 = C7 + / \ + H1 H8 + chain C1-C3=C4-C5=N-C6=C7: + bond_ n=7,chain='C1-C3=C4-C5-N(lp1)=C6-C7',bas=7*'1S(2) 2P(1)', + N(lp1) : atom N has 1 Lone Pair (no limit to n in lpn) + + ::::::::::::::::::::::::: + example 4: (3 lone pairs) + ::::::::::::::::::::::::: + + bond_ chain='S1(lp3)-C13',bas=2*'1s(1) 2p(1)' + + / + We have: | S1-C13 + \ + The programm generate the following basic data:: +o_s1c13 s1 1s(1) 2p(1) : c13 1s(1) 2p(1) (4 1) +o_s1lp s1 1s(1) 2p(1) (3 0) +The lone pairs were generated twice (once by each basic data). +In o_s1c13, they are "spread" over the 4 occupied +To correct that, the program generates: + +subs o_s1c13 o_s1lp + +which substracts the lone pairs from the set (LP+sig+sig*). The sigma +appears then to be pure, the LP are unchanged +these generated data appear in OLD_DATA_x + + :::::::::::::::::::::::::::::::::::::::: + example 5: (bonds invariant by symmetry) + :::::::::::::::::::::::::::::::::::::::: + + C1 + / \ + C2 C3 + ------ | ---- | ---------------- symmetry plane + C2 C3 + \ / + C1 + + bond_ n=2,chain='C1-C3(sy1)' + + sy1 means that There is a C3-C3 bond, invariant by symmetry. The program + will generate the following basic data: + o_C1C3 C1 1s(2) 2p(1) : C3 1s(2) 2p(1) (3 3) (3 occ, 3 anti bonding + corresponding to C1-C3-C3-C1) + O_C3 C3 1s(2) 2p(1) (1 1) (C3-C3 bond) + subs o_C1C3 c_C3 (substract c_C3 from o_C1C3) + +After substraction, The orbitals with the label o_C1C3 are really on +the C1-C3 bond, and not on C3-C3 + + + + ::::::::::::::::::::: + example 6: (pi bonds) + ::::::::::::::::::::: + + C1 C1 + / / + C2 C3 C2 C3 + a) | b) ------ ---- | --------- + C4 C6 C2 C3 + \ \ + C5 C1 + + a) bond_ n=2,chain='C1=C2',orth='c1,c2,c3' + b) bond_ n=1,chain='C3(sy2)',orth='c1,c3,c3' (bond invariant by symmetry) + + only double bonds are represented (Kékulé). + The 3 centers c1,c2,c3 define a plane. + The pi orbitals are orthogonal to this plane. + (orth='c1,c2,c3' means: no component in plane c1,c2,c3) + + + ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: + example 7: (All p, or d orbitals of an atom. Here: closed shell Fe) + ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: + + 3d of an iron atom: + a) 3 filled LO's + bond_ n=1,chain='fe(lp3)',bas='3d(1)' + b) 2 empty LO's + bond_ n=1,chain='fe',bas='3d(1)',vi=2 + + ::::::::::::::::::::::::::::::::::::::::::::::::: + example 8 (several subgraphs in one "bond_" data) + ::::::::::::::::::::::::::::::::::::::::::::::::: + + This possibility is sometimes mandatory, if the data (SYn) is used + + example of butadiene: + + \ / + H1 C2 - + \ // + C1 - C1 + // \ + - C2 H1 + / \ + + 1. C2-C1-C1-C2 bond: bond_ chain='C1(sy1)=c2' + 2. C1-H1 bond: bond_ chain='C1(sy1)-H1' + + an atom with (SY.) CANNOT appear in two different bond_ lines + use instead: + bond_ chain='C1(sy1)=c2;C1(sy1)-H1' + + NOTE: in general, all bonds can be generated with the BOND_ command + + ----------------------------------------- + c. An macro data: DELOC_ + ----------------------------------------- + + build a set of orbitals that are deloclized on several atoms + + example: + deloc_ n=3,chain='c1-c6-c11',bas=3*'2pz(1)',noc=3,nvirt=3,label='a' + means: + n : number of atoms (can be more by symmetry) + c1-c6-c11 : list of the atoms, separated by "-" + noc, nvirt : number of occupied and anti-bondings (in this example, + we have a 6-atom ring) + label='a' : these orbitals will be active in the MRCI + bas=3*'2pz(1)' : in this example, the Pz pi orbitals were seeked + + ----------------------------------------- + d. SIGMA_ + ----------------------------------------- + A set of sigma bonds + sigma_ c* 1S(2) 2P(1) : h* 1S(1) dmax=1.2 ANGSTROM + generates all CH bonds for all (C,H) couples, separated by less + than 1.2 Angstrom. + Note. in C*..., * replaces only NUMBERS, and not letters. So Cu is + not considered as a Carbon atom. Do not call the C atoms Ca, Cb... + + NOTE: This data makes sometimes problems if there is symmetry. In this + case, better use BOND_ + + + ----------------------------------------- + e. CORE_ , DIFF_ + ----------------------------------------- + A set of core or diffuse orbitals + CORE_ C* 1S(1) ---> occupation is (1 0) + DIFF_ C* 1S(1) ---> occupation is (0 1) + +############################################# +Other macro data (do not une for the moment) +############################################# + + ----------------------------------------- + f. PI_ + ----------------------------------------- + similar to SIGMA_, for pi orbitals + example: + PI_ C* 2P(1) : C* 2P(1) DMAX=1.4 ANGSTROM + + NOTE: This data makes somtiomes problems if there is symmetry. In this + case, use BOND_c1,c2,c3 + + + ----------------------------------------- + g. SUBS + ----------------------------------------- + subtraction (or projection) of a set of LO from another set of LO, + as it appears in B. example 4 + + subs o_s1c13 o_s1lp (the space of o_s1c13 is larger than the space + of o_s1lp) + + + ----------------------------------------- + h. RENAME + ----------------------------------------- + If one enters for example + o_s1lp s1 1s(1) 2p(1) (3 0) (basic data) + / + | S1 + \ + 3 lone pairs are generated, with the same name. The names need to + be different in the following of the calculation + + a solution is to use BOND_ instead + bond _ n=1,chain='S1(lp3)',bas='1s(2) 2p(1)' + + or to rename the bonds +REN o_s1lp o_s1lp1 o_s1lp2 o_s1lp3 + (REN common_name individual_names) + + + + ----------------------------------------- + i. Multiple data + ----------------------------------------- + - using "[", "]" + ex. + BOND_ CHAIN='W1',BAS='3D[0 1+ 2+ 2-](1) 3D[0 1+ 2+ 2-](2)',LP=1,VI=1 + generates 4 bond data: + BOND_ CHAIN='W1',BAS='3D0(1) 3D0(2)',LP=1,VI=1 + BOND_ CHAIN='W1',BAS='3D1+(1) 3D1+(2)',LP=1,VI=1 + ... + - using "[[" + ex: + BOND_ CHAIN='O[1 2 3 4 5 6 7 11 13 15](LP1)',BAS='2P[[X Y Z]](1) 2P[[X Y Z]](2)' + generates all combinations of the 10 data due to [1 2 3 4 5 6 7 11 13 15] + and the 3 due to [[X Y Z]] + (a total of 30 bond_data) + + + + + ----------------------------------------- + j. ROT_ + ----------------------------------------- + - replaces a set of AOs (in general Px,Py,Pz orbitals of an atome) by a + combination of these orbitals + -example +ROT_ ATOM='C1',PARA='0,C1' + for Atom C1, the three AOs Px,Py,Pz are replaced by a combination, + the axis is given by the direction 0 (zero)-C1, where 0 is the Origin. + the AO basis is reduced, to eliminate unwihed LOs + - you can give several ROT_ commands + -example +ROT_ ATOM='C1',PARA='0,C1' +ROT_ ATOM='C2',PARA='0,C2' +ROT_ ATOM='C3',PARA='0,C3' +ROT_ ATOM='C4',PARA='0,C4' +ROT_ ATOM='C5',PARA='0,C5' +DELOC_ CHAIN='C3-C1-C5-C2-C4',BAS=5*'2P(1)',NOC=8,NVIRT=8 +ROT_ CLOSE + + The DELOC command uses the reduced AOs. The Rot_ commands are valid for all + following commands + ROT_ CLOSE cancels all preceding ROT_ data + + + + + + +#################### +Details of Data +#################### + +-------------- +DOLOIN file: +-------------- + +All data are compulsory + + &smufil prefix='Project.' / + &smu + nprint=0, + orb='test.RasOrb' orbital file name, as a result + or a SCF or CASSCF calculation + loc_actives default:T T: localizes active orbitals + F: active orbitals remain unlocal + / + + &oao / +Concerns data to build OAO (Orthogonalized Atomic Orbitals) +list of Atomic Orbitals, with priority in the orthogonalization +example: +Fe 1s(1) pr=1 +--> first s orbital of atom Fe in the list of AO's + the AO is orthogonalized with highest priority (pr=1) +Fe 2p(1) pr=1 +--> idem for all 2px, 2py and 2pz AO's +Fe 3d(1) pr=2 +--> idem for the 5 d orbitals. (pr=2: will be orthogonalized, for example, + to the 1s of C which has (pr=1) (projection orthogonalization) +-- etc... +C* 1s(1) pr=2 +N* 1s(1) pr=2 +H* 1s(1) pr=2 +S 1s(1) pr=2 +C* 2p(1) pr=2 +N* 2p(1) pr=2 +H* 2p(1) pr=2 +S* 2p(1) pr=2 +fin end of AO data + &orb symm='XY' / symm: as given in seward after the line + SYMMetry + + + diff --git a/Manuals/ecrimat_emploi b/Manuals/ecrimat_emploi new file mode 100755 index 0000000..348a271 --- /dev/null +++ b/Manuals/ecrimat_emploi @@ -0,0 +1,44 @@ +************************************************************************** +ecrimat ecrimat ecrimat ecrimat ecrimat ecrimat ecrimat +************************************************************************** + +Programme d'ecriture sur papier de la matrice d'IC calculee par CASDI + +Donnees : + call LECNAM('&ECRM',namel,5,ierr,1) + call namela(namel,prefix,'PREFIX') + call namela(namel,DET,'DET') + call namela(namel,MAT,'MAT') + call namela(namel,CDI,'CDI') + call namela(namel,INFO,'INFO') + call namela(namel,DAVEC,'DAVEC') + call nameli(namel,PRECIS,'PRECIS',4) + call namell(namel,YDETV,'YDETV',1) + call nameli(namel,NPRINT,'NPRINT',4) + + +Fichiers en entree : + +davec de casdi: calcul='MD' ou calcul='D' +det de casdet +mat de casdi: calcul='M' +info de molcost +cdi de casdet + + +exemple : + +seward sewin +scf scfin +motra motrain +molcost < molcostin +casdet < casdetin +casdi90 < casdiinM +casdi90 < casdiinD +ecrimat << EOF + &ECRM prefix='...' / +EOF + + - ou, dans casdiinM, on calcul='M' (creation d'un fichier .mat contenant la matrice) + - dans casdiinD, on calcul='D' (lecture du fichier .mat, diagonalisation) + - dans ecrimat, la seule donnée obligatoire est prefix diff --git a/Manuals/faiano_emploi b/Manuals/faiano_emploi new file mode 100755 index 0000000..5d656f0 --- /dev/null +++ b/Manuals/faiano_emploi @@ -0,0 +1,132 @@ + +!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + faiano + fabrication d'ANO + Utilisation : + 1. faire un calcul scf ou casscf SANS SYMETRIE sur l'atome pour + obtenir les OM a partir + desquelles on construira les ANO. Pour un calcul sur un atome, + il y a en general des orbitales degenerees (3p, 5d,...) Les OM correspondantes + DOIVENT etre degenerees. pour cela utiliser des occupations egales + (fractionnaires en general). + ex : pour C, entrer : +occu +4 +occn +2. 3*0.66666666666666 +pour avoir 3 p degenerees +Pour les metaux de transition, il faut reussir a avoir les D degenerees. +Ce n'est pas toujours facile, la S s'intercalant quelquefois. Au besoin, mettre +a la S la meme occupation que les D. ex pour Ru +occu +10 +occn +2. 2. 2. 2. 6*1.3333333333333 (s,px,py,pz,5d+s) peu importe si la S +s'intercale + + 2. Copier le fichier d'orbitales + dans un fichier nomme ORB. + + 3. extraire du fichier dans baslib_library de molcas + la base qui nous interesse (extraire TOUT ce qui concerne + l'atome, c.a.d. jusqu'a la ligne qui precede la donnee de + l'atome suivant) + 4. l'ecrire dans le fichier nomme BAS + 5. Editer le fichier BAS. Il faut lui donner une forme bien + definie (car les differentes base donnees dans baslib_library + ont des formats tres variables) + ! ligne 1 definition de la base + ! lignes 2,3 commentaires + ! ligne 4 charge, lmax + ! ligne 5 : vide + ! ligne 6 : ngauss, ncont pour les s + ! ngauss lignes exposants (1 par ligne !) + ! ngauss lignes de ncont coefs (les ncont coefs peuvent etre + ! sur plusieurs lignes). Completer les lignes si necessaire, + ! pour bien avoir ncont coefs, comme dans l'exemple donne + ! ngauss, ncont pour les p + ! ... + ! + ! exemple qui marche : + ! +! /Ni.ECP.Seijo.9s6p6d.3s3p4d.16e-NR-AIMP. +! L.Seijo, Z.Barandiaran, and S. Huzinaga, J.Chem.Phys. 91(1989)7011 +! core[Mg] val[3p,4s,3d] (711/411*/3111d)=3s3p4d recomended +! 16.000000 2 +! +! 9 3 +! 4285.323290 +! 651.9116660 +! 148.4310420 +! 14.61565810 +! 5.084914950 +! 2.695829830 +! .9637774780 +! .1247067220 +! .4440127210E-01 +! -.001291434550 0. 0. +! -.008765641940 0. 0. +! -.026885866400 0. 0. +! .120663572000 0. 0. +! .088548487800 0. 0. +! -.211511413000 0. 0. +! -.300423481000 0. 0. +! .616312812000 1. 0. +! .514892857000 0. 1. +! 6 3 +! 335.2111400 +! 78.05211610 +! 23.61618700 +! 2.862374010 +! .9462498720 +! .1110000000 +! -.017329090100 .000000000000 .000000000000 +! -.105886106000 .000000000000 .000000000000 +! -.251733492000 .000000000000 .000000000000 +! .623521318000 .000000000000 .000000000000 +! .470407510000 1.000000000000 0.000000000000 +! .000000000000 0.000000000000 1.000000000000 +! 47.29662940 +! 13.20797580 +! 4.435978690 +! 1.482292030 +! .4385855920 +! .1316000000 +! .028692884000 .000000000000 .000000000000 .000000000000 +! .153696374000 .000000000000 .000000000000 .000000000000 +! .374873996000 .000000000000 .000000000000 .000000000000 +! .473227536000 1.000000000000 .000000000000 .000000000000 +! .312182257000 .000000000000 1.000000000000 .000000000000 +! .000000000000 .000000000000 .000000000000 1.000000000000 +! * +! * Core AIMP: NI3F-3S +! * +! * Local Potential Paramenters : (ECP convention) +! * A(AIMP)=-Zeff*A(ECP) +! M1 +! 10 +! 305000.0000 +! 40270.00000 +! ... + + 6. lancer faiano, sans donnees + si le programme donne une erreur du genre : + on selectionne trop d'orbitales + ou + stop kk.ne.nbcon + c'est que le OM sont tres impure (melanges Px/Py par exemple) et + n'ont pas pu etre reconnues. + Les purifier d'abord : + lancer purigom (sans donnees, il lit les fichiers BAS et ORB, + il cree le fichier "PUR") ; mv PUR ORB ; lancer faiano + 7. La base ANO est dans un fichier nomme ANO + copier ce fichier dans un fichier dont le nom est celui du + fichier dans lequel on a pris la base dans baslib_library + exemple: cp ANO ECP + 8. ajouter dans le script l'emplacement de la nouvelle base + exemple : + mkdir BASLIB + ln -sf $CurrDir/ECP BASLIB/ECP + 9. ajouter dans l'input de seward " / BASLIB" a la fin de la ligne definissant la base puis verifier en relancant seward, scf +!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + diff --git a/Manuals/gcas_emploi b/Manuals/gcas_emploi new file mode 100755 index 0000000..72d7945 --- /dev/null +++ b/Manuals/gcas_emploi @@ -0,0 +1,120 @@ + 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 + + diff --git a/Manuals/gcasdeloc_emploi b/Manuals/gcasdeloc_emploi new file mode 100755 index 0000000..7f2690c --- /dev/null +++ b/Manuals/gcasdeloc_emploi @@ -0,0 +1,86 @@ + GCASdeloc GCASdeloc GCASdeloc GCASdeloc GCASdeloc + +------------------------------------------------------------------- +Note: If you know GCAS, GCASdeloc is a simplified version, without +reference to use of local orbitals + + +Definition: merge the orbitals or several rasscf orbital files, to +get average orbitals + + + +Method: + Get Occupied, Active and Virtuals from several RasOrb files. Some of + them appear more than once, as they were generated by different + rasscf calculations. In that case they are almost identical. + +Step 1 Actives: + Buils overlap matrix between actives, diagonalise. One gets almost + integer eigenvalues. If ~1: the active was generated once. The + eigenvector corresponds to the active orbital. If eigenvalue ~n (n>0) + the state was present in n rasscf calculations. The eingenvector will + result in an average vector of the n states. If eigenvalue ~0, the + eigenvector should be eliminated, as it is the result or a linear + dependency. there are n-1 eliminated vectors for a eigen value equal + to n. + +Step 2 Once constructed the Active space, one must build the occupied and + virtual spaces + Occupied : + It would be convenient to use the same method, but the number of + cumulated occupied orbitals could be to large. it would be impossible + to diagonalise + Then: + - take RasOrb file number 1 + - loop on orbitals + - for occupied n, look for an equivalent in all other files + if one equivalent is found, and if it corresponds to an active, + forget the orbital + - Otherwise, one has nf orbitals, where nf is the number of RasOrb files + - Apply same method, as it was done for actives (overlap matrix, + diagonalisation, get only eigenvalue equal to nf. + Virtuelles : as for occupied + +Step 4 hierarchised orthogonalisation act, then occ+virt + +------------------------------------------------------------------- + +Input files: (on $WorkDir) : + - Info et Mono files + - RasOrb files +Input files: (on $CurrDir) + - rasin files (data files for rasscf calculations. + + +Input data: +1. + &gcas prefix='...',nprint=..,symm= ,ninac= ,noac= ,nelac= / + prefix : compulsory + symm : needed on old molcas versions, if one wants a molden file. + ninac,noac: number of doubly occupied, and active orbitals in each + symmetry. + nelac: number of active electrons. + ninac,numac and nelac correspond to the final active space, once merged + all active orbitals. +2. + &ras namelists, one for each RasOrb file + &ras input= ,'rasorb= / + input: name of rasscf input file (is on CurrDir!) + rasorb: name of rasOrb file (is on WorkDir!) + + + +Output: sortie :- A RasOrb file with many actives ($Project.GCasOrb) + + +Example of data: + +gcasdeloc << EOF + &gcas prefix='Ni.',nprint=0,ninac=35,24,35,24,31,21,31,21, + noac=1,0,1,0,1,0,1,0,nelac=6 / + &ras input='rasin_357S',rasorb='Ni.RasOrb_357S' / + &ras input='rasin_1357T',rasorb='Ni.RasOrb_1357T' / +EOF + + diff --git a/Manuals/hieror_emploi b/Manuals/hieror_emploi new file mode 100755 index 0000000..fb92615 --- /dev/null +++ b/Manuals/hieror_emploi @@ -0,0 +1,49 @@ +HIEROR + +Programme d'orthogonalisation d'orbitales exprimees dans une base d'OA + +S'execute apres molcost, lit le fichier "Mono" + +Fichiers en entree : +Mono (de molcost) +INPORB (orb a orthogonaliser) + +Fichiers en sortie : +ORTORB (orb orthonormales) + +Donnees : + &hieror prefix'...',yoa_ort= / + pr1 + is1 io1 io2 io3 io4 ... + is1 io5 io6 ... + is2 io1 io2 ... + ... + pr2 + is1 io1 io2 io3 io4 ... + is2 io1 io2 ... + pr3 + ... +FINHIEROR + +avec : yoa_ort=T : les OA sont deja orthogonales, la matrice de recouvrement + est remplacee par la matrice unite (defaut F) + + pr1,pr2,pr3 : priorites des orbitales (1,2,3...) (pas de limitation) + les priorites doivent etre donnees par valeurs croissantes, 1 + correspondant aux orbitales les plus prioritaires + puis on donne les orbitales une a une + is1,is2,is3 : symetrie des orbitales donnees + io1,io2,io3 : numero des orbitales dans leur symetrie + +on finit les donnees par : +finhieror + +donnees compactees : +au lieu de + pr1 + 1 3 4 5 6 7 9 12 +on peut donner + pr1 + 1 3-7 9 12 + + diff --git a/Manuals/ijkl_emploi b/Manuals/ijkl_emploi new file mode 100755 index 0000000..c1715e0 --- /dev/null +++ b/Manuals/ijkl_emploi @@ -0,0 +1,39 @@ + +****************************************************************************** +ijkl : Programme de transformations d'integrales + +****************************************************************************** + + En entree : + - file d'integrales monoelectroniques atomiques prefixAO_ONE + - file d'integrales bielectroniques atomiques prefixAO_TWO + - file d'orbitales (INPORB) + + + +Donnees : + Donnee (maj: correspond a des donnees obligatoires) + &ijkl PREFIX='...' + inforef1 file Info en entree prefixInfo + info1 file Info en sortie prefixInfo + (iforef1 sera donc remplacee par info1. En fait on ajoute a + inforef1 la partie concernant les orbitales moleculaires) + mono1 file Mono en sortie prefixMono + + inforef, + monoref, + info, + mono suffixes des 4 files precedentes Inforef... + + ORB1 file des nouvelles orbitales + ORB_SORT numerotation des OM (indices des integrales 'OV' + moleculaires) + SYM : ordonnes par symetries + OV : ordonnees Occupees, puis virtuelles + OAV : ordonnees inactives occupees, actives, + inactives virtuelles + frozen nb d'orbitales gelees par symetrie nsym*0 + delete nb d'orbitales virtuelles gelees par symetrie nsym*0 + ycl les integrales sont generees en clair F + + diff --git a/Manuals/ijkloc_emploi b/Manuals/ijkloc_emploi new file mode 100755 index 0000000..7061905 --- /dev/null +++ b/Manuals/ijkloc_emploi @@ -0,0 +1,75 @@ +****************************************************************************** +ijkloc : Programme de transformations d'integrales moleculaires ecrites + en orbitales de symetrie a des integrales moleculaires ecrites + en orbitales desymetrisees + +2 etapes : 1. desymetrisation des orbitales. C'est une partie + completement independante + 2. transformation des integrales, obtention des orbitales + locales + +****************************************************************************** + + Utilisation : + - Etape scf + - Etape localisation --> orbitales locales + - motra-molcost --> files ijcl,Info,Mono + - ijkloc + - exsci + + Fichiers : + + En entree : ('~' =PREFIX) + - ~Mono + - ~Info + - SCH_FERMI (creee par schmud) + - Input Orbitals (inporb) + - calcul non cholesky: + - file d'integrales ~ijcl + - calcul cholesky: + - CHOL_VEC + - MO_ONEINT + + En sortie : - ~Ijcllocinfo (information pour exxci) + - ~ijclloc2 (integrales bielectroniques a 2 indices + differents) + - ~ijclloc3 (3 indices differents) + - ~ijclloc4 (4 indices differents) + - ~Infoloc (fichier de type Info, pour les orbitales + locales) + - ~ijclloc (eventuellement) fichier ijcl pour casdi + - ~IJCLLOC (eventuellement) fichier IJCL pour casdi + - DESYMORB orbitales desymetrisees + - ORB_IJKLOC orbitales locales + + +Donnees : + Donnee (maj: correspond a des donnees obligatoires) + &ijkloc + +Donnees obligatoires : + PREFIX='...' + +Donnees facultatives : + nprint 0,1,2 0 + symm donnees de seward qui suivent la + ligne "SYMMETRY" (dans le meme ordre !) + si symm='SEWARD', la donnee est lue + dans les donnees de seward (a condition + que les donnees de seward et de ijkloc + soient dans le meme fichier) 'SEWARD' + info1 file Info en entree ~Info + mono1 file Mono en entree ~Mono + ijcl1 file ijcl en entree ~ijcl + inporb orbitales locales symetriques INPORB + mem memoire demandee en Mo 500 + ycdloc creation des files ijclloc* pour + excci T + ycd T : genere des fichiers (ijclloc, Infoloc, Monoloc) + pour enchainer sur casdi + il faut renommer les files ijclloc, Infoloc, Monoloc + en ijcl, Info, Mono F + ycl1 (si ycd) T : ecriture en clair + sur IJCLLOC F + + diff --git a/Manuals/inserorb_emploi b/Manuals/inserorb_emploi new file mode 100755 index 0000000..23c28ad --- /dev/null +++ b/Manuals/inserorb_emploi @@ -0,0 +1,46 @@ +! +!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! +! lit deux fichiers d'obitales sur orbin1 et orbin2 +! choisit des orbitales dans un et l'autre fichier pour creer un +! troisieme fichier +! orthogonalise par Schmidt les secondes au premieres +! fichiers lus : orbin1 et orbin2 +! les ecrit sur orbout +!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! +! +donnees : + &insor + orbin1='nom_fich_1' + orbin2='nom_fich_2' + orbout='nom_fich_sortie' + / + +puis une suite de lignes de 3 nombres entiers + +is1 if1 n1 [label=****] +is2 if2 n2 [label=****] + +ou : + +la ligne numero i (isi ifi ni) definit l'orbitale i du fichier orbout +isi est la symetrie de l'orbitale +ifi est le fihier ou elle est a lire (orbin1 ou orbin2) +ni est son numero dans la symetrie, dans le fichier lu + +Les symetries doivent arriver en ordre + + +Contraction des donnees +On peut donner plusieurs ligne a la fois. Par exemple : +la donnee : +2 1 3-6 +genere les lignes : +2 1 3 +2 1 4 +2 1 5 +2 1 6 + +Donnees des labels : +Si label= n'est pas donne a la fin de la ligne, le label est lu dans le +fichier des orbitales +Sinon, le label est pris dans les donnees diff --git a/Manuals/iternat_emploi b/Manuals/iternat_emploi new file mode 100755 index 0000000..1a8ed62 --- /dev/null +++ b/Manuals/iternat_emploi @@ -0,0 +1,112 @@ + + # ##### ###### ##### # # ## ##### + # # # # # ## # # # # + # # ##### # # # # # # # # + # # # ##### # # # ###### # + # # # # # # ## # # # + # # ###### # # # # # # # + + + Programme d'optimisation d'orbitales moleculaires par moyenne + d'orbitales naturelles. + + Le programme est un script ecrit en kshell + + + UTILISATION + + + 1) Appel du programme + On fait tourner une chaine molcas ordinaire, jusqu'a obtenir des + orbitales moleculaires. par exemple : + + molcas run seward + molcas run scf + molcas run rasscf + molcas run rasread + + puis on doit rajouter les 2 lignes : + + cp $Project.RasOrb INPORB + iternat < iter_in + + ou : - le script iternat doit etre dans le path + - le fichier de donnees iter_in contient : + + NITER + 10 (nombre max d'iterations sur les OM) + MOTRA + motra.in (fichier de donnees de motra) + MOLCSD + molcsd.in (fichier de donnees de molcsd) + NATU + natu.in (fichier de donnees de naturalt) + MOLCSDX + /work0/daniel/babel/exe/molcsd (programme molcsd a executer) + CASDETX + det16s (programme casdet a executer) + CASDIX + di16s (programme casdi a executer) + NATUX + naturalt (programme naturalt a executer) + FIN + + + + 2) Conditions de fonctionnement + on doit - avoir necessairement la ligne : + export Project WorkDir CurrDir + - appeler Project, WorkDir et CurrDir par ces noms-la, + avec ces orthographes + - avoir n fichiers de donnees pour l'ensemble casdet/casdi, + si on optimise les orbitales sur n calculs differents. + - ces fichiers doivent OBLIGATOIREMENT s'appeler + cdin1, cdin2 ... cdinn + - chaque fichier cdini ressemble a : + + &cdfil prefix='co.' / + &cd noac=2,nelac=2,numac=3,6,is0=1,ms2=0,gener='DDCI' / + &cdifil prefix='co.' / + &dav nessai=0,iternat=0 / + + en particulier les donnees nessai=(0,1, ou 2) et + iternat=0 sont OBLIGATOIRES. + + - avoir des donnees pour motra et molcsd + - avoir un fichier de donnees pour naturalt. Ce fichier doit + s'appeler $Project.natu. par exemple : + + &natfil prefix='co.', / + &mixdat + nsym=2,metat=1,1,coef=0.5,0.5,ymolcas=t, + ywrm=t, ywrn=t,ngel=2,0,0,0,ndel=2,0,0,0, / + seuil=1.d-6 + (voir plus bas les donnees de naturalt) + - les fichiers ijnam et ijcl pour casdet/casdi doivent + s'appeler Project.ijnam et Project.ijcl (dans l'exemple ici : + co.ijcl et co.ijnam). + + + 3) Interventions sur le script iternat : + PATH=$PATH: ... : mettre dans le path casdet, casdi et naturalt + alias molcas=$MOLCAS/ksh/molcas.ksh (a changer eventuellement) + + + 4) Donnees de Naturalt + &mixdat + nsym= nombre de calculs casdet/casdi en parallele (M caluls, M fichiers + cdin) + netat=m,n,p,... nombre de val/vect propres par calcul + (nsym valeurs donnees, pour N=m+n+p+... val/vect propres) + metat= numeros des racines dans chaque calcul + (m+n+p+... valeurs) + coef= m+n+p+... valeurs : coefficients relatifs de chaque val/vect propre + ymolcas=t, + ngel= donnees "FROZEN" de motracsd + ndel= donnees "DELETE" de motracsd + yw... donnees pour l'impression + seuil= (seuil de convergence. (= recouvrement max des orbitales) + defaut=1.d-4) + + + diff --git a/Manuals/lewis_emploi b/Manuals/lewis_emploi new file mode 100755 index 0000000..fd83fc4 --- /dev/null +++ b/Manuals/lewis_emploi @@ -0,0 +1,544 @@ +**************************************************************************** +lewis lewis lewis lewis lewis lewis lewis lewis lewis lewis +**************************************************************************** + +Fabrication d'orbitales locales d'essai sans calcul SCF prealable + +Files to be read : - molcost files: Info and Mono + - if necessary (see data), + an orbital file (RasOrb, ScfOrb...) + - A molden file corresponding to this study + (facultative, if you want to get a molden file of + localised orbitals). This model file can be + scf.molden, ras.molden, guess.molden, etc... + +output files : - LOCORB + (Local symmetrical Orbitals written in + symmetrised AO's (to be transferred to further steps)) + - $Project.lewis.molden : corresponding molden file + +Other orbital files, corresponding to molden output files: + - LEWORB_LOC + (Local symmetrical Orbitals written in + desymmetrised AO's) + - LEWORB_LOCLOC + (Local non symmetrical Orbitals written in + desymmetrised AO's) + - $Project.lewis.LOC.molden : corresponding molden file + +Generalities: + In general, a lot of run will be necessary to build the data + The program is not time consuming, and needs small input files + It is convenient to copy these files to a local directory. + +I. +############## +Preliminairies +############## + +design the molecule, with atom names. + + + + + +II. +############## +Data 1 +############## + + + + + +-------------------- +1. namelist &lewis +------------------- + + &lewis + prefix='locbenzfe-CAS_7-5.', + scforbin=' ', ' ' --> no ScfOrb nor RasOrb file + 'name_of_Orb_File' + +--------------------------- +If scforbin/=' ': + ref_inac= nsym*0 nsym integers (nsym is the number of + symmetries of the problem) + = nb of inactive occupied orbitals in + input ScfOrb or RasOrb data + ref_act= nsym*0 nsym integers. = nb of active orbitals in + input RasOrb data +--------------------------- +Facultative data: + + symm='y x', read from as given is seward + info file + nprint 0 print level + ychol F T: cholesky calculation + + + Fermi0 nsym*0 fermi level. If not given, is computed + by reading input file ScfOrb or RasOrb + + / + + + + + +III. +############## +Data 2 +############## + +Suite of data after the "/" of namelis lewis. +The suite of data ends by a line with a slash: +"/ " + +Each line begins with a keyword +The different keywords are: +BOND, C, B, DS1, DP1, D2, D3, T, GROUP, STOP + +STOP: Read data and treat them until "stop" is encountered + + + + +-------------------- +III.1. Get information about connectivity + This data has no influence on the calculation. It only give informations + concerning connectivity that help to write the data. +-------------------- + +keyword: BOND + +example +BOND C C 1.6 +BOND C H 1.2 + +writes all pairs (Cn,Cm) where n,m ar numbers for which the bond length +Cn-Cm < 1.6 gives C-C bonds +idem for Cn-Hm < 1.2 gives C-H bonds + + + + + + +------------------------------------------------------ +III.2. Give details of Connectivity data: Generating Orbitals +------------------------------------------------------ + +One data per line + +c C1 +b C1-C2 +DP1 AT1 AT2 AT3 +... + + + + + +================================= +III.2. A. 1-center orbital: +Occupied Orbital, Virtual Orbital +================================= + +----------------- +CORE: keyword "C" +----------------- + +c C1 1s core of C1 atom +C FE 1s core of FE atom +c FE;shell=1s(2) 2s core of FE atom +c FE;shell=2px(1) 2px core of FE atom +c FE;shell=2p(1) 2px,2py,2pz cores of FE atom + +----------------- +other than core: Same syntax as for "CORE" +----------------- + +O FE;shell=1s(3) defines 3s of Fe as doubly occupied orbital + but not labeled as "core" +V FE;shell=3D1+(1) defines 3d1+ of Fe as empty orbital + +T C1;shell=1s(3),label='G' generates the 3s diffuse of atom C1 and freeze it + + + +----------------- +multiple data: +----------------- + +c c* 1s core of all Cijk atoms, where ijk are numbers + (not letters!) +C C[1 2 3] 1s core of all C1, C2, C3 + + + + +========== +III.2. BONDS +========== + +----------------- +keyword: "B" +----------------- + +b C1-C2 single C1-C2 bond +b C2-C2 single C2-C2 bond (two C2 atoms, due to symmetry) +b C1=C2 double C1-C2 bond Axis of pi bond + is given by a 3rd atom close to C1 or C2 + This 3rd atom is found by the program +b C1~C2 triple C1-C2 bond +b C1^C2 only pi bond. Axis of pi bond is found as for C1=C2 +b C1^C2;pi=0.,0.,1. only pi bond, axis of pi is 0.,0.,1. + +WARNING! To define a triple bond as 3 bonds (-,^,^), it is necessary +to change the suffix of BOTH pi orb: ex: +b C1^C2;pi=1.,0.,0.,pi=PIX +b C1^C2;pi=0.,0.,1.,pi=PIZ + (see in manual comments about additional data) + +----------------- +multiple data: +----------------- + +A"*" generates all Aijk. ijk are numbers (not letters!) + + +b c1-c* ; dist=1.6 generates all c1-cijk orbitals for which + dist(C1,C*)<=1.6 angstrom +b c*^n* ; dist=1.6 generates all cijk^Nlmn orbitals +b c*-h* ; dist=1.2 +b c*-c* ; dist=1.6 +b c[1 2 3]-c[4 5 6] generates C1-C4, C2-C5, C3-C6 + + + + + +=============== +III,2. C. Lone Pairs +=============== + +keywords: DS1 DP1 VP1 D2 D3 + + + +DS1 AT1 AT2 [AT3 [AT4]] one sigma lone pair on AT1. The direction is the + AT1-AT2 vector, or the sum of {AT1-ATi} vectors + + +DP1 AT1 AT2 AT3 [AT4] + + one pi lone pair on AT1. AT3 + / + AT2 AT3 AT2 + \ / or | + AT1(:) AT1(:) + + + 1. AT4 is not given: + the lone pair is orthogonal to the plane AT1 AT2 AT3 + (pi lone pair) + 2. + INPLANE, "DP1 AT1 AT2 AT3; INPLANE" + the lone pair is in the plane AT1 AT2 AT3 + (n lone pair) + 3. AT4 is given: + the lone pair is orthogonal to the plane AT2 AT3 AT4 + (example: NH3) +DP1 AT1 ; NVOIS=2 The neighbour atoms are not given, but found by the program + (they are the nearest atoms). nvois=2 or 3 + +VP1 AT1 AT2 AT3 [AT4] as DP1, with no electrons + + + +D2 AT1 AT2 [AT3] Two lone pairs (one sigma, one pi) + + 1. D2 AT1 AT2: AT2 - AT1 (:) sigma lone pair + search atom AT5, closest to AT2 + AT5 + \ + AT2 - AT1 + the pi lone pair is in + the plane, on AT1 + (n lone pair) + + 2. D2 AT1 AT2 AT3 + AT2 AT3 + \ / + AT1 + sigma lone pair (:) + + the pi lone pair is orthogonal + to the plane, on AT1 + + +D3 AT1 AT2 Three lone pairs (one sigma, two pi) + + (:) + AT2 - AT1(:) + (:) + +---------------- +multiple data: +---------------- + +DS1 C* N* ; dist=1.4 : search all C-N with dist<1.4, make sigma + Lone Pair on C + + + + + + +================ +III,2. D. GROUP +================ + +keyword: "GROUP" + + - Only if scforbin is given! + - give a set of orbitals + - the program computes the local corresponding + density matrix, diagonalises + - extracts local eigenvectors +syntax: + +GROUP +- 4 integers: noc,nvir,nact,nelac + (nb of occupied, nb of virtuals, nb of active orb, nb of active + electrons (total number, IN ALL symmetries) +- if nact>0: nact integers: position of active orb in local eigenvectors + this data is not straightforword. A first lewis run can be necessary + to find the correct numbers +- nAO character strings: (nAO is the nb of AO's that define the group) + name of atom (symmetrised list) + on the same line: n character strings: + shells corresponding to added orb +- END GROUP + +Note: noc+nvir+nact = nb of given orbitals + +example of GROUP data: (define pi orbitals of a C=C, as active) +group +1 1 2 2 (noc=1,nvir=1,(1 sigma, 1sigma*),nact=2,nelac=2) +1 8 (The 2 lines below define 8 AOs, it generates + 8 LOs, the active should be the first and + the last LOs) +C1 1S(2) 2PX 2PY 2PZ +C2 1S(2) 2PX 2PY 2PZ +end group + +Important remark: noc,nvir,nact and nelac are the TOTAL number of orbitals +and electron over ALL symmetries! + +example: 2 FE atoms, 5 el/atom, corresponding by symmetry + +group +0 0 10 10 +1 2 3 4 5 6 7 8 9 10 +FE 3d0(1) 3d1+(1) 3d1-(1) 3d2+(1) 3d2-(1) +end group + +5 orb given: 3d0(1) 3d1+(1) 3d1-(1) 3d2+(1) 3d2-(1) +but 10 active and 10 electrons! + + + + + + +========================= +III,2.E. ADDITIONAL DATA +========================= + +These data are added at the end of the lines: +"line" ; "additional data" +example: b C1~C2 ; label='A' + +different data: +label='A' the created orbitals are active +label='G' the created orbitals will be frozen +pi='PIX' (resp. 'PIY' 'PIZ') the created pi orbital + has an X (resp. Y Z) axis +shell='1s(2)' only for 1-center LOs + the shell is 2s instead of 1s default +nvois= / inline for "DP1" data: see DP1 +OCCONLY / VIRONLY for sigma or pi bonds: generates only + (bonding / anti-bonding) orbitals +suffix='SUFF' pi orbitals: replaces .PI suffix by .SUFF + +several additional data are separated by "," +o FE;shell=3d(2),label='A' + + + + +---------------------------------------------- +III.3. (UN)ACTIVATION of LOs , (UN)FREEZE LOs +after the "/" that ends the suite of data +---------------------------------------------- +Beta version! + +- transforms active LOs into non active, and non active into active. +- transforms frozen LOs into non frozen, and non frozen into frozen. +1. UN... replaces beginning of label: 'A_' or 'G' + --> 'x_' where "x" is given in data (O, T, or C) +2. reorder LOs to put actives and frozen into the right place + +data + +ACTI label='LAB',sym=SYM +where: +LAB is a substring of the label to be modified +(it is not necessary to give the entire label) +SYM is the symmetry of the orbital + +ACTI label='LAB',sym=SYM,equal +where: +if 'equal' is added at the end of the data, LAB is tested to be IDENTICAL to +the label to be modified. +the rest of data is the same + +UNAC label='LAB',sym=SYM,[newlabel='NEWLABEL'] +where: +difference with respect to ACTI: +NEWLABEL if A_--> x_ 'O', 'T', or 'C' (default 'O') + +UNAC label='LAB',sym=SYM,[newlabel='NEWLABEL'],equal +if 'equal' is added at the end of the data, LAB is tested to be IDENTICAL to +the label to be modified. + +FREEZE: like ACTI + +UNFREEZE: like UNACT + +Supplementary data: + all (ex: FREEZE label='LAB',sym=SYM,all) + freeze all orbitals containing strin "LAB" + (stops with error if "all" is not given and more tah one orbital is found) + + + + + + + +-------------------------- +III.4. RENAME +after the "/" that ends the suite of data +-------------------------- +Beta version! + +Change nature of OL by editing a file. + +Data: + +RENAME +keywork +END RENAME + +A. keyword=LIST or MOD + +a) if keywork=LIST: (first run) +The program generates a file RENAME_LIST with the rank and the +list of the Local Orbitals and stops + +b) edit file RENAME_LIST: + for example change the name of an orbital from O_... to A_... to + activate it. The unchanged orbitals can be removed from the list, since + the LO's are givent with their position in the orbital basis. + Save the file in RENAME_MOD + +c) if keyword=MOD + The program reads the file RENAME_MOD and ends the calculation, it takes + account of the modifications in the nature of orbitals. + + +example of data: +lewis << EOF + &lewis prefix='acetone.',symm='XY X',nprint=1,scforbin='acetone.RasOrb', + mprint=0,0,0,0,ref_inac=8,5,1,1,ref_act=0,0,0,2 / +D2 O1 C1 +b c*-h* ; dist=1.2 +b c*-c* ; dist=1.6 +b c1=O1 +C C* ; label='g' +C O* ; label='g' +/ +RENAME +mod +end rename +EOF + +B. keyword='STRING'= + +data: STRING string string1 string2 + +string: part of the label of the LO present if the label is to be modified +string1,string2: modification: string1 --> string2 + +example of data: +lewis << EOF + &lewis prefix='chaine.', / +c C* +b C1=C2 +b C1-H1 +b C1-H2 +b C2-H3 +b C2-H4 +/ +rename +string PI O_ A_ +end rename +EOF +(activate pi orbitals) + + + + +-------------------------- +III.5. COPY +-------------------------- +Copy of reference orbitals to the final localised orbitals. +N.B. They are not re-localised + +cp ; atom='AT1 [AT2]' ; shell='sh',label='ll',sym=is,num=nu,type='ty' + +where: +- sh= 1s, sh=2PX, sh=3D1+ ... for example +- ll='O', label='A', label='V' for occupied, active or virtual +- "is" is the symmetry of the MO +- nu=position of MO in its symmetry +- ty = type of the created LO as is appears in LOinfo, 5th column (CORE, + SIG,LP,ATOM,PI). No influence on the result. Is written in LOinfo + + +Falcultative: label (generated from num) + shell (see remark below) + + +Important remark concerning atom and shell + +These data permit to generate 1 or 2 AO name(s) [AT1 sh], [AT2 sh] +Once this AO was encountered, it is marked. At the end of the program, +all non-marked AOs are used to generate diffuse LOs. After generating all +LOs (and before generating diffuse orb), the number of marked AOs should +be equal to the number of generated LOs. + +If one wants to generate a LO with dominating weight on FE 3D1+ for example, +he does not want to create a diffuse FE 3D1+ at the end! +in this case, atom='FE',shell='3D1+' + +The AO [AT1 sh] must not be used in another bond! +It is in general the AO of dominating weight in the copied MO + +shell can be omitted, which simplifies a bit the problem. +In this case, the marked AO corresponds authomatically to the largest +coefficient of the copied MO. It is not a secure method! Verify that the +correct AO has been found! If not, the program gives in general an error. + diff --git a/Manuals/locas_emploi b/Manuals/locas_emploi new file mode 100755 index 0000000..d9dd52d --- /dev/null +++ b/Manuals/locas_emploi @@ -0,0 +1,70 @@ +locas : obtention d'orbitales optimisees par relocalisation d'orbitales + casscf + + variables necessaires : + Il faut avoir exporte les variables : molcas, PATH + (instruction: export molcas PATH) + +genere les donnees et appelle les programmes : + +rasscf +rasread +proj_scf +schmudort + +! en entree: +! liste de donnees (voir plus bas) +! un fichier d'orbitales locales non orthogonales de nom "NONORLOC" +! un fichier d'orbitales locales orthogonales de nom "INPORB" +! - le fichier INPORB va servir pour demarrer le RASSCF +! - le fichier NONORLOC sert a la fin pour relocaliser la solution +! trouvee par RASSCF +! Rem 1 : les orbitales de INPORB son necessairement orthogonales, +! mais il n'y a aucune condition pour NONORLOC. Rien n'empeche de +! recopier INPORB dans NONORLOC et de donner donc deux fois le meme +! fichier. +! Rem 2 : en general, INPORB est obtenu a partir de NONORLOC par +! orthogonalisation (par schmudort par exemple) +! +! Les labels des orbitales moleculaires sont indispensables. Ils +! determinent les orbitales actives, gelees, etc..., c'est-a-dire +! les classes pour l'orthogonalisation schmudort. Il sont lus dans +! inporb et doivent donc necessairement y figurer. +! +! en sortie: +! un fichier d'orbitales locales orthogonales INPORB2 +! +!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +Donnees: + 2 types : + + 1. une namelist &locas sans aucune donnee obligatoire + 2. &ras /, puis toutes les donnees pour rasscf, dont seules 3 sont + obligatoires. Elles seront lues sous cette forme par rasscf + + &LOCAS + data='AUTO' 'AUTO' lit quelques donnees d'un fichier de schmudorb + les donnees de schmudorb pilotent ainsi une grande partie de + x la suite du calcul + FERMI=0 par sym, nb d'orb occupees + (lu de schmudorb si data='AUTO') + frozen=0 donne par sym + (lu de schmudorb si data='AUTO') + delete=0 donne par sym + (lu de schmudorb si data='AUTO') + &ras / +symmetry + . +spin + . +nactel + . . . +ras1 + . +ras2 + . +ras3 + . + ... + diff --git a/Manuals/loccasscf_emploi b/Manuals/loccasscf_emploi new file mode 100755 index 0000000..e9b0af4 --- /dev/null +++ b/Manuals/loccasscf_emploi @@ -0,0 +1,88 @@ + + ******************************************************* + ======================================================= + LOCCASCF' + ======================================================= + ******************************************************* + +Local CASSCF + +The program executes a succession of steps + +1. Orbital transformation + - 2 possibilities: + - motra/molcost + - ijkl + +2. CASCI calculation + - casdet/casdi + +3. Density matrix calculation + - 2 possibilities: + - casdet/casdi (diagonalization of CAS+S) + - costnevpt/rodyall (contracted perturbation) + +4. Diagonalization of the Density Matrix --> natural Orbitals + locnats + +--> iterate: goto 1. + + + +Input Files: + One Electron Atomic Integrals prefix_One + Two Electron Atomic Integrals prefix_Two + Orbitals INPORB + +Output Files +LOCORB2 + + +Data: (case letters: compulsory) + &LOCCASSCF + Default + PREFIX + SYMM data SYMMetry of seward + transf IJKL IJKL to run ijkl (step 1.) + MOTRA to run motra + CHOLESKY + + density RODYALL RODYALL to perform contracted perturbation + CASDI to perform CAS+S + + nmat 1 number of different matrices (= nb of + symmetries...) + netat nmat*1 number of states for each one of the nmat + matrices + metat rank of the nmat states + coef n*1. + +example: 2 singlets (1st and 2nd), 3 triplets (2n,3rd and 5th) + weights: 2.,1., 1.,0.5,2. +nmat=2,netat==2,3,metat=1,2, 2,3,5, coef= 2.,1., 1.,0.5,2. + + frozen,delete nsym*0 + maxit 30 max number of iterations + conv 1.d-6 Energy convergence + + inac nsym*0 nb of core orbitals in each symmetry + act nsym*0 nb of active orbitals in each symmetry + nactel 0 nb of active electrons + + casdet 'casdet' + casdi 'casdi90' + costnevpt 'costnevpt' + rodyall 'rodyall + locnat 'locnat' + ijkl 'ijkl' + reordens 'reordens' +(location of the programs to be used) + + + &casdi + Among the data of namelist &dav of casdi: + gener,ms2,is0,iprec,niter,syspin + + nessai= two different data for the corresponding one of &dav + nessai: nessai of the first iteration of casdi (default: 0) + nessai2: nessai of the other iterations of casdi (default: 2) diff --git a/Manuals/locnat_emploi b/Manuals/locnat_emploi new file mode 100755 index 0000000..c7266c1 --- /dev/null +++ b/Manuals/locnat_emploi @@ -0,0 +1,22 @@ + &locn + + obligatoires : + prefix= + orbv='orbitales_d'entree' + orbn='orbitales_de_sortie' + + facultatives + noac,numac : nb d'orbitales actives, numeros des orbitales actives + noac et numac sont retrouvees a partir des donnees de la loclisation + (les orbitales actives sont reperees par leur label A_...) + Si ca ne correspond pas a ce qu'on veut, donner noac et numac (c'est meme conseille !) + ngel= donnees frozen de motra + ndel= donnees delete de motra + nmat= nombre de fichiers de matrices densite + netat (1,nmat) nombre de vecteurs consideres dans chaque fichier + densmat (1,nmat) noms des fichiers + metat numeros des vecteurs consideres + coef poids sur les diff vecteurs + ex 3 fichiers, fich1 vect 2 ; fich2 vect 3 et 4 ; fich3 vect 1 + nmat=3,netat=2,4,1,metat=2, 3,4, 1, + coef=1.,0.5,0.5, 1., 0.7, (par ex) diff --git a/Manuals/modif_LOCORB_emploi b/Manuals/modif_LOCORB_emploi new file mode 100755 index 0000000..a85ca1c --- /dev/null +++ b/Manuals/modif_LOCORB_emploi @@ -0,0 +1,34 @@ +! +!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! +! Lit locorb +! Le modifie et le reecrit LOCORB_new +! +! Donnees +! &modif_LOCORB +! prefix='pref.' +! string='T_' on va traiter les orbitales dont le nom +! contient "T_" +! old='T_',new='G_ Dans ces orbitales, on transforme 'T_' en "G_" +! +! On donne une serie de namelists &modif_LOCORB. Les modifs se font +! sequentiellement. +! Dans la 1ere namelist, on ajoute les donnees : +! locorb='FeL2.LocGCasOrb' nom du fichier locorb en entree (def: LOCORB) +! la derniere namelist est : string=' ', qui indique la fin des donnees +! +! +! en entree : LOCORB, DOLO_MOTRAIN, SCH_FERMI +! en sortie : LOCORB_new, DOLO_MOTRAIN_new, DOLO_MOLCOSTIN_new +! +! Exemple de donnees : +! modif_LOCORB << EOF +! &modif_LOCORB string='T_',old='T_',new='G_', +! locorb='FeL2.LocGCasOrb',prefix='FeL2.' / +! &modif_LOCORB string='O_',old='O_',new='G_' / +! &modif_LOCORB string='PI',old='G_',new='O_' / +! &modif_LOCORB string='G_N2.S.LP01',old='G_',new='O_' / +! &modif_LOCORB string='G_N9.S.LP01',old='G_',new='O_' / +! &modif_LOCORB string='G_N18.S.LP01',old='G_',new='O_' / +! &modif_LOCORB string='G_N30.S.LP01',old='G_',new='O_' / +! &modif_LOCORB string=' ', / +!EOF diff --git a/Manuals/modif_fermi_emploi b/Manuals/modif_fermi_emploi new file mode 100755 index 0000000..e193c75 --- /dev/null +++ b/Manuals/modif_fermi_emploi @@ -0,0 +1,32 @@ + +============================================================== + modif_fermi +============================================================== + +deplace des orbitales +1. depuis les occupees vers les virtuelles +2. depuis les virtuelles vers les occupees + + +En entree : + +fich1 : fichier d'orbitales a modifier (en clair, format molcas) +SCH_FERMI : fichier cree par schmudorb, qui donne le niveau de Fermi + CE FICHIER RESORTIRA MODIFIE DE modif_fermi + + +En sortie : + +fich2 : fichier d'orbitales reordonne (en clair, format molcas) +SCH_FERMI : qui a ete modifie + + +En donnees : + + &modif_fermi fich1='FICH1',fich2='FICH2', + v_o='label1;s;n','label3;s;n','label3;s;n',... + labels des orbitales transferees depuis les virtuelles vers + les occupees. + avec : s=symetrie de l'orbitale transferee (1 caractere) + n=numero de l'orbitale dans sa symetrie (car pour un meme + label il peut y avoir plusieurs orbitales) diff --git a/Manuals/molcost_emploi b/Manuals/molcost_emploi new file mode 100755 index 0000000..2ebde1c --- /dev/null +++ b/Manuals/molcost_emploi @@ -0,0 +1,124 @@ + + *********** + * MOLCOST * + *********** + +Interface between molcas and the toulouse programs + +I What does the program? + +1. After seward + - generates an formatted Info file containing various information about + the system studied + + - generates an unformatted Mono file containing one-electron operators + +2. After motra + generates the same files, with Molecular Orbital information if files + TraOne and TraInt exist. + + + +II. DATA + +a namelist + + &cost + prefix='Project.' (required data) + molcas= version of molcas: 4 or 5 or 54 (default 0: in that case, molcost + analizes the OneInt file to get the molcas value) + ycl= T: generates a formatted file of MO integrals (default F) + yao= T: reads and interfaces the AO integrals (default T) + ymo= T: reads and interfaces the OM integrals (default T) + ybas= T: reads and interfaces the COM file (default F) + ysym= T: the one-electron operators in the Mono file are + square matrices + F: the one-electron operators in the Mono file are + trianguler matrices (default F) + (see in paragraph IV the form of file Mono) + fermi= 0: fermi level (number of occupied orbitals in each symmetry) + (required if molcost runs after motra) + ychol= F: T in Cholesky calculation + + + +III. Aspect of the Info file (example of ethylene molecule) ("prefix"Info) + +============================================= +File: C2H4.Info +created by molcost +date: +============================================= + &cost_AO + nsym=8 + isym= 6, 6, 3, 3, 1, 1, 0, 0, + norb= 20 + its= + 1,2,3,4,5,6,7,8, + 2,1,4,3,6,5,8,7, + 3,4,1,2,7,8,5,6, + 4,3,2,1,8,7,6,5, + 5,6,7,8,1,2,3,4, + 6,5,8,7,2,1,4,3, + 7,8,5,6,3,4,1,2, + 8,7,6,5,4,3,2,1, + enuc= 33.382397244601 + natom= 2 + coor= + 1.2651715494, 0.0000000000, 0.0000000000, + 2.2159663935, 1.8187044168, 0.0000000000, + atom= + 'C ','H ', + label= + 'C 1s ','C 1s ','C 1s ','C 2px ','H 1s ', + 'H 1s ','C 1s ','C 1s ','C 1s ','C 2px ', + 'H 1s ','H 1s ','C 2py ','H 1s ','H 1s ', + 'C 2py ','H 1s ','H 1s ','C 2pz ','C 2pz ', + / + +if Info is created after motra, a second namelist appears: + + &cost_MO + nsym=8,norb= 20,noc= 8 + itsym= + 1,1,1,2,2,3,4,5,1,1,1,2,2,2,2,3,3,4,4,6, + isym= 6, 6, 3, 3, 1, 1, 0, 0, + frozen= 0, 0, 0, 0, 0, 0, 0, 0, + enuc= 0.333823972446E+02 + ycl=F + &end + + + +IV. How to read the unformatted Mono file ("prefix"Mono) + + open(1,file=...) + + 1. ysym=F (one-eletron operators in triangular form) + + a. seek the label: + - One-electrons integrals: label= '==ONEINT MATRIX (TOTAL)' + - Overlap matrix: label= '==OVERLAP MATRIX (SYM)' + + character*80 aa + do + read(1) aa + if(trim(aa).eq.label) then + + b. read the operator + - read the length of the operator, the number of symmetries, + the number of orbitals by symmetry + read(1) len,nsym,(isym(k),k=1,nsym) + - read the operator + read(1) hmono(1:len) + endif + enddo + +other one electron operators must be added... + + + + + + + diff --git a/Manuals/naturalt_emploi b/Manuals/naturalt_emploi new file mode 100755 index 0000000..2d9859d --- /dev/null +++ b/Manuals/naturalt_emploi @@ -0,0 +1,20 @@ + NATURALT + +Donnees : + + &natfil prefix='...' / + &mixdat + nsym= nombre de calculs casdet/casdi en parallele (M caluls, M fichiers + cdin) + netat=m,n,p,... nombre de val/vect propres par calcul + (nsym valeurs donnees, pour N=m+n+p+... val/vect propres) + metat= numeros des racines dans chaque calcul + (m+n+p+... valeurs) + coef= m+n+p+... valeurs : coefficients relatifs de chaque val/vect propre + ymolcas=t, + ngel= donnees "FROZEN" de molcost + ndel= donnees "DELETE" de molcost + yw... donnees pour l'impression + seuil= (seuil de convergence. (= recouvrement max des orbitales) + defaut=1.d-4). Si la convergences est atteinte, un fichier est cree + diff --git a/Manuals/noscf_emploi b/Manuals/noscf_emploi new file mode 100755 index 0000000..02c37a5 --- /dev/null +++ b/Manuals/noscf_emploi @@ -0,0 +1,97 @@ +noscf : obtention d'orbitales optimisees par iterations sur la + matrice densite. + +genere les donnees et appelle les programmes : + +- motra +- molcost ou molcsd +- casdet +- casdi +- locnats + +puis itere jusqu'a convergence + +Utilisation : +cp "Orbitales" INPORB (avec schmud : cp LOCORB INPORB) +export CurrDir WorkDir Project +export PATH=$PATH:"lieu_de_cost"/bin +noscf donnees (ET NON i"noscf < donnees !!!) +orbitales de sortie : LOCORB2 + + + +Donnees : + &nofil PREFIX= + / + &no + data=' ' 'AUTO' lit quelques donnees d'un fichier de schmudorb + les donnees de schmudorb pilotent ainsi une grande partie de + la suite du calcul (defaut ' ') + FERMI=0 par sym, nb d'orb occupees + (lu de schmudorb si data='AUTO') + MOLCAS=5 (ou 4) + frozen=0 donne par sym + (lu de schmudorb si data='AUTO') + delete=0 donne par sym + (lu de schmudorb si data='AUTO') + maxit=50 nb max de cycles motra...locnats + r=' > ' (les fichiers de sortie sont dans la + directory de travail (sinon r=' # ') + nmat=1 nb de fichiers de mat densite + netat= nb d'etats par fichier (nmat donnees) + metat= numeros des etats demandes (Somme(netat)) donnees + coef=1.d0 coefs des etats (Somme(netat)) donnees + stop=' ' ('MOLCOST' pour arret apres molcsd, donne la numerotation + des orbitales) + seuil=1.d-4 seuil de convergence du processus (sur les elements des + blocs exterieurs de la matrice densit) + / + &casdi (nmat fois) + syspin='0', + nessai=0, + iprec=6 + noac=0, (lu de schmudorb si data='AUTO') + numac= (lu de schmudorb si data='AUTO') + NELAC=0, (Attention, non lu ! A donner imperativement) + gener='CAS+S', + is0=1 + ms2=0 + / + +les variables en majuscules cont celles obligatoires +les valeurs donnees sont celles par defaut + + +Donnees supplementaires: + +noscf genere, a partir de &nofil, &no et &casdi les donnees pour +motra, molcost, casdet, casdi et locnats. + +Il peut arriver qu'on veuille donner a un de ces programmes un donnee +supplementaire. Par exemple, si on veut donner la donnee twvec a &dav +pour le 2eme calcul casdi (alors nmat >=2). +On ajoute a la fin du fichier : +DAV2 + twvec=0.01 +FIN + +explication : DAV pour &dav, 2 pour 2eme casdi + la (les) donnee(s) + FIN (de l'ajout a &dav) +la ligne est ajoutee avant la fin de namelist "/" + +Rem : si on veut ajouter un vecteur d'essai en donnee +DAV1 + nessai=1 + / + &ess file='ESSOUT0' +FIN +le fichier de donnees devient apres rajout des 3 lignes : + &dav + ... + ... + nessai=1 \ + / > 3 lignes supplementaires + &ess file='ESSOUT0' / + / (deja present, donc pas a rajouter) + diff --git a/Manuals/oldorb_emploi b/Manuals/oldorb_emploi new file mode 100755 index 0000000..6235a77 --- /dev/null +++ b/Manuals/oldorb_emploi @@ -0,0 +1,17 @@ + +============================================================================= +============================================================================= + + oldorb oldorb oldorb oldorb + +============================================================================= +============================================================================= + +Transforme les fichiers d'orbitales molcas 6 dans le format des versions +precedentes + + +En entree : les orbitales molcas 6, sous le nom INPORB +En sortie : les orbitales anciennes versions, sous le nom OUTORB + +pas de donnees diff --git a/Manuals/proj_scf_emploi b/Manuals/proj_scf_emploi new file mode 100755 index 0000000..f72c8e6 --- /dev/null +++ b/Manuals/proj_scf_emploi @@ -0,0 +1,59 @@ +PROGRAMME DE PROJECTION D'UN JEU D'ORBITALES DANS L'ESPACE D'UN AUTRE +JEU D'ORBITALES + +Exemple : on a un jeu d'orbitales locales (occ, virt) + et un jeu d'orbitales SCF (occ, virt) + on projette les occupees locales dans les scf + on projette les virt locales dans les scf + on reorthogonalise + ainsi, on a un jeu d'orbitales locales de qualite SCF + + +ENCHAINEMENT DES PROGRAMMES + +schmudorb +proj_scf +cp NONORLOC_scf NONORLOC +schmudort + +Ce que fait le programme : + +schmudorb cree un jeu d'orbitales locales non orthogonales (ds le fich NONORLOC) + +proj_scf projette sur les orb scf (les met dans NONORLOC_scf, +ecrit comme NONORLOC) +cp NONORLOC_scf NONORLOC : on ecrase le fichier primitif +les fichiers NONORLOC et NONORLOC_scf sont exprimes dans une base d'OA +orthogonalisees (OAO) +le fichier contenant les OAO s'appelle "OAO" +les 3 fichiers OAO, NONORLOC et NONORLOC_scf sont donnes en clair sous +la forme des fichiers d'orbitales de Molcas, avec des labels + +schmudort on orthogonalise + + +EN ENTREE +fichiers OAO et NONORLOC + un fichier d'orbitales scf ou casscf en orbitales delocalisees + (ScfOrb ou RasOrb), format en clair, orbitales Molcas. +EN SORTIE +fichier NONORLOC_scf, de meme type que NONORLOC + +DONNEES + + &pscf + prefix= + calcul='SCF' CASSCF : il y a des orbitales actives + fermi=0 donnee facultative si calcul='SCF' + obligatoire si calcul='CASSCF' + act='A_' alors les actives sont reconnues par le fait que + leur label commence apr A_ + aucune autre donnee n'est testee pour le moment ! + scf=' ' fichier contenant les orbitales de reference + (qui definissent les espaces sur lesquels on projette) + ' ' : alors le nom est prefixScfOrb + si calcul='CASSCF', changer la valeur de scf! + + / + + diff --git a/Manuals/schmudorb_emploi b/Manuals/schmudorb_emploi new file mode 100755 index 0000000..ed720b9 --- /dev/null +++ b/Manuals/schmudorb_emploi @@ -0,0 +1,901 @@ +****************************************************************************** +schmudorb/schmudort : generalites + +schmudorb : permet de construire un jeu d'orbitales locales non orthogonales + +schmudort: effectue une orthogonalisation hierarchisee des orbitales de + schmudorb + classe 1 : (prioritaire) actives + classe 2 : coeur + classe 3 : les autres +****************************************************************************** + +*********************************** +schmudorb/schmudort : mode d'emploi +*********************************** + +FICHIERS : Fichier de molcost (integrales en base atomique, matrice de recouvrement,...) + des orbitales ScfOrb ou autre (donc, un calcul d'integrales, seward si molcas) + + +=============================================================================================== +************************ +DONNEES GENERALES +************************ + +1) DONNEES DE DEBUT : + &smufil prefix='debut_des_noms_de_fichier' / + + + &smu nprint= 0,1,2 (def 0) + orb='fichier_d'orbitales_scf' (donnee obligatoire) + / + +2) DONNEES CONCERNANT L'ORTHGONALISATION DE LA BASE D'ORBITALES ATOMIQUES +exemple : + &oao / +c1 1s(1) pr=1 +c1 1s(2) pr=2 +c1 2px(1) pr=2 +c1 2py(1) pr=2 +c1 2pz(1) pr=2 +o1 1s(1) pr=1 +o1 1s(2) pr=2 +o1 2px(1) pr=2 +o1 2py(1) pr=2 +o1 2pz(1) pr=2 +fin + + +priorite des orbitales dans l'orthogonalisation hierarchisee +sur cet exemple : + c1 1s(1) pr=1 : atome de nom c1 (dans les donnees du progr d'integrales) + 1s(1) 1ere orbitale de nom 1s qui apparait dans les OA + pr=1 priorite 1 (orthogonalisee en priorite) + o1 2ps(2) pr=2 atome o1, 2eme orb 1s (donc orb 2s), priorite 2 + o1 2px(1) pr=2 atome o1, 1ere orb 2px (donc orb 2px), priorite 2 + etc... + remarques : + - Toutes les lettres sont indifferemment en majuscules ou en + minuscules + - on voit qu'on a vraiment interet a utiliser des bases d'ANO + pour que par ex 2px(1) corresponde bien a l'orbitale de valence + 2px + - on donne autant de priorites qu'on veut + - les orbitales non donnees sont de priorite pmax+1 + + +3) DONNEES DEFINISSANT LES ORBITALES MOLECULAIRES LOCALES + &orb / +c_c c1 1s(1) (1 0) +c_o o1 1s(1) (1 0) +o_odbt o1 1s(2) 2pz(1) (1 0) ref 1 +o_cdbt c1 1s(2) 2pz(1) (1 0) ref 2 +o_co c1 1s(2) 2pz(1) : o1 1s(2) 2pz(1) (3 1) proj 1,2 +o_pico c1 2px(1) 2py(1) : o1 2px(1) 2py(1) (2 2) +fin + +c'est la donnee des liaisons : + +Analyse de la donnee "c_o o1 1s(1) (1 0)" : +c_o : max 12 caracteres. c="coeur". "_" obligatoire. puis 10 caracteres au choix + pour caracteriser la liaison. l'orbitale de liaison obtenue sera + caracterisee sous ce label (c_o) dans la suite des programmes. +o1 1s(1) : comme dans &oao +(1 0) : occupations : 1 occupee, 0 antiliante +(on decrit ici le coeur 1s de o1) + +Analyse de la donnee "o_odbt o1 1s(2) 2pz(1) (1 0) ref 1" : +on decrit le doublet de o1 +o="orbitale" (en general, orbitale de valence) + 1s(2) 2pz(1) : orbitales qui le decrivent (2eme s (la 1ere etait pour le + coeur), 1ere pz) +(1 0) : occupations : 1 occupee, 0 antiliante +ref 1 : voir plus loin + +Analyse de la donnee "o_pico c1 2px(1) 2py(1) : o1 2px(1) 2py(1) (2 2)" : +systeme pi de CO +les atomes et leurs orb sont donnes a la suite les uns des autres, separes par +":". Il n'y a pas de limite au nombre d'atomes, ni au nombre d'orbitales. +Il y a 2 systemes pi, un x, un y +(2 2) : 2 liantes, 2 anti-liantes + +o_co c1 1s(2) 2pz(1) : o1 1s(2) 2pz(1) (3 1) proj 1,2 +systeme sigma de CO +il y a un probleme. On donne ici toutes les orb de valence de CO, donc on va +generer : 1. la liante et l'A-L CO + 2. Le doublet O + 3. Le doublet C +Pb1. on avait deja construit les doublets. On les a 2 fois +Pb2. toute cette partie sigma est melangee +---> solution : +on va donc eliminer les 2 doublets contenus dans o_co par soustraction de +o_odbt et o_cdbt. On projette donc les orbitales obtenues ici sur +o_odbt et o_cdbt pour faire cette soustraction. +D'ou les donnees proj 1,2 et ref 1 , ref 2 +proj 1,2 signifie qu'on soustrait les references 1 et 2. Il n'y a pas de +limite au nombre de proj et de ref +rem : l'occupation donnee (3 1) est AVANT projection + + +PROJECTIONS ET REFERENCES + +1. Quand en a-t-on besoin ? +2. Orbitales a la fois ref et proj +3. syntaxe et regles + +1. Quand en a-t-on besoin ? + +On en a besoin chaque fois qu'une orbitale inclut une orbitale deja donnee + +.Exemple 1 : H2O + +H1 + \ (Un doublet hors du plan n'est pas represente) + O : + / +H2 + +Donnee des 2 doublets O +o_doub o 1s(2) 2p(1) (2 0) ref 1 (2 occ) +Donnees des liaisons CH +o_oh1 o 1s(2) 2p(1) : h1 1s(2) 2p(1) (3 1) proj 1 (2 Doub, 1 Liante, 1 A-L) +o_oh2 o 1s(2) 2p(1) : h2 1s(2) 2p(1) (3 1) proj 1 (2 Doub, 1 Liante, 1 A-L) + +Chaque liaison CH genere necessairement les 2 doublets. On les soustraits +par projection sur o_doub + + +.Exemple 2 : donnees avec symetrie + +C2 - C1 + \ + C4 + | ---------> axe de symetrie + C4 + / +C2 - C1 + +Donnee des 2 liaisons C1-C2 +o_C1C2 c1 1s(2) 2p(1) : c2 1s(2) 2p(1) (2 2) (2, car 2 liaisons sont definies) +Donnee des 2 liaisons C1-C4 +o_C1C4 c1 1s(2) 2p(1) : c4 1s(2) 2p(1) (3 3) (3, car 3 liaisons sont definies: + 2 C1-C4, et C4-C4, puisque toute + la valence de C4 est presente) +On a alors un systeme delocalise sur C1-C4-C4-C1 +Si on veut avoir ne liaison C4-C4 localisee, il faut la donner: +o_C4C4 c4 1s(2) 2p(1) (1 1) ref 1 +...et la soustraire des C1-C4 +o_C1C4 c1 1s(2) 2p(1) : c4 1s(2) 2p(1) (3 3) proj 1 + +2. Orbitales a la fois ref et proj + +.Exemple + + C3 - C2 doublet N: + / \ o_n n 1s(2) 2p(1) (1 0) ref 1 +C4 N : liaison C2-N: (contient 1 Liante, 1 A-L, le doublet) + \ / o_c2N C2 1s(2) 2p(1) : N 1s(2) 2p(1) (2 1) ref 2 proj 1 + C5 - C6 liaison C6-N: + o_c6N C6 1s(2) 2p(1) : N 1s(2) 2p(1) (2 1) ref 3 proj 1 + Autres liaisons sigma: + o_c2c3 C2 1s(2) 2p(1) : c3 1s(2) 2p(1) (1 1) ref 4 + o_c3c4 C3 1s(2) 2p(1) : c4 1s(2) 2p(1) (1 1) ref 5 + o_c4c5 C4 1s(2) 2p(1) : c5 1s(2) 2p(1) (1 1) ref 6 + o_c5c6 C5 1s(2) 2p(1) : c6 1s(2) 2p(1) (1 1) ref 7 + systeme pi: +o_pi n 1s(2) 2p(1) : c2 1s(2) 2p(1) : c3 1s(2) 2p(1) : & +c4 1s(2) 2p(1) : c5 1s(2) 2p(1) : c6 1s(2) 2p(1) (11 9) proj 2,3,4,5,6,7 + explication: le systeme pi est defini comme: + [toutes les liaisons de valence des C et N] + - [toutes les liaisons sigma (les ref 2 a 7)] + on doit arriver a 3 Liantes et 3 A-L + les ref 2 a 7 contiennent 2+2+1+1+1+1 L, 1+1+1+1+1+1 A-L, + soit 8 et 6 orb. On doit donc donner (11 9) pour arriver a (3 3) + ATTENTION: on considere que les ref 2 et 3 ont 2 Liantes, malgre + leur projection sur ref 1. On projette ainsi aussi implicitement + sur ref 1. + +3. syntaxe et regles + - bien mettre un blanc avant et apres ref ou proj + - on peut ecrire ref 3 proj 1 ou proj 1 ref 3 + - l'ORDRE des orbitales n'importe pas. Les donnees sont mises en memoire, + puis traitees en bloc a la fin. Les ref peuvent donc arriver avant ou + apres les proj correspondantes. + + +=============================================================================================== + +************************ +SIMPLICATION DES DONNEES +************************ +(Valable pour &OAO et &ORB) + + + a) 2p(n) = 2px(n) 2py(n) 2pz(n) + 3d(n) = 3d0(n) 3d1+(n) 3d1-(n) 3d2+(n) 3d2-(n) + etc... + les donnees precedentes deviennent alors : + &oao / +c1 1s(1) pr=1 +c1 1s(2) pr=2 +c1 2p(1) pr=2 +o1 1s(1) pr=1 +o1 1s(2) pr=2 +o1 2p(1) pr=2 +fin + + b) c[1 1 2 2] 1s(2) pr=2 genere 4 lignes : + c1 1s(2) pr=2 + c1 1s(2) pr=2 + c2 1s(2) pr=2 + c2 1s(2) pr=2 + + c) c* : (dans &oao) + genere autant de lignes que le nb d'atomes commencant par c, ou "*" + represente des chiffres (pour ne pas generer Cu, ou Cr ...) + + + + +=============================================================================== + +************************ +ORIENTATION DES LIAISONS +************************ + + Quand on veut avoir une liaison directionnelle + + O_C1C2 C1 1S(2) 2P(1) : C2 1S(2) 2P(1) (2,2) PARA(C1,C2) + elimine les composantes perpendiculaires a l'axe C1C2 + + O_C1C2 C1 1S(2) 2P(1) : C2 1S(2) 2P(1) (2,2) PARA(C1,C2,C3) + elimine les composantes perpendiculaires au plan C1C2C3 + + O_C1C2 C1 1S(2) 2P(1) : C2 1S(2) 2P(1) (2,2) ORTH(C1,C2,C3) + ne garde que les composantes orthogonales au plan C1C2C3 + (pour obtenir des pi par exemple) + + O_C1C2 C1 1S(2) 2P(1) : C2 1S(2) 2P(1) (2,2) ORTH(C1,C2) + ne garde que les composantes orthogonales a l'axe C1C2 + (pour obtenir des pi par exemple) + + + Remarque : en phase de test : verifier les resultats, surtout dans + le dernier cas. Problemes quand il y a beaucoup de symetrie + +================================================================================= + +************************* +REGROUPEMENTS DE LIAISONS +************************* +Permet de creer apres &ORB, une serie de laiasons a partir d'un ligne de donnees + + necessite la donnee de la symetrie dans la nameliste &orb + + &orb sym='x xy' / + (ce sont les donnees "SYMMETRY" de seward) + + a) sigma_ C* 1s(2) 2p(1) : H* 1s(1) dmax=1.6 angstrom + + genere toutes les liaisons entre atomes commencant par C et + atomes commecant par H (le reste des noms etant des chiffres) + pour lesquelles la distance est < dmax + de meme pour des atomes identiques + sigma_ C* 1s(2) 2p(1) : C* 1s(2) 2p(1) dmax=1.6 angstrom + + genere les donnees : + O_SIG.C1H13 C1 1S(2) 2P(1) : H13 1S(1) (2,2) + ... + + b) variante : + SIGMA_PARA C* 1S(2) 2P(1) : C* 1S(2) 2P(1) DMAX=1.6 ANGSTROM + genere : + O_SIG.C1C1 C1 1S(2) 2P(1) (1,1) PARA(0,C1) + O_SIG.C1C2 C1 1S(2) 2P(1) : C2 1S(2) 2P(1) (2,2) PARA(C1,C2) + + c) PI_ C* 1S(2) 2P(1) : C* 1S(2) 2P(1) DMAX=1.4 ANGSTROM + genere : + O_PI.C1C1 C1 1S(2) 2P(1) (1,1) + O_PI.C2C3 C2 1S(2) 2P(1) : C3 1S(2) 2P(1) (2,2) + + d) variante : + PI_ORTH C* 1S(2) 2P(1) : C* 1S(2) 2P(1) DMAX=1.4 ANGSTROM + genere : + O_PI.C1C1 C1 1S(2) 2P(1) (1,1) ORTH(0,C1,H13) + O_PI.C2C3 C2 1S(2) 2P(1) : C3 1S(2) 2P(1) (2,2) ORTH(C2,C3,H12) + ... + ou H12 est un atome voisin de C2C3 + + e) CORE_ C* 1S(1) + genere : + C_COR.C1 C1 1S(1) (2,0) + C_COR.C2 C2 1S(1) (2,0) + C_COR.C3 C3 1S(1) (2,0) + ... + + f) LONEP_ natom=3,atom=N9,n8,c10,bas=3*'1s(1) 2p(1)',cond='para(c12,c5,d12)' + genere un doublet et ses deux liaisons adjacentes, avec les donnees + proj et ref associees. Attention, un seul double est genere ! (v. plus + bas) + - natom : nombre d'atomes concernes (celui du doublet, plus les voisins, + don 4 pour NH3) + - atom= : label des atomes (si les 2 atomes lies a celui du doublet + sont symetriques l'un de l'autre, et portent donc le meme + nom, les donner tous les deux noms). + exemple : + + H1 + \ + O : + / + H1 + LONEP_ natom=3,atom=O,H1,H1 + - bas='...' bases des atomes correspondants + - cond='para(c12,c5,d12)' condition supplementaire (facultatif) + s'ajoute en fin de toutes les lignes generees + + g) variante LONEPPARA_ natom=3,atom=n2,c3,c3,bas='1s(1) 2p(1)',lpdir='ru' + ajoute des donnees "PARA" en fin de ligne. Il faut un atome + supplementaire (ici 'Ru') pour definir la direction du doublet + ici, PAS de donnee COND='...' + + h) MULT_ atom=c10,c11,c12,n8,c3,c4,c5,d4,d3,d12,d11,d10,bas=12*'1s(1) 2p(1)' + donnee d'une serie de liaisons simples c10-c11, c11-c12 etc... + comme pour LONEP_, on peut ajouter COND='...' + + i) variante MULTPARA_ + comme MULT_. + ici, PAS de donnee COND='...' + + j) Labels. + Par defaut, les labels commencent tous par O_, sauf pour CORE_ (C_) + Si on veut changer des labels, on ajout la donnee + label='atom:l','atom2:l2',... + ou: + l=a,g,c... + atom=- changer tous les labels en l + atom=AT pour CORE_ changer le label de l'atome AT + pour LONEP_ AT doit correspondre au doublet + atom=AT1-AT2 pour la liaison AT1-AT2, changer le label en l + ex : label='C1-C1:g','c2-c3:a' + + + + + Remarques : + 1. l'occupation (2,2) est calculee en fonction de la symetrie + du probleme + 2. c'est en phase de test + 3. on peut considerer cette possibilite comme un point de depart. + recuperer les donnees non contractees qui apparaissent sur la + sortie, et les modifier au besoin (faire des corrections, + remplacer o_ par a_, g_, etc...) + + + +DONNEES DE SCHMUDORT : +En general, elles se limitent a + &ort / + (voir plus bas la correction eventuelle des numeros des actives) + + + +DEFINITION DES ORBITALES ACTIVES +1. Les orbitales sont definies dans les labels des donnees &oao + Les orbitales actives ont pour label "A_...." (au lieu de "O_...." par ex) + A la fin de schmudorb, est cree un fichier NONORLOC contenant les orbitales + non orthogonales, leus occupations, et leurs labels. Les labels commencants + par "A_" definissent les actives pour la suite du calcul. + Cette information est transmise a schmudort, puis a locnats + (elle sert entre autres a definir les priorites d'orthogonalisation) + Pour locnats en particulier, elle est tres importante. + Pour ces 2 programmes, pas de donnees a preciser pour les actives, + elles sont transmises. + +2. Il faut, dans casdi, faire un CAS correspondant a ces actives. + Malheureusement, elles ont un autre numero. Apres schmudort, il faut + donc faire "cp LOCORB INPORB", puis un motra et un molcost, + et regarder la sortie de molcost pour avoir les numeros des + orbitales a declarer actives dans casdi. On peut aussi utiliser le programme + noscf, qui genere toutes ces donnees automatiquement (voir mode + d'emploi de noscf). + +3. Remarque + Il peut arriver que, parce qu'on genere plusieurs orbitales a la fois + (la donnee "(2 1)" genere 2 occupees et une anti-liante) on en veuille + que certaines actives. Si on donne le label "A_....", elle seront TOUTES + actives. Il faut alors les redefinir. Le methode est la suivante : + - faire un schmudort avec le label "A_...." + - reperer dans la sortie les orbitales a definir actives (leurs numeros) + - refaire passer schmudort, avec + &OAO noac=numeros des actives dans les orbitales qui apparaissent a la + fin du calcul + Attention, le label doit etre A_.... + +NIVEAU DE FERMI + +Il est calcule a partir de l'occupation des orbitales du fichier orb +(orbitales scf en general). Les orbitales d'occupation superieures a 1. +sont considerees "occupees". +Cette methode peut etre mise en defaut (creant une erreur a la fin de +schmudorb). +Pour y remedier, on peut donner le niveau de Fermi a la main dans la +namelist &orb : + &orb fermi0=... / + + +REMARQUES : +1. le nombre de liaisons (L + A-L) DOIT etre egal au nombre d'OA qui +apparaissent dans les donnees. Sinon, le progr signale une erreur a la fin. + +2. On peut simplifier les donnees comme dans oao, sauf en ce qui concerne + l'utilisation de l"*" + (C* ... est ignore) + +3. (dans oao et ort) toutes les donnees sont transformees en majuscules + + + + + +EXEMPLE DE DONNEES POUR UN CALCUL EN ORBITALES LOCALES +FABRICATION DES DONNEES PAS A PAS + + + +MOLECULE ETUDIEE : +La geometrie a pour donnees seward : + + &SEWARD &END +Title +cu2 OH2 por Mitchell et Bernard +Symmetry +xy yz +Basis set +Cu.ECP.Barandiaran.9s6p6d.2s2p2d.17e-CG-AIMP +Cu1 0.000000 0.000000 1.499885 Angstrom +End of basis +Basis set +C.ANO-L...2s1p. + C1 0.585570 0.412890 -4.223275 Angstrom + C3 2.185730 -1.082860 -3.005535 Angstrom + C5 2.299940 1.311480 -2.825985 Angstrom +End of basis +Basis set +O.ANO-L...2s1p. + O2 1.170290 0.000000 0.000000 Angstrom +End of basis +Basis set +N.ANO-L...2s1p. + N1 1.386250 0.141940 -2.975525 Angstrom +End of basis +Basis set +H.ANO-L...1s. + H1 0.273150 1.441600 -4.257905 Angstrom + H2 1.212110 0.203300 -5.078705 Angstrom + H3 1.536480 -1.940610 -3.026705 Angstrom + H4 2.833950 -1.071960 -3.860325 Angstrom + H5 1.741340 2.199360 -3.001055 Angstrom + H6 2.765660 -1.164370 -2.090475 Angstrom + H7 3.124180 1.238290 -3.501225 Angstrom + H8 2.714450 1.330700 -1.821155 Angstrom + H9 2.070290 0.000000 0.000000 Angstrom +End of basis +End of input + + + +ce qui veut dire que le groupe de symetrie est D2, et on a +- 2 atomes CU1 +- 2 atomes O2 +- 2 atomes H9 +- Les autres atomes (C3, C5, H1_8, N1) apparaissent 4 fois + +- Pour dessiner la molecule, remarquer que : + +CU est lie a O2 +CU est lie a N1 +O2 est lie a H9 +N1 est lie a C1 C2 C3 +C1 est lie a H1 H2 +C2 est lie a H3 H4 H6 +C3 est lie a H5 H7 H8 +on a aussi une liaison C1-C1 + +Les donnees SCF sont : + &SCF &END +Title +cu2 OH2 mitchell +Occupied +24 23 23 22 +Occnumbers +24*2 +22*2 1 +23*2 +21*2 1 +End of input + + +------------------------------------------------------------------ +PROGRAMMES SCHMUD +----------------------------------------------------------------- + +Il y a 2 programmes schmud a executer l'un apres l'autre + +schmudorb < in +schmudort < in + +ou in est le fichier de donnees + +- schmudorb : 1) construit une base d'orbitales atomiques orthogonales + (OAO) + 2) construit des orbitales de liaison + +- parmi ces orbitales de liaison, on doit choisir les actives + +- schmudort : orthogonalise et reordonne les orbitales, en fonction des + actives choisies + + +-------------------- +DONNEES DE SCHMUDORB +-------------------- + +1) + &smufil prefix='mitchell.',progr='MOLCAS' / + &smu nprint=1,orb='mitchell.ScfOrb' / + +progr='MOLCAS' signifie qu'on par de molcas. On peut aussi partir de +Dalton + + +2) + &oao / + CU1 2p0(1) pr=1 + CU1 2p1-(1) pr=1 + CU1 2p1+(1) pr=1 + CU1 3d0(1) pr=2 + CU1 3d1+(1) pr=2 + CU1 3d1-(1) pr=2 + CU1 3d2+(1) pr=2 + CU1 3d2-(1) pr=2 + O2 1s(1) pr=1 + O2 1s(2) pr=2 + O2 2px(1) pr=2 + O2 2py(1) pr=2 + O2 2pz(1) pr=2 + C* 1s(1) pr=1 + C* 1s(2) pr=2 + C* 2px(1) pr=2 + C* 2py(1) pr=2 + C* 2pz(1) pr=2 + N* 1s(1) pr=1 + N* 1s(2) pr=2 + N* 2px(1) pr=2 + N* 2py(1) pr=2 + N* 2pz(1) pr=2 + H* 1s0(1) pr=2 +fin + +Ces donnees concernent l'orthogonalisation des OA entre elles. C'est une +orthogonalisation hierarchisee, obtenue par une suite de projections +(Schmidt) et d'orthogonalisations S**-1/2 +On donne par exemple : + +CU1 2p0(1) pr=1 + +ce qui veut dire que la premiere orbitale 2p0 (donc la moins diffuse) est +orthogonalisee en 1er (priorite 1, pr=1) +C'est un orbitale de coeur, qu'on veut modifier le moins possible. +De meme + +C* 1s(1) pr=1 + +signifie que toutes les 1s de coeur de tous les C (C* = C1,C2,C3) sont en +priorite 1 + +N* 1s(2) pr=2 : la 2eme orbitale S est en priorite 2, etc... + +REMARQUES : +- On peut mettre autant de priorites differentes qu'on veut +- Les orbitales absentes des donnees sont de priorite (prio max +1) +- Il y a les equivalences suivantes 1s = 1s0 ; 2p0 2p1+ 2p1- = 2px 2py 2pz +(attention pour molcas, la correspondance 2p1+=2px ou 2p1+=2py selon les +groupes de symetrie) +- les donnees peuvent etre en majuscules ou en minuscules + + +3) + &orb / +o_o2 O2 1s(2) 2px(1) 2py(1) 2pz(1) : H9 1s(1) (8 2) +c_cu1 CU1 2px(1) 2py(1) 2pz(1) (6 0) +c_o2 O2 1s(1) (2 0) +c_c1 c1 1s(1) (4 0) +c_c3 c3 1s(1) (4 0) +c_c5 c5 1s(1) (4 0) +c_N1 1s(1) (4 0) +a_cu1 CU1 3d0(1) 3d1+(1) 3d1-(1) 3d2+(1) 3d2-(1) (10 0) +o_C1 C1 1s(2) 2px(1) 2py(1) 2pz(1) (2 2) ref 1 +o_N1 N1 1s(2) 2px(1) 2py(1) 2pz(1) (4 0) +o_N1 N1 1s(2) 2px(1) 2py(1) 2pz(1) : C3 1s(2) 2px(1) 2py(1) 2pz(1) (4 4) +o_N1 N1 1s(2) 2px(1) 2py(1) 2pz(1) : C5 1s(2) 2px(1) 2py(1) 2pz(1) (4 4) +o_N1 N1 1s(2) 2px(1) 2py(1) 2pz(1) : C1 1s(2) 2px(1) 2py(1) 2pz(1) (6 6) proj 1 +o_C1 C1 1s(2) 2px(1) 2py(1) 2pz(1) : H1 1s(1) (6 6) proj 1 +o_C1 C1 1s(2) 2px(1) 2py(1) 2pz(1) : H2 1s(1) (6 6) proj 1 +o_C3 C3 1s(2) 2px(1) 2py(1) 2pz(1) : H3 1s(1) (4 4) +o_C3 C3 1s(2) 2px(1) 2py(1) 2pz(1) : H4 1s(1) (4 4) +o_C3 C3 1s(2) 2px(1) 2py(1) 2pz(1) : H6 1s(1) (4 4) +o_C5 C5 1s(2) 2px(1) 2py(1) 2pz(1) : H5 1s(1) (4 4) +o_C5 C5 1s(2) 2px(1) 2py(1) 2pz(1) : H7 1s(1) (4 4) +o_C5 C5 1s(2) 2px(1) 2py(1) 2pz(1) : H8 1s(1) (4 4) + fin + +On va detailler maintenant ces donnees, qui sont plus complexes + +Chaque ligne correspond a une "liaison". Le mot "liaison" a ici une +signification plus large que celle qu'on lui donne en general. "liaison" +signifie ici : +Toute orbitale de fragment fabriquee a partir des OA du fragment. + +Par exemple, la donnee + +o_o2 O2 1s(2) 2px(1) 2py(1) 2pz(1) : H9 1s(1) (8 2) + +signifie +- on considere le fragment O2-H9 +- dans ce fragment, on considere les orbitales : + - pour O2 1s(2) 2px(1) 2py(1) 2pz(1) ; pour H9 1s(1) +(ce sont les orbitales de valence) + +ON VA MAINTENANT REGARDER TOUTES LES FORMES DE "LIAISONS" POSSIBLES + +3A) COEUR + +la donnee est du type + +c_o2 O2 1s(1) (2 0) + +- "c" pour coeur +- O2 1s(1) : l'OA est la 1ere s ce O2, don l'OA de coeur +- (2 0) avec ces OAn on cree 2 occupees (car il y a 2 atomes O2), et 0 +virtuelle + +Le programme repond : + + donnee C_o2 O2 1S0(1) (2 0) + atome ====O2 ==== +... + nombre d'orbitales occupees par symetrie 1 1 0 0 + nombre d'orbitales anti-liantes par symetrie 0 0 0 0 + +(il a trouve 2 orbitales occupees, de sym 1 et 2) + + +3B) LIAISON COVALENTE + +par exemple, la liaison C5-H5 + +o_o5 C5 1s(2) 2px(1) 2py(1) 2pz(1) : H5 1s(1) (4 4) + +- "o" signifie "orbitale", c'est-a-dire non "coeur" +- C5 1s(2) 2px(1) 2py(1) 2pz(1) sont les orbitales de valence de C5 +- H5 1s(1) de meme pour H5 +- (4 4) Il y a 4 orbitales occupees (les liaisons des 4 C5H5 de la +molecule) et 4 anti-liantes fabriquees avec le OA donnees + +Le programme repond : + + donnee O_c5 C5 1S0(2) 2P1-(1) 2P1+(1) 2P0(1) : H5 1S0(1) (4 4) + atome ====C5 ==== + atome ====H5 ==== + +puis fabrique, symetrie par symetrie, des orbitales de liaison et calcule +leur occupation. En symetrie 1, il extrait la matrice densite de fragment: + + sym 1 matrice extraite + + 1 2 3 4 5 + + 1 C5 1s0 1.0266 0.0564 0.0709 0.0029 0.5118 + 2 C5 2p1+ 0.0564 1.0842 -0.1577 -0.0148 -0.4338 + 3 C5 2p1- 0.0709 -0.1577 1.0079 -0.0204 0.6948 + 4 C5 2p0 0.0029 -0.0148 -0.0204 1.2084 -0.1417 + 5 H5 1s0 0.5118 -0.4338 0.6948 -0.1417 0.8361 + +(noter qu'il y a a peu pres 1 electron par OA) + +Sa diagonalisation donne les occupations et les orbitales : + + occupations, orbitales naturelles + 1.9908 1.2100 1.1169 0.8384 0.0071 + + 1 2 3 4 5 + + 1 C5 1s0 0.3596 -0.0196 0.7332 -0.4467 -0.3650 + 2 C5 2p1+ -0.3788 -0.2227 0.6512 0.5616 0.2597 + 3 C5 2p1- 0.5448 0.0745 -0.0720 0.6933 -0.4602 + 4 C5 2p0 -0.1224 0.9718 0.1695 0.0665 0.0861 + 5 H5 1s0 0.6445 0.0017 0.0667 0.0059 0.7617 + +On a une orbitale occupee a 1.9908. C'est la liaison sigma. Il y a une +orbitale vide (0.0071). C'est l'antiliante. Les autres (proches de 1.) +n'ont pas de signification physique. Elles correspondent aux trois +"demi-liaisons" C-C et C-H avec d'autres centres. Elles seront eliminees. +Apres etude de toutes les symetries, le programme choisit les 4 orbitales +les plus occupees, et les 4 plus vides. Il trouve : + + nombre d'orbitales occupees par symetrie 1 1 1 1 + nombre d'orbitales anti-liantes par symetrie 1 1 1 1 + + + + +3C) Fragment "isole" : + +On ne connait pas bien la nature de la liaison O2-CU +on va supposer qu'on a un OH- "autonome" + +Reprenons la donnee : + +o_o2 O2 1s(2) 2px(1) 2py(1) 2pz(1) : H9 1s(1) (8 2) + + + +- en debut de ligne, un "o" signifie que ces donnees ne concernent pas des + orbitales de coeur +- a la fin, le 8 signifie qu'on a 8 occupees (on OH-, donc 8 electrons, +donc 4 occupees. On a 2 OH donc 8 occupees) +- a la fin, le 2 signifie que la donnee des OA de valence generera une +anti-liante (2 sur les 2 OH-) + +Schmudorb repond a cette donnee de la facon suivante : + + donnee O O2 1S0(2) 2P1-(1) 2P1+(1) 2P0(1) : H9 1S0(1) (8 2) + atome ====O2 ==== + atome ====H9 ==== + +puis fabrique, symetrie par symetrie, des orbitales de liaison et calcule +leur occupation. Les 8 plus occupees sont retenues, les 2 moins occupees +sont aussi retenues parmi les antiliantes. A la fin, on a : + + nombre d'orbitales occupees par symetrie 2 2 2 2 + nombre d'orbitales anti-liantes par symetrie 1 1 0 0 + +Les occupations, par symetrie, etaient : +1 1.9970 1.9524 0.0047 +2 1.9974 1.8691 0.0040 +3 1.9950 1.9284 +4 1.9878 1.7254 + +On retenu 8 occupees, et 2 anti-liantes. Leurs occupations sont claires. +Notre hypothese d'un OH- "autonome" ou "isole" etait corrcte. L'orbitale +occupee par 1.7254 electron est une 2pz. Les electrons se sont +partiellement delocalises dans le CU. + + +3C') Autre exemple de systeme isole : +Supposons : +On n'a pas non plus une idee claire de la liaison CU-N1 + +On va supposer que N garde son doublet, et on donne : + +O_n1 N1 1S0(2) 2P1-(1) 2P1+(1) 2P0(1) (4 0) + +Le programme repond : +1 1.8882 1.1653 1.1622 1.1126 +2 1.6941 1.2007 1.1544 1.1435 +3 1.8967 1.1648 1.1617 1.1121 +4 1.7382 1.2033 1.1542 1.1465 + + nombre d'orbitales occupees par symetrie 1 1 1 1 + nombre d'orbitales anti-liantes par symetrie 0 0 0 0 + +L'hypothese n'etait pas absurde +- on a 4 occupees +- on n'a clairement aucune anti-liante +- on a 12 "demi-liaisons" (N-C) a rejeter + +Remarque : c'est donc une solution qui marche, qui convient pour un point +de depart, mais on pourrait en essayer d'autre, par exemple entre des +entites N-C, etc... + + + +3D) PROBLEMES LIES A LA SYMETRIE + + + +3DA) Pour entrer la liaison C1-C1, on donne : + +O_c1c1 C1 1S0(2) 2P1-(1) 2P1+(1) 2P0(1) (2 2) + +Il n'y a pas de difficulte particuliere + + + +3DB) Mais si on entre la liaison C1-H1: +donnee : O_c1h1 C1 1S0(2) 2P1-(1) 2P1+(1) 2P0(1) : H1 1S0(1) (4 4) +(4 liaisons, 1 occupee et une anti-liante par liaison) on obtient les +occupations de fragment : + +sym 1 1.9904 1.9823 1.2230 0.8455 0.0080 +sym 2 1.9923 1.1948 0.7563 0.0176 0.0052 +sym 3 1.9905 1.9822 1.2244 0.8458 0.0080 +sym 4 1.9924 1.1951 0.7579 0.0180 0.0053 + +On a clairement 6 occupees et 6 anti-liantes ! +C'est que, en donnant le centre C1, on genere automatiquement la liaison +C1-C1. Il faut donc donner + +O_c1 C1 1S0(2) 2P1-(1) 2P1+(1) 2P0(1) : H1 1S0(1) (6 6) + +et regenerer C1-C1 + +puis on va eliminer, par projection, C1-C1 de H1-C1-C1-H1 + +pour cela, les donnees de C1-C1 et H1-C1-C1-H1 sont + +O C1 1S0(2) 2P1-(1) 2P1+(1) 2P0(1) (2 2) ref 1 +O C1 1S0(2) 2P1-(1) 2P1+(1) 2P0(1) : H1 1S0(1) (6 6) proj 1 + +On aura de meme pour N1-C1-C1-N1 + O N1 1S0(2) 2P1-(1) 2P1+(1) 2P0(1) : C1 1S0(2) 2P1-(1) 2P1+(1) 2P0(1) & +(6 6) PROJ 1 +("&" pour ligne suite) + +REMARQUE : +- l'ordre pour donner ref et proj est sans importance +- si on doit projeter sur 2 liaisons, on donne : +................... ref 1 +....................... ref 2 +..............................proj 1,2 + +- si une orbitale est a la fois proj et ref, on entre : +................... ref 1 ; proj 2 + + + +4) TESTS DE BON FONCTIONNEMENT + +Il faut avoir entre autant d'OA que d'orbitales de liaison dans chaque +symetrie. Si ce n'es pas le cas, le programme signale "ERREUR". + + + + +5) ORBITALES FINALES + + +A la fin du calcul, on obtient des orbitales de liaison (ou de fragments) +exprimees dans la base des OAO, et non orthogonalisees. Les orbitales de +coeur sont en tete. Il faut maintenant choisir les actives, selon le +probleme physique considere. C'est la qu'il faut "regarder" les orbitales. +Quand on a trouve les actives, on peut : + + +noter leurs numeros (ecrits au-dessus des +orbitales), et faire tourner schmudort en lui donnant ces numeros. + +ou mieux, rfaire tourner schmudorb, en remplcant o_ par a_ en debut de ligne +pour les orbitales considerees + + +-------------------- +DONNEES DE SCHMUDORT +-------------------- + + &ort numac=53,132 / + +ou 53,132 sont les 2 actives trouvees dans l'examen de la sortie de +schmudorb. + + + +On a maintenant, dans le fichier LOCORB, un jeu d'orbitales de fragment +orthogonalisees, exprimees dans la base des OA. On peut faire une IC dans +la base de ces orbitales + + + + diff --git a/Manuals/troncorb_emploi b/Manuals/troncorb_emploi new file mode 100755 index 0000000..6d6427b --- /dev/null +++ b/Manuals/troncorb_emploi @@ -0,0 +1,24 @@ +TRONCORB + +Met des zeros dans un fichiers d'orbitales + +Fichiers en entree : +Mono (de molcost) +orbin + +Fichiers en sortie : +orbout + +Donnees : + &troncorb orbin='****',orbout='****' / +une suite de lignes de 3 entiers, une par element a annuler +is il io +is il io +... +FIN + +avec : is : symetrie de l'orbitale + il : ligne de l'element a annuler + io : colonne de l'element a annuler + +