TwoTerminal

  Copyright (C) 2016 Peter Rakyta, Ph.D.
  This program is free software: you can redistribute it and/or modify
  it under the terms of the GNU General Public License as published by
  the Free Software Foundation, either version 3 of the License, or
  (at your option) any later version.
  This program is distributed in the hope that it will be useful,
  but WITHOUT ANY WARRANTY; without even the implied warranty of
  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  GNU General Public License for more details.
  You should have received a copy of the GNU General Public License
  along with this program.  If not, see http://www.gnu.org/licenses/.

Description

A class for transport calculations on a two terminal setup.

Available

EQuUs v4.8 or later

Class references

Syntax

object = TwoTerminal(varargin)

Parameters
varargin Optional parameters given by a sequence ...'name', value,... . Possible parameters are the following:
  • filenameIn

    The input filename containing the computational parameters. --- OBSOLETE (use optional parameters Opt and param instead)
  • filenameOut

    The output filename to export the computational parameters.
  • WorkingDir

    The absolute path to the working directoy.
  • CustomHamiltoniansHandle

    function handle for the custom Hamiltonians. For details see CustomHamiltoniansHandle
  • E

    The energy value used in the calculations (in the same units as the Hamiltonian).
  • EF

    The Fermi energy in the same units as the Hamiltonian. (overrides the one comming from the external source)
  • phi

    Two cImponent array of pair potential phases in the left (1) and right (2) superconductor.
  • silent

    if true, no output messages are print
  • leadmodel

    A function handle $$Surface_tmp=f( idx, E, varargin )$$ of the alternative lead model with equivalent inputs and return values as SurfaceGreenFunctionCalculator and with E standing for the energy.
  • interfacemodel

    A function handle $$f( InterfaceRegion )$$ to manually adjus the interface regions. (Usefull when leadmodel is also given.)
  • Opt

    An instance of the structure Opt. (Overrides data in the input file)
  • param

    An instance of the structure param. (Overrides data in the input file)
  • q

    The transverse momentum quantum number.

Attributes (protected)

  • param

    An instance of the structure param.
  • G

    The calculated Green operator of the scattering region
  • Ginv

    The inverse of the Green operator G

Attributes (public)

  • CreateH

    An instance of class CreateHamiltonians for storing and manipulate the created Hamiltonian.
  • FL_handles

    An instance of class Transport Interface for evaluating the Dyson equation.
  • Surface_interface

    An array of Surface Green Function objects to describe the interface region between the leads and the scattering region.
  • PeierlsTransform_Scatter

    An instance of class Peierls to describe the peirls substitution in the scattering region.
  • PeierlsTransform_Leads

    An instance of class Peierls to describe the peirls substitution in the leads.
  • gauge_field

    function handle $$ret=f(x,y)$$ for the scalar field to transform the vector potential in the scattering region.
  • leadmodel

    A function handle $$Surface_tmp=f( idx, E, varargin )$$ of the alternative lead model with equivalent inputs and return values as SurfaceGreenFunctionCalculator and with E standing for the energy.
  • filenameIn

    The input filename containing the computational parameters.
  • filenameOut

    The output filename to export the computational parameters.
  • WorkingDir

    The absolute path to the working directoy.
  • cCustom_Hamiltonians

    An instance of class Custom_Hamiltonians for load the Hamiltonians from external source.
  • silent

    Logical value. If true, no output messages are print
  • phi

    Two component array of pair potential phases in the left (1) and right (2) superconductor.
  • E

    The energy value used in the calculations. (in the same units as the Hamiltonian)
  • EF

    The Fermi energy (in the same units as the Hamiltonian)
  • E

    The energy value used in the calculations.
  • q

    The transverse momentum quantum number.
  • h

    Planck contant in SI units.
  • qe

    The charge of the electron in SI units

Methods (public)

Methods (protected)

Methods (private)

TwoTerminal::Transport

Calculates the transport through the two terminal setup. Use for development pupose only.

Syntax

[Conductance_matrix,ny,DeltaC,S] = object.Transport(Energy)

Parameters
Energy The energy to be used in the calculations.
varargin Optional parameters given by a sequence ...'name', value,... . Possible parameter names are the following:
  • constant_channels

    Logical value. Set true (default) to keep constant the number of the open channels in the leads for each energy value, or false otherwise.
  • gfininvfromHamiltonian

    Logical value. Set true calculate the surface Greens function of the scattering region from the Hamiltonaian of the scattering region, or false (default) to calculate it by the fast way.
  • decimateDyson

    Logical value. Set true (default) to decimate the sites of the scattering region in the Dyson equation.
  • PotInScatter

    A function handle $$pot=f( coordinates )$$ or $$pot=f( CreateH, Energy)$$ for the potential to be applied in the Hamiltonian (used when FiniteGreensFunctionFromHamiltonian=true).
  • selfEnergy

    Logical value. Set true to use the self energies of the leads in the Dyson equation, or false (default) to use the surface Green function instead.


Return
Conductance_matrix The calculated conductance matrix in the units of $$2h/e$$.
ny Array of the open channel in the leads.
DeltaC The standard deviation of the calculated transmission probabilities.
S The scattering matrix.




TwoTerminal::CalcSpectralFunction

Calculates the spectral density function and the Green operator.

Syntax

[A,G] = object.CalcSpectralFunction( Energy, varargin )

Parameters
Energy The energy value. For bound states use an energy with a small imaginary part.
varargin Optional parameters given by a sequence ...'name', value,... . Possible parameter names are the following:
  • constant_channels

    Logical value. Set true to keep constant the number of the open channels in the leads for each energy value, or false (default) otherwise.
  • gfininvfromHamiltonian

    Logical value. Set true to calculate the surface Green's function of the scattering region from the Hamiltonaian of the scattering region, or false (default) to calculate it by the fast way. (In the general TwoTerminal setup these are identical ways.)
  • decimateDyson

    Logical value. Set true (default) to decimate the sites of the scattering region in the Dyson equation.
  • PotInScatter

    A function handle of the potential in the scattering region (used when FiniteGreensFunctionFromHamiltonian=true).
  • selfEnergy

    Logical value. Set true to use the self energies of the leads in the Dyson equation, or false (default) to use the surface Green function instead.


Return
A The spectral density function.
G The calculated Greens function.




TwoTerminal::getCoordinates

Gets the coordinates of the sites in the scattering reigon.

Syntax

[coordinates, coordinates_interface] = object.getCoordinates( shift )

Return
coordinates An instance of the structure coordinates containing the coordinates of the scattering center.
coordinates_interface A list of two structures coordinates containing the coordinates of the surface sites of the interface regions between the leads and the scattering center.




TwoTerminal::CreateScatter

Creates an instance of the class CreateHamiltonians for the scattering region. The created object is stored by th attribute CreateH.

Syntax

object.CreateScatter()




TwoTerminal::setEnergy

Sets the energy to be used in the calculations.

Syntax

object.setEnergy( Energy )

Parameters
Energy The value of the energy in the same units as the Hamiltonian.




TwoTerminal::CustomDysonFunc

Custom Dyson function for connecting the leads to the scattering region in the general two terminal setup.

Syntax

[Gret, Ginverz] = object.CustomDysonFunc( varargin )

Parameters
varargin Optional parameters given by a sequence ...'name', value,... . Possible parameter names are the following:
  • gfininv

    The inverse of the Greens function of the scattering region. For default the inverse of the attribute G is used.
  • constant_channels

    Logical value. Set true (default) to keep constant the number of the open channels in the leads for each energy value, or false otherwise.
  • onlyGinverz

    Logical value. Set true to calculate only the inverse of the total Green operator, or false (default) to calculate G as well.
  • recalculateSurface

    A vector of the identification numbers of the lead surfaces to be recalculated.
  • decimate

    Logical value. Set true (default) to eliminate all inner sites in the Greens function and keep only the surface sites that directly connect to the leads. Set false to omit the decimation procedure.
  • kulso_szabfokok

    Array of sites to be kept after the decimation procedure.
  • SelfEnergy

    Logical value. Set true for using the self-energy construction in the Dyson equation, or false to use the surface Greens functions instead.
  • keep_sites

    Name of sites to be kept in the resulted Green function (scatter, interface, lead).


Return
Gret The calculated Greens function.
Ginverz The inverse of the Green operator.




TwoTerminal::DecimationFunction

Performs the decimation procedure on the inverse Green operator.

Syntax

ret = object.DecimationFunction( kulso_szabfokok, ginv, varargin )

Parameters
kulso-szabfokok The vector of the sites to be kept after the decimation.
ginv The matrix of the inverse Green operator to be decimated.
varargin Optional parameters given by a sequence ...'name', value,... . Possible parameter names are the following:
  • coordinates

    An instance of the structure coordinates containing the coordinates of the sites.


Return
ret The matrix of the decimated inverse Greens operator.




TwoTerminal::GetFiniteGreensFunction

Query for the attributes G and Ginv.

Syntax

[G, Ginv] = object.GetFiniteGreensFunction()


Return
G The attribute G.
Ginv The attribute Ginv.




TwoTerminal::CalcFiniteGreensFunction

Calculates the surface Green operator of the scattering center. The calculated Green operator is stored in the G attribute.

Syntax

object.CalcFiniteGreensFunction( varargin )

Parameters
varargin Optional parameters given by a sequence ...'name', value,... . Possible parameter names are the following:
  • gauge_trans

    Logical value. Set true to perform gauge transformation on the Green operator and on the Hamiltonians.
  • onlyGinv

    Logical value. Set true to calculate only the inverse of the surface Greens function Ginv, or false (default) to calculate G as well. In the latter case the attribute Ginv is set to empty at the end.




TwoTerminal::CalcFiniteGreensFunctionFromHamiltonian

Calculates the surface Greens function of the scattering region from the whole Hamiltonian. Useful for calculations with transverse momentum, and for systems where the unit cells are not translational invariant. The calculated Green operator is stored in the G attribute.

Syntax

object.CalcFiniteGreensFunctionFromHamiltonian( varargin )

Parameters
varargin Optional parameters given by a sequence ...'name', value,... . Possible parameter names are the following:
  • gauge_trans

    Logical value. Set true to perform gauge transformation on the Green's function and on the Hamiltonians.
  • onlyGinv

    Logical value. Set true to calculate only the inverse of the surface Greens function Ginv, or false (default) to calculate G as well. In the latter case the attribute Ginv is set to empty at the end.
  • PotInScatter

    A function handle $$pot=f( coordinates )$$ or $$pot=f( coordinates, param)$$ for the potential to be applied in the Hamiltonian. Does not need to be translational invariant along the unit cells of the scattering center.




TwoTerminal::setInterfaceRegions

Replaces the attribute Surface_interface with the given value.

Syntax

object.setInterfaceRegions( Surface_interface )

Parameters
Surface_interface A two component array of classes Surface_Green_function to be used as interface regions between the leads and scattering region.




TwoTerminal::CreateInterface

Creates an instance of class Surface_Green_function describing an interface region between a given lead and the scattering region. The created interface is stored within the attribute Surface_interface.

Syntax

object.CreateInterface( idx )

Parameters
idx The identification number of the lead.




TwoTerminal::setHandlesForMagneticField

Sets the function handles of the vector potentials and gauge fields for applying the magnetic field in the Hamiltonians.

Syntax

object.setHandlesForMagneticField( varargin )

Parameters
varargin Optional parameters given by a sequence ...'name', value,... . Possible parameter names are the following:
  • scatter

    Function handle of the vector potential to be used in the scattering region.
  • lead

    Function handle of the vector potential to be used in the leads.
  • gauge_field

    Function handle of the gauge transformation.




TwoTerminal::SyncParam

Synchronizes the param structrure with the parameter values of the basic interfaces.

Syntax

object.SyncParam()




TwoTerminal::setParam

Synchronizes the param structrure with the included basic interfaces.

Syntax

object = object.setParam( param )


Parameters
param An instance of structure param.


Return
object The created clone of the present object.




TwoTerminal::CreateClone

Creates a clone of the current object.

Syntax

object = object.CreateClone()


Return
object The created clone of the present object.




TwoTerminal::ApplyPotentialInScatter

Applies the potential in the scattering region

Syntax

object.ApplyPotentialInScatter( CreateH, potInScatter )


Parameters
CreateH An instance of class CreateHamiltonians containing the Hamiltonian of the scattering center.
potInScatter A function handle $$pot=f( coordinates )$$ or $$pot=f( CreateH, Energy)$$ for the potential to be applied in the Hamiltonian. Does not need to be translational invariant along the unit cells of the scattering center.




TwoTerminal::CreateHandles

Initializes the attributes of the class.

Syntax

object.CreateHandles()




TwoTerminal::setParameters

Sets some special computing parameters.

Syntax

object.setParameters()




TwoTerminal::CreateTwoTerminalHamiltonians

Loads the Hamiltonians from the appropriate DFT interface or from files.

Syntax

object.CreateTwoTerminalHamiltonians()




TwoTerminal::InputParsing

Description

Parses the optional parameters for the class constructor.

Syntax

object.InputParsing(varargin)

Parameters
varargin Optional parameters given by a sequence ...'name', value,... . Possible parameters are:
  • filenameIn

    The input filename containing the computational parameters.
  • filenameOut

    The output filename to export the computational parameters.
  • WorkingDir

    The absolute path to the working directoy.
  • CustomHamiltoniansHandle

    function handle for the custom Hamiltonians. For details see CustomHamiltoniansHandle
  • E

    The energy value used in the calculations (in the same units as the Hamiltonian).
  • EF

    The Fermi energy in the same units as the Hamiltonian. (overrides the one comming from the external source)
  • phi

    Two cImponent array of pair potential phases in the left (1) and right (2) superconductor.
  • silent

    if true, no output messages are print
  • leadmodel

    A function handle $$Surface_tmp=f( idx, E, varargin )$$ of the alternative lead model with equivalent inputs and return values as SurfaceGreenFunctionCalculator and with E standing for the energy.
  • interfacemodel

    A function handle $$f( InterfaceRegion )$$ to manually adjus the interface regions. (Usefull when leadmodel is also given.)
  • Opt

    An instance of the structure Opt. (Overrides data in the input file)
  • param

    An instance of the structure param. (Overrides data in the input file)
  • q

    The transverse momentum quantum number.