mirror of
https://github.com/LCPQ/Cost_package.git
synced 2024-09-01 02:33:40 +02:00
545 lines
15 KiB
Plaintext
Executable File
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.
|
|
|