Skip to content

Add support for writing rigid bodies when converting to HOOMD formats. #850

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

Merged
merged 61 commits into from
May 6, 2025

Conversation

chrisjonesBSU
Copy link
Contributor

@chrisjonesBSU chrisjonesBSU commented Sep 17, 2024

rigid IDs are ints assigned to particles/atoms that signal which rigid body they belong to which is needed when recording rigid body information in HOOMD Frames and/or GSD files. The mBuild hoomd writers handled this, but we still need to implement them here.

In mBuild, rigid_id is a property at the particle level, so we can treat it the same here, at the site level.

This is a draft for now. Remaining TODOs are:

  • handle cases where some molecules are rigid and others aren't
  • throw an error if rigid particle type is found in the topology already

@chrisjonesBSU chrisjonesBSU added core feature conversions conversions of GMSO to and from other format labels Sep 17, 2024
@chrisjonesBSU chrisjonesBSU linked an issue Sep 17, 2024 that may be closed by this pull request
@chrisjonesBSU chrisjonesBSU marked this pull request as ready for review September 26, 2024 16:21
@CalCraven
Copy link
Contributor

A remaining question to figure out: What if only some molecules are rigid in a hoomd simulation? How does the list of rigid body indices change?
https://hoomd-blue.readthedocs.io/en/v3.6.0/tutorial/06-Modelling-Rigid-Bodies/00-index.html

@chrisjonesBSU chrisjonesBSU changed the title Add rigid_id field to Atom and handle rigid bodies when converting to HOOMD formats. Add support for writing rigid bodies when converting to HOOMD formats. Oct 3, 2024
@CalCraven
Copy link
Contributor

Was playing around with the rigid bodies in HOOMD. Got a working simulation with some rigid particles and some non-rigid particles. Looks like the body argument, shown now in line, get's a tag of -1 if the particle is not rigid. The rigid particles get the rigid ID for that particle, and the rigid COM particle, named "dimer" here, also get's that same ID.

@chrisjonesBSU chrisjonesBSU requested a review from CalCraven March 25, 2025 16:28
Copy link
Contributor

@CalCraven CalCraven left a comment

Choose a reason for hiding this comment

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

Mostly a bunch of doc string suggestions.

@CalCraven
Copy link
Contributor

We should add a test also checking for the error that comes up when an mBuild object is generated with rigid molecules at the back of the compound list, where the snapshot rigid stuff will fail. Maybe we can write a descriptive error for that case to catch.

Copy link
Contributor

@CalCraven CalCraven left a comment

Choose a reason for hiding this comment

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

This LGTM! Should be ready to merge


return gsd_snapshot, base_units
if rigid_info:
return gsd_snapshot, base_units, rigid_info
Copy link
Contributor

Choose a reason for hiding this comment

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

Let's be sure to raise this issue, maybe we could make a new GMSO issue for breaking changes that we should start collating.

@chrisjonesBSU
Copy link
Contributor Author

I'm just going to add a check for the hierarchy ordering of rigid and non-rigid, then it should be good to go.

@chrisjonesBSU chrisjonesBSU merged commit 0c9a661 into mosdef-hub:main May 6, 2025
14 of 15 checks passed
@chrisjonesBSU chrisjonesBSU deleted the rigid-bodies branch May 6, 2025 19:13
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
conversions conversions of GMSO to and from other format
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Implement rigid bodies for GSD writer.
2 participants