Donor.getIndex(backboneAtomTypes::AtomN), Acceptor.getIndex(backboneAtomTypes::AtomC), fr, pbc);
if (initParams.addHydrogens){
- if (Acceptor.prevResi != nullptr){
+ if (Donor.prevResi != nullptr && Donor.prevResi->getIndex(backboneAtomTypes::AtomC) && Donor.prevResi->getIndex(backboneAtomTypes::AtomO)){
rvec atomH{};
- float prevCODist {CalculateAtomicDistances(Acceptor.prevResi->getIndex(backboneAtomTypes::AtomC), Acceptor.prevResi->getIndex(backboneAtomTypes::AtomO), fr, pbc)};
+ float prevCODist {CalculateAtomicDistances(Donor.prevResi->getIndex(backboneAtomTypes::AtomC), Donor.prevResi->getIndex(backboneAtomTypes::AtomO), fr, pbc)};
for (int i{XX}; i <= ZZ; ++i){
- float prevCO = fr.x[Acceptor.prevResi->getIndex(backboneAtomTypes::AtomC)][i] - fr.x[Acceptor.prevResi->getIndex(backboneAtomTypes::AtomO)][i];
+ float prevCO = fr.x[Donor.prevResi->getIndex(backboneAtomTypes::AtomC)][i] - fr.x[Donor.prevResi->getIndex(backboneAtomTypes::AtomO)][i];
atomH[i] = prevCO / prevCODist;
}
- distanceHO = CalculateAtomicDistances(Donor.getIndex(backboneAtomTypes::AtomO), atomH, fr, pbc);
- distanceHC = CalculateAtomicDistances(Donor.getIndex(backboneAtomTypes::AtomC), atomH, fr, pbc);
+ distanceHO = CalculateAtomicDistances(atomH, Acceptor.getIndex(backboneAtomTypes::AtomO), fr, pbc);
+ distanceHC = CalculateAtomicDistances(atomH, Acceptor.getIndex(backboneAtomTypes::AtomC), fr, pbc);
}
else{
distanceHO = distanceNO;
* ((1 / distanceNO) + (1 / distanceHC) - (1 / distanceHO) - (1 / distanceNC));
HbondEnergy = std::round(HbondEnergy * 1000) / 1000;
+ std::cout.precision(5);
std::cout << "Calculated ENERGY - " << HbondEnergy << std::endl;
if ( HbondEnergy < minEnergy ){
}
/* Calculate Distance From B to A, where A is only fake coordinates */
-float DsspTool::CalculateAtomicDistances(const int &A, const rvec &B, const t_trxframe &fr, const t_pbc *pbc)
+float DsspTool::CalculateAtomicDistances(const rvec &A, const int &B, const t_trxframe &fr, const t_pbc *pbc)
{
gmx::RVec r{ 0, 0, 0 };
- pbc_dx(pbc, fr.x[A], B, r.as_vec());
+ pbc_dx(pbc, A, fr.x[B], r.as_vec());
return r.norm(); // TODO * gmx::c_nm2A; if not PDB, i guess????
}