Inelastica is both the name of this whole Python package as well as that of an included script to compute inelastic transport characteristics. Inelastica is based on the SIESTA/TranSIESTA DFT codes.
The project was initiated around 2003-2005 by Thomas Frederiksen and Magnus Paulsson while they worked in the group of Mads Brandbyge at the Technical University of Denmark.
Inelastica contains a number of scripts such as
geom2geom
: Geometry conversion between different file formatsBandstructures
: Computation of electron and phonon band structurespyTBT
: A Python version of tbtrans for elastic electron transportEigenChannels
: Eigenchannel analysis and generation of real-space scattering state wave functionsPhonons
: Vibration modes/frequencies and electron-vibration couplingsInelastica
: Inelastic transport characteristics (IETS spectroscopy, inelastic shot noise, local heating, etc.)STM
: Calculation of STM images using the Bardeen approximation
As alternative to the command line interface (CLI), it is also possible to interact with Inelastica via scripting, e.g.,
from Inelastica import EigenChannels, Phonons, iets
# Eigenchannels
options = EigenChannels.GetOptions('ECrun') # get default options
options.energy = 0.50 # overwrite the default value
options.fn = 'TSrun/RUN.fdf'
ecrun = EigenChannels.main(options) # Compute EigenChannels
left_states = ecrun.ECleft
teig = ecrun.EigTleft[:options.numchan].real
# Phonons and EPC couplings
options = Phonons.GetOptions('-F 5 -L 10 PHrun')
options.DynamicAtoms = [6, 9] # non-consecutive atoms
options.EPHAtoms = options.DynamicAtoms
options.CalcCoupl = True
phrun = Phonons.main(options) # Compute Phonons
hw = phrun.hw
normal_modes = phrun.UU.real
# IETS simulation
options = iets.GetOptions('--LOEscale 0 INrun')
options.DeviceFirst = 5
options.DeviceLast = 10
options.PhononNetCDF = 'PHrun/Output.nc'
options.fn = 'TSrun/RUN.fdf'
# Compute IETS with Inelastica
V, I, dI, ddI, BdI, BddI = iets.main(options)
IETS = BddI / BdI
Before installation of Inelastica the following packages are required
- numpy >= 1.8
- scipy
- netCDF4
Manual installation of Inelastica is performed with the command
python setup.py install --prefix=<prefix>
# or
python setup.py install --home=<my-python-home>
One may also wish to set the following environment variables
export PYTHONPATH=<my-python-home>/lib/python/
export PATH=$PATH:<my-python-home>/bin/
For the required compilation of Inelastica
's Fortran modules (f2py
) one may also need
sudo apt install libblas-dev liblapack-dev python-dev gfortran
If used to produce scientific contributions please include relevant citations to
@Article{general-methods,
Title = {Inelastic transport theory from first principles: Methodology and application to nanoscale devices},
Author = {Frederiksen, T. and Paulsson, M. and Brandbyge, M. and Jauho, A.-P.},
Journal = {Phys. Rev. B},
Year = {2007},
Number = {20},
Pages = {205413},
Volume= {75},
Doi = {10.1103/PhysRevB.75.205413},
}
@Article{eigenchannels,
Title = {Transmission eigenchannels from nonequilibrium Green's functions},
Author = {Paulsson, M. and Brandbyge, M.},
Journal = {Phys. Rev. B},
Year = {2007},
Number = {11},
Pages = {115117},
Volume = {76},
Doi = {10.1103/PhysRevB.76.115117},
}
@Article{stm,
Title = {Scanning tunneling microscopy current from localized basis orbital density functional theory},
Author = {Gustafsson, A. and Paulsson, M.},
Journal = {Phys. Rev. B},
Year = {2016},
Pages = {115434},
Volume = {93},
Doi = {10.1103/PhysRevB.93.115434},
}
@Article{noise,
Title = {Inelastic shot noise characteristics of nanoscale junctions from first principles},
Author = {Avriller, R. and Frederiksen, T.},
Journal = {Phys. Rev. B},
Year = {2012},
Pages = {155411},
Volume = {86},
Doi = {10.1103/PhysRevB.86.155411},
}
Some documentation may be found here.
Contributions are highly appreciated.
If you find any bugs please form a bug report/issue
If you have a fix please consider adding a pull request.
The Inelastica license is LGPL, please see the LICENSE file.