以下例子是通用的三维Python程序,可以进一步优化。
其中用户给定实空间晶格矢量,以及K空间高对称点路径。
即可开始计算,该程序可以进一步优化为从用户定义的输入文件中读取这些数据。然后计算的通用脚本。
import numpy as np
from numpy import linalg as LA
import time
num_wan = 3
basis_vector = [[1.37287871,1.37287871,-2.74575742],[-2.74575742,1.37287871,1.37287871],[13.36629497,13.36629497,13.36629497]]
E_fermi = -1.3286
K_point_path = [[0, 0, 0], [0.50000,0.00000,0.00000], [0.33333,0.33333,0.00000], [0.00000,0.00000,0.00000]]
k_meshes = [40, 30, 40]
Symmetry_point_label1 = "G"
Symmetry_point_label2 = "M"
Symmetry_point_label3 = "K"
Symmetry_point_label4 = "G"
V = np.dot(basis_vector[0], np.cross(basis_vector[1], basis_vector[2]) )
rec = [np.cross(basis_vector[1], basis_vector[2]) * 2 * np.pi / V,
np.cross(basis_vector[2], basis_vector[0]) * 2 * np.pi / V,
np.cross(basis_vector[0], basis_vector[1]) * 2 * np.pi / V]