From 71df48bd6add435f788393953286968e280f6b13 Mon Sep 17 00:00:00 2001 From: sjplimp Date: Thu, 30 Apr 2015 14:09:30 +0000 Subject: [PATCH 1/8] git-svn-id: svn://svn.icms.temple.edu/lammps-ro/trunk@13443 f3b2605a-c512-4ea7-a41b-209d697bcdaa --- doc/PDF/colvars-refman-lammps.pdf | Bin 528423 -> 528941 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/doc/PDF/colvars-refman-lammps.pdf b/doc/PDF/colvars-refman-lammps.pdf index e06b6608148c3e35d1e593ee7af363264b34ff15..706617bcd58ca4c23b848e1b33808414ab3c7e46 100644 GIT binary patch delta 96542 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�sZ`to9s^OGbcF<=r*g!*m?QpcZ*B_ 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≶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 SB6vrfO|Sd_ delta 96155 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

9jq*{2vA*r@5fTAB*}3Uj%ySl0Y6Wux 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 Date: Thu, 30 Apr 2015 14:09:42 +0000 Subject: [PATCH 2/8] git-svn-id: svn://svn.icms.temple.edu/lammps-ro/trunk@13444 f3b2605a-c512-4ea7-a41b-209d697bcdaa --- lib/colvars/Makefile.fermi | 21 +- lib/colvars/Makefile.g++ | 35 +- lib/colvars/Makefile.mingw32-cross | 20 +- lib/colvars/Makefile.mingw64-cross | 20 +- lib/colvars/colvar.cpp | 5 +- lib/colvars/colvar.h | 2 +- lib/colvars/colvaratoms.cpp | 6 +- lib/colvars/colvaratoms.h | 4 - lib/colvars/colvarbias.h | 14 +- lib/colvars/colvarbias_abf.cpp | 205 +--------- lib/colvars/colvarbias_abf.h | 36 +- lib/colvars/colvarbias_meta.cpp | 573 ++++++++++++++------------- lib/colvars/colvarbias_meta.h | 2 + lib/colvars/colvarbias_restraint.h | 2 +- lib/colvars/colvarcomp_distances.cpp | 37 +- lib/colvars/colvarcomp_rotations.cpp | 4 +- lib/colvars/colvarmodule.cpp | 45 ++- lib/colvars/colvarmodule.h | 14 +- lib/colvars/colvarparse.cpp | 2 + lib/colvars/colvarparse.h | 2 + lib/colvars/colvarscript.cpp | 13 +- lib/colvars/colvartypes.cpp | 1 - 22 files changed, 438 insertions(+), 625 deletions(-) diff --git a/lib/colvars/Makefile.fermi b/lib/colvars/Makefile.fermi index 1f4b5a5b01..2923b564e1 100644 --- a/lib/colvars/Makefile.fermi +++ b/lib/colvars/Makefile.fermi @@ -1,4 +1,4 @@ -# library build makefile for colvars module +# library build -*- makefile -*- for colvars module # which file will be copied to Makefile.lammps @@ -16,11 +16,11 @@ SHELL = /bin/sh # ------ DEFINITIONS ------ SRC = colvaratoms.cpp colvarbias_abf.cpp colvarbias_alb.cpp colvarbias.cpp \ - colvarbias_meta.cpp colvarbias_restraint.cpp colvarcomp_angles.cpp \ - colvarcomp_coordnums.cpp colvarcomp.cpp colvarcomp_distances.cpp \ - colvarcomp_protein.cpp colvarcomp_rotations.cpp colvar.cpp colvargrid.cpp \ - colvarmodule.cpp colvarparse.cpp colvarscript.cpp colvartypes.cpp \ - colvarvalue.cpp + colvarbias_histogram.cpp colvarbias_meta.cpp colvarbias_restraint.cpp \ + colvarcomp_angles.cpp colvarcomp_coordnums.cpp colvarcomp.cpp \ + colvarcomp_distances.cpp colvarcomp_protein.cpp colvarcomp_rotations.cpp \ + colvar.cpp colvargrid.cpp colvarmodule.cpp colvarparse.cpp \ + colvarscript.cpp colvartypes.cpp colvarvalue.cpp LIB = libcolvars.a OBJ = $(SRC:.cpp=.o) @@ -63,6 +63,9 @@ colvarbias_alb.o: colvarbias_alb.cpp colvarmodule.h colvartypes.h \ colvarbias_restraint.h colvarbias.h colvarbias.o: colvarbias.cpp colvarmodule.h colvartypes.h colvarproxy.h \ colvarvalue.h colvarbias.h colvar.h colvarparse.h +colvarbias_histogram.o: colvarbias_histogram.cpp colvarmodule.h \ + colvartypes.h colvarproxy.h colvarvalue.h colvar.h colvarparse.h \ + colvarbias_histogram.h colvarbias.h colvargrid.h colvarbias_meta.o: colvarbias_meta.cpp colvar.h colvarmodule.h \ colvartypes.h colvarproxy.h colvarvalue.h colvarparse.h \ colvarbias_meta.h colvarbias.h colvargrid.h @@ -93,9 +96,9 @@ colvargrid.o: colvargrid.cpp colvarmodule.h colvartypes.h colvarproxy.h \ colvarvalue.h colvarparse.h colvar.h colvarcomp.h colvaratoms.h \ colvargrid.h colvarmodule.o: colvarmodule.cpp colvarmodule.h colvartypes.h \ - colvarproxy.h colvarparse.h colvarvalue.h colvar.h colvarbias.h \ - colvarbias_alb.h colvarbias_restraint.h colvarbias_meta.h colvargrid.h \ - colvarbias_abf.h colvarscript.h + colvarproxy.h colvarvalue.h colvarparse.h colvar.h colvarbias.h \ + colvarbias_abf.h colvargrid.h colvarbias_alb.h colvarbias_restraint.h \ + colvarbias_histogram.h colvarbias_meta.h colvarscript.h colvarparse.o: colvarparse.cpp colvarmodule.h colvartypes.h colvarproxy.h \ colvarvalue.h colvarparse.h colvarscript.o: colvarscript.cpp colvarscript.h colvarmodule.h \ diff --git a/lib/colvars/Makefile.g++ b/lib/colvars/Makefile.g++ index 6e5d4463ea..8f66b0c743 100644 --- a/lib/colvars/Makefile.g++ +++ b/lib/colvars/Makefile.g++ @@ -15,11 +15,11 @@ SHELL = /bin/sh # ------ DEFINITIONS ------ SRC = colvaratoms.cpp colvarbias_abf.cpp colvarbias_alb.cpp colvarbias.cpp \ - colvarbias_meta.cpp colvarbias_restraint.cpp colvarcomp_angles.cpp \ - colvarcomp_coordnums.cpp colvarcomp.cpp colvarcomp_distances.cpp \ - colvarcomp_protein.cpp colvarcomp_rotations.cpp colvar.cpp colvargrid.cpp \ - colvarmodule.cpp colvarparse.cpp colvarscript.cpp colvartypes.cpp \ - colvarvalue.cpp + colvarbias_histogram.cpp colvarbias_meta.cpp colvarbias_restraint.cpp \ + colvarcomp_angles.cpp colvarcomp_coordnums.cpp colvarcomp.cpp \ + colvarcomp_distances.cpp colvarcomp_protein.cpp colvarcomp_rotations.cpp \ + colvar.cpp colvargrid.cpp colvarmodule.cpp colvarparse.cpp \ + colvarscript.cpp colvartypes.cpp colvarvalue.cpp LIB = libcolvars.a OBJ = $(SRC:.cpp=.o) @@ -53,15 +53,18 @@ colvars_standalone: colvars_main.o colvarproxy_standalone.o $(LIB) # ------ DEPENDENCIES ------ # colvaratoms.o: colvaratoms.cpp colvarmodule.h colvartypes.h colvarproxy.h \ - colvarparse.h colvarvalue.h colvaratoms.h + colvarvalue.h colvarparse.h colvaratoms.h colvarbias_abf.o: colvarbias_abf.cpp colvarmodule.h colvartypes.h \ - colvarproxy.h colvar.h colvarvalue.h colvarparse.h colvarbias_abf.h \ + colvarproxy.h colvarvalue.h colvar.h colvarparse.h colvarbias_abf.h \ colvarbias.h colvargrid.h colvarbias_alb.o: colvarbias_alb.cpp colvarmodule.h colvartypes.h \ - colvarproxy.h colvarbias_alb.h colvar.h colvarvalue.h colvarparse.h \ + colvarproxy.h colvarvalue.h colvarbias_alb.h colvar.h colvarparse.h \ colvarbias_restraint.h colvarbias.h colvarbias.o: colvarbias.cpp colvarmodule.h colvartypes.h colvarproxy.h \ colvarvalue.h colvarbias.h colvar.h colvarparse.h +colvarbias_histogram.o: colvarbias_histogram.cpp colvarmodule.h \ + colvartypes.h colvarproxy.h colvarvalue.h colvar.h colvarparse.h \ + colvarbias_histogram.h colvarbias.h colvargrid.h colvarbias_meta.o: colvarbias_meta.cpp colvar.h colvarmodule.h \ colvartypes.h colvarproxy.h colvarvalue.h colvarparse.h \ colvarbias_meta.h colvarbias.h colvargrid.h @@ -69,10 +72,10 @@ colvarbias_restraint.o: colvarbias_restraint.cpp colvarmodule.h \ colvartypes.h colvarproxy.h colvarvalue.h colvarbias_restraint.h \ colvarbias.h colvar.h colvarparse.h colvarcomp_angles.o: colvarcomp_angles.cpp colvarmodule.h colvartypes.h \ - colvarproxy.h colvar.h colvarvalue.h colvarparse.h colvarcomp.h \ + colvarproxy.h colvarvalue.h colvar.h colvarparse.h colvarcomp.h \ colvaratoms.h colvarcomp_coordnums.o: colvarcomp_coordnums.cpp colvarmodule.h \ - colvartypes.h colvarproxy.h colvarparse.h colvarvalue.h colvaratoms.h \ + colvartypes.h colvarproxy.h colvarvalue.h colvarparse.h colvaratoms.h \ colvar.h colvarcomp.h colvarcomp.o: colvarcomp.cpp colvarmodule.h colvartypes.h colvarproxy.h \ colvarvalue.h colvar.h colvarparse.h colvarcomp.h colvaratoms.h @@ -92,16 +95,16 @@ colvargrid.o: colvargrid.cpp colvarmodule.h colvartypes.h colvarproxy.h \ colvarvalue.h colvarparse.h colvar.h colvarcomp.h colvaratoms.h \ colvargrid.h colvarmodule.o: colvarmodule.cpp colvarmodule.h colvartypes.h \ - colvarproxy.h colvarparse.h colvarvalue.h colvar.h colvarbias.h \ - colvarbias_alb.h colvarbias_restraint.h colvarbias_meta.h colvargrid.h \ - colvarbias_abf.h colvarscript.h + colvarproxy.h colvarvalue.h colvarparse.h colvar.h colvarbias.h \ + colvarbias_abf.h colvargrid.h colvarbias_alb.h colvarbias_restraint.h \ + colvarbias_histogram.h colvarbias_meta.h colvarscript.h colvarparse.o: colvarparse.cpp colvarmodule.h colvartypes.h colvarproxy.h \ colvarvalue.h colvarparse.h colvarscript.o: colvarscript.cpp colvarscript.h colvarmodule.h \ - colvartypes.h colvarproxy.h colvarvalue.h colvar.h colvarparse.h \ - colvarbias.h + colvartypes.h colvarproxy.h colvarvalue.h colvarbias.h colvar.h \ + colvarparse.h colvartypes.o: colvartypes.cpp colvarmodule.h colvartypes.h colvarproxy.h \ - colvarparse.h colvarvalue.h + colvarvalue.h colvarparse.h colvarvalue.o: colvarvalue.cpp colvarmodule.h colvartypes.h colvarproxy.h \ colvarvalue.h diff --git a/lib/colvars/Makefile.mingw32-cross b/lib/colvars/Makefile.mingw32-cross index 39b07ca8d7..381f4455d5 100644 --- a/lib/colvars/Makefile.mingw32-cross +++ b/lib/colvars/Makefile.mingw32-cross @@ -18,11 +18,11 @@ SHELL = /bin/sh # ------ DEFINITIONS ------ SRC = colvaratoms.cpp colvarbias_abf.cpp colvarbias_alb.cpp colvarbias.cpp \ - colvarbias_meta.cpp colvarbias_restraint.cpp colvarcomp_angles.cpp \ - colvarcomp_coordnums.cpp colvarcomp.cpp colvarcomp_distances.cpp \ - colvarcomp_protein.cpp colvarcomp_rotations.cpp colvar.cpp colvargrid.cpp \ - colvarmodule.cpp colvarparse.cpp colvarscript.cpp colvartypes.cpp \ - colvarvalue.cpp + colvarbias_histogram.cpp colvarbias_meta.cpp colvarbias_restraint.cpp \ + colvarcomp_angles.cpp colvarcomp_coordnums.cpp colvarcomp.cpp \ + colvarcomp_distances.cpp colvarcomp_protein.cpp colvarcomp_rotations.cpp \ + colvar.cpp colvargrid.cpp colvarmodule.cpp colvarparse.cpp \ + colvarscript.cpp colvartypes.cpp colvarvalue.cpp DIR = Obj_mingw32/ LIB = $(DIR)libcolvars.a @@ -70,6 +70,9 @@ $(DIR)colvarbias_alb.o: colvarbias_alb.cpp colvarmodule.h colvartypes.h \ colvarbias_restraint.h colvarbias.h $(DIR)colvarbias.o: colvarbias.cpp colvarmodule.h colvartypes.h colvarproxy.h \ colvarvalue.h colvarbias.h colvar.h colvarparse.h +$(DIR)colvarbias_histogram.o: colvarbias_histogram.cpp colvarmodule.h \ + colvartypes.h colvarproxy.h colvarvalue.h colvar.h colvarparse.h \ + colvarbias_histogram.h colvarbias.h colvargrid.h $(DIR)colvarbias_meta.o: colvarbias_meta.cpp colvar.h colvarmodule.h \ colvartypes.h colvarproxy.h colvarvalue.h colvarparse.h \ colvarbias_meta.h colvarbias.h colvargrid.h @@ -100,9 +103,9 @@ $(DIR)colvargrid.o: colvargrid.cpp colvarmodule.h colvartypes.h colvarproxy.h \ colvarvalue.h colvarparse.h colvar.h colvarcomp.h colvaratoms.h \ colvargrid.h $(DIR)colvarmodule.o: colvarmodule.cpp colvarmodule.h colvartypes.h \ - colvarproxy.h colvarparse.h colvarvalue.h colvar.h colvarbias.h \ - colvarbias_alb.h colvarbias_restraint.h colvarbias_meta.h colvargrid.h \ - colvarbias_abf.h colvarscript.h + colvarproxy.h colvarvalue.h colvarparse.h colvar.h colvarbias.h \ + colvarbias_abf.h colvargrid.h colvarbias_alb.h colvarbias_restraint.h \ + colvarbias_histogram.h colvarbias_meta.h colvarscript.h $(DIR)colvarparse.o: colvarparse.cpp colvarmodule.h colvartypes.h colvarproxy.h \ colvarvalue.h colvarparse.h $(DIR)colvarscript.o: colvarscript.cpp colvarscript.h colvarmodule.h \ @@ -118,4 +121,3 @@ $(DIR)colvarvalue.o: colvarvalue.cpp colvarmodule.h colvartypes.h colvarproxy.h clean: -rm $(DIR)*.o *~ $(LIB) -rmdir $(DIR) - diff --git a/lib/colvars/Makefile.mingw64-cross b/lib/colvars/Makefile.mingw64-cross index 5101cf7805..bcb23c6475 100644 --- a/lib/colvars/Makefile.mingw64-cross +++ b/lib/colvars/Makefile.mingw64-cross @@ -18,11 +18,11 @@ SHELL = /bin/sh # ------ DEFINITIONS ------ SRC = colvaratoms.cpp colvarbias_abf.cpp colvarbias_alb.cpp colvarbias.cpp \ - colvarbias_meta.cpp colvarbias_restraint.cpp colvarcomp_angles.cpp \ - colvarcomp_coordnums.cpp colvarcomp.cpp colvarcomp_distances.cpp \ - colvarcomp_protein.cpp colvarcomp_rotations.cpp colvar.cpp colvargrid.cpp \ - colvarmodule.cpp colvarparse.cpp colvarscript.cpp colvartypes.cpp \ - colvarvalue.cpp + colvarbias_histogram.cpp colvarbias_meta.cpp colvarbias_restraint.cpp \ + colvarcomp_angles.cpp colvarcomp_coordnums.cpp colvarcomp.cpp \ + colvarcomp_distances.cpp colvarcomp_protein.cpp colvarcomp_rotations.cpp \ + colvar.cpp colvargrid.cpp colvarmodule.cpp colvarparse.cpp \ + colvarscript.cpp colvartypes.cpp colvarvalue.cpp DIR = Obj_mingw64/ LIB = $(DIR)libcolvars.a @@ -41,6 +41,7 @@ Makefile.lammps: $(LIB): $(DIR) $(OBJ) $(ARCHIVE) $(ARFLAGS) $(LIB) $(OBJ) + @cp $(EXTRAMAKE) Makefile.lammps $(DIR)colvars_standalone: colvars_main.o colvarproxy_standalone.o $(LIB) $(CXX) -o $@ $(CXXFLAGS) $^ @@ -69,6 +70,9 @@ $(DIR)colvarbias_alb.o: colvarbias_alb.cpp colvarmodule.h colvartypes.h \ colvarbias_restraint.h colvarbias.h $(DIR)colvarbias.o: colvarbias.cpp colvarmodule.h colvartypes.h colvarproxy.h \ colvarvalue.h colvarbias.h colvar.h colvarparse.h +$(DIR)colvarbias_histogram.o: colvarbias_histogram.cpp colvarmodule.h \ + colvartypes.h colvarproxy.h colvarvalue.h colvar.h colvarparse.h \ + colvarbias_histogram.h colvarbias.h colvargrid.h $(DIR)colvarbias_meta.o: colvarbias_meta.cpp colvar.h colvarmodule.h \ colvartypes.h colvarproxy.h colvarvalue.h colvarparse.h \ colvarbias_meta.h colvarbias.h colvargrid.h @@ -99,9 +103,9 @@ $(DIR)colvargrid.o: colvargrid.cpp colvarmodule.h colvartypes.h colvarproxy.h \ colvarvalue.h colvarparse.h colvar.h colvarcomp.h colvaratoms.h \ colvargrid.h $(DIR)colvarmodule.o: colvarmodule.cpp colvarmodule.h colvartypes.h \ - colvarproxy.h colvarparse.h colvarvalue.h colvar.h colvarbias.h \ - colvarbias_alb.h colvarbias_restraint.h colvarbias_meta.h colvargrid.h \ - colvarbias_abf.h colvarscript.h + colvarproxy.h colvarvalue.h colvarparse.h colvar.h colvarbias.h \ + colvarbias_abf.h colvargrid.h colvarbias_alb.h colvarbias_restraint.h \ + colvarbias_histogram.h colvarbias_meta.h colvarscript.h $(DIR)colvarparse.o: colvarparse.cpp colvarmodule.h colvartypes.h colvarproxy.h \ colvarvalue.h colvarparse.h $(DIR)colvarscript.o: colvarscript.cpp colvarscript.h colvarmodule.h \ diff --git a/lib/colvars/colvar.cpp b/lib/colvars/colvar.cpp index 80c04f9f8b..b60c685395 100644 --- a/lib/colvars/colvar.cpp +++ b/lib/colvars/colvar.cpp @@ -20,9 +20,10 @@ colvar::colvar(std::string const &conf) (std::string("colvar")+cvm::to_str(cvm::colvars.size()+1))); if (cvm::colvar_by_name(this->name) != NULL) { - cvm::error("Error: this colvar cannot have the same name, \""+this->name+ + cvm::error("Error: this colvar cannot have the same name, \""+this->name+ "\", as another colvar.\n", INPUT_ERROR); + return; } // all tasks disabled by default @@ -1616,7 +1617,7 @@ int colvar::write_output_files() // ******************** ANALYSIS FUNCTIONS ******************** -void colvar::analyse() +void colvar::analyze() { if (tasks[task_runave]) { calc_runave(); diff --git a/lib/colvars/colvar.h b/lib/colvars/colvar.h index 2a9abb9d47..beadc52f51 100644 --- a/lib/colvars/colvar.h +++ b/lib/colvars/colvar.h @@ -361,7 +361,7 @@ public: /// Read the analysis tasks int parse_analysis(std::string const &conf); /// Perform analysis tasks - void analyse(); + void analyze(); /// Read the value from a collective variable trajectory file diff --git a/lib/colvars/colvaratoms.cpp b/lib/colvars/colvaratoms.cpp index 99f63c5af6..1f0c97516a 100644 --- a/lib/colvars/colvaratoms.cpp +++ b/lib/colvars/colvaratoms.cpp @@ -331,8 +331,6 @@ int cvm::atom_group::parse(std::string const &conf, } else { get_keyval(group_conf, "disableForces", noforce, false, colvarparse::parse_silent); } - - get_keyval(group_conf, "weights", weights, weights, colvarparse::parse_silent); } // FITTING OPTIONS @@ -380,12 +378,12 @@ int cvm::atom_group::parse(std::string const &conf, } std::string ref_pos_col; - double ref_pos_col_value; + double ref_pos_col_value=0.0; if (get_keyval(group_conf, "refPositionsCol", ref_pos_col, std::string(""), mode)) { // if provided, use PDB column to select coordinates bool found = get_keyval(group_conf, "refPositionsColValue", ref_pos_col_value, 0.0, mode); - if (found && !ref_pos_col_value) + if (found && ref_pos_col_value == 0.0) cvm::error("Error: refPositionsColValue, " "if provided, must be non-zero.\n"); } else { diff --git a/lib/colvars/colvaratoms.h b/lib/colvars/colvaratoms.h index d950ffb7ac..ef3bbcb39a 100644 --- a/lib/colvars/colvaratoms.h +++ b/lib/colvars/colvaratoms.h @@ -139,10 +139,6 @@ public: /// Allocates and populates the sorted list of atom ids int create_sorted_ids(void); - /// List of user-defined weights to be used by certain CVCs - std::vector weights; - - /// \brief When updating atomic coordinates, translate them to align with the /// center of mass of the reference coordinates bool b_center; diff --git a/lib/colvars/colvarbias.h b/lib/colvars/colvarbias.h index 03674cc1fd..e4cc89f463 100644 --- a/lib/colvars/colvarbias.h +++ b/lib/colvars/colvarbias.h @@ -39,15 +39,12 @@ public: virtual int replica_share(); /// Perform analysis tasks - virtual inline void analyse() {} + virtual void analyze() {} /// Send forces to the collective variables void communicate_forces(); /// \brief Constructor - /// - /// The constructor of the colvarbias base class is protected, so - /// that it can only be called from inherited classes colvarbias(std::string const &conf, char const *key); /// Default constructor @@ -65,9 +62,18 @@ public: /// Write a label to the trajectory file (comment line) virtual std::ostream & write_traj_label(std::ostream &os); + /// (Re)initialize the output files (does not write them yet) + virtual int setup_output() { return COLVARS_OK; } + /// Output quantities such as the bias energy to the trajectory file virtual std::ostream & write_traj(std::ostream &os); + /// Write output files (if defined, e.g. in analysis mode) + virtual int write_output_files() + { + return COLVARS_OK; + } + inline cvm::real get_energy() { return bias_energy; } diff --git a/lib/colvars/colvarbias_abf.cpp b/lib/colvars/colvarbias_abf.cpp index 10490152d7..2d9202f4b3 100644 --- a/lib/colvars/colvarbias_abf.cpp +++ b/lib/colvars/colvarbias_abf.cpp @@ -1,9 +1,5 @@ /// -*- c++ -*- -/******************************************************************************** - * Implementation of the ABF and histogram biases * - ********************************************************************************/ - #include "colvarmodule.h" #include "colvar.h" #include "colvarbias_abf.h" @@ -47,7 +43,7 @@ colvarbias_abf::colvarbias_abf(std::string const &conf, char const *key) // shared ABF get_keyval(conf, "shared", shared_on, false); if (shared_on) { - if (!cvm::replica_enabled || cvm::replica_num() <= 1) + if (!cvm::replica_enabled() || cvm::replica_num() <= 1) cvm::error("Error: shared ABF requires more than one replica."); else cvm::log("shared ABF will be applied among "+ cvm::to_str(cvm::replica_num()) + " replicas.\n"); @@ -552,202 +548,3 @@ std::istream & colvarbias_abf::read_restart(std::istream& is) } return is; } - - - - -/// Histogram "bias" constructor - -colvarbias_histogram::colvarbias_histogram(std::string const &conf, char const *key) - : colvarbias(conf, key), - grid(NULL), out_name("") -{ - get_keyval(conf, "outputFreq", output_freq, cvm::restart_out_freq); - /// with VMD, this may not be an error - // if ( output_freq == 0 ) { - // cvm::error("User required histogram with zero output frequency"); - // } - - { - colvar_array_size = 1; - bool colvar_array = false; - if (get_keyval(conf, "sumVectorColvars", colvar_array, colvar_array)) { - size_t i; - for (i = 0; i < colvars.size(); i++) { - if (colvars[i]->value().type() == colvarvalue::type_vector) { - if (colvar_array_size == 1) { - colvar_array_size = colvars[i]->value().size(); - } else { - if (colvar_array_size != colvars[i]->value().size()) { - cvm::error("Error: trying to combine vector colvars of different lengths.\n", INPUT_ERROR); - } - } - } - } - } - } - - grid = new colvar_grid_count(); - { - std::string grid_conf; - if (key_lookup(conf, "grid", grid_conf)) { - grid->parse_params(grid_conf); - } else { - grid->init_from_colvars(colvars); - } - } - - bin.assign(colvars.size(), 0); - - cvm::log("Finished histogram setup.\n"); -} - -/// Destructor -colvarbias_histogram::~colvarbias_histogram() -{ - if (grid_os.is_open()) - grid_os.close(); - - if (grid) { - delete grid; - grid = NULL; - } - - if (cvm::n_histo_biases > 0) - cvm::n_histo_biases -= 1; -} - -/// Update the grid -cvm::real colvarbias_histogram::update() -{ - - if (cvm::debug()) { - cvm::log("Updating histogram bias " + this->name); - } - - // At the first timestep, we need to assign out_name since - // output_prefix is unset during the constructor - - if (cvm::step_relative() == 0) { - out_name = cvm::output_prefix + "." + this->name + ".dat"; - cvm::log("Histogram " + this->name + " will be written to file \"" + out_name + "\""); - } - - - bin.assign(colvars.size(), 0); - - { - // update indices for all scalar values - size_t i; - for (i = 0; i < colvars.size(); i++) { - if (colvars[i]->value().type() == colvarvalue::type_scalar) { - bin[i] = grid->value_to_bin_scalar(colvars[i]->value(), i); - } - } - } - - if (colvar_array_size > 1) { - // update indices for all vector/array values - size_t iv, i; - for (iv = 0; iv < colvar_array_size; iv++) { - for (i = 0; i < colvars.size(); i++) { - if (colvars[i]->value().type() == colvarvalue::type_vector) { - bin[i] = grid->value_to_bin_scalar(colvars[i]->value().vector1d_value[iv], i); - } - } - if (grid->index_ok(bin)) { - // Only within bounds of the grid... - grid->incr_count(bin); - } - } - } else { - if (grid->index_ok(bin)) { - // Only within bounds of the grid... - grid->incr_count(bin); - } - } - - if (output_freq && (cvm::step_absolute() % output_freq) == 0) { - if (cvm::debug()) cvm::log("Histogram bias trying to write grid to disk"); - - grid_os.open(out_name.c_str()); - if (!grid_os.is_open()) cvm::error("Error opening histogram file " + out_name + " for writing"); - grid->write_multicol(grid_os); - grid_os.close(); - } - - return 0.0; // no bias energy for histogram -} - - -std::istream & colvarbias_histogram::read_restart(std::istream& is) -{ - size_t const start_pos = is.tellg(); - - cvm::log("Restarting collective variable histogram \""+ - this->name+"\".\n"); - std::string key, brace, conf; - - if ( !(is >> key) || !(key == "histogram") || - !(is >> brace) || !(brace == "{") || - !(is >> colvarparse::read_block("configuration", conf)) ) { - cvm::log("Error: in reading restart configuration for histogram \""+ - this->name+"\" at position "+ - cvm::to_str(is.tellg())+" in stream.\n"); - is.clear(); - is.seekg(start_pos, std::ios::beg); - is.setstate(std::ios::failbit); - return is; - } - - int id = -1; - std::string name = ""; - if ( (colvarparse::get_keyval(conf, "name", name, std::string(""), colvarparse::parse_silent)) && - (name != this->name) ) - cvm::error("Error: in the restart file, the " - "\"histogram\" block has a wrong name: different system?\n"); - if ( (id == -1) && (name == "") ) { - cvm::error("Error: \"histogram\" block in the restart file " - "has no name.\n"); - } - - if ( !(is >> key) || !(key == "grid")) { - cvm::error("Error: in reading restart configuration for histogram \""+ - this->name+"\" at position "+ - cvm::to_str(is.tellg())+" in stream.\n"); - is.clear(); - is.seekg(start_pos, std::ios::beg); - is.setstate(std::ios::failbit); - return is; - } - if (! grid->read_raw(is)) { - is.clear(); - is.seekg(start_pos, std::ios::beg); - is.setstate(std::ios::failbit); - return is; - } - - is >> brace; - if (brace != "}") { - cvm::error("Error: corrupt restart information for ABF bias \""+ - this->name+"\": no matching brace at position "+ - cvm::to_str(is.tellg())+" in the restart file.\n"); - is.setstate(std::ios::failbit); - } - return is; -} - -std::ostream & colvarbias_histogram::write_restart(std::ostream& os) -{ - os << "histogram {\n" - << " configuration {\n" - << " name " << this->name << "\n"; - os << " }\n"; - - os << "grid\n"; - grid->write_raw(os, 8); - - os << "}\n\n"; - - return os; -} diff --git a/lib/colvars/colvarbias_abf.h b/lib/colvars/colvarbias_abf.h index c1e3a1fb31..eb02d1f55e 100644 --- a/lib/colvars/colvarbias_abf.h +++ b/lib/colvars/colvarbias_abf.h @@ -1,7 +1,4 @@ // -*- c++ -*- -/************************************************************************ - * Headers for the ABF and histogram biases * - ************************************************************************/ #ifndef COLVARBIAS_ABF_H #define COLVARBIAS_ABF_H @@ -40,7 +37,7 @@ private: bool hide_Jacobian; size_t full_samples; size_t min_samples; - /// frequency for updating output files (default: same as restartFreq?) + /// frequency for updating output files int output_freq; /// Write combined files with a history of all output data? bool b_history_files; @@ -90,34 +87,5 @@ private: std::ostream& write_restart(std::ostream&); }; - -/// Histogram "bias" (does as the name says) -class colvarbias_histogram : public colvarbias { - -public: - - colvarbias_histogram(std::string const &conf, char const *key); - ~colvarbias_histogram(); - - cvm::real update(); - -protected: - - /// n-dim histogram - colvar_grid_count *grid; - std::vector bin; - std::string out_name; - - int output_freq; - - /// If one or more of the variables are \link type_vector \endlink, treat them as arrays of this length - size_t colvar_array_size; - - void write_grid(); - cvm::ofstream grid_os; /// Stream for writing grid to disk - - std::istream& read_restart(std::istream&); - std::ostream& write_restart(std::ostream&); -}; - #endif + diff --git a/lib/colvars/colvarbias_meta.cpp b/lib/colvars/colvarbias_meta.cpp index 0276359f0d..1fa804d303 100644 --- a/lib/colvars/colvarbias_meta.cpp +++ b/lib/colvars/colvarbias_meta.cpp @@ -44,7 +44,7 @@ colvarbias_meta::colvarbias_meta(std::string const &conf, char const *key) get_keyval(conf, "hillWeight", hill_weight, 0.01); if (hill_weight == 0.0) cvm::log("Warning: hillWeight has been set to zero, " - "this bias will have no effect.\n"); + "this bias will have no effect.\n"); get_keyval(conf, "newHillFrequency", new_hill_freq, 1000); @@ -71,9 +71,9 @@ colvarbias_meta::colvarbias_meta(std::string const &conf, char const *key) if (colvars[i]->expand_boundaries) { expand_grids = true; cvm::log("Metadynamics bias \""+this->name+"\""+ - ((comm != single_replica) ? ", replica \""+replica_id+"\"" : "")+ - ": Will expand grids when the colvar \""+ - colvars[i]->name+"\" approaches its boundaries.\n"); + ((comm != single_replica) ? ", replica \""+replica_id+"\"" : "")+ + ": Will expand grids when the colvar \""+ + colvars[i]->name+"\" approaches its boundaries.\n"); } } @@ -103,9 +103,9 @@ colvarbias_meta::colvarbias_meta(std::string const &conf, char const *key) if (expand_grids) cvm::fatal_error("Error: expandBoundaries is not supported when " - "using more than one replicas; please allocate " - "wide enough boundaries for each colvar" - "ahead of time.\n"); + "using more than one replicas; please allocate " + "wide enough boundaries for each colvar" + "ahead of time.\n"); if (get_keyval(conf, "dumpPartialFreeEnergyFile", dump_replica_fes, false)) { if (dump_replica_fes && (! dump_fes)) { @@ -115,118 +115,26 @@ colvarbias_meta::colvarbias_meta(std::string const &conf, char const *key) get_keyval(conf, "replicaID", replica_id, std::string("")); if (!replica_id.size()) - cvm::fatal_error("Error: replicaID must be defined " - "when using more than one replica.\n"); + cvm::error("Error: replicaID must be defined " + "when using more than one replica.\n", INPUT_ERROR); get_keyval(conf, "replicasRegistry", - replicas_registry_file, - (this->name+".replicas.registry.txt")); + replicas_registry_file, + (this->name+".replicas.registry.txt")); get_keyval(conf, "replicaUpdateFrequency", - replica_update_freq, new_hill_freq); + replica_update_freq, new_hill_freq); if (keep_hills) cvm::log("Warning: in metadynamics bias \""+this->name+"\""+ - ((comm != single_replica) ? ", replica \""+replica_id+"\"" : "")+ - ": keepHills with more than one replica can lead to a very " - "large amount input/output and slow down your calculations. " - "Please consider disabling it.\n"); + ((comm != single_replica) ? ", replica \""+replica_id+"\"" : "")+ + ": keepHills with more than one replica can lead to a very " + "large amount of input/output and slow down your calculations. " + "Please consider disabling it.\n"); - - { - // TODO: one may want to specify the path manually for intricated filesystems? - char *pwd = new char[3001]; - if (GETCWD(pwd, 3000) == NULL) - cvm::fatal_error("Error: cannot get the path of the current working directory.\n"); - replica_list_file = - (std::string(pwd)+std::string(PATHSEP)+ - this->name+"."+replica_id+".files.txt"); - // replica_hills_file and replica_state_file are those written - // by the current replica; within the mirror biases, they are - // those by another replica - replica_hills_file = - (std::string(pwd)+std::string(PATHSEP)+ - cvm::output_prefix+".colvars."+this->name+"."+replica_id+".hills"); - replica_state_file = - (std::string(pwd)+std::string(PATHSEP)+ - cvm::output_prefix+".colvars."+this->name+"."+replica_id+".state"); - delete[] pwd; - } - - // now register this replica - - // first check that it isn't already there - bool registered_replica = false; - std::ifstream reg_is(replicas_registry_file.c_str()); - if (reg_is.good()) { // the file may not be there yet - std::string existing_replica(""); - std::string existing_replica_file(""); - while ((reg_is >> existing_replica) && existing_replica.size() && - (reg_is >> existing_replica_file) && existing_replica_file.size()) { - if (existing_replica == replica_id) { - // this replica was already registered - replica_list_file = existing_replica_file; - reg_is.close(); - registered_replica = true; - break; - } - } - reg_is.close(); - } - - // if this replica was not included yet, we should generate a - // new record for it: but first, we write this replica's files, - // for the others to read - - // open the "hills" buffer file - replica_hills_os.open(replica_hills_file.c_str()); - if (!replica_hills_os.good()) - cvm::fatal_error("Error: in opening file \""+ - replica_hills_file+"\" for writing.\n"); - replica_hills_os.setf(std::ios::scientific, std::ios::floatfield); - - // write the state file (so that there is always one available) - write_replica_state_file(); - // schedule to read the state files of the other replicas - for (size_t ir = 0; ir < replicas.size(); ir++) { - (replicas[ir])->replica_state_file_in_sync = false; - } - - // if we're running without grids, use a growing list of "hills" files - // otherwise, just one state file and one "hills" file as buffer - std::ofstream list_os(replica_list_file.c_str(), - (use_grids ? std::ios::trunc : std::ios::app)); - if (! list_os.good()) - cvm::fatal_error("Error: in opening file \""+ - replica_list_file+"\" for writing.\n"); - list_os << "stateFile " << replica_state_file << "\n"; - list_os << "hillsFile " << replica_hills_file << "\n"; - list_os.close(); - - // finally, if add a new record for this replica to the registry - if (! registered_replica) { - std::ofstream reg_os(replicas_registry_file.c_str(), std::ios::app); - if (! reg_os.good()) - cvm::fatal_error("Error: in opening file \""+ - replicas_registry_file+"\" for writing.\n"); - reg_os << replica_id << " " << replica_list_file << "\n"; - reg_os.close(); - } } get_keyval(conf, "writeHillsTrajectory", b_hills_traj, false); - if (b_hills_traj) { - std::string const traj_file_name(cvm::output_prefix+ - ".colvars."+this->name+ - ( (comm != single_replica) ? - ("."+replica_id) : - ("") )+ - ".hills.traj"); - hills_traj_os.open(traj_file_name.c_str()); - if (!hills_traj_os.good()) - cvm::fatal_error("Error: in opening hills output file \"" + - traj_file_name + "\".\n"); - } // for well-tempered metadynamics get_keyval(conf, "wellTempered", well_tempered, false); @@ -241,7 +149,7 @@ colvarbias_meta::colvarbias_meta(std::string const &conf, char const *key) if (cvm::debug()) cvm::log("Done initializing the metadynamics bias \""+this->name+"\""+ - ((comm != single_replica) ? ", replica \""+replica_id+"\"" : "")+".\n"); + ((comm != single_replica) ? ", replica \""+replica_id+"\"" : "")+".\n"); save_delimiters = false; } @@ -259,10 +167,10 @@ colvarbias_meta::~colvarbias_meta() hills_energy_gradients = NULL; } - if (replica_hills_os.good()) + if (replica_hills_os.is_open()) replica_hills_os.close(); - if (hills_traj_os.good()) + if (hills_traj_os.is_open()) hills_traj_os.close(); if (cvm::n_meta_biases > 0) @@ -298,7 +206,7 @@ colvarbias_meta::create_hill(colvarbias_meta::hill const &h) } // output to trajectory (if specified) - if (hills_traj_os.good()) { + if (hills_traj_os.is_open()) { hills_traj_os << (hills.back()).output_traj(); if (cvm::debug()) { hills_traj_os.flush(); @@ -315,11 +223,11 @@ colvarbias_meta::delete_hill(hill_iter &h) { if (cvm::debug()) { cvm::log("Deleting hill from the metadynamics bias \""+this->name+"\""+ - ((comm != single_replica) ? ", replica \""+replica_id+"\"" : "")+ - ", with step number "+ - cvm::to_str(h->it)+(h->replica.size() ? - ", replica id \""+h->replica : - "")+".\n"); + ((comm != single_replica) ? ", replica \""+replica_id+"\"" : "")+ + ", with step number "+ + cvm::to_str(h->it)+(h->replica.size() ? + ", replica id \""+h->replica : + "")+".\n"); } if (use_grids && !hills_off_grid.empty()) { @@ -332,7 +240,7 @@ colvarbias_meta::delete_hill(hill_iter &h) } } - if (hills_traj_os.good()) { + if (hills_traj_os.is_open()) { // output to the trajectory hills_traj_os << "# DELETED this hill: " << (hills.back()).output_traj() @@ -349,7 +257,7 @@ cvm::real colvarbias_meta::update() { if (cvm::debug()) cvm::log("Updating the metadynamics bias \""+this->name+"\""+ - ((comm != single_replica) ? ", replica \""+replica_id+"\"" : "")+".\n"); + ((comm != single_replica) ? ", replica \""+replica_id+"\"" : "")+".\n"); if (use_grids) { @@ -360,9 +268,9 @@ cvm::real colvarbias_meta::update() // first of all, expand the grids, if specified if (cvm::debug()) cvm::log("Metadynamics bias \""+this->name+"\""+ - ((comm != single_replica) ? ", replica \""+replica_id+"\"" : "")+ - ": current coordinates on the grid: "+ - cvm::to_str(curr_bin)+".\n"); + ((comm != single_replica) ? ", replica \""+replica_id+"\"" : "")+ + ": current coordinates on the grid: "+ + cvm::to_str(curr_bin)+".\n"); bool changed_grids = false; int const min_buffer = @@ -393,10 +301,10 @@ cvm::real colvarbias_meta::update() changed_lb = true; cvm::log("Metadynamics bias \""+this->name+"\""+ - ((comm != single_replica) ? ", replica \""+replica_id+"\"" : "")+ - ": new lower boundary for colvar \""+ - colvars[i]->name+"\", at "+ - cvm::to_str(new_lower_boundaries[i])+".\n"); + ((comm != single_replica) ? ", replica \""+replica_id+"\"" : "")+ + ": new lower boundary for colvar \""+ + colvars[i]->name+"\", at "+ + cvm::to_str(new_lower_boundaries[i])+".\n"); } if (!colvars[i]->hard_upper_boundary) @@ -407,10 +315,10 @@ cvm::real colvarbias_meta::update() changed_ub = true; cvm::log("Metadynamics bias \""+this->name+"\""+ - ((comm != single_replica) ? ", replica \""+replica_id+"\"" : "")+ - ": new upper boundary for colvar \""+ - colvars[i]->name+"\", at "+ - cvm::to_str(new_upper_boundaries[i])+".\n"); + ((comm != single_replica) ? ", replica \""+replica_id+"\"" : "")+ + ": new upper boundary for colvar \""+ + colvars[i]->name+"\", at "+ + cvm::to_str(new_upper_boundaries[i])+".\n"); } if (changed_lb || changed_ub) @@ -447,7 +355,7 @@ cvm::real colvarbias_meta::update() curr_bin = hills_energy->get_colvars_index(); if (cvm::debug()) cvm::log("Coordinates on the new grid: "+ - cvm::to_str(curr_bin)+".\n"); + cvm::to_str(curr_bin)+".\n"); } } } @@ -457,8 +365,8 @@ cvm::real colvarbias_meta::update() if (cvm::debug()) cvm::log("Metadynamics bias \""+this->name+"\""+ - ((comm != single_replica) ? ", replica \""+replica_id+"\"" : "")+ - ": adding a new hill at step "+cvm::to_str(cvm::step_absolute())+".\n"); + ((comm != single_replica) ? ", replica \""+replica_id+"\"" : "")+ + ": adding a new hill at step "+cvm::to_str(cvm::step_absolute())+".\n"); switch (comm) { @@ -492,12 +400,12 @@ cvm::real colvarbias_meta::update() } else { create_hill(hill(hill_weight, colvars, hill_width, replica_id)); } - if (replica_hills_os.good()) { + if (replica_hills_os.is_open()) { replica_hills_os << hills.back(); } else { cvm::fatal_error("Error: in metadynamics bias \""+this->name+"\""+ - ((comm != single_replica) ? ", replica \""+replica_id+"\"" : "")+ - " while writing hills for the other replicas.\n"); + ((comm != single_replica) ? ", replica \""+replica_id+"\"" : "")+ + " while writing hills for the other replicas.\n"); } break; } @@ -510,7 +418,8 @@ cvm::real colvarbias_meta::update() if ((cvm::step_absolute() % replica_update_freq) == 0) { update_replicas_registry(); // empty the output buffer - replica_hills_os.flush(); + if (replica_hills_os.is_open()) + replica_hills_os.flush(); read_replica_files(); } @@ -536,7 +445,7 @@ cvm::real colvarbias_meta::update() if ((cvm::step_absolute() % grids_freq) == 0) { // map the most recent gaussians to the grids project_hills(new_hills_begin, hills.end(), - hills_energy, hills_energy_gradients); + hills_energy, hills_energy_gradients); new_hills_begin = hills.end(); // TODO: we may want to condense all into one replicas array, @@ -544,9 +453,9 @@ cvm::real colvarbias_meta::update() if (comm == multiple_replicas) { for (size_t ir = 0; ir < replicas.size(); ir++) { replicas[ir]->project_hills(replicas[ir]->new_hills_begin, - replicas[ir]->hills.end(), - replicas[ir]->hills_energy, - replicas[ir]->hills_energy_gradients); + replicas[ir]->hills.end(), + replicas[ir]->hills_energy, + replicas[ir]->hills_energy_gradients); replicas[ir]->new_hills_begin = replicas[ir]->hills.end(); } } @@ -555,9 +464,9 @@ cvm::real colvarbias_meta::update() std::vector curr_bin = hills_energy->get_colvars_index(); if (cvm::debug()) cvm::log("Metadynamics bias \""+this->name+"\""+ - ((comm != single_replica) ? ", replica \""+replica_id+"\"" : "")+ - ": current coordinates on the grid: "+ - cvm::to_str(curr_bin)+".\n"); + ((comm != single_replica) ? ", replica \""+replica_id+"\"" : "")+ + ": current coordinates on the grid: "+ + cvm::to_str(curr_bin)+".\n"); if (hills_energy->index_ok(curr_bin)) { @@ -590,13 +499,13 @@ cvm::real colvarbias_meta::update() if (comm == multiple_replicas) for (size_t ir = 0; ir < replicas.size(); ir++) { calc_hills(replicas[ir]->hills_off_grid.begin(), - replicas[ir]->hills_off_grid.end(), - bias_energy); + replicas[ir]->hills_off_grid.end(), + bias_energy); for (size_t ic = 0; ic < colvars.size(); ic++) { calc_hills_force(ic, - replicas[ir]->hills_off_grid.begin(), - replicas[ir]->hills_off_grid.end(), - colvar_forces); + replicas[ir]->hills_off_grid.begin(), + replicas[ir]->hills_off_grid.end(), + colvar_forces); } } } @@ -612,27 +521,27 @@ cvm::real colvarbias_meta::update() if (cvm::debug()) cvm::log("Hills energy = "+cvm::to_str(bias_energy)+ - ", hills forces = "+cvm::to_str(colvar_forces)+".\n"); + ", hills forces = "+cvm::to_str(colvar_forces)+".\n"); if (cvm::debug()) cvm::log("Metadynamics bias \""+this->name+"\""+ - ((comm != single_replica) ? ", replica \""+replica_id+"\"" : "")+ - ": adding the forces from the other replicas.\n"); + ((comm != single_replica) ? ", replica \""+replica_id+"\"" : "")+ + ": adding the forces from the other replicas.\n"); if (comm == multiple_replicas) for (size_t ir = 0; ir < replicas.size(); ir++) { calc_hills(replicas[ir]->new_hills_begin, - replicas[ir]->hills.end(), - bias_energy); + replicas[ir]->hills.end(), + bias_energy); for (size_t ic = 0; ic < colvars.size(); ic++) { calc_hills_force(ic, - replicas[ir]->new_hills_begin, - replicas[ir]->hills.end(), - colvar_forces); + replicas[ir]->new_hills_begin, + replicas[ir]->hills.end(), + colvar_forces); } if (cvm::debug()) cvm::log("Hills energy = "+cvm::to_str(bias_energy)+ - ", hills forces = "+cvm::to_str(colvar_forces)+".\n"); + ", hills forces = "+cvm::to_str(colvar_forces)+".\n"); } return bias_energy; @@ -640,9 +549,9 @@ cvm::real colvarbias_meta::update() void colvarbias_meta::calc_hills(colvarbias_meta::hill_iter h_first, - colvarbias_meta::hill_iter h_last, - cvm::real &energy, - std::vector const &colvar_values) + colvarbias_meta::hill_iter h_last, + cvm::real &energy, + std::vector const &colvar_values) { std::vector curr_values(colvars.size()); for (size_t i = 0; i < colvars.size(); i++) { @@ -683,10 +592,10 @@ void colvarbias_meta::calc_hills(colvarbias_meta::hill_iter h_first, void colvarbias_meta::calc_hills_force(size_t const &i, - colvarbias_meta::hill_iter h_first, - colvarbias_meta::hill_iter h_last, - std::vector &forces, - std::vector const &values) + colvarbias_meta::hill_iter h_first, + colvarbias_meta::hill_iter h_last, + std::vector &forces, + std::vector const &values) { // Retrieve the value of the colvar colvarvalue const x(values.size() ? values[i] : colvars[i]->value()); @@ -758,15 +667,15 @@ void colvarbias_meta::calc_hills_force(size_t const &i, // ********************************************************************** void colvarbias_meta::project_hills(colvarbias_meta::hill_iter h_first, - colvarbias_meta::hill_iter h_last, - colvar_grid_scalar *he, - colvar_grid_gradient *hg, - bool print_progress) + colvarbias_meta::hill_iter h_last, + colvar_grid_scalar *he, + colvar_grid_gradient *hg, + bool print_progress) { if (cvm::debug()) cvm::log("Metadynamics bias \""+this->name+"\""+ - ((comm != single_replica) ? ", replica \""+replica_id+"\"" : "")+ - ": projecting hills.\n"); + ((comm != single_replica) ? ", replica \""+replica_id+"\"" : "")+ + ": projecting hills.\n"); // TODO: improve it by looping over a small subgrid instead of the whole grid @@ -862,8 +771,8 @@ void colvarbias_meta::project_hills(colvarbias_meta::hill_iter h_first, void colvarbias_meta::recount_hills_off_grid(colvarbias_meta::hill_iter h_first, - colvarbias_meta::hill_iter h_last, - colvar_grid_scalar *he) + colvarbias_meta::hill_iter h_last, + colvar_grid_scalar *he) { hills_off_grid.clear(); @@ -886,20 +795,20 @@ void colvarbias_meta::update_replicas_registry() { if (cvm::debug()) cvm::log("Metadynamics bias \""+this->name+"\""+ - ": updating the list of replicas, currently containing "+ - cvm::to_str(replicas.size())+" elements.\n"); + ": updating the list of replicas, currently containing "+ + cvm::to_str(replicas.size())+" elements.\n"); { // copy the whole file into a string for convenience std::string line(""); std::ifstream reg_file(replicas_registry_file.c_str()); - if (reg_file.good()) { + if (reg_file.is_open()) { replicas_registry.clear(); while (colvarparse::getline_nocomments(reg_file, line)) replicas_registry.append(line+"\n"); } else { - cvm::fatal_error("Error: failed to open file \""+replicas_registry_file+ - "\" for reading.\n"); + cvm::error("Error: failed to open file \""+replicas_registry_file+ + "\" for reading.\n", FILE_ERROR); } } @@ -916,9 +825,9 @@ void colvarbias_meta::update_replicas_registry() // this is the record for this same replica, skip it if (cvm::debug()) cvm::log("Metadynamics bias \""+this->name+"\""+ - ((comm != single_replica) ? ", replica \""+replica_id+"\"" : "")+ - ": skipping this replica's own record: \""+ - new_replica+"\", \""+new_replica_file+"\"\n"); + ((comm != single_replica) ? ", replica \""+replica_id+"\"" : "")+ + ": skipping this replica's own record: \""+ + new_replica+"\", \""+new_replica_file+"\"\n"); new_replica_file.clear(); new_replica.clear(); continue; @@ -930,9 +839,9 @@ void colvarbias_meta::update_replicas_registry() // this replica was already added if (cvm::debug()) cvm::log("Metadynamics bias \""+this->name+"\""+ - ((comm != single_replica) ? ", replica \""+replica_id+"\"" : "")+ - ": skipping a replica already loaded, \""+ - (replicas[ir])->replica_id+"\".\n"); + ((comm != single_replica) ? ", replica \""+replica_id+"\"" : "")+ + ": skipping a replica already loaded, \""+ + (replicas[ir])->replica_id+"\".\n"); already_loaded = true; break; } @@ -941,7 +850,7 @@ void colvarbias_meta::update_replicas_registry() if (!already_loaded) { // add this replica to the registry cvm::log("Metadynamics bias \""+this->name+"\""+ - ": accessing replica \""+new_replica+"\".\n"); + ": accessing replica \""+new_replica+"\".\n"); replicas.push_back(new colvarbias_meta()); (replicas.back())->replica_id = new_replica; (replicas.back())->replica_list_file = new_replica_file; @@ -968,15 +877,15 @@ void colvarbias_meta::update_replicas_registry() } } else { cvm::fatal_error("Error: cannot read the replicas registry file \""+ - replicas_registry+"\".\n"); + replicas_registry+"\".\n"); } // now (re)read the list file of each replica for (size_t ir = 0; ir < replicas.size(); ir++) { if (cvm::debug()) cvm::log("Metadynamics bias \""+this->name+"\""+ - ": reading the list file for replica \""+ - (replicas[ir])->replica_id+"\".\n"); + ": reading the list file for replica \""+ + (replicas[ir])->replica_id+"\".\n"); std::ifstream list_is((replicas[ir])->replica_list_file.c_str()); std::string key; @@ -988,17 +897,17 @@ void colvarbias_meta::update_replicas_registry() !(key == std::string("hillsFile")) || !(list_is >> new_hills_file)) { cvm::log("Metadynamics bias \""+this->name+"\""+ - ": failed to read the file \""+ - (replicas[ir])->replica_list_file+"\": will try again after "+ - cvm::to_str(replica_update_freq)+" steps.\n"); + ": failed to read the file \""+ + (replicas[ir])->replica_list_file+"\": will try again after "+ + cvm::to_str(replica_update_freq)+" steps.\n"); (replicas[ir])->update_status++; } else { (replicas[ir])->update_status = 0; if (new_state_file != (replicas[ir])->replica_state_file) { cvm::log("Metadynamics bias \""+this->name+"\""+ - ": replica \""+(replicas[ir])->replica_id+ - "\" has supplied a new state file, \""+new_state_file+ - "\".\n"); + ": replica \""+(replicas[ir])->replica_id+ + "\" has supplied a new state file, \""+new_state_file+ + "\".\n"); (replicas[ir])->replica_state_file_in_sync = false; (replicas[ir])->replica_state_file = new_state_file; (replicas[ir])->replica_hills_file = new_hills_file; @@ -1009,7 +918,7 @@ void colvarbias_meta::update_replicas_registry() if (cvm::debug()) cvm::log("Metadynamics bias \""+this->name+"\": the list of replicas contains "+ - cvm::to_str(replicas.size())+" elements.\n"); + cvm::to_str(replicas.size())+" elements.\n"); } @@ -1027,15 +936,15 @@ void colvarbias_meta::read_replica_files() (! (replicas[ir])->replica_state_file_in_sync) ) { cvm::log("Metadynamics bias \""+this->name+"\""+ - ": reading the state of replica \""+ - (replicas[ir])->replica_id+"\" from file \""+ - (replicas[ir])->replica_state_file+"\".\n"); + ": reading the state of replica \""+ + (replicas[ir])->replica_id+"\" from file \""+ + (replicas[ir])->replica_state_file+"\".\n"); std::ifstream is((replicas[ir])->replica_state_file.c_str()); if (! (replicas[ir])->read_restart(is)) { cvm::log("Reading from file \""+(replicas[ir])->replica_state_file+ - "\" failed or incomplete: will try again in "+ - cvm::to_str(replica_update_freq)+" steps.\n"); + "\" failed or incomplete: will try again in "+ + cvm::to_str(replica_update_freq)+" steps.\n"); } else { // state file has been read successfully (replicas[ir])->replica_state_file_in_sync = true; @@ -1049,19 +958,19 @@ void colvarbias_meta::read_replica_files() if (cvm::debug()) cvm::log("Metadynamics bias \""+this->name+"\""+ - ": checking for new hills from replica \""+ - (replicas[ir])->replica_id+"\" in the file \""+ - (replicas[ir])->replica_hills_file+"\".\n"); + ": checking for new hills from replica \""+ + (replicas[ir])->replica_id+"\" in the file \""+ + (replicas[ir])->replica_hills_file+"\".\n"); // read hills from the other replicas' files; for each file, resume // the position recorded previously std::ifstream is((replicas[ir])->replica_hills_file.c_str()); - if (is.good()) { + if (is.is_open()) { // try to resume the previous position is.seekg((replicas[ir])->replica_hills_file_pos, std::ios::beg); - if (!is.good()){ + if (!is.is_open()){ // if fail (the file may have been overwritten), reset this // position is.clear(); @@ -1073,26 +982,26 @@ void colvarbias_meta::read_replica_files() // and record the failure (replicas[ir])->update_status++; cvm::log("Failed to read the file \""+(replicas[ir])->replica_hills_file+ - "\" at the previous position: will try again in "+ - cvm::to_str(replica_update_freq)+" steps.\n"); + "\" at the previous position: will try again in "+ + cvm::to_str(replica_update_freq)+" steps.\n"); } else { while ((replicas[ir])->read_hill(is)) { // if (cvm::debug()) - cvm::log("Metadynamics bias \""+this->name+"\""+ - ": received a hill from replica \""+ - (replicas[ir])->replica_id+ - "\" at step "+ - cvm::to_str(((replicas[ir])->hills.back()).it)+".\n"); + cvm::log("Metadynamics bias \""+this->name+"\""+ + ": received a hill from replica \""+ + (replicas[ir])->replica_id+ + "\" at step "+ + cvm::to_str(((replicas[ir])->hills.back()).it)+".\n"); } is.clear(); // store the position for the next read (replicas[ir])->replica_hills_file_pos = is.tellg(); if (cvm::debug()) cvm::log("Metadynamics bias \""+this->name+"\""+ - ": stopped reading file \""+(replicas[ir])->replica_hills_file+ - "\" at position "+ - cvm::to_str((replicas[ir])->replica_hills_file_pos)+".\n"); + ": stopped reading file \""+(replicas[ir])->replica_hills_file+ + "\" at position "+ + cvm::to_str((replicas[ir])->replica_hills_file_pos)+".\n"); // test whether this is the end of the file is.seekg(0, std::ios::end); @@ -1105,8 +1014,8 @@ void colvarbias_meta::read_replica_files() } else { cvm::log("Failed to read the file \""+(replicas[ir])->replica_hills_file+ - "\": will try again in "+ - cvm::to_str(replica_update_freq)+" steps.\n"); + "\": will try again in "+ + cvm::to_str(replica_update_freq)+" steps.\n"); (replicas[ir])->update_status++; // cvm::fatal_error ("Error: cannot read from file \""+ // (replicas[ir])->replica_hills_file+"\".\n"); @@ -1118,11 +1027,11 @@ void colvarbias_meta::read_replica_files() if ((replicas[ir])->update_status > 3*n_flush) { // TODO: suspend the calculation? cvm::log("WARNING: in metadynamics bias \""+this->name+"\""+ - " failed to read completely the output of replica \""+ - (replicas[ir])->replica_id+ - "\" after more than "+ - cvm::to_str((replicas[ir])->update_status * replica_update_freq)+ - " steps. Ensure that it is still running.\n"); + " failed to read completely the output of replica \""+ + (replicas[ir])->replica_id+ + "\" after more than "+ + cvm::to_str((replicas[ir])->update_status * replica_update_freq)+ + " steps. Ensure that it is still running.\n"); } } } @@ -1141,7 +1050,7 @@ std::istream & colvarbias_meta::read_restart(std::istream& is) // if using a multiple replicas scheme, output messages // are printed before and after calling this function cvm::log("Restarting metadynamics bias \""+this->name+"\""+ - ".\n"); + ".\n"); } std::string key, brace, conf; if ( !(is >> key) || !(key == "metadynamics") || @@ -1150,11 +1059,11 @@ std::istream & colvarbias_meta::read_restart(std::istream& is) if (comm == single_replica) cvm::log("Error: in reading restart configuration for metadynamics bias \""+ - this->name+"\""+ - ((comm != single_replica) ? ", replica \""+replica_id+"\"" : "")+ - (replica_state_file_in_sync ? ("at position "+ - cvm::to_str(start_pos)+ - " in the state file") : "")+".\n"); + this->name+"\""+ + ((comm != single_replica) ? ", replica \""+replica_id+"\"" : "")+ + (replica_state_file_in_sync ? ("at position "+ + cvm::to_str(start_pos)+ + " in the state file") : "")+".\n"); is.clear(); is.seekg(start_pos, std::ios::beg); is.setstate(std::ios::failbit); @@ -1163,26 +1072,26 @@ std::istream & colvarbias_meta::read_restart(std::istream& is) std::string name = ""; if ( colvarparse::get_keyval(conf, "name", name, - std::string(""), colvarparse::parse_silent) && + std::string(""), colvarparse::parse_silent) && (name != this->name) ) cvm::fatal_error("Error: in the restart file, the " - "\"metadynamics\" block has a different name: different system?\n"); + "\"metadynamics\" block has a different name: different system?\n"); if (name.size() == 0) { cvm::fatal_error("Error: \"metadynamics\" block within the restart file " - "has no identifiers.\n"); + "has no identifiers.\n"); } if (comm != single_replica) { std::string replica = ""; if (colvarparse::get_keyval(conf, "replicaID", replica, - std::string(""), colvarparse::parse_silent) && + std::string(""), colvarparse::parse_silent) && (replica != this->replica_id)) cvm::fatal_error("Error: in the restart file, the " - "\"metadynamics\" block has a different replicaID: different system?\n"); + "\"metadynamics\" block has a different replicaID: different system?\n"); colvarparse::get_keyval(conf, "step", state_file_step, - cvm::step_absolute(), colvarparse::parse_silent); + cvm::step_absolute(), colvarparse::parse_silent); } bool grids_from_restart_file = use_grids; @@ -1206,8 +1115,8 @@ std::istream & colvarbias_meta::read_restart(std::istream& is) if (has_data) { if (cvm::debug()) cvm::log("Backupping grids for metadynamics bias \""+ - this->name+"\""+ - ((comm != single_replica) ? ", replica \""+replica_id+"\"" : "")+".\n"); + this->name+"\""+ + ((comm != single_replica) ? ", replica \""+replica_id+"\"" : "")+".\n"); hills_energy_backup = hills_energy; hills_energy_gradients_backup = hills_energy_gradients; hills_energy = new colvar_grid_scalar(colvars); @@ -1234,14 +1143,14 @@ std::istream & colvarbias_meta::read_restart(std::istream& is) if (!rebin_grids) { if (hills_energy_backup == NULL) cvm::fatal_error("Error: couldn't read the free energy grid for metadynamics bias \""+ - this->name+"\""+ - ((comm != single_replica) ? ", replica \""+replica_id+"\"" : "")+ - "; if useGrids was off when the state file was written, " - "enable rebinGrids now to regenerate the grids.\n"); + this->name+"\""+ + ((comm != single_replica) ? ", replica \""+replica_id+"\"" : "")+ + "; if useGrids was off when the state file was written, " + "enable rebinGrids now to regenerate the grids.\n"); else { if (comm == single_replica) cvm::log("Error: couldn't read the free energy grid for metadynamics bias \""+ - this->name+"\".\n"); + this->name+"\".\n"); delete hills_energy; delete hills_energy_gradients; hills_energy = hills_energy_backup; @@ -1272,14 +1181,14 @@ std::istream & colvarbias_meta::read_restart(std::istream& is) if (!rebin_grids) { if (hills_energy_backup == NULL) cvm::fatal_error("Error: couldn't read the free energy gradients grid for metadynamics bias \""+ - this->name+"\""+ - ((comm != single_replica) ? ", replica \""+replica_id+"\"" : "")+ - "; if useGrids was off when the state file was written, " - "enable rebinGrids now to regenerate the grids.\n"); + this->name+"\""+ + ((comm != single_replica) ? ", replica \""+replica_id+"\"" : "")+ + "; if useGrids was off when the state file was written, " + "enable rebinGrids now to regenerate the grids.\n"); else { if (comm == single_replica) cvm::log("Error: couldn't read the free energy gradients grid for metadynamics bias \""+ - this->name+"\".\n"); + this->name+"\".\n"); delete hills_energy; delete hills_energy_gradients; hills_energy = hills_energy_backup; @@ -1292,8 +1201,8 @@ std::istream & colvarbias_meta::read_restart(std::istream& is) if (cvm::debug()) cvm::log("Successfully read new grids for bias \""+ - this->name+"\""+ - ((comm != single_replica) ? ", replica \""+replica_id+"\"" : "")+"\n"); + this->name+"\""+ + ((comm != single_replica) ? ", replica \""+replica_id+"\"" : "")+"\n"); if (hills_energy_backup != NULL) { // now that we have successfully updated the grids, delete the @@ -1315,16 +1224,16 @@ std::istream & colvarbias_meta::read_restart(std::istream& is) while (read_hill(is)) { if (cvm::debug()) cvm::log("Read a previously saved hill under the " - "metadynamics bias \""+ - this->name+"\", created at step "+ - cvm::to_str((hills.back()).it)+".\n"); + "metadynamics bias \""+ + this->name+"\", created at step "+ + cvm::to_str((hills.back()).it)+".\n"); } is.clear(); new_hills_begin = hills.end(); if (grids_from_restart_file) { if (hills.size() > old_hills_size) cvm::log("Read "+cvm::to_str(hills.size())+ - " hills in addition to the grids.\n"); + " hills in addition to the grids.\n"); } else { if (!hills.empty()) cvm::log("Read "+cvm::to_str(hills.size())+" hills.\n"); @@ -1344,15 +1253,15 @@ std::istream & colvarbias_meta::read_restart(std::istream& is) if (!grids_from_restart_file || (keep_hills && !hills.empty())) { // if there are hills, recompute the new grids from them cvm::log("Rebinning the energy and forces grids from "+ - cvm::to_str(hills.size())+" hills (this may take a while)...\n"); + cvm::to_str(hills.size())+" hills (this may take a while)...\n"); project_hills(hills.begin(), hills.end(), - new_hills_energy, new_hills_energy_gradients, true); + new_hills_energy, new_hills_energy_gradients, true); cvm::log("rebinning done.\n"); } else { // otherwise, use the grids in the restart file cvm::log("Rebinning the energy and forces grids " - "from the grids in the restart file.\n"); + "from the grids in the restart file.\n"); new_hills_energy->map_grid(*hills_energy); new_hills_energy_gradients->map_grid(*hills_energy_gradients); } @@ -1371,18 +1280,18 @@ std::istream & colvarbias_meta::read_restart(std::istream& is) if (use_grids) { if (!hills_off_grid.empty()) { cvm::log(cvm::to_str(hills_off_grid.size())+" hills are near the " - "grid boundaries: they will be computed analytically " - "and saved to the state files.\n"); + "grid boundaries: they will be computed analytically " + "and saved to the state files.\n"); } } is >> brace; if (brace != "}") { cvm::log("Incomplete restart information for metadynamics bias \""+ - this->name+"\""+ - ((comm != single_replica) ? ", replica \""+replica_id+"\"" : "")+ - ": no closing brace at position "+ - cvm::to_str(is.tellg())+" in the file.\n"); + this->name+"\""+ + ((comm != single_replica) ? ", replica \""+replica_id+"\"" : "")+ + ": no closing brace at position "+ + cvm::to_str(is.tellg())+" in the file.\n"); is.setstate(std::ios::failbit); return is; } @@ -1424,8 +1333,8 @@ std::istream & colvarbias_meta::read_hill(std::istream &is) if (h_it <= state_file_step) { if (cvm::debug()) cvm::log("Skipping a hill older than the state file for metadynamics bias \""+ - this->name+"\""+ - ((comm != single_replica) ? ", replica \""+replica_id+"\"" : "")+"\n"); + this->name+"\""+ + ((comm != single_replica) ? ", replica \""+replica_id+"\"" : "")+"\n"); return is; } @@ -1449,16 +1358,16 @@ std::istream & colvarbias_meta::read_hill(std::istream &is) std::vector h_widths(colvars.size()); get_keyval(data, "widths", h_widths, - std::vector (colvars.size(), (std::sqrt(2.0 * PI) / 2.0)), - parse_silent); + std::vector (colvars.size(), (std::sqrt(2.0 * PI) / 2.0)), + parse_silent); std::string h_replica = ""; if (comm != single_replica) { get_keyval(data, "replicaID", h_replica, replica_id, parse_silent); if (h_replica != replica_id) cvm::fatal_error("Error: trying to read a hill created by replica \""+h_replica+ - "\" for replica \""+replica_id+ - "\"; did you swap output files?\n"); + "\" for replica \""+replica_id+ + "\"; did you swap output files?\n"); } hill_iter const hills_end = hills.end(); @@ -1490,6 +1399,111 @@ std::istream & colvarbias_meta::read_hill(std::istream &is) // output functions // ********************************************************************** + +int colvarbias_meta::setup_output() +{ + + if (comm == multiple_replicas) { + + // TODO: one may want to specify the path manually for intricated filesystems? + char *pwd = new char[3001]; + if (GETCWD(pwd, 3000) == NULL) + cvm::fatal_error("Error: cannot get the path of the current working directory.\n"); + replica_list_file = + (std::string(pwd)+std::string(PATHSEP)+ + this->name+"."+replica_id+".files.txt"); + // replica_hills_file and replica_state_file are those written + // by the current replica; within the mirror biases, they are + // those by another replica + replica_hills_file = + (std::string(pwd)+std::string(PATHSEP)+ + cvm::output_prefix+".colvars."+this->name+"."+replica_id+".hills"); + replica_state_file = + (std::string(pwd)+std::string(PATHSEP)+ + cvm::output_prefix+".colvars."+this->name+"."+replica_id+".state"); + delete[] pwd; + + // now register this replica + + // first check that it isn't already there + bool registered_replica = false; + std::ifstream reg_is(replicas_registry_file.c_str()); + if (reg_is.is_open()) { // the file may not be there yet + std::string existing_replica(""); + std::string existing_replica_file(""); + while ((reg_is >> existing_replica) && existing_replica.size() && + (reg_is >> existing_replica_file) && existing_replica_file.size()) { + if (existing_replica == replica_id) { + // this replica was already registered + replica_list_file = existing_replica_file; + reg_is.close(); + registered_replica = true; + break; + } + } + reg_is.close(); + } + + // if this replica was not included yet, we should generate a + // new record for it: but first, we write this replica's files, + // for the others to read + + // open the "hills" buffer file + if (!replica_hills_os.is_open()) { + cvm::backup_file(replica_hills_file.c_str()); + replica_hills_os.open(replica_hills_file.c_str()); + if (!replica_hills_os.is_open()) + cvm::error("Error: in opening file \""+ + replica_hills_file+"\" for writing.\n", FILE_ERROR); + replica_hills_os.setf(std::ios::scientific, std::ios::floatfield); + } + + // write the state file (so that there is always one available) + write_replica_state_file(); + // schedule to read the state files of the other replicas + for (size_t ir = 0; ir < replicas.size(); ir++) { + (replicas[ir])->replica_state_file_in_sync = false; + } + + // if we're running without grids, use a growing list of "hills" files + // otherwise, just one state file and one "hills" file as buffer + std::ofstream list_os(replica_list_file.c_str(), + (use_grids ? std::ios::trunc : std::ios::app)); + if (! list_os.is_open()) + cvm::fatal_error("Error: in opening file \""+ + replica_list_file+"\" for writing.\n"); + list_os << "stateFile " << replica_state_file << "\n"; + list_os << "hillsFile " << replica_hills_file << "\n"; + list_os.close(); + + // finally, if add a new record for this replica to the registry + if (! registered_replica) { + std::ofstream reg_os(replicas_registry_file.c_str(), std::ios::app); + if (! reg_os.is_open()) + cvm::error("Error: in opening file \""+ + replicas_registry_file+"\" for writing.\n", FILE_ERROR); + reg_os << replica_id << " " << replica_list_file << "\n"; + reg_os.close(); + } + } + + if (b_hills_traj) { + std::string const traj_file_name(cvm::output_prefix+ + ".colvars."+this->name+ + ( (comm != single_replica) ? + ("."+replica_id) : + ("") )+ + ".hills.traj"); + hills_traj_os.open(traj_file_name.c_str()); + if (!hills_traj_os.is_open()) + cvm::error("Error: in opening hills output file \"" + + traj_file_name+"\".\n", FILE_ERROR); + } + + return (cvm::get_error() ? COLVARS_ERROR : COLVARS_OK); +} + + std::ostream & colvarbias_meta::write_restart(std::ostream& os) { os << "metadynamics {\n" @@ -1505,7 +1519,7 @@ std::ostream & colvarbias_meta::write_restart(std::ostream& os) // this is a very good time to project hills, if you haven't done // it already! project_hills(new_hills_begin, hills.end(), - hills_energy, hills_energy_gradients); + hills_energy, hills_energy_gradients); new_hills_begin = hills.end(); // write down the grids to the restart file @@ -1579,10 +1593,10 @@ void colvarbias_meta::write_pmf() } { std::string const fes_file_name(fes_file_name_prefix + - ((comm != single_replica) ? ".partial" : "") + - (dump_fes_save ? - "."+cvm::to_str(cvm::step_absolute()) : "") + - ".pmf"); + ((comm != single_replica) ? ".partial" : "") + + (dump_fes_save ? + "."+cvm::to_str(cvm::step_absolute()) : "") + + ".pmf"); cvm::backup_file(fes_file_name.c_str()); cvm::ofstream fes_os(fes_file_name.c_str()); pmf->write_multicol(fes_os); @@ -1604,9 +1618,9 @@ void colvarbias_meta::write_pmf() pmf->multiply_constant(well_temper_scale); } std::string const fes_file_name(fes_file_name_prefix + - (dump_fes_save ? - "."+cvm::to_str(cvm::step_absolute()) : "") + - ".pmf"); + (dump_fes_save ? + "."+cvm::to_str(cvm::step_absolute()) : "") + + ".pmf"); cvm::backup_file(fes_file_name.c_str()); cvm::ofstream fes_os(fes_file_name.c_str()); pmf->write_multicol(fes_os); @@ -1624,9 +1638,9 @@ void colvarbias_meta::write_replica_state_file() // is duplicated code, that could be cleaned up later cvm::backup_file(replica_state_file.c_str()); cvm::ofstream rep_state_os(replica_state_file.c_str()); - if (!rep_state_os.good()) + if (!rep_state_os.is_open()) cvm::fatal_error("Error: in opening file \""+ - replica_state_file+"\" for writing.\n"); + replica_state_file+"\" for writing.\n"); rep_state_os.setf(std::ios::scientific, std::ios::floatfield); rep_state_os << "\n" @@ -1668,10 +1682,11 @@ void colvarbias_meta::write_replica_state_file() // reopen the hills file replica_hills_os.close(); + cvm::backup_file(replica_hills_file.c_str()); replica_hills_os.open(replica_hills_file.c_str()); - if (!replica_hills_os.good()) + if (!replica_hills_os.is_open()) cvm::fatal_error("Error: in opening file \""+ - replica_hills_file+"\" for writing.\n"); + replica_hills_file+"\" for writing.\n"); replica_hills_os.setf(std::ios::scientific, std::ios::floatfield); } diff --git a/lib/colvars/colvarbias_meta.h b/lib/colvars/colvarbias_meta.h index e2f175ad92..d4c521ae62 100644 --- a/lib/colvars/colvarbias_meta.h +++ b/lib/colvars/colvarbias_meta.h @@ -42,6 +42,8 @@ public: virtual std::ostream & write_restart(std::ostream &os); + virtual int setup_output(); + virtual void write_pmf(); class hill; diff --git a/lib/colvars/colvarbias_restraint.h b/lib/colvars/colvarbias_restraint.h index 91f37181d6..3148fe0138 100644 --- a/lib/colvars/colvarbias_restraint.h +++ b/lib/colvars/colvarbias_restraint.h @@ -110,7 +110,7 @@ protected: /// \brief Number of steps required to reach the target force constant /// or restraint centers - size_t target_nsteps; + long target_nsteps; }; /// \brief Harmonic bias restraint diff --git a/lib/colvars/colvarcomp_distances.cpp b/lib/colvars/colvarcomp_distances.cpp index f253aeffc6..ad8c9c605c 100644 --- a/lib/colvars/colvarcomp_distances.cpp +++ b/lib/colvars/colvarcomp_distances.cpp @@ -849,12 +849,12 @@ colvar::rmsd::rmsd(std::string const &conf) } std::string ref_pos_col; - double ref_pos_col_value; + double ref_pos_col_value=0.0; if (get_keyval(conf, "refPositionsCol", ref_pos_col, std::string(""))) { // if provided, use PDB column to select coordinates bool found = get_keyval(conf, "refPositionsColValue", ref_pos_col_value, 0.0); - if (found && !ref_pos_col_value) { + if (found && ref_pos_col_value==0.0) { cvm::error("Error: refPositionsColValue, " "if provided, must be non-zero.\n"); return; @@ -1043,11 +1043,11 @@ colvar::eigenvector::eigenvector(std::string const &conf) } std::string file_col; - double file_col_value; + double file_col_value=0.0; if (get_keyval(conf, "refPositionsCol", file_col, std::string(""))) { // use PDB flags if column is provided bool found = get_keyval(conf, "refPositionsColValue", file_col_value, 0.0); - if (found && !file_col_value) { + if (found && file_col_value==0.0) { cvm::error("Error: refPositionsColValue, " "if provided, must be non-zero.\n"); return; @@ -1107,11 +1107,11 @@ colvar::eigenvector::eigenvector(std::string const &conf) } std::string file_col; - double file_col_value; + double file_col_value=0.0; if (get_keyval(conf, "vectorCol", file_col, std::string(""))) { // use PDB flags if column is provided bool found = get_keyval(conf, "vectorColValue", file_col_value, 0.0); - if (found && !file_col_value) { + if (found && file_col_value==0.0) { cvm::error("Error: vectorColValue, if provided, must be non-zero.\n"); return; } @@ -1324,14 +1324,6 @@ void colvar::cartesian::calc_value() x.vector1d_value[dim*ia + j] = atoms[ia].pos[axes[j]]; } } - - if (atoms.weights.size()) { - for (ia = 0; ia < atoms.size(); ia++) { - for (j = 0; j < dim; j++) { - x.vector1d_value[dim*ia + j] *= atoms.weights[ia]; - } - } - } } @@ -1349,20 +1341,11 @@ void colvar::cartesian::apply_force(colvarvalue const &force) size_t ia, j; if (!atoms.noforce) { cvm::rvector f; - if (atoms.weights.size()) { - for (ia = 0; ia < atoms.size(); ia++) { - for (j = 0; j < dim; j++) { - f[axes[j]] = force.vector1d_value[dim*ia + j] / atoms.weights[ia]; - } - atoms[ia].apply_force(f); - } - } else { - for (ia = 0; ia < atoms.size(); ia++) { - for (j = 0; j < dim; j++) { - f[axes[j]] = force.vector1d_value[dim*ia + j]; - } - atoms[ia].apply_force(f); + for (ia = 0; ia < atoms.size(); ia++) { + for (j = 0; j < dim; j++) { + f[axes[j]] = force.vector1d_value[dim*ia + j]; } + atoms[ia].apply_force(f); } } } diff --git a/lib/colvars/colvarcomp_rotations.cpp b/lib/colvars/colvarcomp_rotations.cpp index a4c5f2187d..4bc0dcff0e 100644 --- a/lib/colvars/colvarcomp_rotations.cpp +++ b/lib/colvars/colvarcomp_rotations.cpp @@ -33,11 +33,11 @@ colvar::orientation::orientation(std::string const &conf) if (get_keyval(conf, "refPositionsFile", file_name)) { std::string file_col; - double file_col_value; + double file_col_value=0.0; if (get_keyval(conf, "refPositionsCol", file_col, std::string(""))) { // use PDB flags if column is provided bool found = get_keyval(conf, "refPositionsColValue", file_col_value, 0.0); - if (found && !file_col_value) + if (found && file_col_value==0.0) cvm::fatal_error("Error: refPositionsColValue, " "if provided, must be non-zero.\n"); } else { diff --git a/lib/colvars/colvarmodule.cpp b/lib/colvars/colvarmodule.cpp index e91ed1e6cc..99a32ca8ff 100644 --- a/lib/colvars/colvarmodule.cpp +++ b/lib/colvars/colvarmodule.cpp @@ -8,9 +8,10 @@ #include "colvarproxy.h" #include "colvar.h" #include "colvarbias.h" -#include "colvarbias_alb.h" -#include "colvarbias_meta.h" #include "colvarbias_abf.h" +#include "colvarbias_alb.h" +#include "colvarbias_histogram.h" +#include "colvarbias_meta.h" #include "colvarbias_restraint.h" #include "colvarscript.h" @@ -523,13 +524,13 @@ int colvarmodule::calc() { cvm::log("Perform runtime analyses.\n"); cvm::increase_depth(); for (cvi = colvars.begin(); cvi != colvars.end(); cvi++) { - (*cvi)->analyse(); + (*cvi)->analyze(); if (cvm::get_error()) { return COLVARS_ERROR; } } for (bi = biases.begin(); bi != biases.end(); bi++) { - (*bi)->analyse(); + (*bi)->analyze(); if (cvm::get_error()) { return COLVARS_ERROR; } @@ -627,7 +628,7 @@ int colvarmodule::analyze() cvi != colvars.end(); cvi++) { cvm::increase_depth(); - (*cvi)->analyse(); + (*cvi)->analyze(); cvm::decrease_depth(); } @@ -636,7 +637,7 @@ int colvarmodule::analyze() bi != biases.end(); bi++) { cvm::increase_depth(); - (*bi)->analyse(); + (*bi)->analyze(); cvm::decrease_depth(); } @@ -717,13 +718,15 @@ int colvarmodule::setup_input() cvm::log(cvm::line_marker); } } - return (cvm::get_error() ? COLVARS_ERROR : COLVARS_OK); + return (cvm::get_error() ? COLVARS_ERROR : COLVARS_OK); } int colvarmodule::setup_output() { + int error_code = 0; + // output state file (restart) restart_out_name = proxy->restart_output_prefix().size() ? std::string(proxy->restart_output_prefix()+".colvars.state") : @@ -748,7 +751,17 @@ int colvarmodule::setup_output() std::string("")); if (cv_traj_freq && cv_traj_name.size()) { - open_traj_file(cv_traj_name); + error_code |= open_traj_file(cv_traj_name); + } + + for (std::vector::iterator bi = biases.begin(); + bi != biases.end(); + bi++) { + error_code |= (*bi)->setup_output(); + } + + if (error_code != COLVARS_OK || cvm::get_error()) { + set_error_bits(FILE_ERROR); } return (cvm::get_error() ? COLVARS_ERROR : COLVARS_OK); @@ -828,6 +841,14 @@ int colvarmodule::write_output_files() } cvm::decrease_depth(); + cvm::increase_depth(); + for (std::vector::iterator bi = biases.begin(); + bi != biases.end(); + bi++) { + (*bi)->write_output_files(); + } + cvm::decrease_depth(); + if (cv_traj_os.is_open()) { // do not close to avoid problems with multiple NAMD runs cv_traj_os.flush(); @@ -839,8 +860,8 @@ int colvarmodule::write_output_files() int colvarmodule::read_traj(char const *traj_filename, - size_t traj_read_begin, - size_t traj_read_end) + long traj_read_begin, + long traj_read_end) { cvm::log("Opening trajectory file \""+ std::string(traj_filename)+"\".\n"); @@ -1204,8 +1225,8 @@ colvarproxy *colvarmodule::proxy = NULL; // static runtime data cvm::real colvarmodule::debug_gradients_step_size = 1.0e-03; int colvarmodule::errorCode = 0; -size_t colvarmodule::it = 0; -size_t colvarmodule::it_restart = 0; +long colvarmodule::it = 0; +long colvarmodule::it_restart = 0; size_t colvarmodule::restart_out_freq = 0; size_t colvarmodule::cv_traj_freq = 0; size_t colvarmodule::depth = 0; diff --git a/lib/colvars/colvarmodule.h b/lib/colvars/colvarmodule.h index 07134c2db5..25d2ce817b 100644 --- a/lib/colvars/colvarmodule.h +++ b/lib/colvars/colvarmodule.h @@ -4,7 +4,7 @@ #define COLVARMODULE_H #ifndef COLVARS_VERSION -#define COLVARS_VERSION "2015-03-15" +#define COLVARS_VERSION "2015-04-22" #endif #ifndef COLVARS_DEBUG @@ -122,19 +122,19 @@ public: } /// Current step number - static size_t it; + static long it; /// Starting step number for this run - static size_t it_restart; + static long it_restart; /// Return the current step number from the beginning of this run - static inline size_t step_relative() + static inline long step_relative() { return it - it_restart; } /// Return the current step number from the beginning of the whole /// calculation - static inline size_t step_absolute() + static inline long step_absolute() { return it; } @@ -302,8 +302,8 @@ public: /// \brief Read a collective variable trajectory (post-processing /// only, not called at runtime) int read_traj(char const *traj_filename, - size_t traj_read_begin, - size_t traj_read_end); + long traj_read_begin, + long traj_read_end); /// Quick conversion of an object to a string template static std::string to_str(T const &x, diff --git a/lib/colvars/colvarparse.cpp b/lib/colvars/colvarparse.cpp index 84777149c0..b564ec331b 100644 --- a/lib/colvars/colvarparse.cpp +++ b/lib/colvars/colvarparse.cpp @@ -227,6 +227,7 @@ size_t colvarparse::dummy_pos = 0; _get_keyval_scalar_(int); _get_keyval_scalar_(size_t); +_get_keyval_scalar_(long); _get_keyval_scalar_string_(std::string); _get_keyval_scalar_(cvm::real); _get_keyval_scalar_(cvm::rvector); @@ -238,6 +239,7 @@ _get_keyval_scalar_(colvarvalue); _get_keyval_vector_(int); _get_keyval_vector_(size_t); +_get_keyval_vector_(long); _get_keyval_vector_(std::string); _get_keyval_vector_(cvm::real); _get_keyval_vector_(cvm::rvector); diff --git a/lib/colvars/colvarparse.h b/lib/colvars/colvarparse.h index 5f7ba26ba3..5a753780a8 100644 --- a/lib/colvars/colvarparse.h +++ b/lib/colvars/colvarparse.h @@ -113,6 +113,7 @@ public: _get_keyval_scalar_proto_(int, (int)0); _get_keyval_scalar_proto_(size_t, (size_t)0); + _get_keyval_scalar_proto_(long, 0); _get_keyval_scalar_proto_(std::string, std::string("")); _get_keyval_scalar_proto_(cvm::real, (cvm::real)0.0); _get_keyval_scalar_proto_(cvm::rvector, cvm::rvector()); @@ -130,6 +131,7 @@ public: _get_keyval_vector_proto_(int, 0); _get_keyval_vector_proto_(size_t, 0); + _get_keyval_vector_proto_(long, 0); _get_keyval_vector_proto_(std::string, std::string("")); _get_keyval_vector_proto_(cvm::real, 0.0); _get_keyval_vector_proto_(cvm::rvector, cvm::rvector()); diff --git a/lib/colvars/colvarscript.cpp b/lib/colvars/colvarscript.cpp index b985ea5d2d..380f9d6fda 100644 --- a/lib/colvars/colvarscript.cpp +++ b/lib/colvars/colvarscript.cpp @@ -128,7 +128,18 @@ int colvarscript::run(int argc, char const *argv[]) { } } - /// TODO Write an output state file? (Useful for testing) + /// Save to an output state file + if (cmd == "save") { + if (argc < 3) { + result = "Missing arguments"; + return COLVARSCRIPT_ERROR; + } + proxy->output_prefix_str = argv[2]; + int error = 0; + error |= colvars->setup_output(); + error |= colvars->write_output_files(); + return error ? COLVARSCRIPT_ERROR : COLVARSCRIPT_OK; + } /// Print the values that would go on colvars.traj if (cmd == "printframelabels") { diff --git a/lib/colvars/colvartypes.cpp b/lib/colvars/colvartypes.cpp index 8e0aa57dfc..ad297a6ac9 100644 --- a/lib/colvars/colvartypes.cpp +++ b/lib/colvars/colvartypes.cpp @@ -501,7 +501,6 @@ void colvarmodule::rotation::calc_optimal_rotation(std::vector co cvm::quaternion const Q0_new(S_new_eigvec[0]); cvm::real const DL0 = (dl0_2[comp]) * colvarmodule::debug_gradients_step_size; - cvm::quaternion const q0(Q0); cvm::quaternion const DQ0(dq0_2[0][comp] * colvarmodule::debug_gradients_step_size, dq0_2[1][comp] * colvarmodule::debug_gradients_step_size, dq0_2[2][comp] * colvarmodule::debug_gradients_step_size, From c676c2d5607cd6ebd402c1109d2752c6957ea56e Mon Sep 17 00:00:00 2001 From: sjplimp Date: Thu, 30 Apr 2015 14:10:18 +0000 Subject: [PATCH 3/8] git-svn-id: svn://svn.icms.temple.edu/lammps-ro/trunk@13445 f3b2605a-c512-4ea7-a41b-209d697bcdaa --- lib/colvars/colvarbias_histogram.cpp | 226 +++++++++++++++++++++++++++ lib/colvars/colvarbias_histogram.h | 47 ++++++ 2 files changed, 273 insertions(+) create mode 100644 lib/colvars/colvarbias_histogram.cpp create mode 100644 lib/colvars/colvarbias_histogram.h diff --git a/lib/colvars/colvarbias_histogram.cpp b/lib/colvars/colvarbias_histogram.cpp new file mode 100644 index 0000000000..29f3c9bd9f --- /dev/null +++ b/lib/colvars/colvarbias_histogram.cpp @@ -0,0 +1,226 @@ +/// -*- c++ -*- + +#include "colvarmodule.h" +#include "colvar.h" +#include "colvarbias_histogram.h" + +/// Histogram "bias" constructor + +colvarbias_histogram::colvarbias_histogram(std::string const &conf, char const *key) + : colvarbias(conf, key), + grid(NULL), out_name("") +{ + get_keyval(conf, "outputFile", out_name, std::string("")); + get_keyval(conf, "outputFreq", output_freq, cvm::restart_out_freq); + /// with VMD, this may not be an error + // if ( output_freq == 0 ) { + // cvm::error("User required histogram with zero output frequency"); + // } + + colvar_array_size = 0; + { + size_t i; + bool colvar_array = false; + get_keyval(conf, "gatherVectorColvars", colvar_array, colvar_array); + + if (colvar_array) { + for (i = 0; i < colvars.size(); i++) { // should be all vector + if (colvars[i]->value().type() != colvarvalue::type_vector) { + cvm::error("Error: used gatherVectorColvars with non-vector colvar.\n", INPUT_ERROR); + return; + } + if (i == 0) { + colvar_array_size = colvars[i]->value().size(); + if (colvar_array_size < 1) { + cvm::error("Error: vector variable has dimension less than one.\n", INPUT_ERROR); + return; + } + } else { + if (colvar_array_size != colvars[i]->value().size()) { + cvm::error("Error: trying to combine vector colvars of different lengths.\n", INPUT_ERROR); + return; + } + } + } + } else { + for (i = 0; i < colvars.size(); i++) { // should be all scalar + if (colvars[i]->value().type() != colvarvalue::type_scalar) { + cvm::error("Error: only scalar colvars are supported when gatherVectorColvars is off.\n", INPUT_ERROR); + return; + } + } + } + } + + if (colvar_array_size > 0) { + weights.assign(colvar_array_size, 1.0); + get_keyval(conf, "weights", weights, weights, colvarparse::parse_silent); + } + + grid = new colvar_grid_scalar(); + + { + std::string grid_conf; + if (key_lookup(conf, "grid", grid_conf)) { + grid->parse_params(grid_conf); + } else { + grid->init_from_colvars(colvars); + } + } + + cvm::log("Finished histogram setup.\n"); +} + +/// Destructor +colvarbias_histogram::~colvarbias_histogram() +{ + if (grid_os.is_open()) + grid_os.close(); + + if (grid) { + delete grid; + grid = NULL; + } + + if (cvm::n_histo_biases > 0) + cvm::n_histo_biases -= 1; +} + +/// Update the grid +cvm::real colvarbias_histogram::update() +{ + if (cvm::debug()) { + cvm::log("Updating histogram bias " + this->name); + } + + // assign a valid bin size + bin.assign(colvars.size(), 0); + + if (out_name.size() == 0) { + // At the first timestep, we need to assign out_name since + // output_prefix is unset during the constructor + if (cvm::step_relative() == 0) { + out_name = cvm::output_prefix + "." + this->name + ".dat"; + cvm::log("Histogram " + this->name + " will be written to file \"" + out_name + "\""); + } + } + + if (colvar_array_size == 0) { + // update indices for scalar values + size_t i; + for (i = 0; i < colvars.size(); i++) { + bin[i] = grid->value_to_bin_scalar(colvars[i]->value(), i); + } + + if (grid->index_ok(bin)) { + grid->acc_value(bin, 1.0); + } + } else { + // update indices for vector/array values + size_t iv, i; + for (iv = 0; iv < colvar_array_size; iv++) { + for (i = 0; i < colvars.size(); i++) { + bin[i] = grid->value_to_bin_scalar(colvars[i]->value().vector1d_value[iv], i); + } + + if (grid->index_ok(bin)) { + grid->acc_value(bin, weights[iv]); + } + } + } + + if (output_freq && (cvm::step_absolute() % output_freq) == 0) { + write_output_files(); + } + return 0.0; // no bias energy for histogram +} + + +int colvarbias_histogram::write_output_files() +{ + if (out_name.size()) { + cvm::log("Writing the histogram file \""+out_name+"\".\n"); + + grid_os.open(out_name.c_str()); + if (!grid_os.is_open()) { + cvm::error("Error opening histogram file " + out_name + " for writing"); + } + // TODO add return code here + grid->write_multicol(grid_os); + grid_os.close(); + } + return COLVARS_OK; +} + + +std::istream & colvarbias_histogram::read_restart(std::istream& is) +{ + size_t const start_pos = is.tellg(); + + cvm::log("Restarting collective variable histogram \""+ + this->name+"\".\n"); + std::string key, brace, conf; + + if ( !(is >> key) || !(key == "histogram") || + !(is >> brace) || !(brace == "{") || + !(is >> colvarparse::read_block("configuration", conf)) ) { + cvm::log("Error: in reading restart configuration for histogram \""+ + this->name+"\" at position "+ + cvm::to_str(is.tellg())+" in stream.\n"); + is.clear(); + is.seekg(start_pos, std::ios::beg); + is.setstate(std::ios::failbit); + return is; + } + + int id = -1; + std::string name = ""; + if ( (colvarparse::get_keyval(conf, "name", name, std::string(""), colvarparse::parse_silent)) && + (name != this->name) ) + cvm::error("Error: in the restart file, the " + "\"histogram\" block has a wrong name: different system?\n"); + if ( (id == -1) && (name == "") ) { + cvm::error("Error: \"histogram\" block in the restart file " + "has no name.\n"); + } + + if ( !(is >> key) || !(key == "grid")) { + cvm::error("Error: in reading restart configuration for histogram \""+ + this->name+"\" at position "+ + cvm::to_str(is.tellg())+" in stream.\n"); + is.clear(); + is.seekg(start_pos, std::ios::beg); + is.setstate(std::ios::failbit); + return is; + } + if (! grid->read_raw(is)) { + is.clear(); + is.seekg(start_pos, std::ios::beg); + is.setstate(std::ios::failbit); + return is; + } + + is >> brace; + if (brace != "}") { + cvm::error("Error: corrupt restart information for ABF bias \""+ + this->name+"\": no matching brace at position "+ + cvm::to_str(is.tellg())+" in the restart file.\n"); + is.setstate(std::ios::failbit); + } + return is; +} + +std::ostream & colvarbias_histogram::write_restart(std::ostream& os) +{ + os << "histogram {\n" + << " configuration {\n" + << " name " << this->name << "\n"; + os << " }\n"; + + os << "grid\n"; + grid->write_raw(os, 8); + + os << "}\n\n"; + + return os; +} diff --git a/lib/colvars/colvarbias_histogram.h b/lib/colvars/colvarbias_histogram.h new file mode 100644 index 0000000000..b9d07151d3 --- /dev/null +++ b/lib/colvars/colvarbias_histogram.h @@ -0,0 +1,47 @@ +// -*- c++ -*- + +#ifndef COLVARBIAS_HISTOGRAM_H +#define COLVARBIAS_HISTOGRAM_H + +#include +#include +#include +#include + +#include "colvarbias.h" +#include "colvargrid.h" + +/// Histogram "bias" (does as the name says) +class colvarbias_histogram : public colvarbias { + +public: + + colvarbias_histogram(std::string const &conf, char const *key); + ~colvarbias_histogram(); + + cvm::real update(); + + int write_output_files(); + +protected: + + /// n-dim histogram + colvar_grid_scalar *grid; + std::vector bin; + std::string out_name; + + size_t output_freq; + + /// If one or more of the variables are \link type_vector \endlink, treat them as arrays of this length + size_t colvar_array_size; + /// If colvar_array_size is larger than 1, weigh each one by this number before accumulating the histogram + std::vector weights; + + void write_grid(); + cvm::ofstream grid_os; /// Stream for writing grid to disk + + std::istream& read_restart(std::istream&); + std::ostream& write_restart(std::ostream&); +}; + +#endif From b5684177085830e2f3772b6c261cd8166552d2d2 Mon Sep 17 00:00:00 2001 From: sjplimp Date: Thu, 30 Apr 2015 14:10:42 +0000 Subject: [PATCH 4/8] git-svn-id: svn://svn.icms.temple.edu/lammps-ro/trunk@13446 f3b2605a-c512-4ea7-a41b-209d697bcdaa --- src/USER-COLVARS/colvarproxy_lammps.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/USER-COLVARS/colvarproxy_lammps.h b/src/USER-COLVARS/colvarproxy_lammps.h index 94c3bacdd4..74f7193784 100644 --- a/src/USER-COLVARS/colvarproxy_lammps.h +++ b/src/USER-COLVARS/colvarproxy_lammps.h @@ -15,7 +15,7 @@ #include #ifndef COLVARPROXY_VERSION -#define COLVARPROXY_VERSION "2015-04-01" +#define COLVARPROXY_VERSION "2015-04-02" #endif /* struct for packed data communication of coordinates and forces. */ From 8d99bf477938df4dc57547f185a45d4677635136 Mon Sep 17 00:00:00 2001 From: sjplimp Date: Thu, 30 Apr 2015 14:31:11 +0000 Subject: [PATCH 5/8] git-svn-id: svn://svn.icms.temple.edu/lammps-ro/trunk@13447 f3b2605a-c512-4ea7-a41b-209d697bcdaa --- src/compute_pressure.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/compute_pressure.cpp b/src/compute_pressure.cpp index 8e57130f93..d4a3109ea9 100644 --- a/src/compute_pressure.cpp +++ b/src/compute_pressure.cpp @@ -285,9 +285,9 @@ void ComputePressure::virial_compute(int n, int ndiag) if (kspace_virial) for (i = 0; i < n; i++) virial[i] += kspace_virial[i]; - // LJ long-range tail correction + // LJ long-range tail correction, only if pair contributions are included - if (force->pair && force->pair->tail_flag) + if (force->pair && pairflag && force->pair->tail_flag) for (i = 0; i < ndiag; i++) virial[i] += force->pair->ptail * inv_volume; } From 45b935ead3f451b799ca29ddd567d9b2f5ec03c4 Mon Sep 17 00:00:00 2001 From: sjplimp Date: Thu, 30 Apr 2015 17:33:34 +0000 Subject: [PATCH 6/8] git-svn-id: svn://svn.icms.temple.edu/lammps-ro/trunk@13448 f3b2605a-c512-4ea7-a41b-209d697bcdaa --- src/RIGID/fix_rigid_small.cpp | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/RIGID/fix_rigid_small.cpp b/src/RIGID/fix_rigid_small.cpp index a1a383654c..a4aa9bb19b 100644 --- a/src/RIGID/fix_rigid_small.cpp +++ b/src/RIGID/fix_rigid_small.cpp @@ -2658,6 +2658,12 @@ void FixRigidSmall::set_molecule(int nlocalprev, tagint tagprev, int imol, double ctr2com[3],ctr2com_rotate[3]; double rotmat[3][3]; + // increment total # of rigid bodies + + nbody++; + + // loop over atoms I added for the new body + int nlocal = atom->nlocal; if (nlocalprev == nlocal) return; @@ -2715,10 +2721,6 @@ void FixRigidSmall::set_molecule(int nlocalprev, tagint tagprev, int imol, nlocal_body++; } } - - // increment total # of rigid bodies - - nbody++; } /* ---------------------------------------------------------------------- From 606e83152883b465c543b3b6dc8ab1178b4d3547 Mon Sep 17 00:00:00 2001 From: sjplimp Date: Thu, 30 Apr 2015 17:36:31 +0000 Subject: [PATCH 7/8] git-svn-id: svn://svn.icms.temple.edu/lammps-ro/trunk@13449 f3b2605a-c512-4ea7-a41b-209d697bcdaa --- src/version.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/version.h b/src/version.h index b422835a47..9c1d25468c 100644 --- a/src/version.h +++ b/src/version.h @@ -1 +1 @@ -#define LAMMPS_VERSION "28 Apr 2015" +#define LAMMPS_VERSION "30 Apr 2015" From 682950268bd11589eb4907a60fffe453042b3f1a Mon Sep 17 00:00:00 2001 From: sjplimp Date: Thu, 30 Apr 2015 17:36:33 +0000 Subject: [PATCH 8/8] git-svn-id: svn://svn.icms.temple.edu/lammps-ro/trunk@13450 f3b2605a-c512-4ea7-a41b-209d697bcdaa --- doc/Manual.html | 4 ++-- doc/Manual.txt | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/doc/Manual.html b/doc/Manual.html index 7ba0c33b9a..d08b86acbd 100644 --- a/doc/Manual.html +++ b/doc/Manual.html @@ -1,7 +1,7 @@ LAMMPS Users Manual - + @@ -22,7 +22,7 @@

LAMMPS Documentation

-

28 Apr 2015 version +

30 Apr 2015 version

Version info:

diff --git a/doc/Manual.txt b/doc/Manual.txt index fab5e90668..c2dca06862 100644 --- a/doc/Manual.txt +++ b/doc/Manual.txt @@ -1,6 +1,6 @@ LAMMPS Users Manual - + @@ -18,7 +18,7 @@

LAMMPS Documentation :c,h3 -28 Apr 2015 version :c,h4 +30 Apr 2015 version :c,h4 Version info: :h4