def create_model(translation_vectors, comment, lattice_parameter, units=1, atom_type='Si', filename=None): a = lattice_parameter eps = 1e-6 points = [] for x in range(units+1): for y in range(units+1): for z in range(units+1): for tv in translation_vectors: point = ( (tv[0]+x)*a, (tv[1]+y)*a, (tv[2]+z)*a ) if point[0] <= units*a+eps and point[1] <= units*a+eps and point[2] <= units*a+eps: points.append(point) atoms = [Atom(i, atom_type, x,y,z) for i,(x,y,z) in enumerate(points)] m = Model(comment=comment, xsize=units*a, ysize=units*a, zsize=units*a, atoms=atoms) m.recenter() return m