We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
At some point it would be nice to implement trigonal CFs for the full d-electron shell.
Below are my notes. It might be useful for users to write them in the real harmonic basis and then return the converted ones.
#!/usr/bin/env python import numpy as np from numpy import exp as e import scipy import edrixs # z along face surface normal ten_dq = 10 # cubic distortion delta = 1 # trigonal distortion from numpy import sqrt # write eigenvections in real harmonic basis using edrixs convention tmat_r2trig = np.array([[1, 0, 0, 0, 0], # z^2 [0, 0,sqrt(1/3),-sqrt(2/3), 0], # zx [0, sqrt(1/3), 0, 0,-sqrt(2/3)], # zy [0, 0,sqrt(2/3), sqrt(1/3), 0], # x^2-y^2 [0,-sqrt(2/3), 0, 0,-sqrt(1/3)]], # xy dtype=np.complex128) # invert matrix tmat_trig2tr = np.conj(np.transpose(tmat_r2trig)) # create matrix in trigonal basis tmp_trig = np.zeros((5, 5), dtype=np.complex) ind = np.arange(5) # energies are diagaonal in trigonal basis tmp_trig[ind, ind] = np.array([-0.4*ten_dq, delta-0.4*ten_dq, delta-0.4*ten_dq, 0.6*ten_dq, 0.6*ten_dq]) # convert to real harmonic basis tmp = edrixs.cb_op(tmp_trig, tmat_trig2tr) cf = np.zeros((10, 10), dtype=np.complex) cf[0:10:2, 0:10:2] = tmp cf[1:10:2, 1:10:2] = tmp #z^2 zx zy x^2-y^2 xy e, v = scipy.linalg.eigh(tmp) for energy, vec in zip(e, v.T): print(f"{energy:.2f} {vec.round(3).real}") # apical atom along z ten_dq = 10 # cubic distortion delta = 1 # trigonal distortion from numpy import sqrt phi = 2*np.pi/3 ep = np.exp(1j*phi)/np.sqrt(3) em = np.exp(-1j*phi)/np.sqrt(3) e0 = 1/np.sqrt(3) # write eigenvections in real harmonic basis using edrixs convention tmat_r2trig = np.array([[0, 0, 0, 1, 0], [e0, em, ep, 0, 0], [e0, ep, em, 0, 0], [0, 0, 0, 0, 1], [e0, e0, e0, 0, 0]], dtype=np.complex128) # invert matrix tmat_trig2tr = np.conj(np.transpose(tmat_r2trig)) # create matrix in trigonal basis tmp_trig = np.zeros((5, 5), dtype=np.complex) ind = np.arange(5) # energies are diagaonal in trigonal basis tmp_trig[ind, ind] = np.array([-0.4*ten_dq, delta-0.4*ten_dq, delta-0.4*ten_dq, 0.6*ten_dq, 0.6*ten_dq]) # convert to real harmonic basis tmp = edrixs.cb_op(tmp_trig, tmat_trig2tr) cf = np.zeros((10, 10), dtype=np.complex) cf[0:10:2, 0:10:2] = tmp cf[1:10:2, 1:10:2] = tmp #z^2 zx zy x^2-y^2 xy e, v = scipy.linalg.eigh(tmp) for energy, vec in zip(e, v.T): print(f"{energy:.2f} {vec.round(3).real}")
See also: https://arxiv.org/pdf/cond-mat/0505214.pdf section 3.4.1 Crystal Field
The text was updated successfully, but these errors were encountered:
@mpmdean Thanks for the suggestion! I will look into this later.
Sorry, something went wrong.
No branches or pull requests
At some point it would be nice to implement trigonal CFs for the full d-electron shell.
Below are my notes. It might be useful for users to write them in the real harmonic basis and then return the converted ones.
See also:
https://arxiv.org/pdf/cond-mat/0505214.pdf
section 3.4.1 Crystal Field
The text was updated successfully, but these errors were encountered: