Changeset ec9bd2 for src/Actions/AtomAction/SaturateAction.cpp
- Timestamp:
- May 25, 2016, 7:13:59 AM (9 years ago)
- Parents:
- 9cf90e
- git-author:
- Frederik Heber <heber@…> (05/10/16 21:23:50)
- git-committer:
- Frederik Heber <heber@…> (05/25/16 07:13:59)
- File:
-
- 1 edited
-
src/Actions/AtomAction/SaturateAction.cpp (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
src/Actions/AtomAction/SaturateAction.cpp
r9cf90e rec9bd2 84 84 // check for any bonds and get vacant positions 85 85 SphericalPointDistribution::Polygon_t vacant_positions; 86 // const BondList& ListOfBonds = _atom->getListOfBonds(); 87 // SphericalPointDistribution PointSphere(typical_distance); 88 // if (ListOfBonds.size() == 0) { 89 // vacant_positions = PointSphere.getSimplePolygon(_atom->getType()->getNoValenceOrbitals()); 90 // LOG(3, "DEBUG: Using ideal positions as " << vacant_positions); 91 // } else { 92 // // get ideal polygon and currently occupied positions 93 // const SphericalPointDistribution::Polygon_t ideal_positions = 94 // PointSphere.getSimplePolygon(_atom->getType()->getNoValenceOrbitals()); 95 // LOG(3, "DEBUG: ideal positions are " << ideal_positions); 96 // SphericalPointDistribution::Polygon_t current_positions; 97 // for (BondList::const_iterator bonditer = ListOfBonds.begin(); 98 // bonditer != ListOfBonds.end(); ++bonditer) { 99 // const Vector position = 100 // (*bonditer)->GetOtherAtom(_atom)->getPosition().getVectorToPoint(_atom->getPosition()); 101 // current_positions.push_back((1./position.Norm())*position); 102 // } 103 // LOG(3, "DEBUG: current occupied positions are " << current_positions); 104 // 105 // // find the best matching rotated polygon 106 // vacant_positions = SphericalPointDistribution::matchSphericalPointDistributions( 107 // current_positions, 108 // ideal_positions); 109 // LOG(3, "DEBUG: Resulting vacant positions are " << vacant_positions); 110 // 111 // // scale vacant positions to typical_distance 112 // std::for_each( 113 // vacant_positions.begin(), vacant_positions.end(), 114 // boost::bind(&Vector::Scale, _1, boost::cref(typical_distance))); 115 // } 86 const BondList& ListOfBonds = _atom->getListOfBonds(); 87 SphericalPointDistribution PointSphere(typical_distance); 88 if (ListOfBonds.size() == 0) { 89 vacant_positions = PointSphere.getSimplePolygon(_atom->getType()->getNoValenceOrbitals()); 90 LOG(3, "DEBUG: Using ideal positions as " << vacant_positions); 91 } else { 92 // get ideal polygon and currently occupied positions 93 const SphericalPointDistribution::Polygon_t ideal_positions = 94 PointSphere.getSimplePolygon(_atom->getType()->getNoValenceOrbitals()); 95 LOG(3, "DEBUG: ideal positions are " << ideal_positions); 96 SphericalPointDistribution::WeightedPolygon_t current_positions; 97 for (BondList::const_iterator bonditer = ListOfBonds.begin(); 98 bonditer != ListOfBonds.end(); ++bonditer) { 99 const Vector position = 100 (*bonditer)->GetOtherAtom(_atom)->getPosition().getVectorToPoint(_atom->getPosition()); 101 current_positions.push_back( 102 std::make_pair( (1./position.Norm())*position, (*bonditer)->getDegree() )); 103 } 104 LOG(3, "DEBUG: current occupied positions are " << current_positions); 105 106 // find the best matching rotated polygon 107 vacant_positions = PointSphere.getRemainingPoints( 108 current_positions, 109 _atom->getType()->getNoValenceOrbitals()); 110 LOG(3, "DEBUG: Resulting vacant positions are " << vacant_positions); 111 112 // scale vacant positions to typical_distance 113 std::for_each( 114 vacant_positions.begin(), vacant_positions.end(), 115 boost::bind(&Vector::Scale, _1, boost::cref(typical_distance))); 116 LOG(3, "DEBUG: Rescaled vacant positions are " << vacant_positions); 117 } 116 118 117 119 // add the hydrogens
Note:
See TracChangeset
for help on using the changeset viewer.
