def nonEqGFParametersAboveFS(nCoh, kPoint, wVec, damping): if (nCoh == 0): eta = 2.5 / np.sqrt(prms.chainLength) else: eta = np.sqrt(0.4 / nCoh) / np.sqrt(prms.chainLength) print("nCoh = {} ; eta = {}".format(nCoh, eta * np.sqrt(prms.chainLength))) gs = arbOrder.findGS(eta, 3) gsT = eF.T(gs) wTilde = np.sqrt(1. - 2. * eta**2 / prms.w0 * gsT) tau = 2. * np.pi / wTilde tauLength = 1. tAv = np.linspace(1000. * tau, (1000. + tauLength) * tau, 20, endpoint=False) gfNonEq = nonEqGreenPoint.gfCohW(kPoint=kPoint, wRel=wVec, tAv=tAv, eta=eta, damping=damping, N=nCoh) gfNonEqN0 = 1. / (tauLength * tau) * (tAv[1] - tAv[0]) * np.sum(gfNonEq, axis=1) return gfNonEqN0
def getPhGS(eta): gs = arbOrder.findGS(eta, 3) gsJ = eF.J(gs) gsT = eF.T(gs) gsJ = 0. gsT = -2. / np.pi * prms.chainLength return phState.findPhotonGS([gsT, gsJ], eta, 3)
def expectAnnihil(eta): gs = arbOrder.findGS(eta, 3) gsJ = eF.J(gs) gsT = eF.T(gs) ptGS = phState.findPhotonGS([gsT, gsJ], eta, 3) a = setUpAnnihil(eta) return np.dot(np.conj(ptGS), np.dot(a, ptGS))
def currentGS(eta): gs = arbOrder.findGS(eta, 3) gsJ = eF.J(gs) gsT = eF.T(gs) ptGS = phState.findPhotonGS([gsT, gsJ], eta, 3) jOp = setupCurrentOperator(gsT, gsJ, eta) current = np.dot(np.conj(ptGS), np.dot(jOp, ptGS)) return current
def expectSinA(eta): gs = arbOrder.findGS(eta, 3) gsJ = eF.J(gs) gsT = eF.T(gs) ptGS = phState.findPhotonGS([gsT, gsJ], eta, 3) x = setUpA(eta) sinX = sciLin.sinm(x) return np.dot(np.conj(ptGS), np.dot(sinX, ptGS))
def anaGreenVecTGreater(kVec, tVec, eta, damping): #gs = anaGS.findGS1st(eta) #gsJ = eF.J(gs[0: -1]) gs = arbOrder.findGS(eta, 3) gsJ = eF.J(gs) gsT = eF.T(gs) _, occupations = np.meshgrid(np.ones(tVec.shape), gs) GF = anaGreenPointTGreater(kVec, tVec, gsJ, eta) GF = np.multiply(1 - occupations, GF) dampingArr, _ = np.meshgrid(np.exp(- damping * np.abs(tVec)), np.ones(kVec.shape)) GF = np.multiply(dampingArr, GF) return GF
def anaGreenPointTLesser(kPoint, tPoint, gsJ, eta): gs = arbOrder.findGS(eta, 3) gsJ = eF.J(gs) gsT = eF.T(gs) #gsT = - 2. / np.pi * prms.chainLength z = 2. * eta**2 / prms.w0 * gsT wTilde = prms.w0 * np.sqrt(1. - z) epsK = 2. * prms.t * np.cos( kPoint[:, None]) * (1. - 0.5 * eta**2 * prms.w0 / wTilde) selfE = eta**2 * prms.w0 / (wTilde**2) * (-2. * prms.t * np.sin(kPoint[:, None]))**2 eTime = -1j * epsK * tPoint[None, :] - 1j * selfE * tPoint[None, :] ptTime = -(-2. * eta * prms.t * np.sin(kPoint[:, None]))**2 * prms.w0 / ( wTilde**3) * (1. - np.exp(1j * wTilde * tPoint[None, :])) return -1j * np.exp(eTime + ptTime)
def avPhotonNumber2nd(state, eta): #return avPhotonNumber1st(state, eta) assert (len(state) == param.chainLength + 1) assert (np.abs(state[-1]) < 1e-10) #gam = eF.gamma(state[0: -1], eta) gsT = param.t / (np.pi) * (np.sin(np.pi / 2.) - np.sin(-np.pi / 2.)) * param.chainLength gsJ = param.t / (np.pi) * (np.cos(np.pi / 2.) - np.cos(-np.pi / 2.)) * param.chainLength gsT = eF.T(state[:-1]) gsJ = eF.J(state[:-1]) gam = eta**2 * gsT / (eta**2 * gsT - param.w0) epsilon = np.sqrt(1. - gam**2) u = eF.calcU(gam) v = eF.calcV(gam) vsq = np.abs(v)**2 upvsq = np.abs(u + v)**2 X = eta * eF.J(state[0:-1]) / (2. * epsilon * eF.LT(state[0:-1], eta)) return vsq + X**2 * upvsq
def getH(eta): gs = arbOrder.findGS(eta, 3) gsJ = eF.J(gs) gsT = eF.T(gs) return numH.setupPhotonHamiltonianInf(gsT, gsJ, eta)
def getPhGS(eta): gs = arbOrder.findGS(eta, 3) gsJ = eF.J(gs) gsT = eF.T(gs) return phState.findPhotonGS([gsT, gsJ], eta, 3)
def avPhotonNum(electronicState, eta, orderH): T = eF.T(electronicState) J = eF.J(electronicState) av = averagePhotonNumber([T, J], eta, orderH) return av
def photonGS(electronicState, eta, orderH): T = eF.T(electronicState) J = eF.J(electronicState) gs = findPhotonGS([T, J], eta, orderH) return gs
def energyFromState(electronicState, eta, orderH): T = eF.T(electronicState) J = eF.J(electronicState) E = findSmalestEigenvalue([T, J], eta, orderH) return E