diff --git a/modules/mol/mm/src/topology_creator.cc b/modules/mol/mm/src/topology_creator.cc index 2f46a885e095831fbdcdeec84e37cc3748f8a2ff..f2ede5a380b275e2c51b202e6a0153c2c9dea52e 100644 --- a/modules/mol/mm/src/topology_creator.cc +++ b/modules/mol/mm/src/topology_creator.cc @@ -442,6 +442,11 @@ TopologyPtr TopologyCreator::Create(ost::mol::EntityHandle& ent, } } + std::set<String> water_res_names; + water_res_names.insert("SOL"); + water_res_names.insert("HOH"); + water_res_names.insert("TIP3"); + //add distance constrains given the corresponding settings if(settings->constrain_bonds || settings->constrain_hbonds || settings->rigid_water){ for(std::set<Index<2> >::iterator i = bonds.begin(); @@ -475,7 +480,8 @@ TopologyPtr TopologyCreator::Create(ost::mol::EntityHandle& ent, } } if(settings->rigid_water){ - if(residue_names_of_atoms[(*i)[0]] == "SOL" && residue_names_of_atoms[(*i)[1]] == "SOL"){ + if(water_res_names.find(residue_names_of_atoms[(*i)[0]]) != water_res_names.end() && + water_res_names.find(residue_names_of_atoms[(*i)[1]]) != water_res_names.end()){ if(distance_constraints.find(*i) != distance_constraints.end()) continue; distance_constraints.insert(*i); Real distance; @@ -493,8 +499,9 @@ TopologyPtr TopologyCreator::Create(ost::mol::EntityHandle& ent, if(settings->rigid_water){ for(std::set<Index<3> >::iterator i = angles.begin(); i != angles.end(); ++i){ - if(residue_names_of_atoms[(*i)[0]] == "SOL" && residue_names_of_atoms[(*i)[0]] == "SOL" && - residue_names_of_atoms[(*i)[2]] == "SOL"){ + if(water_res_names.find(residue_names_of_atoms[(*i)[0]]) != water_res_names.end() && + water_res_names.find(residue_names_of_atoms[(*i)[1]]) != water_res_names.end() && + water_res_names.find(residue_names_of_atoms[(*i)[2]]) != water_res_names.end()){ //we only have to add the H-H distance constant, the O-H distance is already //constrained above Real distance;