Beispiel #1
0
eps = lambda r, theta: np.sin(theta)**2 * (1 + np.tan(theta)**2 * ((1 - r)/(1 + r))**2)

# Experimental data...
Exp_rho = rho(np.radians(Exp_Data.data[Exp_Angles[i]][1]), np.radians((Exp_Data.data[Exp_Angles[i]][3])))
Exp_eps = eps(Exp_rho, np.radians(Exp_Angles[i]))

# Modelled data...
Mod_rho = rho(np.radians(Out["psi"][:,i]), np.radians(Out["Delta"][:,i]))
Mod_eps = eps(Mod_rho, np.radians(Exp_Angles[i]))

## Step 3 :: Data Plotting...
ax1b = ax1.twinx()
ax1.set_xlim([400, 1500])

# Experimental data...
ax1.plot(Exp_Data.data[Exp_Angles[i]][0]*1000, Exp_eps.real, lw=2, marker="o", ls='none', color=colours("Orange Red"),
         label="$\epsilon_1 (\lambda)$ :: $ %3.1f^{\circ}$" % Exp_Angles[i])
ax1b.plot(Exp_Data.data[Exp_Angles[i]][0]*1000, abs(Exp_eps.imag), lw=2, marker="s", ls='none', color=colours("Dodger Blue"),
         label="$\epsilon_2 (\lambda)$ :: $ %3.1f^{\circ}$" % Exp_Angles[i])

# Modelled Data...
ax1.plot(1240/E_eV, Mod_eps.real, label="Model $\epsilon_1 (\lambda)$ :: $ %3.1f^{\circ}$" % Exp_Angles[i], color=colours("Maroon"))
ax1b.plot(1240/E_eV, abs(Mod_eps.imag), label="Model $\epsilon_2 (\lambda)$ :: $ %3.1f^{\circ}$" % Exp_Angles[i], color=colours("Navy"))

ax1.set_xlabel("Wavelength (nm)")
ax1.set_ylabel('$\epsilon_1 (\lambda)$')
ax1b.set_ylabel('$\epsilon_2 (\lambda)$')
ax1.text(0.05, 0.9, '(b)', transform=ax1.transAxes, fontsize=12)

ax1.legend(loc="lower left")
ax1b.legend(loc="upper right")
for k, rad in enumerate([False, True]):

    # Input data for the 2D kind of junction
    db_junction = Junction(kind='2D', T=T, reff=0.3, jref=300, Eg=0.66, A=1, R_shunt=np.inf, n=3.5)
    db_junction2 = Junction(kind='2D', T=T, reff=1, jref=300, Eg=1.4, A=1, R_shunt=np.inf, n=3.5)
    db_junction3 = Junction(kind='2D', T=T, reff=1, jref=300, Eg=1.8, A=1, R_shunt=np.inf, n=3.5)

    my_solar_cell = SolarCell([db_junction3, db_junction2, db_junction], T=T, R_series=0)

    solar_cell_solver(my_solar_cell, 'iv',
                      user_options={'T_ambient': T, 'voltages': V, 'light_iv': True, 'wavelength': wl,
                                    'light_source': light_source, 'radiative_coupling': rad, 'mpp': True,
                                    'internal_voltages': Vin})

    # This is the total junction IV
    ax[k].plot(my_solar_cell.iv['IV'][0], my_solar_cell.iv['IV'][1], marker='o', color=colours("Black"), ls='-',
               markerfacecolor='none', markeredgecolor=colours("Black"))

    # This is the junciton IV when it is in the MJ device, including coupling if it is enabled. 
    for i, data in enumerate(my_solar_cell.iv['junction IV']):
        ax[k].plot(data[0], data[1], color[i] + '--', linewidth=2)

    # This is the junction IV as if it were an isolated device and therefore not affected by coupling or current limiting. 
    for i in range(my_solar_cell.junctions):
        ax[k].plot(V, -my_solar_cell(i).iv(V), color[i], linewidth=2, label=label[i])

    ax[k].set_ylim(0, 300)
    ax[k].set_xlim(0, 3.5)

    ax[k].set_xlabel('Bias (V)')
Beispiel #3
0
    Oscillator(oscillator_type="E_ID", material_parameters=MatParams),
    Oscillator(oscillator_type="E2", material_parameters=MatParams)
])

Output = CPPB_Model.eps_calc(Adachi_GaAs, E)

# PLOT OUTPUT...
fig, (ax1, ax2) = plt.subplots(nrows=1, ncols=2, figsize=(7, 4.5))

# Subplot I :: Real part of the dielectric function.
ax1.set_yscale("linear")
ax1.set_xlim(0, 5.3)
ax1.set_ylim(-14, 27)

ax1.plot(Palik_Eps1[:, 0], Palik_Eps1[:, 1], label="Exp. Data (Palik)",
         marker='o', ls='none', markerfacecolor='none', markeredgecolor=colours("Red"))

ax1.plot(E, Output["eps"].real, color=colours("Navy"), label="Total")
ax1.plot(E, Output["components"][0].real, color=colours("Orange Red"), ls='--', label="$E_0$ and $E_0+\Delta_0$")
ax1.plot(E, Output["components"][1].real, color=colours("Dodger Blue"), ls='--', label="$E_1$ and $E_1+\Delta_1$")
ax1.plot(E, Output["components"][2].real, color=colours("lime green"), ls='--', label="$E_{ID}$ (Indirect)")
ax1.plot(E, Output["components"][3].real, color=colours("gold"), ls='--', label="$E_2$")

ax1.set_xlabel("Energy (eV)")
ax1.set_ylabel("$\epsilon_1 (\omega)$")
ax1.text(0.05, 0.05, '(a)', transform=ax1.transAxes, fontsize=12)

# Subplot II :: Imaginary part of the dielectric function.
ax2.set_yscale("linear")

ax2.plot(Palik_Eps2[:, 0], Palik_Eps2[:, 1], label="Exp. Data (Palik)",
Beispiel #4
0
# Modelled data...
Mod_rho = rho(np.radians(Out["psi"][:, i]), np.radians(Out["Delta"][:, i]))
Mod_eps = eps(Mod_rho, np.radians(Exp_Angles[i]))

## Step 3 :: Data Plotting...
fig, ax1 = plt.subplots(1, 1)
ax1b = ax1.twinx()
ax1.set_xlim([400, 1500])

# Experimental data...
ax1.plot(Exp_Data.data[Exp_Angles[i]][0] * 1000,
         Exp_eps.real,
         lw=2,
         marker="o",
         ls='none',
         color=colours("Orange Red"),
         label="$\epsilon_1 (\lambda)$ :: $ %3.1f^{\circ}$" % Exp_Angles[i])
ax1b.plot(Exp_Data.data[Exp_Angles[i]][0] * 1000,
          abs(Exp_eps.imag),
          lw=2,
          marker="s",
          ls='none',
          color=colours("Dodger Blue"),
          label="$\epsilon_2 (\lambda)$ :: $ %3.1f^{\circ}$" % Exp_Angles[i])

# Modelled Data...
ax1.plot(1240 / E_eV,
         Mod_eps.real,
         label="Model $\epsilon_1 (\lambda)$ :: $ %3.1f^{\circ}$" %
         Exp_Angles[i],
         color=colours("Maroon"))
# Experimental data...
Exp_rho = rho(np.radians(Exp_Data.data[Exp_Angles[i]][1]), np.radians((Exp_Data.data[Exp_Angles[i]][3])))
Exp_eps = eps(Exp_rho, np.radians(Exp_Angles[i]))

# Modelled data...
Mod_rho = rho(np.radians(Out["psi"][:, i]), np.radians(Out["Delta"][:, i]))
Mod_eps = eps(Mod_rho, np.radians(Exp_Angles[i]))

## Step 3 :: Data Plotting...
fig, ax1 = plt.subplots(1, 1)
ax1b = ax1.twinx()
ax1.set_xlim([400, 1500])

# Experimental data...
ax1.plot(Exp_Data.data[Exp_Angles[i]][0] * 1000, Exp_eps.real, lw=2, marker="o", ls='none', color=colours("Orange Red"),
         label="$\epsilon_1 (\lambda)$ :: $ %3.1f^{\circ}$" % Exp_Angles[i])
ax1b.plot(Exp_Data.data[Exp_Angles[i]][0] * 1000, abs(Exp_eps.imag), lw=2, marker="s", ls='none',
          color=colours("Dodger Blue"),
          label="$\epsilon_2 (\lambda)$ :: $ %3.1f^{\circ}$" % Exp_Angles[i])

# Modelled Data...
ax1.plot(1240 / E_eV, Mod_eps.real, label="Model $\epsilon_1 (\lambda)$ :: $ %3.1f^{\circ}$" % Exp_Angles[i],
         color=colours("Maroon"))
ax1b.plot(1240 / E_eV, abs(Mod_eps.imag), label="Model $\epsilon_2 (\lambda)$ :: $ %3.1f^{\circ}$" % Exp_Angles[i],
          color=colours("Navy"))

ax1.set_xlabel("Wavelength (nm)")
ax1.set_ylabel('$\epsilon_1 (\lambda)$')
ax1b.set_ylabel('$\epsilon_2 (\lambda)$')
ax1.text(0.05, 0.9, '(b)', transform=ax1.transAxes, fontsize=12)
Beispiel #6
0
                          'voltages': V,
                          'light_iv': True,
                          'wavelength': wl,
                          'optics_method': 'BL',
                          'light_source': light_source,
                          'position': z,
                          'radiative_coupling': rad,
                          'mpp': True,
                          'internal_voltages': Vin
                      })

    # This is the total junction IV
    ax[k].plot(my_solar_cell.iv['IV'][0],
               my_solar_cell.iv['IV'][1],
               marker='o',
               color=colours("Black"),
               ls='-',
               markerfacecolor='none',
               markeredgecolor=colours("Black"))

    # This is the junciton IV when it is in the MJ device, including coupling if it is enabled.
    for i, data in enumerate(my_solar_cell.iv['junction IV']):
        ax[k].plot(data[0], data[1], color[i] + '--', linewidth=2)

    # This is the junction IV as if it were an isolated device and therefore not affected by coupling or current limiting.
    for i in range(my_solar_cell.junctions):
        ax[k].plot(V,
                   -my_solar_cell(i).iv(V),
                   color[i],
                   linewidth=2,
                   label=label[i])