QuantumATK Forum

QuantumATK => General Questions and Answers => Topic started by: qiuweicheng on June 27, 2017, 05:50

Title: The problem of device NEGF DFT convergence?
Post by: qiuweicheng on June 27, 2017, 05:50
Dear sir, I calulated the I-V curve of a Magnetic tunnel junction. But, I find that when the bias>1V,  the device NEGF DFT  is not convergent. I try to solve this problem. The  Contour Integral Settings is changed:
contour_parameters = DoubleContourIntegralParameters(
    circle_points=40,
    real_axis_infinitesimal=0.0005*Hartree,
    real_axis_point_density=0.0005*Hartree,
    integral_lower_bound=2.0*Hartree,
    )
and use the lower bias results initial state:
initial_spin = InitialSpin(scaled_spins=[1.0, 1.0, 1.0, 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 1.0, 1.0, 1.0])
old_calculation = nlread('BN-0.25V.nc', DeviceConfiguration)[0]
device_configuration.setCalculator(
    calculator,
    initial_spin=initial_spin,
    initial_state=old_calculation,
)
But, No matter what I do try, the device (bias>1V) has not been convergent. Which calculated parameters should be adjusted? and could you give me some suggestions about the size of related parameters? Because I have no idea about the  size of the parameter values.
Title: Re: The problem of device NEGF DFT convergence?
Post by: Petr Khomyakov on June 27, 2017, 10:47
To have an idea on the convergence issue, it would be helpful to see the actual structure of the junction that is missing in the scripts.
Title: Re: The problem of device NEGF DFT convergence?
Post by: qiuweicheng on June 28, 2017, 10:07
Here, it is my strcture
Title: Re: The problem of device NEGF DFT convergence?
Post by: Petr Khomyakov on June 28, 2017, 11:19
The structure looks OK. Which version of ATK are you using? In ATK-2017.b1, there is an option of using a more robust and faster Poisson solver:  [Parallel] Conjugate gradient.

In the Device Algorithm settings, you may also consider using Neutral Atom instead of Equivalent Bulk for initial density.

I would not change the Contour Integral Settings for the moment, unless you are sure that there are deeply-lying states of Ni. In this case, you might need to increase the value of integral_lower_bound. This can be checked by band structure calculation for bulk Ni.
Title: Re: The problem of device NEGF DFT convergence?
Post by: Anders Blom on June 29, 2017, 05:02
The electrodes are quite short, so this can cause some problems. But most importantly you should not try to run the high bias calculation from scratch, but rather restart from a converged state for a slightly lower bias. This approach is described in tutorials - or you can use the IVCurve object which does this automatically.
Title: Re: The problem of device NEGF DFT convergence?
Post by: qiuweicheng on July 3, 2017, 05:43
Thank you for your reply.  Our py file is in the attachments.
1. I just do this by using the results of lower-bias convergence. But it is also not convergence.
2. The length of Ni electrode is short ? or The length of Ni layers in the scattering region is short?
If it is the length of Ni layers in the scattering region. I have also made change for this, but it is also not  convergence.
3. Why using Neutral Atom instead of Equivalent Bulk for initial density? and how can I set py command for this.
Title: Re: The problem of device NEGF DFT convergence?
Post by: Petr Khomyakov on July 4, 2017, 10:45
Regarding #2, this is the length of the actual electrode and related electrode extension that need to be enlarged.

Regarding #3, this can be done in the VNL or in the script by replacing 'EquivalentBulk' with 'NeutralAtom' if you saved the script with defaults, or otherwise
explicitly adding the initial_density_type in the Device Algorithm Settings:
#----------------------------------------
# Device Algorithm Settings
#----------------------------------------
initial_density_type = NeutralAtom(
    electrode_constraint_length=10.0*Angstrom,
    )

However, I notice that you may first try changing the electrode length before changing the defaults. There is no guarantee that 'EquivalentBulk' is not a better option compared to 'NeutralAtom'. So, you may want to try both settings if the problem is not gone.
Title: Re: The problem of device NEGF DFT convergence?
Post by: qiuweicheng on July 7, 2017, 10:10
I checked the ElectroStaticDifferencePotential  for the device under bias 0.9V.
The voltage curve is not right.  I have add the length of Electrode extension layer from 9 layers to 13 layers, but the voltage curve was still not convergence. The  ElectroStaticDifferencePotential  for the device under bias 0.8V is convergence. See the attachments.
How we solve this problem of  ElectroStaticDifferencePotential  for the device under bias>0.9V ?
Title: Re: The problem of device NEGF DFT convergence?
Post by: qiuweicheng on July 8, 2017, 06:46
By the way. The length of the actual electrode and related electrode extension have been much enlarged
In the Device Algorithm settings, We consider using Neutral Atom instead of Equivalent Bulk for initial density.
But, the device is still not convergence. What can I do next?
The longer  the length of the actual electrode and related electrode extension , the Better?
Title: Re: The problem of device NEGF DFT convergence?
Post by: Petr Khomyakov on July 8, 2017, 15:05
The posted script for the 0.9 V case seems to suggest that you have not used your 0.8 V converged solution as an initial state for the higher bias voltage calculation.  You may try changing that.

As I said previously, you might need to use a more robust Poisson solver for this particular problem, e.g.,  [Parallel] Conjugate gradient available in ATK-2017. What is the ATK version you are using?

Title: Re: The problem of device NEGF DFT convergence?
Post by: qiuweicheng on July 9, 2017, 03:15
But, as my py file shown, I have used my 0.8 V converged solution as an initial state for the higher bias voltage calculation. I don't know why ? I use the ATK 2012 and 2016.
initial_spin = InitialSpin(scaled_spins=[1.0, 1.0, 1.0, 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 1.0, 1.0, 1.0])
old_calculation = nlread('BN-0.8V.nc', DeviceConfiguration)[0]
device_configuration.setCalculator(
    calculator,
    initial_spin=initial_spin,
    initial_state=old_calculation,
)
Title: Re: The problem of device NEGF DFT convergence?
Post by: Petr Khomyakov on July 9, 2017, 22:03
Which py file? And why do you need to use ATK-2012 if you have got the version of 2016?