Coverage for gpaw/test/lcao/test_local_orbitals.py: 100%
36 statements
« prev ^ index » next coverage.py v7.7.1, created at 2025-07-08 00:17 +0000
« prev ^ index » next coverage.py v7.7.1, created at 2025-07-08 00:17 +0000
1import pytest
2from ase.build import graphene_nanoribbon, molecule
3from gpaw import GPAW
4from gpaw.lcao.local_orbitals import LocalOrbitals
5from gpaw.mpi import world
7pytestmark = pytest.mark.skipif(world.size > 1,
8 reason='world.size > 1')
11@pytest.mark.old_gpaw_only
12def test_gamma_point_calculation():
13 atoms = molecule('C6H6', vacuum=2)
15 calc = GPAW(mode='lcao',
16 xc='LDA',
17 basis='szp(dzp)',
18 txt=None)
19 atoms.calc = calc
20 atoms.get_potential_energy()
22 los = LocalOrbitals(calc)
24 los.subdiagonalize('C', groupby='energy')
25 group_energies = sorted(los.groups.keys())
27 # Assert minimal model contains only pz-LOs
28 los.take_model(minimal=True)
29 assert los.indices == los.groups[group_energies[3]]
30 assert len(los.indices) == 6
32 # Assert extended model also contains +2 d-LOs
33 los.take_model(minimal=False)
34 assert los.indices == (
35 los.groups[group_energies[3]]
36 + los.groups[group_energies[-3]]
37 + los.groups[group_energies[-1]])
38 assert len(los.indices) == (6 * 3)
41@pytest.mark.old_gpaw_only
42def test_k_point_calculation():
43 atoms = graphene_nanoribbon(2, 1, type='zigzag', saturated=True,
44 C_H=1.1, C_C=1.4, vacuum=2)
46 calc = GPAW(mode='lcao',
47 xc='LDA',
48 basis='szp(dzp)',
49 txt=None,
50 kpts={'size': (1, 1, 11),
51 'gamma': True},
52 symmetry={'point_group': False,
53 'time_reversal': True})
54 atoms.calc = calc
55 atoms.get_potential_energy()
57 los = LocalOrbitals(calc)
59 los.subdiagonalize('C', groupby='symmetry')
60 group_energies = sorted(los.groups.keys())
62 # Assert minimal model contains only pz-LOs
63 los.take_model(minimal=True)
64 assert los.indices == los.groups[group_energies[3]]
65 assert len(los.indices) == 4
67 # Assert extended model also contains d-LOs
68 los.take_model(minimal=False)
69 assert los.indices == (
70 los.groups[group_energies[3]]
71 + los.groups[group_energies[-3]]
72 + los.groups[group_energies[-1]])
73 assert len(los.indices) == (4 * 3)