예제 #1
0
                        frequencies=(0., ),
                        eta=0.001,
                        ecut=50,
                        hilbert=False)
eM1, eM2 = df.get_macroscopic_dielectric_constant()
equal(eM1, eM1_, 0.01)
equal(eM2, eM2_, 0.01)

# Absorption spectrum calculation RPA
df = DielectricFunction('C.gpw',
                        eta=0.25,
                        ecut=50,
                        frequencies=np.linspace(0, 24., 241),
                        hilbert=False)
a0, a = df.get_dielectric_function(filename=None)
df.check_sum_rule(a.imag)

equal(a0[0].real, eM1_, 0.01)
equal(a[0].real, eM2_, 0.01)
w, I = findpeak(np.linspace(0, 24., 241), a0.imag)
equal(w, w0_, 0.01)
equal(I / (4 * np.pi), I0_, 0.05)
w, I = findpeak(np.linspace(0, 24., 241), a.imag)
equal(w, w_, 0.01)
equal(I / (4 * np.pi), I_, 0.05)

a0, a = df.get_polarizability(filename=None)

w, I = findpeak(np.linspace(0, 24., 241), a0.imag)
equal(w, w0_, 0.01)
equal(I, I0_, 0.01)
# Macroscopic dielectric constant calculation
df = DielectricFunction('C.gpw', frequencies=(0.,), eta=0.001, ecut=200,
                        hilbert=False)
eM1, eM2 = df.get_macroscopic_dielectric_constant()

eM1_ = 9.725
eM2_ = 9.068

equal(eM1, eM1_, 0.01)
equal(eM2, eM2_, 0.01)

# Absorption spectrum calculation
df = DielectricFunction('C.gpw', eta=0.25, ecut=200,
                        frequencies=np.linspace(0, 24., 241), hilbert=False)
b0, b = df.get_dielectric_function(filename=None)
df.check_sum_rule(b.imag)

equal(b0[0].real, eM1_, 0.01)
equal(b[0].real, eM2_, 0.01)

a0, a = df.get_polarizability(filename=None)

df_ws = DielectricFunction('C.gpw', eta=0.25, ecut=200,
                           frequencies=np.linspace(0, 24., 241), hilbert=False,
                           truncation='wigner-seitz')

a0_ws, a_ws = df_ws.get_polarizability(filename=None)

w0_ = 10.778232265664668
I0_ = 5.5467658790816268
w_ = 10.9530497246
            xc='LDA')

atoms.set_calculator(calc)
atoms.get_potential_energy()
t2 = time.time()

# Excited state calculation
q = np.array([1/4.,0.,0.])
w = np.linspace(0, 24, 241)

df = DielectricFunction(calc=calc, frequencies=w, eta=0.2, ecut=50)
eels_NLFC_w, eels_LFC_w = df.get_eels_spectrum(filename='EELS_Al', q_c=q)
df_NLFC_w, df_LFC_w = df.get_dielectric_function(q_c=q)


df.check_sum_rule(spectrum=np.imag(df_NLFC_w))
df.check_sum_rule(spectrum=np.imag(df_LFC_w))

df.check_sum_rule(spectrum=eels_NLFC_w)
df.check_sum_rule(spectrum=eels_LFC_w)
#df.write('Al.pckl')

t3 = time.time()

print('')
print('For ground  state calc, it took', (t2 - t1) / 60, 'minutes')
print('For excited state calc, it took', (t3 - t2) / 60, 'minutes')

d = np.loadtxt('EELS_Al',delimiter=',')

# New results are compared with test values
eM1, eM2 = df.get_macroscopic_dielectric_constant()

eM1_ = 9.725
eM2_ = 9.068

equal(eM1, eM1_, 0.01)
equal(eM2, eM2_, 0.01)

# Absorption spectrum calculation
df = DielectricFunction('C.gpw',
                        eta=0.25,
                        ecut=200,
                        frequencies=np.linspace(0, 24., 241),
                        hilbert=False)
b0, b = df.get_dielectric_function(filename=None)
df.check_sum_rule(b.imag)

equal(b0[0].real, eM1_, 0.01)
equal(b[0].real, eM2_, 0.01)

a0, a = df.get_polarizability(filename=None)

df_ws = DielectricFunction('C.gpw',
                           eta=0.25,
                           ecut=200,
                           frequencies=np.linspace(0, 24., 241),
                           hilbert=False,
                           truncation='wigner-seitz')

a0_ws, a_ws = df_ws.get_polarizability(filename=None)