Lead

  Copyright (C) 2009-2017 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

Class providing methods to calculate the retarded, advanced, lesser and greater

  • Green operator of an infinite ribbon.
  • surface Greens operator of a semi-infinite ribbon.
  • surface Greens operator of a finite piece of the lead.
  • and the self-energy of the semi-infinite ribbon.

Class references

Syntax

object = Lead(Opt, param, varargin)

Parameters
Opt An instance of the structure Opt.
param An instance of structure param containing the physical parameters.
varargin Optional parameters given by a sequence ...'name', value,... . Possible parameters are identical to the optional parameters of class EigenProblemLead

Attributes

  • SelfEnergyCalc

    Function handle to calculate the self energy.
  • GinfCalc

    Function handle to calculate the infinite Greens function.
  • Normamtx

    The normalization matrix in the Greens function.
  • invNormamtx

    The inverse of the normalization matrix.
  • gsurf

    The matrix of the surface Green function of the semi-infinite ribbon.
  • gsurfinv

    The inverse of the surface Green function.
  • ginf

    The matrix of the Green function of the infinite ribbon.
  • gfin

    The matrix of the surface Green function of a finite ribbon.
  • gfininv

    The inverse of the surface Green function of a finite ribbon.
  • Sigma

    The self-energy of the semi-infinite ribbon.

Methods (public)

Methods (protected)

Lead::InfGreenFunction

Description

Calculates the Greens function of the infinite lead between slabs z1 and z2. The calculated Greens function is stored within the current object.

Syntax

ret = object.InfGreenFunction(z1,z2, varargin)

Parameters
z1 The index of the first slab.
z2 The index of the second slab.
varargin Optional parameters given by a sequence ...'name', value,... . Possible parameters are:
  • z1points

    list of sites in the slab z1 to include in the calculations. By default each site in the given slab is included.
  • z2points

    list of sites in the slab z2 to include in the calculations. By default each site in the given slab is included.


Return
ret A matrix of the calculated Greens function. (The Greens function is also stored within the current object.)




Lead::Gamma

Description

Calculates the effective coupling of the lead to the scattering region according to Eq (3) in Eur. Phys. J. B 53, 537-549 (2006).

Syntax

ret = object.Gamma(z1,z2, varargin)


Return
ret The matrix of the effective coupling.




Lead::SelfEnergy

Description

Calculates the self energy of the semi-infinite lead according to Eq (36) of Ref PRB 78, 035407 (2008). The calculated self energy is stored within the current object.

Syntax

ret = object.SelfEnergy()


Return
ret Returns with the calculated self energy.




Lead::FiniteGreenFunction

Description

Calculates the Green function of a finite piece of the lead between slabs z1 and z2. The calculated Greens function is stored by the current object.

Syntax

ret = object.FiniteGreenFunction(z1,z2, varargin)

Parameters
z1 The index of the first slab.
z2 The index of the second slab.
varargin Optional parameters given by a sequence ...'name', value,... . Possible parameters are:
  • onlygfininv

    If true, only the inverse of the Green function is calculated.


Return
ret A matrix of the calculated Green function. (The Green function is also stored within the current object.)




Lead::SurfaceGreenFunction

Description

Calculates the surface Green function of a semi-infinite lead. The calculated Green function is stored by the current object.

Syntax

object.SurfaceGreenFunction(varargin)

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

    If true, only the inverse of the Green function is calculated.
  • CalcInverse

    If true, the inverse of the Green function is also calculated.




Lead::NormamtxSzamolo

Description

The normalization matrix to calculate the Green function. The calculated normalization matrix is stored by the current object.

Syntax

object.NormamtxSzamolo()




Lead::TrukkosSajatertekek

Description

Calculates the wave numbers corresponding to the propagating states at given energy. The calculated wave numbers are stored within the object. The normalization matrix is set to empty.

Syntax

object.TrukkosSajatertekek( E )

Parameters
E The energy value used in the calculations.




Lead::ShiftLead

Description

Shifts the on-site energies in the leads by a given energy. The normalization matrix is set to empty.

Syntax

object.ShiftLead( E )

Parameters
Energy The energy value.




Lead::AddPotential

Description

Adds on-site potential to the Hamiltonian H0. The normalization matrix is set to empty.

Syntax

object.AddPotential( V )

Parameters
V A vector containing the on-site potentials to be added to H0. Must be of the same length as the diagonal of H0.




Lead::Unitary_Transform

Description

Transforms the effective Hamiltonians and the calculated surface Green operator and selfenergy by a unitary transformation

Syntax

object.Unitary_Transform( Umtx )

Parameters
Umtx The unitary matrix to be used in the transformations.




Lead::CreateClone

Description

Creates a clone of the current object.

Syntax

ret = object.CreateClone()

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

    Logical value. Set true to create a clone without copying the attributes.

  • Return
    ret An instance of interface Surface_Green_function.




    Lead::Reset

    Description

    Resets all attributes in the object.

    Syntax

    object.Reset()




    Lead::Write

    Description

    Sets the value of an attribute in the object.

    Syntax

    object.Write(MemberName, input)

    Parameters
    MemberName The name of the attribute to be set.
    input The value to be set.




    Lead::Read

    Description

    Query for the value of an attribute in the object.

    Syntax

    ret = object.Read(MemberName)

    Parameters
    MemberName The name of the attribute.


    Return
    ret The value of the attribute.




    Lead::Clear

    Description

    Clears the value of an attribute in the object.

    Syntax

    object.Clear(MemberName)

    Parameters
    MemberName The name of the attribute.




    Lead::GinfCalcWithDualModes

    Description

    Calculates the Green function of the infinite ribbon with dual modes.

    Syntax

    ret = object.GinfCalcWithDualModes(z1,z2, z1points, z2points)

    Parameters
    z1 The index of the first slab.
    z2 The index of the second slab.
    z1points Site indexes in the slab at z1.
    z2points Site indexes in the slab at z2.


    Return
    ret A matrix of the calculated Greens function.




    Lead::GinfCalcWithLeftModes

    Description

    CCalculates the Green function of the infinite ribbon with with the left-sided modes

    Syntax

    ret = object.GinfCalcWithLeftModes(z1,z2, z1points, z2points)

    Parameters
    z1 The index of the first slab.
    z2 The index of the second slab.
    z1points Site indexes in the slab at z1.
    z2points Site indexes in the slab at z2.


    Return
    ret A matrix of the calculated Greens function.




    Lead::SelfEnergyCalcWithDualModes

    Description

    Calculates the self energy with dual modes according to Eqs (17) and (36) in PRB 78 035407

    Syntax

    ret = object.SelfEnergyCalcWithDualModes()


    Return
    ret Returns with the calculated self energy.




    Lead::SelfEnergyCalcWithLeftModes

    Description

    Calculates the self energy with the left-sided modes according to Eqs (20), (17) and (36) in PRB 78 035407

    Syntax

    ret = object.SelfEnergyCalcWithLeftModes()


    Return
    ret Returns with the calculated self energy.




    Lead::GsurfSzamoloWithDualModes

    Description

    Calculates the surface Green function with dual modes. The calculated Green function is stored by the current object.

    Syntax

    object.GsurfSzamoloWithDualModes()




    Lead::GsurfSzamoloWithLeftModes

    Description

    Calculates the surface Green function with the left-sided modes according to Eq (33) in PRB 78, 035407 (2008). The calculated Green function is stored by the current object.

    Syntax

    object.GsurfSzamoloWithLeftModes()




    Lead::NormamtxSzamoloWithDualModes

    Description

    Calculates the normalization matrix to calculate the Green function using the dual modes. The calculated normalization matrix is stored by the current object.

    Syntax

    object.NormamtxSzamoloWithDualModes()




    Lead::NormamtxSzamoloWithLeftModes

    Description

    Calculates the normalization matrix to calculate the Green function using the left-sided modes. The calculated normalization matrix is stored by the current object.

    Syntax

    object.NormamtxSzamoloWithLeftModes()




    Lead::calcDualModes

    Description

    Calculates the dual modes. The dual modes is stored by the current object.

    Syntax

    object.calcDualModes()




    Lead::CalcDualModesEigenvec

    Description

    Calculates the dual modes by inverting the right-sided eigenvectors. The dual modes is stored by the current object.

    Syntax

    ret = object.CalcDualModesEigenvec( modusmtx )


    Parameters
    modusmtx The right-sided eigenvectors.


    Return
    ret Returns with the calculated dual modes.




    Lead::CalcDualModesEigenvecWithLeftModes

    Description

    Calculates the dual modes using the left-sided eigenvectors. The dual modes is stored by the current object.

    Syntax

    ret = object.CalcDualModesEigenvecWithLeftModes( modusmtx_left, vcsop )


    Parameters
    modusmtx_left The right-sided eigenvectors.
    vcsop The group velocities.


    Return
    ret Returns with the calculated dual modes.




    Lead::Initialize

    Description

    Initializes object attributes.

    Syntax

    ret = object.Initialize( modusmtx_left, vcsop )