arcos = 0.5D0*(PI-DSIGN(1.0D0,X)*PI)
[unres.git] / source / wham / src-M / int_from_cart.f
1       subroutine int_from_cart1(lprn)
2       implicit none
3       include 'DIMENSIONS'
4       include 'DIMENSIONS.ZSCOPT'
5       include 'COMMON.IOUNITS'
6       include 'COMMON.VAR'
7       include 'COMMON.CHAIN'
8       include 'COMMON.GEO'
9       include 'COMMON.INTERACT'
10       include 'COMMON.LOCAL'
11       include 'COMMON.NAMES'
12       integer i,j
13       double precision dist,alpha,beta,dnorm1,dnorm2,be
14       logical lprn 
15       if (lprn) write (iout,'(/a)') 'Recalculated internal coordinates'
16       vbld(nres+1)=0.0d0
17       vbld(2*nres)=0.0d0
18       vbld_inv(nres+1)=0.0d0
19       vbld_inv(2*nres)=0.0d0
20       do i=2,nres
21         dnorm1=dist(i-1,i)
22         dnorm2=dist(i,i+1)
23         do j=1,3
24           c(j,maxres2)=0.5D0*(2*c(j,i)+(c(j,i-1)-c(j,i))/dnorm1
25      &     +(c(j,i+1)-c(j,i))/dnorm2)
26         enddo
27         be=0.0D0
28         if (i.gt.2) phi(i+1)=beta(i-2,i-1,i,i+1)
29         if (i.gt.2) tauangle(3,i+1)=beta(i+nres-1,i-1,i,i+nres)
30         if (i.gt.2) tauangle(1,i+1)=beta(i-1+nres,i-1,i,i+1)
31         if (i.gt.2) tauangle(2,i+1)=beta(i-2,i-1,i,i+nres)
32         omeg(i)=beta(nres+i,i,maxres2,i+1)
33         theta(i+1)=alpha(i-1,i,i+1)
34         alph(i)=alpha(nres+i,i,maxres2)
35         vbld(i)=dist(i-1,i)
36         vbld_inv(i)=1.0d0/vbld(i)
37         vbld(nres+i)=dist(nres+i,i)
38         if (itype(i).ne.10) then
39           vbld_inv(nres+i)=1.0d0/vbld(nres+i)
40         else
41           vbld_inv(nres+i)=0.0d0
42         endif
43       enddo   
44       do i=1,nres-1
45         do j=1,3
46           dc(j,i)=c(j,i+1)-c(j,i)
47           dc_norm(j,i)=dc(j,i)*vbld_inv(i+1)
48         enddo
49       enddo
50       do i=1,nres
51         do j=1,3
52           dc(j,i+nres)=c(j,i+nres)-c(j,i)
53           dc_norm(j,i+nres)=dc(j,i+nres)*vbld_inv(i+nres)
54         enddo
55       enddo
56       if (lprn) then
57       do i=2,nres
58        write (iout,1212) restyp(itype(i)),i,vbld(i),
59      &rad2deg*theta(i),rad2deg*phi(i),vbld(nres+i),
60      &rad2deg*alph(i),rad2deg*omeg(i)
61       enddo
62       endif
63  1212 format (a3,'(',i3,')',2(f15.10,2f10.2))
64       return
65       end