Perovskite Solar Cell (PSC) Tutorial Part A: Quick start - simulate your first perovskite device

Perovskite solar cells are one of the fastest-growing research topics in photovoltaics, with more than 30,000 publications since their breakthrough around 2012. Their rapid rise is driven by record power conversion efficiencies above 25%, placing them alongside crystalline silicon as leading solar technologies. At the same time, perovskites are uniquely challenging: issues such as ionic migration, hysteresis, and dynamic structural changes make them harder to fully understand than conventional semiconductors.
This tutorial uses a standard and widely studied structure – FTO / TiO₂ / MAPbI₃ (??) / Spiro-OMeTAD / Au – to introduce the fundamentals of perovskite solar cell simulation in OghmaNano. In just a few steps, you will launch the software, build the device stack, run a JV sweep, and analyse key results such as Jsc, Voc, fill factor, and efficiency. Once you are comfortable with this basic device, the examples library includes more advanced perovskite systems and blends for further exploration.
Step 1: Launch OghmaNano
Start OghmaNano from the Windows Start menu. The main OghmaNano window will appear as shown in ??.

Step 2: Create a new simulation
Click New simulation. This opens the library of available device types, shown in ??. Double-click Perovskite cells (highlighted in red) to open the perovskite examples folder. You’ll see a list of pre-set simulations, such as MAPbI₃ device and Perovskite solar cell, as shown in ??. For this tutorial, select the Perovskite solar cell template. When prompted, save the simulation to a folder you have write access to.
💡 Tip: For best performance save to a local drive such as
C:\
. Simulations stored on network, USB, or cloud folders
(e.g. OneDrive) can run slowly due to heavy read/writes.


Step 3: Run the simulation
After selecting the template, the main simulation window opens (see ??). To start, click Run simulation (blue play icon) or press F9. Depending on your machine, the calculation may take a few seconds to complete. You can also use the xy / yz / xz buttons (bottom left) to change the device orientation in the 3D view.


jv.csv
(JV curve data), optical_output
(optical field results),
snapshots
(time-dependent fields), and time-resolved CSV files (time_j.csv
, time_v.csv
, etc.).
Double-click any file to open it in the appropriate viewer or editor.
Step 4: View the results

Open the Output tab (??) to browse the files written to disk. Double-click jv.csv
to plot the JV curve (see
??).
You can press g in the plot window to toggle the grid display. When examining the JV curve, focus on the following features (marked on the plot):
- JSC – the short-circuit current density, read where the curve crosses the current axis (V = 0). This shows how much current the cell produces without an external bias.
- VOC – the open-circuit voltage, where the curve crosses the voltage axis (J = 0). This is the maximum voltage the device can deliver under illumination.
- Pmax – the operating point (voltage × current) where the device produces maximum power.
Together, these parameters form some of the standard figures of merit for solar cells.
Well done! You’ve just run your first perovskite simulation and plotted its JV curve 🎉
💡 Show answer
This JV curve shows clear signs of hysteresis — it effectively contains two overlapping JV traces depending on whether the scan is taken in the forward or reverse direction. In perovskite solar cells, this arises because mobile ions (such as iodide vacancies) drift under an applied electric field. These ions redistribute during a voltage sweep, altering the local electric fields and charge extraction pathways. The result is a time-dependent response of the device, which manifests as hysteresis in the JV curve.
💡 Show answer
In perovskite solar cells, hysteresis can make it very difficult to define standard parameters such as the maximum power point, the open-circuit voltage, the short-circuit current, and even the fill factor. The JV curve may look different depending on the scan direction, scan speed, and device history, which complicates comparisons between results and makes reproducibility a key challenge in perovskite research.
Step 5: Changing the simulation mode to steady state

In the simulation above we ran the simulation in Hysteresis mode, which is a time-domain simulation. This mode accounts for how the applied potential redistributes mobile ions in perovskites over time. We swept the voltage from low to high and then back again, and—as you saw in the JV plot—the forward and reverse scans did not coincide because of this ionic motion (hysteresis). As noted above in the question boxes, such hysteresis makes it difficult to define stable values for PCE, JSC, VOC, and Pmax, since they can depend on the device’s prior state. For the remainder of this tutorial we will disable hysteresis and run in steady-state mode. To do this, go to the Simulation type tab in the main OghmaNano window and click JV curve (see ??).
✅ What to expect
In steady-state mode the JV plot should now appear as a single, smooth sweep (no forward/reverse overlap). Note the values of Jsc, Voc, FF, and PCE and compare them with the earlier hysteresis run to see how ionic effects impacted the metrics.
Step 6: The output from your simulation
File name | Description |
---|---|
jv.csv | Current density vs voltage (JV curve) |
charge.csv | Charge density vs voltage |
device.dat | 3D device model |
fit_data*.inp | Experimental data for the example device (when provided) |
k.csv | Recombination parameter vs voltage |
reflect.csv / transmit.csv | Optical reflectance / transmittance |
snapshots/ | Electrical snapshots (bias/time dependent); see ?? |
optical_snapshots/ | Optical field/intensity snapshots; see ?? |
sim_info.dat | Summary (VOC, JSC, FF, η); see ?? |
cache/ | Intermediate cached data; see ?? |
Each simulation produces a collection of outputs that capture different aspects of device behaviour - from raw JV curves and charge densities, to optical spectra, recombination constants, and snapshots of electrical or optical fields. These files are usually plain csv files which can be opened directly in OghmaNano’s built-in viewers or processed externally (for example, plotting data in Excel or Python). The most important outputs for a basic perovskite study are summarised in Table 1 below.
👉 Next step: Now continue to Part B for a more detailed perovskite tutorial, including outputs, device layers, and advanced analysis.