@@ -109,11 +109,13 @@ def __init__(
109109 include_constrained_energies = False ,
110110 dynamic_constraints = True ,
111111 ghost_modifications = True ,
112+ fix_perturbable_zero_sigmas = False ,
112113 charge_difference = None ,
113114 coalchemical_restraint_dist = None ,
114115 com_reset_frequency = 10 ,
115116 minimise = True ,
116117 minimisation_constraints = False ,
118+ minimisation_errors = False ,
117119 equilibration_time = "0 ps" ,
118120 equilibration_timestep = "2 fs" ,
119121 equilibration_constraints = True ,
@@ -258,6 +260,9 @@ def __init__(
258260 sampling of non-physical conformations. We implement the recommended
259261 modifcations from https://pubs.acs.org/doi/10.1021/acs.jctc.0c01328
260262
263+ fix_perturbable_zero_sigmas: bool
264+ Whether to prevent LJ sigma values being perturbed to zero.
265+
261266 charge_difference: int
262267 The charge difference between the two end states. (Perturbed minus
263268 reference.) If None, then alchemical ions will automatically be
@@ -285,6 +290,9 @@ def __init__(
285290 constraints will be used. If True, then the use of constraints will be
286291 determined based on the value of 'equilibration_constraints'.
287292
293+ minimisation_errors: bool
294+ Whether to raise an exception if a minimisation fails to converge.
295+
288296 equilibration_time: str
289297 Time interval for equilibration. Only simulations starting from
290298 scratch will be equilibrated.
@@ -498,11 +506,13 @@ def __init__(
498506 self .include_constrained_energies = include_constrained_energies
499507 self .dynamic_constraints = dynamic_constraints
500508 self .ghost_modifications = ghost_modifications
509+ self .fix_perturbable_zero_sigmas = fix_perturbable_zero_sigmas
501510 self .charge_difference = charge_difference
502511 self .coalchemical_restraint_dist = coalchemical_restraint_dist
503512 self .com_reset_frequency = com_reset_frequency
504513 self .minimise = minimise
505514 self .minimisation_constraints = minimisation_constraints
515+ self .minimisation_errors = minimisation_errors
506516 self .equilibration_time = equilibration_time
507517 self .equilibration_timestep = equilibration_timestep
508518 self .equilibration_constraints = equilibration_constraints
@@ -1145,6 +1155,16 @@ def ghost_modifications(self, ghost_modifications):
11451155 raise ValueError ("'ghost_modifications' must be of type 'bool'" )
11461156 self ._ghost_modifications = ghost_modifications
11471157
1158+ @property
1159+ def fix_perturbable_zero_sigmas (self ):
1160+ return self ._fix_perturbable_zero_sigmas
1161+
1162+ @fix_perturbable_zero_sigmas .setter
1163+ def fix_perturbable_zero_sigmas (self , fix_perturbable_zero_sigmas ):
1164+ if not isinstance (fix_perturbable_zero_sigmas , bool ):
1165+ raise ValueError ("'fix_perturbable_zero_sigmas' must be of type 'bool'" )
1166+ self ._fix_perturbable_zero_sigmas = fix_perturbable_zero_sigmas
1167+
11481168 @property
11491169 def charge_difference (self ):
11501170 return self ._charge_difference
@@ -1222,6 +1242,16 @@ def minimisation_constraints(self, minimisation_constraints):
12221242 raise ValueError ("'minimisation_constraints' must be of type 'bool'" )
12231243 self ._minimisation_constraints = minimisation_constraints
12241244
1245+ @property
1246+ def minimisation_errors (self ):
1247+ return self ._minimisation_errors
1248+
1249+ @minimisation_errors .setter
1250+ def minimisation_errors (self , minimisation_errors ):
1251+ if not isinstance (minimisation_errors , bool ):
1252+ raise ValueError ("'minimisation_errors' must be of type 'bool'" )
1253+ self ._minimisation_errors = minimisation_errors
1254+
12251255 @property
12261256 def equilibration_time (self ):
12271257 return self ._equilibration_time
0 commit comments