Add options for separate inverse temperature (beta) multipliers for fields and couplings. nonMC_send
authorDariusz Murakowski <murakdar@mit.edu>
Mon, 27 Jul 2015 21:41:35 +0000 (17:41 -0400)
committerDariusz Murakowski <murakdar@mit.edu>
Mon, 27 Jul 2015 21:41:35 +0000 (17:41 -0400)
mainQEE.cpp
qEpitopeEval.cpp
qEpitopeEval.h

index 04676cd..fa5a01c 100755 (executable)
@@ -135,6 +135,8 @@ int main(int argc, char *argv[]) {
 \r
         else if (strcmp(argv[i],"-trackE")==0)   { r.trackE=true;                                                           }\r
         else if (strcmp(argv[i],"-randInit")==0) { r.randomStart=true;                                                      }\r
+        else if (strcmp(argv[i],"-betah")==0) { if (++i==argc) break; else r.betah=strtodouble(argv[i]);                    }\r
+        else if (strcmp(argv[i],"-betaJ")==0) { if (++i==argc) break; else r.betaJ=strtodouble(argv[i]);                    }\r
         \r
         else printf("Unrecognized command! '%s'\n",argv[i]);\r
         \r
index ba6d3bc..1231a40 100755 (executable)
@@ -34,11 +34,15 @@ void runEpitopeEval(RunParameters &r, std::vector<std::vector<int> > &eStates, s
         \r
     if (dataIn!=NULL) getCouplings(dataIn,J);\r
     else { printf("Error reading input from file %s",r.getInfile().c_str()); exit(1); }\r
-    \r
+\r
     // Resize correlations and expJ\r
     \r
     int N = sizetolength(J.size());\r
     \r
+    // apply temperature multipliers to fields and couplings\r
+    for (int i=0; i<N; i++) { for (int j=0; j<J[i].size(); j++) { J[i][j] *= r.betah; } }\r
+    for (int i=N; i<J.size(); i++) { for (int j=0; j<J[i].size(); j++) { J[i][j] *= r.betaJ; } }\r
+    \r
     pk.resize(N+1, 0);\r
     for (int i=0;i<J.size();i++) { p.push_back(std::vector<double>(J[i].size(),0)); expJ.push_back(std::vector<double>(J[i].size(),0)); }\r
     for (int i=0;i<J.size();i++) { for (int j=0;j<J[i].size();j++) expJ[i][j] = exp(J[i][j]); }\r
index 6ee3345..5a103cf 100755 (executable)
@@ -37,6 +37,9 @@ public:
 \r
     bool trackE;                    // if true, save relative contribution to energy from fields and couplings\r
     bool randomStart;               // if true, set the initial state randomly\r
+\r
+    double betah;                   // inverse temperature multiplier for fields\r
+    double betaJ;                   // inverse temperature multiplier for couplings\r
     \r
     RunParameters() {\r
         \r
@@ -55,6 +58,9 @@ public:
 \r
         trackE = false;\r
         randomStart = false;\r
+\r
+        betah = 1.0;\r
+        betaJ = 1.0;\r
         \r
     }\r
     std::string getInfile()                   { return (directory+"/"+infile+".j");                   }\r