Problems with specifying projections for VASP-WANNIER90

Problems running VASP: crashes, internal errors, "wrong" results.


Moderators: Global Moderator, Moderator

Post Reply
Message
Author
benediof
Newbie
Newbie
Posts: 3
Joined: Tue Apr 16, 2024 7:16 am

Problems with specifying projections for VASP-WANNIER90

#1 Post by benediof » Mon Feb 10, 2025 9:46 am

Hi!

I am not sure if this is a bug, or if I've misunderstood how to specify projection for WANNIER90:

I have a 6 ion system: Co Co Ni Ni Nd Pr. If I specify the following projections:
WANNIER90_WIN =
Begin Projections
Co: d
Ni: d
Pr: f
Nd: f
End Projections
I would expect VASP to produce 34 projections (2*5+2*5+7+7), but what I get is 58 projections. It could be that VASP is considering:
Co: s,p,d
Ni: s,p,d
Pr: s,p,d,f
Nd: s,p,d,f
(which would be 58 projections in total)

I've played around with it a bit and if I specify:
WANNIER90_WIN = "
Begin Projections
Co: l=2, mr=1,2,3,4
Ni: l=2, mr=1,2,4,5
Pr: l=2, mr=1; l=3,mr=2,3
Nd: l=2, mr=2; l=3,mr=1,2,6
End Projections
I get 46 projections, although I would expect to get 15. This also doesn't correspond with my first theory of the s and p orbitals being included automatically, in that case I should be getting 39 projections.

Any idea whats going on here? Or how I can specify the projections correctly? These are calculation using Spin-Orbit coupling.

You do not have the required permissions to view the files attached to this post.

manuel_engel1
Global Moderator
Global Moderator
Posts: 212
Joined: Mon May 08, 2023 4:08 pm

Re: Problems with specifying projections for VASP-WANNIER90

#2 Post by manuel_engel1 » Mon Feb 10, 2025 1:30 pm

Hello!

Thanks for reaching out. I had a look at your example calculation and I understand what is happening.

Before VASP calls the wannier90 setup routine, it makes a few assumptions about what is being calculated. One of those assumptions is about the type and number of initial projections. This is where the error/confusion lies. VASP does not know about the projections in the WANNIER90_WIN tag. So if this is the only thing that is specified in the INCAR file, then VASP will not really know what to do until it calls the wannier90 interface. It chooses default projections from the information available in the POTCAR file and sets the number of Wannier orbitals internally (these are the high number of projections that you have seen, 58 and 46). This can lead to all kinds of issues.

The recommended way to resolve this issue is the LOCPROJ tag. Instead of specifying the projections in the wannier90 input via WANNIER90_WIN, set them using LOCPROJ. This will automatically setup the projections on the VASP side and passes them to wannier90 with the correct dimensions. The syntax is different from the projections block in the wannier90 input file, but the orbital definitions in terms of s, p, d, etc. are compatible.

Manuel Engel
VASP developer


manuel_engel1
Global Moderator
Global Moderator
Posts: 212
Joined: Mon May 08, 2023 4:08 pm

Re: Problems with specifying projections for VASP-WANNIER90

#3 Post by manuel_engel1 » Tue Feb 11, 2025 10:59 am

Hi Benedicte,

This is a bit awkward. I deleted your second post on accident, sorry! But I have a copy of it available that I will show as a quote. Here is the original text:

Dear Manuel,

Thank you so much for your prompt reply! Using The LOCPROJ tag did indeed solve my issue!!

I am however experiencing a new issue. If I don't specify the projection block in WANNIER90_WIN, I have no problems. But if I DO specify it:

Code: Select all

LOCPROJ = "1 2 3 4: dxy dz2 dxz : Hy
1 2 : s : Hy
5 6 : dxy : Hy
5 6 : fxyz fyz2 fz3 : Hy"
guiding_centres = true

WANNIER90_WIN = "
Begin Projections
Co:s; dxy; dz2; dxz
Ni:s; dxy; dz2; dxz
Pr: dxy; fxyz; fyz2; fz3
Nd: dxy; fxyz; fyz2; fz3
End Projections
"
Wannier90 tells me that wannier90.amn has not the right number of projections.

Any chance you could help me with this too?

Kind regards,
Benedicte

To answer your question, the projections in the wannier90 input need to be exactly the same as in the LOCPROJ tag. I see that Ni has s orbitals in WANNIER90_WIN but not in LOCPROJ. Changing that should fix the issue. However, you don't need to specify the projections in the wannier90 input. LOCPROJ should be sufficient.

I have also noticed that you put guiding_centres = true in the INCAR but this is a wannier90 input setting that belongs into the WANNIER90_WIN tag.

Sorry again for the inconvenience :) I hope that I could still help resolve your issue.

Manuel Engel
VASP developer


Post Reply