124 |
|
myKeys.push_back((*i)->getName()); |
125 |
|
myKeys.push_back((*j)->getName()); |
126 |
|
|
127 |
– |
std::cerr << "looking for " << myKeys[0] << " " << myKeys[1] << "\n"; |
127 |
|
BondType* bondType = bondTypeCont_.find(myKeys); |
128 |
|
if (bondType) { |
129 |
|
foundBonds.push_back(std::make_pair(bondTypeScore, myKeys)); |
141 |
|
int bestScore = foundBonds[0].first; |
142 |
|
std::vector<std::string> theKeys = foundBonds[0].second; |
143 |
|
|
145 |
– |
std::cout << "best matching bond = " << theKeys[0] << "\t" << theKeys[1] << "\t(score = "<< bestScore << ")\n"; |
144 |
|
BondType* bestType = bondTypeCont_.find(theKeys); |
145 |
|
|
146 |
|
return bestType; |
224 |
|
std::sort(foundBends.begin(), foundBends.end()); |
225 |
|
int jscore = foundBends[0].first; |
226 |
|
int ikscore = foundBends[0].second; |
227 |
< |
std::vector<std::string> theKeys = foundBends[0].third; |
227 |
> |
std::vector<std::string> theKeys = foundBends[0].third; |
228 |
|
|
231 |
– |
std::cout << "best matching bend = " << theKeys[0] << "\t" <<theKeys[1] << "\t" << theKeys[2] << "\t(scores = "<< jscore << "\t" << ikscore << ")\n"; |
232 |
– |
|
229 |
|
BendType* bestType = bendTypeCont_.find(theKeys); |
230 |
|
return bestType; |
231 |
|
} else { |
328 |
|
int ilscore = foundTorsions[0].second; |
329 |
|
std::vector<std::string> theKeys = foundTorsions[0].third; |
330 |
|
|
335 |
– |
std::cout << "best matching torsion = " << theKeys[0] << "\t" <<theKeys[1] << "\t" << theKeys[2] << "\t" << theKeys[3] << "\t(scores = "<< jkscore << "\t" << ilscore << ")\n"; |
336 |
– |
|
331 |
|
TorsionType* bestType = torsionTypeCont_.find(theKeys); |
332 |
|
return bestType; |
333 |
|
} else { |
348 |
|
keys.push_back(at4); |
349 |
|
|
350 |
|
//try exact match first |
351 |
< |
InversionType* inversionType = inversionTypeCont_.find(keys); |
351 |
> |
InversionType* inversionType = inversionTypeCont_.permutedFindSkippingFirstElement(keys); |
352 |
|
if (inversionType) { |
353 |
|
return inversionType; |
354 |
|
} else { |
410 |
|
myKeys.push_back((*k)->getName()); |
411 |
|
myKeys.push_back((*l)->getName()); |
412 |
|
|
413 |
< |
InversionType* inversionType = inversionTypeCont_.find(myKeys); |
413 |
> |
InversionType* inversionType = inversionTypeCont_.permutedFindSkippingFirstElement(myKeys); |
414 |
|
if (inversionType) { |
415 |
|
foundInversions.push_back( make_tuple3(Iscore, JKLscore, myKeys) ); |
416 |
|
} |
429 |
|
int jklscore = foundInversions[0].second; |
430 |
|
std::vector<std::string> theKeys = foundInversions[0].third; |
431 |
|
|
432 |
< |
std::cout << "best matching inversion = " << theKeys[0] << "\t" <<theKeys[1] << "\t" << theKeys[2] << "\t" << theKeys[3] << "\t(scores = "<< iscore << "\t" << jklscore << ")\n"; |
439 |
< |
|
440 |
< |
InversionType* bestType = inversionTypeCont_.find(theKeys); |
432 |
> |
InversionType* bestType = inversionTypeCont_.permutedFindSkippingFirstElement(theKeys); |
433 |
|
return bestType; |
434 |
|
} else { |
435 |
|
//if no exact match found, try wild card match |
509 |
|
return atomTypeCont_.add(keys, atomType); |
510 |
|
} |
511 |
|
|
512 |
+ |
bool ForceField::replaceAtomType(const std::string &at, AtomType* atomType) { |
513 |
+ |
std::vector<std::string> keys; |
514 |
+ |
keys.push_back(at); |
515 |
+ |
return atomTypeCont_.replace(keys, atomType); |
516 |
+ |
} |
517 |
+ |
|
518 |
|
bool ForceField::addBondType(const std::string &at1, const std::string &at2, |
519 |
|
BondType* bondType) { |
520 |
|
std::vector<std::string> keys; |