Cost_package/Manuals/lewis_emploi

545 lines
15 KiB
Plaintext
Executable File

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