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

ACE grid computes with validation examples #5

Open
wants to merge 11 commits into
base: mala
Choose a base branch
from

Conversation

jmgoff
Copy link

@jmgoff jmgoff commented May 9, 2024

Summary

This PR introduces ACE descriptor grid computes, similar to the way descriptor grid computes were introduced for SNAP. It allows one to evaluate ACE descriptors at points on a grid defined in LAMMPS. The ACE descriptor values are calculated based on the grid and atomic neighbors within user-specified cutoffs, with ACE descriptors defined up to some user-specified body order. This is analogous to the implementation for the grid implementation of SNAP descriptors.

It also updates the relevant pair_pace and CMake dependencies to a more recent version of the lammps-user-pace library from ICAMS. Examples were included that validate the ACE grid computes in a similar way that the SNAP grid computes were validated. Log files have been provided for both serial and parallel tests of the grid computes.

Related Issue(s)

N/A

Author(s)

James Goff (Sandia National Laboratory)
Email: [email protected]

Licensing

By submitting this pull request, I agree, that my contribution will be included in LAMMPS and redistributed under either the GNU General Public License version 2 (GPL v2) or the GNU Lesser General Public License version 2.1 (LGPL v2.1).

Backward Compatibility

N/A

Implementation Notes

The ACE per-atom computes were added to the MALA branch of LAMMPS, and may now be used as described in the LAMMPS development branch docs. For example, a user must provide a '.yace' file that contains the generalized Clebsch-Gordan coefficients and the ACE descriptor hyperparameters.
General syntax:
compute <computename> <group> pace <coeff_and_parameter_file.yace> bikflag dgradflag
Example syntax:
compute pace all pace coupling_coefficients.yace 1 0

The local and global grid computes are added for ACE descriptors similarly and may be used, respectively, with:
compute <computename> <group> pace/grid/local grid <ngrida> <ngridb> <ngridc> <coeff_and_parameter_file.yace>
compute mygridlocal all pace/grid/local grid 4 4 4 coupling_coefficients.yace

Further examples on how to use them (and expected outputs) may be found with the SNAP grid computes in examples/snap.

Post Submission Checklist

  • The feature or features in this pull request is complete
  • Licensing information is complete
  • Corresponding author information is complete
  • The source code follows the LAMMPS formatting guidelines
  • Suitable new documentation files and/or updates to the existing docs are included
  • The added/updated documentation is integrated and tested with the documentation build system
  • The feature has been verified to work with the conventional build system
  • The feature has been verified to work with the CMake based build system
  • Suitable tests have been added to the unittest tree.
  • A package specific README file has been included or updated
  • One or more example input decks are included

Further Information, Files, and Links

As with other ACE computes and ACE potentials, the coupling_coefficient.yace files that contain the generalized Clebsch-Gordan coefficients and the ACE descriptor hyperparameters must be generated outside of LAMMPS. Examples on how to generate these for atom-centered ACE may be found in FitSNAP.

The ACE grid computes are set up such that grid points always adopt type 1 in LAMMPS and mu0 = 0 in the ACE basis (which correspond to the first element type). Depending on the desired use cases for the ACE grid compute, it may be desirable for the user to prune any mu0 != 0 ACE descriptors from the <coeff_and_parameter_file.yace> file. (Doing so will reduce memory overhead for multielement ACE grid computes by preventing allocation for atom-centered ACE descriptor data.)

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.

1 participant