Difference for src/colvaratoms.C from version 1.25 to 1.26

version 1.25version 1.26
Line 67
Line 67
  
  
  
 // TODO change this arrangement cvm::atom_group::atom_group()
 // Note: "conf" is the configuration of the cvc who is using this atom group; 
 // "key" is the name of the atom group (e.g. "atoms", "group1", "group2", ...) 
 cvm::atom_group::atom_group(std::string const &conf, 
                             char const        *key_in) 
 { {
   key = key_in; 
   cvm::log("Defining atom group \"" + key + "\".\n"); 
   init();   init();
   // real work is done by parse 
   parse(conf); 
   setup(); 
 } }
  
  
 cvm::atom_group::atom_group(std::vector<cvm::atom> const &atoms_in) cvm::atom_group::atom_group(char const *key_in)
 { {
    key = key_in;
   init();   init();
   atoms = atoms_in; 
   setup(); 
 } }
  
  
 cvm::atom_group::atom_group() cvm::atom_group::atom_group(std::vector<cvm::atom> const &atoms_in)
 { {
   init();   init();
    atoms = atoms_in;
    setup();
 } }
  
  
Line 265
Line 257
 } }
  
  
 int cvm::atom_group::parse(std::string const &conf) int cvm::atom_group::parse(std::string const &group_conf)
 { {
   std::string group_conf; 
  
   // TODO move this to the cvc class constructor/init 
  
   // save_delimiters is set to false for this call, because "conf" is 
   // not the config string of this group, but of its parent object 
   // (which has already taken care of the delimiters) 
   save_delimiters = false; 
   key_lookup(conf, key.c_str(), group_conf, dummy_pos); 
   // restoring the normal value, because we do want keywords checked 
   // inside "group_conf" 
   save_delimiters = true; 
  
   if (group_conf.size() == 0) { 
     cvm::error("Error: atom group \""+key+ 
                "\" is set, but has no definition.\n", 
                INPUT_ERROR); 
     return COLVARS_ERROR; 
   } 
  
   cvm::increase_depth(); 
  
   cvm::log("Initializing atom group \""+key+"\".\n");   cvm::log("Initializing atom group \""+key+"\".\n");
  
   description = "atom group " + key; 
  
   // whether or not to include messages in the log   // whether or not to include messages in the log
   // colvarparse::Parse_Mode mode = parse_silent;   // colvarparse::Parse_Mode mode = parse_silent;
   // {   // {
Line 307
Line 275
   {   {
     std::string numbers_conf = "";     std::string numbers_conf = "";
     size_t pos = 0;     size_t pos = 0;
     while (key_lookup(group_conf, "atomNumbers", numbers_conf, pos)) {     while (key_lookup(group_conf, "atomNumbers", &numbers_conf, &pos)) {
       parse_error |= add_atom_numbers(numbers_conf);       parse_error |= add_atom_numbers(numbers_conf);
       numbers_conf = "";       numbers_conf = "";
     }     }
Line 325
Line 293
     std::string range_conf = "";     std::string range_conf = "";
     size_t pos = 0;     size_t pos = 0;
     while (key_lookup(group_conf, "atomNumbersRange",     while (key_lookup(group_conf, "atomNumbersRange",
                       range_conf, pos)) {                       &range_conf, &pos)) {
       parse_error |= add_atom_numbers_range(range_conf);       parse_error |= add_atom_numbers_range(range_conf);
       range_conf = "";       range_conf = "";
     }     }
Line 347
Line 315
     size_t range_count = 0;     size_t range_count = 0;
     psii = psf_segids.begin();     psii = psf_segids.begin();
     while (key_lookup(group_conf, "atomNameResidueRange",     while (key_lookup(group_conf, "atomNameResidueRange",
                       range_conf, pos)) {                       &range_conf, &pos)) {
       range_count++;       range_count++;
       if (psf_segids.size() && (range_count > psf_segids.size())) {       if (psf_segids.size() && (range_count > psf_segids.size())) {
         cvm::error("Error: more instances of \"atomNameResidueRange\" than "         cvm::error("Error: more instances of \"atomNameResidueRange\" than "
Line 431
Line 399
   bool b_print_atom_ids = false;   bool b_print_atom_ids = false;
   get_keyval(group_conf, "printAtomIDs", b_print_atom_ids, false, colvarparse::parse_silent);   get_keyval(group_conf, "printAtomIDs", b_print_atom_ids, false, colvarparse::parse_silent);
  
   // TODO move this to colvarparse object 
   check_keywords(group_conf, key.c_str()); 
   if (cvm::get_error()) { 
     cvm::error("Error setting up atom group \""+key+"\"."); 
     return COLVARS_ERROR; 
   } 
  
   // Calculate all required properties (such as total mass)   // Calculate all required properties (such as total mass)
   setup();   setup();
  
Line 454
Line 415
     cvm::log(print_atom_ids());     cvm::log(print_atom_ids());
   }   }
  
   cvm::decrease_depth(); 
  
   return (cvm::get_error() ? COLVARS_ERROR : COLVARS_OK);   return (cvm::get_error() ? COLVARS_ERROR : COLVARS_OK);
 } }
  
Line 643
Line 602
                  "cannot be defined for a dummy atom.\n");                  "cannot be defined for a dummy atom.\n");
  
     bool b_ref_pos_group = false;     bool b_ref_pos_group = false;
     if (key_lookup(group_conf, "refPositionsGroup")) {     std::string fitting_group_conf;
      if (key_lookup(group_conf, "refPositionsGroup", &fitting_group_conf)) {
       b_ref_pos_group = true;       b_ref_pos_group = true;
       cvm::log("Warning: keyword \"refPositionsGroup\" is deprecated: please use \"fittingGroup\" instead.\n");       cvm::log("Warning: keyword \"refPositionsGroup\" is deprecated: please use \"fittingGroup\" instead.\n");
     }     }
  
     if (b_ref_pos_group || key_lookup(group_conf, "fittingGroup")) {     if (b_ref_pos_group || key_lookup(group_conf, "fittingGroup", &fitting_group_conf)) {
       // instead of this group, define another group to compute the fit       // instead of this group, define another group to compute the fit
       if (fitting_group) {       if (fitting_group) {
         cvm::error("Error: the atom group \""+         cvm::error("Error: the atom group \""+
                    key+"\" has already a reference group "                    key+"\" has already a reference group "
                    "for the rototranslational fit, which was communicated by the "                    "for the rototranslational fit, which was communicated by the "
                    "colvar component.  You should not use fittingGroup "                    "colvar component.  You should not use fittingGroup "
                    "in this case.\n");                    "in this case.\n", INPUT_ERROR);
          return INPUT_ERROR;
       }       }
       cvm::log("Within atom group \""+key+"\":\n");       cvm::log("Within atom group \""+key+"\":\n");
       fitting_group = b_ref_pos_group ?       fitting_group = new atom_group("fittingGroup");
         new atom_group(group_conf, "refPositionsGroup") :       if (fitting_group->parse(fitting_group_conf) == COLVARS_OK) {
         new atom_group(group_conf, "fittingGroup");         fitting_group->check_keywords(fitting_group_conf, "fittingGroup");
          if (cvm::get_error()) {
            cvm::error("Error setting up atom group \"fittingGroup\".", INPUT_ERROR);
            return INPUT_ERROR;
          }
        }
  
       // regardless of the configuration, fit gradients must be calculated by fittingGroup       // regardless of the configuration, fit gradients must be calculated by fittingGroup
       fitting_group->b_fit_gradients = this->b_fit_gradients;       fitting_group->b_fit_gradients = this->b_fit_gradients;


Legend:
Removed in v.1.25 
changed lines
 Added in v.1.26



Made by using version 1.53 of cvs2html