Surface_Green_function
Copyright (C) 2009-2015 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
Returns an interface providing methods to calculate the
- Greens function of an infinite ribbon.
- the surface Greens function of a semi-infinite ribbon.
- the surface Greens function of a finite piece of the lead.
- the surface Greens function of a complex structure generated from infinite ribbon using the Dyson equation.
Syntax
interface = Surface_Green_function(Opt, param, varargin)
Parameters |
Opt
|
Structure containing the computational parameters. The fields of the structure are:
BdG Set 1 for Bogoliubov de Gennes Hamiltonian, 0 otherwise.
my_own_potential Set 0 to load the magnetic field from B_input.mat, or 1 to load the vector potential from Vector_Potetntial.mat (Obsolete).
Linear_Regression_in_B Set 1 if the vector potential varies linearly as a function of the coordinates, 0 otherwise.
Lattice_Type set 'H' for hexagonal lattice, 'S' for square lattice, 'Silicene' for silicene lattice.
|
param
|
Structure containing the physical parameters of the ribbon. The required fields are specified here.
|
varargin
|
Optional parameters given by a sequence ...'name', value,... . Possible parameters are:
Lead_Orientation orientation of the lead. Set +1 is the "incoming" direction of the propagating states is defined in the +x or +y direction, and "-1" otherwise.
Hanyadik_Lead The id number of the current lead.
Way2Hamiltonian Obsolete parameter
usingDualModes set 1 to use dual model for the calculations, or 0 otherwise.
Lead_End_Type set 'A' for zigzag edged ribbon, or 'Z' for ribbon with armchair type edges.
Atom_Type The type of the first site at the (1,1) position of the H_0 Hamiltonian (values are 'A' or 'B')
|
Attributes
usingDualModes if True the dual modes are used to calculate Greens function, if false, left and rigth-side modes are used..
Lead_Orientation The orientation of the lead. Set +1 is the "incoming" direction of the propagating states is defined in the +x or +y direction, and "-1" otherwise.
Hanyadik_Lead The id number of the current lead.
Way2Hamiltonian Obsolete.
GinfSzamolo Function handle to calculate the infinite Greens function.
Lead_End_Type 'A' for zigzag edged ribbon, or 'Z' for ribbon with armchair type edges.
Atom_Type The type of the first site at the (1,1) position of the H_0 Hamiltonian (values are 'A' or 'B').
M The number of the sites in the cross section.
params An instance of the structure lead_param
retarted true for calculating the retarded Greens function, or false for the .
kulso_szabfokok List of sites in the unit cell that should be kept after decimation.
coordinates An instance of the structure coordinates.
H0 The Hamiltonian of a unit cell.
H1 The coupling Hamiltonian between the unit cells.
H1adj The coupling Hamiltonian between the unit cells in the opposite direction as H1. (For complex energies they differ from each other.)
H00 An auxiliary matrix used in the decimation procedure. [H00,H1;H1adj,H0] is being decimated.
fazis_mtx_H0 The matrix of the Peierls phases in the unit cell.
fazis_mtx_H1 The matrix of the Peierls phases in the coupling matrix between the unit cells.
modusmtx The unsorted right-sided eigenstates.
modusmtx_left The unsorted left-sided eigenstates.
k The unsorted wave numbers.
csoportseb The unsorted group velocities.
k_p The wave numbers of the eigenstates, that propagates or decays in the positive direction.
k_m The wave numbers of the eigenstates, that propagates or decays in the negative direction.
vcsop_p The group velocities of the eigenstates, that propagates or decays in the positive direction.
vcsop_m The group velocities of the eigenstates, that propagates or decays in the negative direction.
modusmtx_p The right sided wave functions of the eigenstates, that propagates or decays in the positive direction.
modusmtx_p_left The left-sided wave numbers of the eigenstates, that propagates or decays in the positive direction.
d_modusmtx_p The dual basis of the right-sided wave functions of the eigenstates, that propagates or decays in the positive direction.
modusmtx_m The right-sided wave functions of the eigenstates, that propagates or decays in the negative direction.
modusmtx_m_left The left-sided wave functions of the eigenstates, that propagates or decays in the negative direction.
d_modusmtx_m The dual basis of the right-sided wave functions of the eigenstates, that propagates or decays in the positive direction.
Normamtx The normalization matrix in the Greens function.
invNormamtx The inverse of the normalization matrix.
gsurf The matrix of the surface Greens function of the semi-infinite ribbon.
gsurfinv The inverse of the Greens function.
ginf The matrix of the Greens function of the infinite ribbon.
gfin The matrix of the surface Greens function of a finite ribbon.
Opt An instance of the structure Opt
param An instance of the structure param
Methods
Surface_Green_function::InfGreenFunction
Description
Calculates the Greens function of the infinite lead between slabs z1 and z2. The calculated Greens function is stored within the current interface.
Syntax
ret = interface.InfGreenFunction(z1,z2, varargin)
Parameters |
z1
|
The ordinal number of the first slab.
|
z2
|
The ordinal number 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 interface.)
|
Surface_Green_function::FiniteGreenFunction
Description
Calculates the Greens function of a finite piece of the lead between slabs z1 and z2. The calculated Greens function is stored within the current interface.
Syntax
ret = interface.FiniteGreenFunction(z1,z2)
Parameters |
z1
|
The ordinal number of the first slab.
|
z2
|
The ordinal number of the second slab.
|
Return |
ret
|
A matrix of the calculated Greens function. (The Greens function is also stored within the current interface.)
|
Surface_Green_function::SurfaceGreenFunction
Description
Calculates the surface Greens function of a semi-infinite lead. The calculated Greens function is stored by the current interface.
Syntax
interface.SurfaceGreenFunction()
Surface_Green_function::Group_Velocit
Description
Calculates the group velocities corresponding to the propagating states. The calculated group velocities are stored within the interface.
Syntax
interface.Group_Velocity(varargin)
Parameters |
varargin
|
Optional parameters given by a sequence ...'name', value,... . Possible parameters are:
WithOverlap set 1 for calculations including the overlap integrals. By default the overlap integrals are omitted in the calculations.
|
Surface_Green_function::TrickyEigenvalues
Description
Calculates the wave numbers corresponding to the propagating states at a given energy. The calculated wave numbers are stored by within the interface.
Syntax
interface.TrickyEigenvalues(E)
Parameters |
E
|
the energy to be used in the calculations.
|
Surface_Green_function::CreateHamiltoniansForLead
Description
Creates the Hamiltonians H_0 and H_1 of the lead. The created Hamiltonians are stored within the interface.
Syntax
interface.CreateHamiltoniansForLead( varargin)
Parameters |
varargin
|
Optional parameters given by a sequence ...'name', value,... . Possible parameters are:
toSave set 1 in order to save the created Hamiltonians into a file 'Hamiltoni_Lead_' + num2str(Hanyadik_Lead) + '.mat'.
|
Surface_Green_function::CalcSpektrum
Description
Calculates the band structure of the lead.
Syntax
spectrum = interface.CalcSpektrum( varargin )
Parameters |
varargin
|
Optional parameters given by a sequence ...'name', value,... . Possible parameters are:
toPlot set 1 in order to plot the calculated spectrum, 0 (default) otherwise
ka_min is the lower bound of the wave numbers.
ka_max is the upper bound of the wave numbers.
ka_num is the number of wave number points involved in the calculations.
center the calculated energy eigenvalues are centered around this value.
db the number of the calculated eigenvalues.
|
Return |
spectrum
|
A matrix containing the calculated spectrum with the wave numbers in the first and with the energy eigenvalues in the second column.
|
Surface_Green_function::saveLeads
Description
Save Lead Hamiltonians into a file 'Hamiltoni_Lead_' + num2str(Hanyadik_Lead) + '.mat'.
Syntax
interface.saveLeads()
Surface_Green_function::ShiftCoordinates
Shifts the coordinates of the sites by an integer multiple of the lattice vector.
Syntax
interface.ShiftCoordinates( shift )
Parameters |
shift
|
An integer to multiply the lattice vector in order to shift the coordinates.
|
Surface_Green_function::SurfaceGreen_simple
Description
Calculates the surface Greens function of a semi-infinite lead by an analytical formula valid for square lattice without magnetic field. The calculated Greens function is stored by the current interface.
Syntax
interface.SurfaceGreen_simple( E )
Parameters |
E
|
The energy to be used in the calculations.
|
Surface_Green_function::ShiftLead
Description
Shifts the on-site energies in the leads by a given energy.
Syntax
interface.SurfaceGreen_simple( E )
Parameters |
Energy
|
The energy to be used in the calculations.
|
Surface_Green_function::AddPotential
Description
Adds on-site potential to the Hamiltonian H-0.
Syntax
interface.AddPotential( V )
Parameters |
V
|
A vector containing the on-site potentials to be added to H_0. Must be of the same length as the diagonal of H_0.
|
Surface_Green_function::isSuperconducting
Description
Test, whether the lead is in the superconducting phase or not.
Syntax
ret = interface.isSuperconducting()
Return |
ret
|
true if the lead is in the superconducting phase, 0 otherwise.
|
Surface_Green_function::CreateClone
Description
Creates a clone of the present Surface_Green_function interface.
Syntax
Surface_tmp = interface.CreateClone()
Surface_Green_function::Reset
Description
Resets all elements in the interface.
Syntax
interface.Reset()
Surface_Green_function::MemberWrite
Sets the value of an element in the interface.
Syntax
interface.MemberWrite(MemberName, input)
Parameters |
MemberName
|
The name of the element.
|
input
|
The value to be set.
|
Surface_Green_function::MemberRead
Description
Reads the value of an element in the interface.
Syntax
ret = interface.MemberRead(MemberName)
Parameters |
MemberName
|
The name of the element.
|
Return |
ret
|
The value of the element.
|
Surface_Green_function::MemberClear
Description
Clears the value of an element in the interface.
Syntax
interface.MemberClear(MemberName)
Parameters |
MemberName
|
The name of the element.
|
|