bool Bond::Match(Bond const *what) const{ bool res; if(getBondType()==Bond::UNSPECIFIED || what->getBondType()==Bond::UNSPECIFIED){ res = true; } else { res = getBondType() == what->getBondType(); } return res; };
double Bond::getValenceContrib(const Atom *atom) const { switch(getBondType()){ case UNSPECIFIED: return 0; break; case IONIC: return 0; break; case SINGLE: return 1; break; case DOUBLE: return 2; break; case TRIPLE: return 3; break; case QUADRUPLE: return 4; break; case QUINTUPLE: return 5; break; case HEXTUPLE: return 6; break; case ONEANDAHALF: return 1.5; break; case TWOANDAHALF: return 2.5; break; case THREEANDAHALF: return 3.5; break; case FOURANDAHALF: return 4.5; break; case FIVEANDAHALF: return 5.5; break; case AROMATIC: return 1.5; break; case DATIVEONE: if(atom->getIdx()==getEndAtomIdx())return 1.0; else return 0.0; break; case DATIVE: if(atom->getIdx()==getEndAtomIdx())return 1.0; else return 0.0; break; case ZERO: return 0; break; default: UNDER_CONSTRUCTION("Bad bond type"); } }
void SubstanceGroup::addCState(unsigned int bondIdx, const RDGeom::Point3D &vector) { PRECONDITION(dp_mol, "bad mol"); PRECONDITION(!d_bonds.empty(), "no bonds"); if (getBondType(bondIdx) != SubstanceGroup::BondType::XBOND) { std::ostringstream errout; errout << "Bond with index " << bondIdx << " is not an XBOND for current SubstanceGroup"; throw SubstanceGroupException(errout.str()); } d_cstates.push_back({bondIdx, vector}); }
double Bond::getBondTypeAsDouble() const { switch(getBondType()){ case UNSPECIFIED: return 0; break; case IONIC: return 0; break; case SINGLE: return 1; break; case DOUBLE: return 2; break; case TRIPLE: return 3; break; case QUADRUPLE: return 4; break; case QUINTUPLE: return 5; break; case HEXTUPLE: return 6; break; case ONEANDAHALF: return 1.5; break; case TWOANDAHALF: return 2.5; break; case THREEANDAHALF: return 3.5; break; case FOURANDAHALF: return 4.5; break; case FIVEANDAHALF: return 5.5; break; case AROMATIC: return 1.5; break; case DATIVEONE: return 1.0; break; // FIX: this should probably be different case DATIVE: return 1.0; break; //FIX: again probably wrong case ZERO: return 0; break; default: UNDER_CONSTRUCTION("Bad bond type"); } }