[gpaw-users] Convergence in dscf

Jakob Arendt Rasmussen jar at inano.au.dk
Sun May 16 12:00:20 CEST 2010


Hi

I'm having a really hard time trying to converge a dscf calculation. Is
there any tricks one can play on dscf? The script is pasted below.

Best,

Jakob Rasmussen.

####
from ase import *
from gpaw import *
from gpaw import dscf

calc=GPAW('neb2.gpw')
atoms=calc.get_atoms()
calc.wfs.initialize_wave_functions_from_restart_file()
calc.set(convergence={'energy': 0.01,'density': 1.0e-2, 'eigenstates':
1.0e-5, 'bands': 'occupied'})

E_gs = atoms.get_potential_energy()

n = 38
molecule = range(len(atoms))
wf_u = [kpt.psit_nG[n] for kpt in calc.wfs.kpt_u]
p_uai = [dict([(molecule[a], P_ni[n]) for a, P_ni in kpt.P_ani.items()])
for kpt in calc.wfs.kpt_u]

calc_es=GPAW('neb2.gpw',
txt='neb2_estmp.txt',
mixer=MixerSum(beta=0.0001, nmaxold=1),
eigensolver='cg',
convergence={'energy':100,
'density':100,
'eigenstates':1e-8,
'bands':-1})
atoms.set_calculator(calc_es)
lumo = dscf.AEOrbital(calc_es, wf_u, p_uai)
dscf.dscf_calculation(calc_es, [[1.0, lumo, 1]], atoms)
calc_es.attach(calc_es.write, 10, 'neb2_es_tmp.gpw')
E_es = atoms.get_potential_energy()

calc_es.set(txt='neb2_estmp2.txt',
mixer=MixerDif(beta=0.1),
eigensolver='rmm-diis',
convergence={'energy':100,
'density':100,
'eigenstates':1e-9,
'bands':-1})
E_es = atoms.get_potential_energy()

print 'Excitation energy: ', E_es-E_gs
####


More information about the gpaw-users mailing list