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