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

Adding in ZBL potential #328

Open
chrisiacovella opened this issue Dec 3, 2024 · 1 comment
Open

Adding in ZBL potential #328

chrisiacovella opened this issue Dec 3, 2024 · 1 comment
Assignees

Comments

@chrisiacovella
Copy link
Member

Today we (@wiederm @MarshallYan ) discussed some issues that could be faced with free energy calculations related to overlapping atoms when energy is decoupled. As we have discussed in the past, adding in something like the ZBL potential to prevent overlap (even outside of the context of free energy calculations), could be useful, as the NNPs do not necessarily know anything about the energy landscape at really small separations.

this could be done in the post processing, similar to calculating Coulombic energy from partial charges. This just needs to know atomic numbers and the neighbor list information (pairs, d_ij). Even if two atoms are "lifted up" in a free energy calculation, we still can return a the value for the ZBL potential which would prevent overlap (i.e. not impacted by lambda).

I'll work on adding this in as this might be important for stability.

@chrisiacovella chrisiacovella self-assigned this Dec 3, 2024
@chrisiacovella
Copy link
Member Author

In discussions with Peter Eastman, the question of how to implement these type of things in an extensible way. The use of Toml files reduces some of the extensibility (since we'd have to define these parameters in the pydantic models). However, even using things in a pythonic way (i.e., not using the pydantic models directly), we still rest, e.g., post processing by comparing against an internal list of _SUPPORTED_PROPERTIES,

    _SUPPORTED_PROPERTIES = [
        "per_atom_energy",
        "per_atom_charge",
        "electrostatic_potential",
        "general_postprocessing_operation",
    ]

I feel like we could make a way to register a new support property dynamically, but that sort of breaks the approach we've been taking in terms of controlling the workflows and validation. Again, as we discussed before, there is really only probably a reasonably finite amount of post processing type of operations we would like to implement (this was the rationale behind ditching the attempt to create effectively a meta-language to encode the operations, which only added confusion). I think it is probably reasonable just to require extension to the code directly, not extension at the level of a python script.

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

No branches or pull requests

1 participant