Пример #1
0
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