Esempio n. 1
0
def test_lattice_immutable():
    lattice = Lattice((48, 2))
    with pytest.raises(Exception):
        lattice.x = 3
    with pytest.raises(Exception):
        del lattice.x
    with pytest.raises(Exception):
        lattice.dimensions[0] = 24
Esempio n. 2
0
def test_enforce_boundary_without_boundary_conditions():
    lattice = Lattice([24, 4])

    # BravaisSite
    assert lattice.enforce_boundary((24, 3), False) == (0, 3)
    assert lattice.enforce_boundary((-1, 4), False) == (23, 0)

    # LatticeSite
    assert lattice.enforce_boundary(LatticeSite((-1, 0)), False) == LatticeSite((23, 0))
    with pytest.raises(AssertionError):
        lattice.enforce_boundary(LatticeSite((-1, 0), 1), False)
Esempio n. 3
0
def test_lattice_iteration():
    lattice = Lattice((48, 4), 2)
    assert len(lattice) == (48 * 4 * 2)
    for i, s in enumerate(lattice):
        assert lattice[i] == s
        assert lattice.index(s) == i
        assert s in lattice
    assert i + 1 == len(lattice)

    with pytest.raises(ValueError):
        lattice[len(lattice)]

    assert LatticeSite((48, 5)) not in lattice
    assert LatticeSite((46, 2), 2) not in lattice

    assert lattice.count(LatticeSite((5, 3))) == 1
    assert lattice.count(LatticeSite((245, 2))) == 0
Esempio n. 4
0
def test_enforce_boundary_with_boundary_conditions():
    lattice = Lattice([8, 8], 2)

    # BravaisSite
    assert lattice.enforce_boundary((4, 4), (periodic, periodic)) == ((4, 4), 1)
    assert lattice.enforce_boundary((4, 4), (antiperiodic, antiperiodic)) == ((4, 4), 1)
    assert lattice.enforce_boundary((13, 4), (periodic, periodic)) == ((5, 4), 1)
    assert lattice.enforce_boundary((13, 4), (antiperiodic, periodic)) == ((5, 4), -1)
    assert lattice.enforce_boundary((-3, 4), (antiperiodic, periodic)) == ((5, 4), -1)
    assert lattice.enforce_boundary((-3, 4), (antiperiodic, open_bc)) == ((5, 4), -1)
    assert lattice.enforce_boundary((-3, 4), (open_bc, periodic)) == ((5, 4), 0)

    # LatticeSite
    assert lattice.enforce_boundary(LatticeSite((-3, 4), 1), (antiperiodic, periodic)) == (LatticeSite([5, 4], 1), -1)
Esempio n. 5
0
def test_lattice_json():
    lattice = Lattice([24, 2])
    assert json.dumps(lattice.to_json()) == '{"type": "Lattice", "dimensions": [24, 2], "basis_indices": 1}'
    assert Lattice.from_json(lattice.to_json()) == lattice
Esempio n. 6
0
def test_lattice_bravais_site_iteration():
    lattice = Lattice((4, 8), 3)
    for site, bs in zip(lattice, lattice.iterate_bravais_sites()):
        assert site.bi == 0
        assert site.bs == bs
    assert len(list(lattice.iterate_bravais_sites())) == lattice.total_bravais_sites()