예제 #1
0
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
예제 #2
0
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
예제 #3
0
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
예제 #4
0
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