Coverage for gpaw/test/generic/test_Cu.py: 100%

24 statements  

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

1from ase import Atoms 

2from ase.units import Hartree 

3from gpaw import GPAW 

4from gpaw.test import gen 

5import pytest 

6import gpaw.mpi as mpi 

7 

8# Generate non-scalar-relativistic setup for Cu: 

9 

10 

11def test_generic_Cu(in_tmp_dir): 

12 setup = gen('Cu', scalarrel=False) 

13 

14 a = 8.0 

15 c = a / 2 

16 Cu = Atoms('Cu', [(c, c, c)], magmoms=[1], 

17 cell=(a, a, a), pbc=0) 

18 

19 calc = GPAW(mode='fd', 

20 h=0.2, 

21 setups={'Cu': setup}) 

22 Cu.calc = calc 

23 e = Cu.get_potential_energy() 

24 niter = calc.get_number_of_iterations() 

25 

26 e_4s_major = calc.get_eigenvalues(spin=0)[5] / Hartree 

27 e_3d_minor = calc.get_eigenvalues(spin=1)[4] / Hartree 

28 print(mpi.rank, e_4s_major, e_3d_minor) 

29 

30 # 

31 # The reference values are from: 

32 # 

33 # https://physics.nist.gov/PhysRefData/DFTdata/Tables/29Cu.html 

34 # 

35 if mpi.rank == 0: 

36 print(e_4s_major - e_3d_minor, -0.184013 - -0.197109) 

37 assert abs(e_4s_major - e_3d_minor - (-0.184013 - -0.197109)) < 0.001 

38 

39 print(e, niter) 

40 energy_tolerance = 0.0005 

41 assert e == pytest.approx(-0.271504, abs=energy_tolerance)