SOLEY - A simulation package for solar cells
Authors/Creators
Description
The landing page of SOLEY can be found here
Important note: The MacOS version has not been thoroughly tested. The windows and Linux versions normally ok on all machines, for all screen resolutions and scaling.
New in 1.9.8:
- Linux version would not open on some distributions due to missing packages. Power users could fix it but it was a hassle. I just bundled Qt-WebEngine.
- 2T multijunction solver: replaced the legacy interpolation-based combiner with the direct diode-equation solver across every code path (Device tab, J-V tab, headless calculation). Single source of truth for 2T physics.
- MPP refinement: 3-point parabolic refinement around argmax(P) so reported V_mpp, J_mpp, P_max are no longer pinned to voltage-grid resolution. Same logic in api, jv, and device paths.
- Per-absorber scattering mode: new layer-level dropdown Flat / Debye-Waller / Geometric replaces the implicit global heuristic. The "Geometric" mode is the light-trapping model (textured-surface scattering with multi-bounce cavity factor); honored only on absorbers. Tagged per-layer and cached accordingly; old .soley files migrate.
New in 1.9.7:
Nothing, it is just yet another bug fix for the save/load logic. The HTML front end and the python backend give me headaches when it comes to making them talk.
New in 1.9.6:
- Physics
- Fixed TM-polarization Poynting-vector normalization in the TMM engine. Generation profiles through glass superstrates (e.g. perovskite/Si tandems) are now correct for both TE and TM components.
- Numerical stability: overflow guard in the diode equation solver prevents crashes for extreme series resistance values. - Stability & Export
- TMM optical cache no longer falsely invalidates when Bruggeman EMA merges mixed-index layers.
- Results export rewritten to handle multijunction devices (per-subcell parameters, J-V curves, diode analysis).
- Project files (.soley) now store canonical material paths, making them portable across machines.
So yeah, most bug fixes, but those were annoying.
New in 1.9.5:
- Photon recycling. Good to have for cells close to the radiative limit.
- 3T tandem solar cells. Which, to my surprise, are NOT equivalent to 4T terminals. The model is explained in the hints.
- Incoherent TMM for thick layers. THe previous stability checks were nice to have but failed in some conditions. Now, the problem is solved without damaging the physics.
- Save/load rehauled, it was very buggy
- Generation funciton was also buggy, that's solved.
New in 1.9:
- Terrible bug fix! In 1.8, moving or removing a layer would mess up the layer labelling and the optical and device modelling was all over the place. THis was fixed.
- Photon recycling was implemented, which justifies going to version 1.9
- Several bug fixes and a few QoL changes
New in 1.8:
- HTML-based GUI
- BIfacial solar cells
- Various bug fixes
- Probably new bugs...
- In 1.81: MacOS version is now a .dmg and the IEC 60904-1-2 standard for bifacial modelling
SOLEY – Solar Cell Simulation Package
SOLEY is a scientific-grade simulation software for modelling the optical and electrical performance of photvoltaic solar cells. It does not intend to replace existing packages which use the drift diffusion model, but rather to complement those by offering an alternative approach.
🟠 Optical Simulation Capabilities
- Transfer Matrix Method for multilayer optical calculations
- Bruggeman effective medium approximation for composite layers (could sometimes be buggy as it messes the layer indexing)
- Direct and diffuse illumination with angle and polarisation control (TE, TM, unpolarised)
- Generation profile computation
- Parallel wavelength processing for faster simulations. Not always faster due to overheads unfortunately 🗿
🔵 Device Physics & Electrical Modelling
- Extended detailed balance framework
- Photoluminescence and Electroluminescence modelling
- Multi-junction support (2T, 4T/6T etc. configurations)
- Recombination mechanisms: SRH, radiative, and Auger
- Custom defect input: trap density, capture cross-sections, bulk and interface defects etc. The whole enchilada.
- Series and shunt resistance effects
- Dynamic carrier injection variation (through a very innaccurate slider)
- Possibility to bypass the optical caluclation and use a step absorption, as in the SQ limit. If non radiative recombination are set to 0 and resistances are inexistent, you get the SQ limit.
- External SQ calculator
🟢 Analysis & Visualisation
- J–V curve generation (dark and illuminated)
- PL, PL(V) and EL curve generation
- EQE calculations to come in a future update
- Bandgap extraction from absorbance spectra, but always double check please!
- Plotting of R, T, and internal absorption
- Batch parameter sweeps and thickness optimisation
🟣 Data Handling & Export
- Export optical profiles, generation data, J–V curves…
- Save/load full simulation states as .soley files
- CSV export for external tools
Future updates will add EQE (using thermodynamic equations, the goal is not to redo what SCAPS already does so well), other built-in recombination pathways, intermediate band solar cells, hot carrier solar cells etc. Just be patient with me pretty please.
Files
SOLEY_Manual_1_9_5.pdf
Additional details
Software
- Repository URL
- https://zacharie-li-kao.github.io/SOLEY-PV/
- Programming language
- Python