Background
The MM3 .fld parser already reads stretch-bend cross-term entries
(ptype="sb") at q2mm/io/mm3.py:498-525, but those terms are never
mapped into ForceField for any of the three MM backends:
q2mm/backends/mm/openmm.py — zero stretch_bend references
q2mm/backends/mm/tinker.py — zero stretch_bend references
q2mm/backends/mm/jax_engine.py — zero stretch_bend references
So all three backends ignore stretch-bend terms equally. This is a
symmetric gap, not a parity bug — JAX matches OpenMM on every system
in the test suite and the published-FF validation page.
Why we're not fixing it now
It would touch:
- The MM3 parser →
ForceField model (new StretchBendParam)
- OpenMM
CustomCompoundBondForce (or equivalent) wiring
- Tinker engine wiring (already handled internally by Tinker — would
need to verify)
- JAX
_compile_energy_fn + a new _stretch_bend_energy helper
- Three-way parity tests on a system that actually has measurable S-B
contributions (none of our current benchmarks do)
That work isn't justified until a benchmark or user workflow
demonstrably depends on it.
Reopen when
A user reports a parameterization where the QM Hessian off-diagonal
bond/angle coupling is too large to absorb into the bond and angle
force constants alone, AND a published MM3 force field with non-zero
S-B parameters needs to be reproduced.
Source
Wrap-up PR (feat/wrap-up-analytical) — see
plan.md Phase 6 deferral rationale.
Refs #176.
Background
The MM3
.fldparser already reads stretch-bend cross-term entries(
ptype="sb") atq2mm/io/mm3.py:498-525, but those terms are nevermapped into
ForceFieldfor any of the three MM backends:q2mm/backends/mm/openmm.py— zerostretch_bendreferencesq2mm/backends/mm/tinker.py— zerostretch_bendreferencesq2mm/backends/mm/jax_engine.py— zerostretch_bendreferencesSo all three backends ignore stretch-bend terms equally. This is a
symmetric gap, not a parity bug — JAX matches OpenMM on every system
in the test suite and the published-FF validation page.
Why we're not fixing it now
It would touch:
ForceFieldmodel (newStretchBendParam)CustomCompoundBondForce(or equivalent) wiringneed to verify)
_compile_energy_fn+ a new_stretch_bend_energyhelpercontributions (none of our current benchmarks do)
That work isn't justified until a benchmark or user workflow
demonstrably depends on it.
Reopen when
A user reports a parameterization where the QM Hessian off-diagonal
bond/angle coupling is too large to absorb into the bond and angle
force constants alone, AND a published MM3 force field with non-zero
S-B parameters needs to be reproduced.
Source
Wrap-up PR (feat/wrap-up-analytical) — see
plan.mdPhase 6 deferral rationale.Refs #176.