Difference for src/colvarmodule.C from version 1.31 to 1.32

version 1.31version 1.32
Line 21
Line 21
 #include "colvarbias_meta.h" #include "colvarbias_meta.h"
 #include "colvarbias_restraint.h" #include "colvarbias_restraint.h"
 #include "colvarscript.h" #include "colvarscript.h"
  #include "colvaratoms.h"
  
  
 colvarmodule::colvarmodule(colvarproxy *proxy_in) colvarmodule::colvarmodule(colvarproxy *proxy_in)
Line 409
Line 410
  
   size_t i;   size_t i;
  
   for (i = 0; i < biases.size(); i++) { 
     biases[i]->enable(colvardeps::f_cvb_active); 
     if (cvm::debug()) 
       biases[i]->print_state(); 
   } 
  
   size_t n_hist_dep_biases = 0;   size_t n_hist_dep_biases = 0;
   std::vector<std::string> hist_dep_biases_names;   std::vector<std::string> hist_dep_biases_names;
   for (i = 0; i < biases.size(); i++) {   for (i = 0; i < biases.size(); i++) {
Line 487
Line 482
 } }
  
  
 colvarbias * colvarmodule::bias_by_name(std::string const &name) { colvarbias * colvarmodule::bias_by_name(std::string const &name)
  {
   colvarmodule *cv = cvm::main();   colvarmodule *cv = cvm::main();
   for (std::vector<colvarbias *>::iterator bi = cv->biases.begin();   for (std::vector<colvarbias *>::iterator bi = cv->biases.begin();
        bi != cv->biases.end();        bi != cv->biases.end();
Line 500
Line 496
 } }
  
  
 colvar *colvarmodule::colvar_by_name(std::string const &name) { colvar *colvarmodule::colvar_by_name(std::string const &name)
  {
   colvarmodule *cv = cvm::main();   colvarmodule *cv = cvm::main();
   for (std::vector<colvar *>::iterator cvi = cv->colvars.begin();   for (std::vector<colvar *>::iterator cvi = cv->colvars.begin();
        cvi != cv->colvars.end();        cvi != cv->colvars.end();
Line 513
Line 510
 } }
  
  
  cvm::atom_group *colvarmodule::atom_group_by_name(std::string const &name)
  {
    colvarmodule *cv = cvm::main();
    for (std::vector<cvm::atom_group *>::iterator agi = cv->named_atom_groups.begin();
         agi != cv->named_atom_groups.end();
         agi++) {
      if ((*agi)->name == name) {
        return (*agi);
      }
    }
    return NULL;
  }
  
  
 int colvarmodule::change_configuration(std::string const &bias_name, int colvarmodule::change_configuration(std::string const &bias_name,
                                        std::string const &conf)                                        std::string const &conf)
 { {
Line 666
Line 677
     cvm::log("Calculating collective variables.\n");     cvm::log("Calculating collective variables.\n");
   // calculate collective variables and their gradients   // calculate collective variables and their gradients
  
    // First, we need to decide which biases are awake
    // so they can activate colvars as needed
    std::vector<colvarbias *>::iterator bi;
    for (bi = biases.begin(); bi != biases.end(); bi++) {
      int tsf = (*bi)->get_time_step_factor();
      if (tsf > 0 && (step_absolute() % tsf == 0)) {
        (*bi)->enable(colvardeps::f_cvb_awake);
      } else {
        (*bi)->disable(colvardeps::f_cvb_awake);
      }
    }
  
   int error_code = COLVARS_OK;   int error_code = COLVARS_OK;
   std::vector<colvar *>::iterator cvi;   std::vector<colvar *>::iterator cvi;
  
   // Determine which colvars are active at this iteration   // Determine which colvars are active at this iteration
   variables_active()->resize(0);   variables_active()->clear();
   variables_active()->reserve(variables()->size());   variables_active()->reserve(variables()->size());
   for (cvi = variables()->begin(); cvi != variables()->end(); cvi++) {   for (cvi = variables()->begin(); cvi != variables()->end(); cvi++) {
     // This is a dynamic feature - the next call should be to enable()     // Wake up or put to sleep variables
     // or disable() when dynamic dependency resolution is fully implemented     int tsf = (*cvi)->get_time_step_factor();
     (*cvi)->set_enabled(colvardeps::f_cv_active,     if (tsf > 0 && (step_absolute() % tsf == 0)) {
       step_absolute() % (*cvi)->get_time_step_factor() == 0);       (*cvi)->enable(colvardeps::f_cv_awake);
      } else {
        (*cvi)->disable(colvardeps::f_cv_awake);
      }
  
      if ((*cvi)->is_enabled()) {
     variables_active()->push_back(*cvi);     variables_active()->push_back(*cvi);
   }   }
    }
  
   // if SMP support is available, split up the work   // if SMP support is available, split up the work
   if (proxy->smp_enabled() == COLVARS_OK) {   if (proxy->smp_enabled() == COLVARS_OK) {
  
     // first, calculate how much work (currently, how many active CVCs) each colvar has     // first, calculate how much work (currently, how many active CVCs) each colvar has
  
     variables_active_smp()->resize(0);     variables_active_smp()->clear();
     variables_active_smp_items()->resize(0);     variables_active_smp_items()->clear();
  
     variables_active_smp()->reserve(variables_active()->size());     variables_active_smp()->reserve(variables_active()->size());
     variables_active_smp_items()->reserve(variables_active()->size());     variables_active_smp_items()->reserve(variables_active()->size());
Line 748
Line 777
   total_bias_energy = 0.0;   total_bias_energy = 0.0;
  
   // update the list of active biases   // update the list of active biases
   biases_active()->resize(0);   // which may have changed based on f_cvb_awake in calc_colvars()
    biases_active()->clear();
   biases_active()->reserve(biases.size());   biases_active()->reserve(biases.size());
   for (bi = biases.begin(); bi != biases.end(); bi++) {   for (bi = biases.begin(); bi != biases.end(); bi++) {
     if ((*bi)->is_enabled()) {     if ((*bi)->is_enabled()) {
Line 828
Line 858
              "of colvars (if they have any).\n");              "of colvars (if they have any).\n");
   cvm::increase_depth();   cvm::increase_depth();
   for (cvi = variables()->begin(); cvi != variables()->end(); cvi++) {   for (cvi = variables()->begin(); cvi != variables()->end(); cvi++) {
     // Here we call even inactive colvars, so they accumulate biasing forces     // Inactive colvars will only reset their forces and return 0 energy
     // as well as update their extended-system dynamics 
     total_colvar_energy += (*cvi)->update_forces_energy();     total_colvar_energy += (*cvi)->update_forces_energy();
     if (cvm::get_error()) {     if (cvm::get_error()) {
       return COLVARS_ERROR;       return COLVARS_ERROR;
Line 1540
Line 1569
 } }
  
  
 void cvm::error(std::string const &message, int code) int colvarmodule::error(std::string const &message, int code)
 { {
   set_error_bits(code);   set_error_bits(code);
   proxy->error(message);   proxy->error(message);
    return get_error();
 } }
  
  
 void cvm::fatal_error(std::string const &message) int colvarmodule::fatal_error(std::string const &message)
 { {
   // TODO once all non-fatal errors have been set to be handled by error(),   // TODO once all non-fatal errors have been set to be handled by error(),
   // set DELETE_COLVARS here for VMD to handle it   // set DELETE_COLVARS here for VMD to handle it
   set_error_bits(FATAL_ERROR);   set_error_bits(FATAL_ERROR);
   proxy->fatal_error(message);   proxy->fatal_error(message);
    return get_error();
 } }
  
  


Legend:
Removed in v.1.31 
changed lines
 Added in v.1.32



Made by using version 1.53 of cvs2html