Skip to content

Commit 8f7716e

Browse files
committed
Replace original ring breaking schedule with DMR approach
1 parent e5a3f00 commit 8f7716e

1 file changed

Lines changed: 28 additions & 14 deletions

File tree

src/somd2/config/_config.py

Lines changed: 28 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1024,15 +1024,17 @@ def lambda_schedule(self, lambda_schedule):
10241024
self._lambda_schedule = _LambdaSchedule.charge_scaled_morph(0.2)
10251025
self._lambda_schedule_name = "charge_scaled_morph"
10261026
elif lambda_schedule == "ring_break_morph":
1027-
self._lambda_schedule = _LambdaSchedule.standard_morph()
10281027
self._lambda_schedule.prepend_stage(
10291028
"restraints_off", self._lambda_schedule.initial()
10301029
)
10311030
self._lambda_schedule.set_equation(
10321031
stage="restraints_off",
1033-
lever="restraint",
1032+
lever="morse_soft",
10341033
equation=1 - self._lambda_schedule.lam(),
10351034
)
1035+
self._lambda_schedule.set_equation(
1036+
stage="restraints_off", lever="morse_hard", equation=0
1037+
)
10361038
self._lambda_schedule.set_equation(
10371039
stage="restraints_off",
10381040
lever="bond_k",
@@ -1071,13 +1073,17 @@ def lambda_schedule(self, lambda_schedule):
10711073
* self._lambda_schedule.initial()
10721074
+ self._lambda_schedule.lam() * self._lambda_schedule.final(),
10731075
)
1074-
10751076
self._lambda_schedule.prepend_stage(
10761077
"potential_swap", self._lambda_schedule.initial()
10771078
)
10781079
self._lambda_schedule.set_equation(
10791080
stage="potential_swap",
1080-
lever="restraint",
1081+
lever="morse_hard",
1082+
equation=1 - self._lambda_schedule.lam(),
1083+
)
1084+
self._lambda_schedule.set_equation(
1085+
stage="potential_swap",
1086+
lever="morse_soft",
10811087
equation=0 + self._lambda_schedule.lam(),
10821088
)
10831089
self._lambda_schedule.set_equation(
@@ -1114,11 +1120,12 @@ def lambda_schedule(self, lambda_schedule):
11141120
lever="torsion_phase",
11151121
equation=self._lambda_schedule.initial(),
11161122
)
1117-
11181123
self._lambda_schedule.set_equation(
1119-
stage="morph", lever="restraint", equation=0
1124+
stage="morph", lever="morse_hard", equation=0
1125+
)
1126+
self._lambda_schedule.set_equation(
1127+
stage="morph", lever="morse_soft", equation=0
11201128
)
1121-
11221129
self._lambda_schedule.set_equation(
11231130
stage="morph",
11241131
lever="bond_k",
@@ -1149,13 +1156,13 @@ def lambda_schedule(self, lambda_schedule):
11491156
lever="torsion_phase",
11501157
equation=self._lambda_schedule.final(),
11511158
)
1152-
self._lambda_schedule_name = "ring_break_morph"
11531159
elif lambda_schedule == "reverse_ring_break_morph":
1154-
self._lambda_schedule = _LambdaSchedule.standard_morph()
11551160
self._lambda_schedule.set_equation(
1156-
stage="morph", lever="restraint", equation=0
1161+
stage="morph", lever="morse_hard", equation=0
1162+
)
1163+
self._lambda_schedule.set_equation(
1164+
stage="morph", lever="morse_soft", equation=0
11571165
)
1158-
11591166
self._lambda_schedule.set_equation(
11601167
stage="morph",
11611168
lever="bond_k",
@@ -1192,9 +1199,12 @@ def lambda_schedule(self, lambda_schedule):
11921199
)
11931200
self._lambda_schedule.set_equation(
11941201
stage="bonded_perturb",
1195-
lever="restraint",
1202+
lever="morse_soft",
11961203
equation=0 + self._lambda_schedule.lam(),
11971204
)
1205+
self._lambda_schedule.set_equation(
1206+
stage="bonded_perturb", lever="morse_hard", equation=0
1207+
)
11981208
self._lambda_schedule.set_equation(
11991209
stage="bonded_perturb",
12001210
lever="bond_k",
@@ -1239,7 +1249,12 @@ def lambda_schedule(self, lambda_schedule):
12391249
)
12401250
self._lambda_schedule.set_equation(
12411251
stage="potential_swap",
1242-
lever="restraint",
1252+
lever="morse_hard",
1253+
equation=0 + self._lambda_schedule.lam(),
1254+
)
1255+
self._lambda_schedule.set_equation(
1256+
stage="potential_swap",
1257+
lever="morse_soft",
12431258
equation=1 - self._lambda_schedule.lam(),
12441259
)
12451260
self._lambda_schedule.set_equation(
@@ -1276,7 +1291,6 @@ def lambda_schedule(self, lambda_schedule):
12761291
lever="torsion_phase",
12771292
equation=self._lambda_schedule.final(),
12781293
)
1279-
self._lambda_schedule_name = "reverse_ring_break_morph"
12801294
else:
12811295
try:
12821296
self._lambda_schedule = self._from_hex(lambda_schedule)

0 commit comments

Comments
 (0)