Update Colvars to version 2018-12-14
[namd.git] / colvars / src / colvarbias_abf.cpp
index 771955a..e5edd92 100644 (file)
@@ -564,6 +564,8 @@ int colvarbias_abf::replica_share() {
   return COLVARS_OK;
 }
 
+
+
 void colvarbias_abf::write_gradients_samples(const std::string &prefix, bool append)
 {
   std::string  samples_out_name = prefix + ".count";
@@ -572,10 +574,7 @@ void colvarbias_abf::write_gradients_samples(const std::string &prefix, bool app
 
   std::ostream *samples_os =
     cvm::proxy->output_stream(samples_out_name, mode);
-  if (!samples_os) {
-    cvm::error("Error opening ABF samples file " + samples_out_name + " for writing");
-    return;
-  }
+  if (!samples_os) return;
   samples->write_multicol(*samples_os);
   cvm::proxy->close_output_stream(samples_out_name);
 
@@ -583,10 +582,7 @@ void colvarbias_abf::write_gradients_samples(const std::string &prefix, bool app
   if (num_variables() > 2) {
     std::string  samples_dx_out_name = prefix + ".count.dx";
     std::ostream *samples_dx_os = cvm::proxy->output_stream(samples_dx_out_name, mode);
-    if (!samples_os) {
-      cvm::error("Error opening samples file " + samples_dx_out_name + " for writing");
-      return;
-    }
+    if (!samples_os) return;
     samples->write_opendx(*samples_dx_os);
     *samples_dx_os << std::endl;
     cvm::proxy->close_output_stream(samples_dx_out_name);
@@ -594,10 +590,7 @@ void colvarbias_abf::write_gradients_samples(const std::string &prefix, bool app
 
   std::ostream *gradients_os =
     cvm::proxy->output_stream(gradients_out_name, mode);
-  if (!gradients_os) {
-    cvm::error("Error opening ABF gradient file " + gradients_out_name + " for writing");
-    return;
-  }
+  if (!gradients_os) return;
   gradients->write_multicol(*gradients_os);
   cvm::proxy->close_output_stream(gradients_out_name);
 
@@ -609,20 +602,14 @@ void colvarbias_abf::write_gradients_samples(const std::string &prefix, bool app
 
     std::string  pmf_out_name = prefix + ".pmf";
     std::ostream *pmf_os = cvm::proxy->output_stream(pmf_out_name, mode);
-    if (!pmf_os) {
-      cvm::error("Error opening pmf file " + pmf_out_name + " for writing");
-      return;
-    }
+    if (!pmf_os) return;
     pmf->write_multicol(*pmf_os);
 
     // In dimension higher than 2, dx is easier to handle and visualize
     if (num_variables() > 2) {
       std::string  pmf_dx_out_name = prefix + ".pmf.dx";
       std::ostream *pmf_dx_os = cvm::proxy->output_stream(pmf_dx_out_name, mode);
-      if (!pmf_dx_os) {
-        cvm::error("Error opening pmf file " + pmf_dx_out_name + " for writing");
-        return;
-      }
+      if (!pmf_dx_os) return;
       pmf->write_opendx(*pmf_dx_os);
       *pmf_dx_os << std::endl;
       cvm::proxy->close_output_stream(pmf_dx_out_name);
@@ -639,10 +626,7 @@ void colvarbias_abf::write_gradients_samples(const std::string &prefix, bool app
 
     std::ostream *z_samples_os =
       cvm::proxy->output_stream(z_samples_out_name, mode);
-    if (!z_samples_os) {
-      cvm::error("Error opening eABF z-histogram file " + z_samples_out_name + " for writing");
-      return;
-    }
+    if (!z_samples_os) return;
     z_samples->write_multicol(*z_samples_os);
     cvm::proxy->close_output_stream(z_samples_out_name);
 
@@ -651,10 +635,7 @@ void colvarbias_abf::write_gradients_samples(const std::string &prefix, bool app
 
       std::ostream *z_gradients_os =
         cvm::proxy->output_stream(z_gradients_out_name, mode);
-      if (!z_gradients_os) {
-        cvm::error("Error opening eABF z-gradient file " + z_gradients_out_name + " for writing");
-        return;
-      }
+      if (!z_gradients_os) return;
       z_gradients->write_multicol(*z_gradients_os);
       cvm::proxy->close_output_stream(z_gradients_out_name);
     }
@@ -672,10 +653,7 @@ void colvarbias_abf::write_gradients_samples(const std::string &prefix, bool app
 
     std::ostream *czar_gradients_os =
       cvm::proxy->output_stream(czar_gradients_out_name, mode);
-    if (!czar_gradients_os) {
-      cvm::error("Error opening CZAR gradient file " + czar_gradients_out_name + " for writing");
-      return;
-    }
+    if (!czar_gradients_os) return;
     czar_gradients->write_multicol(*czar_gradients_os);
     cvm::proxy->close_output_stream(czar_gradients_out_name);
 
@@ -688,20 +666,14 @@ void colvarbias_abf::write_gradients_samples(const std::string &prefix, bool app
 
       std::string  czar_pmf_out_name = prefix + ".czar.pmf";
       std::ostream *czar_pmf_os = cvm::proxy->output_stream(czar_pmf_out_name, mode);
-      if (!czar_pmf_os) {
-        cvm::error("Error opening CZAR pmf file " + czar_pmf_out_name + " for writing");
-        return;
-      }
+      if (!czar_pmf_os) return;
       czar_pmf->write_multicol(*czar_pmf_os);
 
       // In dimension higher than 2, dx is easier to handle and visualize
       if (num_variables() > 2) {
         std::string  czar_pmf_dx_out_name = prefix + ".czar.pmf.dx";
         std::ostream *czar_pmf_dx_os = cvm::proxy->output_stream(czar_pmf_dx_out_name, mode);
-        if (!czar_pmf_dx_os) {
-          cvm::error("Error opening CZAR pmf file " + czar_pmf_dx_out_name + " for writing");
-          return;
-        }
+        if (!czar_pmf_dx_os) return;
         czar_pmf->write_opendx(*czar_pmf_dx_os);
         *czar_pmf_dx_os << std::endl;
         cvm::proxy->close_output_stream(czar_pmf_dx_out_name);
@@ -854,3 +826,9 @@ std::istream & colvarbias_abf::read_state_data(std::istream& is)
 
   return is;
 }
+
+int colvarbias_abf::write_output_files()
+{
+  write_gradients_samples(output_prefix);
+  return COLVARS_OK;
+}