def get_Y(lim_low, lim_high): X = np.linspace(-5., 5., 600*2) Y = np.zeros(600*2) YU = np.zeros(600*2) YD = np.zeros(600*2) Yp = np.zeros(600*2) YpU = np.zeros(600*2) YpD = np.zeros(600*2) no_eprimes = 0 for c in cells_to_check: print c zero = offsets[c]['VBM'] zeros_before = int(np.fabs(zero/dE)) zeros_after = 600 - zeros_before #plt.plot([offsets[c]['Ef']-offsets[c]['VBM'],]*2, [-30,30], 'r--') for eprime in eprime_dict[c]: s = get_spin_mom(eprime, c) if lim_low <= np.fabs(s) <= lim_high: print s, eprime x, y_u, y_d = get_at_pdos(c, eprime) Y_u = np.concatenate((np.zeros(zeros_before), y_u, np.zeros(zeros_after)), axis=0) Y_d = np.concatenate((np.zeros(zeros_before), y_d, np.zeros(zeros_after)), axis=0) Y = Y + Y_u - Y_d if to_switch[c][eprime]: print c, eprime, 'switch' YU -= Y_d YD -= Y_u else: YU += Y_u YD += Y_d if 'ox' not in c: at_e = ReadStruct('../../crystal_files/INPUT_'+c, 'crystal').atoms[eprime-1] p_str= ReadStruct('../../crystal_files/INPUT_'+c+'p', 'crystal') i_x, at_p = get_similar(at_e, p_str) x, yy_u, yy_d = get_at_pdos(c+'p', i_x) Yp_u = np.concatenate((np.zeros(zeros_before), yy_u, np.zeros(zeros_after)), axis=0) Yp_d = np.concatenate((np.zeros(zeros_before), yy_d, np.zeros(zeros_after)), axis=0) Yp = Yp + Yp_u - Yp_d if to_switch[c][eprime]: print c, eprime, 'switch' YpU -= Yp_d YpD -= Yp_u else: YpU += Yp_u YpD += Yp_d no_eprimes = no_eprimes + 1 return X, YU, YD, no_eprimes
YD = np.zeros(600*2) Yp = np.zeros(600*2) YpU = np.zeros(600*2) YpD = np.zeros(600*2) no_eprimes = 0 for c in cells_to_check: print c zero = offsets[c]['VBM'] zeros_before = int(np.fabs(zero/dE)) zeros_after = 600 - zeros_before #plt.plot([offsets[c]['Ef']-offsets[c]['VBM'],]*2, [-30,30], 'r--') for eprime in eprime_dict[c]: s = get_spin_mom(eprime, c) #lims = (0.0, 1.0) #lims = (0.0, 0.2) #lims = (0.2, 0.4) #lims = (0.4, 0.6) #lims = (0.6, 0.8) lims = (0.6, 1.0) if lims[0] <= np.fabs(s) <= lims[1]: print s, eprime x, y_u, y_d = get_at_pdos(c, eprime) Y_u = np.concatenate((np.zeros(zeros_before), y_u, np.zeros(zeros_after)), axis=0) Y_d = np.concatenate((np.zeros(zeros_before), y_d, np.zeros(zeros_after)), axis=0)
YD = np.zeros(600*2) Yp = np.zeros(600*2) YpU = np.zeros(600*2) YpD = np.zeros(600*2) no_bdimers = 0 for c in cells_to_check: print c zero = offsets[c]['VBM'] zeros_before = int(np.fabs(zero/dE)) zeros_after = 600 - zeros_before #plt.plot([offsets[c]['Ef']-offsets[c]['VBM'],]*2, [-30,30], 'r--') for bdimer in bdimer_dict[c]: s = get_spin_mom(bdimer, c) lims = (0.0, 1.0) lims = (0.0, 0.4) #lims = (0.2, 0.4) #lims = (0.4, 0.6) #lims = (0.6, 0.8) #lims = (0.6, 1.0) if lims[0] <= np.fabs(s) <= lims[1]: print s, bdimer x, y_u, y_d = get_at_pdos(c, bdimer) Y_u = np.concatenate((np.zeros(zeros_before), y_u, np.zeros(zeros_after)), axis=0) Y_d = np.concatenate((np.zeros(zeros_before), y_d, np.zeros(zeros_after)), axis=0)
Yp = np.zeros(600*2) YpU = np.zeros(600*2) YpD = np.zeros(600*2) no_dimers = 0 for c in cells_to_check: print '\n', c zero = offsets[c]['VBM'] zeros_before = int(np.fabs(zero/dE)) zeros_after = 600 - zeros_before #plt.plot([offsets[c]['Ef']-offsets[c]['VBM'],]*2, [-30,30], 'r--') for dimer in dimer_dict[c]: print dimer, s = get_spin_mom(dimer, c) lims = (0.0, 1.0) print s, #lims = (0.0, 0.4) #lims = (0.2, 0.4) #lims = (0.4, 0.6) #lims = (0.6, 0.8) lims = (0.6, 1.0) if lims[0] <= np.fabs(s) <= lims[1]: print s, dimer x, y_u, y_d = get_at_pdos(c, dimer) Y_u = np.concatenate((np.zeros(zeros_before), y_u, np.zeros(zeros_after)), axis=0) Y_d = np.concatenate((np.zeros(zeros_before), y_d,
'c2': [82], 'c3': [58, 66], 'c4': [65, 119], 'c5': [82, 102], 'c6': [66, 101, 119], 'c2ox': [72], 'c3ox': [65], 'c5ox': [65], } print 'Eprimes' for c, eprimes in eprime_dict.items(): print c for eprime in eprimes: print '\t', eprime, s_m = get_spin_mom(eprime, c) #print '(s = ', s_m, A0 = get_A0(eprime, c) #print 'A ', A0, ')' epr ,= plt.plot(s_m, 0.5, 'g.', label="$E'$") print 'Dimers' for c, dimers in dimer_dict.items(): print c for dimer in dimers: print '\t', dimer, s_m = get_spin_mom(dimer, c) #print '(s = ', s_m, A0 = get_A0(dimer, c) #print 'A ', A0, ')'
import math import matplotlib.pyplot as plt c1 = ReadStruct('../crystal_files/INPUT_hfo2si_c1') c1ox = ReadStruct('../crystal_files/INPUT_hfo2si_c1ox') c2ox = ReadStruct('../crystal_files/INPUT_hfo2si_c2ox') c3ox = ReadStruct('../crystal_files/INPUT_hfo2si_c3ox') pos_graph = {'Hf':0.5, 'Si':-0.5, 'O':0.} x, y = [], [] print 'cell 1' for no, at in enumerate(c1.atoms): spin_mom = get_spin_mom(no+1, 'hfo2si_c1') if math.fabs(spin_mom) > 0.5: print no+1, at y.append(pos_graph[at.species]) x.append(spin_mom) print 'cell 1 ox' for no, at in enumerate(c1ox.atoms): spin_mom = get_spin_mom(no+1, 'hfo2si_c1ox') if math.fabs(spin_mom) > 0.5: print no+1, at y.append(pos_graph[at.species]) x.append(spin_mom) print 'cell 2 ox' for no, at in enumerate(c2ox.atoms):