Porphyrin based dyes

The first 5145 porphyrins are described in:

Kristian B. Ørnsø, Juan M. García-Lastra and Kristian S. Thygesen

Computational screening of functionalized zinc porphyrins for dye sensitized solar cells

Phys. Chem. Chem. Phys., 2013, 15, 19478-19486

Kristian B. Ørnsø, Christian S. Pedersen, Juan M. García-Lastra and Kristian S. Thygesen

Optimizing porphyrins for dye sensitized solar cells using large-scale ab initio calculations

Phys. Chem. Chem. Phys., 2014, 16, 16246-16254

Examples of using the database can be found in:

Kristian B. Ørnsø, Juan M. García-Lastra, Gema De La Torre, F. J. Himpsel, Angel Rubio and Kristian S. Thygesen

Design of two-photon molecular tandem architectures for solar cells by ab initio theory

Chem. Sci., 2015, 6, 3018-3025

Kristian B. Ørnsø, Elvar Ö. Jónsson, Karsten W. Jacobsen and Kristian S. Thygesen

Importance of the Reorganization Energy Barrier in Computational Design of Porphyrin-Based Solar Cells with Cobalt-Based Redox Mediators

  1. Phys. Chem. C, 2015, 119, 12792-12800

Key-value pairs


Example of dye with: M=ZnP, A=EthynPhA, R1=Ph, R2=Ph, R3=Ph

key description unit
A Anchor group  
E_1 Triplet optical gap eV
E_HOMO HOMO location calculated as ionization potential eV
E_LUMO LUMO location calculated as electron affinity eV
E_c Energy difference between conduction band and E_HOMO eV
E_gap Electronic gap calculated as E_LUMO - E_HOMO eV
E_opt_LUMO Optical LUMO location calculated as E_HOMO + E_1 eV
KS_HOMO Kohn-Sham HOMO eigenvalue eV
KS_LUMO Kohn-Sham LUMO eigenvalue eV
KS_gap Kohn-Sham eigenvalue electronic gap (KS_LUMO - KS_HOMO) eV
LQual1 Level alignment quality calculated with model 1 for the open-circuit voltage eV
LQual2 Level alignment quality calculated with model 2 for the open-circuit voltage eV
M Metal center  
R1 First side group  
R2 Second side group  
R3 Third side group  

Example of how to use the database to create Figure S1 in the 2014 paper

# creates: homolumo.svg
import matplotlib.pyplot as plt
import ase.db

def plotter(M, A, c):
    """Function to get and plot E_HOMO and E_LUMO against E_gap for a given
    metal center and anchor group."""

    EH = []
    EL = []
    EG = []
    for row in c.select(M=M, A=A):  # select dyes with a specific M and A
    # Set colors based on metal center:
    cl = {'ZnP': 'red',
          'FZnP': 'gold',
          'TiOP': 'magenta',
          'FTiOP': 'purple',
          'TiO2RP': 'pink',
          'FTiO2RP': 'cadetblue',
          'H2P': 'orange',
          'FH2P': 'coral'}[M]

    # Set symbol based on anchor group:
    mk = {'EthynPhA': 's',
          '2CarboxyPropenA': 'o',
          '2CyanoPropenA': '^',
          'EthenThPCyanoAcryl': 'v',
          'DThPCyanoAcryl': '<',
          'EthynDThPA': '>',
          'EthynBTDPhA': '8',
          'EthynPhM': 'p',
          'EthynThPA': '*',
          'EthynDPhEPhA': 'h',
          'EthynThPCyanoAcryl': '+',
          'EthynPhEPhA': 'x',
          'EthynDThPCyanoAcryl': 'd',
          'EthynFuA': 'D',
          'ThPCyanoAcryl': 'H',
          'EthynTPhEPhA': '1',
          'EthenCyanoAcryl': '2',
          'EthynPhDA': '3'}[A]

    plt.plot(EG, EH, color=cl, marker=mk, linestyle='None')
    plt.plot(EG, EL, color=cl, marker=mk, linestyle='None')

c = ase.db.connect('dssc.db')

for M in ['ZnP', 'TiOP', 'H2P']:  # metal centers
    for A in ['EthynPhA', '2CarboxyPropenA', '2CyanoPropenA']:  # anchor groups
        plotter(M, A, c)
    plt.ylabel(r'Energy (eV)', fontsize=18)
    plt.xlabel(r'$E_{\mathrm{gap}}$ (eV)', fontsize=18)