コード例 #1
0
ファイル: diamond_absorption.py プロジェクト: thonmaker/gpaw
calc.write('C.gpw', 'all')

eM1_ = 9.727
eM2_ = 9.548
w0_ = 10.7782
I0_ = 5.5472
w_ = 10.7532
I_ = 6.0686

# Macroscopic dielectric constant calculation
df = DielectricFunction('C.gpw',
                        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)
コード例 #2
0
a = 6.75 * Bohr
atoms = bulk('C', 'diamond', a=a)

calc = GPAW(mode='pw',
            kpts=(3, 3, 3),
            eigensolver='rmm-diis',
            occupations=FermiDirac(0.001))

atoms.set_calculator(calc)
atoms.get_potential_energy()
calc.write('C.gpw', 'all')

# 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)
コード例 #3
0
    fixdensity=True)
atoms.get_potential_energy()
calc.diagonalize_full_hamiltonian(nbands=70)  # Diagonalize Hamiltonian
calc.write('si_large.gpw', 'all')  # Write wavefunctions

# Getting absorption spectrum
df = DielectricFunction(calc='si_large.gpw', eta=0.05, domega0=0.02, ecut=150)
df.get_dielectric_function(filename='si_abs.csv')

# Getting macroscopic constant
df = DielectricFunction(
    calc='si_large.gpw',
    frequencies=[0.0],
    hilbert=False,
    eta=0.0001,
    ecut=150,
)

epsNLF, epsLF = df.get_macroscopic_dielectric_constant()

# Make table
epsrefNLF = 14.08  # From [1] in top
epsrefLF = 12.66  # From [1] in top

f = paropen('mac_eps.csv', 'w')
print(' , Without LFE, With LFE', file=f)
print('%s, %.6f, %.6f' % ('GPAW-linear response', epsNLF, epsLF), file=f)
print('%s, %.6f, %.6f' % ('[1]', epsrefNLF, epsrefLF), file=f)
print('%s, %.6f, %.6f' % ('Exp.', 11.90, 11.90), file=f)
f.close()
コード例 #4
0
ファイル: silicon_ABS.py プロジェクト: robwarm/gpaw-symm
calc.diagonalize_full_hamiltonian(nbands=70)  # Diagonalize Hamiltonian
calc.write('si_large.gpw', 'all')  # Write wavefunctions

# Getting absorption spectrum
df = DielectricFunction(calc='si_large.gpw',
                        eta=0.05,
                        domega0=0.02,
                        ecut=150)
df.get_dielectric_function(filename='si_abs.csv')

# Getting macroscopic constant
df = DielectricFunction(calc='si_large.gpw',
                        frequencies=[0.0],
                        hilbert=False,
                        eta=0.0001,
                        ecut=150,
                        )

epsNLF, epsLF = df.get_macroscopic_dielectric_constant()

# Make table
epsrefNLF = 14.08  # From [1] in top
epsrefLF = 12.66  # From [1] in top

f = paropen('mac_eps.csv', 'w')
print(' , Without LFE, With LFE', file=f)
print('%s, %.6f, %.6f' % ('GPAW-linear response', epsNLF, epsLF), file=f)
print('%s, %.6f, %.6f' % ('[1]', epsrefNLF, epsrefLF), file=f)
print('%s, %.6f, %.6f' % ('Exp.', 11.90, 11.90), file=f)
f.close()