예제 #1
0
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
예제 #2
0
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
예제 #3
0
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
예제 #5
0
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
예제 #6
0
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
예제 #7
0
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
예제 #8
0
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)