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

1import numpy as np 

2from ase.build import make_supercell, niggli_reduce 

3 

4 

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