--- trunk/OOPSE/libmdtools/Bond.cpp 2003/07/15 15:50:55 610 +++ trunk/OOPSE/libmdtools/Bond.cpp 2003/08/07 21:47:18 670 @@ -51,11 +51,18 @@ void Bond::calc_forces(){ double Fab_y; double Fab_z; + double aR[3], bR[3]; + double aF[3], bF[3]; + /* initialize the vector */ + + c_p_a->getPos(aR); + c_p_b->getPos(bR); - r_ab.x = c_p_b->getX() - c_p_a->getX(); - r_ab.y = c_p_b->getY() - c_p_a->getY(); - r_ab.z = c_p_b->getZ() - c_p_a->getZ(); + r_ab.x = bR[0] - aR[0]; + r_ab.y = bR[1] - aR[1]; + r_ab.z = bR[2] - aR[2]; + r_ab.length = sqrt((r_ab.x * r_ab.x + r_ab.y * r_ab.y + r_ab.z * r_ab.z)); /* calculate the force here */ @@ -66,13 +73,16 @@ void Bond::calc_forces(){ Fab_y = -force * r_ab.y / r_ab.length; Fab_z = -force * r_ab.z / r_ab.length; - c_p_a->addFx(Fab_x); - c_p_a->addFy(Fab_y); - c_p_a->addFz(Fab_z); + aF[0] = Fab_x; + aF[1] = Fab_y; + aF[2] = Fab_z; - c_p_b->addFx(-Fab_x); - c_p_b->addFy(-Fab_y); - c_p_b->addFz(-Fab_z); + bF[0] = -Fab_x; + bF[1] = -Fab_y; + bF[2] = -Fab_z; + c_p_a->addFrc(aF); + c_p_b->addFrc(bF); + return; }