/usr/share/pyshared/ase/cluster/octahedron.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 | """
Function-like objects that creates cubic clusters.
"""
import numpy as np
from ase.cluster.cubic import FaceCenteredCubic
from ase.cluster.compounds import L1_2
def Octahedron(symbol, length, cutoff=0, latticeconstant=None, alloy=False):
"""
Returns Face Centered Cubic clusters of the octahedral class depending
on the choice of cutoff.
Type Condition
---- ---------
Regular octahedron cutoff = 0
Truncated octahedron cutoff > 0
Regular truncated octahedron length = 3 * cutoff + 1
Cuboctahedron length = 2 * cutoff + 1
Parameters
----------
symbol: The chemical symbol or atomic number of the element(s).
length: Number of atoms on the square edges of the complete octahedron.
cutoff (optional): Number of layers cut at each vertex.
latticeconstant (optional): The lattice constant. If not given,
then it is extracted form ase.data.
alloy (optional): If true the L1_2 structure is used. Default is False.
"""
# Check length and cutoff
if length < 2:
raise ValueError("The lenght must be greater than one.")
if cutoff < 0 or length < 2 * cutoff + 1:
raise ValueError("The cutoff must fullfill: > 0 and <= (length - 1) / 2.")
# Create cluster
surfaces = [(1,1,1), (1,0,0)]
if length % 2 == 0:
center = np.array([0.5, 0.5, 0.5])
layers = [length/2, length - 1 - cutoff]
else:
center = np.array([0.0, 0.0, 0.0])
layers = [(length - 1)/2, length - 1 - cutoff]
if not alloy:
return FaceCenteredCubic(symbol, surfaces, layers, latticeconstant, center)
else:
return L1_2(symbol, surfaces, layers, latticeconstant, center)
|