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

Read wavefunction from WAVRCAR for some specific purposes. #23

Open
hongyi-zhao opened this issue Aug 9, 2023 · 4 comments
Open

Read wavefunction from WAVRCAR for some specific purposes. #23

hongyi-zhao opened this issue Aug 9, 2023 · 4 comments

Comments

@hongyi-zhao
Copy link

hongyi-zhao commented Aug 9, 2023

Suppose I would like to achieve the following purposes based on the wavefunction analysis from WAVRCAR:

  1. Calculate the topological number based on the exact form of wavefunction, aka, an n*1 array under plane wave basis.
  2. Compute the traces of matrix presentations and determines the corresponding irreducible representations for all energy bands and all the k-points in the three-dimensional Brillouin zone.

I would like to know whether the method implemented in this package meets the above requirements.

See below for the related discussions:
https://www.vasp.at/forum/viewtopic.php?t=18177

See the related implementation below, which is based on this package:
https://github.com/SMTG-UCL/easyunfold/blob/main/easyunfold/wavecar.py

Regards,
Zhao

@hongyi-zhao hongyi-zhao changed the title Read wavefunction from WAVRCAR for specific purposes. Read wavefunction from WAVRCAR for some specific purposes. Aug 9, 2023
@QijingZheng
Copy link
Owner

Hi

  • I'm not sure what you mean by "the exact form of the wavefunction". As is well known, VASP WAVECAR file stores the plane-wave coefficients of the PSEUDO-wavefunction, which can be easily obtained with my code, e.g.

    #/usr/bin/env python
    from vaspwfc import vaspwfc
    
    pswfc = vaspwfc('./examples/wfc_r/WAVECAR')
    # Cg now contains the plane-wave coefficients of the selected KS states
    Cg = pswfc.readBandCoeff(ispin=1, ikpt=1, iband=1)

    On the other hand, should one need the PSEUDO-wavefunction in real-space, one can also do it with my code. See to the examples of README for more informations.

  • I am not aware of your exact form of the matrix element, therefore I can not comment on this point.

Best
Qijing

@hongyi-zhao
Copy link
Author

hongyi-zhao commented Aug 9, 2023

  • I'm not sure what you mean by "the exact form of the wavefunction". As is well known, VASP WAVECAR file stores the plane-wave coefficients of the PSEUDO-wavefunction, which can be easily obtained with my code, e.g.

The PSEUDO-wavefunction is the basis set, and the plane-wave coefficients are the superposition coefficient of states using this basis set. So, by saying "the exact form of the wavefunction", I mean that whether these coefficients are complete relative to the base set, i.e., there are no omissions.

  • I am not aware of your exact form of the matrix element, therefore I can not comment on this point.

Sorry, my description is not very clear here. More specifically, I want to implement the things described here based on the WAVECAR analysis:

image

Regarding your wording of exact form of the matrix element, I'm not sure whether you mean the matrix elements of the point group or the space group of the computed system in question.

If I have any incorrect description or misunderstanding, please do not hesitate to correct me.

BTW, both your version and the method implemented in pymatgen are based on the algorithm developed in WaveTrans, so what are the differences between them?

Regards,
Zhao

@QijingZheng
Copy link
Owner

  • The pseudo-wavefunctions are expanded by plane-waves, i.e.

    \psi_nk(r) = \sum_{G} Cg * exp(-G r)

    where Cg are the plane-waves coefficients written in WAVECAR. As I understand it, the plane-waves are always orthogonal and you can always increase ENCUT to increase the completeness of the plane-waves. I'm not sure if this answer your questions.

  • The algorithm implemented in my code and pymatgen are NOT based on that in WaveTrans, where the latter just use brute force summation over all the plane-waves to do the Fourier transform, while the former two codes use FFT which is significantly faster and efficient.

Best
Qijing

@hongyi-zhao
Copy link
Author

hongyi-zhao commented Aug 10, 2023

It seems that for now, regarding your explanations and comments, I can't point out any further points that are not quite reasonable. Therefore, I can only say that perhaps we'll need to discuss it further when there are additional questions and clues.

BTW, I noticed the following description here:

image

I'm not sure if you have any understanding of the corresponding impact of the above-mentioned settings and modifications on the generated WAVRCAR file in a specific calculation.

Regards,
Zhao

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

No branches or pull requests

2 participants