--- trunk/OOPSE/libmdtools/f_verlet_constrained.F90 2003/03/24 15:26:05 389 +++ trunk/OOPSE/libmdtools/f_verlet_constrained.F90 2003/04/25 02:00:11 505 @@ -49,6 +49,7 @@ subroutine v_constrain_a(dt,natoms,mass,rx,ry,rz, & double precision pxab, pyab, pzab, pabsq, rabsq, diffsq double precision rxab, ryab, rzab, rpab, gab double precision dx, dy, dz, rma, rmb + double precision prSqr, rpabSqr; integer a, b, it, maxit parameter (rptol = 1.0d-6, tol = 1.0d-6 ) parameter ( maxit = 100 ) @@ -58,7 +59,7 @@ subroutine v_constrain_a(dt,natoms,mass,rx,ry,rz, & double precision e_convert parameter ( e_convert = 4.184d-4 ) - + DT2 = DT / 2.0d0 DTSQ2 = DT * DT2 @@ -127,9 +128,12 @@ subroutine v_constrain_a(dt,natoms,mass,rx,ry,rz, & rpab = rxab * pxab + ryab * pyab + rzab * pzab - if( dabs(rpab) .lt. ( rabsq * rptol ) ) then + rpabSqr = rpab * rpab + prSqr = - diffsq + + if( rpabSqr .lt. ( rabsq * prSqr )) then write (*, '('' Constraint Failure '')' ) - write (*,*) a-1, b-1,rpab, rabsq * rptol + write (*,*) a-1, b-1,rpabSqr, rabsq * prSqr stop end if @@ -194,7 +198,6 @@ subroutine v_constrain_a(dt,natoms,mass,rx,ry,rz, & enddo - RETURN end subroutine v_constrain_a