Replies: 2 comments 5 replies
Is this normal to use a PBE WAVECAR as the input for HSE?? Seems off to me, but if you've read other publications that have done it, I guess it's fine. If anything, you could maybe pass along CHGCAR as the starting point and make sure the grids match. Who knows! (this is a big guess here but...) there's a chance VASP is using your vasprun.xml (or some other file) from PBE and assuming your next calc is same and/or a continuation calc. I wouldn't want to mess with this possibility, so I'd stick to using two directories.
What you have coded out is correct and it doesn't re-run the PBE (unless you have a coding error elsewhere). What it's doing is running the HSE calculation in the same directory that the PBE one was ran in because you are giving them the same If you are fully convinced that the PBE is just running again, then double check your HSE workflow. Either you are importing/defining it incorrectly or something is up with your "setup" method (or VASP is acting funky like I suggest above). Feel free to share that your workflow code here too. But I'd recommend sticking to separate directories. Overwriting files by re-running vasp in the same folder can run into confusing issues on where/how files were created. Here's how I'd write the seeded workflow: import shutil
from simmate.utilities import get_directory
class StaticEnergy__Warren__SeededHse(Workflow):
use_database = False
@classmethod
def run_config(
cls,
structure: Structure,
command: str = None,
source: dict = None,
directory: Path = None,
**kwargs,
):
# SETUP DIRECTORIES
# note: get_directory is just a utility that creates the directory if
# it isn't already there and returns the name. Normally it's called
# within workflow.run() but here we just make the folders up front.
pbe_dir = get_directory(
directory / cls.StaticEnergy__Warren__Pbe.name_full
)
hse_dir = get_directory(
directory / cls.StaticEnergy__Warren__Hse.name_full
)
# RUN PBE
pbe_results = cls.StaticEnergy__Warren__Pbe.run(
structure=structure,
command=command,
source=source,
directory=pbe_dir,
).result()
# copy over WAVECAR
shutil.copyfile(
src=pbe_dir / "WAVECAR",
dst=hse_dir / "WAVECAR",
)
# RUN HSE
hse_results = cls.StaticEnergy__Warren__Hse.run(
structure=structure,
command=command,
source=source,
directory=hse_dir,
).result() |
|
That explains it! I did get a "Calculation is already completed. Skipping setup." message. I also get the same message for some of the S3Workflows (bader and combining AECCAR0 and AECCAR2) that are being run in the same directory, but those seem to run fine. I'm guessing those are fine, though maybe it would be better to run them in a new directory as well. |
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Hi all,
I'm trying to create a seeded workflow similar to that in the guides that will pass results between runs. The goal is to run a PBE level static-energy calculation followed by an HSE level calculation. I want it to use the WAVECAR from the initial calculation. What I keep finding is that if I create my run_config method similar to below it will just rerun the initial PBE calculation:
If I instead save the calculations to two seperate directories (eg. directory=directory / "PBE" and directory = directory / "hse") the calculations will run as expected. Also, if I insert a line to copy the WAVECAR over to the hse directory it will run based on that WAVECAR as expected.
Any idea why the second workflow wouldn't just run after the first one?
All reactions