This file is indexed.

/usr/share/pyshared/ase/examples/neb1.py is in python-ase 3.6.0.2515-1.1.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
from ase import *
from math import sqrt

a = 4.0614
b = a / sqrt(2)
h = b / 2
initial = Atoms([Atom('Al', (0, 0, 0)),
                 Atom('Al', (a / 2, b / 2, -h))],
                pbc=(1, 1, 0),
                cell=(a, b, 2 * h))
initial *= (2, 2, 2)
initial.append(Atom('Al', (a / 2, b / 2, 3 * h)))

#view(initial)

#initial.set_cell((2*2,2*b,)
final = initial.copy()
final.positions[-1, 1] += b

# Construct a list of images:
images = [initial]
for i in range(5):
    images.append(initial.copy())
images.append(final)

# Make a mask of zeros and ones that select the dynamic atoms (the
# three topmost layers):
mask = initial.positions[:, 2] < 0.5 * h
constraint = FixAtoms(mask=mask)
print mask
print 'Fixed atoms:', constraint.fixed

for image in images:
    # Let all images use an EMT calculator:
    image.set_calculator(EMT())
    image.set_constraint(constraint)

# Relax the initial and final states:
QuasiNewton(initial).run(fmax=0.05)
QuasiNewton(final).run(fmax=0.05)

# Create a Nudged Elastic Band:
neb = NEB(images)

# Mak a starting guess for the minimum energy path (a straight line
# from the initial to the final state):
neb.interpolate()

# Use MDMin to relax the path:
minimizer = QuasiNewton(neb)
minimizer.run(fmax=0.05)

# Write the path to a trajectory:
traj = PickleTrajectory('jump1.traj', 'w')
neb.write(traj)