[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