Skip to content

Add softcore ring-breaking nonbonded force#442

Merged
lohedges merged 4 commits into
develfrom
feature_ring_break_softcore
May 13, 2026
Merged

Add softcore ring-breaking nonbonded force#442
lohedges merged 4 commits into
develfrom
feature_ring_break_softcore

Conversation

@lohedges
Copy link
Copy Markdown
Contributor

This PR adds support for softcore ring-breaking and ring-making forces to smooth the onset of nonbonded forces when the ring topology changes, i.e. we don't immediately go from zero to full nonbonded, which can introduce a large repulsion energy. The code follows the same approach as the ghost14 force field, only for the atoms involved in the ring-breaking bond. The required atoms are flagged during the BioSimSpace merge code and a unit test has been added to somd2 to ensure that the new forces are present when they should be and are active/inactive at the correct points in the schedule. Putting these tests in somd2 makes sure that we are testing the producing ring-breaking schedules, e.g. we don't have to duplicate and synchronise them here.

Testing on several complex perturbations has indicated that the new forces improve stability and overlap in the vicinity of the nonbonded onset. The major contributor to poor overlap is still the large conformational change (and resulting nonbonded energy change) as the ring topology adjusts, but these additions help as a stability safety net when the bond atoms get too close.

  • I confirm that I have merged the latest version of devel into this branch before issuing this pull request (e.g. by running git pull origin devel): [y]
  • I confirm that I have added a test for any new functionality in this pull request: [y]
  • I confirm that I have added documentation (e.g. a new tutorial page or detailed guide) for any new functionality in this pull request: [y]
  • I confirm that I have added a changelog entry to the changelog (we will add a link to this PR as part of the review): [y]
  • I confirm that I have permission to release this code under the GPL3 license: [y]

@lohedges
Copy link
Copy Markdown
Contributor Author

I've realised that I will also need to exclude one of the atoms in the bond pair from the GhostNonGhostForce if it is a ghost in one end state. This could happen in a perturbation where you add a dummy chain at one state, then bond it to an existing ring. As such, the atom at the end of the chain would also a ghost.

@lohedges
Copy link
Copy Markdown
Contributor Author

Actually, easier the other way round, i.e. don't create this force if a bond atom is a ghost.

@lohedges lohedges merged commit f31f3ea into devel May 13, 2026
13 of 15 checks passed
@lohedges lohedges deleted the feature_ring_break_softcore branch May 13, 2026 13:49
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant