source: canon.f@ cb47b9c

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

Explicitly declare variables.

All variables should be declared so that we can remove the implicit statements
from the beginning of the INCL.H file.

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

  • Property mode set to 100644
File size: 3.8 KB
Line 
1! **************************************************************
2!
3! This file contains the subroutines: canon,can_weight
4!
5! Copyright 2003-2005 Frank Eisenmenger, U.H.E. Hansmann,
6! Shura Hayryan, Chin-Ku
7! Copyright 2007 Frank Eisenmenger, U.H.E. Hansmann,
8! Jan H. Meinke, Sandipan Mohanty
9!
10! **************************************************************
11
12 subroutine canon(nequi, nswp, nmes, temp, lrand)
13! -----------------------------------------------------------------
14! PURPOSE: CANONICAL SIMULATION OF PROTEINS USING METROPOLIS UPDATES
15!
16! CALLS: addang,energy,metropolis,hbond,helix,outvar,outpdb,rgyr
17!
18!-------------------------------------------------------------------
19 include 'INCL.H'
20
21!f2py intent(in) nequi
22!f2py intent(in) nswp
23!f2py intent(in) nmes
24!f2py intent(in) temp
25!f2py logical optional, intent(in):: lrand = 1
26
27! external rand
28 external can_weight
29
30 logical lrand
31! parameter(lrand=.false.)
32! parameter(nequi=10, nswp=1000,nmes=10)
33! parameter(temp=300.0)
34! lrand=.true.: creates random start configuration
35! nequi: Number of sweeps for equilibrisation of system
36 integer nequi
37! nswp: Number of sweeps for simulation run
38 integer nswp
39! nmes: Number of sweeps between measurments
40 integer nmes
41! temp: Temperature of simulation
42 double precision temp, e_min
43!
44! common/bet/beta
45
46 character*80 file
47
48! Define files for output:
49 open(13,file='time.d')
50
51
52 beta=1.0/ ( temp * 1.98773d-3 )
53
54! _________________________________ random start
55 if(lrand) then
56 do i=1,nvr
57 iv=idvr(i) ! provides index of non-fixed variable
58 dv=axvr(iv)*(grnd()-0.5)
59 vr=addang(pi,dv)
60 vlvr(iv)=vr
61 enddo
62 end if
63
64 eol = energy()
65 e_min = eol
66 write (*,'(a,e12.5,/)') 'energy of start configuration:',eol
67
68! Write start configuration in pdb-format into file
69 call outpdb(0,'start.pdb')
70
71! =====================Equilibration by Metropolis
72 acz = 0.0d0
73 do nsw=1,nequi
74 call metropolis(eol,acz,can_weight)
75 end do
76 write(*,*) 'Energy after equilibration:',eol
77
78!======================Simulation in canonical ensemble
79 acz = 0.0d0
80 do nsw=0,nswp
81 call metropolis(eol,acz,can_weight)
82 if (eol.lt.e_min) then
83 write (*,*) "New minimum energy:", eol, "t=", nsw
84 write (*,*) eyel,eyhb,eyvr,eysl
85 e_min = eol
86 call outpdb(0, "minen.pdb")
87 endif
88!
89 if(mod(nsw,nmes).eq.0) then
90! Measure radius of gyration and end-to-end distance
91! rgy: radius of gyration
92! ee: end-to-end distance
93 call rgyr(1,rgy,ee)
94! Measure helicity
95! nhel: number of helical residues
96! mhel: number of helical segments
97! nbet: number of sheet-like residues
98! mbet: number of sheet-like segments
99 call helix(nhel,mhel,nbet,mbet)
100! Measure number of hydrogen bonds (mhb)
101 do i=1,ntlml
102 call hbond(i,mhb,0)
103 end do
104! Write down information on actual conformation
105 write(13,'(i7,2f15.3,5i7,4f15.3)') nsw, eol, rgy,
106 & nhel,mhel,nbet,mbet,mhb,
107 & eyel,eyhb,eyvr,eysl
108 end if
109!
110 end do
111
112 acz = acz/dble(nsw*nvr)
113 write(*,*) 'acceptance rate:',acz
114 write(*,*)
115! ------------ Output Dihedreals of final configuration
116 write(*,*) 'last energy',eol
117 call outvar(0,'lastconf.var')
118! Output final conformation as pdb-file
119 call outpdb(0,'final.pdb')
120
121 close(11)
122 close(12)
123 close(13)
124! =====================
125
126
127 end
128
129! ********************************************************
130 real*8 function can_weight(x)
131!
132! CALLS: none
133!
134
135 implicit real*8 (a-h,o-z)
136
137 common/bet/beta
138
139 can_weight = beta*x
140
141 return
142
143 end
Note: See TracBrowser for help on using the repository browser.