source: canon.f@ e40e335

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

Initial import to BerliOS corresponding to 3.0.4

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

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