summaryrefslogtreecommitdiff
path: root/element.py
blob: a8111adb1a3b597438d157fd45ae0cc9019710bc (plain)
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
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
from math import *


# Interface to the HGH pseudopotential parameters.
# See https://arxiv.org/abs/cond-mat/9803286
class Element:
    def __init__(self, symbol):
        # Get raw data from the table below
        global elements
        el = elements[symbol]

        self.Zion = el[0]
        self.rloc = el[1]
        self.Cloc = [el[2], el[3], el[4], el[5]]
        self.rl   = [el[6], el[10], el[14]]

        self.h = {}
        for l in range(0, 3):
            self.h[l] = {}
            for i in range(1, 4):
                self.h[l][i] = {}
                # Only the diagonal h-values are explicitly given
                self.h[l][i][i] = el[6 + 4 * l + i]

        # Calculate the off-diagonal h-values, see Eqs.(20)-(28)
        self.h[0][1][2] = -(1/2) * sqrt(  3/  5) * self.h[0][2][2]
        self.h[0][1][3] =  (1/2) * sqrt(  5/ 21) * self.h[0][3][3]
        self.h[0][2][3] = -(1/2) * sqrt(100/ 63) * self.h[0][3][3]
        self.h[1][1][2] = -(1/2) * sqrt(  5/  7) * self.h[1][2][2]
        self.h[1][1][3] =  (1/6) * sqrt( 35/ 11) * self.h[1][3][3]
        self.h[1][2][3] = -(1/6) * sqrt(196/ 11) * self.h[1][3][3]
        self.h[2][1][2] = -(1/2) * sqrt(  7/  9) * self.h[2][2][2]
        self.h[2][1][3] =  (1/2) * sqrt( 63/143) * self.h[2][3][3]
        self.h[2][2][3] = -(1/2) * sqrt(324/143) * self.h[2][3][3]

        # Mirror around diagonal, see Eq.(29)
        for l in range(0, 3):
            for i in range(1, 4):
                for j in range(1, i):
                    self.h[l][i][j] = self.h[l][j][i]


# Raw HGH pseudopotential parameters for semiconductor materials.
# See https://arxiv.org/abs/cond-mat/9803286
#
# Indices:             Meanings:
#  0                   Zion
#  1  2  3  4  5       rloc  C1   C2   C3   C4
#  6  7  8  9          r0    h0_1 h0_2 h0_3
# 10 11 12 13          r1    h1_1 h1_2 h1_3
# 14 15 16 17          r2    h2_1 h2_2 h2_3
elements = {
    "B"  : [3,
            0.433930, -5.578642, 0.804251, 0.000000, 0.000000,
            0.373843,  6.233928, 0.000000, 0.000000,
            0.360393,  0.000000, 0.000000, 0.000000,
            0.000000,  0.000000, 0.000000, 0.000000],
    "C"  : [4,
            0.348830, -8.513771, 1.228432, 0.000000, 0.000000,
            0.304553,  9.522842, 0.000000, 0.000000,
            0.232677,  0.000000, 0.000000, 0.000000,
            0.000000,  0.000000, 0.000000, 0.000000],
    "N"  : [5,
            0.289179, -12.234820, 1.766407, 0.000000, 0.000000,
            0.256605,  13.552243, 0.000000, 0.000000,
            0.270134,   0.000000, 0.000000, 0.000000,
            0.000000,   0.000000, 0.000000, 0.000000],
    "O"  : [6,
            0.247621, -16.580318, 2.395701, 0.000000, 0.000000,
            0.221786,  18.266917, 0.000000, 0.000000,
            0.256829,   0.000000, 0.000000, 0.000000,
            0.000000,   0.000000, 0.000000, 0.000000],
    "Al" : [3,
            0.450000, -8.491351, 0.000000, 0.000000, 0.000000,
            0.460104,  5.088340, 2.679700, 0.000000,
            0.536744,  2.193438, 0.000000, 0.000000,
            0.000000,  0.000000, 0.000000, 0.000000],
    "Si" : [4,
            0.440000, -7.336103, 0.000000, 0.000000, 0.000000,
            0.422738,  5.906928, 3.258196, 0.000000,
            0.484278,  2.727013, 0.000000, 0.000000,
            0.000000,  0.000000, 0.000000, 0.000000],
    "P"  : [5,
            0.430000, -6.654220, 0.000000, 0.000000, 0.000000,
            0.389803,  6.842136, 3.856693, 0.000000,
            0.440796,  3.282606, 0.000000, 0.000000,
            0.000000,  0.000000, 0.000000, 0.000000],
    "S"  : [6,
            0.420000, -6.554492, 0.000000, 0.000000, 0.000000,
            0.361757,  7.905303, 4.471698, 0.000000,
            0.405285,  3.866579, 0.000000, 0.000000,
            0.000000,  0.000000, 0.000000, 0.000000],
    "Zn" : [2,
            0.570000, 0.000000,  0.000000,  0.000000, 0.000000,
            0.640712, 2.088557, -0.218270, -0.941317,
            0.967605, 0.163546, -0.227086,  0.000000,
            1.330352, 0.010486,  0.000000,  0.000000],
    "Ga" : [3,
            0.560000, 0.000000,  0.000000,  0.000000, 0.000000,
            0.610791, 2.369325, -0.249015, -0.551796,
            0.704596, 0.746305, -0.513132,  0.000000,
            0.982580, 0.075437,  0.000000,  0.000000],
    "Ge" : [4,
            0.540000, 0.000000,  0.000000,  0.000000, 0.000000,
            0.493743, 3.826891,  1.100231, -1.344218,
            0.601064, 1.362518, -0.627370,  0.000000,
            0.788369, 0.191205,  0.000000,  0.000000],
    "As" : [5,
            0.520000, 0.000000,  0.000000,  0.000000, 0.000000,
            0.456400, 4.560761,  1.692389, -1.373804,
            0.550562, 1.812247, -0.646727,  0.000000,
            0.685283, 0.312373,  0.000000,  0.000000],
    "Se" : [6,
            0.510000, 0.000000,  0.000000,  0.000000, 0.000000,
            0.432531, 5.145131,  2.052009, -1.369203,
            0.472473, 2.858806, -0.590671,  0.000000,
            0.613420, 0.434829,  0.000000,  0.000000],
    "Cd" : [2,
            0.625000, -1.796838,  0.000000,  0.000000, 0.000000,
            0.828465,  1.485292, -0.424753, -0.407986,
            0.972873,  0.469208, -0.448111,  0.000000,
            1.240949,  0.065412,  0.000000,  0.000000],
    "In" : [3,
            0.610000, 2.865777,  0.000000,  0.000000, 0.000000,
            0.770602, 1.256194, -0.397255, -0.278329,
            0.858132, 0.494459, -0.380789,  0.000000,
            1.088691, 0.129208,  0.000000,  0.000000],
    "Sn" : [4,
            0.605000, 4.610912,  0.000000,  0.000000, 0.000000,
            0.663544, 1.648791, -0.141974, -0.576546,
            0.745865, 0.769355, -0.445070,  0.000000,
            0.944459, 0.225115,  0.000000,  0.000000],
    "Sb" : [5,
            0.590000, 6.680228,  0.000000,  0.000000, 0.000000,
            0.597684, 1.951477,  0.037537, -0.786631,
            0.672122, 0.970313, -0.466731,  0.000000,
            0.856557, 0.300103,  0.000000,  0.000000],
    "Te" : [6,
            0.575000, 9.387085,  0.000000,  0.000000, 0.000000,
            0.556456, 2.046890, -0.029333, -0.881119,
            0.615262, 1.033478, -0.481172,  0.000000,
            0.805101, 0.317411,  0.000000,  0.000000],
}