Statistiques
| Révision :

root / ase / calculators / jacapo / mayavis.py @ 13

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

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