Software for Photovoltaics

Solis: one-dimensional semiconductor device simulator

Solis is a one-dimensional semiconductor device simulator with a high-performance and modular calculation engine coded in C++ and a user-friendly interface developed in C and completely independent from the calculation engine. Solis implements the drift-diffusion model and simulates graded or abrupt heterostructures (for solar cells, detectors, etc.) taking into account various recombinations mechanisms (Auger, radiative and Shockley-Read-Hall (SRH)), traps (donor-like and acceptor-like), incomplete dopants ionization, Schottky rectifying contacts, spontaneous and piezoelectric polarization in III-N materials, photogeneration using AM1.5 solar spectrum or any user-defined spectrum, etc. It outputs the current-voltage, capacitance-voltage and quantum efficiency, in addition to band diagram, spatial distribution of carriers density, ionized dopants and traps, generation/recombination, electric field, etc. Solis was designed with portability, flexibility and performance as the main criteria, e.g. its core simulation engine is coded in standard C++ with no dependency on any proprietary system, it natively supports Linux and Windows, all the physical models can be set using the integrated and fast scripting engine, and the discretization scheme, initial guess, voltage and wavelength sweep... can be defined by the user. The Solis input format is an easy-to-use plain text format with simple syntax and some useful features such as variable definition and mathematical parser. I started developing Solis in 2009 and presented the first testing release in the 37th International Symposium on Compound Semiconductors (ISCS) in 2010 in Japan.




The Solis one-dimensional semiconductor device simulator is distributed as a part of the Solis environment. It is distributed in a portable version and do not need to be installed.
Just download (for Windows 7/8/10 64bit) or solis_linux_64bit.tgz (for Linux 64bit) from: (Windows 64bit)
solis_linux_64bit.tgz (Linux 64bit)
unzip/untar in any location (local user directory, USB key or Memory stick for example).
The Solis distribution size is less that 10 MB.

If you are using an outdated system such as Windows XP or CentOS 6/7 or Debian 6/7 or a 32bit architecture, you can download a legacy version (Solis 2.0) from: (Windows 64bit) (Windows 32bit)
solis2_linux_64bit.tgz (Linux 64bit)
solis2_linux_32bit.tgz (Linux 32bit)

The Solis distribution includes:
• a bin directory where the solis simulator driver, dynamic libraries and the Solis tools reside;
• a doc directory with the Solis documentation;
• an examples directory with templates used to define physical models for Solis and some useful input files including solar cells and ultraviolet detectors;
• an icons directory;
• a work directory where to put simulation input and results;
• a config directory where Solis saves user settings.

In the bin directory are included the Solis simulation engine driver, core libraries and four tools:
• The code editor, solisedit.exe (Windows) or solisedit (Linux)
• The simulation engine driver, soliscomp.exe (Windows) or soliscomp (Linux)
• The graphical device editor, solisdevice.exe (Windows) or solisdevice (Linux)
• The data plotter, solisplot.exe (Windows) or solisplot (Linux)
• The scientific calculator, soliscalc.exe (Windows) or soliscalc (Linux)

• Under Linux, Solis includes also an interactive terminal emulator (solisterm), a standalone version of the embedded terminal in SolisEdit.
This terminal emulator is loaded and available to use if the VTE library is installed.

Usually the required VTE library is installed by default, but in some systems it must be installed:
Under CentOS, install vte by typing the following commands:
 sudo yum install -y epel-release
 sudo yum install vte
Under Ubuntu, install vte by typing the following command:
sudo apt-get install libvte9

• Under Ubuntu, if you encounter error such as:
 error while loading shared libraries:
reinstall the required library by typing in the terminal:
 sudo apt-get --reinstall install libgtk2.0-0

• Under Ubuntu/Debian 64bit, if you encounter error such as:
 failed to load module "canberra-gtk-module"
reinstall the required library by typing in the terminal:
 sudo apt install libcanberra-gtk-module libcanberra-gtk3-module


The Solis documentation can be downloaded here:
Solis: 1D Semiconductor Device Simulator
Solis: Environment for Numerical Computing
S. Ould Saad Hamady, "Solis: a modular, portable, and high-performance 1D semiconductor device simulator", Journal of Computational Electronics, 2020.

Open-source Python programs

SLALOM - Open-Source, Portable and Easy-to-use Solar Cell Optimizer
SLALOM is a set of open-source Python programs implementing a rigorous mathematical methods for the optimization of solar cells using as backend a drift-diffusion device simulator.
It aims to be simple to use, to maintain and to extend.
It includes a core optimizer using the well tested robust mathematical methods, a set of user interface utilities and some complete and working examples easily adaptable to new solar cell technologies.
SLALOM uses, as device simulator, the Silvaco(C) Atlas tool. It can be easily extended to use any simulator that have a standard input format and a command line interface.
SLALOM source code (written in Python) is available to download from:
S. Ould Saad Hamady & N. Fressengeas, "SLALOM-Open-Source Solar Cell Multivariate Optimizer", EPJ Photovoltaics, 2018.


Shockley-Queisser limit Calculator
The Shockley-Queisser limit is the maximum photovoltaic efficiency obtained for a solar cell with respect to the absorber bandgap.
The theory is described by W. Shockley and H. J. Queisser in Journal of Applied Physics 32 (1961).
The source code (written in Python) is available to download from:


Photovoltaic-Model calculates the current-voltage characteristic of a solar cell using the two-diode model, with a possibility to fit an experimental characteristic to get short-circuit current, diodes parameters (reverse saturation current and ideality factor), series and parallel resistances.
The source code (written in Python) is available to download from:


 Copyright(C) 2010-2021 Sidi HAMADY