nonEquilibriumGreensFunction ============================ This project calculates quantum-level transport dynamics of a fully three-dimensional model Topolgoical Insulator (expandable and customizable to other materials in the Build_Hamiltonian file) channel in the Non-Equilibrium Green's Function Formalism. The code includes the capability to insert magnetic (both via Zeeman splitting and via a quantum phase brought about by the electromagnetic vector potential) and nonmagnetic disorder. The code uses MPI to determine observables in a massively parallelized fashion, and uses a recursive Greens function routine to invert the block tridiagonal Hamiltonian at O(Npx*(Npy*Npz)^3) speed rather than O((Npx*Npy*Npz)^3). The Math Kernel Library (MKL) is necessary to run this code. The Makefile and example shell submission wrappers are included in the ./Implement folder. Fortran90 source code is located in the ./Source folder. A simple Matlab script to read in and analyze the data output by the Dump_Data routine is located in the ./Analyze folder. ============================== ./Implement Folder contains: ============================== Multiple_Run.sh: This file sets up the inidividual runs that are submitted to the cluster using the Sun Grid Engine. Input parameters are set in this file Single_Run.sh: This file sets up the grid engine environment for each simulation, and is called by Multiple_Run.sh. The parameters for the SGE environment are set in this file Makefile: Example makefile that must be customized for a given compiler to link correctly to MKL and MPI libraries. ============================== ./Source Folder contains: ============================== NEGF_Main.F90: Main program that calls all other subroutines in the formalism Read_In_Allocate.F90: Reads in command line parameters and allocates and prepares the necessary arrays SIP_{Main,Functions,Routines,Solver}.F90: Calculates the electrostatic profile brought about by the electron and hole concentrations via a Poisson Solver Build_Hamiltonian.F90: Builds the real-space Hamiltonian for a customizable channel. Energy_Sweep.F90: Each slave process calculates the Green's function response for a given energy, returning the results, which are all integrated over energy, to the master node. Contact_Self_Energy.F90: Sets up the self-energy terms for the customiable contacts. Subroutine includes iterative (Sancho Rubio and Recursive Inversion) procedures to calculate the surface Green's function for semi-infinite contacts. Get_Retarded_Greens.F90: Calculates the necessary blocks of the inverted matrix G = (invG)^-1 = ((E+i\eta)I-H-\Sigma)^-1. Only certain components of G are calculated, as only a sparse section of it is necessary for calculation of the observables in a nearest-neighbor tight-binding model. Calculate_Gnp.F90: Calculates the electron- and hole-correlated Green's functions (Gn and Gp) from the Retarded Green's function. Calculate_Observables.F90: Uses Gn and Gp to calculate transport observables - transmission, density profiles, spin expectation values. Dump_Data.F90: Outputs all observables to a series of files that can then be analyzed with Matlab routines, an example of which is located in the ./Analyze folder. MKL_Routines_{PC,Cluster}.F90: Math Kernel Library routines called by other subroutines. PC is used when running on a local, single-process machine for debugging purposes. ============================ ./Analyze Folder contains: ============================ NEGF_ReadData.m: Reads in data output by the Dump_Data.F90 subroutine, and plots a few example observables like transmission and spatially-resolved current density. =============================== This source code was used for the following publications: S. Cho, B. Dellabetta et al., "The Aharonov-Bohm Effect in a 3D Topological Insulator Nanowire", in preparation (2014) Abstract at <http://meetings.aps.org/Meeting/MAR14/Session/T43.1> S. Cho, B. Dellabetta et al., "Symmetry Protected Josephson Supercurrents in Three-Dimensional Topological Insulators" Nature Communications 4, 1689 (2013) B. Dellabetta et al., "Imaging Topologically Protected Transport with Quantum Degenerate Gases" Phys. Rev. B 85, 205442 (2012)
brian-dellabetta/nonEquilibriumGreensFunction
Calculates transport dynamics of a customizable channel and contact configuration in the Non-Equilibrium Green's Function Formalism
FORTRAN