def evaluate_cumulant(cum, positive_times = [], leading_index=None, lang = "Python", arrays=None): """ """ t0 = time.time() A = cum.rewrite(gg) expr = CumulantExpr(A) expr = expr.evaluate() t1 = time.time() for tt in positive_times: expr = CumulantExpr(expr)._make_positive(tt) t2 = time.time() #a = leading_index[0] if leading_index is not None: D = expr._leading_index(leading_index) expr = D._getExpr() t3 = time.time() if lang == "Fortran": ss = fortran_code(expr.__str__()) elif lang == "Python": ss = python_code(expr.__str__(),arrays=arrays) else: raise Exception("Unknown language") print(t1-t0) print(t2-t1) print(t3-t2) return ss
def evaluate_cumulant(cum): """ """ A = cum.rewrite(gg) expr = CumulantExpr(A) expr = expr.evaluate() expr = CumulantExpr(expr)._make_positive(t1) expr = CumulantExpr(expr)._make_positive(t2) expr = CumulantExpr(expr)._make_positive(t3) D = expr._leading_index(a) expr = D._getExpr() ss = fortran_code(expr.__str__()) return ss
def evaluate_cumulant(cum, positive_times=[], leading_index=None, lang="Python", arrays=None): """ """ t0 = time.time() A = cum.rewrite(gg) expr = CumulantExpr(A) expr = expr.evaluate() t1 = time.time() for tt in positive_times: expr = CumulantExpr(expr)._make_positive(tt) t2 = time.time() #a = leading_index[0] if leading_index is not None: D = expr._leading_index(leading_index) expr = D._getExpr() t3 = time.time() if lang == "Fortran": ss = fortran_code(expr.__str__()) elif lang == "Python": ss = python_code(expr.__str__(), arrays=arrays) else: raise Exception("Unknown language") print(t1 - t0) print(t2 - t1) print(t3 - t2) return ss
print("Expression to evaluate: ") print(" ") print(" Tr_bath{", A, "W_eq}") print(" ") print("The expression is normalized by:") print(" ") print(" Tr_bath{", Anorm, "W_eq}") print(" ") A = A.rewrite(gg) expr = CumulantExpr(A) """ use option large=T to evaluate in T --> oo """ expr = expr.evaluate(large=T) expr = CumulantExpr(expr)._make_positive(tau) """ use the symetry of lineshape function in the exciton indices """ D = expr._leading_index(a) expr = D._getExpr() A = Anorm.rewrite(gg) norm = CumulantExpr(A) # -*- coding: utf-8 -*- """ use option large=T to evaluate in T --> oo """ norm = norm.evaluate(large=T) """ use the symetry of lineshape function in the exciton indices """ #D = CumulantExpr(expr)._leading_index(a) #expr = D._getExpr() print("Norm: ", norm) expr = (expr - norm).subs(t1, 0).simplify() info = False """