Pymatgen complaining about missing deprecated POTCAR files

Using atomate’s default workflows, some of my calculation fizzle due to missing POTCAR files.

packages/pymatgen/io/vasp/inputs.py\", line 1887, in from_symbol_and_functional\n    raise IOError(\nOSError: You do not have the right POTCAR with functional PBE and label W_pv in your VASP_PSP_DIR\n"

According to the VASP docs, this file was deprecated a while back in VASP 5.4 due to large error in lattice constants.

https://www.vasp.at/wiki/index.php/Available_PAW_potentials#Recommended_potentials_for_DFT_calculations

How do I tell atomate to use newer/recommended POTCAR rather than fizzling the workflow in such cases?

Hi @janosh,

You can consult the API documentation for DictSet in pymatgen, this is ultimately where all the relevant settings live, and atomate provides various means to control this (usually via user_input_settings or vasp_input_set or vasp_input_set_overrides etc.)

Best,

Matt

Thanks @mkhorton for the quick reply. What confuses me a little is that I can’t be the first to encounter these errors. And since I’m getting them for what feels like at least a dozen different elements, it seems like a laborious process of trial and error to run many calculations and discover over time for which elements I need to specify newer/deprecated/existing POTCARs by hand. I thought there would be either a setting that uses latest POTCARs automatically or maybe a place on GitHub where someone compiled such an up-to-date list. So far though my search came up empty.

Regarding the error with W_pv specifically, this is because this pseudopotential was removed in the newer pseudopotential sets (for the reasons you mentioned), but it is still present in the default pseudopotential set we use, which we continue to use strictly for legacy/compatibility reasons. If you use one of our newer sets instead (e.g. the SCAN set), this is resolved.

So, essentially, the only time this issue presents itself is if one is using the default input set but choosing to use a non-default pseudopotential set, in which case it is also possible to specify a non-default choice of pseudopotential for W specifically as well.

1 Like

Thanks again @mkhorton! I tried

wf = add_modify_potcar(wf, {"potcar_symbols": {"W": "W_sv"}})

which seems to have no effect. Workflows containing Tungsten are still failing with the error

You do not have the right POTCAR with functional PBE and label W_pv in your VASP_PSP_DIR

I’m using add_modify_potcar exactly how atomate tests this function so not sure what I might be doing wrong.

Thanks for all the help here @mkhorton. This issue is resolved.

Forgot to ask during the MP workshop. The reason my workflows were still failing with

You do not have the right POTCAR with functional PBE and label W_pv in your VASP_PSP_DIR"

is because powerups run after the initial MPRelaxSet input file creation. So the task still crashes because it can’t find the deprecated POTCAR in the first place.

What’s the recommended way of handling this? Just create a dummy POTCAR for W_pv? Or rename the W_sv POTCAR to W_pv?

I chime in here probably late, but it might be useful for future users.
The way I just solved this is to have installed also the old pseudo set which contain the W_pv.
In this way the write_input function work fine and the powerups can run after replacing the potcar with a custom one.

Hope this helps.

Same, I’ve been using a dummy POTCAR W_pv which is later replaced by W_sv?