Statistiques
| Révision :

root / ase / test / emt.py @ 13

Historique | Voir | Annoter | Télécharger (1,54 ko)

1 1 tkerber
import numpy as np
2 1 tkerber
from ase.calculators.emt import EMT
3 1 tkerber
from ase import Atoms
4 1 tkerber
5 1 tkerber
a = 3.60
6 1 tkerber
b = a / 2
7 1 tkerber
cu = Atoms('Cu',
8 1 tkerber
           positions=[(0, 0, 0)],
9 1 tkerber
           cell=[(0, b, b),
10 1 tkerber
                 (b, 0, b),
11 1 tkerber
                 (b, b, 0)],
12 1 tkerber
           pbc=1,
13 1 tkerber
           calculator=EMT())
14 1 tkerber
e0 = cu.get_potential_energy()
15 1 tkerber
print e0
16 1 tkerber
17 1 tkerber
cu.set_cell(cu.get_cell() * 1.001, scale_atoms=True)
18 1 tkerber
e1 = cu.get_potential_energy()
19 1 tkerber
V = a**3 / 4
20 1 tkerber
B = 2 * (e1 - e0) / 0.003**2 / V * 160.2
21 1 tkerber
print B
22 1 tkerber
23 1 tkerber
for i in range(4):
24 1 tkerber
    x = 0.001 * i
25 1 tkerber
    A = np.array([(x, b, b+x),
26 1 tkerber
                  (b, 0, b),
27 1 tkerber
                  (b, b, 0)])
28 1 tkerber
    cu.set_cell(A, scale_atoms=True)
29 1 tkerber
    e = cu.get_potential_energy() - e0
30 1 tkerber
    if i == 0:
31 1 tkerber
        print i, e
32 1 tkerber
    else:
33 1 tkerber
        print i, e, e / x**2
34 1 tkerber
35 1 tkerber
A = np.array([(0, b, b),
36 1 tkerber
              (b, 0, b),
37 1 tkerber
              (6*b, 6*b, 0)])
38 1 tkerber
R = np.zeros((2, 3))
39 1 tkerber
for i in range(1, 2):
40 1 tkerber
    R[i] = i * A[2] / 6
41 1 tkerber
print (Atoms('Cu2', positions=R,
42 1 tkerber
             pbc=1, cell=A,
43 1 tkerber
             calculator=EMT()).get_potential_energy() - 2 * e0) / 2
44 1 tkerber
45 1 tkerber
A = np.array([(0, b, b),
46 1 tkerber
              (b, 0, b),
47 1 tkerber
              (10*b, 10*b, 0)])
48 1 tkerber
R = np.zeros((3, 3))
49 1 tkerber
for i in range(1, 3):
50 1 tkerber
    R[i] = i * A[2] / 10
51 1 tkerber
print (Atoms('Cu3', positions=R,
52 1 tkerber
             pbc=1, cell=A,
53 1 tkerber
             calculator=EMT()).get_potential_energy() - 3 * e0) / 2
54 1 tkerber
55 1 tkerber
A = np.array([(0, b, b),
56 1 tkerber
              (b, 0, b),
57 1 tkerber
              (b, b, 0)])
58 1 tkerber
R = np.zeros((3, 3))
59 1 tkerber
for i in range(1, 3):
60 1 tkerber
    R[i] = i * A[2]
61 1 tkerber
print (Atoms('Cu3', positions=R,
62 1 tkerber
             pbc=(1, 1, 0), cell=A,
63 1 tkerber
             calculator=EMT()).get_potential_energy() - 3 * e0) / 2