-
Notifications
You must be signed in to change notification settings - Fork 1
/
get_tmp_J.m
executable file
·117 lines (104 loc) · 4.53 KB
/
get_tmp_J.m
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
disp ("Assumes the presence of the following files: MOs_1.txt, MOs_2.txt, MOs_pair.txt, S_1.txt, S_2.txt, S_pair.txt, Evls_pair.txt")
disp ("!!! Octave counts from 1 !!!")
%nbasis =input("Number of MOs (of monomer)"); %... of monomer
%nhomo_mon=input("HOMO (of monomer)"); %... of monomer (!! Octave counts from 1 !!)
%nbasis=446
%nhomo_mon=73
%Naphthalene
nbasis=166
nhomo_mon=34
%nbasis=46
%nhomo_mon=8
%sprintf('read data')
load('MOs_1.txt');
load('MOs_2.txt');
load('MOs_pair.txt');
load('S_1.txt');
load('S_2.txt');
load('S_pair.txt');
load('Evls_pair.txt');
zero_mat=zeros(nbasis);
MOs_mons = [MOs_1, zero_mat; zero_mat, MOs_2];
S_mons = [S_1, zeros(nbasis); zeros(nbasis), S_2 ];
D_mons = sqrtm(S_mons);
D_pair = sqrtm(S_pair);
%b3lyp - have to orthogonalise
MOs_mons_orth = D_mons * MOs_mons;
MOs_pair_orth = D_pair * MOs_pair;
B = MOs_mons_orth' * MOs_pair_orth;
Evls=diag(Evls_pair');
H_eff = B * Evls * B';
%test
%B_test = MOs_mons' * MOs_pair;
%H_eff_test = B_test * Evls * B_test';
%H00_test=H_eff_test(nhomo_mon+nbasis, nhomo_mon)
% -0.5*(H_eff_test(nhomo_mon+nbasis,nhomo_mon+nbasis)+H_eff_test(nhomo_mon,nhomo_mon))*S_pair(nhomo_mon+nbasis,nhomo_mon)
% )/(1-S_pair(nhomo_mon+nbasis,nhomo_mon)*S_pair(nhomo_mon+nbasis,nhomo_mon))
%<HOMO | F | HOMO >
%<LUMO | F | LUMO >
%Output. N.B. Energies already converted to eV by rewrite_S_phi_E.cpp
%non-degenerate
E1=H_eff(nhomo_mon,nhomo_mon)
E1=H_eff(nhomo_mon+1,nhomo_mon+1)
should_be_zero=H_eff(nhomo_mon, nhomo_mon-1)
should_be_zero=H_eff(nhomo_mon, nhomo_mon-2)
should_be_zero=H_eff(nhomo_mon, nhomo_mon-3)
should_be_zero=H_eff(nhomo_mon, nhomo_mon-4)
should_be_zero=H_eff(nhomo_mon-1, nhomo_mon-2)
should_be_zero=H_eff(nhomo_mon-1, nhomo_mon-3)
should_be_zero=H_eff(nhomo_mon-1, nhomo_mon-4)
should_be_zero=H_eff(nhomo_mon-1, nhomo_mon-5)
H00=H_eff(nhomo_mon+nbasis, nhomo_mon );
E1_E2=(H_eff(nhomo_mon,nhomo_mon)-H_eff(nhomo_mon+nbasis,nhomo_mon+nbasis))
half_HOMO_diff=(Evls(2*nhomo_mon,2*nhomo_mon)-Evls(2*nhomo_mon-1,2*nhomo_mon-1))/2
Non_degenerate_HOMO_coupling=H_eff(nhomo_mon+nbasis, nhomo_mon )
Non_degenerate_LUMO_coupling=H_eff(nhomo_mon+1+nbasis, nhomo_mon+1)
%L00=H_eff(nhomo_mon+nbasis+1, nhomo_mon+1);
%Non_degenerate_LUMO_coupling=abs(L00)
%doubly degenerate
%H00=H_eff(nhomo_mon+nbasis, nhomo_mon );
%H01=H_eff(nhomo_mon+nbasis, nhomo_mon-1);
%H10=H_eff(nhomo_mon+nbasis-1, nhomo_mon );
%H11=H_eff(nhomo_mon+nbasis-1, nhomo_mon-1);
%L00=H_eff(nhomo_mon+nbasis+1, nhomo_mon+1);
%L01=H_eff(nhomo_mon+nbasis+1, nhomo_mon);
%L10=H_eff(nhomo_mon+nbasis, nhomo_mon+1);
%L11=H_eff(nhomo_mon+nbasis, nhomo_mon );
%Doubly_degenerate_HOMO_coupling=(abs(H00)+abs(H01)+abs(H10)+abs(H11))/4
%Doubly_degenerate_LUMO_coupling=(abs(L00)+abs(L01)+abs(L10)+abs(L11))/4
%triply degenerate
%H00=H_eff(nhomo_mon+nbasis, nhomo_mon );
%H01=H_eff(nhomo_mon+nbasis, nhomo_mon-1);
%H02=H_eff(nhomo_mon+nbasis, nhomo_mon-2);
%H10=H_eff(nhomo_mon+nbasis-1, nhomo_mon );
%H11=H_eff(nhomo_mon+nbasis-1, nhomo_mon-1);
%H12=H_eff(nhomo_mon+nbasis-1, nhomo_mon-2);
%H20=H_eff(nhomo_mon+nbasis-2, nhomo_mon );
%H21=H_eff(nhomo_mon+nbasis-2, nhomo_mon-1);
%H22=H_eff(nhomo_mon+nbasis-2, nhomo_mon-2);
%L00=H_eff(nhomo_mon+nbasis+1, nhomo_mon+1);
%L01=H_eff(nhomo_mon+nbasis+1, nhomo_mon);
%L02=H_eff(nhomo_mon+nbasis+1, nhomo_mon-1);
%L10=H_eff(nhomo_mon+nbasis, nhomo_mon+1);
%L11=H_eff(nhomo_mon+nbasis, nhomo_mon );
%L12=H_eff(nhomo_mon+nbasis, nhomo_mon-1);
%L20=H_eff(nhomo_mon+nbasis+1, nhomo_mon+1);
%L21=H_eff(nhomo_mon+nbasis+1, nhomo_mon );
%L22=H_eff(nhomo_mon+nbasis+1, nhomo_mon-1);
%Triply_degenerate_HOMO_coupling=(abs(H00)+abs(H01)+abs(H02)+abs(H10)+abs(H11)+abs(H12)+abs(H20)+abs(H21)+abs(H22))/9
%Triply_degenerate_LUMO_coupling=(abs(L00)+abs(L01)+abs(L02)+abs(L10)+abs(L11)+abs(L12)+abs(L20)+abs(L21)+abs(L22))/9
%H03=H_eff(nhomo_mon+nbasis, nhomo_mon-3);
%H04=H_eff(nhomo_mon+nbasis, nhomo_mon-4);
%H13=H_eff(nhomo_mon+nbasis-1, nhomo_mon-3);
%H14=H_eff(nhomo_mon+nbasis-1, nhomo_mon-4);
%H22=H_eff(nhomo_mon+nbasis-2, nhomo_mon-3);
%H22=H_eff(nhomo_mon+nbasis-2, nhomo_mon-4);
%Four_fold_degenerate_HOMO_coupling=(abs(H00)+abs(H01)+abs(H02)+abs(H03)
% + abs(H10)+abs(H11)+abs(H12)+abs(H13)
% + abs(H20)+abs(H21)+abs(H22)+abs(H23)
% + abs(H30)+abs(H31)+abs(H32)+abs(H33))/16
%Five_fold_degenerate_HOMO_coupling=(abs(H00)+abs(H01)+abs(H02)+abs(H03)+abs(H04)
% + abs(H10)+abs(H11)+abs(H12)+abs(H13)+abs(H14)
% + abs(H20)+abs(H21)+abs(H22)+abs(H23)+abs(H24)
% + abs(H30)+abs(H31)+abs(H32)+abs(H33)+abs(H34)
% + abs(H40)+abs(H41)+abs(H42)+abs(H43)+abs(H44))/25