@@ -1001,28 +1001,42 @@ def run(
1001
1001
save_frequency = 25
1002
1002
else :
1003
1003
save_frequency = save_frequency .to (picosecond )
1004
+ no_save = False
1005
+ else :
1006
+ no_save = True
1007
+ save_frequency = steps_to_run + 1
1004
1008
1005
1009
if energy_frequency != 0 :
1010
+ no_save_energy = False
1006
1011
if energy_frequency is None :
1007
1012
if self ._map .specified ("energy_frequency" ):
1008
1013
energy_frequency = (
1009
1014
self ._map ["energy_frequency" ].value ().to (picosecond )
1010
1015
)
1011
1016
else :
1012
1017
energy_frequency = save_frequency
1018
+ no_save_energy = no_save
1013
1019
else :
1014
1020
energy_frequency = energy_frequency .to (picosecond )
1021
+ else :
1022
+ energy_frequency = steps_to_run + 1
1023
+ no_save_energy = True
1015
1024
1016
1025
if frame_frequency != 0 :
1026
+ no_save_frame = False
1017
1027
if frame_frequency is None :
1018
1028
if self ._map .specified ("frame_frequency" ):
1019
1029
frame_frequency = (
1020
1030
self ._map ["frame_frequency" ].value ().to (picosecond )
1021
1031
)
1022
1032
else :
1023
1033
frame_frequency = save_frequency
1034
+ no_save_frame = no_save
1024
1035
else :
1025
1036
frame_frequency = frame_frequency .to (picosecond )
1037
+ else :
1038
+ frame_frequency = steps_to_run + 1
1039
+ no_save_frame = True
1026
1040
1027
1041
completed = 0
1028
1042
@@ -1095,9 +1109,38 @@ class NeedsMinimiseError(Exception):
1095
1109
pass
1096
1110
1097
1111
nsteps_before_run = self ._current_step
1112
+ # if this is the first call, then set the save frequencies
1098
1113
if nsteps_before_run == 0 :
1099
1114
self ._next_save_frame = frame_frequency_steps
1100
1115
self ._next_save_energy = energy_frequency_steps
1116
+ self ._prev_frame_frequency_steps = frame_frequency_steps
1117
+ self ._prev_energy_frequency_steps = energy_frequency_steps
1118
+ self ._prev_no_frame = no_save_frame
1119
+ self ._prev_no_energy = no_save_energy
1120
+ # handle adjustments to the save frequencies
1121
+ else :
1122
+ if frame_frequency_steps != self ._prev_frame_frequency_steps :
1123
+ if self ._prev_no_frame :
1124
+ self ._next_save_frame = nsteps_before_run + frame_frequency_steps
1125
+ else :
1126
+ self ._next_save_frame = (
1127
+ self ._next_save_frame
1128
+ + frame_frequency_steps
1129
+ - self ._prev_frame_frequency_steps
1130
+ )
1131
+ if energy_frequency_steps != self ._prev_energy_frequency_steps :
1132
+ if self ._prev_no_energy :
1133
+ self ._next_save_energy = nsteps_before_run + energy_frequency_steps
1134
+ else :
1135
+ self ._next_save_energy = (
1136
+ self ._next_save_energy
1137
+ + energy_frequency_steps
1138
+ - self ._prev_energy_frequency_steps
1139
+ )
1140
+ self ._prev_no_frame = no_save_frame
1141
+ self ._prev_frame_frequency_steps = frame_frequency_steps
1142
+ self ._prev_no_energy = no_save_energy
1143
+ self ._prev_energy_frequency_steps = energy_frequency_steps
1101
1144
1102
1145
from ..base import ProgressBar
1103
1146
from ..units import second
@@ -1123,7 +1166,8 @@ class NeedsMinimiseError(Exception):
1123
1166
):
1124
1167
save_frame = True
1125
1168
self ._next_save_frame += frame_frequency_steps
1126
- block_size = frame_frequency_steps
1169
+ if frame_frequency_steps < block_size :
1170
+ block_size = frame_frequency_steps
1127
1171
else :
1128
1172
save_frame = False
1129
1173
@@ -1136,7 +1180,8 @@ class NeedsMinimiseError(Exception):
1136
1180
):
1137
1181
save_energy = True
1138
1182
self ._next_save_energy += energy_frequency_steps
1139
- block_size = energy_frequency_steps
1183
+ if energy_frequency_steps < block_size :
1184
+ block_size = energy_frequency_steps
1140
1185
else :
1141
1186
save_energy = False
1142
1187
0 commit comments