Coverage for gpaw/test/test_complex.py: 91%

23 statements  

« prev     ^ index     » next       coverage.py v7.7.1, created at 2025-07-14 00:18 +0000

1from gpaw import GPAW, restart, FD 

2from ase.build import molecule 

3import pytest 

4 

5 

6def test_complex(in_tmp_dir, gpaw_new): 

7 Eini0 = -17.8037610364 

8 energy_eps = 0.0005 

9 

10 calc = GPAW(xc='LDA', 

11 h=0.21, 

12 convergence={'eigenstates': 3.5e-5, 'energy': energy_eps}, 

13 mode=FD(force_complex_dtype=True)) 

14 

15 mol = molecule('N2') 

16 mol.center(vacuum=3.0) 

17 mol.calc = calc 

18 

19 Eini = mol.get_potential_energy() 

20 assert Eini == pytest.approx( 

21 Eini0, abs=energy_eps * calc.get_number_of_electrons()) 

22 

23 calc.write('N2_complex.gpw', mode='all') 

24 

25 mol, calc = restart('N2_complex.gpw') 

26 

27 if gpaw_new: 

28 calc.dft.converge({'eigenstates': 3.5e-9, 

29 'energy': energy_eps}) 

30 assert calc.dft.ibzwfs.dtype == complex 

31 else: 

32 assert calc.wfs.dtype == complex 

33 assert calc.wfs.kpt_u[0].psit_nG.dtype == complex 

34 

35 convergence = {'eigenstates': 3.5e-9, 'energy': energy_eps} 

36 mol.calc = calc.new(convergence=convergence) 

37 E = mol.get_potential_energy() 

38 assert E == pytest.approx( 

39 Eini, abs=energy_eps * calc.get_number_of_electrons())