QijingZheng / VaspBandUnfolding

A collection of python scripts that deal with VASP outpts, e.g. WAVECAR, POTCAR etc.
198 stars 89 forks source link

Confusion about transformation matrix #13

Open chengyangXu opened 3 years ago

chengyangXu commented 3 years ago

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

QijingZheng commented 3 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)    
chengyangXu commented 3 years ago

Thank you for your reply!

Gargee-123 commented 2 years ago

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