added source code
[unres.git] / source / unres / src_MD / md-diff / mts / max_accel.f
1 c---------------------------------------------------------------------
2       subroutine max_accel
3 c
4 c Find the maximum difference in the accelerations of the the sites
5 c at the beginning and the end of the time step.
6 c
7       implicit real*8 (a-h,o-z)
8       include 'DIMENSIONS'
9       include 'COMMON.CONTROL'
10       include 'COMMON.VAR'
11       include 'COMMON.MD'
12       include 'COMMON.CHAIN'
13       include 'COMMON.DERIV'
14       include 'COMMON.GEO'
15       include 'COMMON.LOCAL'
16       include 'COMMON.INTERACT'
17       include 'COMMON.IOUNITS'
18       double precision aux(3),accel(3),accel_old(3),dacc
19       do j=1,3
20 c        aux(j)=d_a(j,0)-d_a_old(j,0)
21          accel_old(j)=d_a_old(j,0)
22          accel(j)=d_a(j,0)
23       enddo 
24       amax=0.0d0
25       do i=nnt,nct
26 c Backbone
27         if (i.lt.nct) then
28 c 7/3/08 changed to asymmetric difference
29           do j=1,3
30 c            accel(j)=aux(j)+0.5d0*(d_a(j,i)-d_a_old(j,i))
31             accel_old(j)=accel_old(j)+0.5d0*d_a_old(j,i)
32             accel(j)=accel(j)+0.5d0*d_a(j,i)
33 c            if (dabs(accel(j)).gt.amax) amax=dabs(accel(j))
34             if (dabs(accel(j)).gt.dabs(accel_old(j))) then
35               dacc=dabs(accel(j)-accel_old(j))
36               if (dacc.gt.amax) amax=dacc
37             endif
38           enddo
39         endif
40       enddo
41 c Side chains
42       do j=1,3
43 c        accel(j)=aux(j)
44         accel_old(j)=d_a_old(j,0)
45         accel(j)=d_a(j,0)
46       enddo
47       if (nnt.eq.2) then
48         do j=1,3
49           accel_old(j)=accel_old(j)+d_a_old(j,1)
50           accel(j)=accel(j)+d_a(j,1)
51         enddo
52       endif
53       do i=nnt,nct
54         if (itype(i).ne.10) then
55           do j=1,3 
56 c            accel(j)=accel(j)+d_a(j,i+nres)-d_a_old(j,i+nres)
57             accel_old(j)=accel_old(j)+d_a_old(j,i+nres)
58             accel(j)=accel(j)+d_a(j,i+nres)
59           enddo
60         endif
61         do j=1,3
62 c          if (dabs(accel(j)).gt.amax) amax=dabs(accel(j))
63           if (dabs(accel(j)).gt.dabs(accel_old(j))) then
64             dacc=dabs(accel(j)-accel_old(j))
65             if (dacc.gt.amax) amax=dacc
66           endif
67         enddo
68         do j=1,3
69           accel_old(j)=accel_old(j)+d_a_old(j,i)
70           accel(j)=accel(j)+d_a(j,i)
71 c          aux(j)=aux(j)+d_a(j,i)-d_a_old(j,i)
72         enddo
73       enddo
74       return
75       end