Exemplo n.º 1
0
 def init_validate(self, hops, boundary_conditions=None):
     assert isinstance(hops, collections.Sequence)
     hops = tuple(sorted(hops, key=lambda hop: (hop.species, hop.source, hop.destination)))
     assert all([isinstance(hop, SiteHop) for hop in hops])
     if boundary_conditions is not None:
         boundary_conditions = tuple(boundary_conditions)
         assert valid_boundary_conditions(boundary_conditions, len(boundary_conditions))
     return (hops, boundary_conditions)
Exemplo n.º 2
0
    def init_validate(self, boundary_conditions, lattice):
        assert isinstance(lattice, Lattice)
        assert valid_boundary_conditions(boundary_conditions, len(lattice.dimensions))
        operators = (
            BasicOperator([SiteHop(LatticeSite((0, 0)), LatticeSite((1, 0)), 0)], boundary_conditions),
            BasicOperator([SiteHop(LatticeSite((1, 0)), LatticeSite((0, 0)), 0)], boundary_conditions),
            BasicOperator([SiteHop(LatticeSite((0, 0)), LatticeSite((0, 1)), 0)], boundary_conditions),
            BasicOperator([SiteHop(LatticeSite((0, 1)), LatticeSite((0, 0)), 0)], boundary_conditions),
            BasicOperator([SiteHop(LatticeSite((0, 0)), LatticeSite((0, 1)), 0), SiteHop(LatticeSite((1, 1)), LatticeSite((1, 0)), 0)], boundary_conditions),
            BasicOperator([SiteHop(LatticeSite((1, 0)), LatticeSite((1, 1)), 0), SiteHop(LatticeSite((0, 1)), LatticeSite((0, 0)), 0)], boundary_conditions),
        )

        # don't double-count plaquettes on a 2-leg ladder
        divx = 2 if (lattice.dimensions[0] == 2 and boundary_conditions[0] != 0) else 1
        divy = 2 if (lattice.dimensions[1] == 2 and boundary_conditions[1] != 0) else 1

        return (operators, divx, divy)