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