Introduction
============

TBPLaS (Tight-Binding Package for Large-scale Simulation) is a package for building and solving
tight-binding models, with emphasis on handling large systems. TBPLaS implements exact
diagonalization-based methods, the tight-binding propagation method (TBPM), kernel polynomial
method (KPM), and Green's function method. Sparse matrices, Cython/C/C++ extensions and hybrid
OpenMP+MPI parallelization are utilized for optimal performance on modern computers. The main
features of TBPLaS include:


* Capabilities
    * Modeling
        * Models with arbitrary dimension, shape and boundary conditions
        * Model replicating, reshaping, merging and splitting
        * Clusters, nano-tubes, slabs and crystals
        * Defects, impurities and disorders
        * Hetero-structures, quasi-crystals, fractals
        * Built-in support for Slater-Koster formulation and spin-orbital coupling
        * Shipped with materials database (Graphene, phosphorene, antimonene, TMDC)
        * Interfaces to Wannier90, LAMMPS, DeepH-pack and DeePTB
        * Tools for fitting on-site energies and hopping integrals
        * Support for analytical Hamiltonian
    * Fields and strains
        * Homogeneous magnetic field via Peierls substitution
        * User-defined electric field
        * Arbitrary deformation with strain and stress
    * Exact-diagonalization
        * Band structure, density of states (DOS), wave functions
        * Berry curvature, phase and topological invariants
        * Spin texture
        * Polarizability, dielectric function, optical (AC) conductivity
        * Full diagonalization and selective diagonalization within specific energy range
        * Non-orthogonal basis set
    * Tight-binding propagation method (TBPM)
        * DOS, LDOS and carrier density
        * Optical (AC) conductivity and absorption spectrum
        * Electronic (DC) conductivity and time-dependent diffusion coefficient
        * Carrier velocity, mobility, elastic mean free path, Anderson localization length 
        * Polarization function, response function, dielectric function, energy loss function
        * Plasmon dispersion, plasmon lifetime and damping rate
        * Quasi-eigenstate and real-space charge density
        * Propagation of time-dependent wave function
    * Kernel polynomial method
        * Electronic (DC) and Hall Conductivity  
    * Recursive Green's function method
        * Local density of states (LDOS)
* Efficiency
    * Compatible Python/C++ modeling tools
    * C++ core for performance-critical parts
    * Hybrid parallelism based on MPI and OpenMP
    * GPU computation based on CUDA
    * Sparse matrices for reducing memory cost
    * Lazy-evaluation technique to reduce unnecessary operations
    * Interface to Netlib LAPACK, OpenBLAS, AMD AOCL and Intel MKL
* User friendliness
    * Intuitive object-oriented user APIs in both Python and C++
    * Simple workflow with a lot of handy tools
    * Transparent code architecture with detailed documentation
* Security
    * Detailed checking on input arguments with precise error message
    * Top-down and bottom-up techniques for keeping data consistency
.. End features

Installation
------------

See *INSTALL.rst* for the installation guides.

Tutorials
---------

Some examples demonstrating the features of TBPLaS can be found under *examples* directory.
More detailed tutorials can be found in the online documentation.

Documentation
-------------

The documentation is available online at `<http://www.tbplas.net>`_.

Citation
--------

See *CITING.rst* for more details.

License
-------

TBPLaS is released under the BSD license. See *LICENSE.rst* for more details.
