Ejemplo n.º 1
0
def get_atoms_adsorbate():
    # We need the relaxed slab here!
    slab = Atoms([
        Atom('Cu',
             [-1.028468159509163, -0.432387156877267, -0.202086055768265]),
        Atom('Cu', [0.333333333333333, 0.333333333333333, -2.146500000000000]),
        Atom('Cu',
             [1.671531840490805, -0.432387156877287, -0.202086055768242]),
        Atom('Cu', [3.033333333333334, 0.333333333333333, -2.146500000000000]),
        Atom('Cu',
             [4.371531840490810, -0.432387156877236, -0.202086055768261]),
        Atom('Cu', [5.733333333333333, 0.333333333333333, -2.146500000000000]),
        Atom('Cu',
             [7.071531840490944, -0.432387156877258, -0.202086055768294]),
        Atom('Cu', [8.433333333333335, 0.333333333333333, -2.146500000000000]),
        Atom('Cu', [0.321531840490810, 1.905881433340708, -0.202086055768213]),
        Atom('Cu', [1.683333333333333, 2.671601923551318, -2.146500000000000]),
        Atom('Cu', [3.021531840490771, 1.905881433340728, -0.202086055768250]),
        Atom('Cu', [4.383333333333334, 2.671601923551318, -2.146500000000000]),
        Atom('Cu', [5.721531840490857, 1.905881433340735, -0.202086055768267]),
        Atom('Cu', [7.083333333333333, 2.671601923551318, -2.146500000000000]),
        Atom('Cu', [8.421531840490820, 1.905881433340739, -0.202086055768265]),
        Atom('Cu', [9.783333333333335, 2.671601923551318, -2.146500000000000]),
        Atom('Cu', [1.671531840490742, 4.244150023558601, -0.202086055768165]),
        Atom('Cu', [3.033333333333334, 5.009870513769302, -2.146500000000000]),
        Atom('Cu', [4.371531840490840, 4.244150023558694, -0.202086055768265]),
        Atom('Cu', [5.733333333333333, 5.009870513769302, -2.146500000000000]),
        Atom('Cu', [7.071531840490880, 4.244150023558786, -0.202086055768352]),
        Atom('Cu', [8.433333333333335, 5.009870513769302, -2.146500000000000]),
        Atom('Cu', [9.771531840491031, 4.244150023558828, -0.202086055768371]),
        Atom('Cu',
             [11.133333333333335, 5.009870513769302, -2.146500000000000]),
        Atom('Cu', [3.021531840490714, 6.582418613776583, -0.202086055768197]),
        Atom('Cu', [4.383333333333334, 7.348139103987287, -2.146500000000000]),
        Atom('Cu', [5.721531840490814, 6.582418613776629, -0.202086055768203]),
        Atom('Cu', [7.083333333333333, 7.348139103987287, -2.146500000000000]),
        Atom('Cu', [8.421531840490985, 6.582418613776876, -0.202086055768357]),
        Atom('Cu', [9.783333333333335, 7.348139103987287, -2.146500000000000]),
        Atom('Cu',
             [11.121531840490929, 6.582418613776676, -0.202086055768221]),
        Atom('Cu',
             [12.483333333333334, 7.348139103987287, -2.146500000000000]),
    ])
    mask = [a.position[2] < -1 for a in slab]
    slab.set_constraint(FixAtoms(mask=mask))

    a = 2.70
    c = 1.59 * a
    h = 1.85
    d = 1.10
    x = slab.positions[0, 2] / (c / 2) * 100

    molecule = Atoms('2N', positions=[(0., 0., h), (0., 0., h + d)])
    molecule.set_calculator(EMT())
    slab.extend(molecule)
    return slab
Ejemplo n.º 2
0
def get_atoms():
    srf = Atoms('Cu64', [(1.2763, 1.2763, 4.0000), (3.8290, 1.2763, 4.0000),
                         (6.3816, 1.2763, 4.0000), (8.9343, 1.2763, 4.0000),
                         (1.2763, 3.8290, 4.0000), (3.8290, 3.8290, 4.0000),
                         (6.3816, 3.8290, 4.0000), (8.9343, 3.8290, 4.0000),
                         (1.2763, 6.3816, 4.0000), (3.8290, 6.3816, 4.0000),
                         (6.3816, 6.3816, 4.0000), (8.9343, 6.3816, 4.0000),
                         (1.2763, 8.9343, 4.0000), (3.8290, 8.9343, 4.0000),
                         (6.3816, 8.9343, 4.0000), (8.9343, 8.9343, 4.0000),
                         (0.0000, 0.0000, 5.8050), (2.5527, 0.0000, 5.8050),
                         (5.1053, 0.0000, 5.8050), (7.6580, 0.0000, 5.8050),
                         (0.0000, 2.5527, 5.8050), (2.5527, 2.5527, 5.8050),
                         (5.1053, 2.5527, 5.8050), (7.6580, 2.5527, 5.8050),
                         (0.0000, 5.1053, 5.8050), (2.5527, 5.1053, 5.8050),
                         (5.1053, 5.1053, 5.8050), (7.6580, 5.1053, 5.8050),
                         (0.0000, 7.6580, 5.8050), (2.5527, 7.6580, 5.8050),
                         (5.1053, 7.6580, 5.8050), (7.6580, 7.6580, 5.8050),
                         (1.2409, 1.2409, 7.6081), (3.7731, 1.2803, 7.6603),
                         (6.3219, 1.3241, 7.6442), (8.8935, 1.2669, 7.6189),
                         (1.2803, 3.7731, 7.6603), (3.8188, 3.8188, 7.5870),
                         (6.3457, 3.8718, 7.6649), (8.9174, 3.8340, 7.5976),
                         (1.3241, 6.3219, 7.6442), (3.8718, 6.3457, 7.6649),
                         (6.3945, 6.3945, 7.6495), (8.9576, 6.3976, 7.6213),
                         (1.2669, 8.8935, 7.6189), (3.8340, 8.9174, 7.5976),
                         (6.3976, 8.9576, 7.6213), (8.9367, 8.9367, 7.6539),
                         (0.0582, 0.0582, 9.4227), (2.5965, -0.2051, 9.4199),
                         (5.1282, 0.0663, 9.4037), (7.6808, -0.0157, 9.4235),
                         (-0.2051, 2.5965, 9.4199), (2.1913, 2.1913, 9.6123),
                         (5.0046, 2.5955, 9.4873), (7.5409, 2.5336, 9.4126),
                         (0.0663, 5.1282, 9.4037), (2.5955, 5.0046, 9.4873),
                         (5.3381, 5.3381, 9.6106), (7.8015, 5.0682, 9.4237),
                         (-0.0157, 7.6808, 9.4235), (2.5336, 7.5409, 9.4126),
                         (5.0682, 7.8015, 9.4237), (7.6155, 7.6155, 9.4317)])
    c2 = Atoms('C2', [(3.2897, 3.2897, 10.6627), (4.2113, 4.2113, 10.6493)])
    srf.extend(c2)
    srf.pbc = (1, 1, 0)
    srf.set_cell([10.2106, 10.2106, 20.6572], scale_atoms=False)

    mask = [a.index < 32 for a in srf]
    c1 = FixedPlane(-1, (1 / np.sqrt(2), 1 / np.sqrt(2), 1))
    c2 = FixedPlane(-2, (1 / np.sqrt(2), 1 / np.sqrt(2), 1))
    constraint = FixAtoms(mask=mask)
    srf.set_constraint([constraint, c1, c2])
    return srf