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
« 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
6def test_complex(in_tmp_dir, gpaw_new):
7 Eini0 = -17.8037610364
8 energy_eps = 0.0005
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))
15 mol = molecule('N2')
16 mol.center(vacuum=3.0)
17 mol.calc = calc
19 Eini = mol.get_potential_energy()
20 assert Eini == pytest.approx(
21 Eini0, abs=energy_eps * calc.get_number_of_electrons())
23 calc.write('N2_complex.gpw', mode='all')
25 mol, calc = restart('N2_complex.gpw')
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
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())