Open chengyangXu opened 4 years ago
Please refer to the docstring of the unfold class.
M is the transformation matrix between supercell and primitive cell:
M = np.dot(A, np.linalg.inv(a))
In real space, the basis vectors of Supercell (A) and those of the
primitive cell (a) satisfy:
A = np.dot(M, a); a = np.dot(np.linalg.inv(M), A)
Whereas in reciprocal space
b = np.dot(M.T, B); B = np.dot(np.linalg.inv(M).T, b)
Thank you for your reply!
Dear Prof. Qijing Zheng,
I have calculated the transformation matrix definitions and it matches with your definition that you have mentioned. I have another question, In those above definitions, A and a matrix is represented as column vectors . Is it correct ?
I mean to say, A = M.a where, A = [Ax Bx Cx, Ay By Cy, Az Bz Cz] and a = [ax bx cx, ay by cy, az bz cz]
Please let me know whether this is correct.
Best regards Gargee
Dear Qi, Your code is quite helpful, yet I have a question about transfomation matrix in the unfold class. You have written B = np.dot(np.linalg.inv(M).T, b) , but I found b=np.dot(M,B) i.e. B = np.dot(np.linalg.inv(M), b) in Phys. Rev. B 85, 085201 (2012), which lead differences of K sampling in supercell brillioun zone between two cases. Could you tell me why you choose transformation matrix M.T?
Thank you sincerely, Xu