qmcpack icon indicating copy to clipboard operation
qmcpack copied to clipboard

[WIP] Nexus Wannier90 Interface

Open kayahans opened this issue 9 months ago • 7 comments

I wanted to share the progress on this in case somebody else is also working on it so that the effort is not duplicated. Here is the list of items that I plan to implement, some of which are already advanced significantly. I appreciate any suggestions. My plan is to use a workflow from QE to Wannier related codes. VASP could also be used in the same context, but I don't plan to use it. Automated Wannierization scheme (SCDM) is buggy in VASP with ISPIN=2 ver. < 6.5.0 (https://www.vasp.at/wiki/index.php/Known_issues). I don't know any collaborators who have access to ver. >6.5.0.

  • [X] Implement Wannier90 and Wannier90Input classes for interface to wannier90.x
  • [X] Add tests for these classes using input files in the wannier90 manual
  • [X] Add capability to process pw2wan90.x in the pwscf_postprocessors
  • [ ] Implement interface to WannierTools
  • [ ] Test with working examples
  • [ ] Add user examples and documentation related to these capabilities
  • [X] Add unit tests for Wannier90
  • [ ] Add unit tests for WannierTools

kayahans avatar Mar 19 '25 14:03 kayahans

Thanks for putting this up Kayahan. Note that -- if you can -- it is better to break these up into many smaller PRs. It will be easier to review them and make any needed updates.

prckent avatar Mar 19 '25 14:03 prckent

What is the logic for needing so many tests and .win files in test_wannier90_input_files?

I grabbed the input files from the wannier90 tutorials. Wannier90 has a lot of input parameters, I wanted to make sure that the nexus code can accurately cover everything in their tutorials. I can reduce the number of tests if you think that they are excessive, they could definitely be reduced to cover unique tags in the input or I could make single new file which include all of these possibilities and delete all the examples here.

kayahans avatar Mar 19 '25 15:03 kayahans

Thanks for putting this up Kayahan. Note that -- if you can -- it is better to break these up into many smaller PRs. It will be easier to review them and make any needed updates.

I can easily limit this PR to Wannier90 and its QE interface and push the WannierTools related PR separately later. I can divide rest of this PR into four if that would make it easier to review:

  1. Pw2WAN90.x interface in pwscf_postprocessors.py
  2. wannier90 input file manipulation in wannier90_input.py (new file)
  3. Wannier90 simulation in wannier90.py (new file)
  4. Unit tests covering above

Did you have even more fine grained PRs in mind? Any suggestion is appreciated.

kayahans avatar Mar 19 '25 15:03 kayahans

Did you have even more fine grained PRs in mind? Any suggestion is appreciated.

No. What you suggest would be good for the new code. Remove the [WIP] and make a comment when you are done with updates to this current PR and we can get it merged.

prckent avatar Mar 19 '25 23:03 prckent

Anything more here? This is a very beneficial feature to have working.

jtkrogel avatar May 15 '25 20:05 jtkrogel

Fair question:

We are waiting on updates from @kayahans (who has been plenty busy with other things). This PR needs the Wannier90 files removed to avoid license conflicts. We will also not merge a PR marked as WIP.

prckent avatar May 16 '25 13:05 prckent

I can spend more time on this in the coming weeks, my intention was to make a complete workflow including wannier90 and wanniertools. @jtkrogel Is there any specific utility or a type of workflow you want to use with wannier90? I had better split this PR into smaller components anyway. I can try to get partially working update covering those areas you might be interested in.

kayahans avatar May 16 '25 15:05 kayahans