EigenProblemLead
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/.
Class to solve the eigenproblem of a translational invariant leads and calculate the group velocities.
EQuUs v4.8 or later
object = EigenProblemLead(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 SVDregularizationLead |
- true for calculating the retarded Green function, or false for the advanced Green function.
- The unsorted right-sided eigenstates.
- The unsorted left-sided eigenstates.
- The unsorted wave numbers in form exp(1i*k).
- The unsorted group velocities.
- The wave numbers of the eigenstates, that propagates or decays in the positive direction.
- The wave numbers of the eigenstates in form exp(1i*k), that propagates or decays in the negative direction.
- The group velocities of the eigenstates in form exp(1i*k), that propagates or decays in the positive direction.
- The group velocities of the eigenstates, that propagates or decays in the negative direction.
- The right sided wave functions of the eigenstates, that propagates or decays in the positive direction.
- The left-sided wave numbers of the eigenstates, that propagates or decays in the positive direction.
- The dual basis of the right-sided wave functions of the eigenstates, that propagates or decays in the positive direction.
- The right-sided wave functions of the eigenstates, that propagates or decays in the negative direction.
- The left-sided wave functions of the eigenstates, that propagates or decays in the negative direction.
- The dual basis of the right-sided wave functions of the eigenstates, that propagates or decays in the positive direction.
- A real number corresponding to the tolerance used to sort the left and right moving (decaying) modes.
- A structure open_channels containing info on the open channels.
- Logical matrix containing the degenerate k subspaces.
- Determine_Open_Channels
- szetvalaszto
- Group_Velocity
- TrukkosSajatertekek
- CreateClone
- Unitary_Transform
- CreateClone
- Reset
- Write
- Read
- Clear
EigenProblemLead::Determine_Open_Channels
Determine the open channels in the lead. The data are stored within the attribute open_channels.
ret = object.Determine_Open_Channels()
Return | |
---|---|
ret | An instance of structure open_channels containing info on the open channels. |
EigenProblemLead::szetvalaszto
Sorts the left and right propagating (decaying) modes.
ret = object.szetvalaszto(tolerance)
Parameters | |
---|---|
tolerance | The tolerance to be used during the sort. |
EigenProblemLead::Group_Velocity
Calculates the group velocities corresponding to the propagating states. The calculated group velocities are stored within the object.
object.Group_Velocity()
EigenProblemLead::TrukkosSajatertekek
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.
object.TrukkosSajatertekek( E )
Parameters | |
---|---|
E | The energy value used in the calculations. |
EigenProblemLead::CreateClone
Creates a clone of the current object.
Surface_tmp = object.CreateClone(varargin)
Parameters | |
---|---|
varargin |
Optional parameters given by a sequence ...'name', value,... . Possible parameters are:
|
Return | |
---|---|
ret | An instance of interface EigenProblemLead. |
EigenProblemLead::Reset
Resets all attributes in the object.
object.Reset()
EigenProblemLead::Write
Sets the value of an attribute in the object.
object.Write(MemberName, input)
Parameters | |
---|---|
MemberName | The name of the attribute to be set. |
input | The value to be set. |
EigenProblemLead::Read
Query for the value of an attribute in the object.
ret = object.Read(MemberName)
Parameters | |
---|---|
MemberName | The name of the attribute. |
Return | |
---|---|
ret | The value of the attribute. |
EigenProblemLead::Clear
Clears the value of an attribute in the object.
object.Clear(MemberName)
Parameters | |
---|---|
MemberName | The name of the attribute. |
EigenProblemLead::GinfCalcWithDualModes
Calculates the Green function of the infinite ribbon with dual modes.
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. |
EigenProblemLead::GinfCalcWithLeftModes
CCalculates the Green function of the infinite ribbon with with the left-sided modes
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. |
EigenProblemLead::SelfEnergyCalcWithDualModes
Calculates the self energy with dual modes according to Eqs (17) and (36) in PRB 78 035407
ret = object.SelfEnergyCalcWithDualModes()
Return | |
---|---|
ret | Returns with the calculated self energy. |
EigenProblemLead::SelfEnergyCalcWithLeftModes
Calculates the self energy with the left-sided modes according to Eqs (20), (17) and (36) in PRB 78 035407
ret = object.SelfEnergyCalcWithLeftModes()
Return | |
---|---|
ret | Returns with the calculated self energy. |
EigenProblemLead::GsurfSzamoloWithDualModes
Calculates the surface Green function with dual modes. The calculated Green function is stored by the current object.
object.GsurfSzamoloWithDualModes()
EigenProblemLead::GsurfSzamoloWithLeftModes
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.
object.GsurfSzamoloWithLeftModes()
EigenProblemLead::NormamtxSzamoloWithDualModes
Calculates the normalization matrix to calculate the Green function using the dual modes. The calculated normalization matrix is stored by the current object.
object.NormamtxSzamoloWithDualModes()
EigenProblemLead::NormamtxSzamoloWithLeftModes
Calculates the normalization matrix to calculate the Green function using the left-sided modes. The calculated normalization matrix is stored by the current object.
object.NormamtxSzamoloWithLeftModes()
EigenProblemLead::Unitary_Transform
Transforms the effective Hamiltonians by a unitary transformation.
object.Unitary_Transform( Umtx )
Parameters | |
---|---|
Umtx | The unitary matrix to be used in the transformations. |
EigenProblemLead::AddPotential
Adds on-site potential to the Hamiltonian H0.
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. |
EigenProblemLead::calcDualModes
Calculates the dual modes. The dual modes is stored by the current object.
object.calcDualModes()
EigenProblemLead::CalcDualModesEigenvec
Calculates the dual modes by inverting the right-sided eigenvectors. The dual modes is stored by the current object.
ret = object.CalcDualModesEigenvec( modusmtx )
Parameters | |
---|---|
modusmtx | The right-sided eigenvectors. |
Return | |
---|---|
ret | Returns with the calculated dual modes. |
EigenProblemLead::CalcDualModesEigenvec
Calculates the dual modes by inverting the right-sided eigenvectors. The dual modes is stored by the current object.
ret = object.CalcDualModesEigenvec( modusmtx_left )
Parameters | |
---|---|
modusmtx_left | The right-sided eigenvectors. |
vcsop | The group velocities. |
Return | |
---|---|
ret | Returns with the calculated dual modes. |
EigenProblemLead::Determine_Degenerate_k_subspaces
Determine the degenerate k subspaces for which the current operator needs to be diagonalized.
object.Determine_Degenerate_k_subspaces()
EigenProblemLead::NormalizeModes
Normalizes the wave functions with the overlap integrals (Eq (9) in PRB 78 035407
object.NormalizeModes()
EigenProblemLead::Initialize
Initializes object properties.
object.Initialize()
- Log in to post comments