Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add energy contributions #36

Open
wants to merge 8 commits into
base: develop
Choose a base branch
from

Conversation

hdsassnick
Copy link

Hi Tiziano,

I thought it would be nice to parse in addition to the force consistent energy also the uncorrected total energy and other energy contributions, e.g. to check the impact of dispersion corrections etc. As for the levelparser I added the energies to the InnerSCF block.

I didn't add new tests but adjusted the existing ones to also check the new properties.

Please let me know what you think.

All the best,
Holger

Copy link
Contributor

@dev-zero dev-zero left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Some minor remarks, but agreed, that's something useful to have, thanks a lot!

cp2k_output_tools/blocks/energies.py Outdated Show resolved Hide resolved
cp2k_output_tools/blocks/energies.py Outdated Show resolved Hide resolved
if not match:
if match:
energies["total force_eval"] = match["value"]
spans += match.spans(0)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
spans += match.spans(0)
spans += [match.spans(0)]

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I reversed this change since it was resulting in the cli tests to fail. Checking the output I believe that my original implementation was actually already giving the correct output?

cp2k_output_tools/blocks/energies.py Show resolved Hide resolved
@@ -71,7 +71,7 @@


INNER_SCF_START_RE = re.compile(r"^\s+ SCF\ WAVEFUNCTION\ OPTIMIZATION", re.VERBOSE | re.MULTILINE)
INNER_SCF_END_RE = re.compile(
INNER_SCF_CONV_RE = re.compile(
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please note that the blocks themselves can be used by other tools, changing the names will break them.
But if you think there is good reason to do so, please continue. The only thing I would then ask you is whether you can add a new entry in CHANGELOG.md for the next minor version (major.minor.patch) to make sure we don't forget to bump it on the next release for the backwards incompatible change.
The reason I called it SCF_END_RE is because it's notoriously difficult to reliably determine whether the CP2K (SCF) finished properly. The idea was to assume that the presence of that line indicates a finished SCF, everything else not.

Copy link
Author

@hdsassnick hdsassnick Dec 11, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sorry, I didn't take that into consideration. I just thought that as the energies are parsed further below in the output file and SCF_END_RE would refer to the end of the inner SCF cycle it would make sense to rename it.

However, having backwards compatibility is probably more important in this case, thus I reversed this change.

tests/test_optimization.py Show resolved Hide resolved
@hdsassnick
Copy link
Author

Thank you for the swift review and feedback. Except maybe for the format of the spans I believe it is ready to be merged.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants