root / ase / calculators / jacapo / mayavis.py @ 1
Historique | Voir | Annoter | Télécharger (1,86 ko)
1 |
'''
|
---|---|
2 |
mayavi interface to plot atoms, unit cells, and volumetric data
|
3 |
'''
|
4 |
import numpy as np |
5 |
from enthought.mayavi import mlab |
6 |
mlab.figure(1, bgcolor=(1,1,1), size=(350, 350)) |
7 |
mlab.clf() |
8 |
|
9 |
def plot_cylinder(start,end,tube_radius=0.1,color=(0,0,0)): |
10 |
|
11 |
mlab.plot3d([start[0],end[0]],[start[1],end[1]],[start[2],end[2]], |
12 |
tube_radius=tube_radius,color=color) |
13 |
|
14 |
|
15 |
def plot_atoms(atoms): |
16 |
|
17 |
for atom in atoms: |
18 |
pos = atom.get_position() |
19 |
mlab.points3d([pos[0]],[pos[1]],[pos[2]], |
20 |
scale_factor=4,
|
21 |
resolution=20,
|
22 |
color=(1,0,0), #this should get species specifuc |
23 |
scale_mode='none')
|
24 |
|
25 |
(u0,u1,u2) = atoms.get_cell() |
26 |
origin = np.array([0.0,0.0,0.0]) |
27 |
|
28 |
plot_cylinder(origin,u0) |
29 |
plot_cylinder(origin,u1) |
30 |
plot_cylinder(origin,u2) |
31 |
|
32 |
plot_cylinder(u0,u0+u1) |
33 |
plot_cylinder(u0,u0+u2) |
34 |
|
35 |
plot_cylinder(u1,u1+u0) |
36 |
plot_cylinder(u1,u1+u2) |
37 |
|
38 |
plot_cylinder(u2,u2+u0) |
39 |
plot_cylinder(u2,u2+u1) |
40 |
|
41 |
plot_cylinder(u0+u1,u0+u1+u2) |
42 |
plot_cylinder(u1+u2,u0+u1+u2) |
43 |
plot_cylinder(u0+u2,u0+u1+u2) |
44 |
mlab.show() |
45 |
|
46 |
|
47 |
|
48 |
|
49 |
|
50 |
|
51 |
if __name__ == '__main__': |
52 |
from ase.lattice.cubic import * |
53 |
|
54 |
from ase.lattice.bravais import cross |
55 |
import numpy as np |
56 |
|
57 |
a = np.array([0.5,0,0]) |
58 |
c = np.array([0,1,0],dtype=np.float) |
59 |
b1 = c - a |
60 |
|
61 |
a = np.array([0,1,0],np.float) |
62 |
c = np.array([0,0.5,0.5]) |
63 |
b2 = c - a |
64 |
|
65 |
a3 = np.array([2,1,1],np.float) |
66 |
|
67 |
a1 = cross(b1,a3) |
68 |
a2 = cross(b2,a3) |
69 |
v211 = FaceCenteredCubic(directions=[a1,a2,a3], |
70 |
miller=(None,None,[2,1,1]), |
71 |
symbol='Pd',
|
72 |
size=(1,1,2), |
73 |
debug=0)
|
74 |
|
75 |
uc = v211.get_cell() |
76 |
uc[2][2] += 10.0 |
77 |
v211.set_cell(uc) |
78 |
|
79 |
plot_atoms(v211.repeat((2,2,1))) |
80 |
|