source: eyabgn.f@ bd2278d

Last change on this file since bd2278d was bd2278d, checked in by baerbaer <baerbaer@…>, 16 years ago

Reformatting comments and continuation marks.

Fortran 90 and higher use ! to mark comments no matter where they are in the
code. The only valid continuation marker is &.
I also added the SMMP.kdevelop.filelist to the repository to make it easier
to use kdevelop.

git-svn-id: svn+ssh://svn.berlios.de/svnroot/repos/smmp/trunk@12 26dc1dd8-5c4e-0410-9ffe-d298b4865968

  • Property mode set to 100644
File size: 5.8 KB
Line 
1! *********************************************************************
2! This file contains eyrccr, init_abgn, eyentr, eyabgn
3!
4! Copyright 2007 Frank Eisenmenger, U.H.E. Hansmann,
5! Jan H. Meinke, Sandipan Mohanty
6!
7! Corrections to ECEPP energy terms due to R. A. Abagyan et al.
8!
9! Two terms are calculated: eyrccr and eyentr, representing respectively
10! c a term to slightly shift the backbone dihedral angle preferences in
11! the ECEPP potential slightly away from the helix region, and another
12! term to estimate the side-chain entropy from a given configuration.
13!
14!
15! *********************************************************************
16 real*8 function eyrccr(nml)
17 include 'INCL.H'
18 dimension iN(mxrs),iCa(mxrs),iC(mxrs),mlvr(mxvr)
19 dimension iphi(mxrs),ipsi(mxrs)
20 common /lundds/iN,iCa,iC,mlvr,iphi,ipsi
21 character mynm*4
22
23 if (nml.eq.0) then
24 istres=irsml1(1)
25 indres=irsml2(ntlml)
26 else
27 istres=irsml1(nml)
28 indres=irsml2(nml)
29 endif
30 et=0.0
31! print *,'***********'
32 do i=istres,indres
33 mynm=seq(i)
34 call tolost(mynm)
35 if ((mynm.eq.'val').or.(mynm.eq.'ile').or.
36 & (mynm.eq.'thr')) then
37 rsscl=1.0
38 else
39 rsscl=0.5
40 endif
41 et=et+rsscl*(1.0-sin(vlvr(ipsi(i))))
42! print *,' contribution = ',rsscl*(1.0-sin(vlvr(ipsi(i))))
43! print *,'obtained using scale ',rsscl,' and angle ',
44! # vlvr(ipsi(i))
45 enddo
46! print *,'abagyan dihedral term = ',et
47! print *,'***********'
48 eyrccr=et
49 return
50 end
51
52 subroutine init_abgn
53 include 'INCL.H'
54! dimension rsstrg(mxrs)
55! common /abgncor/rsstrg
56 dimension xarea(nrsty),estrg(nrsty)
57 character mynm*4
58! print *,'Initialization of Abagyan entropic term'
59! Maximum accessible surface areas for different residue types
60 data (xarea(i),i=1,nrsty)/
61! 1 2 3 4 5
62 & 117.417 , 244.686 , 245.582 , 146.467 , 144.485 ,
63! 6 7 8 9 10
64 & 144.192 , 142.805 , 147.568 , 183.103 , 177.094 ,
65! 11 12 13 14 15
66 & 186.293 , 83.782 , 187.864 , 187.864 , 187.864 ,
67! 16 17 18 19 20
68 & 187.864 , 160.887 , 161.741 , 184.644 , 179.334 ,
69! 21 22 23 24 25
70 & 209.276 , 209.276 , 203.148 , 208.902 , 153.124 ,
71! 26 27 28 29 30
72 & 153.973 , 153.037 , 158.695 , 157.504 , 157.504 ,
73! 31 32 33 34 35
74 & 119.786 , 146.488 , 238.641 , 223.299 , 160.283 /
75! Entropic contribution for maximally exposed residue
76 data (estrg(i),i=1,nrsty)/
77! 1ala 2arg 3arg+ 4asn 5asp
78 & 0.0 , 2.13 , 2.13 , 0.81 , 0.61 ,
79! 6asp- 7cys 8cyss 9gln 10glu
80 & 0.61 , 1.14 , 1.14 , 2.02 , 1.65 ,
81! 11glu- 12gly 13his 14hise 15hisd
82 & 1.65 , 0.0 , 0.99 , 0.99 , 0.99 ,
83! 16his+ 17hyp 18hypu 19ile 20leu
84 & 0.99 , 0.99 , 0.99 , 0.75 , 0.75 ,
85! 21lys 22lys+ 23met 24phe 25cpro
86 & 2.21 , 2.21 , 1.53 , 0.58 , 0.0 ,
87! 26pro 27cpru 28prou 29pron 30pro+
88 & 0.0 , 0.0 , 0.0 , 0.0 , 0.0 ,
89! 31ser 32thr 33trp 34tyr 35val
90 & 1.19 , 1.12 , 0.97 , 0.99 , 0.50 /
91 do i=1,mxrs
92 rsstrg(i)=0.0
93 enddo
94 istres=irsml1(1)
95 indres=irsml2(ntlml)
96 do i=istres,indres
97 imytyp=0
98 mynm=seq(i)
99 call tolost(mynm)
100 do j=1,nrsty
101 if (rsnmcd(j).eq.mynm) imytyp=j
102! print *,'comparing ',mynm,' with ',rsnmcd(j),imytyp
103 enddo
104 if (imytyp.eq.0) then
105 print *, 'Unknown residue type ',seq(i)
106 print *, 'Abagyan term strength set to 0'
107 rsstrg(i)=0.0
108 else
109 rsstrg(i)=estrg(imytyp)/xarea(imytyp)
110 endif
111! print *,'residue ',i,seq(i),' type ',imytyp
112! print *, 'strength for residue ',i,seq(i),' is ',rsstrg(i)
113 enddo
114 print *, 'initialized Abagyan corrections to ECEPP force field'
115 end
116
117 real*8 function eyentr(nml)
118 include 'INCL.H'
119! dimension rsstrg(mxrs)
120! common /abgncor/rsstrg
121! common/ressurf/surfres(mxrs)
122! common/bet/beta
123 eentr=0
124 if (nml.eq.0) then
125 istres=irsml1(1)
126 indres=irsml2(ntlml)
127 else
128 istres=irsml1(nml)
129 indres=irsml2(nml)
130 endif
131! print *,'residue range ',istres,indres
132! print *,'for molecule ',nml
133 do i=istres, indres
134 aars=surfres(i)
135 strh=rsstrg(i)
136! The maximal burial entropies were estimated at temperature 300k
137! The values in the array estrg are k_B * T (=300k) * Entropy
138! Presently we need it at temperature 1/beta, so we need to
139! multiply the strengths in estrg with (1/beta)/(300 kelvin)
140! 300 kelvin is approximately 0.59576607 kcal/mol.
141 eentr=eentr+aars*strh/(0.59576607*beta)
142! print *,'contribution = ',aars*strh/(0.59576607*beta)
143! print *,'residue, exposed area = ',i,aars
144! print *,'strength = ',strh,' for residue index = ',i
145! print *,'beta = ',beta
146 enddo
147! print *,'abagyan entropic term = ',eentr
148 eyentr=eentr
149 return
150 end
151
152 real*8 function eyabgn(nml)
153 include 'INCL.H'
154 eyabgn=eyrccr(nml)+eyentr(nml)
155! print *,'Abagyan term = ',eyabgn
156 return
157 end
Note: See TracBrowser for help on using the repository browser.