Abstract
Computational models can provide significant insight into the operation mechanisms and deficiencies of photovoltaic solar cells. Solcore is a modular set of computational tools, written in Python 3, for the design and simulation of photovoltaic solar cells. Calculations can be performed on ideal, thermodynamic limiting behaviour, through to fitting experimentally accessible parameters such as dark and light IV curves and luminescence. Uniquely, it combines a complete semiconductor solver capable of modelling the optical and electrical properties of a wide range of solar cells, from quantum well devices to multijunction solar cells. The model is a multiscale simulation accounting for nanoscale phenomena such as the quantum confinement effects of semiconductor nanostructures, to micron level propagation of light through to the overall performance of solar arrays, including the modelling of the spectral irradiance based on atmospheric conditions. In this article, we summarize the capabilities in addition to providing the physical insight and mathematical formulation behind the software with the purpose of serving as both a research and teaching tool.
Similar content being viewed by others
1 Introduction
Computeraided design and device models are valuable tools when developing and evaluating photovoltaic solar cells. Laboratory scale tests can be usefully compared against detailed models that account for all relevant processes or with ideal, thermodynamically limited behaviour. Over the years, and with different degrees of sophistication, many pieces of software have been developed and published to tackle different aspects of solar energy research. For example, to calculate the solar spectrum as a function of the atmospheric conditions a traditional solution is to use SMARTS [1]; the light absorption profile in the solar cell or even at module level could be addressed by OPTOS [2] or OPAL2 [3]; while to solve the transport equations of a solar cell one could use PC1D [4], SCAPS [5] or Quokka [6]. Several free and commercial programs, not specifically designed for solar energy research, have also been used historically, including AFORSHET [7], Nextnano [8], ATLAS [9] or SENTAURUS [10], with the first two focused on the device and semiconductor properties and the latter two also solving the optics of the solar cells, among other properties. An extensive list of software for solar energy research—both online calculators and downloadable programs—has been compiled by PV Lighthouse [11]. In general, programs like ATLAS and SENTAURUS provide a general purpose, easy to use interface—often solving multiphysics problems, such as electrical transport coupled with thermal transport—to the detriment of performance. On the contrary, specific programs like AFORSHET or PC1D are extremely fast and efficient, but limited in the problems they can solve, in this case 1D heterostructures and solar cells.
Apart from a few exceptions, such as PVlib [12], all these solvers are highlevel, selfcontained applications. While users can provide their own inputs and, in some cases, access the source code of the programs and customize some aspects of them, they are not designed with that purpose in mind.
Solcore is a multiscale, modular simulation framework for solar energy research, written mostly in Python. Solcore evolved from SOL, a Fortranbased, quantum well solar cell solver developed by Nelson and Connelly [13], with the explicit purpose of simplifying its integration in other programs, its expansion with custom routines and algorithms, and being didactic and informative. It is a teaching and learning tool as much as a rigorous research tool. Solcore is also extremely flexible. It integrates several algorithms for the multiscale modelling of semiconductors and solar cells, allowing a user without access to other methods, but with some experience with Python, to solve many different problems out of the box. On the other hand, most of its functionality can be interfaced with external tools, optimized to solve a specific problem, which are more advanced and accurate or that use an approach not considered in Solcore. The most recent version has been released under the GNU Lesser General Public License (GNULGPL) and can be found on GitHub [14].
Solcore’s capabilities can be grouped into four categories: materials science (Sect. 2), light sources (Sect. 3), solar cells (Sects. 4–6) and largescale calculators (Sect. 7), each of them tackling a different area and scale relevant for research in solar energy. Figure 1 shows how these parts relate to each other and summarizes some of their content.
2 Materials science
The materials science modules in Solcore deal with the retrieval and calculation of material properties as well as those of quantum nanostructures, in particular quantum wells. They form the building blocks necessary to create the structures and calculate the performance of full solar cell devices. While focused on its application for solar cells, this part of Solcore is widely applicable to any research area related to semiconductor materials, as a way of managing the material properties, customizing them and using them in other calculations.
It should be noted that, in reality, electronic and optical properties are not independent but related to each other via the material band structure. As the case in most programs, Solcore uses a nonconsistent approach, with independent electronic and optical parameters obtained from different sources. The reader should consider full band structure methods, like pseudopotential or tightbinding, for a consistent set of electronic and optical properties.
2.1 Parameters database
The parameters database contains the basic properties of many semiconductor materials, including silicon, germanium and many III–V semiconductor binary and ternary alloys. Among other parameters, it includes the energy bandgap, the electron and hole effective masses, the lattice constants and the elastic constants.
The main sources of data are the article by Vurgaftman on Band parameters for III–V semiconductors [15] and the Handbook Series on Semiconductor Parameters by Levinshtein et al. [16]. The carrier mobility calculator is based on the empirical lowfield mobility model by Sotoodeh et al. [17], and it is available only for some materials where the inputs for the model are available.
There are two methods for retrieving parameters from the database. The first one consists simply of getting the data using the get_parameter function with the required inputs. For example:
will return the bandgap of GaAsP for a phosphorus concentration of 45% at a temperature of 300 K, equal to 1.988 eV. This method only uses the existing data. Another method is to create a material object which will contain all the properties existing in the database for that material, as well as those included as input, which will override the value of the database parameter, if it exists. The following example creates a GaAs object and an AlGaAs object, using a custom electron effective mass in the latter:
Now, any parameter—including the custom ones—are attributes that can be easily accessed and used anywhere in the program. For example, GaAs.band_gap is the GaAs bandgap and AlGaAs.lattice_constant is the AlGaAs lattice constant, both at the composition and temperature chosen when creating the objects.
Figure 2 shows the wellknown bandgap versus lattice constant map of all semiconductor materials and alloys (only ternary compounds) currently implemented into Solcore. However, any other material can be used in all of the Solcore functions, as long as the necessary input parameters are provided. This can be done by overriding all the properties of an existing material during the creation as above, or adding it as an external material in the configuration files.
2.2 Optical properties database
In order to calculate and model the optical response of potential solar cell architectures and material systems, access to a library of accurate optical constant data is essential. Therefore, Solcore incorporates a resource of freely available optical constant data measured by Sopra S. A. and provided by Software Spectra Inc. [18]. The refractive index n and extinction coefficient k are provided for over 200 materials, including many III–V, II–VI and group IV compounds in addition to a range of common metals, glasses and dielectrics.
Any material within the Sopra S. A. optical constant database can be used with the “material” function described above, but they will have only the optical parameters n and k. In the case of materials that are in both databases, the keyword “sopra” will need to be set to “True” when creating the material. Once a material is loaded its n, k and absorption coefficient data are returned by calling the appropriate method, for example SiO2.n(wavelength) and SiO2.k(wavelength). For certain materials in the database, the optical constants are provided for a range of alloy compositions. In these cases, any desired composition within the range can be specified and the interpolated n and k data are returned. Several examples of materials created from the Sopra database are shown in Listing 1.
Figure 3 highlights example output from the Sopra materials library with Fig. 3a showing GaAs and Ge optical constant data and Fig. 3b showing interpolated AlGaAs extinction coefficients for a range of aluminium fractions.
2.3 Quantum solver
The electronic band structure of semiconductor materials is responsible for their light absorption and emission properties as well as for many of their transport properties, ultimately depending on the carriers’ effective masses. These properties are not intrinsic to the material, but depend on external factors, too, most notably the strain and the quantum confinement.
Given the crystalline nature of most semiconductor materials, there will be strain whenever two materials with different crystal lattice constants are grown on top of each other pseudomorphically. Even those with the same lattice constant might be under stress due to other effects such as the presence of impurities or if used at different temperatures having dissimilar thermal expansion coefficients. Quantum confinement, in turn, takes place when the size of the semiconductor material in one or more dimensions is reduced to a few nanometres. In that situation, the energy levels available to the carriers become quantized in the direction of confinement, also changing the density of states. Both conditions take place simultaneously when dealing with strainbalanced quantum wells (QW).
Quantum wells—and more recently quantum wires—have been employed to tune the absorption properties of high efficiency solar cells for the past two decades. The need for appropriate tools to study them in the context of photovoltaics led to the development of the simulation models that were the seed of Solcore [19,20,21,22]. As strained materials with quantum confinement, special care must be taken to obtain a sensible set of parameters for the QW structures, including the band edges with confined energy levels, the effective masses and the absorption coefficient.
Solcore’s approach for evaluating the properties of QWs involves calculating first the effect of strain using a 8band Pikus–Bir Hamiltonian (Sect. 2.3.1), treating each material in the structure as bulk, and then using the shifted bands and effective masses to solve the 1D Schödinger equation, after a proper alignment between layers (Sect. 2.3.2) [23]. Finally, the absorption coefficient is calculated based on the 2D density of states, including the effect of excitons (Sect. 2.5).
2.3.1 Bulk 8band k\(\cdot \)p calculator
There are many numerical methods to calculate the band structure of a material with a varied degree of sophistication and complexity, such as the tight binding, pseudopotential, Green’s function or k\(\cdot \)p methods. Solcore includes a modified 8band Pikus–Bir Hamiltonian to calculate the band structure of bulk materials under biaxial strain [24], considering the coupling between the conduction, heavy hole, light hole and splitoff bands. The eigenfunctions \(\varPsi \) and eigenstates E are the solutions of the following equation, where \(\mathcal {H}\) is the Pikus–Bir Hamiltonian:
Here, the subdiagonal elements are just the complex conjugate of the corresponding upper elements. Diagonal terms have three components: the information about the unstrained band edges, a kinematic term and a strain term. As an example, the term \(E_{\mathrm{cb}}\) is given by:
where \(E_{\mathrm{c}0}\) is the position of the unstrained conduction band edge, \(\gamma _\mathrm{c}\) a modified Luttinger parameter, the \(k_{i}\) the momenta in the different directions of the reciprocal space, \(a_\mathrm{c}\) the conduction band hydrostatic deformation potential and the \(\epsilon _{ij}\)s the strain tensor components. Offdiagonal terms have similar expressions, not involving the unstrained band edges. A detailed description of all these terms and their origin can be found in Tomic [24].
This system is readily solved for the given \(k_i\) using Numpy’s linalg.eig function, which provides as output the eigenfunctions and the corresponding eigenvalues. Typically, we are interested in the new band edges due to the effect of strain and the resulting effective masses, given by the curvature of the bands near \(k_i = 0\). Figure 4 shows an example of the bands calculated in this way for the case of a strained InGaAs layer grown pseudomorphically on GaAs, and the resulting dependence of the effective mass with the indium content of the layer. Notice that, due to the effect of strain, the heavy and light hole bands are no longer degenerate at the gamma point \(\varGamma \) (\(k = 0\)).
2.3.2 1D Schrödinger equation
Once the new band edges and effective masses for each of the materials forming the quantum well structure are known, the quantum properties can be calculated by solving the 1dimensional Schrödinger’s equation. Solcore uses the method described by Frensley [26], which allows calculation of the eigenvalues and eigenvectors of an arbitrary potential. However, only closed and periodic boundary conditions are implemented. Solcore does not incorporate the quantum transmitting boundary method (QTBM) described by Frensley, meaning that unbounded states will be, in general, not correct. A tridiagonal matrix is constructed by writing the variable effective mass Schrödinger’s equation over a series of mesh points. The eigenvalues of the matrix correspond to the allowed energy levels of the system. Thus, the system of equations to solve over the mesh points is given by:
where \(s_i\) and \(d_i\) depend on the mesh spacing \(\varDelta \) and the positiondependent potential \(V_i\) and effective masses \(m_i\) as:
This system is solved using the tools available in the Scipy package for solving sparse linear systems of equations, in particular sparse.linalg.eigs.
Figure 5 shows two examples of the band profile and wavefunctions calculated by Solcore. The first one (Fig. 5a, b) is a single InGaAs QW with GaAs interlayers and GaAsP barriers. The strain and quantum confinement shift the light hole valence band (dashed line) with respect to the heavy hole valence band (continuous line). In the GaAsP barriers, under tensile strain, this shift is in the opposite direction to the shift inside the QW, which is under compressive strain and experiences the effects of confinement. Figure 5c, d compares the position of the energy levels predicted by Solcore in this structure with the more rigorous treatment of the 1dimensional 8band kp solver implemented by Nextnano\(++\). As shown, the electron energy levels are barely modified, but hole levels are shifted due to the coupling between the bands [8]. The inplane dispersion when using a 8band solver will no longer be parabolic, and we would expect this to have an impact into the absorption coefficient and especially the selection rules for the transitions due to the band mixing effects (see Sect. 2.5).
Finally, Fig. 5e, f shows 1D the local density of states (LDOS) of a multiQW structure with thin barriers, including a Lorentzian broadening of 5 meV. For the electrons, there is strong coupling between the QWs, resulting in a range of energies for the ground state. The heavy hole ground states are too deep, resulting in lower coupling between wells. This figure also shows the artefacts in the LDOS of unbound states due to the use of closed boundary conditions rather than QTBM.
2.4 Criticalpoint parabolicband optical constant model
Understanding the optical response of both established and novel materials is crucial to effective solar cell design. To efficiently model the complex dielectric function of a material, Solcore incorporates an optical constant calculator based on the wellknown criticalpoint parabolicband (CPPB) formalism popularized by Adachi [27,28,29]. In this model, contributions to \(\epsilon _2(\omega )\) from critical points in the Brillouin Zone at which the probability for optical transitions is large (van Hove singularities) are considered. The transition probability for such transitions is proportional to the joint density of states (JDOS) \(\mathbf J _{\mathrm{cv}}(\omega )\), which describes the number of available electronic states between the valence and conduction bands at given photon energy. The imaginary part of the complex dielectric function is related to the JDOS by:
where \(\left \left\langle c  p  v \right\rangle \right \) is the momentum matrix element for transitions from the valence band (v) to the conduction band (c). Critical point transitions are considered at the following points of symmetry in the band structure: \(E_0\) corresponds to the optical transition at the \(\varGamma \) point and \(E_0 + \varDelta _0\) to the transition from the spinorbit split off band to the conduction band at the \(\varGamma \) point. \(E_1\) and \(E_1 + \varDelta _1\) denote the transitions from the valence heavyhole (HH) band and the valence lighthole (LH) band, respectively, to the conduction band at the L point. The \(E'_0\) triplet and \(E_2\) transitions occur at higher energies, between the HH band and the split conduction bands at the \(\varGamma \) point as well as across the wide gap X valley. The model also includes contributions from the lowest energy indirect bandgap transition and the exciton absorption at the \(E_0\) critical point. The contributions listed above are summed to compute the overall value of \(\epsilon _2(\omega )\). The real and imaginary components of the overall complex dielectric function \(\epsilon (\omega ) = \epsilon _1(\omega )  i\epsilon _2(\omega )\) are then related via the Kramers–Kronig relations;
The CPPB model included with Solcore also incorporates a modification to the critical point broadening present in Adachi’s description, which is shown to produce a poor fit to experimental data in the vicinity of the \(E_0\) and \(E_1\) critical points [30]. To give a more accurate description of the broadening of the optical dielectric function, Kim et al. [31, 32] proposed that a frequencydependent damping parameter be used to replace the damping constant given by Adachi at each critical point;
where \(\varGamma \) is the damping constant used by Adachi and \(\alpha \) describes the shape of the lineshape broadening with \(\alpha = 0\) producing purely Lorentzian character and \(\alpha = 0.3\) producing a good approximation to Gaussian broadening.
The Solcore module absorption_calculator contains the CPPB model within the Custom_CPPB class. The class offers a flexible way to build up the optical constant model by adding individual critical point contributions through the Oscillator structure type within Solcore. In addition to the oscillator functions described by Adachi, the Custom_CPPB class also provides additional oscillator models and the Sellmeier equation for describing the real part of the dielectric function for nonabsorbing materials [33]. For example, the code in Listing 2 calculates the complex dielectric function of GaAs.
Figure 6 shows the real and imaginary components of the complex dielectric function of GaAs as calculated by the Custom_CPPB class. The model, using a set of parameters for GaAs similar to those specified in [28], shows excellent agreement with the experimental data taken from Palik [34]. For a recent demonstration of Solcore’s CPPB model, please refer to the discussion on Wilson et al. [35].
2.5 QW absorption calculator
For modelling the optical properties of QWs, we use the method described by Chuang [36]. The absorption coefficient at thermal equilibrium in a QW is given by:
where \(I_{hm}^{en}^2\) is the overlap integral between the holes in level m and the electrons in level n; H is a step function, H(x) = 1 for \(x>0\), 0 and 0 for \(x<0\), \(\rho _{rmn}^{2D}\) is the 2D joint density of states, \(C_0\) a proportionality constant dependent on the energy, and F the excitonic contribution, which will be discussed later.
Here, \(n_r\) is the refractive index of the material, \(m_{rmn} = m_{en} m_{hm} / (m_{en} + m_{hm})\) the reduced, inplane, effective mass and L an effective period of the quantum wells. The inplane effective mass of each type of carriers is calculated for each level, accounting for the spread of the wavefunction into the barriers as [37]:
This inplane effective mass is also used to calculate the local density of states shown in Fig. 5b. In Eq. 12, \( \hat{e} \cdot \mathbf {p} ^2\) is the momentum matrix element, which depends on the polarization of the light and on the Kane’s energy \(E_p\), specific to each material and determined experimentally. For band edge absorption, where \(k = 0\), the matrix elements for the absorption of TE and TM polarized light for the transitions involving the conduction band and the heavy and light holes bands are given in Table 1. As can be deduced from this table, transitions involving heavy holes cannot absorb TM polarized light.
In addition to the bandtoband transitions, QWs usually have strong excitonic absorption, included in Eq. 13 in the term \(F_{nm}\). This term is a Lorentzian (or Gaussian) defined by an energy \(E_{nmx, j}\) and oscillator strength \(f_{ex, j}\). It is zero except for \(m=n \equiv j\) where it is given by Klipstein et al. [38]:
Here, \(\nu \) is a constant with a value between 0 and 0.5 and \(\sigma \) is the width of the Lorentzian, both often adjusted to fit some experimental data. In Solcore, they have default values of \(\nu = 0.15\) and \(\sigma = 6\) meV. R is the exciton Rydberg energy [36].
Figure 7 shows the absorption coefficient of a range of InGaAs/GaAsP QWs with a GaAs interlayer and different in content. Higher indium content increases the depth of the well, allowing the absorption of less energetic light and more transitions.
3 Light sources
Transforming sunlight into electricity is the final goal of any solar cell, and it is therefore necessary to have a convenient way of creating, manipulating, and modifying the properties of the spectrum of the light. Ideally, solar cells will be designed and evaluated under a standard solar spectrum—e.g. the air mass 1.5 direct solar spectrum, AM1.5D—but practical light sources are not standard. More often than not, we are interested in modelling the performance of a solar cell under the experimental spectrum of a solar simulator or lamp in a laboratory, simulated data calculated from atmospheric conditions (temperature, humidity, aerosol content, etc.) or even under real irradiance data measured at different locations worldwide. This can then be compared with the experimental performance or tailored to work best under certain conditions.
The Solcore module light_source is designed to deal easily with different light sources. It has direct support for:

Gaussian emission, typical of lasers and lightemitting diodes.

Blackbody radiation, characteristic of halogen lamps defined by a temperature, but also used very often to simulate the spectrum of the Sun, very close to a black body source at 5800 K.

Standard solar spectra: the extraterrestial spectrum AM0 and the two terrestial ones, AM1.5D and AM1.5G as defined by the ASTM G17303(2008) standard.

Irradiance models, using location, time and atmospheric parameters to calculate a synthetic solar spectrum. Solcore includes two models: SPECTRAL2, fully implemented in Python, and an interface to SMARTS binaries (which need to be installed separately), which greatly simplifies its use in batch mode.

Userdefined irradiances, provided externally from a database or any other source, allowing for maximum flexibility.
The syntax in all cases is simple and intuitive considering the type of source that needs to be created. In the case of the irradiance models, which often have a large number of inputs, Solcore defines a set of default values, so only those that are different need to be provided. The code in Listing 3 illustrates the creation of several light sources using the minimum required input in each case. A plot of those light sources is shown in Fig. 8.
Once created, specific parameters of the light sources can be easily modified without the need for creating the source from scratch. That is particularly useful for the irradiance models, where we might be interested in getting the spectrum as a function of a certain parameter (e.g. the hour of the day, or the humidity) without changing the others. For example, smarts.spectrum(HOUR=11) and smarts.spectrum(HOUR=17) will provide the spectrum of the SMART light source defined above calculated at 11 h and at 17 h, respectively; all additional parameters have the default values. This method has been used to model experimental solar irradiances measured by different spectroradiometers based on the local atmospheric conditions [39].
A final, very convenient feature of the LightSource class is the ability to request the spectrum in a range of different units. The default is power density per nanometre, but other common units are power density per eV or photon flux per nanometre, among others. While these unit conversions are straightforward, it is often an initial source of errors due to missing constants or incompatible magnitudes.
The light_source module has been described in the context of the solar spectrum, but it can be applied broadly where there is spectral data involved, such as the fitting of photoluminescence, electroluminescence, or Raman spectra.
4 Optical solvers
The purpose of the optical solvers is to obtain the fraction of incoming light reflected, absorbed, and transmitted in a solar cell as a function of the wavelength of the light and the position inside the structure. Solcore includes three models to tackle this problem: Beer–Lambert law (BL), transfer matrix method (TMM), and rigorous coupledwave analysis (RCWA). At the moment, Solcore does not have explicit support for light trapping effects using general textured surfaces, which are usually present in silicon solar cells. However, this can be implemented to a large extent using the RCWA method, although not very efficiently. Additionally, the reflected, absorbed, and transmitted light can be calculated externally and then provided as input to Solcore to obtain the electrical properties of a solar cell structure, giving it full flexibility.
All the optical solvers apply to the solar cell structure as a whole, providing as output the fraction of light reflected (\(R(\lambda )\)), transmitted (\(T(\lambda )\)), and absorbed per unit length at a depth z from the front surface (\(A(\lambda , z)\)).
Figure 9 shows a comparison of the quantum efficiency of a thin GaAs solar cell with a distributed Bragg reflector (DBR) and an array of TiO\(_2\) nanoparticles (NP) on top calculated using the three optical solvers described in the following sections. Supplementary Information shows the full code needed to produce these curves [40].
4.1 Beer–Lambert law (BL)
This is the simplest model to calculate the absorption in a multilayer structure. It ignores all reflection at the interfaces—the front surface reflection can be provided externally, and is zero otherwise at all wavelengths—and the absorption per unit length as a function of the wavelength \(\lambda \) and the position z in layer n is given by:
where \(\alpha _n\) is the absorption coefficient of layer n, \(w_n\) its thickness and \(z_n\) the position of the beginning of the layer. Due to its simplicity, the BL law is used widely in photovoltaics but in reality it is only applicable when the contrast in the refractive index between layers can be ignored and when there is strong absorption, reducing the effects of light reflection at the interfaces.
4.2 Transfer matrix method (TMM)
In order to evaluate the realistic optical behaviour of a solar cell design, it is important to consider the interaction of incident electromagnetic (EM) radiation with a succession of both absorbing and nonabsorbing planar layers. The combined optical response of such a layered structure is crucial when considering the minimization of extrinsic front surface reflection losses [41], the emissivity in the midIR of low emissivity coatings for hybrid PVthermal applications [42] and also when studying the optical constants and layer thicknesses of material using the experimental technique of spectroscopic ellipsometry. Therefore, Solcore evaluates the interaction of incident EM radiation through a layered structure using the TMM. The incident light radiation takes the form of homogeneous, electromagnetic planepolarized waves and is represented by components describing the electric, E and magnetic field strengths, H:
where \(\mathcal {E}\) and \(\mathcal {H}\) denote the electric and magnetic field amplitudes, respectively, N the complex refractive index, z the distance in the direction of propagation, \(\omega \) the angular frequency and \(\lambda \) the wavelength of radiation. \(\varphi \) and \(\varphi ^{\prime }\) represent arbitrary phase angles for both the electric and magnetic travelling wave components and are not independent of each other. The characteristic transfer matrix for evaluating the interaction between planar electric and magnetic waves at the interface of n thin films on a semiinfinite substrate is derived in detail elsewhere [43] and given by the equation:
where \(\delta _q\) is defined as the phase factor of the \(q_{\mathrm{th}}\) planar layer, \(\eta _q\) the optical admittance of the \(q_{\mathrm{th}}\) layer, and \(\eta _m\) the optical admittance of the substrate. The layer closest to the incident medium is evaluated first before working through the n layer structure in order. The term \(\delta _q\) describes the phase shift required to translate the z coordinate of the E and H interactions by the thickness of each layer, q. The spectrally varying Fresnel coefficients describing reflection, transmission, and absorption of the multilayer structure can be calculated from the solutions to Eq. 23 at discrete wavelengths:
The implementation of the TMM in Solcore uses the freely available tmm module developed by Byrnes [44]. The multilayer optical stack is built up using Solcore’s Structure object. Some example code evaluating the TMM for a triple layer antireflection coating (ARC) on top of conventional multijunction solar cell materials AlInP and GaInP is included in Listing 4.
Figure 10a depicts calculated reflection and transmission from the solutions to the characteristic TMM equation over a range of incident angles for an optimized triple layer ARC design reported in [41]. The solid lines indicate the optical reflection at the front surface, while the dashed lines correspond to the transmitted light into the substrate, in this case taken to be the optically thick top subcell material of GaInP.
In addition to using the TMM for calculating the reflection, transmission, and absorption in a multilayer optical stack, it can also be applied to the popular spectroscopic technique of ellipsometry. This measures a change in the polarization of incident light reflected at the surface of a sample. A more detailed description of ellipsometry and its uses can be found elsewhere [33]. The measured values are expressed as the angles Psi (\(\varPsi \)) and Delta (\(\varDelta \)), which are related to \(\mathbf {R_s}\) and \(\mathbf {R_p}\) (the Fresnel reflection coefficients for s and ppolarized light, respectively) by^{Footnote 1}:
As the ratio between \(\mathbf {R_s}\) and \(\mathbf {R_p}\) is a complex quantity, phase change information is contained within \(\varDelta \) in Eq. 27. The change in phase of the reflected electric and magnetic plane waves can be evaluated from the solution of Eq. 23 and is given by:
The complex dielectric function of a sample can be calculated from the experimental ellipsometry results with the solutions to Eq. 27:
Some example code calculating the complex dielectric function from the ellipsometric response of a sample of Ge substrate is shown in Listing 5. The output of the model is shown in Fig. 10b and is compared with experimentally obtained data at an incident angle of \(79^{\circ }\). Good agreement with the experimental data is observed when a thin 4.5 nm layer of germanium oxide (GeO\(_2\)) is included in the layer model.
4.3 Rigorous coupledwave analysis (RCWA)
Finally, Solcore includes an interface to the \(S^4\) solver (which must be installed separately), developed at Stanford University, in order to model solar cells with nanophotonic designs [45]. \(S^4\) is an implementation of RCWA, also sometimes referred to as the Fourier Model Method (FMM), which solves the linear Maxwell’s equations in structures containing 2D periodicity. Structures with 2D periodicity can be found in advanced solar cell designs aiming, for example, to reduce the solar cell thickness by scattering the incoming light using a periodic diffraction grating at the front or rear of the absorbing layer [46, 47].
\(S^4\) defines structures by creating a layer stack of the desired materials using Solcore’s Layer and Junction classes, in which each layer’s composition can be modified by adding circles, rectangles, ellipses, or a generalized polygon made of a specified Solcore material. Each layer is assumed to be infinitely periodic in the x and y direction, and uniform in the z direction. A unit cell must be defined for the whole structure (using the size attribute in the user options), and each shape is placed at a specified location (and, where relevant, angular orientation) in the unit cell; as many shapes as necessary can be added, supplied as a list of dictionaries with the relevant parameters for each shape. An example for each type of shape supported by \(S^4\) is shown in Listing 6. The size of the unit cell in the x and y directions and the base size of the unit cell must be given in nm. The number of Fourier components used in the calculation [45] must also be specified; this is done using the orders attribute in the user options passed to the solver of choice.
5 Singlejunction solar cells
Solcore includes four solvers to calculate the electrical properties of a singlejunction device. In order of increasing accuracy, these are: detailed balance, 2diode equation, depletion approximation, and Poisson–drift–diffusion.
5.1 Detailed balance (DB)
This solver calculates the electrical properties of the junction by balancing the elementary processes taking place in the solar cell, carrier generation, and radiative recombination, using the formalism described by Araújo and Martí [48]. The method is widely used by the photovoltaic community to calculate the limiting conversion efficiencies of the different solar cell architectures or materials. The simplest DB formulation only needs an absorption edge energy and an absorptivity value above that edge. Out of this, the carrier generation and radiative recombination are calculated for different internal chemical potentials, equal to the external electrical bias, in the ideal case. Solcore includes this basic model, but also allows the user to provide a more complex absorption profile.
The radiative recombination or thermal generation current \(J_{\mathrm{rad}}\) from the solar cell is calculated following the formalism described by Nelson et al. [20], considering all the possible paths of the light absorbed by the cell and the reciprocity relation between emission and absorption. The total radiative current, using the generalized Planck equation, is given by:
where A(E, \(\theta \), \(\mathbf {s}\)) is the probability that a photon of energy E will be emitted (absorbed) from the point \(\mathbf {s}\) on the surface at an internal angle \(\theta \), and \(A_{\mathrm{front}}(E)\) and \(A_{\mathrm{back}}(E)\) are the combined probability of the photon to be emitted (absorbed) by the front and the back of the cell, respectively.
The different paths of the absorbed light are depicted in Fig. 11. Path A represents light that reaches the front surface within the escape cone (\(\theta < \theta _\mathrm{c}\)) and that crosses the structure. Path B is the light that reaches the back surface outside the escape cone of the front surface (\(\theta > \theta _\mathrm{c}\)), being totally internally reflected and crossing the structure twice. Light reaching the back surface within the escape cone (\(\theta < \theta _\mathrm{c}\)) can either escape through the front (path C) or be reflected (path D). With these considerations, the contribution to the surface integral of the four terms will be [20]:
These equations can be written in a more compact form by noting that \(r=1\) for \(\theta > \theta _\mathrm{c}\). In this situation, B, C, and D can be combined and the integral extended from 0 to 1, resulting simply in:
The factor \(S_{\mathrm{back}}\) representing the area of the back of the cell has been omitted here as we are interested in the current density, and therefore independent of the area. Likewise, \(A_{\mathrm{front}}(E)\) will be given simply by the component A in Eq. 31:
\(J_{\mathrm{rad}}(V, T_{\mathrm{cell}})\) will represent the radiative recombination of the cell at a bias V and temperature \(T_{\mathrm{cell}}\), while \(J_{\mathrm{rad}}(0, T_{\mathrm{a}})\) will be the carrier generation due to thermal radiation from the ambient at a temperature \(T_\mathrm{a}\). Typically, \(T_{\mathrm{cell}} = T_\mathrm{a}\).
Carrier generation in the solar cell due to the absorption of the solar irradiance H(E) can be written simply as:
where \(R = r(E, 0)\) is the normal incidence reflection and \(A_n\) is the normal incidence absorptivity of the cell, given by \(A(E) = 1 \exp (\alpha (E) w)\) where w is the thickness of the junction and \(\alpha \) is the absorption coefficient.
Combining all these equations, the total current as a function of the bias calculated with the DB model will be given by:
If \(T_\mathrm{a} = T_{\mathrm{cell}}\) and \(E \gg k_bT\), Eq. 35 simplifies, resulting in:
with \(J_{01}\) the reverse saturation current, given by:
While in these equations the term \(\exp (\alpha w)\) is used, it should be noted that none of the two parameters alpha and w are needed as the product is calculated internally by Solcore from the normal incidence absorptivity \(A_n(E)\), which is the value given as input:
5.2 2diode model (2D)
This is the simplest method for simulating the behaviour of a solar cell, using electrical components to model the different transport and recombination mechanisms of the device. The 2D model is widely applied when modelling solar cells at the most engineering end of the topic, when a detailed knowledge of the solar cell structure (layers, absorption coefficient, etc.) are not known or sought. It is often used to fit experimental IV curves and find approximate, general information on the solar cell quality without entering on the fundamental processes. It can provide valuable information to engineers, when designing solar modules for example, or for diagnostic purposes The complete form of the equation is:
Generally, the photocurrent is modelled as a current source (\(J_{\mathrm{sc}}\)), with radiative and nonradiative recombination modelled as two diodes with reverse saturation currents \(J_{01}\) and \(J_{02}\), and ideality factors \(n_1\approx 1\) and \(n_2\approx 2\), respectively. The shunt resistance \(R_{\mathrm{sh}}\) accounts for alternative current paths between the contacts of the solar cell, being infinite in the ideal case, and the series resistance \(R_\mathrm{s}\) accounts for the other transport losses. The values of the saturation currents and ideality factors can, ultimately, be calculated from the material properties and device structure, as is done in the depletion approximation model (Sect. 5.4), but the 2D model allows them to be provided directly as input, obtained from a fit to experimental data, for example. They can also be calculated internally, using the DB solver to obtain \(J_{01}\) and \(J_{\mathrm{sc}}\), and then using a radiative efficiency coefficient to obtain \(J_{02}\). The radiative efficiency \(\eta \) is defined as the fraction of radiative current \(J_{\mathrm{rad}}\) at a given reference total current \(J_{\mathrm{ref}}\):
The reference voltage \(V_{\mathrm{ref}}\) can be written as a function of \(\eta \) and \(J_{\mathrm{ref}}\) as:
On the other hand, the radiative coefficient can also be written as:
Combining Eqs. 41 and 42 and using the expression for the diode with ideality factor \(n_2\), \(J_{02}\) can be written as:
In the common situation of very large shunt resistance and \(V_{\mathrm{ref}} \gg k_bT/q\), this equation further simplifies to:
This process can, of course, be reversed to use knowledge of \(J_{01}\) and \(J_{02}\) at a given reference current to calculate the radiative efficiency of a solar cell, which is useful to compare different materials, technologies or processing methods. This was done by Chan et al. using \(J_{\mathrm{ref}} = 30\) mA/cm\(^2\), obtaining \(\eta \) values of 20% for InGaP, 22% for GaAs, and 27% for InGaAs devices [49]. It should be pointed out that this method is only valid under the assumption that \(J_{01}\) corresponds only to radiative recombination and \(J_{02}\) only to nonradiative recombination, which is generally true for QW solar cells and some III–V solar cells, like those made of GaAs or InGaP, but not for Si or Ge, for example. Other definitions of the radiative efficiency are based on the external quantum efficiency, the \({I}_{\mathrm{sc}}\) and \({V}_\mathrm{oc}\) of the cell, as described by Green [50].
Despite the simplicity of the 2diode model, it is very useful to guide the design of new solar cells and explore the performance of new materials, such as dilute bismuth alloys [51], or to asses the performance of large arrays of solar cells, as will be shown in Sect. 7 [52].
5.3 Poisson–drift–diffusion (PDD)
This method solves the Poisson equation for the electrostatic potential coupled with the transport equations for electrons and holes and suitable boundary conditions in the steady state. It is the standard method for calculating the electrical properties of most semiconductor devices, including solar cells, transistors, or lightemitting diodes. It is also the only method included in most software packages for simulating semiconductor devices, such as PC1D, Nextnano, SCAPS and AFORSHET.
Figure 12a shows the flow chart of Solcore’s PDD solver, which currently only solves the timeindependent PDD equations (steady state). Any simulation starts by calculating the band structure under equilibrium conditions (no illumination or bias). If the simulation includes illumination, the photogeneration as a function of the position in the structure is calculated externally to the PDD solver using any of the models described in Sect. 4. To aid convergence, the solution at short circuit conditions is calculated by increasing the light intensity from zero to the nominal value in small steps. Similarly, the solution at any bias is obtained by solving the problem first at zero bias and then increasing it in small steps, using the previous solution as the initial condition for the next one. Remeshing is performed several times during the simulation of the currentvoltage characteristics (see Sect. 5.3.3).
To calculate the internal quantum efficiency (IQE), a small differential increase is included in the photogeneration profile as a function of wavelength. The IQE is then calculated as the ratio between the resulting increase in the photocurrent and the increase in the photogeneration at that wavelength. This procedure is comparable to the actual experimental measurement of the quantum efficiency.
5.3.1 Solver assumptions and formulation
The Poisson’s and drift–diffusion equations relate the electrostatic potential created by the free and fixed charges with the carrier densities and their variation across the structure due to generation, recombination and externally applied bias. The reader is referred to any semiconductor textbook for a detailed description of their derivation (see for example [53] or [54]). The solver uses the Boltzmann approximation for the carrier distribution with the following assumptions:

All carrier populations are in quasithermal equilibrium.

The mobility of carriers is independent of the electric field.

Temperature is uniform.

There are no magnetic fields.
As a consequence of the fieldindependent mobility, Solcore’s PDD solver will be valid only in situations where electric field is not very strong. Poisson’s equation relates the electrostatic potential \(\phi \) and the electrical charges in the structure. In one dimension, it can be written as:
where \(N_\mathrm{A}\), \(N_\mathrm{D}\), n, and p are the density of ionized acceptors, donors, the density of free electrons and holes, respectively, and \(\epsilon \) the dielectric constant. The current density equations account for the movement of carriers due to the electric field (drift component) and the carrier concentration gradient (diffusion component):
where \(\mu \) is the carrier mobility and \(F=  \mathrm{d} \phi / \mathrm{d}x\) the electric field. Finally, the continuity equations ensure particle conservation, balancing the carriers that enter and leave any point of the structure. Under steady state, this means that the variation of the current must be equal to the generation G and recombination R processes, which are equal for electrons and holes since they are created and annihilated in pairs:
Poisson’s equation (Eq. 45) and the continuity equations (Eqs. 50, 51), together with the definitions for n, p and R, represent the complete system that needs to be solved in order to obtain the performance of the solar cell. The PDD solver included in Solcore uses the same discretization scheme used by PC1D [4, 55] taking as independent variables the electrostatic potential \(\phi \) and the quasiFermi potentials for electrons and holes, \(\phi _{n}\) and \(\phi _{p}\), respectively. These three variables are continuous across the whole structure and have comparable magnitudes in the voltage range. Details of the discretization process are included in [4, 55], but they are based on minimizing the total electrostatic energy in the case of the Poisson’s equation, and in the Scharfetter–Gummel discretization scheme for the drift–diffusion equations [56].
The bulk recombination models included in Solcore are Shockley–Read–Hall recombination, radiative recombination, and Auger recombination, as well as a surface recombination velocity model for the recombination at the contacts. The three recombination models are given by the following equations, respectively:
with \(\tau _n\) and \(\tau _p\) the nonradiative lifetimes of electrons and holes, B the radiative recombination coefficient and \(C_n\) and \(C_p\) the Auger recombination coefficient for electrons and holes. By default, the radiative recombination coefficient is calculated internally by Solcore based on the absorption coefficient, as described by Nelson [54], and given by:
where \(n_i\) is the intrinsic carrier concentration, \(n_s\) the refractive index and \(\alpha \) the absorption coefficient.
At the moment, Solcore’s PDD solver cannot include interface charges or bandgap narrowing due to heavy doping and only implements Ohmic contacts. Additionally, it only includes local carrier recombination processes and therefore cannot deal with tunnel transport, which relates remote nodes.
This is the only part of Solcore implemented in Fortran using quadruple precision variables in order to increase the numerical accuracy and improve convergence.
5.3.2 QWs in the PDD solver
Quantum wells have been developed in the context of solar cells mainly to tailor the absorption edge of the subcells in multijunction devices to their optimum values [57]. Typically, achieving the proper performance requires a delicate tradeoff between carrier collection and light absorption [58, 59]. Solcore includes a simplified QW structure in the PDD solver in order to calculate the performance of solar cells containing them. Contrary to other programs like Nextnano, Solcore does not solve the Schrödinger equation and the PDD equations selfconsistently: first, the energy levels of the quantum wells are solved using a flatband condition, considering also the strain in the materials, and then an effective band structure is used to solve the transport equations in a bulklike fashion. This is illustrated in Fig. 12b.
From the perspective of the PDD solver, the actual bandgap and electron affinity of each layer in a quantum well depend on the energy levels, i.e. the minimum energy for electrons is not the band edge of the conduction band, but the ground confined level. The same applies to holes, with the actual band edge being the maximum between the ground states of light holes and heavy holes. The resulting band profiles used in the PDD solver are shown in the right picture of Fig. 12b.
To use QWs in the PDD solver, we create an effective electron affinity and bandgaps for all layers in the QW. For the barriers, the electron affinity and band gap are the same as they are in bulk, modified by the strain, if necessary. For interlayers, if present, it depends on what is higher, the band edges of the interlayer or the confined carrier levels.
The density of states and the absorption profile need to be modified in a similar way. For the density of states:

Barriers have the bulk density of states and absorption profile.

Interlayers only have the bulk density of states above the barrier and the bulk absorption from the barrier energy and zero below that.

Wells have all the density of states associated with the confined states and the bulk density of states above the barrier, while they have the absorption of the confined levels below the barrier energy and of the bulk above it.
These simplifications are similar to those in Nelson et al. [54] and in Cabrera et al. [60] and allow us to keep the bulklike form of the carrier densities in the drift diffusion equations under the Boltzmann approximation. A more rigorous treatment will be necessary in the presence of tunnel transport across a superlattice, tunnel escape from the QWs to the barriers—possible in the presence of high electric fields—and in the case of very deep QWs, when carrier escape from the less confined levels might be possible but not from the deeper ones. In these situations, a set of rate equations linking the different levels, as well as a selfconsistent solution of the transport and Schrödinger equations would be required, besides using more advanced methods such as a nonequilibrium Green’s functions (NEGF) formalism [61].
5.3.3 Mesh creation and dynamic meshing
The PDD solver discretizes the device into a finite number of mesh points at which to calculate the band structure, carrier densities, the generation and recombination. The mesh can be static and homogeneous, but the default configuration and the one that results in the least number of mesh points, most accurate result and best convergence uses an inhomogeneous mesh with dynamic remeshing.
There are two types of nodes in the mesh: masternodes and normal nodes. There are two masternodes at the ends of the device and two more at each side of an interface separated by 0.1 nm. These nodes are static and not affected by remeshing. The rest of the nodes are automatically distributed depending on the distance to the closest masternode, as illustrated in Fig. 12c. During remeshing, nodes can be added or removed according to the following rules:
An element will be divided into smaller elements by adding new nodes if any of the following statements is true:

The variation of the potentials or the carrier densities across the element is large.

The element is too close to the masternodes limiting the layer.

The element is too big for the region.
A node will be removed if it fulfils all the following conditions:

It is not a masternode.

The variation of the potentials or the carrier densities with respect the previous and next nodes is small.

It is not too close to the masternodes limiting the layer.

Removing it does not create an element too big for the region.
After the initial meshing and every time there is a remeshing, the position of the nodes (except that of the masternodes) is smoothed to avoid having adjacent elements too different in size. This remeshing process is controlled by a growth parameter, which can be adjusted by the user.
Using the inhomogeneous mesh in addition to the dynamic remeshing ensures that those regions where material properties change abruptly are modelled with more detail, aiding the convergence. It also allows the modelling of devices which have layers with very different thickness, such as QWs a few nanometres thick and bulk absorbers of several microns, without increasing the number of nodes significantly.
5.4 Depletion approximation
The depletion approximation provides an analytical—or semianalytical—solution to the Poisson–drift–diffusion equations described in the previous section applied to simple PN homojunction solar cells. Historically, it has been used extensively to model solar cells and it is still valid, to a large extent, for traditional PN junctions. More importantly, it requires less input parameters than the PDD solver and these can be easily related to macroscopic measurable quantities, like mobility or diffusion lengths. The DA model is based on the assumption that around the junction between the P and N regions, there are no free carriers and therefore all the electric field is due to the fixed, ionized dopants. This “depletion” of free carriers reaches a certain depth towards the N and P sides; beyond this region, free and fixed carriers of opposite charges balance and the regions are neutral. Under these conditions, Poisson’s equation decouples from the drift and diffusion equations and it can be solved analytically for each region. For example, for a PN junction with the interface between the two regions at \(z=0\), the solution to Eq. 45 will be:
where \(w_n\) and \(w_p\) are the extensions of the depletion region towards the N and P sides, respectively, and can be found by the requirement that the electric field F and the potential \(\phi \) need to be continuous at \(z=0\). \(V_{\mathrm{bi}}\) is the builtin voltage, which can be expressed in terms of the doping concentration on each side, \(N_{d}\) and \(N_{a}\), and the intrinsic carrier concentration in the material, \(n_i^2\):
Another consequence of the depletion approximation is that the quasiFermi level energies are constant throughout the corresponding neutral regions and also constant in the depletion region, where their separation is equal to the external bias qV. Based on these assumptions, Eqs. 46 and 47 simplify and an analytical expression can be found for the dependence of the recombination and generation currents on the applied voltage. A full derivation of these expressions is included in Nelson [54].
Solcore’s implementation of the depletion approximation includes two modifications to the basic equations. The first one is allowing for an intrinsic region to be included between the P and N regions to form a PIN junction. For low injection conditions (low illumination or low bias) this situation can be treated as described before, simply considering that the depletion region is now widened by the thickness of the intrinsic region. Correctly, no low doping level is allowed for this region.
The second modification is related to the generation profile, which in the equations provided by Nelson is given by the BL law (Eq. 20) which has an explicit dependence on z and results in analytic expressions for the current densities. In Solcore, we integrate the expressions for the drift–diffusion equations under the depletion approximation numerically to allow for an arbitrary generation profile calculated with any of the methods described in Sect. 4. It should be noted that although the equations are integrated numerically this will not be a selfconsistent solution of the Poisson–drift–diffusion equations, as is achieved by the PDD solver (Sect. 5.3).
6 Multijunction solar cells
A complete photovoltaic solar cell can include one or more junctions, metal contacts, optical layers (including antireflective coatings and nanophotonic structures) and tunnel junctions. The junctions, in turn, might range from simple PN homojunctions to complex heterojunctions, including multiquantum well structures. The solvers described in Sect. 5 only calculate the properties of single junction devices. To combine them into a multijunction device, it is necessary to consider that the individual junctions are electrically connected in series and the potential coupling of light emitted by the wider bandgap junctions into those with smaller bandgap. The Supplementary Information includes a full stepbystep example of the modelling of a dual junction solar cell with QWs, antireflecting coating and a tunnel junction, calculating the external quantum efficiency, the IV characteristics under illumination and the performance of the solar cell as a function of light concentration.
6.1 No radiative coupling
We first consider the case of no radiative coupling between junctions. This is a good approximation for materials which do not radiate efficiently or radiative materials working at low concentration, when the fraction of radiative recombination compared to nonradiative recombination is low. In this case, the IV curve of each junction can be calculated independently of each other and the current flowing through the MJ structure is limited by the junction with the lowest current at any given voltage. Series resistances defined for each junction are now added together and included as a single term. The operating voltage of each of the junctions is finally backcalculated and added together to get the voltage of the MJ device.
The pseudocode for this solver is:

1.
Calculate the \(I_j(V)\) of each junction j in the structure.

2.
Find the current flowing through the MJ device as \(I_{\mathrm{MJ}}(V)\! =\! I_j(V)\), if \(I_j(V) \!=\! \min ([I_1(V)\ldots I_N(V)])\).

3.
Calculate the voltage of each junction by interpolating its IV curve at the new current values, \(V_j(I_\mathrm{MJ})\), and the voltage dropped due to the series resistances, \(V_{Rs} = R_\mathrm{s} I_{\mathrm{MJ}}\).

4.
Calculate the total voltage at a given current as \(V_{\mathrm{MJ}} = V_{Rs} + \sum _j V_j\).

5.
Interpolate the \(I_{\mathrm{MJ}}(V_{\mathrm{MJ}})\) and the \(I_{\mathrm{MJ}}(V_j)\) to the desired output voltage values.
Figure 13 shows the simulated IV curve of a 3J solar cell made of Ge/InGaAs/GaAsP. The electrical properties of the three junctions were calculated using the depletion approximation solver. In the dark (Fig. 13a) the voltages of each of the junctions at a given current add together, resulting in the total voltage of the MJ structure. The \(R_\mathrm{s}\) contribution to the voltage goes in the same direction as those of the junctions. Under illumination (Fig. 13b) the junction producing the lower current (the top junction in this case) limits the overall current of the MJ device. At zero bias, or even at some negative bias, the nonlimiting junctions are positively biased, recombining all the photocurrent that cannot be extracted because of the limiting top cell. The contribution of the \(R_\mathrm{s}\) to the voltage of the MJ device is negative, resulting in a reduction of the fill factor and the overall efficiency of the solar cell.
6.2 With radiative coupling
Radiative coupling takes place when the light produced by a high bandgap junction due to radiative recombination is absorbed by a lower bandgap junction, contributing to its photocurrent and changing the operating point. It has been identified in numerous highly radiative materials such as quantum well solar cells and III–V MJ solar cells [62,63,64]. It appears as an artefact during the QE measurements of MJ solar cells [65], but it is also an effect that can be exploited to increase the performance of MJ devices [57] and their tolerance to spectral changes, resulting in superior annual energy yield [66].
The radiative coupling formalism included in Solcore is based on the works by Chan et al. [66] and Nelson et al. [20]. It is implemented only for the DB junction model and for the 2D model when it is defined in terms of a radiative efficiency and the parameters calculated form the DB model. The current of a junction j including radiative coupling from the junction immediately above it \(j1\) is given by:
This current depends on two factors: the amount of radiation effectively emitted downwards, towards the lower junction, and the fraction of it that is absorbed and converted into electricity. If we ignore the possible reflection of light at the interface between both junctions, this current can be written by using a modified version of Eq. 30 that considers only the radiation emitted towards the back:
with \(A_{j1 \rightarrow j}(E)\) given by:
As discussed previously, any information related to total internal reflection will be contained in the \(r(E, \theta )\) term, and therefore the integral over \(\cos \theta \) can be done from 0 to 1. In the case of thin junctions, some radiation could reach the next junction \(j+1\). The coupled current in that case can be easily calculated by modifying Eq. 60 to account for the fraction of light absorbed by the junctions between the emitting junction and the junction of interest. In the general case, the current coupled into junction j will be given by:
Radiative coupling might change the junction that is current limiting the MJ device, so the process to obtain the IV curves in this case proceeds in two steps. First, the IV of the junctions and the total IV are calculated without coupling. The resulting IV curves are then used as the initial conditions for the numerical solver that will calculate the correct voltage of each junction including the radiative coupling.
Figure 14 shows the IV curve under the AM1.5G solar spectrum of a three junction solar cell (a) without and (b) with radiative coupling. Without coupling, the middle junction severely limits the current of the MJ solar cell. When coupling is enabled, the middle junction is still the limiting one but part of the excess current of the top junction is transferred to it, increasing its photocurrent by around 20 A/m\(^2\). Part of the radiative recombination is also transferred to the bottom cell, increasing slightly its photocurrent. In this case, given that the junction was overproducing current already, such coupling is only visible as an increase in the voltage. Altogether, the radiative coupling results in an enhancement of the \(V_{\mathrm{oc}}\) of 30 mV and of the efficiency \(\eta \) of 5.3%. This example uses junctions with 100% radiative efficiency to illustrate the effect, but this phenomenon is always present to some extent, becoming especially important under concentration [57, 66].
6.3 Restrictions in the junction definitions
Having multiple methods for modelling the junctions gives a lot of freedom and flexibility but it also imposes some restrictions in how and when they can be combined in order to create a MJ solar cell. The following compatibility rules apply:

When there is no radiative coupling and we are interested only in the dark IV characteristics, all junction models can be combined with each other. This allows a MJ device where the top junction is defined using the DB model, the middle junction is defined with the 2D model and the bottom junction uses a more accurate PDD model, for example.

The same applies for light IV and quantum efficiency simulations as long as the optical model chosen is the BL law. In this case, any junction defined using the 2D model needs to include an absorptivity value.

The TMM and RCWA optical models are supported only by the PDD and DA junction models.

In the presence of radiative coupling, the only junction models that can be used are DB and 2D, as long as the latter includes an absorptivity value.
6.4 Tunnel junctions
Solcore includes partial support for tunnel junctions. They represent an optical loss due to parasitic absorption in the layers, but also an electrical loss. At the moment, there are two models for tunnel junctions. The first one is a simple resistive model, where the tunnel junction is simply modelled as a series resistance. This approximation should be valid in most cases, but will break down if the current is close to or higher than the peak current density of the junction.
The second model is a parametric model, based on the simple formalism described by Sze [53]. In this model, the total current of the tunnel junction will have three components: the tunnel current \(J_\mathrm{T}\) accounting for bandtoband transport, the excess current \(J_{\mathrm{ex}}\) related to transport across states inside the forbidden gap, and the diffusion current \(J_\mathrm{D}\), which is the usual minoritycarrier injection current in PN junctions. The following equations summarize all these components.
As illustrated in Fig. 15, \(J_{\mathrm{P}}\) and \(V_{\mathrm{P}}\) are the peak current and voltage, \(J_{\mathrm{V}}\) and \(V_{\mathrm{V}}\) are the valley current and voltages, C is a prefactor of the exponent and \(J_0\) the reverse saturation current. In this simple implementation, these six parameters need to be provided as inputs, and can be used as fitting parameters to reproduce experimental data. This allows to correctly account for the break down of the tunnel junction in situations when the current is above the peak current.
Solcore can also accept external IV data for the tunnel junctions and the implementation of the more rigorous, but still analytic model, described by Louarn et al. [67] is currently under way in order to relate the tunnel currents with the actual materials and layer structure used in the tunnel junction definition.
7 Large circuit solver
When the twodiode model is used to define the junctions in a MJ solar cell, then larger scale circuits can be constructed. Solcore includes two levels of largescale equivalent circuits: quasi3D solar cell modelling and solar array modelling. Both solvers are based on the interface between Solcore and SPICE, allowing for a fast calculation of complex structures with many elements.
7.1 Quasi3D solar cell model
The quasi3D solar cell model included in Solcore uses a SPICEbased electrical network to model the flow of injected current through the solar cell, as depicted in Fig. 16. The plane of the cell is discretized into many elements, each of them representing a small portion of the cell. Depending on the location of the element—exposed to the sunlight or underneath a metal finger—the IV curve of the cell will be the light IV or the dark IV. Each element is linked to their neighbours with resistors, representing the lateral current flow and dependent on the sheet resistance of the cells. This method can be applied to any number of junctions.
This type of formalism is widely used to simulate the performance of solar cells when the effect of a spatial variable needs to be incorporated in the model. This variable can be the design of the front metal grid, in order to minimize the effect of series resistances [68]; the inhomogeneous illumination profile in concentrator devices; the impact of such inhomogeneity on the transport through the tunnel junctions [69, 70]; or the distribution of defects or inhomogeneities [71, 72]. Recently, this formalism was used to model the photoluminescence and the electroluminescencebased IV curves of MJ devices, accounting for the limited lateral carrier transport [73].
Specifically for the modelling and optimization of the front grid of solar cells in order to minimize shading losses and series resistance, there are two packages already available: PVMOS, developed by Pieters in C and released as open source [74, 75], and Griddler, developed by Wong using Matlab and available at PV Lighthouse [11, 76].
7.1.1 Inplane discretization
As shown in Fig. 16, there are two regions in the plane: the metal and the aperture. These two are provided to Solcore as grey scale images that will work as masks. The resolution of the images, in pixels, will define the inplane discretization. By default, the aspect ratio of the pixels in the image will be 1:1, but this can be set to a different value in order to reduce the number of elements and improve speed. For example, the inplane discretization of Fig. 16a has an aspect ratio \(A_r=L_y/L_x = 4\), with \(L_x\) and \(L_y\) the pixel size in each direction. The values of the pixels in the metal mask are 0 where there is no metal (the aperture area), 255 where there is metal and the external electrical contacts (the boundaries with fixed, externally set voltage values) and any other value in between to represent regions with metal but not fixed voltage. The pixels of the illumination mask—which become the aperture mask after removing the areas shadowed by the metal—can have any value between 0 and 255. These values divided by 255 will indicate the intensity of the sunlight at that pixel relative to the maximum intensity. Figure 17 illustrates two examples of metal masks (a and b) and an illumination mask (c) with 120 \(\times \) 120 pixels. As it can be seen, while rectangular metal fingers are well reproduced, diagonal fingers are less accurate and could require a finer discretization. The illumination mask is mostly homogeneous except around the edges and in the corners, where intensity is much lower. This pattern could be produced, for example, by the secondary optics of a concentration system.
The minimum total number of nodes where SPICE will need to calculate the voltages will be \(N\times M\times 2\times Q\), with N and M the number of pixels in both inplane directions and Q the number of junctions, which require 2 nodes each. To this, the front and back metal contacts could add a maximum of \(2M\times M\) nodes. Exploiting symmetries of the problem as well as choosing an appropriate pixel aspect ratio will significantly reduce the number of nodes and therefore the time required for the computation of the problem.
7.1.2 Vertical discretization
First, the solar cell is solved as described in Sects. 5 and 6 in order to obtain the parameters for the 2diode model at the given illumination conditions. These parameters are then used to replicate the 2diode model in SPICE. The \(I_{\mathrm{SC}}\) is scaled in each pixel by the intensity of the illumination given by the illumination mask. Sheet resistances above and below each junction, \(R_{\mathrm{sh}}(\mathrm{top})\) and \(R_{\mathrm{sh}}(\mathrm{bot})\), account for the lateral transport. Beneath the metal, there is no current source, as the region is in the dark, and there are extra resistances accounting for the contact between the metal and the semiconductor \(R_\mathrm{c}\) and the transport along the metal finger \(R_\mathrm{s}\) [68]. Given that the pixels can be asymmetric, these resistances need to be defined in both inplane directions, x and y:
where h is the height of the metal, \(\rho _\mathrm{m}\) their linear resistivity, and \(\rho _\mathrm{c}\) the contact resistivity between metal and semiconductor. The sheet resistance of a stack of semiconductor layers \(R_{\mathrm{sh}}\) is equal to the combination in parallel of the individual sheet resistances. Using the single junction example of Fig. 16, \(R_{\mathrm{sh}}(\mathrm{top})\) will be given by:
Each of these can be estimated from the thickness of the layer d, the majority carrier mobility \(\mu \) and the doping N as [70]:
If the solar cell has been defined using only the DA and PDD junction models, this information is already available for all the layers of the structure. For junctions using the DB and two diode models, \(R_{\mathrm{sh}}\) will need to be provided for the top and bottom regions of each junction. Intrinsic layers will be ignored as they do not contribute to the lateral current transport.
7.2 Solar array model
The ability to use Solcore to build a SPICE equivalent circuit allows entire PV systems to be simulated from the bottom up [77]. Each photovoltaic solar cell is described using an equivalent circuit which can then be arranged in strings of series and parallel cells to represent the entire system. An example for a triple junction solar cell, complete with a bypass diode is shown in Fig. 18; this unit is the basic building block for a concentrator PV module [52].
The diode and resistance values for the equivalent circuit are determined from solar cell testing, while the current source is evaluated by integrating the product of the spectral irradiance (estimated using an appropriate radiative transfer code, e.g. SPCTRL2 or SMARTS) and the quantum efficiency which in turn can be calculated dynamically as a function of temperature by Solcore [78].
Since the entire module (and subsequently the system) is assembled from individual solar cell components, it is possible (and indeed, necessary) to distribute the component values to accommodate for manufacturing tolerances. This enables a close match between the modelled output power and that measured experimentally and has been used to determine how both aerosols and precipitable water affect the electricity yield from concentrator PV systems [79, 80]. Where system IV data are available, the emergence of electrical faults, (e.g. shunts or shading) can also be accounted for [81].
8 Closing remarks
In this article, we have described the capabilities of Solcore, a multiscale, Pythonbased, modular simulation framework for semiconductor materials and solar cells. Its main strengths are:

Flexibility Provides a variety of tools, rather than a single solution, for the study of traditional and novel semiconductor materials and devices.

Modularity Can be expanded with new capabilities, innovative solvers and tools.

Accessibility Not only is it open source, but it is also designed to be easy to learn and to use, serving as a teaching tool as much as a research tool.

Rigour The physics behind every functionality are well understood and supported by numerous references, as are the approximations made in order to simplify the implementation of the problem or the interpretation of the results.

Integrated All of Solcore’s features are designed to be compatible with one another to allow for truly multiscale modelling in an integrated way.
References
Gueymard, C.: “SMARTS2” [Online] (1995). https://www.nrel.gov/rredc/smarts/
Eisenlohr, J., Tucher, N., Höhn, O., Hauser, H., Peters, M., Kiefel, P., Goldschmidt, J.C., Bläsi, B.: Matrix formalism for light propagation and absorption in thick textured optical sheets. Opt. Express 23(11), A502–A518 (2015)
BakerFinch, S.C., McIntosh, K.R.: A freeware program for precise optical analysis of the front surface of a solar cell. In: 2014 IEEE 40th Photovoltaic Specialist Conference (PVSC), pp. 002 184–002 187. IEEE (2010)
Basore, P.A.: PC1D version 3: improved speed and convergence. In IEEE 20nd Photovoltaic Specialists Conference, pp. 299–302 (1991)
Burgelman, M., Nollet, P., Degrave, S.: Modelling polycrystalline semiconductor solar cells. Thin Solid Films 361–362, 527–532 (2000)
Fell, A.: A free and fast threedimensional/twodimensional solar cell simulator featuring conductive boundary and quasineutrality approximations. IEEE Trans. Electron Devices 60(2), 733–738 (2013)
Varache, R., Leendertz, C., GueunierFarret, M., Haschke, J., Muñoz, D., Korte, L.: Investigation of selective junctions using a newly developed tunnel current model for solar cell applications. Sol. Energy Mater. Sol. Cells 141(Supplement C), 14–23 (2015)
Birner, S., Zibold, T., Andlauer, T., Kubis, T., Sabathil, M., Trellakis, A., Vogl, P.: nextnano: general purpose 3D simulations. IEEE Trans. Electron Devices 54(9), 2137–2142 (2007)
Silvaco, “Atlas: Device Simulation Framework” (2017)
Synopsis, “Sentaurus Device” (2017)
P. L. team and contributors. PV Lightouse. [Online] (2018). http://www.pvlighthouse.com.au
Andrews, R.W., Stein, J.S., Hansen, C.: Introduction to the open source PV LIB for python Photovoltaic system modelling package. In: 2016 IEEE 43rd Photovoltaic Specialists Conference (PVSC), pp. 0170–0174 (2014)
Connolly, J.P.: Analytical models of bulk and quantum well solar cells and relevance of the radiative limit. In: Fara, L., Yamaguchi, M. (eds.) Advanced Solar Cell Materials, Technology, Modelling, and Simulation, chap. 5, pp. 59–77. IGI Global, Hershey, PA (2013). https://doi.org/10.4018/9781466619272
AlonsoÁlvarez, D., Wilson, T., Pearce, P., Führer, M., Farrell, D., EkinsDaukes, N.J.: Solocre Code Repository. [Online] (2018). http://doi.org/10.5281/zenodo.1185316
Vurgaftman, I., Meyer, J.R., RamMohan, L.R.: Band parameters for III–V compound semiconductors and their alloys. J. Appl. Phys. 89(11), 5815–5875 (2001)
Levinshtein, M., Rumyantsev, S., Shur, M., Levinshtein, M., Rumyantsev, S., Shur, M.: Handbook Series on Semiconductor Parameters, ser. Volume 2: Ternary and Quaternary IIIV Compounds, vol. 2. World Scientific, Singapore (2012)
Sotoodeh, M., Khalid, A.H., Rezazadeh, A.A.: Empirical lowfield mobility model for III–V compounds applicable in device simulation codes. J. Appl. Phys. 87(6), 289012 (2000)
Software Spectra Inc., “Optical Data from Sopra S. A.” (2008)
Paxman, M., Nelson, J., Braun, B., Connolly, J., Barnham, K.W.J., Foxon, C.T., Roberts, J.S.: Modeling the spectral response of the quantum well solar cell. J. Appl. Phys. 74(1), 614–621 (1993)
Nelson, J., Barnes, J., EkinsDaukes, N., Kluftinger, B., Tsui, E., Barnham, K., Foxon, C.T., Cheng, T., Roberts, J.S.: Observation of suppressed radiative recombination in single quantum well p–i–n photodiodes. J. Appl. Phys. 82(12), 6240–6246 (1997)
Nelson, J., Ballard, I., Barnham, K., Connolly, J.P., Roberts, J.S., Pate, M.: Effect of quantum well location on single quantum well p–i–n photodiode dark currents. J. Appl. Phys. 86(10), 5898–5905 (1999)
Fuhrer, M.F., Adams, J.G.J., Barnham, K.W.J., Browne, B.C., Chan, N.L.A., Farrell, D.J., Hirst, L., Lee, K.H., EkinsDaukes, N.J., Ogura, A., Yoshida, K., Okada, Y.: Extensible modelling framework for nanostructured III–V solar cells. In: 2011 37th IEEE Photovoltaic Specialists Conference (PVSC), pp. 002 615–002 618 (2011)
Führer, M., Farrell, D., EkinsDaukes, N.: CPV modelling with Solcore: an extensible modelling framework for the rapid computational simulation and evaluation of solar cell designs and concepts. In: 9th International Conference on Concentrator Photovoltaic Systems: CPV9, pp. 34–37. AIP (2014)
Tomić, S.: Electronic structure of InyGa1yAs1xNx/GaAs(N) quantum dots by tenband kp theory. Phys. Rev. B 73(12), 125348–8 (2006)
Volk, M., Lutgen, S., Marschner, T., Stolz, W., Göbel, E.O., Christianen, P.C.M., Maan, J.C.: Carrier effective masses in symmetrically strained (GaIn)As/Ga(PAs) multiplequantumwell structures. Phys. Rev. B 52(15), 11 096–11 104 (1995)
Frensley, W.R.: Numerical evaluation of resonant states. Superlattices Microstruct. 11(3), 347–350 (1992)
Adachi, S.: Model dielectric constants of GaP, GaAs, GaSb, InP, InAs, and InSb. Phys. Rev. B 35(14), 7454–7463 (1987)
Adachi, S.: Optical dispersion relations for GaP, GaAs, GaSb, InP, InAs, InSb, Al\(_x\)Ga\(_{1x}\)As, and In\(_{1x}\)Ga\(_x\)As\(_y\)P\(_{1y}\). J. Appl. Phys. 66(12), 6030–6040 (1989)
Adachi, S.: Optical dispersion relations for Si and Ge. J. Appl. Phys. 66(7), 3224–3231 (1989)
Rakić, A.D., Majewski, M.L.: Modeling the optical dielectric function of GaAs and AlAs: extension of Adachi’s model. J. Appl. Phys. 80(10), 5909–5914 (1996)
Kim, C.C., Garland, J.W., Abad, H., Raccah, P.M.: Modeling the optical dielectric function of semiconductors: extension of the criticalpoint parabolicband approximation. Phys. Rev. B 45(20), 11 749–11 767 (1992)
Kim, C.C., Garland, J.W., Raccah, P.M.: Modeling the optical dielectric function of the alloy system AlxGa1xAs. Phys. Rev. B 47(4), 1876–1888 (1993)
Woollam, J.A.: Guide to using WVASE 32: spectroscopic ellipsometry data acquisition and analysis software. J. A. Woollam Company (2008). https://books.google.co.uk/books?id=xOupYgEACAAJ
Palik, E.D.: Gallium Arsenide (GaAs). In: Handbook of Optical Constants of Solids, pp. 429–443. Elsevier, Amsterdam (1997)
Wilson, T., Mellor, A., Hylton, N.P., EkinsDaukes, N.J.: The effects of shortrange alloy disorder on the potential voltage performance in GaAsBi based solar cells. In: Proceedings of the 33rd European Photovoltaic Solar Energy Conference and Exhibition (2017)
Chuang, S.L.: Physics of Optoelectronic Devices. WileyInterscience, New York (1995)
Barnham, K., Vvedensky, D. (eds.): LowDimensional Semiconductor Structures: Fundamentals and Device Applications. Cambridge University Press, Cambridge (2001)
Klipstein, P.C., Apsley, N.: A theory for the electroreflectance spectra of quantum well structures. J. Phys. C Solid State Phys. 19(32), 6461–6478 (2000)
Galleano, R., Zaaiman, W., AlonsoÁlvarez, D., Minuto, A., Ferretti, N., Fucci, R., Pravettoni, M., Halwachs, M., Friederichs, M., Plag, F., Friedrich, D., Haverkamp, E.: Results of the fifth international spectroradiometer comparison for improved solar spectral irradiance measurements and related impact on reference solar cell calibration. IEEE J. Photovolt. 6(6), 1587–1597 (2016)
AlonsoÁlvarez, D., Wilsond, D., Pearce, P., Führer, M., Farrell, D., EkinsDaukes, N.J.: Supplementary Information—Solcore: a multiscale, Pythonbased library for modelling solar cells and semiconductor materials. J. Comput. Electron., vol. Supplementary Information (2018)
Wilson, T., Thomas, T., Führer, M., EkinsDaukes, N.J.: Addressing reflectivity losses in multijunction solar cells to achieve 50 conversion efficiency. Mater. Res. Innov. 19(7), 503–507 (2016)
AlonsoÁlvarez, D., Ferre Llin, L., Mellor, A., Paul, D.J., EkinsDaukes, N.J.: ITO and AZO films for low emissivity coatings in hybrid photovoltaicthermal applications. Sol. Energy 155, 82–92 (2017)
Macleod, H.A.: ThinFilm Optical Filters. Institute of Physics Publishing, Bristol (2001)
Byrnes, S.J.: Multilayer Optical Calculations. https://arxiv.org/abs/1603.02720v2 (2016)
Liu, V., Fan, S.: S4: a free electromagnetic solver for layered periodic structures. Comput. Phys. Commun. 183(10), 2233–2244 (2012)
Hylton, N.P., Li, X.F., Giannini, V., Lee, K.H., EkinsDaukes, N.J., Loo, J., Vercruysse, D., Van Dorpe, P., Sodabanlu, H., Sugiyama, M., Maier, S.A.: Loss mitigation in plasmonic solar cells: aluminium nanoparticles for broadband photocurrent enhancements in GaAs photodiodes. Sci. Rep. 3(1), 2874–6 (2013)
Mellor, A., Hylton, N.P., Maier, S.A., EkinsDaukes, N.: Interstitial lighttrapping design for multijunction solar cells. Sol. Energy Mater. Solar Cells 159, 212–218 (2017). https://doi.org/10.1016/j.solmat.2016.09.005
Martí, A., Araújo, G.L.: Limiting efficiencies for photovoltaic energy conversion in multigap systems. Sol. Energy Mater. Sol. Cells 43(2), 203–222 (1996)
Chan, N.L.A., EkinsDaukes, N.J., Adams, J.G.J., Lumb, M.P., Gonzalez, M., Jenkins, P.P., Vurgaftman, I., Meyer, J.R., Walters, R.J.: Optimal bandgap combinations—does material quality matter? IEEE J. Photovolt. 2(2), 202–208 (2012)
Green, M.A.: Radiative efficiency of stateoftheart photovoltaic cells. Prog. Photovolt. Res. Appl. 20(4), 472–476 (2011)
Thomas, T., Mellor, A., Hylton, N.P., Führer, M., AlonsoÁlvarez, D., Braun, A., EkinsDaukes, N.J., David, J.P.R., Sweeney, S.J.: Requirements for a GaAsBi 1 eV subcell in a GaAsbased multijunction solar cell. Semicond. Sci. Technol. 30(9), 0940106 (2015)
EkinsDaukes, N.J., Kemmoku, Y., Araki, K., Betts, T.R., Gottschalg, R., Infield, D.G., Yamaguchi, M.: The design specification for Syracuse; a multijunction concentrator system computer model. In: Proceedings of the 19th European Photovoltaic Solar Energy Conference, pp. 1–4 (2004)
Sze, S.M.: Physics of Semiconductor Devices, 2nd edn. Wiley, New York, NY (1981)
Nelson, J.: The Physics of Solar Cells. Imperial College Press, London; River Edge, NJ: Distributed by World Scientific Pub. Co, (2003)
Basore, P.A.: PC1D Installation Manual and User’s Guide Version 3.1, pp. 1–96 (2009)
Farrell, P.A., Gartland, E.C.: On the Sharfetter–Gummer discretization for drift–diffusion continuity equations. In: Miller, J.J.H. (ed.) Computational Methods for Boundary and Interior Layers in Several Dimensions, pp. 51–79 (1991)
Thomas, T., Wilson, T., Führer, M., AlonsoÁlvarez, D., EkinsDaukes, N.J., Lackner, D., Kailuweit, P., Philipps, S.P., Bett, A.W., Toprasertpong, K., Sugiyama, M., Okada, Y.: Potential for reaching 50% power conversion efficiency using quantum heterostructures. In: 6th World Conference on Photovoltaic Energy Conversion, pp. 1–2 (2014)
AlonsoÁlvarez, D., Führer, M., Thomas, T., EkinsDaukes, N.: Elements of modelling and design of multiquantum well solar cells. In: 2014 IEEE 40th Photovoltaic Specialists Conference (PVSC), pp. 2865–2870 (2014)
AlonsoÁlvarez, D., EkinsDaukes, N.J.: Quantum wells for highefficiency photovoltaics. In: Freundlich, A., Lombez, L., Sugiyama, M. (eds.) Physics, Simulation, and Photonic Engineering of Photovoltaic Devices V, vol. 9743, p. 974311. SPIE OPTO, San Francisco, CA (2016). https://doi.org/10.1117/12.2217590
Cabrera, C.I., Rimada, J.C., Connolly, J.P., Hernandez, L.: Modelling of GaAsP/InGaAs/GaAs strainbalanced multiplequantum well solar cells. J. Appl. Phys. 113(2), 0245127 (2013)
Aeberhard, U.: Quantumkinetic perspective on photovoltaic device operation in nanostructurebased solar cells. J. Mater. Res. 33, 373–386 (2018)
Lee, K.H., Barnham, K.W.J., Connolly, J.P., Browne, B.C., Airey, R.J., Roberts, J.S., Führer, M., Tibbits, T.N.D., EkinsDaukes, N.J.: Demonstration of photon coupling in dual multiplequantumwell solar cells. IEEE J. Photovolt. 2(1), 68–74 (2012)
Steiner, M.A., Geisz, J.F., Moriarty, T.E., France, R.M., McMahon, W.E., Olson, J.M., Kurtz, S.R., Friedman, D.J.: Measuring IV curves and subcell photocurrents in the presence of luminescent coupling. IEEE J. Photovolt. 3(2), 879–887 (2013)
Steiner, M.A., Geisz, J.F.: Nonlinear luminescent coupling in seriesconnected multijunction solar cells. Appl. Phys. Lett. 100(25), 2511065 (2012)
Steiner, M.A., Kurtz, S.R., Geisz, J.F., McMahon, W.E., Olson, J.M.: Using phase effects to understand measurements of the quantum efficiency and related luminescent coupling in a multijunction solar cell. IEEE J. Photovolt. 2(4), 424–433 (2012)
Chan, N.L.A., Thomas, T., Führer, M., EkinsDaukes, N.J.: Practical limits of multijunction solar cell performance enhancement from radiative coupling considering realistic spectral conditions. IEEE J. Photovolt. 4(5), 1306–1313 (2014)
Louarn, K., Fontaine, C., Arnoult, A., Olivié, F., Lacoste, G., Piquemal, F., Bounouh, A., Almuneau, G.: Modelling of interband transitions in GaAs tunnel diode. Semicond. Sci. Technol. 31(6), 06LT016 (2016)
Steiner, M., Philipps, S.P., Hermle, M., Bett, A.W., Dimroth, F.: Validated front contact grid simulation for GaAs solar cells under concentrated sunlight. Prog. Photovolt. Res. Appl. 19(1), 73–83 (2010)
Nishioka, K., Takamoto, T., Agui, T., Kaneiwa, M., Uraoka, Y., Fuyuki, T.: Evaluation of InGaP/InGaAs/Ge triplejunction solar cell under concentrated light by simulation program with integrated circuit emphasis. Jpn. J. Appl. Phys. 43(3), 882–889 (2004)
Steiner, M., Guter, W., Peharz, G., Philipps, S.P., Dimroth, F., Bett, A.W.: A validated SPICE network simulation study on improving tunnel diodes by introducing lateral conduction layers. Prog. Photovolt. Res. Appl. 20(3), 274–283 (2011)
Jürgens, T., Gütay, L., Bauer, G.H.: Photoluminescence, open circuit voltage, and photocurrents in Cu(In, Ga)Se2 solar cells with lateral submicron resolution. Thin Solid Films 511–512, 678–683 (2006)
Paire, M., Lombez, L., Guillemoles, J.F., Lincot, D.: Measuring sheet resistance of CIGS solar cell’s window layer by spatially resolved electroluminescence imaging. Thin Solid Films 519(21), 7493–7496 (2011)
AlonsoÁlvarez, D., EkinsDaukes, N.: SPICE modelling of photoluminescence and electroluminescence based currentvoltage curves of solar cells for concentration applications. J. Green Eng. 5(4), 33–48 (2016)
Pieters, B.E.: A free and open source finitedifference simulation tool for solar modules. In: 2014 IEEE 40th Photovoltaic Specialist Conference. PVSC 2014, pp. 1370–1375 (2014)
Pieters, B.E.: PVMOS Code Repository. [Online] (2018). https://github.com/IEK5/PVMOS
Wong, J.: Griddler: intelligent computer aided design of complex solar cell metallization patterns. In: 2013 IEEE 39th Photovoltaic Specialists Conference (PVSC), pp. 0933–0938 (2013)
Castaner, L., Silvestre, S.: Modelling PVSystems Using PSPice. Wiley, New York (2002)
EkinsDaukes, N.J., Betts, T.R., Kemmoku, Y., Araki, K., Lee, H.S., Gottschalg, R., Boreland, M.B., Infield, D.G., Yamaguchi, M.: Syracuse—a multijunction concentrator system computer model. In: Proceedings of the 31st IEEE Photovoltaic Specialists Conference, pp. 651–654 (2005)
Chan, N.L.A., Young, T.B., Brindley, H.E., EkinsDaukes, N.J., Araki, K., Kemmoku, Y., Yamaguchi, M.: Validation of energy prediction method for a concentrator photovoltaic module in Toyohashi Japan. Prog. Photovolt. Res. Appl. 21(8), 1598–1610 (2012)
Chan, N.L.A., Brindley, H.E., EkinsDaukes, N.J.: Impact of individual atmospheric parameters on CPV system power, energy yield and cost of energy. Prog. Photovolt. Res. Appl. 22(10), 1080–1095 (2014)
Kamath, H.G., Araki, K., EkinsDaukes, N.J., Ramasesha, S.K.: Performance analysis and fault detection method for concentrator photovoltaic modules. Submitted to Journal of Photovoltaics (2018)
Acknowledgements
Solcore is not the creation of a single person but the combined effort of present and past members of the Quantum Photovoltaics Group at Imperial College London. Therefore, the authors would like to thank T. Thomas, N. L. A. Chan, J. Nelson and J. Connolly, who also contributed significantly to its development. The authors will also like to acknowledge the financial support of the Engineering and Physical Science Research council (EPSRC) through the research Grant EP/M025012/1.
Author information
Authors and Affiliations
Corresponding author
Electronic supplementary material
Below is the link to the electronic supplementary material.
Rights and permissions
Open Access This article is distributed under the terms of the Creative Commons Attribution 4.0 International License (http://creativecommons.org/licenses/by/4.0/), which permits unrestricted use, distribution, and reproduction in any medium, provided you give appropriate credit to the original author(s) and the source, provide a link to the Creative Commons license, and indicate if changes were made.
About this article
Cite this article
AlonsoÁlvarez, D., Wilson, T., Pearce, P. et al. Solcore: a multiscale, Pythonbased library for modelling solar cells and semiconductor materials. J Comput Electron 17, 1099–1123 (2018). https://doi.org/10.1007/s1082501811713
Published:
Issue Date:
DOI: https://doi.org/10.1007/s1082501811713