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
Esempio n. 2
0
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)
Esempio n. 3
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)
Esempio n. 4
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,
Esempio n. 5
0
               '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, ')'
Esempio n. 6
0
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):