def _evaluate(J1, J2, J3, K): return ensure_real( J1 * sum(o.evaluate(context)() for o in self.operators_J1) + J2 * sum(o.evaluate(context)() for o in self.operators_J2) + J3 * sum(o.evaluate(context)() for o in self.operators_J3) + K * sum(o.evaluate(context)() for o in self.operators_K) )
def _evaluate(): if self.samesite: return .75 * (context[operators[0]] + context[operators[1]]) # i.e. .75 * rho, scaled by number of sites if summing else: return ensure_real( -.5 * soft_ensure_hermitian(context[operators[4]] + context[operators[5]]) + +.25 * context[operators[0]] + +.25 * context[operators[1]] + -.25 * context[operators[2]] + -.25 * context[operators[3]] )
def _evaluate(J, K, Jperp=None): # of course, Jperp only means what you think it does if the legs # are long in the x direction if Jperp is None: Jperp = J return ensure_real( -J * greenx / divx + -Jperp * greeny / divy + K * ringexchange / divx / divy )
def _evaluate(t, J, K, tperp=None, Jperp=None): # of course, tperp only means what you think it does if the legs # are long in the x direction if tperp is None: tperp = t if Jperp is None: Jperp = J return ensure_real( -t * greenx / divx + -tperp * greeny / divy + J * spinspinx / divx + Jperp * spinspiny / divy + 2 * K * ringexchange / divx / divy )