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)
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)