@@ -130,7 +130,7 @@ QDataStream &operator<<(QDataStream &ds, const OpenMMFrEnergyST &velver)
130
130
sds << velver.frequent_save_velocities << velver.molgroup << velver.solute << velver.solutehard
131
131
<< velver.solutetodummy << velver.solutefromdummy << velver.combiningRules << velver.CutoffType
132
132
<< velver.cutoff_distance << velver.field_dielectric << velver.Andersen_flag << velver.Andersen_frequency
133
- << velver.MCBarostat_flag << velver.MCBarostat_frequency << velver.ConstraintType << velver.Pressure
133
+ << velver.MCBarostat_flag << velver.MCBarostat_membrane_flag << velver. MCBarostat_frequency << velver.ConstraintType << velver.Pressure
134
134
<< velver.Temperature << velver.platform_type << velver.Restraint_flag << velver.CMMremoval_frequency
135
135
<< velver.buffer_frequency << velver.energy_frequency << velver.device_index << velver.precision
136
136
<< velver.Alchemical_value << velver.coulomb_power << velver.shift_delta << velver.delta_alchemical
@@ -152,7 +152,7 @@ QDataStream &operator>>(QDataStream &ds, OpenMMFrEnergyST &velver)
152
152
sds >> velver.frequent_save_velocities >> velver.molgroup >> velver.solute >> velver.solutehard >>
153
153
velver.solutetodummy >> velver.solutefromdummy >> velver.combiningRules >> velver.CutoffType >>
154
154
velver.cutoff_distance >> velver.field_dielectric >> velver.Andersen_flag >> velver.Andersen_frequency >>
155
- velver.MCBarostat_flag >> velver.MCBarostat_frequency >> velver.ConstraintType >> velver.Pressure >>
155
+ velver.MCBarostat_flag >> velver.MCBarostat_membrane_flag >> velver. MCBarostat_frequency >> velver.ConstraintType >> velver.Pressure >>
156
156
velver.Temperature >> velver.platform_type >> velver.Restraint_flag >> velver.CMMremoval_frequency >>
157
157
velver.buffer_frequency >> velver.energy_frequency >> velver.device_index >> velver.precision >>
158
158
velver.Alchemical_value >> velver.coulomb_power >> velver.shift_delta >> velver.delta_alchemical >>
@@ -180,7 +180,7 @@ OpenMMFrEnergyST::OpenMMFrEnergyST(bool frequent_save)
180
180
solutefromdummy(MoleculeGroup()), openmm_system(0 ), openmm_context(0 ), isSystemInitialised(false ),
181
181
isContextInitialised(false ), combiningRules(" arithmetic" ), CutoffType(" nocutoff" ),
182
182
cutoff_distance(1.0 * nanometer), field_dielectric(78.3 ), Andersen_flag(false ), Andersen_frequency(90.0 ),
183
- MCBarostat_flag(false ), MCBarostat_frequency(25 ), ConstraintType(" none" ), Pressure(1.0 * bar),
183
+ MCBarostat_flag(false ), MCBarostat_membrane_flag( false ), MCBarostat_frequency(25 ), ConstraintType(" none" ), Pressure(1.0 * bar),
184
184
Temperature(300.0 * kelvin), platform_type(" Reference" ), Restraint_flag(false ), CMMremoval_frequency(0 ),
185
185
buffer_frequency(0 ), energy_frequency(100 ), device_index(" 0" ), precision(" single" ), Alchemical_value(0.5 ),
186
186
coulomb_power(0 ), shift_delta(2.0 ), delta_alchemical(0.001 ), alchemical_array(), finite_diff_gradients(),
@@ -199,7 +199,7 @@ OpenMMFrEnergyST::OpenMMFrEnergyST(const MoleculeGroup &molecule_group, const Mo
199
199
solutefromdummy(solute_fromdummy), openmm_system(0 ), openmm_context(0 ), isSystemInitialised(false ),
200
200
isContextInitialised(false ), combiningRules(" arithmetic" ), CutoffType(" nocutoff" ),
201
201
cutoff_distance(1.0 * nanometer), field_dielectric(78.3 ), Andersen_flag(false ), Andersen_frequency(90.0 ),
202
- MCBarostat_flag(false ), MCBarostat_frequency(25 ), ConstraintType(" none" ), Pressure(1.0 * bar),
202
+ MCBarostat_flag(false ), MCBarostat_membrane_flag( false ), MCBarostat_frequency(25 ), ConstraintType(" none" ), Pressure(1.0 * bar),
203
203
Temperature(300.0 * kelvin), platform_type(" Reference" ), Restraint_flag(false ), CMMremoval_frequency(0 ),
204
204
buffer_frequency(0 ), energy_frequency(100 ), device_index(" 0" ), precision(" single" ), Alchemical_value(0.5 ),
205
205
coulomb_power(0 ), shift_delta(2.0 ), delta_alchemical(0.001 ), alchemical_array(), finite_diff_gradients(),
@@ -217,7 +217,7 @@ OpenMMFrEnergyST::OpenMMFrEnergyST(const OpenMMFrEnergyST &other)
217
217
isSystemInitialised(other.isSystemInitialised), isContextInitialised(other.isContextInitialised),
218
218
combiningRules(other.combiningRules), CutoffType(other.CutoffType), cutoff_distance(other.cutoff_distance),
219
219
field_dielectric(other.field_dielectric), Andersen_flag(other.Andersen_flag),
220
- Andersen_frequency(other.Andersen_frequency), MCBarostat_flag(other.MCBarostat_flag),
220
+ Andersen_frequency(other.Andersen_frequency), MCBarostat_flag(other.MCBarostat_flag), MCBarostat_membrane_flag(other.MCBarostat_membrane_flag),
221
221
MCBarostat_frequency(other.MCBarostat_frequency), ConstraintType(other.ConstraintType), Pressure(other.Pressure),
222
222
Temperature(other.Temperature), platform_type(other.platform_type), Restraint_flag(other.Restraint_flag),
223
223
CMMremoval_frequency(other.CMMremoval_frequency), buffer_frequency(other.buffer_frequency),
@@ -259,6 +259,7 @@ OpenMMFrEnergyST &OpenMMFrEnergyST::operator=(const OpenMMFrEnergyST &other)
259
259
Andersen_flag = other.Andersen_flag ;
260
260
Andersen_frequency = other.Andersen_frequency ;
261
261
MCBarostat_flag = other.MCBarostat_flag ;
262
+ MCBarostat_membrane_flag = other.MCBarostat_membrane_flag ;
262
263
MCBarostat_frequency = other.MCBarostat_frequency ;
263
264
ConstraintType = other.ConstraintType ;
264
265
Pressure = other.Pressure ;
@@ -302,7 +303,7 @@ bool OpenMMFrEnergyST::operator==(const OpenMMFrEnergyST &other) const
302
303
combiningRules == other.combiningRules and CutoffType == other.CutoffType and
303
304
cutoff_distance == other.cutoff_distance and field_dielectric == other.field_dielectric and
304
305
Andersen_flag == other.Andersen_flag and Andersen_frequency == other.Andersen_frequency and
305
- MCBarostat_flag == other.MCBarostat_flag and MCBarostat_frequency == other.MCBarostat_frequency and
306
+ MCBarostat_flag == other.MCBarostat_flag and MCBarostat_membrane_flag == other. MCBarostat_membrane_flag and MCBarostat_frequency == other.MCBarostat_frequency and
306
307
ConstraintType == other.ConstraintType and Pressure == other.Pressure and
307
308
Temperature == other.Temperature and platform_type == other.platform_type and
308
309
Restraint_flag == other.Restraint_flag and CMMremoval_frequency == other.CMMremoval_frequency and
@@ -1241,20 +1242,40 @@ void OpenMMFrEnergyST::initialise()
1241
1242
const double converted_Temperature = convertTo (Temperature.value (), kelvin);
1242
1243
const double converted_Pressure = convertTo (Pressure.value (), bar);
1243
1244
1244
- OpenMM::MonteCarloBarostat *barostat =
1245
- new OpenMM::MonteCarloBarostat (converted_Pressure, converted_Temperature, MCBarostat_frequency);
1245
+ if (MCBarostat_membrane_flag == true )
1246
+ {
1247
+ // Simple options for now: zero surface tension, XY isotropic, Z free
1248
+ const double surface_Tension = 0 ;
1249
+ OpenMM::MonteCarloMembraneBarostat::XYMode xymode = OpenMM::MonteCarloMembraneBarostat::XYIsotropic;
1250
+ OpenMM::MonteCarloMembraneBarostat::ZMode zmode = OpenMM::MonteCarloMembraneBarostat::ZFree;
1251
+ OpenMM::MonteCarloMembraneBarostat * barostat = new OpenMM::MonteCarloMembraneBarostat (converted_Pressure, surface_Tension, converted_Temperature, xymode, zmode, MCBarostat_frequency);
1246
1252
1247
- // Set The random seed
1248
- barostat->setRandomNumberSeed (random_seed);
1253
+ // Set The random seed
1254
+ barostat->setRandomNumberSeed (random_seed);
1255
+
1256
+ system_openmm->addForce (barostat);
1257
+ }
1258
+ else
1259
+ {
1260
+ OpenMM::MonteCarloBarostat *barostat =
1261
+ new OpenMM::MonteCarloBarostat (converted_Pressure, converted_Temperature, MCBarostat_frequency);
1249
1262
1250
- system_openmm->addForce (barostat);
1263
+ // Set The random seed
1264
+ barostat->setRandomNumberSeed (random_seed);
1265
+
1266
+ system_openmm->addForce (barostat);
1267
+ }
1251
1268
1252
1269
if (Debug)
1253
1270
{
1254
1271
qDebug () << " \n Monte Carlo Barostat set\n " ;
1255
1272
qDebug () << " Temperature = " << converted_Temperature << " K\n " ;
1256
1273
qDebug () << " Pressure = " << converted_Pressure << " bar\n " ;
1257
1274
qDebug () << " Frequency every " << MCBarostat_frequency << " steps\n " ;
1275
+ if (MCBarostat_membrane_flag)
1276
+ {
1277
+ qDebug () << " Membrane barostat, surface tension 0, XY isotropic, Z free\n " ;
1278
+ }
1258
1279
}
1259
1280
}
1260
1281
/* ******************************************************BONDED
@@ -4351,6 +4372,16 @@ bool OpenMMFrEnergyST::getMCBarostat(void)
4351
4372
return MCBarostat_flag;
4352
4373
}
4353
4374
4375
+ void OpenMMFrEnergyST::setMCBarostatMembrane (bool MCBarostat_membrane)
4376
+ {
4377
+ MCBarostat_membrane_flag = MCBarostat_membrane;
4378
+ }
4379
+
4380
+ bool OpenMMFrEnergyST::getMCBarostatMembrane (void )
4381
+ {
4382
+ return MCBarostat_membrane_flag;
4383
+ }
4384
+
4354
4385
/* * Get the Monte Carlo Barostat frequency in time speps */
4355
4386
int OpenMMFrEnergyST::getMCBarostatFrequency (void )
4356
4387
{
0 commit comments