1 2from ase import Atom, Atoms 3 4from gpaw import GPAW 5from gpaw.test import equal 6 7 8def test_aedensity(in_tmp_dir): 9 try: 10 calc = GPAW('NaCl.gpw') 11 NaCl = calc.get_atoms() 12 e = NaCl.get_potential_energy() 13 except IOError: 14 h = 0.21 # gridspacing 15 a = [6.5, 6.5, 7.7] # unit cell 16 d = 2.3608 # experimental bond length 17 18 NaCl = Atoms([Atom('Na', [0, 0, 0]), 19 Atom('Cl', [0, 0, d])], 20 pbc=False, cell=a) 21 NaCl.center() 22 calc = GPAW(h=h, xc='LDA', nbands=5, 23 setups={'Na': '1'}, 24 convergence={'eigenstates': 1e-6}, spinpol=1) 25 26 NaCl.calc = calc 27 e = NaCl.get_potential_energy() 28 calc.write('NaCl.gpw') 29 30 equal(e, -4.907, 0.002) 31 32 dv = NaCl.get_volume() / calc.get_number_of_grid_points().prod() 33 nt1 = calc.get_pseudo_density(gridrefinement=1) 34 Zt1 = nt1.sum() * dv 35 nt2 = calc.get_pseudo_density(gridrefinement=2) 36 Zt2 = nt2.sum() * dv / 8 37 print('Integral of pseudo density:', Zt1, Zt2) 38 equal(Zt1, Zt2, 1e-12) 39 40 for gridrefinement in [1, 2, 4]: 41 n = calc.get_all_electron_density(gridrefinement=gridrefinement) 42 Z = n.sum() * dv / gridrefinement**3 43 print('Integral of all-electron density:', Z) 44 equal(Z, 28, 1e-5) 45