Coverage for gpaw/test/ri/test_c.py: 100%
40 statements
« prev ^ index » next coverage.py v7.7.1, created at 2025-07-19 00:19 +0000
« prev ^ index » next coverage.py v7.7.1, created at 2025-07-19 00:19 +0000
1import pytest
2import numpy as np
3from gpaw.mpi import world
4from gpaw.atom.generator2 import generate
7@pytest.mark.hybrids
8@pytest.mark.skipif(world.size > 1, reason='Not parallelized')
9def test_diamond(in_tmp_dir, add_cwd_to_setup_paths):
11 from gpaw.atom.generator import Generator
12 from gpaw.atom.configurations import parameters
13 from gpaw.atom.basis import BasisMaker
15 args = parameters['C']
16 generator = Generator('C', 'PBE', configuration='1s2',
17 gpernode=2 * Generator.default_gpernode)
18 setup = generator.run(write_xml=True, exx=True, **args)
19 bm = BasisMaker.from_setup_and_generator(setup, generator)
20 basis = bm.generate(zetacount=4, polarizationcount=2,
21 energysplit=0.0001, rcutmax=12.0)
22 basis.write_xml()
24 parameters = {'symbol': 'C', 'Z': 6, 'xc': 'PBE',
25 'projectors': '2s,s,2p,p,d', 'radii': [1.2],
26 'scalar_relativistic': False, 'r0': 1.2,
27 'v0': None,
28 'nderiv0': 2, 'pseudize': ('poly', 4),
29 'omega': 0.11}
31 gen = generate(**parameters)
32 setup = gen.make_paw_setup()
33 setup.write_xml()
35 from gpaw import GPAW
36 from ase import Atoms
37 from ase.build import bulk
38 from ase.units import Hartree
40 atoms = Atoms('C')
41 atoms.center(vacuum=3)
42 # calc = GPAW(mode=PW(700), xc='HSE06', charge=4)
43 # atoms.calc = calc
44 # atoms.get_potential_energy()
46 calc = GPAW(h=0.12, mode='lcao', basis='qzdp',
47 xc='HSE06WIP:backend=ri', charge=4)
48 atoms.calc = calc
49 atoms.get_potential_energy()
51 # TURBOMOLE C^4+ calculation aug-cc-pV5Z
52 tm_eigs = [-68.5345, -61.6901]
53 tm_e = -32.35980873243 * Hartree
55 assert np.allclose(tm_eigs, calc.get_eigenvalues()[:2], atol=0.1)
56 assert np.allclose(tm_e, calc.hamiltonian.setups.Eref * Hartree +
57 atoms.get_potential_energy(), atol=0.1)
59 atoms = bulk('C', 'diamond')
60 atoms.calc = GPAW(kpts={'size': (2, 2, 2), 'gamma': True},
61 mode='lcao', basis='dzp',
62 xc='HSE06WIP:backend=ri')
64 # NOTE: HSE06 does not yet work. This is just a placeholder for
65 # integration test.
66 assert np.allclose(atoms.get_potential_energy(), 3.291175, atol=4e-5)
68 calc = atoms.calc
70 setup = calc.density.setups[0]
71 # With w=0 the values should agree exactly. For small systems
72 # with small paw-cutoffs, the values are very close nevertheless
73 # Thus assert with a moderate tolerance.
74 assert np.allclose(setup.M_pp,
75 setup.M_wpp[0.11],
76 rtol=1e-2, atol=1e-4)
78 assert np.allclose(setup.X_p, setup.X_wp[0.11], atol=1e-5)