mirror of
https://github.com/LCPQ/Cost_package.git
synced 2025-03-29 03:51:29 +01:00
Ajout des manuels
This commit is contained in:
parent
fb3cf25985
commit
45937de5a3
253
Manuals/calculs_cholesky_emploi
Executable file
253
Manuals/calculs_cholesky_emploi
Executable 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
178
Manuals/casdet_emploi
Executable 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
313
Manuals/casdi_emploi
Executable 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
243
Manuals/casdiloc_emploi
Executable 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
43
Manuals/casdint_emploi
Executable 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
22
Manuals/copie_ordre_emploi
Executable 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
39
Manuals/desymorb_emploi
Executable 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
493
Manuals/dolo_emploi
Executable 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
44
Manuals/ecrimat_emploi
Executable 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
132
Manuals/faiano_emploi
Executable 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
120
Manuals/gcas_emploi
Executable 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
86
Manuals/gcasdeloc_emploi
Executable 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
49
Manuals/hieror_emploi
Executable 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
39
Manuals/ijkl_emploi
Executable 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
75
Manuals/ijkloc_emploi
Executable 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
46
Manuals/inserorb_emploi
Executable 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
112
Manuals/iternat_emploi
Executable 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
544
Manuals/lewis_emploi
Executable 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
70
Manuals/locas_emploi
Executable 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
88
Manuals/loccasscf_emploi
Executable 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
22
Manuals/locnat_emploi
Executable 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
34
Manuals/modif_LOCORB_emploi
Executable 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
32
Manuals/modif_fermi_emploi
Executable 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
124
Manuals/molcost_emploi
Executable 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
20
Manuals/naturalt_emploi
Executable 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
97
Manuals/noscf_emploi
Executable 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
17
Manuals/oldorb_emploi
Executable 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
59
Manuals/proj_scf_emploi
Executable 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
901
Manuals/schmudorb_emploi
Executable 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
24
Manuals/troncorb_emploi
Executable 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
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user