# IonMonger: a free and fast planar perovskite solar cell simulator with coupled ion vacancy and charge carrier dynamics

- 133 Downloads

## Abstract

Details of an open-source planar perovskite solar cell simulator, which includes ion vacancy migration within the perovskite layer coupled to charge carrier transport throughout the perovskite and adjoining transport layers in one dimension, are presented. The model equations are discretised in space using a finite element scheme, and temporal integration of the resulting system of differential algebraic equations is carried out in MATLAB. The user is free to modify device parameters, as well as the incident illumination and applied voltage. Time-varying voltage and/or illumination protocols can be specified, e.g. to simulate current–voltage sweeps, or to track the open-circuit conditions as the illumination is varied. Typical simulations, e.g. current–voltage sweeps, only require computation times of seconds to minutes on a modern personal computer. An example set of hysteretic current–voltage curves is presented.

## Keywords

Perovskite solar cell Drift–diffusion Device simulation Ion vacancy migration## 1 Introduction

Perovskite solar cells (PSCs) are a promising thin-film technology that, due to their rapid rise in power conversion efficiency to 22.7% [15], are attracting a lot of interest and research effort in the photovoltaic community. However, PSCs display unusual transient behaviour (exemplified by current–voltage hysteresis) in the order of seconds to days which affects the power output of the device [24]. The consensus in the literature is that this slow (compared to the timescale of electronic motion) behaviour is due to the motion of mobile ion vacancies within the perovskite layer. The species of ion vacancy deemed most likely to be responsible for the behaviour observed in the order of seconds to minutes is that of the halide (e.g. iodide, I\(^-\)) ion vacancy due to its high mean density and high diffusion coefficient (compared to the other ionic species) predicted by DFT calculations [8, 26]. Visual evidence of iodide ion migration within a perovskite film has also been obtained experimentally [7]. Recent reviews of the outstanding challenges in the field of perovskite solar cells have been given by Snaith [23], Egger et al. [9] and Phung and Abate [17].

Due to the existence of mobile ion vacancies, the perovskite layer must be treated as a mixed ionic–electronic conductor for the purpose of device simulation. The first works [2, 11, 25] to apply numerical methods to PSC modelling reported that their simulations suffered from prohibitively long calculation times and inaccuracies in solution for realistic values of the parameters. A combined analytic/numerical method was used by Richardson et al. [5, 18] to reveal how iodide ion vacancies accumulate/deplete in very narrow layers (called Debye layers) adjacent to the perovskite boundaries. The associated rapid change in solution across these Debye layers is a significant source of spatial stiffness, while the disparity in timescales between the motion of electronic and ionic charges is a source of temporal stiffness [6], rendering the task of finding solutions to realistic models of PSCs very challenging.

Courtier et al. [6] developed a finite element scheme, implemented in MATLAB [14], that is able to cope with the spatial and temporal stiffness of the problem and obtain accurate solutions to a coupled model for ion migration and charge carrier transport within the perovskite layer of a PSC. Since then, alternative numerical methods have also appeared in [13, 27]. Walter et al. [27] have developed a solver that includes the motion of both cations and anions. Their scheme is based on the freely available software Quokka3 [10], originally designed for the solution of models of silicon-based photovoltaic devices. While this provides a thoroughly tested and validated framework for their results, the model being solved only explicitly models the perovskite absorber and there is strong evidence suggesting that the adjacent transport layers play a key role in determining device behaviour [4]. Meanwhile, Jacobs et al. [13] use the proprietary COMSOL package via a MATLAB interface to simulate three layers of a PSC over a range of timescales. However, the details of the modelling and solutions techniques are not given in full, making their results difficult to reproduce and compare with alternatives.

In this work, we present the extension of the finite element code presented in [6] for a single-layer model of a PSC to a model that explicitly describes the three core layers of a PSC: the electron transport layer (ETL), perovskite absorber layer and hole transport layer (HTL). Full details of the charge transport model equations and the implementation of the code are given. The code is freely available on GitHub at https://github.com/PerovskiteSCModelling/IonMonger (under an AGPL-3.0 copyleft license) and can be used to simulate a variety of different experimental protocols. Current density–voltage (\(J\)–\(V\)) curves are the typical measurement that is performed to assess solar cell performance including, for perovskite solar cells, the extent of \(J\)–\(V\) hysteresis displayed at a particular scan rate. In addition to \(J\)–\(V\) curves, the code can be used to simulate photocurrent transients (during which the applied voltage and/or the illumination intensity is varied over time) and photovoltage transients (during which the cell is held at open circuit and the illumination intensity is varied) that occur on timescales of microseconds to minutes. Uncovering the links between model parameters and the results of such simulations will help to improve understanding of the underlying physics of PSCs and hence guide further improvements in their design. One such investigation, into how the extent of observable hysteresis depends on material properties of the two transport layers, has been conducted by Courtier et al. [4]. The investigation is based upon simulations of the same^{1} three-layer model as that considered in this work.

In Sect. 2, we show an example set of simulation results obtained using the code. In Sect. 3, we present and discuss the governing equations in each of the three layers as well as the boundary and interface conditions through which the equations couple together. A non-dimensionalisation is also presented which is geared to study the behaviour of the cell on the timescales associated with anion vacancy motion and aids in obtaining uniformly well-resolved solutions by ensuring that the numerical tolerances are applied equally to each of the model variables. In Sect. 4, we detail the finite element discretisation of the system and highlight the differences between how open-circuit and applied voltage protocols are imposed at the discrete level. The focus of Sect. 5 is a discussion of the how the time-stepping is carried out and how the output current density is calculated from the numerical solution. In Sect. 6, we validate the results of the numerical scheme upon which IonMonger is based. Finally, in Sect. 7, we draw our conclusions.

## 2 Application example

The main purpose of this paper is to provide the perovskite solar cell community with a high-quality, free and useful tool with which to better understand PSC behaviour, and not to provide a detailed analysis or interpretation of the device physics. The power of the solver in advancing our physical understanding of PSCs is demonstrated in Courtier et al. [4], in which an investigation of the effects of material properties of the transport layers on cell performance is detailed. There it is found that two material properties in particular, namely the permittivity and the effective doping density of the transport layers, have a significant role to play in determining the extent of \(J\)–\(V\) hysteresis exhibited by a PSC. In addition, characteristics of simulations that can be used to identify the dominant recombination mechanism in a PSC are discussed. Results from two other simulations, also computed using the capabilities offered by IonMonger, have been presented by Idígoras et al. [12] in a study of the role of surface (also often termed interfacial or interface) recombination, which occurs on the interfaces between the perovskite layer and the adjacent transport layers, on PSC performance. However, further work in this area is vital for the future development and optimisation of PSCs. Here, we show how IonMonger can be used to both simulate the most common measurement protocol for assessing the performance of a solar cell, namely a \(J\)–\(V\) curve, and reveal how each type of recombination included in the model contributes to the observed behaviour.

In Fig. 1b, the example \(J\)–\(V\) curve from panel (a) is shown alongside the corresponding results for two other simulations. The only difference in the input parameters between the three simulations is the rate at which the applied voltage is scanned back and forth to measure the \(J\)–\(V\) curve. The three scan rates are 50, 100 and 200 mV/s. Harvesting the full set of results in Fig. 1b required a total of 34 s of computation time on a standard desktop machine, i.e. approximately 11 s per simulation including the calculation of appropriate initial conditions and the preconditioning step. See Sect. 6 for figures showing how the accuracy of the solution and the computation time vary with respect to the number of grid points on which the solution is computed. Next, the equations that underlie these simulations are detailed.

## 3 The charge transport model

In this section, the charge transport model for a planar lead halide perovskite solar cell consisting of a perovskite absorber layer sandwiched between an electron transport layer (ETL) and a hole transport layer (HTL) is presented. Tables of the model variables and parameters along with their definitions are given in the SI. The structure of the cell is shown in Fig. 2. The non-dimensionalisation used by the code is also given.

### 3.1 Model equations

*Perovskite absorber layer*(\(0<x<b\)) A model for the perovskite layer consists of equations for the conservation of conduction (free) electrons, holes and halide ion vacancies coupled with the Poisson equation for the electric potential, \(\phi (x,t)\). We denote the halide ion vacancy density by

*P*(

*x*,

*t*), its flux by \({{F}^P}(x,t)\) and define \(\hat{N_0}\) as the mean ion vacancy density. It is assumed that an equal, uniform density \(\hat{N_0}\) of immobile cation vacancies also exists within the perovskite layer. The electron and hole concentrations are denoted by

*n*and

*p*with current densities \({j^n}\) and \({j^p}\), respectively. The functions

*G*(

*x*,

*t*) and

*R*(

*n*,

*p*) denote the charge carrier photogeneration and bulk recombination rates, respectively. In the perovskite layer, we thus have

Here, \(D_{\mathrm{I}}\) denotes the diffusion coefficient of the iodide ion vacancies and \(\varepsilon _{\rm A}\) is the permittivity of the perovskite absorber layer. These differential equations are supplemented by continuity conditions at the interfaces with the transport layers (given at the end of this section).

### *Electron transport layer *

*V*(

*t*) is the applied voltage and \(V_{\mathrm{bi}}\) denotes the cell’s built-in voltage, which is defined in (17).

### *Hole transport layer *(\(b<x<b+b_{\rm H}\))

### *Continuity conditions on the interfaces *(\(x=0\) *and* \(x=b\))

In these expressions, \(g_{\rm{c,v}}\) denote the effective conduction/valence band density of states; \(E_{\rm{c,v}}\) are the energies of the conduction/valence band edges; and the superscripts *E* or *H* indicate to which transport layer a quantity relates. The validity of each of these expressions relies on the validity of using the Boltzmann approximation to describe the distribution of electrons in a non-degenerate semiconductor. Consequently, users should choose an effective doping density which is less than 20 times smaller than the effective density of states in each transport layer in order to ensure that the equilibrium Fermi level is more than a few thermal voltages away from the band edges, see (15)–(16).

### *Built-in voltage*

### 3.2 Carrier generation and recombination rates

*l*can be set equal to either \(+1\) for light from the left (through the ETL) or \(-1\) for light from the right (through the HTL) by making use of the Inverted option in the parameter input file.

### 3.3 Calculation of the total current density

*q*, we get

*P*, which gives

*x*. By integrating and applying the continuity conditions and the Ohmic boundary conditions at either metal contact, we get an expression for the total current density which is independent of

*x*and given by

The term involving a time derivative in each equation is the displacement current density. It should be noted that the magnitude of the displacement current density is usually even smaller than the magnitude of the expected numerical error in the solution, see Sect. 6.

### 3.4 Boundary conditions for open-circuit conditions

### 3.5 Non-dimensionalisation

*G*(the rate of photogeneration of charge pairs per unit volume) and \(\tau _{\mathrm{ion}}\) is the characteristic timescale for ion motion into the Debye layers, given by

The star notation is dropped in the following sections.

## 4 Discretisation

The numerical method upon which our code is based was developed by Courtier et al. [6] to solve a simplified model description of a perovskite solar cell in which it was assumed that the transport layers were so highly doped that the potential within them was uniform, thereby reducing the model to equations in the perovskite absorber layer only. In that work, the speed and accuracy of the method are compared against those of two previously used alternatives. It is shown that the method we adopt here is superior to both of these methods for both metrics of performance. Here, we adapt the finite element-based scheme to solve the dimensionless three-layer model set out in the previous section. We do not use the Scharfetter–Gummel scheme [19], commonly used for the solution of drift–diffusion equations, because it is tailored to deal with issues related to charge carrier transport rather than accurately resolving solutions in narrow Debye layers, which is the main difficulty in the present work.

### 4.1 Spatial grid

The discretisation is formulated on a computational grid comprised of \(N+N_{\rm E}+N_{\rm H}+1\) non-uniformly positioned grid points which partition the (non-dimensional) domain \(x\in [-w_{\rm E},1+w_{\rm H}]\) into \(N+N_{\rm E}+N_{\rm H}\) subintervals. The perovskite layer (including interfaces) contains \(N+1\) grid points denoted by \(x=x_i\) for \(i=0,\ldots ,N\) with subinterval widths denoted by \(\varDelta _{i+1/2}=x_{i+1}-x_{i}\). The transport layer domains (excluding interfaces) contain \(N_{\rm E}\) and \(N_{\rm H}\) grid points, respectively, with grid points denoted by \(x=x^{E}_i\) for \(i=0,\ldots ,N_{\rm E}-1\) and \(x=x^{H}_i\) for \(i=1,\ldots ,N_{\rm H}\), respectively, with corresponding subinterval notation.

*tanh*grid used in [6] to the three-layer cell geometry displayed in Fig. 2. Specifically, we set

*s*can be to calculate a value which leads to 20% of the grid points falling within one Debye length of each interface within the perovskite layer (i.e. the intervals \(x \in [0,\lambda ]\) and \(x \in [1-\lambda ,1]\)), via numerical solution of

The code is set up so that the numbers of grid points \(N_{\rm E}\) and \(N_{\rm H}\) are chosen based on the input parameter *N* to give approximately equal spacing immediately either side of the interface.

### 4.2 Finite element scheme

*A*and

*B*are constants and the function \(S(x,t,u,v_1,v_2,v_3)\) is a source term which depends upon the spatial variable

*x*, the temporal variable

*t*, the generic variable \(u\) and a series of other generic dependent variables \(v_i\) for \(i=1,2,3\). The electron, hole and halide ion vacancy conservation equations, (1), (2) and (3), are rewritten in this form by eliminating the attendant electron or hole current densities, or the halide ion vacancy flux, respectively. Poisson’s equation in the perovskite, (4), is already in this form.

*S*. For the anion vacancy conservation, \(S\equiv 0\) and so this term is zero. For Poisson’s equation, this term is a linear combination of dependent variables and so can be computed exactly. However, for the electron and hole conservation equations, (2) and (1), the source term comprises both the generation and bulk recombination rates,

*G*(

*x*) and

*R*(

*n*,

*p*), which are highly nonlinear, see Sect. 3.2. In order that the integral contained in the final term of (41) can be integrated (at least approximately) regardless of the functional form of the source term, we make a further approximation, that is, to replace the dependent variables in the integrand by functions that are piecewise constant over each subinterval, \(x\in (x_i,x_{i+1})\), and have a value equal to that of the full series (38) at the midpoint of that interval. In short, we make the additional approximation

The additional error incurred as a result of this approximation is comparable to the error associated with the original piecewise linear approximation for the dependent variables. Thus, even though some additional error is introduced, the scheme retains its second-order local accuracy, as demonstrated in Sect. 6. We note that this approach to deal with the nonlinear source terms is a special case of the method used in the work of Skeel and Berzins [22], but we emphasise that in contrast to their method, we only use this additional approximation for treatment of the source terms while the rest of the terms are integrated exactly.

An analogous methodology is used to derive the discrete equations in the transport layers. The only difference is that the basis and test functions are piecewise linear functions with compact support defined within the ETL and HTL, respectively.

### *Perovskite absorber layer*

### *Electron transport layer*

### *Hole transport layer*

### *Continuity conditions*

### 4.3 Boundary conditions for modelling open-circuit conditions

## 5 Implementation

In this section, we outline the steps performed by the code. We begin by describing the procedure that is used to integrate forward in time. Next, we outline how the parameters, operating protocol and initial conditions are set. Finally, we outline how IonMonger post-processes the results so that quantities of interest, e.g. the dimensional current output, can be extracted and visualised.

### 5.1 Integration in time using MATLAB’s ode15s

*E*between equations (46)–(73) before assembling the \(4N+2N_{\rm E}+2N_{\rm H}+4\) remaining unknown functions of time, into the column vector \(\mathbf {u}(t)\) as follows:

Another useful strategy for speeding up computations, and one that we make use of in IonMonger, is to exploit ode15s’s jpattern option. This facilitates additional savings in computational cost by specifying entries in the Jacobian of the vector function \(\mathbf {f}\) which are known to always equal zero a priori, thereby preventing the algorithm from having to numerically approximate their value as the integration in time proceeds. The function Jac creates a sparse matrix that indicates which entries of the Jacobian need to be numerically approximated at each time step and which are always equal to zero.

### 5.2 Parameter input and initial conditions

The necessary dimensional parameters, the illumination protocol *G*(*x*, *t*), voltage protocol *V*(*t*) and solver options are passed between functions in a MATLAB structure called params. A params structure can most easily be created using the script called parameters.m.

We note that in the original PDE setting, the electric potential, \(\phi\), satisfies an elliptic equation, namely Poisson’s equation, and therefore does not require an initial condition, since the initial potential is uniquely defined by the initial densities. After spatial discretisation, Poisson’s equation is translated into a set of algebraic equations, see (54), (60) and (63), and as such, one would not expect initial conditions on the electric potential to be required. However, it is a requirement of ode15s that initial conditions for all components of a DAE system are specified. It is this feature of the integrator that requires us to find and specify the initial potential profile \(\hat{\phi }(x)\); this profile is chosen to satisfy the algebraic equations derived from the discretisation of Poisson’s equation, and its boundary conditions, into which the initial conditions for *P*, *n* and *p* have been substituted.

### 5.3 Calculation of current densities and output

*J*(

*t*) from the dimensionless solution generated by IonMonger, from (28), we use

The final steps of the solution procedure carried out by IonMonger are to re-dimensionalise (see Sect. 3.5) and then save the solution variables (\(\mathbf {P}\), \(\varvec{\Phi }\), \(\mathbf {n}\), \(\mathbf {p}\), \(\varvec{\Phi }^{E}\), \(\mathbf {n}^{E}\), \(\varvec{\Phi }^{H}\) and \(\mathbf {p}^{H}\)), spatial vectors (\(\mathbf {x}\), xE and xH), time (time), evolution of the applied voltage (V) and evolution of the current densities defined above (\(\mathbf {J}\), \(\mathbf {J_{\rm{l}}}\) and \(\mathbf {J_{\rm{r}}}\)). These data are saved into a .mat data file along with the input structure (params).

The saved data can be further analysed and plotted in MATLAB in any way chosen by the user. One example plotting script is included in the IonMonger GitHub repository, and instructions for its use are given in the GUIDE. This script can be used to plot the current density generated by a PSC during the reverse and forward scans of a \(J\)–\(V\) curve, alongside the current losses due to recombination at each of the perovskite/transport layer interfaces, as shown in Fig. 1a. Such a plot can enable the user to identify the limiting recombination mechanism for a particular set of input parameters as described in Sect. 2.

## 6 Validation

For the purpose of verifying the results generated by IonMonger, in Fig. 3a, we plot a measure of the error in eight different solution variables against the number of grid points (\(N+N_{\rm E}+N_{\rm H}+1\)) on a logarithmic scale for five example simulations. The only input parameter that is varied between the five simulations is *N*, which takes values of 100, 200, 400, 800 and 1600, while all other input parameters are the same as those used for Fig. 1. Due to the lack of an exact solution, the errors are calculated with respect to another simulation performed on an even finer spatial grid consisting of 5613 points (for which the input parameter *N* is set equal to 3200). The chosen error measure is the sum (an \(l_1\) norm) of the differences between the value of the variable computed by the example simulation and that computed by the 5613-point simulation, averaged over all 300 time points of the simulation protocol after \(t=0\). The same error measure was used in [6] to compare the same solution method applied to a single-layer version of the model against two other methods on different spatial grids. Here, the eight solution variables for which the error is calculated are the (dimensionless) ion vacancy density, electric potential, electron concentration and hole concentration at the ETL/perovskite and perovskite/HTL interfaces located at \(x=0\) and \(x=1\), respectively, as listed in the legend. The results demonstrate the expected second-order pointwise convergence of the finite element scheme on which IonMonger is based [6]. The variation in the magnitude of the error between the eight solution variables is due to differences in the magnitude of the dimensionless variables themselves.

Figure 3b shows the computation times associated with each of the five simulations in panel (a), also plotted against the number of grid points on a logarithmic scale. Note that the computation time will also depend upon the length of the simulation protocol. The temporal tolerances for the integration in time performed by MATLAB’s ode15s were fixed for all simulations at values of \(10^{-6}\) for the relative tolerance and \(10^{-10}\) for the absolute tolerance.

A comprehensive verification of the single-layer finite element scheme, from which this code was developed, is provided in Sections 5 and 6 of [6]. This work includes plots of each solution variable across the perovskite layer against corresponding asymptotic results, which show very good agreement between the two approaches for realistic values of the input parameters.

### 6.1 Comparison to asymptotic results

## 7 Conclusions

We have built a fast and robust numerical solver for coupled ionic–electronic charge transport in a realistic three-layer perovskite solar cell architecture. The scheme is able to simulate a variety of relevant device operating regimes, including current–voltage sweeps and open-circuit transients, both with the possibility of having time-dependent illumination. Simulations of this sort can be carried out in seconds to minutes of computation time on a standard modern personal computer. The only prerequisite for making use of this tool is access to MATLAB and its suite of routines for time integration of ordinary differential equations, specifically the ode15s routine.

This work therefore provides a tool that is capable of playing a major role in guiding the development of perovskite solar cells. Our IonMonger code provides the possibility of independently varying each of the device parameters, so that their roles in determining cell performance can be discerned, something that is difficult, or even impossible, to achieve experimentally. One area of particular practical interest is understanding what can be done to mitigate the amount of parasitic recombination in PSCs, thereby further improving their performance. As demonstrated in [4], it is possible to suppress these losses via careful tuning of the cell’s constituent material properties, and we anticipate that further studies in the same spirit will be made possible using the computational tool provided here. A second area where such a simulation tool is surely needed is in understanding the long-term degradation processes that occur within PSCs on timescales of between hours and weeks. While the current version of the code cannot simulate degradation, it can be used to predict the effects of different device parameters on some of the proposed causes of degradation. For example, degradation due to chemical reactions at the perovskite/transport layer interfaces [3] is likely to be exacerbated by iodide ion accumulation in the Debye layers, while degradation due to the penetration of extrinsic ions, e.g. oxygen, into the perovskite may be enhanced by an accumulation of ion vacancies [1]. The development of IonMonger to include additional physical processes that occur on longer timescales would allow researchers to investigate long-term behaviour and stability much more quickly than is possible via experimentation, and hence it will be the subject of future work.

The authors are committed to maintaining and expanding the functionality of the code, and any updates will be hosted on the GitHub repository which can be accessed at https://github.com/PerovskiteSCModelling/IonMonger. While we cannot promise a high level of technical support to all users, we are happy to receive any suggestions on ways in which the features of the code can be improved and/or expanded, and it is our intention that the code will grow as the research priorities of the perovskite community evolve. Contact details for current code developers can be found in the README file in the main folder of the IonMonger GitHub repository.

## Footnotes

- 1.
The simulations in [4] are based on the same mathematical model as described in this work; however, the definitions of the constants of proportionality \(k_{\rm E}\) and \(k_{\rm H}\) and the built-in voltage \(V_{\mathrm{bi}}\) vary between the two works; the definitions in this work are compatible with Boltzmann statistics for non-degenerate semiconductors, see (13)–(17).

## Notes

### Acknowledgements

NEC and JMC were supported by EPSRC-funded studentships from the CDT in New and Sustainable Photovoltaics (with reference EP/L01551X/1). NEC was subsequently supported by an EPSRC Doctoral Prize (Ref. EP/R513325/1). NEC would like to thank Dr. Sam Mangham from the University of Southampton’s Research Software Group for his advice on sustainable code design.

## Supplementary material

## References

- 1.Aristidou, N., Eames, C., Sanchez-Molina, I., Bu, X., Kosco, J., Islam, M., Haque, S.A.: Fast oxygen diffusion and iodide defects mediate oxygen-induced degradation of perovskite solar cells. Nat. Commun.
**8**, 15218 (2017)CrossRefGoogle Scholar - 2.Calado, P., Telford, A.M., Bryant, D., Li, X., Nelson, J., O’Regan, B.C., Barnes, P.R.F.: Evidence for ion migration in hybrid perovskite solar cells with minimal hysteresis. Nat. Commun.
**7**, 13831 (2016)CrossRefGoogle Scholar - 3.Carrillo, J., Guerrero, A., Rahimnejad, S., Almora, O., Zarazua, I., Mas-Marza, E., Bisquert, J., Garcia-Belmonte, G.: Ionic reactivity at contacts and aging of methylammonium lead triiodide perovskite solar cells. Adv. Energy Mater. (2016). https://doi.org/10.1002/aenm.201502246 Google Scholar
- 4.Courtier, N.E., Cave, J.M., Foster, J.M., Walker, A.B., Richardson, G.: How transport layer properties affect perovskite solar cell performance: insights from a coupled charge transport/ion migration model. Energy Environ. Sci. Adv.
**12**(1), 396–409 (2019)CrossRefGoogle Scholar - 5.Courtier, N.E., Foster, J.M., O’Kane, S.E.J., Walker, A.B., Richardson, G.: Systematic derivation of a surface polarisation model for planar perovskite solar cells. Eur. J. Appl. Math.
**30**, 427–457 (2019)MathSciNetCrossRefGoogle Scholar - 6.Courtier, N.E., Richardson, G., Foster, J.M.: A fast and robust numerical scheme for solving models of charge carrier transport and ion vacancy motion in perovskite solar cells. Appl. Math. Model.
**63**, 329–348 (2018)MathSciNetCrossRefGoogle Scholar - 7.de Quilettes, D.W., Zhang, W., Burlakov, V.M., Graham, D.J., Leijtens, T., Osherov, A., Bulović, V., Snaith, H.J., Ginger, D.S., Stranks, S.D.: Photo-induced halide redistribution in organic–inorganic perovskite films. Nat. Commun.
**7**, 11683 (2016)CrossRefGoogle Scholar - 8.Eames, C., Frost, J.M., Barnes, P.R.F., O’Regan, B.C., Walsh, A., Islam, M.S.: Ionic transport in hybrid lead iodide perovskite solar cells. Nat. Commun.
**6**, 7497 (2015)CrossRefGoogle Scholar - 9.Egger, D.A., Bera, A., Cahen, D., Hodes, G., Kirchartz, T., Kronik, L., Lovrincic, R., Rappe, A.M., Reichman, D.R., Yaffe, O.: What remains unexplained about the properties of halide perovskites? Adv. Mater.
**30**, 1–11 (2018)CrossRefGoogle Scholar - 10.Fell, A., Schön, J., Schubert, M.C., Glunz, S.W.: The concept of skins for silicon solar cell modeling. Sol. Energy Mater. Sol. Cells
**173**, 128–133 (2017)CrossRefGoogle Scholar - 11.Foster, J.M., Snaith, H.J., Leijtens, T., Richardson, G.: A model for the operation of perovskite based hybrid solar cells: formulation, analysis, and comparison to experiment. SIAM J. Appl. Math.
**74**, 1935–1966 (2014)MathSciNetCrossRefzbMATHGoogle Scholar - 12.Idígoras, J., Contreras-Bernal, L., Cave, J.M., Courtier, N.E., Barranco, A., Borras, A., Sánchez-Valencia, J.R., Anta, J.A., Walker, A.B.: The role of surface recombination on the performance of perovskite solar cells: effect of morphology and crystalline phase of TiO
_{2}contact. Adv. Mater. Interfaces**5**(21), 1801076 (2018). https://doi.org/10.1002/admi.201801076 CrossRefGoogle Scholar - 13.Jacobs, D.A., Shen, H., Pfeffer, F., Peng, J., White, T.P., Beck, F.J., Catchpole, K.R.: The two faces of capacitance: new interpretations for electrical impedance measurements of perovskite solar cells and their relation to hysteresis. J. Appl. Phys.
**124**, 225702 (2018)CrossRefGoogle Scholar - 14.MATLAB version 9.3.0.713579 (R2017b) (2017)Google Scholar
- 15.National Renewable Energy Laboratory (NREL) research cell record efficiency chart. http://www.nrel.gov/pv/assets/images/efficiency-chart.png (2018). Accessed 17 June 2019
- 16.Nelson, J.: The Physics of Solar Cells. Imperial College Press, London (2003)CrossRefGoogle Scholar
- 17.Phung, N., Abate, A.: The impact of nano- and microstructure on the stability of perovskite solar cells. Small
**14**, 1–11 (2018)CrossRefGoogle Scholar - 18.Richardson, G., O’Kane, S.E.J., Niemann, R.G., Peltola, T.A., Foster, J.M., Cameron, P.J., Walker, A.B.: Can slow-moving ions explain hysteresis in the current–voltage curves of perovskite solar cells? Energy Environ. Sci.
**9**, 1476–1485 (2016)CrossRefGoogle Scholar - 19.Scharfetter, D.L., Gummel, H.K.: Large-signal analysis of a silicon read diode oscillator. IEEE Trans. Electron. Devices
**16**, 64–77 (1969)CrossRefGoogle Scholar - 20.Shampine, L.F., Reichelt, M.W.: The MATLAB ODE suite. SIAM J. Sci. Comput.
**18**, 1–22 (1997)MathSciNetCrossRefzbMATHGoogle Scholar - 21.Shampine, L.F., Reichelt, M.W., Kierzenka, J.A.: Solving index-1 DAEs in MATLAB and Simulink. SIAM Rev.
**41**, 538–552 (1999)MathSciNetCrossRefzbMATHGoogle Scholar - 22.Skeel, R.D., Berzins, M.: A method for the spatial discretization of parabolic equations in one space variable. SIAM J. Sci. Stat. Comput.
**11**, 1–32 (1990)MathSciNetCrossRefzbMATHGoogle Scholar - 23.Snaith, H.J.: Present status and future prospects of perovskite photovoltaics. Nat. Mater.
**17**, 372–376 (2018)CrossRefGoogle Scholar - 24.Snaith, H.J., Abate, A., Ball, J.M., Eperon, G.E., Leijtens, T.C., Noel, N.K., Stranks, S.D., Wang, J.T.-W., Wojciechowski, K., Zhang, W.: Anomalous hysteresis in perovskite solar cells. J. Phys. Chem. Lett.
**5**, 1511–1515 (2014)CrossRefGoogle Scholar - 25.van Reenen, S., Kemerink, M., Snaith, H.J.: Modeling anomalous hysteresis in perovskite solar cells. J. Phys. Chem. Lett.
**6**, 3808–3814 (2015)CrossRefGoogle Scholar - 26.Walsh, A., Scanlon, D.O., Chen, S., Gong, X.G., Wei, S.-H.: Self-regulation mechanism for charged point defects in hybrid halide perovskites. Angew. Chem. Int. Ed.
**54**, 1791–1794 (2015)CrossRefGoogle Scholar - 27.Walter, D., Fell, A., Wu, Y., Duong, T., Barugkin, C., Wu, N., White, T.P., Weber, K.: Transient photovoltage in perovskite solar cells: interaction of trap-mediated recombination and migration of multiple ionic species. J. Phys. Chem. C
**122**, 11270–11281 (2018)CrossRefGoogle Scholar

## Copyright information

**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.