Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Implement LDOS calculation #61

Closed
zerothi opened this issue Apr 24, 2018 · 7 comments
Closed

Implement LDOS calculation #61

zerothi opened this issue Apr 24, 2018 · 7 comments
Assignees
Labels
Milestone

Comments

@zerothi
Copy link
Owner

zerothi commented Apr 24, 2018

It would be nice to calculate LDOS contribution on real-space grids

@zerothi zerothi self-assigned this Apr 24, 2018
@zerothi zerothi added this to the v2.0.0 milestone Apr 24, 2018
@zerothi
Copy link
Owner Author

zerothi commented May 4, 2018

This will be enabled as soon as #58 is finished because one can "weigh" the eigenstates DM contributions with broadenings to construct the LDOS density matrix.

@zerothi
Copy link
Owner Author

zerothi commented May 4, 2018

As a side-note. The LDOS is enabled for TBtrans calculations since 4.1-b4.

@zerothi
Copy link
Owner Author

zerothi commented Jul 28, 2018

I regard this issue to be resolved as the thing that is missing is #58.

@zerothi zerothi closed this as completed Jul 28, 2018
@pfebrer
Copy link
Contributor

pfebrer commented Oct 28, 2021

Couldn't one just calculate the LDOS as the STM util does? I.e. for each eigenstate calculate the wavefunction, multiply it by its conjugate and then weight according to its corresponding eigenvalue and whatever distribution the user chooses.

@zerothi
Copy link
Owner Author

zerothi commented Oct 28, 2021

Yes and no. :)

The STM utility uses the wavefunctions and calculating the LDOS from individual wavefunctions has been enabled in sisl since the sisl.physics.electron.wavefunction was implemented. This turns out to be somewhat impractical in sisl for some energies and systems. Say you have 100 states then you'll have to generate the wavefunctions for each of these 100 states and average the grid (converted as you say) values to get the LDOS. Now it is doable, but highly non-scalable ;)
Note that this is what the STM utility is doing. But in fortran this is not as costly ;)

However, one generally wants to use the density matrix constructed from the weighted states around an energy window. And this is what I am referring to as missing in the implementation. Once the density matrix can be calculated efficiently in sisl, then the energy-range LDOS can be enabled.

Also note that my implementation in TBtrans allows efficient calculations of the density matrix since you get it for free when calculating the Green function. You can even plot the LDOS originating from a single electrode if this is your wish ;)

@pfebrer
Copy link
Contributor

pfebrer commented Oct 29, 2021

Oooh ok that's true :(

I want to calculate the LDOS for some systems that I calculate in SIESTA. Can I use TBtrans to get the LDOS even if there are no electrodes? Anyway it would be nice to be able to calculate it efficiently from sisl :)

@zerothi
Copy link
Owner Author

zerothi commented Oct 29, 2021

Oooh ok that's true :(

I want to calculate the LDOS for some systems that I calculate in SIESTA. Can I use TBtrans to get the LDOS even if there are no electrodes? Anyway it would be nice to be able to calculate it efficiently from sisl :)

Hmm, you can trick tbtrans to calculate the green function with a fictional electrode... Hmmm this might be a good code addition for tbtrans!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

2 participants