root / ase / test / crystal.py @ 4
Historique | Voir | Annoter | Télécharger (2,51 ko)
| 1 | 1 | tkerber | import numpy as np |
|---|---|---|---|
| 2 | 1 | tkerber | |
| 3 | 1 | tkerber | from ase.lattice.spacegroup import crystal |
| 4 | 1 | tkerber | |
| 5 | 1 | tkerber | |
| 6 | 1 | tkerber | # A diamond unit cell
|
| 7 | 1 | tkerber | diamond = crystal('C', [(0,0,0)], spacegroup=227, |
| 8 | 1 | tkerber | cellpar=[3.57, 3.57, 3.57, 90, 90, 90]) |
| 9 | 1 | tkerber | |
| 10 | 1 | tkerber | assert len(diamond) == 8 |
| 11 | 1 | tkerber | correct_pos = np.array([[ 0. , 0. , 0. ], |
| 12 | 1 | tkerber | [ 0. , 0.5 , 0.5 ], |
| 13 | 1 | tkerber | [ 0.5 , 0.5 , 0. ], |
| 14 | 1 | tkerber | [ 0.5 , 0. , 0.5 ], |
| 15 | 1 | tkerber | [ 0.75, 0.25, 0.75], |
| 16 | 1 | tkerber | [ 0.25, 0.25, 0.25], |
| 17 | 1 | tkerber | [ 0.25, 0.75, 0.75], |
| 18 | 1 | tkerber | [ 0.75, 0.75, 0.25]]) |
| 19 | 1 | tkerber | assert np.allclose(diamond.get_scaled_positions(), correct_pos)
|
| 20 | 1 | tkerber | |
| 21 | 1 | tkerber | |
| 22 | 1 | tkerber | |
| 23 | 1 | tkerber | # A CoSb3 skutterudite unit cell containing 32 atoms
|
| 24 | 1 | tkerber | skutterudite = crystal(('Co', 'Sb'), |
| 25 | 1 | tkerber | basis=[(0.25,0.25,0.25), (0.0, 0.335, 0.158)], |
| 26 | 1 | tkerber | spacegroup=204, cellpar=[9.04, 9.04, 9.04, 90, 90, 90]) |
| 27 | 1 | tkerber | |
| 28 | 1 | tkerber | assert len(skutterudite) == 32 |
| 29 | 1 | tkerber | |
| 30 | 1 | tkerber | correct_pos = np.array([[ 0.25 , 0.25 , 0.25 ], |
| 31 | 1 | tkerber | [ 0.75 , 0.75 , 0.25 ], |
| 32 | 1 | tkerber | [ 0.75 , 0.25 , 0.75 ], |
| 33 | 1 | tkerber | [ 0.25 , 0.75 , 0.75 ], |
| 34 | 1 | tkerber | [ 0.75 , 0.75 , 0.75 ], |
| 35 | 1 | tkerber | [ 0.25 , 0.25 , 0.75 ], |
| 36 | 1 | tkerber | [ 0.25 , 0.75 , 0.25 ], |
| 37 | 1 | tkerber | [ 0.75 , 0.25 , 0.25 ], |
| 38 | 1 | tkerber | [ 0. , 0.335, 0.158], |
| 39 | 1 | tkerber | [ 0. , 0.665, 0.158], |
| 40 | 1 | tkerber | [ 0. , 0.335, 0.842], |
| 41 | 1 | tkerber | [ 0. , 0.665, 0.842], |
| 42 | 1 | tkerber | [ 0.158, 0. , 0.335], |
| 43 | 1 | tkerber | [ 0.158, 0. , 0.665], |
| 44 | 1 | tkerber | [ 0.842, 0. , 0.335], |
| 45 | 1 | tkerber | [ 0.842, 0. , 0.665], |
| 46 | 1 | tkerber | [ 0.335, 0.158, 0. ], |
| 47 | 1 | tkerber | [ 0.665, 0.158, 0. ], |
| 48 | 1 | tkerber | [ 0.335, 0.842, 0. ], |
| 49 | 1 | tkerber | [ 0.665, 0.842, 0. ], |
| 50 | 1 | tkerber | [ 0.5 , 0.835, 0.658], |
| 51 | 1 | tkerber | [ 0.5 , 0.165, 0.658], |
| 52 | 1 | tkerber | [ 0.5 , 0.835, 0.342], |
| 53 | 1 | tkerber | [ 0.5 , 0.165, 0.342], |
| 54 | 1 | tkerber | [ 0.658, 0.5 , 0.835], |
| 55 | 1 | tkerber | [ 0.658, 0.5 , 0.165], |
| 56 | 1 | tkerber | [ 0.342, 0.5 , 0.835], |
| 57 | 1 | tkerber | [ 0.342, 0.5 , 0.165], |
| 58 | 1 | tkerber | [ 0.835, 0.658, 0.5 ], |
| 59 | 1 | tkerber | [ 0.165, 0.658, 0.5 ], |
| 60 | 1 | tkerber | [ 0.835, 0.342, 0.5 ], |
| 61 | 1 | tkerber | [ 0.165, 0.342, 0.5 ]]) |
| 62 | 1 | tkerber | |
| 63 | 1 | tkerber | assert np.allclose(skutterudite.get_scaled_positions(), correct_pos) |