IV

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

A class to calculate the I-V curve for a two terminal setup, based on the non-equilibrium Greens function technique Eur. Phys. J. B 53, 537-549 (2006)

Usage Examples

Class references

Syntax

interface = IV( varargin )

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

    The absolute temperature in Kelvins.
  • mu_left

    The chemical potential in the left lead.
  • mu_right

    The chemical potential in the right lead.
  • scatterPotential

    A function handle $$y=f( coordinates )$$ of the potential across the junction in case gfininvfromHamiltonian is true.
  • TwoTerminal

    An instance of an object TwoTerminalRibbon or it's subclass.
  • gfininvfromHamiltonian

    Set true to calculte the Green's function of the scattering region from the Hamiltonian, or false (default) to use the fast method instead (see PRB 93, 224510 (2016) for details).
  • useSelfEenrgy

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

Attributes

  • mu_left

    The chemical potential in the left lead.
  • mu_right

    The chemical potential in the right lead.
  • cTwoTerminal

    An instance of class TwoTerminal or it's subclass.
  • useSelfEenrgy

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

    A function handle $$y=f( coordinates)$$ of the potential in the junction in case gfininvfromHamiltonian is true.
  • ContactPotInterface

    A function handle $$y=f( coordinates)$$ of the contact potential in the interface regions.
  • gfininvfromHamiltonian

    Set true for calculate the Green's function of the scattering region from Hamiltonian, or false (default) to use the Dyson Equation (see RB 93, 224510 (2016) for details).

Methods (public)

Methods (protected)

Methods (private)

IV::IVcalc

Calculates the current-voltage relation as a function of the bias.

Syntax

[current, bias, DifferentialConductance_vec] = object.IVcalc( varargin )

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

    The number of the energy points over the contour integral.
  • tuned_contact

    String value. Identifies the tuned contact for the calculations. Possible values are: right, left, symmetric.


Return
current The calculated current in units of $$e^2U_0/\hbar$$. (with $$U_0$$ standing for the maximal bias in units of eV.)
bias The applied bias in units of eV.
DifferentialConductance_vec The differential conductance.




IV::currentcalc

Calculates the current by integrating the differential conductance in a bias window.

Syntax

current = object.currentcalc( differentialConductance, Evec, tuned_contact )

Parameters
differentialConductance Array of differential conductances.
Evec An array of energy values.
tuned_contact String value. Identifies the tuned contact for the calculations. Possible values are: right, left, symmetric.


Return
current An array of the calculated current corresponding to the bias window defined by Evec.




IV::create_scatter_GreensFunction

Calculates the surface Green operator of the scattering region.

Syntax

object.create_scatter_GreensFunction( varargin )

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

    Logical value. Set true to calculate the Greens function only at the ends of the scattering region, or false (default) to calculate the Greens function in several inner slabs as well.
  • gauge_trans

    Logical value. Set true (default) to perform gauge transformation on the Green's function and on the Hamiltonians, or false otherwise.
  • ribbon

    An instance of the interface TwoTerminal or it's subclass storing the Hamiltonians for the Dyson's equation. (Needed for parallel computations.)




IV::setEnergy

Sets the energy to be used in the calculations.

Syntax

object.setEnergy( newE, varargin )

Parameters
newE The value of the energy in the same units as the Hamiltonian.
varargin Optional parameters given by a sequence ...'name', value,... . Possible parameter names are the following:
  • ribbon

    An instance of the interface TwoTerminal or it's subclass storing the Hamiltonians for the Dyson's equation. (Needed for parallel computations.)




IV::DifferentialConductanceT0

Calculates the zero temperature differential conductance for a given energy.

Syntax

ret = object.DifferentialConductanceT0( Energy, cTwoTerminal_loc )

Parameters
Energy The value of the energy in the same units as the Hamiltonian.
cTwoTerminal_loc An instance of class TwoTerminal or it's subclass storing the Hamiltonians and responsible for evaluating the Dyson equation.


Returns
ret The calculated differential conductance




IV::CreateEnergyArray

Creates the array of energy values for the integration.

Syntax

Evec = object.CreateEnergyArray( varargin )

Parameters
Energy The value of the energy in the same units as the Hamiltonian.
varargin Optional parameters given by a sequence ...'name', value,... . Possible parameter names are the following:
  • Edb

    The number of the energy points over the contour integral.
  • tuned_contact

    String value. Identifies the tuned contact for the calculations. Possible values are: right, left, symmetric.


Returns
Evec The energy points used in the intagration.




IV::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:
  • T

    The absolute temperature in Kelvins.
  • mu_left

    The chemical potential in the left lead.
  • mu_right

    The chemical potential in the right lead.
  • scatterPotential

    A function handle $$y=f( coordinates )$$ of the potential across the junction in case gfininvfromHamiltonian is true.
  • TwoTerminal

    An instance of an object TwoTerminalRibbon or it's subclass.
  • gfininvfromHamiltonian

    Set true to calculte the Green's function of the scattering region from the Hamiltonian, or false (default) to use the fast method instead (see PRB 93, 224510 (2016) for details).
  • useSelfEenrgy

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