Calculates the surface energy of several high symmetry surfaces and produces a broken-bond model fit. In latex form, the fit equations are given by: E_{FCC} (\vec{n}) = p_1 (4 \left( |x+y| + |x-y| + |x+z| + |x-z| + |z+y| +|z-y|\right)) + p_2 (8 \left( |x| + |y| + |z|\right)) + p_3 (2 ( |x+ 2y + z| + |x+2y-z| + |x-2y + z| + |x-2y-z| + |2x+y+z| + |2x+y-z| +|2x-y+z| +|2x-y-z| +|x+y+2z| +|x+y-2z| +|x-y+2z| +|x-y-2z| ) + c E_{BCC} (\vec{n}) = p_1 (6 \left( | x+y+z| + |x+y-z| + |-x+y-z| + |x-y+z| \right)) + p_2 (8 \left( |x| + |y| + |z|\right)) + p_3 (4 \left( |x+y| + |x-y| + |x+z| + |x-z| + |z+y| +|z-y|\right)) +c. In Python, these two fits take the following form: def BrokenBondFCC(params, index): import numpy x, y, z = index x = x / numpy.sqrt(x**2.+y**2.+z**2.) y = y / numpy.sqrt(x**2.+y**2.+z**2.) z = z / numpy.sqrt(x**2.+y**2.+z**2.) return params[0]*4* (abs(x+y) + abs(x-y) + abs(x+z) + abs(x-z) + abs(z+y) + abs(z-y)) + params[1]*8*(abs(x) + abs(y) + abs(z)) + params[2]*(abs(x+2*y+z) + abs(x+2*y-z) +abs(x-2*y+z) +abs(x-2*y-z) + abs(2*x+y+z) +abs(2*x+y-z) +abs(2*x-y+z) +abs(2*x-y-z) + abs(x+y+2*z) +abs(x+y-2*z) +abs(x-y+2*z) +abs(x-y-2*z))+params[3] def BrokenBondBCC(params, x, y, z): import numpy x, y, z = index x = x / numpy.sqrt(x**2.+y**2.+z**2.) y = y / numpy.sqrt(x**2.+y**2.+z**2.) z = z / numpy.sqrt(x**2.+y**2.+z**2.) return params[0]*6*(abs(x+y+z) + abs(x-y-z) + abs(x-y+z) + abs(x+y-z)) + params[1]*8*(abs(x) + abs(y) + abs(z)) + params[2]*4* (abs(x+y) + abs(x-y) + abs(x+z) + abs(x-z) + abs(z+y) + abs(z-y)) + params[3]