1c 2c $Id$ 3c 4 5 SUBROUTINE verlt_test(tstep,ivv,lupdate) 6 7 implicit none 8 9 include 'p_input.inc' 10 include 'p_array.inc' 11 include 'cm_atom.inc' 12 include 'cm_cuto.inc' 13 14 integer i,exceed 15 16 real*8 tstep,tstepsq,ivv 17 real*8 dispmax,dispxsq,dispysq,dispzsq,disprsq 18 19 logical lnew,lupdate 20 21 dimension ivv(mxatms,3) 22 23 data lnew/.true./ 24 25 save lnew 26 27 tstepsq=tstep**2 28 29 if(lnew)then 30 31 lupdate=.true. 32 lnew=.false. 33 34 do i=1,natms 35 36 ivv(i,1)=0.0 37 ivv(i,2)=0.0 38 ivv(i,3)=0.0 39 40 enddo 41 42 else 43 44 lupdate=.false. 45 46 dispmax=((vcut-rcut)/2.0)**2 47 48 do i=1,natms 49 50 ivv(i,1)=ivv(i,1)+vvv(i,1) 51 ivv(i,2)=ivv(i,2)+vvv(i,2) 52 ivv(i,3)=ivv(i,3)+vvv(i,3) 53 54 enddo 55 56 exceed=0 57 58 do i=1,natms 59 60 dispxsq=ivv(i,1)**2 61 dispysq=ivv(i,2)**2 62 dispzsq=ivv(i,3)**2 63 disprsq=tstepsq*(dispxsq+dispysq+dispzsq) 64 if(disprsq.gt.dispmax)exceed=exceed+1 65 if(exceed.ge.2)lupdate=.true. 66 67 enddo 68 69 if(lupdate)then 70 71 do i=1,natms 72 73 ivv(i,1)=0 74 ivv(i,2)=0 75 ivv(i,3)=0 76 77 enddo 78 79 endif 80 81 endif 82 83 return 84 85 END 86