Table of Contents
Fetching ...

TBPLaS 2.0: a Tight-Binding Package for Large-scale Simulation

Yunhai Li, Zewen Wu, Miao Zhang, Junyi Wang, Shengjun Yuan

TL;DR

TBPLaS 2.0 tackles the scalability bottleneck of TBPLaS by migrating solvers and core tooling to C++, introducing GPU support, and unifying the workflow. It adds Spin texture, Berry curvature and Chern number calculations, partial diagonalization via FEAST, an Analytical Hamiltonian interface, and a two-package build system that cleanly separates Python and C++ cores. Benchmarks report speedups of severalfold to orders of magnitude across modeling tools and solvers, reduced memory usage, and robust cross-language integration. These advances improve maintainability, extensibility, and readiness for future features such as transport properties and real-space many-body methods.

Abstract

We introduce version 2.0 of TBPLaS, a package for large-scale simulation based on the tight-binding propagation method (TBPM). This new version brings significant improvements with many new features. Existing Python/Cython modeling tools have been thoroughly optimized, and a compatible C++ implementation of the modeling tools is now available, offering efficiency enhancement of several orders. The solvers have been rewritten in C++ from scratch, with the efficiency enhanced by several times or even by an order. The workflow of utilizing solvers has also been unified into a more comprehensive and consistent manner. New features include spin texture, Berry curvature and Chern number calculation, search of eigenvalues within a specific energy range, analytical Hamiltonian, and GPU computing support. The documentation and tutorials have also been updated to the new version. In this paper, we discuss the revisions with respect to version 1.3 and demonstrate the new features. Benchmarks on modeling tools and solvers are also provided.

TBPLaS 2.0: a Tight-Binding Package for Large-scale Simulation

TL;DR

TBPLaS 2.0 tackles the scalability bottleneck of TBPLaS by migrating solvers and core tooling to C++, introducing GPU support, and unifying the workflow. It adds Spin texture, Berry curvature and Chern number calculations, partial diagonalization via FEAST, an Analytical Hamiltonian interface, and a two-package build system that cleanly separates Python and C++ cores. Benchmarks report speedups of severalfold to orders of magnitude across modeling tools and solvers, reduced memory usage, and robust cross-language integration. These advances improve maintainability, extensibility, and readiness for future features such as transport properties and real-space many-body methods.

Abstract

We introduce version 2.0 of TBPLaS, a package for large-scale simulation based on the tight-binding propagation method (TBPM). This new version brings significant improvements with many new features. Existing Python/Cython modeling tools have been thoroughly optimized, and a compatible C++ implementation of the modeling tools is now available, offering efficiency enhancement of several orders. The solvers have been rewritten in C++ from scratch, with the efficiency enhanced by several times or even by an order. The workflow of utilizing solvers has also been unified into a more comprehensive and consistent manner. New features include spin texture, Berry curvature and Chern number calculation, search of eigenvalues within a specific energy range, analytical Hamiltonian, and GPU computing support. The documentation and tutorials have also been updated to the new version. In this paper, we discuss the revisions with respect to version 1.3 and demonstrate the new features. Benchmarks on modeling tools and solvers are also provided.

Paper Structure

This paper contains 37 sections, 7 equations, 6 figures, 8 tables.

Figures (6)

  • Figure 1: Examples of (a) polylithic and (b) monolithic models.
  • Figure 2: Schematic diagram of classes and functions of TBPLaS 2.0. $A\xrightarrow{ref}B$ means class A holds a pointer to an instance of class B, while comp means A is a component of B. The term impl indicates class B is an abstract interface and is implemented by class A. A C++ class can be wrapped as a Python class by adding proper methods, while a Python class can be mapped to a C++ class by sharing memory, both with the help of Cython wrappers (not shown for clarity).
  • Figure 3: Schematic diagram of the filter-modifier pattern for C++ SuperCell, SCHopping and Sample classes. The loops run over all SuperCell or SCHopping instances assigned to the sample.
  • Figure 4: Workflow of usage of TBPLaS 2.0. Procedures in yellow rectangles are applicable to both Python and C++ APIs, while those in blue rectangles must be done with the Python API. Square brackets indicate that the procedures are optional and can be skipped when using the C++ API.
  • Figure 5: Spin texture of Kane-Mele model. (a) Expectation value of $\sigma_z$ of the first band as scalar field evaluated on a $640\times640\times1$$\mathbf{k}$-grid. (b) Expectation value of $\sigma_x$ and $\sigma_y$ of the first band as vector field evaluated on a $36\times36\times1$$\mathbf{k}$-grid. (c) is similar to (b), but for states within the energy range of [-2.0, -1.9]. K, M and $\Gamma$ denote the high symmetric $\mathbf{k}$-points in the first Brillouin zone.
  • ...and 1 more figures