All Projects → dean0x7d → Pybinding

dean0x7d / Pybinding

Licence: bsd-2-clause
Scientific Python package for tight-binding calculations in solid state physics

Projects that are alternatives of or similar to Pybinding

Pwrake
Parallel Workflow extension for Rake, runs on multicores, clusters, clouds.
Stars: ✭ 57 (-53.66%)
Mutual labels:  scientific-computing
Scidart
Multiplatform scientific computing for Dart
Stars: ✭ 73 (-40.65%)
Mutual labels:  scientific-computing
Gdl
GDL - GNU Data Language
Stars: ✭ 104 (-15.45%)
Mutual labels:  scientific-computing
Coretran
An easy to follow library to make Fortran easier in general with wrapped interfaces, sorting routines, kD-Trees, and other algorithms to handle scientific data and concepts. The library contains core fortran routines and object-oriented classes.
Stars: ✭ 59 (-52.03%)
Mutual labels:  scientific-computing
P4pdes
C and Python examples from my book on using PETSc to solve PDEs
Stars: ✭ 67 (-45.53%)
Mutual labels:  scientific-computing
Jigsaw
JIGSAW is a Delaunay-based unstructured mesh generator for two- and three-dimensional geometries.
Stars: ✭ 83 (-32.52%)
Mutual labels:  scientific-computing
Tiledb
The Universal Storage Engine
Stars: ✭ 1,072 (+771.54%)
Mutual labels:  scientific-computing
Freud
Powerful, efficient particle trajectory analysis in scientific Python.
Stars: ✭ 118 (-4.07%)
Mutual labels:  scientific-computing
Aicsimageio
Delayed Parallel Image Reading for Microscopy Images in Python
Stars: ✭ 68 (-44.72%)
Mutual labels:  scientific-computing
Regionmask
plotting and creation of masks of spatial regions
Stars: ✭ 97 (-21.14%)
Mutual labels:  scientific-computing
Pycuda
CUDA integration for Python, plus shiny features
Stars: ✭ 1,112 (+804.07%)
Mutual labels:  scientific-computing
Spirit
Atomistic Spin Simulation Framework
Stars: ✭ 67 (-45.53%)
Mutual labels:  scientific-computing
Cytoflow
A Python toolbox for quantitative, reproducible flow cytometry analysis
Stars: ✭ 90 (-26.83%)
Mutual labels:  scientific-computing
Scipy
SciPy library main repository
Stars: ✭ 8,942 (+7169.92%)
Mutual labels:  scientific-computing
Partia Computing Michaelmas
Activities and exercises for the Part IA computing course in Michaelmas Term
Stars: ✭ 104 (-15.45%)
Mutual labels:  scientific-computing
Julia.jl
Curated decibans of Julia programming language.
Stars: ✭ 1,083 (+780.49%)
Mutual labels:  scientific-computing
Pylbm
Numerical simulations using flexible Lattice Boltzmann solvers
Stars: ✭ 83 (-32.52%)
Mutual labels:  scientific-computing
Openmole
Workflow engine for exploration of simulation models using high throughput computing
Stars: ✭ 120 (-2.44%)
Mutual labels:  scientific-computing
Adcme.jl
Automatic Differentiation Library for Computational and Mathematical Engineering
Stars: ✭ 106 (-13.82%)
Mutual labels:  scientific-computing
Boinc
Open-source software for volunteer computing and grid computing.
Stars: ✭ 1,320 (+973.17%)
Mutual labels:  scientific-computing
pybinding

DOI License Gitter Documentation Status Travis Build Status AppVeyor Build status

Pybinding is a Python package for numerical tight-binding calculations in solid state physics. The main features include:

  • Declarative model construction - The user just needs to describe what the model should be, but not how to build it. Pybinding will take care of the numerical details of building the Hamiltonian matrix so users can concentrate on the physics, i.e. the quantum properties of the model.

  • Fast compute - Pybinding's implementation of the kernel polynomial method allows for very fast calculation of various physical properties of tight-binding systems. Exact diagonalization is also available through the use of scipy's eigenvalue solvers. The framework is very flexible and allows the addition of user-defined computation routines.

  • Result analysis and visualization - The package contains utility functions for post-processing the raw result data. The included plotting functions are tailored for tight-binding problems to help visualize the model structure and to make sense of the results.

The code interface is written in Python with the aim to be as user-friendly and flexible as possible. Under the hood, C++11 is used to accelerate demanding tasks to deliver high performance with low memory usage.

See the documentation for more details.

Install

Pybinding can be installed on Windows, Linux or Mac, with the following prerequisites:

  • Python 3.6 or newer (Python 2.x is not supported)
  • The SciPy stack of scientific packages, with required versions:
    • numpy >= v1.12
    • scipy >= v0.19
    • matplotlib >= v2.0
  • If you're using Linux, you'll also need GCC >= v5.0 (or clang >= v3.5) and CMake >= v3.1.

Detailed install instructions are part of the documentation, but if you already have all the prerequisites, it's just a simple case of using pip, Python's usual package manager:

pip install pybinding

Features

The goal of the project is to develop a tight-binding code framework which is fast, flexible and easy to use. This is just a quick overview of some of the features. See the documentation for more details and a guide to get started.

  • Construction of arbitrary tight-binding lattices and geometries: 1 to 3 dimensions (including multilayer 2D systems), periodic or finite size (with fine control of edges)
  • Easy polygon shape definition for 2D systems and freeform shapes for n-dimensional systems
  • Geometric deformations and defects: defined via displacement and state functions
  • Fields and arbitrary effects: defined via hopping and onsite energy functions
  • Kernel polynomial method: a fast way to compute Green's function, spectral densities of arbitrary operators, electrical conductivity, or various other user-defined KPM methods
  • Exact diagonalization: standard dense and sparse eigenvalues solvers (always available) and the FEAST solver (only available when compiled with Intel's MKL)
  • Transport: scattering systems with semi-infinite leads can be constructed in pybinding and then solved using the Kwant compatibility layer
  • Model and result objects have builtin plotting functions for easy visualization

Benchmarks

One of the main features of pybinding is an easy-to-use and fast model builder. This can be a demanding task for large or complicated systems. Great care was taken to make this process fast.

The following figures compare the performance of pybinding with the Kwant package. They present the time and memory required to build a Hamiltonian matrix which describes a tight-binding system. Pybinding features good performance and a low memory footprint by using contiguous data structures and vectorized operations.

Tight-binding model build benchmark

See the benchmarks section of the documentation for details on the testbed hardware and software, as well as the source code which can be used to reproduce the results.

Citing

Pybinding is free to use under the simple conditions of the BSD open source license. If you wish to use results produced with this package in a scientific publication, please just mention the package name in the text and cite the Zenodo DOI of this project:

DOI

You'll find a "Cite as" section in the bottom right of the Zenodo page. You can select a citation style from the dropdown menu or export the data in BibTeX and similar formats.

Questions?

If you have any questions, feel free to join the chat room on Gitter. You can also open an issue at the tracker.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].