Skip to content

Commit

Permalink
Merge pull request #284 from OpenBioSim/fix_283
Browse files Browse the repository at this point in the history
Fix issue #283
  • Loading branch information
lohedges authored Feb 4, 2025
2 parents a5278e9 + 77a4447 commit 9de605e
Showing 1 changed file with 47 additions and 2 deletions.
49 changes: 47 additions & 2 deletions src/sire/mol/_dynamics.py
Original file line number Diff line number Diff line change
Expand Up @@ -1001,28 +1001,42 @@ def run(
save_frequency = 25
else:
save_frequency = save_frequency.to(picosecond)
no_save = False
else:
no_save = True
save_frequency = steps_to_run + 1

if energy_frequency != 0:
no_save_energy = False
if energy_frequency is None:
if self._map.specified("energy_frequency"):
energy_frequency = (
self._map["energy_frequency"].value().to(picosecond)
)
else:
energy_frequency = save_frequency
no_save_energy = no_save
else:
energy_frequency = energy_frequency.to(picosecond)
else:
energy_frequency = steps_to_run + 1
no_save_energy = True

if frame_frequency != 0:
no_save_frame = False
if frame_frequency is None:
if self._map.specified("frame_frequency"):
frame_frequency = (
self._map["frame_frequency"].value().to(picosecond)
)
else:
frame_frequency = save_frequency
no_save_frame = no_save
else:
frame_frequency = frame_frequency.to(picosecond)
else:
frame_frequency = steps_to_run + 1
no_save_frame = True

completed = 0

Expand Down Expand Up @@ -1095,9 +1109,38 @@ class NeedsMinimiseError(Exception):
pass

nsteps_before_run = self._current_step
# if this is the first call, then set the save frequencies
if nsteps_before_run == 0:
self._next_save_frame = frame_frequency_steps
self._next_save_energy = energy_frequency_steps
self._prev_frame_frequency_steps = frame_frequency_steps
self._prev_energy_frequency_steps = energy_frequency_steps
self._prev_no_frame = no_save_frame
self._prev_no_energy = no_save_energy
# handle adjustments to the save frequencies
else:
if frame_frequency_steps != self._prev_frame_frequency_steps:
if self._prev_no_frame:
self._next_save_frame = nsteps_before_run + frame_frequency_steps
else:
self._next_save_frame = (
self._next_save_frame
+ frame_frequency_steps
- self._prev_frame_frequency_steps
)
if energy_frequency_steps != self._prev_energy_frequency_steps:
if self._prev_no_energy:
self._next_save_energy = nsteps_before_run + energy_frequency_steps
else:
self._next_save_energy = (
self._next_save_energy
+ energy_frequency_steps
- self._prev_energy_frequency_steps
)
self._prev_no_frame = no_save_frame
self._prev_frame_frequency_steps = frame_frequency_steps
self._prev_no_energy = no_save_energy
self._prev_energy_frequency_steps = energy_frequency_steps

from ..base import ProgressBar
from ..units import second
Expand All @@ -1123,7 +1166,8 @@ class NeedsMinimiseError(Exception):
):
save_frame = True
self._next_save_frame += frame_frequency_steps
block_size = frame_frequency_steps
if frame_frequency_steps < block_size:
block_size = frame_frequency_steps
else:
save_frame = False

Expand All @@ -1136,7 +1180,8 @@ class NeedsMinimiseError(Exception):
):
save_energy = True
self._next_save_energy += energy_frequency_steps
block_size = energy_frequency_steps
if energy_frequency_steps < block_size:
block_size = energy_frequency_steps
else:
save_energy = False

Expand Down

0 comments on commit 9de605e

Please sign in to comment.