atomate2 icon indicating copy to clipboard operation
atomate2 copied to clipboard

Import MP input sets directly from Pymatgen

Open Andrew-S-Rosen opened this issue 1 year ago • 0 comments

Right now, we have duplication of information between pymatgen and atomate2. With https://github.com/materialsproject/pymatgen/pull/3484, there are no remaining blockers to using pymatgen sets in atomate2. At some point, atomate2 should make the switch to complete the transition.

While I won't be orchestrating the transition, I wanted to jot down a few scattered thoughts and potential "gotchas" when Atomate2 transitions to using Pymatgen input sets.

CC @esoteric-ephemera, @utf

GGA workflow

k-points for metals

The Pymatgen MPRelaxSet.yaml has the following:

KPOINTS:
  reciprocal_density: 64

However, the atomate2 BaseMPGGASet.yaml has the following:

KPOINTS:
  reciprocal_density: 64
  reciprocal_density_metal: 200

This is because the reciprocal_density_metal logic exists only within atomate2. When switching to the Pymatgen YAML, you'll likely need to account for this missing parameter.

Of note, the Pymatgen MPStaticSet class has a small_gap_multiply kwarg that can handle this.

k-points in static runs

In Pymatgen, the MPStaticSet has a reciprocal_density of 100, as shown here. This overrides the default value of 64 in the MPRelaxSet.yaml. However, in atomate2, the MPGGAStaticSetGenerator does not seem to change the default of 64 to 100. I'm not sure if I'm missing this somewhere, but that's a potential pre-existing incompatibility? [Now raised in https://github.com/materialsproject/atomate2/issues/844].

r2SCAN workflow

YAMLs

As of https://github.com/materialsproject/pymatgen/pull/3615, the r2SAN YAMLs should be the same in both Atomate2 and Pymatgen, so you should be able to do a clean swap without issues.

That said, the auto_ismear setting is set to True by default in MPScanRelaxSet in Pymatgen, whereas in atomate2 it is set to False by default.

Other comments

The LAECHG and LVTOT parameters are both set to True in the MPScanRelaxSet.yaml (same for the analogue in atomate2). This seems like something that should be False for relaxations and enabled to True for statics. In the past, I do know LAECHG = True was inaccurate for relaxations anyway, as noted by Tom Manz in his Chargemol documentation. I'm not sure if that was ever patched.

Andrew-S-Rosen avatar Feb 17 '24 16:02 Andrew-S-Rosen