This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
nnp:1d_gaas_solar_cells [2020/04/20 15:30] stefan.birner [How does a solar cell work? & How do we simulate it?] |
— (current) | ||
---|---|---|---|
Line 1: | Line 1: | ||
- | ===== GaAs Solar Cell ===== | ||
- | |||
- | Author: Takuma Sato, nextnano GmbH | ||
- | |||
- | Here we demonstrate that solar cells can be simulated using nextnano. The self-consistent solutions to the Poisson equation coupled with current (drift-diffusion) equation give the figure of merit of solar cells that consists of arbitrary materials. Current-Voltage (I-V) curves and corresponding power and solar cell efficiency as a function of bias voltage are exported to the output folder. | ||
- | |||
- | //Note: this tutorial illustrates nextnano³ results. Consistent results can be obtained with nextnano++ as well, with the exception of // | ||
- | - //internal calculation of the generation rate and// | ||
- | - //solar cell efficiency.// | ||
- | |||
- | ==== Input files ==== | ||
- | * 1DGaAs_SolarCell_nn3.in | ||
- | * 1DGaAs_SolarCell_nn3_dark.in | ||
- | * 1DGaAs_SolarCell_nnp_import_generation.in | ||
- | * 1DGaAs_SolarCell_nnp_dark.in | ||
- | * 1DGaAs_SolarCell_nn3_100sun.in | ||
- | Here the numerics parameters are optimized for convergence of the calculation in the bias range of interest. Please pay attention to the convergence of the calculation when you change device geometry etc. For the simulation of ''1DGaAs_SolarCell_nn3.in'', the following data must be present and read in by nextnano³: | ||
- | * AbsorptionCoefficient_GaAs_300K.dat (material data) | ||
- | * Reflectivity_Al0.80Ga0.20As.dat (material data) | ||
- | * ASTMG173_AM15G.dat (solar spectral irradiance data) | ||
- | For the simulation of ''1DGaAs_SolarCell_nnp_import_generation.in'', the following output file of nextnano³ must be read in, as nextnano++ cannot internally calculate generation rates. | ||
- | * \optics\GenerationRateLight_vs_Position_sun1.dat | ||
- | ==== Reference ==== | ||
- | * J. Nelson, //The Physics of Solar Cells// (Imperial College Press, 2003) | ||
- | * S.M. Sze and Kwok K. Ng, //Physics of Semiconductor Devices// (Wiley, 2007) | ||
- | ==== Structure ==== | ||
- | Figure {{ref>bandedges}} shows the bandedges and quasi Fermi levels of the device. The device structure is as follows: | ||
- | * 0-30nm $\mathrm{Al_{0.8}Ga_{0.2}As}$ Window layer | ||
- | * 30-530nm p-doped $\mathrm{GaAs}$ | ||
- | * 530-3530nm n-doped $\mathrm{GaAs}$ | ||
- | * 3530-3630nm n-doped $\mathrm{GaAs}$ back surface field layer | ||
- | Strain is not calculated in this example. | ||
- | <figure bandedges> | ||
- | {{:nnp::solarcell_bandedges.png?direct}} | ||
- | <caption>Bandedges and quasi-Fermi levels of the solar cell at zero bias [''band_structure\BandEdges'' (nextnano³) / ''bias_000_000\bandedges''(nextnano++)] </caption> | ||
- | </figure> | ||
- | |||
- | The left side of the device (x=0nm) is illuminated by the sun. As shown in Figure {{ref>generation_x}}, mobile electrons and holes are created mainly in the p-layer. Electrons then flow to the right because of the AlGaAs ternary barrier (0-30nm), and holes to the left. | ||
- | The back of the cell (3530-3630nm) is doped with 10 times larger concentration, so that it prevents the minority carrier (hole) from leaking to the right contact. Since the current from p-layer to n-layer is defined to be positive, the photo-induced current has negative sign. | ||
- | ==== Simulation procedure ==== | ||
- | The workflow of the simulation is summarized in Figure {{ref>workflow}}. To obtain the figures shown in this tutorial, | ||
- | - Prepare three data files, namely (1) spectral irradiance (solar spectrum), (2) reflectivity at the front surface and (3) absorption coefficient. Specify in the input file appropriate paths to these files. | ||
- | - Run the nextnano³ software, and all of your nextnano³ results are in your output folder! Generation rate $G(E,x)$ is internally calculated before the current-Poisson iteration starts. The efficiency--voltage curve is generated as a final result. | ||
- | - If you already have generation rate profile as a ''.dat'' file, you can either import it into nextnano³ or in nextnano++. | ||
- | <figure workflow> | ||
- | {{:nnp::solarcell_workflow2.jpg?direct}} | ||
- | <caption>Workflow of solar cell simulation. Each quantity is explained in the following section.</caption> | ||
- | </figure> | ||
- | |||
- | ==== How does a solar cell work? & How do we simulate it? ==== | ||
- | === 1. Solar spectrum === | ||
- | The sun emits light with a range of wavelengths ranging from the ultraviolet, visible to infrared region. The extraterrestrial solar spectrum resembles the spectrum of a black body at $T_{\text{sun}}=5760~\text{K}$ [Nelson Chapter 2]: | ||
- | $$ | ||
- | \frac{2\pi\sin^2\theta_\mathrm{sun}}{h^3c^2}\frac{E^2}{e^{E/k_{\text{B}}T_\mathrm{sun}}-1}, | ||
- | $$ | ||
- | where $E$ is the photon energy and $\theta_\mathrm{sun}=1.44\times 10^{-3}\pi$[rad] when measured from the earth. The solar light travels from the sun to the earth, and then from the outer space to our solar cell devices, during which the spectrum attenuates and changes its shape. The standard solar spectrum assumed in solar cell analysis is called AM1.5G ([[https://en.wikipedia.org/wiki/Air_mass_(solar_energy)|AM = air mass]]), which takes into account the attenuation of the intensity and illumination from all angles (rather than direct from the sun) due to scattering in the atmosphere. The spectral photon flux, i.e. the spectrum of the number of incident photons per area per time, is denoted by $\phi(E)~[\mathrm{m^{-2}s^{-1}eV^{-1}}]$. The spectral irradiance, namely the spectrum of the amount of energy supplied per area per time, is given by $L(E)=E\phi(E)$ with the unit of [$\mathrm{Wm^{-2}eV^{-1}}$]. We have taken the AM1.5G spectral irradiance data from [[https://www.nrel.gov/grid/solar-resource/spectra.html|this website]] (Figure {{ref>spectral_irradiance}}). If you have space applications in mind, please use the extraterrestrial spectrum, namely air mass zero (AM0). The photon flux is written in the nextnano³ output file ''optics\PhotonFlux_eV.dat''. | ||
- | This file contains two columns. | ||
- | The external photon flux density considers the photons hitting the device. | ||
- | The internal photon flux density is lower because the photons that are reflected or transmitted are not included in this quantity as they will not contribute to the generation rate. | ||
- | |||
- | <figure spectral_irradiance> | ||
- | {{:nnp::solarcell_am15g_edited.png?direct}} | ||
- | <caption>The AM1.5G spectral irradiance $L(E)$, that is, the solar spectrum measured on the earth. nextnano³ reads in the data file ''ASTMG173_AM15G.dat'' and stores it in the output file ''optics\SolarSpectralIrradiance_eV.dat''.</caption> | ||
- | </figure> | ||
- | |||
- | The power of incident light | ||
- | $$ | ||
- | P_\mathrm{sun} =\int_0^\infty L(E) \text{d}E=1000~\mathrm{Wm^{-2}}, | ||
- | $$ | ||
- | which is plotted in ''current\solar_cell_properties.dat'' as a reference, is solely determined by the condition of the sun and the atmosphere of the earth (for AM0 $P_{\text{sun}}=1353~\text{Wm}^{-2}$). The ultimate challenge of solar cell research is to achieve the most efficient conversion of this energy input into electric power $P_\mathrm{out}~[\mathrm{Wm^{-2}}]$. The figure of merit is therefore defined as $\eta=\frac{P_\mathrm{out}}{P_\mathrm{sun}}$. | ||
- | |||
- | === 2. Generation rate (internal calculation) === | ||
- | //(If you already have available data for generation rate, you can skip this section.)// | ||
- | |||
- | When the sun light illuminates the device, some of the photons are reflected at the front surface (air-semiconductor interface) and the rest enters the device. This effect is taken into account by considering the reflectivity of Al<sub>0.8</sub>Ga<sub>0.2</sub>As. Through the absorption of one photon, a pair of mobile electron and hole is created, while the photon flux attenuates exponentially with respect to the penetration depth. The generation rate thus depends not only on the incident photon flux $\phi(E)$ but also on the absorption coefficient $\alpha(E)$ of the material and the reflectivity $R(E)$ at the surface (Figure {{ref>workflow}}): | ||
- | $$ | ||
- | G(E,x)=N\phi(E)\cdot(1-R(E))\cdot\alpha(E)e^{-α(E)x}, | ||
- | $$ | ||
- | where the parameter ''number-of-suns'' $N$ is multiplied to the photon flux $\phi(E)$ to take into account the concentration of sunlight. In the input file, $\alpha(\lambda), R(\lambda), L(\lambda)$ and $N$ are imported as specified in keyword [[https://www.nextnano.com/nextnano3/input_parser/keywords/optical-absorption.htm|$optical-absorption]]. These spectra are translated into $\alpha(E), R(E), N\phi(E)$ and substituted into the generation rate formula. | ||
- | <code> | ||
- | ! nextnano3 | ||
- | $optical-absorption | ||
- | ... | ||
- | import-absorption-spectrum = yes | ||
- | file-absorption-spectrum = "(directory)\AbsorptionCoefficient_GaAs_300K.dat" | ||
- | |||
- | import-reflectivity-spectrum = yes | ||
- | file-reflectivity-spectrum = "(directory)\Reflectivity_Al0.80Ga0.20As.dat" | ||
- | |||
- | import-solar-spectrum = yes | ||
- | file-solar-spectrum = "(directory)\ASTMG173_AM15G.dat" ! G = global, i.e. including diffuse light | ||
- | |||
- | !number-of-suns = 0.0 ! switch off sun if generation rate is imported | ||
- | number-of-suns = 1.0 | ||
- | !number-of-suns = 100.0 ! optical concentration | ||
- | $end_optical-absorption | ||
- | </code> | ||
- | If no reflectivity data is specified, perfect interface (zero reflection) is assumed. Here we have manually generated ''Reflectivity_Al0.80Ga0.20As.dat'' for the reflectivity of Al<sub>0.8</sub>Ga<sub>0.2</sub>As using the Fresnel formula for perpendicular incident light | ||
- | $$ | ||
- | R(\lambda)=|r(\lambda)|^2=\left|\frac{1-[n(\lambda)+i\kappa(\lambda)]}{1+[n(\lambda)+i\kappa(\lambda)]} \right|^2, | ||
- | $$ | ||
- | where the refractive index $n$ and extinction coefficient $\kappa$ of GaAs and AlAs are taken from [[https://refractiveindex.info/?shelf=main&book=GaAs&page=Aspnes|here]]. To obtain the values of ternary Al<sub>0.8</sub>Ga<sub>0.2</sub>As, we performed linear interpolation. If you consider a textured surface to reduce surface light reflection, please prepare the corresponding reflectivity data and import to the nextnano simulation. $\alpha(E), R(E)$ and $NL(E)$ are stored in the output folder ''\optics'' with file names ''AbsorptionCoefficient.dat'', ''Reflectivity.dat'' and ''SolarSpectralIrradiance.dat'', respectively. | ||
- | |||
- | The resulting generation rate is shown in Figure {{ref>generation_2d}}, {{ref>generation_ev}} and {{ref>generation_x}}. | ||
- | <figure generation_2d> | ||
- | {{:nnp::solarcell_generationrate_2d.png?direct}} | ||
- | <caption>Generation rate as a function of position and energy ''optics\GenerationRateLight_vs_Position_and_Energy_2Dplot_sun1.dat'' in units of $10^{18}{\mathrm{cm}}^{-3}{\mathrm{eV}}^{-1}{\mathrm{s}}^{-1}$. This quantity is internally calculated using the absorption coefficient, reflectivity of the front surface and solar spectrum AM1.5G (Figure {{ref>spectral_irradiance}}). Photons at around 3V are largely absorbed near the front surface due to a large absorption coefficient, which can be seen in the output ''optics\AbsorptionCoefficient_eV.dat'' (not shown). Photons with lower energy, in contrast, travel a longer distance in the device. </caption> | ||
- | </figure> | ||
- | |||
- | <figure generation_ev> | ||
- | {{:nnp::solarcell_generationrate_ev2.png?direct}} | ||
- | <caption>Generation rate as a function of energy ''optics\GenerationRateLight_vs_Energy_sun1.dat'' (red). nextnano³ obtains this data by integrating Figure {{ref>generation_2d}} with respect to position $x$. Also shown is the result for zero reflection at the front surface (blue curve), where we have set | ||
- | <code> | ||
- | ! nextnano3 | ||
- | import-reflectivity-spectrum = no | ||
- | </code> | ||
- | Obviously, the generation rate becomes larger when the reflection at the front surface is neglected. One can also clearly see, by comparing with Figure {{ref>spectral_irradiance}}, that the low energy photons below the bandgap cannot contribute to the carrier generation. For this reason the bandgap of semiconductors affects the solar cell efficiency and is discussed in the context of the [[https://en.wikipedia.org/wiki/Shockley%E2%80%93Queisser_limit|Shockley-Queisser efficiency limit]]. </caption> | ||
- | </figure> | ||
- | |||
- | |||
- | <figure generation_x> | ||
- | {{:nnp::solarcell_generationrate_x.png?direct}} | ||
- | <caption>Generation rate as a function of position ''optics\GenerationRateLight_vs_Position_sun1.dat''. nextnano³ obtains this data by integrating Figure {{ref>generation_2d}} over energy $E$. When the photon flux travels through the device, the intensity diminishes exponentially, leading to the exponential decrease in generation rate. Most of the carrier generation occurs within 500 nm from the front surface, i.e. within the p-layer (30--530 nm). nextnano++ imports this data and stores it in ''Structure\generation_fixed.dat''.</caption> | ||
- | </figure> | ||
- | |||
- | === 3. Generation rate (import) === | ||
- | If the generation rate data $G(x)=\int G(E,x)\text{d}E$ (Figure {{ref>generation_x}}) is available from literature or publications, you can import the ''.dat'' file without worrying about the above mentioned calculation. The data must contain position [$\mathrm{nm}$] in the first column and generation rate [$10^{18}\mathrm{cm^{-3}s^{-1}}$] in the second. In the sample file ''1DGaAs_SolarCell_nn3_import_generation.in'' (nextnano³) and ''1DGaAs_SolarCell_nnp_import_generation.in'' (nextnano++), we import the data generated from ''1DGaAs_SolarCell_nn3.in''. | ||
- | <code> | ||
- | ! nextnano3 | ||
- | $import-data-on-material-grid | ||
- | source-directory = "(directory path)" | ||
- | import-generation = yes | ||
- | filename-generation = "GenerationRateLight_vs_Position_sun1.dat" | ||
- | $end_import-data-on-material-grid | ||
- | |||
- | $optical-absorption | ||
- | ... | ||
- | number-of-suns = 0.0 ! switch off sun if generation rate is imported | ||
- | $end_optical-absorption | ||
- | </code> | ||
- | Please switch off the sun so that the //internally// calculated generation rate is zero. | ||
- | <code> | ||
- | # nextnano++ | ||
- | structure{ | ||
- | region{ | ||
- | everywhere{} | ||
- | generation{ | ||
- | import{ import_from = "GenImportProfile" } | ||
- | } | ||
- | } | ||
- | } | ||
- | |||
- | import{ | ||
- | file{ | ||
- | name = "GenImportProfile" | ||
- | filename = "(directory path)\GenerationRateLight_vs_Position_sun1.dat" | ||
- | format = DAT | ||
- | scale = 1e18 # import data is multiplied by this scaling factor (optional, default value is 1.0) | ||
- | } | ||
- | } | ||
- | </code> | ||
- | |||
- | |||
- | === 4. Current-Voltage characteristics === | ||
- | The calculated or imported generation rate contributes to the right-hand side of the coupled current equations for electrons and holes, | ||
- | $$ | ||
- | -e\frac{\partial n}{\partial t}+\nabla\cdot\mathbf{j}_n = -e(G-R),\\ | ||
- | e\frac{\partial p}{\partial t}+\nabla\cdot\mathbf{j}_p = e(G-R), | ||
- | $$ | ||
- | where $G$ and $R$ are the (position-dependent) generation and recombination rates for electron-hole pairs. Here the charge current density $\mathbf{j}_{n,p}$ has a dimension of (charge)(area)<sup>-1</sup> and the generation rate has (volume)<sup>-1</sup>(time)<sup>-1</sup>. | ||
- | The recombination rate is the sum of three different processes $R=R_\mathrm{rad}+R_\mathrm{Auger}+R_\mathrm{SRH}$. See our [[1d_ingaas_laser_diode|Laser diode tutorial]], [Nelson] or other literature for details. By solving this current equation and the Poisson equation self-consistently, the program obtains the current density at each bias step. The resulting I-V curve is shown in Figure {{ref>IV}} and {{ref>IV_nnp}}. For comparison, the dark current has been simulated by setting | ||
- | <code> | ||
- | ! nextnano3 | ||
- | $optical-absorption | ||
- | ... | ||
- | import-solar-spectrum = yes | ||
- | number-of-suns = 0.0 | ||
- | $end_optical-absorption | ||
- | </code> | ||
- | <code> | ||
- | # nextnano++ | ||
- | structure{ | ||
- | region{ | ||
- | generation{ | ||
- | constant{ rate = 0.0 } | ||
- | } | ||
- | } | ||
- | } | ||
- | </code> | ||
- | The dark current in the present device behaves like in a diode under forward bias. When the sun illuminates the device, electrons and holes are created and current flows in the reverse direction. | ||
- | |||
- | If you change the device geometry or materials and the I-V curve is no longer reasonable, it is likely that the numerical calculation did not converge. Please check the ''.log'' file. For the convergence of the current-Poisson equation, you might need to change the settings under [[https://www.nextnano.com/nextnano3/input_parser/keywords/numeric-control.htm|$numeric-control]] (nextnano³) or [[https://www.nextnano.com/nextnanoplus/software_documentation/input_file/run.htm|run{}]] (nextnano++) keywords. If you need help, feel free to contact us at <support@nextnano.com>. | ||
- | |||
- | <figure IV> | ||
- | {{:nnp::solarcell_nn3_current2.png?direct}} | ||
- | <caption>I-V characteristics of the solar cell ''current\IV_characteristics_new.dat'' (nextnano³). In the bias regime 0-1 V the system works as a solar cell.</caption> | ||
- | </figure> | ||
- | <figure IV_nnp> | ||
- | {{:nnp::solarcell_nnp_current.png?direct}} | ||
- | <caption>I-V characteristics of the solar cell ''IV_characteristics.dat'' (nextnano++). In the bias regime 0-1 V the system works as a solar cell.</caption> | ||
- | </figure> | ||
- | |||
- | === 5. Solar efficiency === | ||
- | From the I-V curve nextnano³ calculates the solar cell power density $P_\mathrm{out}=-IV$ and the efficiency $\eta=\frac{P_\mathrm{out}}{P_\mathrm{sun}}$. For the present device under 1 sun, the maximum efficiency of **17.0%** is achieved at the bias 0.9 V (Figure {{ref>efficiency}}, <color red>red</color>). The theoretical limit for GaAs (bandgap 1.42 eV at $T=300~K$) is around 30% under the AM1.5 condition without concentration [Sze]. | ||
- | |||
- | <figure efficiency> | ||
- | {{:nnp::solarcell_nn3_efficiency2.png?direct}} | ||
- | <caption>Solar cell efficiency $\eta$ for no sunlight concentration (<color red>red</color>) and 100-sun concentration (<color blue>blue</color>). The data is contained in ''current\solar_cell_efficiency.dat'' (nextnano³) or has to be computed from Figure {{ref>IV}} (nextnano++).</caption> | ||
- | </figure> | ||
- | |||
- | The maximum efficiency of the present device increases to **22.3% for 100-sun concentration** according to nextnano³ simulation, mainly due to the increase in open circuit voltage (Figure {{ref>efficiency}}, blue). This means one cell operating under 100 suns can produce the same power output as 100 P<sub>sun</sub>*0.223/(P<sub>sun</sub>*0.17)=133 cells under 1 sun. Optical concentration reduces the total cost of solar cells since concentrator materials are usually less expensive than the ones for solar cells [Sze]. | ||
- | |||
- | |||
- | //With nextnano++ one can simulate up to the I-V characteristics. We are currently implementing the power-V curve and efficiency-V curve.// | ||
- | |||
- | //The convergence of the simulation is sensitive to the device settings such as the number of suns. If the convergence fails in your original device, please consider changing the settings in [[https://www.nextnano.com/nextnano3/input_parser/keywords/numeric-control.htm|$numeric-control]] (nextnano³) or [[https://www.nextnano.com/nextnanoplus/software_documentation/input_file/run.htm|run{}]] (nextnano++).// | ||
- | |||
- | * Please help us to improve our tutorial. Should you have any questions or comments, please send them to <support@nextnano.com>. | ||