def gfGSWLesser(kPoint, wRel, tAv, eta, damping): tRel = FT.tVecFromWVec(wRel) tRelNeg = tRel[:len(tRel) // 2 + 1] GFT = gfGSExpDamping(kPoint, tRelNeg, tAv, eta, damping) GFZero = np.zeros((len(tRel) // 2 - 1, len(tAv)), dtype='complex') GFT = np.concatenate((GFT, GFZero), axis=0) _, GFW = FT.FTOneOfTwoTimesPoint(tRel, GFT) return GFW
def gfCohWGreater(kVec, wRel, tAv, eta, damping, N): tRel = FT.tVecFromWVec(wRel) tRelPos = tRel[len(tRel) // 2:] GFT = gfCohExpDampingGreater(kVec, tRelPos, tAv, eta, damping, N) GFZero = np.zeros((len(kVec), len(tRel) // 2, len(tAv)), dtype='complex') GFT = np.concatenate((GFZero, GFT), axis=1) _, GFW = FT.FTOneOfTwoTimes(tRel, GFT) return GFW
def gfGSWGreater(kPoint, wRel, tAv, eta, damping): tRel = FT.tVecFromWVec(wRel) tRelPos = tRel[len(tRel) // 2:] GFT = gfGSExpDamping(kPoint, tRelPos, tAv, eta, damping) GFZero = np.zeros((len(tRel) // 2, len(tAv)), dtype='complex') GFT = np.concatenate((GFZero, GFT), axis=0) _, GFW = FT.FTOneOfTwoTimesPoint(tRel, GFT) return GFW
def gLesserW(kPoint, wRelVec, tAvArr, eta, damping, cohN): tVec = FT.tVecFromWVec(wRelVec) tVecNeg = tVec[:len(tVec) // 2 + 1] GFT = gLesserDamp(kPoint, tVecNeg, tAvArr, eta, damping, cohN) GFZero = np.zeros((len(tVec) // 2 - 1, len(tAvArr)), dtype='complex') GFT = np.concatenate((GFT, GFZero), axis=0) wVecCheck, GFW = FT.FTOneOfTwoTimesPoint(tVec, GFT) assert ((np.abs(wRelVec - wVecCheck) < 1e-10).all) return GFW
def gfCohWLesser(kVec, wRel, tAv, eta, damping, N): tRel = FT.tVecFromWVec(wRel) tRelNeg = tRel[:len(tRel) // 2 + 1] GFT = gfCohExpDampingLesser(kVec, tRelNeg, tAv, eta, damping, N) GFZero = np.zeros((len(kVec), len(tRel) // 2 - 1, len(tAv)), dtype='complex') GFT = np.concatenate((GFT, GFZero), axis=1) _, GFW = FT.FTOneOfTwoTimes(tRel, GFT) return GFW
def numGreenVecWLesser(kVec, wVec, eta, damping): tVec = FT.tVecFromWVec(wVec) tVecPos = tVec[len(tVec) // 2:] GFT = gfNumVecTLesser(kVec, tVecPos, eta, damping) GFZero = np.zeros((len(kVec), len(tVec) // 2), dtype='complex') GFT = np.concatenate((GFZero, GFT), axis=1) wVecCheck, GFW = FT.FT(tVec, GFT) return GFW
def anaGreenVecW(kVec, wVec, eta, damping): tVec = FT.tVecFromWVec(wVec) tVecPos = tVec[len(tVec) // 2:] GFT = anaGreenVecT(kVec, tVecPos, eta, damping) GFZero = np.zeros((len(kVec), len(tVec) // 2), dtype='complex') GFT = np.concatenate((GFZero, GFT), axis=1) wVecCheck, GFW = FT.FT(tVec, GFT) assert ((np.abs(wVec - wVecCheck) < 1e-10).all) return GFW
def gfCohWTurned(kPoint, wRel, tAv, eta, damping, N): if (np.abs(kPoint) > np.pi / 2.): return np.zeros((len(wRel), len(tAv))) tRel = FT.tVecFromWVec(wRel) tRelPos = tRel[len(tRel) // 2:] GFT = gfCohExpDampingTurned(kPoint, tRelPos, tAv, eta, damping, N) GFZero = np.zeros((len(tRel) // 2, len(tAv)), dtype='complex') GFT = np.concatenate((GFZero, GFT), axis=0) _, GFW = FT.FTOneOfTwoTimesPoint(tRel, GFT) if (np.abs(np.abs(kPoint) - np.pi / 2.) < 1e-12): return 0. * GFW else: return GFW
def expectationSinSinW(wVec, eta, damping): tVec = FT.tVecFromWVec(wVec) tVecPos = tVec[len(tVec) // 2:] expSinSinPos = expectationSinSin(tVecPos, eta) expSinSinPosTurned = expectationSinSinTurned(tVecPos, eta) expSinSinPos = -expSinSinPos + expSinSinPosTurned Zeros = np.zeros((len(tVec) // 2), dtype='complex') #expSinSin = np.concatenate((expSinSinPos, Zeros), axis=0) expSinSin = np.concatenate((Zeros, expSinSinPos), axis=0) dampingArr = np.exp(-damping * np.abs(tVec)) expSinSinDamped = expSinSin * dampingArr wVecCheck, expSinSinW = FT.FT(tVec, expSinSinDamped) #gsT = - 2. / np.pi * prms.chainLength #fac = np.sqrt(1 - 2. * eta * eta / (prms.w0) * gsT) #return eta**2 / fac * (1j / (wVec - fac * prms.w0 + 1j * damping) - 1j / (wVec + fac * prms.w0 + 1j * damping)) return expSinSinW * np.sqrt(2. * np.pi)