Computing energy disorder with QuantumPatch


Energy disorder and Reorganization Energies are essential features to almost any ab-initio simulation of charge carrier and exciton dynamics in organic semiconductors. In this tutorial we will show you how to run QuantumPatch to compute energy disorder.


To compute energy disorder of a material, QuantumPatch equilibrates the electronic structure of an uncharged system and computes the distribution of HOMO and LUMO levels for each molecular species in the thin film. In the QuantumPatch WaNo, you will find three tabs General, Engines and Shells. The following steps will guide you through each tab.

General tab

In the general tab, set the following parameters:

General settings:

  • Morphology: Provide the cml file from Deposit. Make sure it contains enough molecules of each species to allow sufficient statistics. We recommend to deposit ~1000 molecules and to extend the structure periodically using the Postprocessing Tab of Deposit (especially if the structure is high and thin), to supply enough environment for molecules in the core shell (see below).
  • Run QuantumPatch: Check
  • QuantumPatch Type: Polarized (old version) / Uncharged (new version)
  • Calculate Js: Disable if not required, keep this option checked if you want to run LightForge simulations and couplings are not computed in a different QP run (e.g. on a small full-stack, see here). Keep in mind that the computation of J runs significantly longer than the disorder computation.
  • Include in-vacuo Lambda/EA/IP Calculation: This option computes EA, IP and lambda for all molecules in the core shell. If enabled, lambda is computed on one molecule per species in the thin film. Check out this toturial to learn about different options to compute lambda and what to define in the LamdbaEAIP tab, if this option is checked.

Molecular States: This section is ignored in the Polarized / Uncharged QP run, so we can neglect this for the moment.

Engines Tab


You can find a general description of the QuantumPatch Engines here. For computation of energy disorder, we recommend to define the following engines: As Engine for the core shell we recommend to use a Turbomole engine (DFT) including a fallback engine with higher convergence criteria. For the environment around the core shell and the outermost static shell, we recommend to use DFTB (if possible, see list of supported elements), so set up your engines as follows:

  • Core engine:
    • Name: Turbomole Core
    • Engine: Turbomole
    • Fallback: Check
    • Fallback Engine: Turbomole Fallback (can only be set once defined as below)
    • Partial charge method: ESP
    • D3 disperion correction: disabled
    • Functional: b3-lyp
    • Basis: def2-SVP
    • SCF convergence: normal
    • leave Threads and Memory as is
  • Core Fallback engine: Same as Turbomole Core, but set SCF convergence to "superextreme"
  • We will use two different engine to compute electrostatic environmental effects:
    • First dynamic shell:
      • Name: TM env
      • Engine: Turbomole
      • Partial charge method: ESP
      • D3 disperion correction: disabled
      • Functional: BP86
      • Basis: def2-SVP
      • SCF convergence: normal
      • leave Threads and Memory as is, a fallback engine is usually not required.
    • As second dynamic shell you can use the predefined DFTB+ engine and use the above engine of the first dynamic shell as fallback, especially of not all elements are DFTB compatible:
      • Name: DFTB+ 1
      • Engine: DFTB+
      • Fallback: True
      • Fallback Engine: Environment Fallback
  • Environment Fallback: This engine is baiscally similar to Turbomole Core, however BP and def2-SVP are sufficient and you do not need to use a fallback engine.

In case most or all of your molecules are incompatible with DFTB+, simply use the Environment Fallback engine as standard engine for the outer shells. See also this page to learn more about fallback engines.


Core Shell: Leave number of screened iterations at 7, set the Used Engine to "Turbomole Core" and chose an appropriate Inner Part Method to include at least 100molecules (200 molecules recommended) in the core shell. The easiest way to do this is to chose "Number of molecules" and set this value accordingly. This option picks the N molecules that are closest to the center of your structure (i.e. in a sphere). If your structure is very high and narrow, please to consider using "Inner Box Cutoff" and estimate how much you need to "cut" from your structure from each side to get the correct number of molecules in the core shell with sufficient environment molecules on each side. For a good description of the inner box cutoff usage, see the "distance" method here. List of molecules is usually not required for disorder computations. There is a good description of the Core definitions in the Matrix EA IP tutorial. Leave the "Different Engine on Last Iteration" unchecked.

Then provide the following outer shells:

  • First dynamic shell: 15A, Engine "TM env", shell type "dynamic"
  • Second dynamic shell: 25A, Engine "DFTB+ 1", shell type "dynamic"
  • Third static shell: 60A, Engine "DFTB+ 1", shell type "dynamic"

Leave the "Different Engine on Last Iteration" unchecked for both outer shells.


The computed disorder can be found in files "sigma_mol_pairs_id0_id1.dat", wher "id0" and "id1" correspond to molecule types in your system. For a pristine system, you will therefore only find a file namend sigma_mol_pairs_0_0.dat. This file contains two lines, where the first line is the hole disorder and the second line is the electron disorder, in eV.

Variance of disorder and charge carrier mobility to due sample size

For a Gaussian distribution of energies with an expected standard deviation sigma, the standard deviation of a sample of finite size will vary from morphology to morphology. In the following we drew 100'000 samples of varying sample size and calculated the distribution of the sigma_expected - sigma_sample over the 100'000 samples for different samples sizes. std_dev The following graph shows the relative standard deviation of sigma ((sigma_sample - sigma_expected) / sigma_sample) versus sample size. This means for example that for a single run with a sample-size of 100, we have a ~5% risk of having a deviation of 0.15 sigma or larger from the target value, whereas for a sample-size of 400, we have a risk of ~5% of having a deviation of 0.08 sigma or larger from the target value. Moreover, with a sample size of 400, the risk of having a deviation of 0.15 sigma or larger in a single run is < 0.3% (above the green line), while it amountet to 5% at a sample size of 100 (above the orange line). std_conf The mobility of a disordered organic semiconductor is approximately proportinal to mu ~ exp(-0.4 * (sigma/kT)^2).[] In the following we show the distribution of (mu_sample-mu_expected)/mu_expected for expected sigmas of 0.1, 0.15 and 0.2 eV.

std_mob100 std_mob150 std_mob200
Mobility fluctuation 100meV Mobility fluctuation 150meV Mobility fluctuation 200meV

The results of the search are