--- trunk/OOPSE/libmdtools/GhostBend.cpp 2003/05/20 16:44:06 539 +++ trunk/OOPSE/libmdtools/GhostBend.cpp 2003/08/07 21:47:18 670 @@ -48,10 +48,17 @@ void GhostBend::calc_forces(){ double daxi, dayi, dazi, daxk, dayk, dazk, daxj, dayj, dazj; double u[3]; - dx = c_p_a->getX() - atomB->getX(); - dy = c_p_a->getY() - atomB->getY(); - dz = c_p_a->getZ() - atomB->getZ(); - + double aR[3], bR[3]; + double aF[3], bF[3], bTrq[3]; + + c_p_a->getPos( aR ); + c_p_b->getPos( bR ); + + + dx = aR[0] - bR[0]; + dy = aR[1] - bR[1]; + dz = aR[2] - bR[2]; + atomB->getU(u); gx = u[0]; @@ -126,18 +133,23 @@ void GhostBend::calc_forces(){ dayj = -dayi - dayk; dazj = -dazi - dazk; - c_p_a->addFx(daxi); - c_p_a->addFy(dayi); - c_p_a->addFz(dazi); + aF[0] = daxi; + aF[1] = dayi; + aF[2] = dazi; - atomB->addFx(daxj + daxk); - atomB->addFy(dayj + dayk); - atomB->addFz(dazj + dazk); + bF[0] = daxj + daxk; + bF[1] = dayj + dayk; + bF[2] = dazj + dazk; - atomB->addTx(gy*dazk - gz*dayk); - atomB->addTy(gz*daxk - gx*dazk); - atomB->addTz(gx*dayk - gy*daxk); - + bTrq[0] = gy*dazk - gz*dayk; + bTrq[1] = gz*daxk - gx*dazk; + bTrq[2] = gx*dayk - gy*daxk; + + + c_p_a->addFrc( aF ); + atomB->addFrc( bF ); + atomB->addTrq( bTrq ); + return; }