Coverage for gpaw/benchmark/generate_twisted.py: 20%
15 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 numpy as np
2from ase.build import make_supercell, niggli_reduce
5def make_heterostructure(atoms_a, atoms_b,
6 transa_cc, transb_cc,
7 straina_vv, interlayer_dist,
8 vacuum=5):
9 Satoms_a = make_supercell(atoms_a, transa_cc, wrap=True)
10 Satoms_b = make_supercell(atoms_b, transb_cc, wrap=True)
11 Satoms_a.set_cell(Satoms_a.cell @ straina_vv, scale_atoms=True)
12 deformb_vv = np.linalg.solve(Satoms_b.cell, Satoms_a.cell)
13 Satoms_b.set_cell(Satoms_b.cell @ deformb_vv, scale_atoms=True)
14 Satoms_a.set_tags(0)
15 Satoms_b.set_tags(1)
16 Satoms_b.positions[:, 2] += interlayer_dist
17 final_atoms = Satoms_a + Satoms_b
18 niggli_reduce(final_atoms)
19 final_atoms.center(axis=2, vacuum=vacuum)
20 return final_atoms