Please enable JavaScript to view this site.

Application Gallery

Navigation: » No topics above this level «

Solar Cell

Scroll Prev Top Next More


This example describes the complete optoelectronic simulation of a simple 1D planar silicon solar cell using FDTD, CHARGE and HEAT. Key performance figures of merit such as short-circuit current, fill-factor, and photo-voltaic efficiency are calculated. The example also explores the effect of heating due to optical absorption on the electrical performance of the solar cell.

Files and Required Products






Minimum product version: 2019a r1



Run and results

Important model settings

Updating the model with your parameters

Taking the model further


Additional resources

Appendix: Solar cell methodology


Understand the simulation workflow and key results


Modeling a solar cell typically requires both optical and electrical simulations. This example includes an optional thermal simulation to include heating effects in the device's performance. Below is a summary of the workflow of a solar cell simulation:


Step1 Optical simulation: Calculate optical absorption profile within active region, over the entire solar spectrum.  Normalize results to AM 1.5 solar spectrum.  Calculate electrical generation rate from spatial absorption data by assuming each photon generates one electron-hole pair. See the appendix for additional information.


Step 2 Thermal simulation: Determine heating in the solar cell due to light absorption. The heat generation profile is obtained from the optical simulation by calculating the energy from absorbed photons with energy above the bandgap of the semiconductor material. The HEAT solver calculates the steadystate temperature profile within the solar cell. This data can be used in the next step to calculate the electrical characteristics of the solar cell under this elevated temperature.


Step 3 Electrical simulation: Calculate the number of photo-generated electron-hole pairs (calculated in the first step) collected at the electrical contacts that contribute to the output electrical power. The effect of the temperature and electrical properties of the materials on the collection efficiency will be considered in this step. A voltage sweep is needed to obtain the current-voltage characteristics of the cell from which the key performance metrics for a solar cell including short-circuit current (Jsc), open-circuit voltage (Voc), fill-factor, and photovoltaic efficiency can be extracted.



This example shows how to simulate a simple 1D planar solar cell. See the Taking the model farther section for tips on extending this example to more complex solar cells. In this application example, we have chosen a planar silicon solar cell such as the one shown below to keep things simple even though the workflow would be exactly the same for solar cell structures with different geometries and/or material components.


Run and results

Instructions for running the model and discussion of key results

Step 1: Optical simulation

1.Open and run the solar cell simulation file using FDTD

2.Right click on "solar_generation" analysis group object and select "Run analysis". This will calculate the optical generation data and export the data to a file that will be imported into CHARGE.

3.Optionally, explore the simulation results manually or with the solar_cell_optical_results.lsf to plot results

4.Optionally, right click on "solar_generation" analysis group object and visualize "Pabs_thermal_export" result  

Transmission, reflection and absorption

The reflection, transmission and absorption of this silicon slab are obtained using the data stored by the monitors placed above and below the silicon slab and are shown below. The transmission through the entire device is zero, due to the metal contact.  The ripples are due to the Fabry-Perot effect.


The script also calculates the absorption analytically using the stackrt script command, to help validate the simulation results. The figure on the right shows that the simulation results agree well with the analytic solution.



Generation rate

The solar_generation object calculates the generation rate "G" which can be visualized in the result visualizer. As expected, the generation rate is highest at the top of the silicon layer. The analysis group also automatically saves the generation rate data to a .mat file so it can be imported into the CHARGE solver.


Short-circuit current

The solar_generation object also calculates the ideal short-circuit current density (Jsc) by assuming all of the photo-generated electron-hole pairs contribute to the actual photo-current. The short circuit current (Jsc) in this example is around 200 A/m2 (20 mA/cm2).


Heat generation

The "solar_generation" analysis group in FDTD simulation file will save the optical generation rate G and also the absorbed optical power converted to heat in two separate .mat files. This is the amount of absorbed optical power that gets converted into thermal energy in units of W/m3.  In this example, the data gets saved in Q_planar.mat file to be used in thermal simulation in HEAT. A log plot of the data is shown below.  We can see that like the generation rate, the heating is also larger near the surface of the solar cell.


Step 2: Thermal simulation (optional)

1.Open the solar cell simulation file in HEAT

2.Import the heat generation data returned from optical simulation in "Q_planar.mat" using the "heat" heat import source object

3.Run the HEAT solver

4.Right click on temperature monitor object and select "visualize>temperature"

The plot below shows the steady-state temperature of the planar solar cell obtained from HEAT simulation which is increased by about 20 degrees due to optical absorption.


Step 3: Electrical simulation

Silicon without bulk and surface recombination

1.Open the solar cell simulation file using CHARGE

2.Import the optical generation data returned from optical simulation in "generation_planar.mat" using the "solar" optical generation import object

3.Optionally, import the temperature profile generated by HEAT simulation in " Tmap_solar_planar.mat" using the "temperature" import object under CHARGE solver

4.If considering the thermal effect in the simulation, switch the "temperature dependence" of the CHARGE solver under its General tab from "iso-thermal" to "non-isothermal"

5.Confirm that the "Si (Silicon)_ideal" material is assigned to the "Si" object in the object tree

6.Run the CHARGE solver

7.Right click on "CHARGE" solver object and select "visualize>base" to obtain the short circuit current "I". Delete the other results to obtain a cleaner image.

To simplify initial simulations, use the "Si (Silicon)_ideal" material model, which does not include bulk and surface recombination material effects. The obtained short circuit current is around 1.7e-5 A (Amps). To get the value of short-circuit current density, which is usually in mA/cm2, we need to normalize to the area, which is the simulation "norm length" multiplied by the x-span. This gives value of about 170 in the unit of A/m2 or 17 mA/cm2. This result is lower than what we obtained from the optical simulation. However it is reasonable because the short circuit current calculated in optical simulation does not consider contact region (shadow) whereas the electrical simulation result includes the effect of contact shadowing.  The electrical simulation result also indicates how effectively the solar cell is separating the photogenerated electron-hole pairs which is not considered in the value obtained from the optical simulation.



Silicon with bulk recombination

1.Switch back to Layout mode.

2.Select "Si" under the "geometry" group from the object tree, then right click and choose "Edit object".

3.Under the material tab, change the material from "Si (Silicon)_ideal", to "Si (Silicon)_bulk".

4.Run the CHARGE solver

5.Right click on "CHARGE" solver object and select "visualize>base" to obtain the short circuit current after deleting all the attributes except "I"  


Next, change the silicon material properties to include some non-idealities such as bulk recombination. Select "Si (Silicon)_bulk" to include the bulk recombination effects "Trap-Assisted (Shockley-Read-Hall)", "Auger" and "Radiative". The short circuit current density will drop to approximately 16 mA/cm2 as a result of bulk recombination effects in Si being considered in the simulation.



Silicon with bulk and surface recombination

1.Switch back to Layout mode.

2.Select "Si" under the "geometry" group from the object tree, then right click and choose "Edit object".

3.Under the material tab, change the material from "Si (Silicon)_bulk", to "Si (Silicon)_bulk_surface".

4.In the "boundary conditions" group, make sure all the surface recombination boundary conditions are enabled.

5.Run the CHARGE solver

6.Right click on "CHARGE" solver object and select "visualize>base" to obtain the short circuit current after deleting all the attributes except "I"  

Now, include surface recombination effects. When it comes to surface recombination properties, depending on the quality of the particular silicon wafer and how it has been fabricated, the amount of surface recombination can vary and thus surface recombination properties in the simulation can be tailored to match any available experimental or reference results. For this example, the "Surface Recombination Velocity" of electrons and holes in SiO2-Si and Si3N4-Si interfaces are set to be 1000 cm/s. The surface recombination velocities for metal-Si interfaces are kept at default values of 1e7 cm/s. The simulation shows that considering the surface recombination can reduce the short-circuit current even further.


Current-voltage characteristics

1.Switch back to Layout mode.

2.expand the "Boundary Conditions" group and choose "base" to modify the base bias value.

3.Select the sweep type to be "range" and set the voltage to range from 0 to 0.7 Volts in 15 steps

4.Run the CHARGE solver

5.Run the script file "solar_cell_electrical_results.lsf" to obtain J-V curve and solar cell performance figure of merits

6.Repeat steps 4,5 after changing the material for "Si" geometry object to "Si (Silicon)_bulk" and "Si (Silicon)_ideal"


We can also generate voltage-current plots by sweeping the base bias voltage. The figures above show the results from the ideal silicon material as well as silicon with recombination effects on the same plot. Note that the plots were generated with a much smaller voltage step than what is used in the example to make them smooth. Bulk and surface recombination have decreased the short circuit current by ~10% as can be extracted from the y-crossing of the plot. The open circuit voltage for the solar cell can also be extracted from the x-crossing of the plot. The script file can also generate power curves of the solar cell which are necessary for efficiency calculation.                        

Efficiency values, as summarized below, can be extracted from this plot by dividing the maximum power by the input power of 100 mW/cm2. These values in addition to open-circuit voltage (Voc), short-circuit current (Jsc), fill factor (FF), and max power (Pmax) are printed by the script file in Script Prompt window each time the script is run.  




From the results, it can be seen that the efficiency in the case with bulk and surface recombination effects is lower by approximately 15%.


Electro-thermal simulation

These plots compare both the curves with results from the previous simulation of the solar cell at room temperature (300 K).  As expected, the open circuit voltage of the solar cell decreases at elevated temperature.  This lowering of the open circuit voltage is due to an increase in the dark current of the solar cell due to elevated recombination rates.  The maximum power achievable by the solar cell also decreases due to the same reason.  Please note that the curves below were generated with smaller voltage steps compared to the default voltage steps in the project file for a better representation of data.


Important model settings

Description of important objects and settings used in this model

Simulation span

We can take advantage of the solar cell geometry to minimize the simulation size, as shown in the figure below. Depending on the structure of the cell, the electrical and optical unit cells may or may not be the same size. The size of the FDTD simulation region can be minimized by ignoring the front contacts. In this example, the FDTD width is 0.5um. Contacts must be included in any CHARGE and Heat simulations, which means the FDTD data must be unfolded to the size of the electrical simulation unit cell (9um in this example, assuming no light absorption under the front contacts). This data unfolding will happen automatically by the "solar_generation" analysis group provided that the "periods" parameter (which is equivalent to the number of times the optical unit cell should be unfolded to fill up the electrical unit cell, 18 periods in this example) is set correctly. For electrical simulation, the unit cell can be half of the electrical period (distance between two adjacent contacts).

Optical and electrical unit cell

Optical and electrical unit cell

Part 1: Optical simulation

Boundary conditions

The boundary condition along the x-axis is set to periodic. For the y-axis, absorbing boundary conditions (PML) prevent unwanted reflection from the boundary. The bottom boundary of the simulation region is located below the lower metal contact. This is done so that we can place a monitor below the metal layer and check the amount of light transmits through the solar cell. In cases where the lower contact is partially transparent, this helps to determine the amount of light transmitted through the cell. In this example, where the transmission is zero, the simulation setup could be further optimized by placing the bottom boundary inside the metal and using metal boundary conditions. In addition, if the structure is symmetric, taking advantage of symmetric and anti-symmetry boundary conditions can further speed up the simulation. see Choosing between symmetric and anti-symmetric BCs for more information about symmetry settings.

Solar spectrum (AM1.5)

A standard broadband planewave source with a wavelength range that covers the solar spectrum is used to illuminate the solar cell initially rather than the actual solar spectrum. The results are normalized to the solar power spectrum from the sun (AM1.5) in the solar generation rate object. For more details on this technique, see the appendix.

Monitors number of frequency points

The number of frequency points for transmission and reflection monitors (T and R) can be adjusted (after overriding the global monitor settings) to obtain more data points and smoother plots. This will increase simulation memory requirements.  

Part 2: Heat simulation

Boundary conditions

A convective thermal boundary condition with a constant convection coefficient of 10 W/m2-K is applied at the top edge of the simulation region to model the heat loss into air through convection.  It is assumed that there is no heat transfer at the back of the solar cell which is a valid assumption for example for a roof mounted solar cell without employing any cooling.


The bandgap of the light absorbing material (Si in this example) should be specified in solar_generation analysis group properties since this parameter is needed to calculated the amount heat energy generated due to the absorption of photons with energy above material's bandgap.  

Part 3: Electrical simulation


The temperature of a CHARGE simulation needs to be specified even if there is no intention for a HEAT simulation. This is set to room temperature (300K) by default. The entire device is assumed to operate at the same temperature (temperature dependency = isothermal). The settings can be modified in the CHARGE Solver.

Optical generation import location

The location the optical generation data in the simulation should be aligned with respect to the device and specially the silicon layer. To have a proper position, set x = 5.5 um, y = 0, and z = 0 as the center of the imported generation data. You can see that now the generation data is correctly positioned to the illuminated silicon region, which begins from the right edge of the contact in x direction.

Surface recombination parameters

The following table summarizes the settings used for surface recombination effects in the simulation. These values vary between different devices as they depends heavily on fabrication process and the production quality of the device. Some guesswork might be required in order to match experimental results when the exact value of surface recombination velocities are not available. The surface recombination has not been applied to majority carriers for interfaces that involve metal contacts due to numerical stability reasons.


Unit (cm/s)

Ag (emitter)

Al (base)

SiO2 (front oxide)

Si3N4 (AR)

Surface Recombination Velocity





Apply to majority carriers





Normalization length

In a 2D CHARGE simulation, the current reported at the electrical contacts is normalized to its third dimension size, which in here is set to be 1e4 um = 1 cm as the "norm length" under the CHARGE solver settings.

Bias voltage range and number of points

The range of the bias voltage applied to the cell's contacts should be slightly longer than the expected value for the open-circuit voltage of the cell. This will ensure that the simulation captures the open-circuit voltage of the cell and also the script file is able to extract the current-voltage curve properly. In addition, the number of points over which the voltage is swept should high enough so that the J-V is smooth and also can avoid large voltage steps between simulations which can result in solver divergence.

Updating the model with your parameters

Instructions for updating the model based on your device parameters

1.Replace the solar cell structure with your own stack of materials. Ensure that the materials and stack geometry are updated consistently in both FDTD and CHARGE and HEAT. Note that the solar_generation object in the FDTD simulation should cover the entire active (light absorbing) region of the solar cell and the bandgap value of the material should be specified under Analysis tab of the object.

2.Update the doping profile for the active layer using the available doping objects in the CHARGE solver.    

3.Use your own cell size with a different contact-to-contact distance. This will require a change in the size of the electrical unit cell which needs change in the size of geometry-related objects and simulation region in CHARGE. Also, in FDTD, the "periods" parameter value in solar_generation analysis object should be adjusted accordingly in order to have proper dimensions for the generation data imported to CHARGE. For example, a 10um electrical unit cell which contains 9um of illuminated area needs 18 periods if the optical unit cell is 0.5um as illustrated in the figure "optical and electrical unit cell" in the section "important model settings".

Taking the model further

Information and tips for users that want to further customize the model

Anti-reflection coating: To reduce reflection losses, an anti-reflection coating layer in front surface of the solar cell can be used. Both simulation files include a disabled 'AR' object, which is a thin layer of Si3N4 on the top surface of the Silicon. Enable the object to include the AR coating in the simulation.


Non-planar geometry: Some solar cells incorporate non-planar and usually periodic geometries for better optical absorption. In that case, the optical unit cell should include one period of the non-planar structure. Also, if the structure is polarization sensitive, two simulations with TE and TM polarizations for light source should be performed and the average generation rate from these two simulations should be considered in electrical simulation. It may also be necessary to convert the simulation regions from 2D to 3D.


Oblique light incidence: The main difference between oblique and normal light incidence is the source settings in the optical simulation. For light incident at an angle it is recommended to use the Broadband Fixed Angle Source Technique (BFAST) for the planewave source. Also, if using symmetric or anti-symmetric boundary conditions, a non-normal incidence might brake the symmetry of the simulation and these boundary conditions may not be used.  


Front oxide layer: To model the native oxide layer that builds up on top of the silicon thin film, a 'front oxide' layer can be added to the electrical simulation to account for the surface recombination between oxide and Si. In reality, this unintentionally grown oxide is very this (a few angstroms) but the thickness in electrical simulation is not important since insulator materials act as a boundary in the simulation. Due to its negligible thickness, it is not expected to have any effects in light absorption and thus can be excluded from the optical simulation.


Tips for ensuring that your model is giving accurate results

The default settings provide a reasonable balance between accuracy and simulation time.  The following changes may provide higher accuracy, at the expense of longer simulation time and more required memory:  


Mesh refinement: The mesh refinement in both FDTD and CHARGE simulations can be increased either by the solver mesh settings or by using mesh override objects. In FDTD, this will better resolve the absorption profile which in turn results in more accurate generation rate data for electrical simulation. The rapid change in absorption at the upper silicon surface make it a good location for a smaller mesh. CHARGE will automatically refine the mesh locally based on the variations in generation and doping profiles. The "max refine steps" for CHARGE solver should be high enough for the mesh to be adequately refined. Otherwise, a warning will be given in the log file indicating inadequate refinement.

Additional resources

Additional documentation, examples and training material

Related publication: T.K. Chong, J. Wilson, S. Mokkapati, K. Catchpole, “Optimal wavelength scale diffraction gratings for light trapping in solar cells,” J. Opt. A, 14, 024012 (2012).

Related Lumerical University courses

Course_FDTD100 Course_CT100 Course_HT100 Course_SCRIPTING_v1

Appendix: Solar cell methodology

Additional background information and theory

Work flow of design and simulation of solar cell devices

A solar cell is a photovoltaic device. It converts energy from sunlight into electrical current using semiconductor materials that exhibit photovoltaic effect. Modeling a solar cell thus needs both optical and electrical simulations. The optical simulation models the generation of electron-hole pairs in the semiconductor material by calculating the absorbed optical energy. The electrical simulation then determines how many of these photo-generated electron-hole pairs get collected at the electrical contacts and contribute to the output electrical power. These two simulations combined, we can determine the photovoltaic efficiency of the solar cell.


FDTD is a high performance optical solver that can be used to simulate the interaction of light with a wide variety of solar cell designs. These designs can range from simple planar geometries to very complex patterning, and can include a wide variety of materials such as organics and metals. The result of the optical simulation is the spatial absorption in the substrate region, from which one can calculate the generation rate. This generation rate can be used in an electrical simulation in CHARGE to determine the photovoltaic efficiency of the solar cell. The solar cell workflow starts with optical simulations in FDTD. Taking the solar spectrum into account, the generation rate is calculated from the optical absorption and used as a source in the subsequent electrical simulation in CHARGE to calculate the efficiency.

Incorporating the solar power spectrum

It is not necessary to run a FDTD simulation with the solar spectrum. In fact, it is recommended to use the default source settings. Importing your own spectrum, while possible, will actually complicate your simulations and analysis and is not the recommended approach for solar cell simulation. It is relatively straightforward to include the effect of an arbitrary source power spectrum during your data analysis and post-processing. We first simulate using the built-in source spectrum, and obtain the normalized quantities in frequency domain; and then in post-processing, users can analyze any specific source spectrum, without running the simulation. This approach is summarized below, and demonstrated in the associated example files.


Step 1: Run your simulation in the normal way, with the standard source settings.

Setup your simulation in the normal way with "CW Normalization" selected (default setting). Simply specify the wavelength range of interest (300-1000nm is typical for most solar cell applications). It is not necessary to setup the spectrum of the FDTD source to match the desired power spectrum of your real source. The FDTD source will automatically inject a spectrum calculated from a Gaussian-like shaped pulse. After the simulation is complete, you can access the simulation data from frequency monitors. It is important to understand how to interpret this data. By default (with CW Normalization enabled), the frequency domain data is automatically normalized as if the source injected the same amount of power at all frequencies. In effect, the CW Normalization has normalized away the spectrum of the source. The data can be correctly interpreted as the impulse response of the system.  


Step 2: Spectrum post-processing

Now that we have the impulse response of the system, it's easy to calculate the response to an arbitrary power spectrum. We simply multiply the impulse response of the system by the new power spectrum. This is done by solar_generation analysis group object available in the object library. The object uses the solar script command to obtain the AM1.5 solar spectrum which can also be found in the link below. An added benefit of this approach is that we can re-analyze the results using a different power spectrum, without having to run a new simulation.


AM1.5 solar spectrum from NREL:,

Quantities to calculate from optical simulation

The absorption per unit volume can be calculated from the divergence of the Poynting vector,

$$P_{abs}=-0.5 Re\{\overrightarrow{\triangledown}.\overrightarrow{P}\}$$

It is possible to calculate the absorption directly from this formula, but divergence calculations tend to be very sensitive to numerical problems. Fortunately, there is a more numerically stable form. It can be shown that the above formula is equivalent to:

$$P_{abs}=0.5 Re\{i\omega\overrightarrow{E}.\overrightarrow{D}^{*}\}$$

With a little more work, we get the desired result:

$$P_{abs}=-0.5 \omega|\overrightarrow{E}|^{2}Im\{\epsilon\}$$G

To calculate the absorption as a function of space and frequency, we only need to know the electric field intensity and the imaginary part of the permittivity. Both quantities are easy to measure in an FDTD simulation.

The number of absorbed photons per unit volume can then be calculated by dividing this value by the energy per photon:


The generation rate is the integration of g over the simulation spectrum. In an ideal case, assuming that all absorbed photons generate electron-hole pairs, the photo-generation current can be obtained:

$$I=eG (A/m)$$

Where \(e\) is the unit charge of an electron. By using the CHARGE solver, users can obtain a more accurate short circuit current density.

Quantities to calculate from electrical simulation

To evaluate the performance of the solar cell, we typically measure the photovoltaic energy conversion efficiency:

$$\eta=\frac{FF\times V_{oc} \times J_{sc}}{P_{AM1.5G}}$$

where \(FF\) is the fill-factor, \(V_{oc}\) is the open-circuit voltage, \(J_{sc}\) is the short-circuit current, and \(P_{AM1.5G}\) is the incident power from the AM1.5G solar model valued at 100mW/cm2.


The fill-factor is related to the maximum power-point, where the power-product JV is at its maximum value:


Equivalently, the energy conversion efficiency can be written as shown below, which is commonly expressed as a percentage value:


Copyright Lumerical Inc. | Privacy | Site Map