| version 1.5 | version 1.6 |
|---|
| |
| // -*- c++ -*- | // -*- c++ -*- |
| | |
| | // This file is part of the Collective Variables module (Colvars). |
| | // The original version of Colvars and its updates are located at: |
| | // https://github.com/colvars/colvars |
| | // Please update all Colvars source files before making any changes. |
| | // If you wish to distribute your changes, please submit them to the |
| | // Colvars repository at GitHub. |
| | |
| #include <stdio.h> | #include <stdio.h> |
| #include <stdlib.h> | #include <stdlib.h> |
| #include <math.h> | #include <math.h> |
| |
| { | { |
| colvarbias::init(conf); | colvarbias::init(conf); |
| | |
| | provide(f_cvb_scalar_variables); |
| | enable(f_cvb_scalar_variables); |
| | |
| provide(f_cvb_history_dependent); | provide(f_cvb_history_dependent); |
| | |
| size_t i; | size_t i; |
| |
| | |
| colvarbias_alb::~colvarbias_alb() | colvarbias_alb::~colvarbias_alb() |
| { | { |
| if (cvm::n_rest_biases > 0) | |
| cvm::n_rest_biases -= 1; | |
| } | } |
| | |
| | |
| |
| } | } |
| | |
| | |
| std::istream & colvarbias_alb::read_restart(std::istream &is) | int colvarbias_alb::set_state_params(std::string const &conf) |
| { | { |
| size_t const start_pos = is.tellg(); | |
| | |
| cvm::log("Restarting adaptive linear bias \""+ | |
| this->name+"\".\n"); | |
| | |
| std::string key, brace, conf; | |
| if ( !(is >> key) || !(key == "ALB") || | |
| !(is >> brace) || !(brace == "{") || | |
| !(is >> colvarparse::read_block("configuration", conf)) ) { | |
| | |
| cvm::log("Error: in reading restart configuration for restraint bias \""+ | |
| 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; | |
| } | |
| | |
| std::string name = ""; | |
| if ( (colvarparse::get_keyval(conf, "name", name, std::string(""), colvarparse::parse_silent)) && | |
| (name != this->name) ) | |
| cvm::fatal_error("Error: in the restart file, the " | |
| "\"ALB\" block has a wrong name\n"); | |
| if (name.size() == 0) { | |
| cvm::fatal_error("Error: \"ALB\" block in the restart file " | |
| "has no identifiers.\n"); | |
| } | |
| | |
| if (!get_keyval(conf, "setCoupling", set_coupling)) | if (!get_keyval(conf, "setCoupling", set_coupling)) |
| cvm::fatal_error("Error: current setCoupling is missing from the restart.\n"); | cvm::fatal_error("Error: current setCoupling is missing from the restart.\n"); |
| | |
| |
| if (!get_keyval(conf, "b_equilibration", b_equilibration)) | if (!get_keyval(conf, "b_equilibration", b_equilibration)) |
| cvm::fatal_error("Error: current updateCalls is missing from the restart.\n"); | cvm::fatal_error("Error: current updateCalls is missing from the restart.\n"); |
| | |
| is >> brace; | return COLVARS_OK; |
| if (brace != "}") { | |
| cvm::fatal_error("Error: corrupt restart information for adaptive linear 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_alb::write_restart(std::ostream &os) | std::string const colvarbias_alb::get_state_params() const |
| { | { |
| os << "ALB {\n" | std::ostringstream os; |
| << " configuration {\n" | |
| << " name " << this->name << "\n"; | |
| os << " setCoupling "; | os << " setCoupling "; |
| size_t i; | size_t i; |
| for (i = 0; i < colvars.size(); i++) { | for (i = 0; i < colvars.size(); i++) { |
| |
| else | else |
| os << " b_equilibration no\n"; | os << " b_equilibration no\n"; |
| | |
| os << " }\n" | return os.str(); |
| << "}\n\n"; | |
| | |
| return os; | |
| } | } |
| | |
| | |