What does GGA_COMPAT do in VASP and why is it recommended to set it to FALSE for non-colinear calculations?

Why is it recommended to set GGA_COMPAT = .FALSE. for non-colinear calculations? Could someone explain what GGA_COMPAT does?

• For the first question, where have you seen this recommendation? For the second, have you read the VASP wiki page describing this flag and is there a specific part of it you don't understand? In general, you should try to ask one specific question and include any necessary background (e.g. how you have tried to solve the problem, what you already know, any resources you are referencing).
– Tyberius
Jan 24 at 19:30
• @Tyberius Regarding the first part of your question, the answer is in the link you provided, when it said "we therefore recommend to set GGA_COMPAT = .FALSE." Jan 24 at 22:22

GGA_COMPAT is meant to restore symmetry for non-cubic cells when using gradient-corrected functionals. This is because gradient-corrected functionals might slightly break the Bravais lattice for non-cubic cells (e.g. primitive FCC and BCC latices).

Setting GGA_COMPAT = .FALSE. restores the full lattice symmetry for gradient-corrected functionals, by setting the gradient field and the charge density to 0 for all reciprocal lattice vectors that exceed an automatically determined (by VASP) cutoff length, before calculating the exchange correlation energy and potential.

The VASP developers tried to explain this in the VASP Wiki but the article has grammatical errors which makes it difficult to follow, and the reason why they called it GGA_COMPAT is not explained there, and they also didn't make it clear why the default setting for GGA_COMPAT was TRUE until VASP 5.2 and apparently also now, despite them strongly recommending to use FALSE and prividing no reason why you would ever want to use TRUE. I welcome other users to answer here if they would like to give some scenarios in which it would be preferred to use TRUE.

One thing from that VASP Wiki page which is especially to note is that (emphasis added by me):

"setting the flag usually changes the energy only in the sub meV energy range (0.1 meV), and for most results it does matter little how GGA_COMPAT is set. The most important exception are magnetic anisotropies, for which we strongly recommend to set GGA_COMPAT = .FALSE."

• This was my 200th answer :) Jan 24 at 22:38
• The compat part is for compatibility I assume. Based on the article, you would never want to use .TRUE., but that was presumably how VASP behaved prior to adding the symmetry correction. I assume adding the flag was something like a deprecation warning in order to tell people that the behavior would change and if they wanted to make an exact comparison with old calculations, they would need to explicitly include this option.
– Tyberius
Jan 25 at 2:05
• So basically, prior to VASP 5.2, presumably this symmetry restoration procedure was not implemented, and GGA_COMPAT=TRUE makes your VASP calculation "compatible" with what older VASP versions do, which is what they do not recommend. It's an interesting design choice to prioritize compatibility with old versions as the default, rather than the setting that you "strongly recommend". It's also strange that the VASP wiki page says "the default is GGA_COMPAT = .TRUE. until VASP.5.2" but also implies at the top of the page that in 6.2.1 the default is TRUE. At least OP's question was answered. Jan 25 at 4:41