Porphyrin based dyes

We present a computational screening study of more than 12,000 porphyrin- based dyes obtained by modifying the porphyrin backbone (metal center and axial ligands), substituting hydrogen by fluorine, and adding different side and anchoring groups.

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

../_images/mol.png

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

key

description

unit

A

Anchor group

DBScreen

DBScreen

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

UsedE1

UsedE1

UsedEc

UsedEc

dssc

dssc

gpaw_setups

gpaw_setups

gpaw_version

gpaw_version

project

project

xc

xc

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
        EL.append(row.E_LUMO)
        EH.append(row.E_HOMO)
        EG.append(row.E_gap)
    # 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)
    plt.savefig('homolumo.svg')
../_images/homolumo.svg