Ribbon

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

An object for transport calculations on a two terminal setup made of two-dimensional lattices.

Usage Examples

  • Minimal conductivity (MC) of graphene

    The minimal conductivity of a single layer graphene ribbon as a function of the aspect ratio.
  • Spectral density

    Calculates the spectral density as a function of the transverse momentum quantum number in a ballistic superconductor-graphene-superconductor junction.
  • Magnetic barrier

    Calculates the conductance as a function of the energy for a given magnetic field. The magnetic field is applied perpendicularly to the scattering region, while the magnetic field in the leads is zero.
  • Graphene Conductivity

    Energy dependent conductivity through a wide (4 micron) graphene ribbon calculated by the adatpiveQ interface.
  • Magnetic Ribbon

    Calculates the transport through a graphene ribbon in a perpendicular magnetic field.

Class references

Syntax

object = Ribbon(varargin)

Parameters
varargin Optional parameters given by a sequence ...'name', value,... . Possible parameters are the following:
  • 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.
  • 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.
  • 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.
  • width

    Integer. Gives the number of the atomic sites in the cross section of the ribbon.
  • height

    Integer. Gives the height of the ribbon in units of the lattice vector.
  • transversepotential

    A function handle $$pot=f( coordinates )$$ or $$pot=f( Lead, Energy)$$ of the transverse potential applied in the lead. (coordinates is an instance of structure coordinates, and Lead is an instance of class CreateLeadHamiltonians or its derived class. Energy is the current energy value.)

Attributes (public)

  • Surface_tmp

    An instance of "Surface_Greens_Function" object describing the unit cell of the scattering region.
  • transversepotential

    A function handle $$pot = f( coordinates )$$ or $$pot=f( Lead, Energy)$$ of the transverse potential applied in the lead. (coordinates is an instance of structure coordinates, and Lead is an instance of class CreateLeadHamiltonians or its derived class. Energy is the current energy value.).
  • width

    The width of the scattering region (number of the atomic sites in the cross section).
  • height

    The height (length) of the scattering region (number of unit cells).
  • shift

    The shift of the coordinates of the sites (two component vector).
  • rCC

    Atomic distance between the sites.

Methods (public)

Methods (protected)

Methods (private)

Ribbon::Transport

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

Syntax

[Conductivity,aspect_ratio,Conductance,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)$$ 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.
  • Smatrix

    Logcal value. Set true (default) to use the S-matrix method to calculate the conductance or false to use Eq (19) in PRB 73 085414.

Return
Conductivity The calculated conductivity ($$Conductivity = Conductance/aspect_ratio$$).
aspect_ratio The aspect_ratio of the scattering region ($$aspect_ratio = width/height$$).
Conductance The calculated conductance in the units of $$2h/e$$.
ny The number of the open channels in the leads.
DeltaC The standard deviation of the calculated transmission probabilities.
S The scattering matrix.



Ribbon::getCoordinates

Gets the coordinates of the surface 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.



Ribbon::ShiftCoordinates

Shifts the coordinates of the sites in the ribbon by an integer multiple of the lattice vector. The coordinates of the Leads are automatically adjusted later.

Syntax

object.ShiftCoordinates( shift )

Parameters
shift An integer.



Ribbon::CreateScatter

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

Syntax

object.CreateScatter()

Return
Surface_tmp An instance of "Surface_Greens_Function" object describing the unit cell of the scattering region.






Ribbon::setEnergy

Sets the energy to be used in the calculations.

Syntax

object.setEnergy( Energy )

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



Ribbon::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 operator (scatter, interface, lead).
  • UseHamiltonian

    Logical value. Set true if the interface region should be created to match to the whole Hamiltonian of the scattering center, false (default) if only the surface Green operator of the scattering center is used in the calculations.

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



Ribbon::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.



Ribbon::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( 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.



Ribbon::CreateRibbon

Creates an instance of the class Surface_Green_function describing the unit cell in the ribbon. The created interface is stored in the attribute Surface_tmp. On hexagonal lattice the cell array Surface_interface containing of instances of Surface_Green_function is also created. The members of the cell array are to be used as the interface regions between the leads and the scattering region.

Syntax

object.CreateRibbon( vavargin )

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

    Logical value. Set true to create the Hamiltonian of the unit cell without performing any further calculations.



Ribbon::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.
varargin Optional parameters given by a sequence ...'name', value,... . Possible parameter names are the following:
  • UseHamiltonian

    Logical value. Set true if the interface region should be created to match to the whole Hamiltonian of the scattering center, false (default) if only the surface Green operator of the scattering center is used in the calculations.



Ribbon::CreateClone

Creates a clone of the current object.

Syntax

object = object.CreateClone()


Return
object The created clone of the present object.



Ribbon::SyncParam

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

Syntax

object.SyncParam()




Ribbon::setFermiEnergy

Sets the Fermi energy on the atomic sites for the calculations (use the same units as the elements of the Hamiltonian).

Syntax

object.setFermiEnergy()




Ribbon::createSurface_sc

Creates the copuling Hamiltonians between the scattering and interface region.

Syntax

Surface_sc = object.createSurface_sc()


Return
Surface_sc An instance of class Surface_Green_function containing the coupling Hamiltonians.



Ribbon::createSurface_sc

Creates the copuling Hamiltonians between the scattering and interface region.

Syntax

Surface_sc = object.createSurface_sc( idx )


Parameters
idx The identification number of the interface region. (Integer value.)

Return
Surface_sc An instance of class Surface_Green_function containing the coupling Hamiltonians.



Ribbon::ApplyTransversePotential

Apply the tranvesre potential in the Hamiltonians.

Syntax

object.ApplyTransversePotential( Surface_tmp )


Return
Surface_tmp An instance of class CreateLeadHamiltonians (or its subclass) containing the Hamiltonians.



Ribbon::CreateHandles

Initializes the attributes of the class.

Syntax

object.CreateHandles()




Ribbon::calculate_lead_attach_points

Determines the lead attach points

Syntax

object.calculate_lead_attach_points()




Ribbon::createShape

Creates the geometry data of the ribbon shaped scattering region.

Syntax

object.createShape()




Ribbon::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.
  • 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.
  • width

    Integer. Gives the number of the atomic sites in the cross section of the ribbon.
  • height

    Integer. Gives the height of the ribbon in units of the lattice vector.
  • transversepotential

    A function handle $$pot=f( coordinates )$$ or $$pot=f( Lead, Energy)$$ of the transverse potential applied in the lead. (coordinates is an instance of structure coordinates, and Lead is an instance of class CreateLeadHamiltonians or its derived class. Energy is the current energy value.)