-
Notifications
You must be signed in to change notification settings - Fork 1
/
hamiltonians.py
63 lines (54 loc) · 2.9 KB
/
hamiltonians.py
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
import numpy as np
def adolphs_renger():
H = np.array([[12410, -87.7, 5.5, -5.9, 6.7, -13.7, -9.9],
[-87.7, 12530, 30.8, 8.2, 0.7, 11.8, 4.3],
[5.5, 30.8, 12210, -53.5, -2.2, -9.6, 6.0],
[-5.9, 8.2, -53.5, 12320, -70.7, -17.0, -63.3],
[6.7, 0.7, -2.2, -70.7, 12480, 81.1, -1.3],
[-13.7, 11.8, -9.6, -17.0, 81.1, 12630, 39.7],
[-9.9, 4.3, 6.0, -63.3, -1.3, 39.7, 12440]])
return H
def cho_et_al():
H = np.array([[280, -106, 8, -5, 6, -8, -4],
[-106, 420, 28, 6, 2, 13, 1],
[8, 28, 0, -62, -1, -9, 17],
[-5, 6, -62, 175, -70, -19, -57],
[6, 2, -1, -70, 320, 40, -2],
[-8, 13, -9, -19, 40, 360, 32],
[-4, 1, 17, -57, -2, 32, 260]])
return H
def olbrich_et_al():
H = np.array([[12505, -80.3, 3.5, -4.0, 4.5, -10.2, -4.9, 21.0],
[-80.3, 12425, 23.5, 6.7, 0.5, 7.5, 1.5, 3.3],
[3.5, 23.5, 12195, -49.8, -1.5, -6.5, 1.2, 0.7],
[-4.0, 6.7, -49.8, 12375, 63.4, -13.3, -42.2, -1.2],
[4.5, 0.5, -1.5, 63.4, 12600, 55.8, 4.7, 2.8],
[-10.2, 7.5, -6.5, -13.3, 55.8, 12515, 33.0, -7.3],
[-4.9, 1.5, 1.2, -42.2, 4.7, 33.0, 12465, -8.7],
[21.0, 3.3, 0.7, -1.2, 2.8, -7.3, -8.7, 12700]])
return H
def jia_et_al():
H = np.array([[11550, -91.0, 4.1, -6.3, 6.3, -8.8, -7.8, 32.4],
[-91.0, 11413, 28.7, 8.2, 1.0, 8.8, 3.4, 6.3],
[4.1, 28.7, 11332, -46.6, -4.4, -9.3, 1.3, 1.3],
[-6.3, 8.2, -46.6, 11437, -73.9, -17.7, -59.1, -1.9],
[6.3, 1.0, -4.4, -73.9, 11437, 76.0, -3.1, 4.2],
[-8.8, 8.8, -9.3, -17.7, 76.0, 11518, 25.9, -11.6],
[-7.8, 3.4, 1.3, -59.1, -3.1, 25.9, 11501, -11.9],
[32.4, 6.3, 1.3, -1.9, 4.2, -11.6, -11.9, 11486]])
return H
def fmo_trimer():
H1 = olbrich_et_al()
H2 = np.array([[1.0, 0.3, -0.6, 0.7, 2.3, 1.5, 0.9, 0.1],
[1.5, -0.4, -2.5, -1.5, 7.4, 5.2, 1.5, 0.7],
[1.4, 0.1, -2.7, 5.7, 4.6, 2.3, 4.0, 0.8],
[0.3, 0.5, 0.7, 1.9, -0.6, -0.4, 1.9, -0.8],
[0.7, 0.9, 1.1, -0.1, 1.8, 0.1, -0.7, 1.3],
[0.1, 0.7, 0.8, 1.4, -1.4, -1.5, 1.6, -1.0],
[0.3, 0.2, -0.7, 4.8, -1.6, 0.1, 5.7, -2.3],
[0.1, 0.6, 1.5, -1.1, 4.0, -3.1, -5.2, 3.6]])
H = np.zeros((24, 24), dtype=float)
H[0:8, 0:8] = H1[:,:]; H[0:8, 8:16] = H2[:,:]; H[0:8, 16:24] = H2.transpose();
H[8:16, 0:8] = H2.transpose(); H[8:16, 8:16] = H1[:,:]; H[8:16, 16:24] = H2[:,:];
H[16:24, 0:8] = H2[:,:]; H[16:24, 8:16] = H2.transpose(); H[16:24, 16:24] = H1[:,:];
return H