Enable constant pressure with constant pH 72/2872/1
authorBrian Radak <brian.radak@gmail.com>
Mon, 7 Aug 2017 16:01:12 +0000 (11:01 -0500)
committerBrian Radak <brian.radak@gmail.com>
Mon, 7 Aug 2017 16:01:12 +0000 (11:01 -0500)
- Added new global feature to detect and track barostat information
  - there may be some as yet undetected bugs here with using
    Berendsen methods, I might be misusing global variables

- If a barostat is invoked, it is simply turned off during neMD/MC

Change-Id: I823971f81c30125711abcc886bae643ff3702971

lib/namdcph/namdcph/namdcph.core.tcl
lib/namdcph/namdcph/namdtcl.tcl

index 3d66921..516d0c1 100644 (file)
@@ -500,6 +500,9 @@ proc ::namdcph::runSwitch {numsteps segresidList} {
     outputEnergies $numsteps
     dcdFreq 0
     firstTimestep 0
+    if {$::barostatIsSet && [$::barostatCmd]} {
+        $::barostatCmd off
+    }
     # (2) Build the alchemical switch inputs.
     #
     alchemify $segresidList
@@ -524,6 +527,10 @@ proc ::namdcph::runSwitch {numsteps segresidList} {
     outputEnergies $storedOutputEnergies
     dcdFreq $storedDCDFreq
     firstTimestep $storedTimestep
+    if {$::barostatIsSet && ![$::barostatCmd]} {
+        $::barostatCmd on
+    }
+
     if {$accept} {
         cphPrint "Switch accepted!"
         dealchemify $segresidList
@@ -840,9 +847,7 @@ proc ::namdcph::checkSettings {} {
     }
 
     getThermostat
-    if {[getBarostat]} { ; # For now, disable constant pressure.
-        cphAbort "Constant pH does not currently support the use of a barostat."
-    }
+    getBarostat
     return
 }
 
index d66745f..e07c147 100644 (file)
@@ -145,10 +145,12 @@ proc checkArglistIsMultiple {argList multi} {
 # >> $::thermostatCmd off ;# turn off the termostat
 #
 # =============================================================================
+global thermostatIsSet 0
 global thermostatName ""
 global thermostatCmd ""
 global thermostatTempCmd ""
 
+global barostatIsSet 0
 global barostatName ""
 global barostatCmd ""
 global barostatPresCmd ""
@@ -164,6 +166,7 @@ global barostatTempCmd ""
 # Return 1 if a thermostat is set, else return 0.
 #
 proc getThermostat {{forbidBerendsen true}} {
+    global thermostatIsSet
     global thermostatName ""
     global thermostatCmd ""
     global thermostatTempCmd ""
@@ -189,9 +192,11 @@ proc getThermostat {{forbidBerendsen true}} {
             set thermostatTempCmd tCoupleTemp
         }
     } else {
-        return 0 
+        set thermostatIsSet 0 
+        return 0
     }
-    return 1
+    set thermostatIsSet 1
+    return 1 
 }
 
 # getBarostat
@@ -204,6 +209,7 @@ proc getThermostat {{forbidBerendsen true}} {
 # Return 1 if a barostat is set, else return 0.
 #
 proc getBarostat {{forbidBerendsen true}} {
+    global barostatIsSet
     global barostatName ""
     global barostatCmd ""
     global barostatPresCmd ""
@@ -223,9 +229,11 @@ proc getBarostat {{forbidBerendsen true}} {
             set barostatPresCmd berendsenPressureTarget
         }
     } else {
-        return 0 
+        set barostatIsSet 0
+        return 0
     }
-    return 1
+    set barostatIsSet 1
+    return 1 
 }
 
 # Alchemical Interactions