First, download Microvolt and ivutils source code. This is the content of the Microvolt folder:

  • /include – source code
  • /src - source code
  • /doc – documentation
  • /spectra – tabulated optical properties of some semiconductors, and solar spectrum AM1.5
  • /experiments – test examples (1D diode, 2D multijunction, nanowire, 3D textured solar cell, etc.)
  • /experiments/unix – UNIX makefile
  • /experiments/vs8 – MS Visual Studio 8 project
  • /experiments/vs10 – MS Visual Studio 10 project
  • /experiments/vs11 - MS Visual Studio 11 project

 ivutils is library of numerical utilities which we are using in Microvolt.You don't need to download it from ivutils webpage, it is already included in the Microvolt archive.

Install linear solver

Microvolt will work much faster if you install some linear solver (preferably optimized for operations with sparse matrices). This is not necessary step, and you can run Microvolt without any linear solver, however, in this case it will be slow. If you still want to try Microvolt without any linear solver, skip this section and go directly to installation section.

We recommend to use linear solver PARDISO.
You may already have installed PARDISO (for example, you might have Math Kernel Library, MKL which includes PARDISO).
If you don't have PARDISO or you are not sure, you can install it.


Sign a free license and fill the form with your email address here.
After this, you will get an email with link where you can download PARDISO library files (.exp, .lib, .dll).


First, install gfortran compiler if you don't have it (if you have Ubuntu, just type sudo get-app install gfortran).

Second, install some implementation of LAPACK. We recommend to use OpenBLAS. Download OpenBLAS archive, unzip it and type:

make PREFIX=some_chosen_directory install

Instead of some_chosen_directory you can put /usr/local.

Third, you need to get PARDISO.
Sign a free license and fill the form with your email address here.
After this, you will get an email with link where you can download PARDISO shared object library file .so
Copy it to some directory (for example, /usr/local/lib).

Fourth, you need to specify LD_LIBRARY_PATH (this is the path where runtime linker is looking for shared libraries).
For example, if you installed OpenBLAS to usr/local and put PARDISO shared library file to /usr/local/lib, type

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib

Install Microvolt


Open MS Visual Studio project file /experiments/vs11/vs11.vcxproj

Go to Build -> Configuration manager and choose relevant solution configuration. If you didn’t install any linear solver, choose Debug or Release.

If you installed linear solver, choose Debug_MKL, Release_MKL, Debug_PARDISO, Release_PARDISO. You will also need to add corresponding Include Directories and Library Directories to Project Properties -> Configuration Properties -> VC++ Directories.
Your library files should be linked in Project Properties -> Configuration Properties -> Linker -> Input.

Project file compiles experiments/diode.cpp by default, but you can change it to any other file manually.


Go to /experiments/unix and type


As a result, you will get executable file experiments/unix/_gnu/transport.x.

If you want to use installed OpenBLAS and PARDISO, open experiments/unix/Makefile and uncomment following lines there

Makefile compiles experiments/diode.cpp by default, but you can specify other file in the variable SRC_MAIN. 

By default, Makefile binds with g++ and assumes that library files are placed in /use/local/lib.
If you want to change it, please edit Makefile (this is easy).