Skip to content

integrators: register NpT barostat as a readable parameter (bug-sweep #8) - #5351

Draft
RudolfWeeber wants to merge 1 commit into
espressomd:pythonfrom
RudolfWeeber:fix/bug-8-npt-barostat-restore
Draft

integrators: register NpT barostat as a readable parameter (bug-sweep #8)#5351
RudolfWeeber wants to merge 1 commit into
espressomd:pythonfrom
RudolfWeeber:fix/bug-8-npt-barostat-restore

Conversation

@RudolfWeeber

Copy link
Copy Markdown
Contributor

VelocityVerletIsoNPT::do_construct reads five construct-time parameters
(ext_pressure, piston, cubic_box, direction, barostat) but add_parameters()
registered only the first four. Because ObjectHandle::serialize() emits only
registered parameters and there is no get_internal_state override, the
barostat string (m_barostat) was never serialized. On checkpoint restore (or
any script-interface deserialize), do_construct fell back to the default
'Andersen', so an MTK-configured NpT simulation silently resumed with the
Andersen barostat (a distinct propagation scheme), and the active barostat
could not be read back from Python.

Fix: register 'barostat' as a read-only AutoParameter returning m_barostat,
mirroring the existing ext_pressure/piston/direction/cubic_box entries. This
makes the value round-trip through serialize/deserialize (no longer defaulting
to Andersen) and readable via get_params(). Read-only is correct because the
barostat is only meaningful at construction, where activate() consumes it to
select the integ_switch.

Co-Authored-By: Claude Opus 4.8 noreply@anthropic.com

🤖 Generated with Claude Code

)

VelocityVerletIsoNPT::do_construct reads five construct-time parameters
(ext_pressure, piston, cubic_box, direction, barostat) but add_parameters()
registered only the first four. Because ObjectHandle::serialize() emits only
registered parameters and there is no get_internal_state override, the
barostat string (m_barostat) was never serialized. On checkpoint restore (or
any script-interface deserialize), do_construct fell back to the default
'Andersen', so an MTK-configured NpT simulation silently resumed with the
Andersen barostat (a distinct propagation scheme), and the active barostat
could not be read back from Python.

Fix: register 'barostat' as a read-only AutoParameter returning m_barostat,
mirroring the existing ext_pressure/piston/direction/cubic_box entries. This
makes the value round-trip through serialize/deserialize (no longer defaulting
to Andersen) and readable via get_params(). Read-only is correct because the
barostat is only meaningful at construction, where activate() consumes it to
select the integ_switch.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@RudolfWeeber RudolfWeeber added this to the ESPResSo 5.0.2 milestone Jul 23, 2026
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