Author Topic: Question about calcutaing the current by transmission spectrum?  (Read 5393 times)

0 Members and 1 Guest are viewing this topic.

Offline leoh0629

  • Regular QuantumATK user
  • **
  • Posts: 5
  • Country: cn
  • Reputation: 0
    • View Profile
hello, I have a question here,  why there is so huge difference about the current below:
bias=0.1V, same finished self-consistent consequence;
the first time calculating the transmission : TransmissionSpectrum(energies=numpy.linspace(-2,2,200)*eV),  result:i=9.072968369e-15A;
the second time calculating the transmission:TransmissionSpectrum(energies=numpy.linspace(-0.05,0.05,200)*eV),result:i=4.777585453e-12A;
and I took an another test:TransmissionSpectrum(energies=numpy.linspace(-0.05,0.05,6)*eV), the energy interval is same with the first,
result:i=5.609325372e-12A.

The question puzzling me is why the second current is larger than the first since the second's enegies scope is less small? Isn't the integrating equal to the add of areas?
« Last Edit: May 27, 2012, 09:55 by leoh0629 »

Offline Nordland

  • QuantumATK Staff
  • Supreme QuantumATK Wizard
  • *****
  • Posts: 812
  • Reputation: 18
    • View Profile
Can you share your input script or the transmission spectrum ?

Offline leoh0629

  • Regular QuantumATK user
  • **
  • Posts: 5
  • Country: cn
  • Reputation: 0
    • View Profile
This script is used by the first calculation. The only difference among  scripts of 3 calculations is the energy's category for integrating.

Offline nori

  • QuantumATK Guru
  • ****
  • Posts: 122
  • Reputation: 12
    • View Profile
You should write 'numpy.linspace(-2,2,201)' to get the same interval as 'numpy.linspace(-0.05,0.05,6)'.
Anyway, it can be possible that you obtain different results because the energy points are still different and  the electron temperature also affects the results.

In addition, your transmission spectrum is so small that you should interpret it as  just numerical error and ZERO in practice.

Offline leoh0629

  • Regular QuantumATK user
  • **
  • Posts: 5
  • Country: cn
  • Reputation: 0
    • View Profile
You are right, it should be (-2,2,201), the enegy point is different, but transmission spectrum is almost the same. Temperature  is fixed to 300K, if it just belongs to numerical error, how can I correct this error?
appreciated :)

Offline nori

  • QuantumATK Guru
  • ****
  • Posts: 122
  • Reputation: 12
    • View Profile
Quote
Temperature  is fixed to 300K,
If you change both left and right temperatures to 0K, it's expected that  (-2,2,201) and (-0.05,0.05,6) are similar.

Quote
if it just belongs to numerical error, how can I correct this error?
Sorry that my previous post is confusing.
I meant that small value of transmission like 1e-9 is actually 0 and has no physical meaning.
And the reason why it's not 0 but some very tiny value like 1e-9 comes from numerical error.

Offline leoh0629

  • Regular QuantumATK user
  • **
  • Posts: 5
  • Country: cn
  • Reputation: 0
    • View Profile
I catch your mean, but my point in this case is why the first current and the second current are so different, since they are under the same bias.  Further more, if different, according the formula for current calculation the second current should be small than the first but  the results here are just the opposite.

Offline Anders Blom

  • QuantumATK Staff
  • Supreme QuantumATK Wizard
  • *****
  • Posts: 5575
  • Country: dk
  • Reputation: 96
    • View Profile
    • QuantumATK at Synopsys
You don't just integrate T(E), there is also a weight from the Fermi functions. In the limit of zero temperature this means you integrate only over -Vbias/2 to +Vbias/2, but if you run at finite temperature there is a tail of the Fermi functions also. Thus the limits you put on the energy range for the transmission are irrelevant, as long as they contain the bias window, plus a bit more. Of course the range does matter for how many points you get in the bias window, and hence the accuracy of the numerical integration.

In your case, the -2 to 2 integration is inaccurate because you are not picking up the fine structure of the peak near -0.045 eV, since the point spacing is too large. That's why you also get a very low current. With more points (second example) you do resolve the peak and get some value from it; in the third example (6 points) you are probably just lucky to hit a high enough value to get a similar current.

However, if you also look at the logfile output from the 2 last calculations you will see that the coverage of the bias window (really, the bias window plus a few kT) is less than 100% - if you see that, the results are not correct.

The proper evaluation of the current in this example is probably achieved with something like energies=numpy.linspace(-0.07,0.07,200)*eV; check the energy range by looking at the bias window coverage in the log file, and make sure it's 100%. Then increase the number of points to 300, 400, 500 to see if the value changes as you resolve more and more fine features in the peak at -0.045 eV.

Then there is of course always the matter of k-points (it's not clear whether the system is 1d, 2d, or 3d)...
« Last Edit: May 28, 2012, 10:46 by Anders Blom »

Offline leoh0629

  • Regular QuantumATK user
  • **
  • Posts: 5
  • Country: cn
  • Reputation: 0
    • View Profile
You are very helpful, I got it, thanks a lot~~