Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.


Topics - zhangguangping

Pages: 1 [2] 3
16
Dear all,

I searched all the forum of how to do the opimization of a magnetic tunneling junction. For the magnetic electrodes, there are usually two configurations to considered: (1) parallel configuration--P; (2)antiparallel configuration (AP).

So, as I guess, one should do the geometric optimization for P and AP configuration, respectively.

At the same time, the electronic convergence of a magnetic tunneling junction usually harder than a non-magnetic one.

Therefore, is there a feasible way to solve this? Or how does one usually do for this?

With best regards,

Guangping

17
Dear all,

I now use MolecularEnergySpectrum class to do MPSH anaylsis in two probe system.

The system is a benchmark model that contains a C6H4S2 molecule. And the projection of MPSH analysis is to the bare molecule, that is, C6H4S2 (strictly speaking, it is not a molecule but a benzenethiolate). According to the manual http://www.quantumwise.com/documents/manuals/latest/ReferenceManual/index.html/chap.atomicdata.html#sect1.atomicdata.periodictable, there are 40 electrons (4*6+1*4+6*2=40) for this projection part. So, I would expect the HOMO orbital would has an index of 19 since ATK count from 0, and LUMO 20. But the MolecularEnergySpectrum reports that there are 42 electrons in the projection region.

Please refer to the attached input file for more details if possible. The output for molecular eigenstates are as follows.

Code
+----------------------------------------------------------+
+------------------------------------------------------------------------------+
| Molecular Energy Spectrum Report                                             |
| ---------------------------------------------------------------------------- |
| Fermi level = -2.163589e+00                                                  |
| Number of electrons = 42.000000                                              |
| Unit = eV                                                                    |
| Eigenenergies given relative to the Fermi Level                              |
+------------------------------------------------------------------------------+

    0  -1.799324e+01   2.000000e+00
    1  -1.650674e+01   2.000000e+00
    2  -1.487298e+01   2.000000e+00
    3  -1.480179e+01   2.000000e+00
    4  -1.295187e+01   2.000000e+00
    5  -1.146399e+01   2.000000e+00
    6  -1.065004e+01   2.000000e+00
    7  -9.021545e+00   2.000000e+00
    8  -7.843826e+00   2.000000e+00
    9  -7.693816e+00   2.000000e+00
   10  -6.878082e+00   2.000000e+00
   11  -6.599574e+00   2.000000e+00
   12  -5.959106e+00   2.000000e+00
   13  -5.247004e+00   2.000000e+00
   14  -4.881207e+00   2.000000e+00
   15  -4.745161e+00   2.000000e+00
   16  -3.415383e+00   2.000000e+00
   17  -3.410642e+00   2.000000e+00
   18  -3.266553e+00   2.000000e+00
   19  -2.651504e+00   2.000000e+00
   20  -1.869709e+00   2.000000e+00
   21   2.357217e+00   5.029450e-40
   22   2.567025e+00   1.502792e-43
   23   2.927772e+00   7.440152e-44
 ....
 ....

So, what is wrong?

With my best regards,

Guangping

18
Dear all,

I have learning on how to restart/resore or even do the post analysis based on a converged *.nc file in ATK-2015.1.

I found here the tutorial very useful for the psot analysis based on a converged *.nc file
http://www.quantumwise.com/publications/tutorials/item/504-computing-quantities-from-converged-calculations

The trick to use a converged *.nc file doing a post analysis with out any futher SCFs is to use nlread, eg., the following is to do a total energy calculation based on the already converged Au-C6H4S2-Au.nc file.

Code
# -------------------------------------------------------------
# Analysis from File
# -------------------------------------------------------------
configuration = nlread('Au-C6H4S2-Au.nc', object_id='gID000')[0]

# -------------------------------------------------------------
# Total Energy
# -------------------------------------------------------------
total_energy = TotalEnergy(configuration)
nlsave('analysis.nc', total_energy)
nlprint(total_energy)

Code
Next, check that the Object id corresponds to the self-consistent calculation you want to base the analysis on. If your calculation was a "standard run", then most likely the default gID001 is the one you want. However, if you did a geometry optimization, gID000 corresponds to the initial geometry, and the optimized geometry will be gID001. You can inspect the contents of the NetCDF file, and the object ids, in the Result Browser in the main VNL job.

Note: nlread() can in principle read many objects at once from a NetCDF file. Object ids must however be unique, so by using the object_id keyword, you are guaranteed to get only one object back. However, nlread() always returns a list of objects, even if there is only one match, so we need the [0] to pick out the first/only configuration matching the object_id.

However, I think there maybe something worth to emphasize. That is,
Code
configuration = nlread('Au-C6H4S2-Au.nc', object_id='gID000')[0]
we should specify the object_id properly and may not be the gID000 one. It depends on your number of nlsave used in the job generating this *.nc file and also the quantities you want to base for the post analysis, usually the object_id contains the converged electron density not others would be expected to used for the post analysis.

The number of object_id in the *.nc file depends on the nlsave used in the job generating this *.nc. So, usually and most probably the first object_id that is gID000 is not the one contains the converged electron density.

For example, the following *.py input file contains 6 nlsave sentances and the second object_id that is gID001 is what we need to do the total energy post analysis.
Code
# -------------------------------------------------------------
# Two-probe Configuration
# -------------------------------------------------------------

# -------------------------------------------------------------
# Left Electrode
# -------------------------------------------------------------

# Set up lattice
vector_a = [8.65127, 0.0, 0.0]*Angstrom
vector_b = [-4.32564, 7.49222, 0.0]*Angstrom
vector_c = [0.0, 0.0, 7.06373620597]*Angstrom
left_electrode_lattice = UnitCell(vector_a, vector_b, vector_c)

# Define elements
left_electrode_elements = [...
                              ...
                              ...]

# Define coordinates
left_electrode_coordinates = [...
                              ...
                              ...]*Angstrom

# Set up configuration
left_electrode = BulkConfiguration(
    bravais_lattice=left_electrode_lattice,
    elements=left_electrode_elements,
    cartesian_coordinates=left_electrode_coordinates
    )

# -------------------------------------------------------------
# Right Electrode
# -------------------------------------------------------------

# Set up lattice
vector_a = [8.65127, 0.0, 0.0]*Angstrom
vector_b = [-4.32564, 7.49222, 0.0]*Angstrom
vector_c = [0.0, 0.0, 7.06373620597]*Angstrom
right_electrode_lattice = UnitCell(vector_a, vector_b, vector_c)

# Define elements
right_electrode_elements = [...
                              ...
                              ...]

# Define coordinates
right_electrode_coordinates = [...
                              ...
                              ...]*Angstrom

# Set up configuration
right_electrode = BulkConfiguration(
    bravais_lattice=right_electrode_lattice,
    elements=right_electrode_elements,
    cartesian_coordinates=right_electrode_coordinates
    )

# -------------------------------------------------------------
# Central Region
# -------------------------------------------------------------

# Set up lattice
vector_a = [8.65127, 0.0, 0.0]*Angstrom
vector_b = [-4.32564, 7.49222, 0.0]*Angstrom
vector_c = [0.0, 0.0, 26.1041296975]*Angstrom
central_region_lattice = UnitCell(vector_a, vector_b, vector_c)

# Define elements
central_region_elements = [...
                              ...
                              ...]

# Define coordinates
central_region_coordinates = [...
                              ...
                              ...]

# Set up configuration
central_region = BulkConfiguration(
    bravais_lattice=central_region_lattice,
    elements=central_region_elements,
    cartesian_coordinates=central_region_coordinates
    )

device_configuration = DeviceConfiguration(
    central_region,
    [left_electrode, right_electrode]
    )
nlsave('Au-C6H4S2-Au.nc', device_configuration)     # the 1st one  gID000
nlprint(device_configuration)

# -------------------------------------------------------------
# Calculator
# -------------------------------------------------------------
#----------------------------------------
# Basis Set
#----------------------------------------
basis_set = [
    GGABasis.Hydrogen_DoubleZetaPolarized(element=Hydrogen,filter_mesh_cutoff=200*Rydberg),
    GGABasis.Carbon_DoubleZetaPolarized(element=Carbon,filter_mesh_cutoff=200*Rydberg),
    GGABasis.Sulfur_DoubleZetaPolarized(element=Sulfur,filter_mesh_cutoff=200*Rydberg),
    GGABasis.Gold_SingleZetaPolarized(element=Gold,filter_mesh_cutoff=200*Rydberg),
    ]

#----------------------------------------
# Exchange-Correlation
#----------------------------------------
exchange_correlation = GGA.PBE

#----------------------------------------
# Numerical Accuracy Settings
#----------------------------------------
left_electrode_numerical_accuracy_parameters = NumericalAccuracyParameters(
    k_point_sampling=(6, 6, 20),
    density_mesh_cutoff=200.0*Rydberg,
    )

right_electrode_numerical_accuracy_parameters = NumericalAccuracyParameters(
    k_point_sampling=(6, 6, 20),
    density_mesh_cutoff=200.0*Rydberg,
    )

device_numerical_accuracy_parameters = NumericalAccuracyParameters(
    k_point_sampling=(6, 6, 20),
    density_mesh_cutoff=200.0*Rydberg,
    )

#----------------------------------------
# Iteration Control Settings
#----------------------------------------
left_electrode_iteration_control_parameters = IterationControlParameters(
    max_steps=500,
    )

right_electrode_iteration_control_parameters = IterationControlParameters(
    max_steps=500,
    )

device_iteration_control_parameters = IterationControlParameters(
    max_steps=500,
    )

#----------------------------------------
# Poisson Solver Settings
#----------------------------------------
left_electrode_poisson_solver = FastFourier2DSolver(
    boundary_conditions=[[PeriodicBoundaryCondition,PeriodicBoundaryCondition],
                         [PeriodicBoundaryCondition,PeriodicBoundaryCondition],
                         [PeriodicBoundaryCondition,PeriodicBoundaryCondition]]
    )

right_electrode_poisson_solver = FastFourier2DSolver(
    boundary_conditions=[[PeriodicBoundaryCondition,PeriodicBoundaryCondition],
                         [PeriodicBoundaryCondition,PeriodicBoundaryCondition],
                         [PeriodicBoundaryCondition,PeriodicBoundaryCondition]]
    )

#----------------------------------------
# Contour Integral Settings
#----------------------------------------
contour_parameters = DoubleContourIntegralParameters(
    integral_lower_bound=50.0*eV,
    )

#----------------------------------------
# Electrode Calculators
#----------------------------------------
left_electrode_calculator = LCAOCalculator(
    basis_set=basis_set,
    exchange_correlation=exchange_correlation,
    numerical_accuracy_parameters=left_electrode_numerical_accuracy_parameters,
    iteration_control_parameters=left_electrode_iteration_control_parameters,
    poisson_solver=left_electrode_poisson_solver,
    )

right_electrode_calculator = LCAOCalculator(
    basis_set=basis_set,
    exchange_correlation=exchange_correlation,
    numerical_accuracy_parameters=right_electrode_numerical_accuracy_parameters,
    iteration_control_parameters=right_electrode_iteration_control_parameters,
    poisson_solver=right_electrode_poisson_solver,
    )

#----------------------------------------
# Device Calculator
#----------------------------------------
calculator = DeviceLCAOCalculator(
    basis_set=basis_set,
    exchange_correlation=exchange_correlation,
    numerical_accuracy_parameters=device_numerical_accuracy_parameters,
    iteration_control_parameters=device_iteration_control_parameters,
    contour_parameters=contour_parameters,
    electrode_calculators=
        [left_electrode_calculator, right_electrode_calculator],
    )

device_configuration.setCalculator(calculator)
nlprint(device_configuration)
device_configuration.update()
nlsave('Au-C6H4S2-Au.nc', device_configuration)    # the 2nd one  gID001
nlprint( )

# -------------------------------------------------------------
# Transmission Spectrum
# -------------------------------------------------------------
transmission_spectrum = TransmissionSpectrum(
    configuration=device_configuration,
    energies=numpy.linspace(-2,2,400)*eV,
    kpoints=MonkhorstPackGrid(6,6),
    energy_zero_parameter=AverageFermiLevel,
    infinitesimal=1.36057e-05*eV,
    self_energy_calculator=RecursionSelfEnergy(),
    )
nlsave('Au-C6H4S2-Au.nc', transmission_spectrum)    # the 3rd one gID002
nlprint(transmission_spectrum)

# -------------------------------------------------------------
# Molecular Energy Spectrum
# -------------------------------------------------------------
molecular_energy_spectrum = MolecularEnergySpectrum(
    configuration=device_configuration,
    energy_zero_parameter=FermiLevel,
    projection_list=ProjectionList(elements=[Carbon, Hydrogen, Sulfur])
    )
nlsave('Au-C6H4S2-Au.nc', molecular_energy_spectrum)   # the 4th one gID003
nlprint(molecular_energy_spectrum)

# -------------------------------------------------------------
# Eigenstate
# -------------------------------------------------------------
eigenstate = Eigenstate(
    configuration=device_configuration,
    projection_list=ProjectionList(elements=[Carbon, Hydrogen, Sulfur]),
    quantum_number=19,
    )
nlsave('Au-C6H4S2-Au.nc', eigenstate)                             # the 5th one   gID004
nlprint( )

# -------------------------------------------------------------
# Eigenstate
# -------------------------------------------------------------
eigenstate = Eigenstate(
    configuration=device_configuration,
    projection_list=ProjectionList(elements=[Carbon, Hydrogen, Sulfur]),
    quantum_number=20,
    )
nlsave('Au-C6H4S2-Au.nc', eigenstate)                            # the 6th one   gID005
nlprint( )

The first object_id, i.e., gID000 only contain only the configuration (lattice vectors and atom positions) of the two probe system.
The converged electron density is stored in the second object_id, i.e., gID001.
So, the post analysis input file should read
Code
# -------------------------------------------------------------
# Analysis from File
# -------------------------------------------------------------
configuration = nlread('Au-C6H4S2-Au.nc', object_id='gID001')[0]

# -------------------------------------------------------------
# Total Energy
# -------------------------------------------------------------
total_energy = TotalEnergy(configuration)
nlsave('analysis.nc', total_energy)
nlprint(total_energy)

19
Dear all,

I have now learning about the geometric opimzation for a two probe systems. I learn from this tutorial http://docs.quantumwise.com/tutorials/device_relaxation.html .

As the tutorial metioned there are two ways to optimize the gometries for two probe systems: BRR method and 1D minimization.

Let me simplify the process of the optimization, we suppose that the geometry of the electrodes are in their equilibrium condition so that we do not need to optimize the geometries for the electrode. All we should do is to optimize the geometry stuctures of the electrode surfaces and the adsorbed molecule between in the two electrodes.

As I understand, in BRR method, we use a two-slab system to do the optimization, and usually electrode extensions and the screening layers are included to account the interaction between the screening layers and the molecule, the electrode extensions here give a bulk electrode environment for the screening layers. Also, the C lattice vector should be large enough to aviod the interaction of the left electrode with the image of the right electrode when using periodic boundary condition. In this term, the whole system can be optimzed in the C direction as well as the A, B directions. During the optimization, we can make a fully opimizaiton for the molecule and the surface screening layers while make the electrode extensions frozen (one electrode fixed and the other a rigid box that move ridgid in the optimization, which can partially optimize the distance between the two electrode extensions). In this way, we can partially optimze the geometry structure of the core region of the two probe system. However, the final "optimized" geometry would not necessarily the energy lowest configure, but usually colse to that. The optimzation stop when each freedom in the optimzation meets the force criteria, not using the total energy of the target. The method can be effective, and this is what I have always used in the SIESTA code.

Meanwhile, the tutorial metioned another opimization method, the so called 1D minimization.

Code
A somewhat more brute-force approach is to explicitly minimize the device total energy wrt. internal coordinates and the central region length, i.e., do the full 2-probe calculations and vary the central region length. This is a 1D minimization problem with relaxation of the atomic positions at each step, so we shall refer to this method as 1DMIN.

As I understand, the 1DMIN method will do a optimization of the two probe system using an energy minization with respect to the internal coordinates and the central region length. In this case, the distance between the two electrode (or lattice vector C) are sampled for some values around the one given as the inital. For each electrode distance( or lattice vector C), the centrol region will be fully opimized with the electrode extensions fixed. One can get the energy lowest configure (also the  intermediate optimized configuration) for this electrode distance, and record its energy with respect to this electrode distance. Do this opimization for all the sampled electrode distance, we can plot the energy of the system wit respect to the electrode distance. Then we can  extrapolate the optimal electrode distance (lattice vector C). At last, we do the gometry optimzation under the optimal electrode distance, and get the optimzed geometry for the two probe system. This can be called a globle optimization.

Is my understanding right, please correct it if there is any misundertanding?

Yet, I have qestions about the 1DMIN method. What is the total energy for?  Is it for the total two-probe system: Left electrode+Central region+Righ electrode? During this optimzation, both the electrodes and electrode extensions will be moved rigid along with the optimzaiton of the C lattice vector?
Can the atoms in the screening layers and molecule suffer constrains set by the user? In this case, it is not a full optimization, the user can set some constrains to the core region of the system, eg. user can fix the anchor atoms of the molecule to the hollow sites of the surface and can set the outmost of the screening layers to move rigid together with the electrode extensions, etc?

With best regards,

Guangping

20
Dear all,

I now have been learning using the BoxRegion in ATK, which can used to simulate the gate voltage etc. However, I find the region box only can be defined to a rectangle one by specify the
Code
xmin, xmax,
ymin, ymax,
zmin, zmax

Since the lattice vector of the electrode usually not orthogonal in xy plane, such as

Code
vector_a = [8.65127, 0.0, 0.0]*Angstrom
vector_b = [-4.32564, 7.49222, 0.0]*Angstrom
vector_c = [0.0, 0.0, 7.06373620597]*Angstrom

 so a rectangle box usually does not match the unit cell in the xy plane.

Is there a method that like vector specfication to define the RegionBox which could easily solve this problem.

With best regards,

Guangping Zhang

21
Dear QW supporters,

As I know, it is possible for users to use their own norm conserving pseduopotentials in the calcualtions. And I searched this forum, and find the following way can be used to defined the users' pseduopotentials,

Code
basis_set = [
    GGABasis.Hydrogen_DoubleZetaPolarized(element=Hydrogen,filter_mesh_cutoff=200*Rydberg,
                                            pseudopotential = NormConservingPseudoPotential('/xxx/xxx/H.upf')),
    GGABasis.Carbon_DoubleZetaPolarized(element=Carbon,filter_mesh_cutoff=200*Rydberg,
                                            pseudopotential = NormConservingPseudoPotential('/xxx/xxx/C.upf')),
    GGABasis.Sulfur_DoubleZetaPolarized(element=Sulfur,filter_mesh_cutoff=200*Rydberg,
                                            pseudopotential = NormConservingPseudoPotential('/xxx/xxx/S.upf')),
    GGABasis.Silver_SingleZetaPolarized(element=Silver,filter_mesh_cutoff=200*Rydberg,
                                            pseudopotential = NormConservingPseudoPotential('/xxx/xxx/Ag.upf')),
    ]

However, the atkpython executable can not find my upf pseduopotential. Here the pseduopotentials are give by their absolute path. Must the users' pseduopotentials be put in the directory /xxx/xxx/xxx/share/pseudopotentials? If so, this will need a root privilege since the VNL-ATK is installed by the  administrator. Can I put my own pseduopotentials in a directory that can be avaiable to the executable when the job is running, and specify my own pseduopotentials in the basis_set above ?

Thanks so much.

With best regards,

Guangping Zhang

22
Dear ATK supporters,

I recently read the manual of ATK-2015.1, and I found it seemed that there were a lot of difference between the new version and older versions (ATK-2008.10), of which I most interested was the setup for two-probe systems.
As is seen on page 23 of the manual of ATK-2015.1, figure 4.1 gives an illustration for a two-probe systems (also see the attachement Fig1).

As I know, the two probe system consists three parts: (1) the left electrode (in the left blue rectangle the ABC stacking in Fig1), (2) the central region (in the red rectangle in Fig1), and (3) the right electrode (in the right blue rectangle the ABC stacking in Fig1). The electron density for left and right electrodes are calcualted separately using periodic boudaries at three directions at the beginning of ATK two-probe calcualtion. And then, it will do a so called equivalent bulk calculation (left electrode + central region + right electrode) to get an initial electron density for the subsequent NEGF self-consistent calculation. Last, the NEGF self-consistent calculation. In this step, the electron density in the left and right electrodes is kept the same as in the separate bulk calculation. The electron density for the whole central region is self-consistent calculated. All the gold atoms in  the central region, we call screening atom layers.  And this is what is implemented in older version of ATK (say ATK 2008.10). Am I right?

However, in the new version (2015.1), why we call the left- and right-most three layers of gold atom in the central region the electrode extension? Must the left (right) electrode extension one copy of the left (right) electrode? As I see in the VNL-2015.1, one can only reduce the gold atom layers at eacb side of the central region to a copy of the left/right electrode as seen in Fig2 (if you use ABCABC in the electrode, one can only reduce this to 6 layers at each side). Why? How if I just want to use only 2 layers (suppose this can give a good screening.) of gold atom at each side of the central region for the screening effect while using a ABC stacking for both left and right electrode?

With best regards,

Guangping Zhang

23
General Questions and Answers / solvent effect in ATK
« on: April 5, 2016, 16:03 »
Dear ATK supporter,

As in the manual says it is possible to consider the solvent effect in ATK-2015.1.

"It is possible to perform calculations of solvents. In this case, the volume of the configuration is defined by inscribing each atom in a sphere with a size given by the van der Waals radius of the element. Inside the volume of the configuration the dielectric constant is 1, outside the volume of the configuration the dielectric constant is equal to the value of solvent_dielectric_constant."

Why the dielectric constant is 1 inside the volume of the configuration? I think the dielectric function inside the volume should depend on the material inside the volume of the configuration.

With best regards,

/Guangping Zhang

24
Dear all,

Can we simulate the tunneling current in a STM setup, where the tip is overhead the surface at a certain distance. However, when the distance of tip from the surface increases to 5 Angstroms or more, the tunneling current is zero no matter what the bias voltage is. However, in the experiments, the tunneling current is also observed when the tip is several nanometers away from the surface. Is this from the localized atomic orbitals?

25
Dear ATK users:

The analysis tool-MPSH is widely used in ATK two-probe system calculations. However, there is a question: does the MPSH molecular orbital normalized since we extract a sub Hamiltonian and diagonalize it?

26
Dear all,

I have a questions on the results of my calculation. The molecule is 44.85369 Angstrom long and is terminated by sulfur atom of thiol at the two ends coupled to Au(111) electrodes. The attachment is the transmission and PDOS. From the length of the molecule, 44 Angstrom is so long, that the electron tunneling should be seqential, or maybe Coulomb blockade may ocurr. But from the PDOS, we can see, the broaden of the molecular level is significant, not like the case in Coulomb blockade, where the molecular energy levels are discrete.

In a finite bisa voltage, the transmission peak dominates the electron transport. The peak is also very small due to the localization of the corresponding molecular wavefunction.

So, is there anyone can tell me, what the transport mechanism for this situation? In my opinion, this is coherent transport, becasue the coupling of the molecule with electrodes are not so weak. This also can be seen from the large magnitude of the transmission peak around 1.5eV above the fermi energy.

Am I right?

I am very sorry for the attachment. I can not post the topic with attachment. I think there is something wrong with the storage of this forum. Please see the attachment here: http://www29.speedyshare.com/ud6gp/download/T-PDOS.png.

27
Dear all,

I have a questions on the results of my calculation. The molecule is 44.85369 Angstrom long and is terminated by sulfur atom of thiol at the two ends coupled to Au(111) electrodes. The attachment is the transmission and PDOS. From the length of the molecule, 44 Angstrom is so long, that the electron tunneling should be seqential, or maybe Coulomb blockade may ocurr. But from the PDOS, we can see, the broaden of the molecular level is significant, not like the case in Coulomb blockade, where the molecular energy levels are discrete.

In a finite bisa voltage, the transmission peak dominates the electron transport. The peak is also very small due to the localization of the corresponding molecular wavefunction.

So, is there anyone can tell me, what the transport mechanism for this situation? In my opinion, this is coherent transport, becasue the coupling of the molecule with electrodes are not so weak. This also can be seen from the large magnitude of the transmission peak around 1.5eV above the fermi energy.

Am I right?

28
Dear all:
 
I now have a question related to the k-point in calculation.
 
As we know, if we use periodic boundary we should use k sampling in the brillouin zone of the xy direction. I learnt from the Solid State Physics, all the qauntities in the crystal is the function of k-points. So we should average over the k points for a certain qauntity. The more k points, the more accurate and the more time calculation costs.
 
As is pointed out that the Hamiltonian (density matrix) converge fast along the k points, however the transmission function much slower. So we should increase the k points in the transmission calculation.
 
Now I have a qestion that, as attached, the transmission function has a sawtooth-like above the Fermi energy  for a poor 4*4 k point sampling as seen in FIG1. When we increase the k point to 20*20, we see it becomes smoother. However, if we zoom it, as seen in FIG2, the sawtooth still remains there.
 
Q1: I wonder what these sawtooth mean?
 
Q2: What happens when we increase the k points? That is how k points affect the transmission? In more detail, I know for a special energy E, the transmission coefficient is averaged over all the sampled k points. If we say the sample k points are (k_x, k_y), what are the kx and ky related to E. Do there has the ralation E=(k_x*k_x+k_y*k_y)/2m_e?
 
 
With best regards.

29
Dear all,

I have found that when we do NEGF self-consistent cycle, using mixing Hamiltonian most of the time will result in faster convergence. But this not all the story. When using mixing Hamiltonian at high bias, the convergence is very hard, the mixing Density Matrix can distinguish itself, mixing Density Matrix will get it converged.

My question is : What has actually happend in the above case? Mixing Hamiltonian or Density Matrix can result in the same convergence?

If both can lead to convergence, does it converge to the same point or on the same level?

Thanks you very much.

30
I have found that for NEG self-consistent cycle, when it is very hard to converge but near the convergence, it is useful and very helpful to restart the task with current density matrix.

My question is : if this happen, what is happening for the convergence cycle? Is there a way to solve it by adusting the parameter?

Thanks!

Pages: 1 [2] 3