/// For AMBER topologies, the segment id is automatically set to /// "MAIN" (the segment id assigned by NAMD's AMBER topology parser), /// and is therefore optional when an AMBER topology is used int colvarproxy_namd::init_atom(cvm::residue_id const &residue, std::string const &atom_name, std::string const &segment_id) { int const aid = check_atom_id(residue, atom_name, segment_id); for (size_t i = 0; i < atoms_ids.size(); i++) { if (atoms_ids[i] == aid) { // this atom id was already recorded atoms_ncopies[i] += 1; return i; } } if (cvm::debug()) log("Adding atom \""+ atom_name+"\" in residue "+ cvm::to_str(residue)+ " (index "+cvm::to_str(aid)+ ") for collective variables calculation.\n"); int const index = add_atom_slot(aid); modifyRequestedAtoms().add(aid); update_atom_properties(index); return index; }
int colvarproxy_namd::init_atom(int atom_number) { // save time by checking first whether this atom has been requested before // (this is more common than a non-valid atom number) int aid = (atom_number-1); for (size_t i = 0; i < atoms_ids.size(); i++) { if (atoms_ids[i] == aid) { // this atom id was already recorded atoms_ncopies[i] += 1; return i; } } aid = check_atom_id(atom_number); if (aid < 0) { return INPUT_ERROR; } int const index = add_atom_slot(aid); modifyRequestedAtoms().add(aid); update_atom_properties(index); return index; }
int colvarproxy_namd::reset() { int error_code = COLVARS_OK; // Unrequest all atoms and group from NAMD modifyRequestedAtoms().clear(); modifyRequestedGroups().clear(); atoms_map.clear(); // Clear internal Proxy records error_code |= colvarproxy::reset(); return error_code; }
int GlobalMasterFreeEnergy::requestAtom(int atomid) { if ( atomid < 0 || atomid >= molecule->numAtoms ) return -1; // failure modifyRequestedAtoms().add(atomid); return 0; // success }