Author Topic: Eigenvalues and eigenstates  (Read 3434 times)

0 Members and 1 Guest are viewing this topic.

Offline Jahanzaib

  • QuantumATK Guru
  • ****
  • Posts: 112
  • Country: gb
  • Reputation: 3
    • View Profile
Eigenvalues and eigenstates
« on: December 10, 2024, 18:51 »
Dear Expert,
I am using QuantumATK V-2023.09. I have attached the pics for my Transmission spectra, I am interested to explore the eigenvalue and eigenstate at energy = -0.14 with spin up only. In previous version, if you click on the peak at certain energy, you can eigenvalue and eigenstates.

Any suggestion

Offline Anders Blom

  • QuantumATK Staff
  • Supreme QuantumATK Wizard
  • *****
  • Posts: 5609
  • Country: dk
  • Reputation: 107
    • View Profile
    • QuantumATK at Synopsys
Re: Eigenvalues and eigenstates
« Reply #1 on: December 13, 2024, 19:57 »
The ability to compute the eigenvalues and eigenstates is still in QuantumATK, but only supported via scripting now, not interactively in the GUI. Not many users appreciated this functionality, so when we redesigned the TransmisionSpectrumAnalyzer to add many other new features, we did not prioritize this functionality. The template script will be
Code: python
device_configuration = nlread("myfile.hdf5", DeviceConfiguration)[-1]
energy = -0.14*eV
k_point = [0.1, 0.1]
spin = Spin.Up
eigenvalues = TransmissionEigenvalues(device_configuration, energy, k_point, spin)
nlprint(eigenvalues)
# Check the printout to see which states you need, then use the line below to set it to 0, 1, 2, etc
quantum_number = 0
eigenstate = TransmissionEigenstate(device_configuration, energy, k_point, quantum_number, spin)
nlsave('eigenstates.hdf5', eigenstate)
See https://docs.quantumatk.com/manual/Types/TransmissionEigenstate/TransmissionEigenstate.html#transmissioneigenstate-c
« Last Edit: December 13, 2024, 19:59 by Anders Blom »

Offline Jahanzaib

  • QuantumATK Guru
  • ****
  • Posts: 112
  • Country: gb
  • Reputation: 3
    • View Profile
Re: Eigenvalues and eigenstates
« Reply #2 on: December 13, 2024, 23:59 »
Many thanks Dr Blom. I tired to use this script and it shows the following error:

TypeError                                 Traceback (most recent call last)
<ipython-input-13-2772cb4c8c17> in <module>
      4 energy_zero_parameter=AverageFermiLevel,
      5 spin = Spin.Up
----> 6 eigenvalues = TransmissionEigenvalues(device_configuration, energy, k_point, spin)
      7 nlprint(eigenvalues)
      8 # Check the printout to see which states you need, then use the line below to set it to 0, 1, 2, etc

TypeError: 'module' object is not callable

Offline Anders Blom

  • QuantumATK Staff
  • Supreme QuantumATK Wizard
  • *****
  • Posts: 5609
  • Country: dk
  • Reputation: 107
    • View Profile
    • QuantumATK at Synopsys
Re: Eigenvalues and eigenstates
« Reply #3 on: December 16, 2024, 23:30 »
Sorry, I didn't have a test case at hand so I didn't notice that you can't pass the spin keyword to the Eigenvalues, only to the Eigenstates.
So try
eigenvalues = TransmissionEigenvalues(device_configuration, energy, k_point)
and
nlprint(eigenvalues.evaluate(spin=spin))
instead. This should be clear from the manual, btw.

Offline Jahanzaib

  • QuantumATK Guru
  • ****
  • Posts: 112
  • Country: gb
  • Reputation: 3
    • View Profile
Re: Eigenvalues and eigenstates
« Reply #4 on: January 10, 2025, 01:32 »
Thanks Dr. Blom, the code works fine, but I got confused how to set isovalue in quantuatk, at particular energy I change - some time it separate out to whole nanoribbon and sometime not, is there a way in quantumatk that automatically set isovalue?

Offline Anders Blom

  • QuantumATK Staff
  • Supreme QuantumATK Wizard
  • *****
  • Posts: 5609
  • Country: dk
  • Reputation: 107
    • View Profile
    • QuantumATK at Synopsys
Re: Eigenvalues and eigenstates
« Reply #5 on: January 10, 2025, 08:26 »
The first step is probably to think about what the purpose of creating the plot it, what data are you looking to extract. Maybe an isosurface is not the best choice?

In any case, what you are plotting is basically a 4-dimensional dataset, a function f(x,y,z). Since we have no real way to doing a 4D plot, we need to use various 3D projections, and the isosurface is one such option. But all isovalues are equally relevant or "correct", so we cannot pick one for you. An isosurface is this the best option for the plot if you are interested in knowing where in space the quantity takes certain values.

It might help to consider the 2D analogy of height curves on a map.. Instead of seeing the mountain as a real 3D surface, you plot isolines that connect points in the geography that lie on the same altitude. By looking at that plot you can trace the contours, which for instance help you pick a suitable walking path, or at least tell you which parts of the trail will be steep or flat. But it would not be helpful if someone just picked one single isoline and didn't show the other ones.

The isosurface is similar, but in one higher dimension which unfortunately means we can only look at one curve (surface) = isovalue at the time. An alternative might be to use a point could plot instead, where color is used as a 4th dimension to indicate where the function is high or low. In that case you can plot all data at once, but it might also be hard to see what goes on in the middle of the system. Finally, you can also use cut-planes to plot the data in a specific plane, and then move this plane along the structure.

Offline Jahanzaib

  • QuantumATK Guru
  • ****
  • Posts: 112
  • Country: gb
  • Reputation: 3
    • View Profile
Re: Eigenvalues and eigenstates
« Reply #6 on: January 10, 2025, 12:55 »
Many thanks, Dr. Blom, for such a detailed answer. A lot of concepts have been clarified.

What am I looking for? I have transmission spectra, and I am particularly interested in identifying the orbitals associated with a specific energy level, for example, E = -0.14 eV. Specifically, I want to determine which orbitals contribute to the current flow at that energy.

As mentioned earlier, when I adjust the iso value close to zero, everything disappears, and when I increase it, the details are obscured. I have not been able to find a way to resolve this issue for my system.