Skip to main content

Program for the calculation of transfer integral

Project description

tcal: Program for the calculation of transfer integral

Python License: MIT docs

Requirements

  • Python 3.11 or newer
  • NumPy
  • Gaussian 09 or 16 (optional)
  • PySCF (optional, macOS / Linux / WSL2(Windows Subsystem for Linux))
  • ORCA 6.1.0 or newer (optional)

Important notice

  • When using Gaussian, the path of the Gaussian must be set.
  • PySCF is supported on macOS and Linux. Windows users must use WSL2.
  • When using ORCA, ORCA must be installed. To perform parallel calculations with ORCA, OpenMPI must be configured.

Installation

Using Gaussian 09 or 16 (without PySCF)

pip install yu-tcal

Using PySCF (CPU only, macOS / Linux / WSL2)

pip install "yu-tcal[pyscf]"

Using GPU acceleration with PySCF (macOS / Linux / WSL2)

1. Check your installed CUDA Toolkit version

nvcc --version

2. Install tcal with GPU acceleration

If your CUDA Toolkit version is 13.x, install tcal with GPU acceleration:

pip install "yu-tcal[gpu4pyscf-cuda13]"

If your CUDA Toolkit version is 12.x, install tcal with GPU acceleration:

pip install "yu-tcal[gpu4pyscf-cuda12]"

If your CUDA Toolkit version is 11.x, install tcal with GPU acceleration:

pip install "yu-tcal[gpu4pyscf-cuda11]"

Using ORCA

pip install "yu-tcal[orca]"

Verify Installation

After installation, you can verify by running:

tcal --help

Options

Short Long Explanation
-a --apta Perform atomic pair transfer analysis.
-c --cube Generate cube files.
-g --g09 Use Gaussian 09. (default is Gaussian 16)
-h --help Show options description.
-l --lumo Perform atomic pair transfer analysis of LUMO.
-m --matrix Print MO coefficients, overlap matrix and Fock matrix.
-o --output Output csv file on the result of apta.
-r --read Read log/checkpoint files without executing calculations.
-x --xyz Convert xyz file to gjf file. (Gaussian only)
-M --method METHOD/BASIS Calculation method and basis set in "METHOD/BASIS" format. (default: B3LYP/6-31G(d,p))
--cpu N Set the number of CPUs. (default: 4)
--mem N Set the memory size in GB. (default: 16)
--napta N1 N2 Perform atomic pair transfer analysis between different levels. N1 is the number of level in the first monomer. N2 is the number of level in the second monomer.
--hetero N Calculate the transfer integral of heterodimer. N is the number of atoms in the first monomer.
--nlevel N Calculate transfer integrals between different levels. N is the number of levels from HOMO-LUMO. N=0 gives all levels.
--skip N... Skip specified calculation. If N is 1, skip 1st monomer calculation. If N is 2, skip 2nd monomer calculation. If N is 3, skip dimer calculation.
--pyscf Use PySCF instead of Gaussian. Input file must be an xyz file.
--gpu4pyscf Use GPU acceleration via gpu4pyscf. (PySCF only)
--bse Use Basis Set Exchange to obtain basis sets. Allows use of basis sets not included in PySCF. (PySCF only)
--mpi PATH Path to OpenMPI installation directory for ORCA parallel execution (sets OPI_MPI environment variable). (ORCA only)

How to use

Using Gaussian

1. Create gjf file

First of all, create a gaussian input file as follows:
ex: xxx.gjf
gjf_file_example
The xxx part is an arbitrary string.

Description of link commands

pop=full: Required to output coefficients of basis functions, overlap matrix, and Fock matrix.
iop(3/33=4,5/33=3): Required to output coefficients of basis functions, overlap matrix, and Fock matrix.

How to create a gjf using Mercury

  1. Open cif file in Mercury.
  2. Display the dimer you want to calculate.
    Anthracene_dimer
  3. Save in mol file or mol2 file.
  4. Open a mol file or mol2 file in GaussView and save it in gjf format.

2. Execute tcal

Suppose the directory structure is as follows.

yyy
└── xxx.gjf
  1. Open a terminal.
  2. Go to the directory where the files is located.
cd yyy
  1. Execute the following command.
tcal -a xxx.gjf

3. Visualization of molecular orbitals

  1. Execute the following command.
tcal -cr xxx.gjf
  1. Open xxx.fchk in GaussView.
  2. [Results] → [Surfaces/Contours...] visualize1
  3. [Cube Actions] → [Load Cube]
  4. Open xxx_m1_HOMO.cube and xxx_m2_HOMO.cube. visualize2
  5. Visualize by operating [Surface Actions] → [New Surface]. visualize3
    visualize4

Using PySCF

1. Create xyz file

Prepare an xyz file of the dimer structure.
The first half of the atoms are treated as monomer 1, and the second half as monomer 2.
For heterodimers, use the --hetero N option to specify the number of atoms in the first monomer.

2. Execute tcal

tcal --pyscf -a xxx.xyz

To specify a calculation method and basis set:

tcal --pyscf -M "B3LYP/6-31G(d,p)" -a xxx.xyz

To use GPU acceleration:

tcal --gpu4pyscf -M "B3LYP/6-31G(d,p)" -a xxx.xyz

To use basis sets from Basis Set Exchange (e.g., def2-TZVP, cc-pVDZ):

tcal --pyscf --bse -M "B3LYP/def2-TZVP" -a xxx.xyz

To read from existing checkpoint files without re-running calculations:

tcal --pyscf -ar xxx.xyz

Using ORCA

1. Create xyz file

Prepare an xyz file of the dimer structure.
The first half of the atoms are treated as monomer 1, and the second half as monomer 2.
For heterodimers, use the --hetero N option to specify the number of atoms in the first monomer.

2. Execute tcal

tcal --orca -a xxx.xyz

To specify a calculation method and basis set:

tcal --orca -M "B3LYP/6-31G(d,p)" -a xxx.xyz

To read from existing output files without re-running calculations:

tcal --orca -ar xxx.xyz

Parallel execution

To use multiple CPU cores (--cpu N), OpenMPI must be installed. First, confirm that mpirun is available:

which mpirun

If OpenMPI is already in $PATH and $LD_LIBRARY_PATH (common on Linux/WSL after apt install), no further configuration is needed.

If parallel execution does not work, find the OpenMPI base directory (the directory that contains bin/ and lib/) and pass it via OPI_MPI or --mpi.

Linux / WSL

Note: ORCA requires a specific version of OpenMPI. The version available via apt may not match. If parallel execution fails, it is recommended to build OpenMPI from source using the version specified in the ORCA documentation.

When mpirun is installed under a dedicated directory (e.g., built from source or via a module system):

which mpirun
# e.g., /opt/openmpi/bin/mpirun  →  base: /opt/openmpi
export OPI_MPI=$(dirname $(dirname $(which mpirun)))

When installed system-wide via apt (Ubuntu/Debian), mpirun is typically at /usr/bin/mpirun but the OpenMPI libraries live under /usr/lib/. Check with:

which mpirun
# /usr/bin/mpirun  →  base is usually /usr/lib/x86_64-linux-gnu/openmpi
export OPI_MPI=/usr/lib/x86_64-linux-gnu/openmpi

macOS (Homebrew)

which mpirun
# e.g., /opt/homebrew/bin/mpirun
export OPI_MPI=$(brew --prefix open-mpi)

Passing the path with --mpi

Instead of setting the environment variable, you can pass the path directly:

tcal --orca --cpu 8 --mpi /path/to/openmpi -a xxx.xyz

Interatomic transfer integral

For calculating the transfer integral between molecule A and molecule B, DFT calculations were performed for monomer A, monomer B, and the dimer AB. The monomer molecular orbitals $\ket{A}$ and $\ket{B}$ were obtained from the monomer calculations. Fock matrix F was calculated in the dimer system. Finally the intermolecular transfer integral $t^{[1]}$ was calculated by using the following equation:

$$t = \frac{\braket{A|F|B} - \frac{1}{2} (\epsilon_{A}+\epsilon_{B})\braket{A|B}}{1 - \braket{A|B}^2},$$

where $\epsilon_A \equiv \braket{A|F|A}$ and $\epsilon_B \equiv \braket{B|F|B}$.

In addition to the intermolecular transfer integral in general use, we developed an interatomic transfer integral for further analysis $^{[2]}$. By grouping the basis functions $\ket{i}$ and $\ket{j}$ for each atom, the molecular orbitals can be expressed as

$$\ket{A} = \sum^A_{\alpha} \sum^{\alpha}_i a_i \ket{i},$$

$$\ket{B} = \sum^B_{\beta} \sum^{\beta}_j b_j \ket{j},$$

where $\alpha$ and $\beta$ are the indices of atoms, $i$ and $j$ are indices of basis functions, and $a_i$ and $b_j$ are the coefficients of basis functions. Substituting this formula into aforementioned equation gives

$$t = \sum^A_{\alpha} \sum^B_{\beta} \sum^{\alpha}_i \sum^{\beta}_j a^*_i b_j \frac{\braket{i|F|j} - \frac{1}{2} (\epsilon_A + \epsilon_B) \braket{i|j}}{1 - \braket{A|B}^2}$$

Here we define the interatomic transfer integral $u_{\alpha\beta}$ as:

$$u_{\alpha \beta} \equiv \sum^{\alpha}_i \sum^{\beta}_j a^*_i b_j \frac{\braket{i|F|j} - \frac{1}{2} (\epsilon_A + \epsilon_B) \braket{i|j}}{1 - \braket{A|B}^2}$$

References

[1] Veaceslav Coropceanu et al., Charge Transport in Organic Semiconductors, Chem. Rev. 2007, 107, 926-952.
[2] Koki Ozawa et al., Statistical analysis of interatomic transfer integrals for exploring high-mobility organic semiconductors, Sci. Technol. Adv. Mater. 2024, 25, 2354652.
[3] Qiming Sun et al., Recent developments in the PySCF program package, J. Chem. Phys. 2020, 153, 024109.
[4] Benjamin P. Pritchard et al., New Basis Set Exchange: An Open, Up-to-Date Resource for the Molecular Sciences Community, J. Chem. Inf. Model. 2019, 59, 4814-4820.
[5] Frank Neese, The ORCA program system, Wiley Interdiscip. Rev. Comput. Mol. Sci., 2012, 2, 73-78.

Citation

When publishing works that benefited from tcal, please cite the following article.
Koki Ozawa, Tomoharu Okada, Hiroyuki Matsui, Statistical analysis of interatomic transfer integrals for exploring high-mobility organic semiconductors, Sci. Technol. Adv. Mater., 2024, 25, 2354652.
DOI: 10.1080/14686996.2024.2354652

Example of using tcal

  1. Satoru Inoue et al., Regioisomeric control of layered crystallinity in solution-processable organic semiconductors, Chem. Sci. 2020, 11, 12493-12505.
  2. Toshiki Higashino et al., Architecting Layered Crystalline Organic Semiconductors Based on Unsymmetric π-Extended Thienoacenes, Chem. Mater. 2021, 33, 18, 7379–7385.
  3. Koki Ozawa et al., Statistical analysis of interatomic transfer integrals for exploring high-mobility organic semiconductors, Sci. Technol. Adv. Mater. 2024, 25, 2354652.

Authors

Matsui Laboratory, Research Center for Organic Electronics (ROEL), Yamagata University
Hiroyuki Matsui, Koki Ozawa
Email: h-matsui[at]yz.yamagata-u.ac.jp
Please replace [at] with @

Acknowledgements

This work was supported by JST, CREST, Grand Number JPMJCR18J2.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

yu_tcal-5.0.1.tar.gz (54.8 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

yu_tcal-5.0.1-py3-none-any.whl (25.6 kB view details)

Uploaded Python 3

File details

Details for the file yu_tcal-5.0.1.tar.gz.

File metadata

  • Download URL: yu_tcal-5.0.1.tar.gz
  • Upload date:
  • Size: 54.8 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.2

File hashes

Hashes for yu_tcal-5.0.1.tar.gz
Algorithm Hash digest
SHA256 16a2c635df56c287c698f350c016376b1660be8b42a591126efb896245b4dc13
MD5 4c7fd86282fdabc13faed4d3183d7d39
BLAKE2b-256 b380dd83d2f0ddc1d978228b3c3a213eda19dff222588106710eb3b3c3ea08ad

See more details on using hashes here.

File details

Details for the file yu_tcal-5.0.1-py3-none-any.whl.

File metadata

  • Download URL: yu_tcal-5.0.1-py3-none-any.whl
  • Upload date:
  • Size: 25.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.2

File hashes

Hashes for yu_tcal-5.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 451ba14bf2809a332c565a221b091c310ff80bf786a52083152ba13c0f5562dd
MD5 62baf2a13e83573be05f575f537a5cf6
BLAKE2b-256 2d5506c83b3195b73b893f1f3d2405a9929ba4affb1181482e8d08ad257e4576

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page