def JSC(TE, lam, PV): ### hard-coding view factor for now! F = 0.84 ### get spectral response function for appropriate PV material if (PV == 'InGaAsSb'): SR = datalib.SR_InGaAsSb(lam) elif (PV == 'GaSb'): SR = datalib.SR_GaSb(lam) else: SR = datalib.SR_InGaAsSb(lam) ### get upper limit of lambda array... will integrate over entire ### range, in principle spectral response function will vanish at the ### appropriate boundaries of lambda upper = np.amax(lam) integrand = TE * SR * F * np.pi jshc = numlib.Integrate(integrand, lam, 1e-9, upper) return jshc
def multi_junction_Jsc_1(lam, TE_1, TE_2, PV_1): #PV device 1 choice if (PV_1 == 'InGaAsSb'): SR = datalib.SR_InGaAsSb(lam) elif (PV_1 == 'GaSb'): SR = datalib.SR_GaSb(lam) else: SR = datalib.SR_InGaAsSb(lam) #start Integrals Integrand_1 = TE_1 * SR Integrand_2 = TE_2 * SR upper = np.amax(lam) a = numlib.integrate(Integrand_1, lam, 100e-9, upper) b = numlib.integrate(Integrand_2, lam, 100e-9, upper) Jsc_1 = a + b return Jsc_1
def JSC_EA(TE_p, TE_s, lam, PV, t, w): ### hard-coding view factor for now! F = 0.84 ### get spectral response function for appropriate PV material if (PV == 'InGaAsSb'): SP = datalib.SR_InGaAsSb(lam) elif (PV == 'GaSb'): SP = datalib.SR_GaSb(lam) else: SP = datalib.SR_InGaAsSb(lam) jsch = 0. dl = np.abs(lam[1] - lam[0]) for i in range(0, len(t)): isom = 0. for j in range(0, len(lam)): isom = isom + 0.5 * TE_p[i][j] * SP[j] * F * dl isom = isom + 0.5 * TE_s[i][j] * SP[j] * F * dl jsch = jsch + w[i] * isom * np.sin(t[i]) return jsch * 2 * np.pi
def jsc_multi(lam, TE, eps_pv1, eps_pv2, T_pv1): upper = np.amax(lam) ### get the spectral response of Silicon and store it to an array called sr1 sr1 = datalib.SR_Si(lam) ### get the spectral response of GaSb and store it to an array called sr1 sr2 = datalib.SR_GaSb(lam) ### create integrand for jsc1 int_1 = sr1 * eps_pv1 * TE ### create integrand for jsc2 int_2 = sr2 * eps_pv2 * TE * T_pv1 ### integrate the integrands! jsc1 = numlib.Integrate(int_1, lam, 1e-9, upper) jsc2 = numlib.Integrate(int_2, lam, 1e-9, upper) plt.plot(lam, int_1, 'red', label='Integrand 1') plt.plot(lam, int_2, 'blue', label='Integrand 2') plt.legend() plt.show() return jsc1, jsc2