Ajout des manuels

This commit is contained in:
nadia 2016-05-03 11:54:25 +02:00
parent fb3cf25985
commit 45937de5a3
30 changed files with 4319 additions and 0 deletions

253
Manuals/calculs_cholesky_emploi Executable file
View File

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

178
Manuals/casdet_emploi Executable file
View File

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

313
Manuals/casdi_emploi Executable file
View File

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

243
Manuals/casdiloc_emploi Executable file
View File

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

43
Manuals/casdint_emploi Executable file
View File

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

22
Manuals/copie_ordre_emploi Executable file
View File

@ -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=' ' /

39
Manuals/desymorb_emploi Executable file
View File

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

493
Manuals/dolo_emploi Executable file
View File

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

44
Manuals/ecrimat_emploi Executable file
View File

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

132
Manuals/faiano_emploi Executable file
View File

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

120
Manuals/gcas_emploi Executable file
View File

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

86
Manuals/gcasdeloc_emploi Executable file
View File

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

49
Manuals/hieror_emploi Executable file
View File

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

39
Manuals/ijkl_emploi Executable file
View File

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

75
Manuals/ijkloc_emploi Executable file
View File

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

46
Manuals/inserorb_emploi Executable file
View File

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

112
Manuals/iternat_emploi Executable file
View File

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

544
Manuals/lewis_emploi Executable file
View File

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

70
Manuals/locas_emploi Executable file
View File

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

88
Manuals/loccasscf_emploi Executable file
View File

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

22
Manuals/locnat_emploi Executable file
View File

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

34
Manuals/modif_LOCORB_emploi Executable file
View File

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

32
Manuals/modif_fermi_emploi Executable file
View File

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

124
Manuals/molcost_emploi Executable file
View File

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

20
Manuals/naturalt_emploi Executable file
View File

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

97
Manuals/noscf_emploi Executable file
View File

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

17
Manuals/oldorb_emploi Executable file
View File

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

59
Manuals/proj_scf_emploi Executable file
View File

@ -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!
/

901
Manuals/schmudorb_emploi Executable file
View File

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

24
Manuals/troncorb_emploi Executable file
View File

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