def update_coordinates(self, coordinates=None):
if coordinates is not None:<EOL><INDENT>self.coordinates = coordinates<EOL><DEDENT>self.numc = len(self.coordinates)<EOL>self.distances = np.zeros((self.numc, self.numc), float)<EOL>self.deltas = np.zeros((self.numc, self.numc, <NUM_LIT:3>), float)<EOL>self.directions = np.zeros((self.numc, self.numc, <NUM_LIT:3>), float)<EOL>self.dirouters = np.zeros((self.numc, self.numc, <NUM_LIT:3>, <NUM_LIT:3>), float)<EOL>for index1, coordinate1 in enumerate(self.coordinates):<EOL><INDENT>for index2, coordinate2 in enumerate(self.coordinates):<EOL><INDENT>delta = coordinate1 - coordinate2<EOL>self.deltas[index1, index2] = delta<EOL>distance = np.linalg.norm(delta)<EOL>self.distances[index1, index2] = distance<EOL>if index1 != index2:<EOL><INDENT>tmp = delta/distance<EOL>self.directions[index1, index2] = tmp<EOL>self.dirouters[index1, index2] = np.outer(tmp, tmp)<EOL><DEDENT><DEDENT><DEDENT>
Update the coordinates (and derived quantities)

           Argument:
             coordinates  --  new Cartesian coordinates of the system