1 subroutine read_control
8 include 'COMMON.IOUNITS'
10 include 'COMMON.SBRIDGE'
11 include 'COMMON.CONTROL'
12 include 'COMMON.CLUSTER'
13 include 'COMMON.CHAIN'
14 include 'COMMON.HEADER'
15 include 'COMMON.FFIELD'
17 include 'COMMON.INTERACT'
18 include "COMMON.SPLITELE"
19 character*320 controlcard,ucase
25 read (INP,'(a80)') titel
26 call card_concat(controlcard)
28 call readi(controlcard,'NRES',nres,0)
29 call readi(controlcard,'RESCALE',rescale_mode,2)
30 call reada(controlcard,'DISTCHAINMAX',distchainmax,50.0d0)
31 write (iout,*) "DISTCHAINMAX",distchainmax
32 C Reading the dimensions of box in x,y,z coordinates
33 call reada(controlcard,'BOXX',boxxsize,100.0d0)
34 call reada(controlcard,'BOXY',boxysize,100.0d0)
35 call reada(controlcard,'BOXZ',boxzsize,100.0d0)
36 c Cutoff range for interactions
37 call reada(controlcard,"R_CUT",r_cut,15.0d0)
38 call reada(controlcard,"LAMBDA",rlamb,0.3d0)
39 refstr=(index(controlcard,'REFSTR').gt.0)
40 write (iout,*) "REFSTR",refstr
41 pdbref=(index(controlcard,'PDBREF').gt.0)
42 iscode=index(controlcard,'ONE_LETTER')
43 call readi(controlcard,'SYM',symetr,1)
44 write (iout,*) 'sym', symetr
45 call readi(controlcard,'NSTART',nstart,0)
46 call readi(controlcard,'NEND',nend,0)
47 caonly=(index(controlcard,'CA_ONLY').gt.0)
48 print_dist=(index(controlcard,'PRINT_DIST').gt.0)
49 lside = index(controlcard,"SIDE").gt.0
52 c--------------------------------------------------------------------------
55 C Read molecular data.
59 include 'COMMON.IOUNITS'
62 include 'COMMON.INTERACT'
63 include 'COMMON.LOCAL'
64 include 'COMMON.NAMES'
65 include 'COMMON.CHAIN'
66 include 'COMMON.FFIELD'
67 include 'COMMON.SBRIDGE'
68 include 'COMMON.HEADER'
69 include 'COMMON.CONTROL'
70 include 'COMMON.CONTACTS'
71 include 'COMMON.TIME1'
75 character*4 sequence(maxres)
76 character*800 weightcard
78 double precision x(maxvar)
79 integer itype_pdb(maxres)
85 C Read weights of the subsequent energy terms.
86 call card_concat(weightcard)
87 call reada(weightcard,'WSC',wsc,1.0d0)
88 call reada(weightcard,'WLONG',wsc,wsc)
89 call reada(weightcard,'WSCP',wscp,1.0d0)
90 call reada(weightcard,'WELEC',welec,1.0D0)
91 call reada(weightcard,'WVDWPP',wvdwpp,welec)
92 call reada(weightcard,'WEL_LOC',wel_loc,1.0D0)
93 call reada(weightcard,'WCORR4',wcorr4,0.0D0)
94 call reada(weightcard,'WCORR5',wcorr5,0.0D0)
95 call reada(weightcard,'WCORR6',wcorr6,0.0D0)
96 call reada(weightcard,'WTURN3',wturn3,1.0D0)
97 call reada(weightcard,'WTURN4',wturn4,1.0D0)
98 call reada(weightcard,'WTURN6',wturn6,1.0D0)
99 call reada(weightcard,'WSTRAIN',wstrain,1.0D0)
100 call reada(weightcard,'WSCCOR',wsccor,1.0D0)
101 call reada(weightcard,'WBOND',wbond,1.0D0)
102 call reada(weightcard,'WTOR',wtor,1.0D0)
103 call reada(weightcard,'WTORD',wtor_d,1.0D0)
104 call reada(weightcard,'WANG',wang,1.0D0)
105 call reada(weightcard,'WSCLOC',wscloc,1.0D0)
106 call reada(weightcard,'SCAL14',scal14,0.4D0)
107 call reada(weightcard,'SCALSCP',scalscp,1.0d0)
108 call reada(weightcard,'CUTOFF',cutoff_corr,7.0d0)
109 call reada(weightcard,'DELT_CORR',delt_corr,0.5d0)
110 if (index(weightcard,'SOFT').gt.0) ipot=6
111 C 12/1/95 Added weight for the multi-body term WCORR
112 call reada(weightcard,'WCORRH',wcorr,1.0D0)
113 if (wcorr4.gt.0.0d0) wcorr=wcorr4
133 write (iout,10) wsc,wscp,welec,wvdwpp,wbond,wang,wscloc,wtor,
134 & wtor_d,wstrain,wel_loc,wcorr,wcorr5,wcorr6,wturn3,
135 & wturn4,wturn6,wsccor
136 10 format (/'Energy-term weights (unscaled):'//
137 & 'WSCC= ',f10.6,' (SC-SC)'/
138 & 'WSCP= ',f10.6,' (SC-p)'/
139 & 'WELEC= ',f10.6,' (p-p electr)'/
140 & 'WVDWPP= ',f10.6,' (p-p VDW)'/
141 & 'WBOND= ',f10.6,' (stretching)'/
142 & 'WANG= ',f10.6,' (bending)'/
143 & 'WSCLOC= ',f10.6,' (SC local)'/
144 & 'WTOR= ',f10.6,' (torsional)'/
145 & 'WTORD= ',f10.6,' (double torsional)'/
146 & 'WSTRAIN=',f10.6,' (SS bridges & dist. cnstr.)'/
147 & 'WEL_LOC=',f10.6,' (multi-body 3-rd order)'/
148 & 'WCORR4= ',f10.6,' (multi-body 4th order)'/
149 & 'WCORR5= ',f10.6,' (multi-body 5th order)'/
150 & 'WCORR6= ',f10.6,' (multi-body 6th order)'/
151 & 'WTURN3= ',f10.6,' (turns, 3rd order)'/
152 & 'WTURN4= ',f10.6,' (turns, 4th order)'/
153 & 'WTURN6= ',f10.6,' (turns, 6th order)'/
154 & 'WSCCOR= ',f10.6,' (SC-backbone torsinal correalations)')
156 if (wcorr4.gt.0.0d0) then
157 write (iout,'(/2a/)') 'Local-electrostatic type correlation ',
158 & 'between contact pairs of peptide groups'
159 write (iout,'(2(a,f5.3/))')
160 & 'Cutoff on 4-6th order correlation terms: ',cutoff_corr,
161 & 'Range of quenching the correlation terms:',2*delt_corr
162 else if (wcorr.gt.0.0d0) then
163 write (iout,'(/2a/)') 'Hydrogen-bonding correlation ',
164 & 'between contact pairs of peptide groups'
166 write (iout,'(a,f8.3)')
167 & 'Scaling factor of 1,4 SC-p interactions:',scal14
168 write (iout,'(a,f8.3)')
169 & 'General scaling factor of SC-p interactions:',scalscp
170 r0_corr=cutoff_corr-delt_corr
172 aad(i,1)=scalscp*aad(i,1)
173 aad(i,2)=scalscp*aad(i,2)
174 bad(i,1)=scalscp*bad(i,1)
175 bad(i,2)=scalscp*bad(i,2)
179 print *,'indpdb=',indpdb,' pdbref=',pdbref
181 C Read sequence if not taken from the pdb file.
182 if (iscode.gt.0) then
183 read (inp,'(80a1)') (sequence(i)(1:1),i=1,nres)
185 read (inp,'(20(1x,a3))') (sequence(i),i=1,nres)
187 C Convert sequence to numeric code
189 itype(i)=rescode(i,sequence(i),iscode)
192 print '(20i4)',(itype(i),i=1,nres)
196 if (itype(i).eq.ntyp1 .or. itype(i+1).eq.ntyp1) then
198 if (itype(i).eq.ntyp1) then
202 else if (iabs(itype(i+1)).ne.20) then
204 else if (iabs(itype(i)).ne.20) then
211 write (iout,*) "ITEL"
213 write (iout,*) i,itype(i),itel(i)
216 print *,'Call Read_Bridge.'
220 print *,'NNT=',NNT,' NCT=',NCT
221 if (itype(1).eq.ntyp1) nnt=2
222 if (itype(nres).eq.ntyp1) nct=nct-1
223 if (nstart.lt.nnt) nstart=nnt
224 if (nend.gt.nct .or. nend.eq.0) nend=nct
225 write (iout,*) "nstart",nstart," nend",nend
233 if (itype(i).eq.ntyp1) then
236 do while (itype(i).eq.ntyp1)
244 write(iout,*) "nchain",nchain
246 write(iout,*) ichain(1,i),ichain(2,i)
250 write (iout,*) "molread: REFSTR",refstr
253 c-----------------------------------------------------------------------------
254 logical function seq_comp(itypea,itypeb,length)
256 integer length,itypea(length),itypeb(length)
259 if (itypea(i).ne.itypeb(i)) then
267 c-----------------------------------------------------------------------------
268 subroutine read_bridge
269 C Read information about disulfide bridges.
272 include 'COMMON.IOUNITS'
275 include 'COMMON.INTERACT'
276 include 'COMMON.LOCAL'
277 include 'COMMON.NAMES'
278 include 'COMMON.CHAIN'
279 include 'COMMON.FFIELD'
280 include 'COMMON.SBRIDGE'
281 include 'COMMON.HEADER'
282 include 'COMMON.CONTROL'
283 include 'COMMON.TIME1'
285 include 'COMMON.INFO'
288 C Read bridging residues.
289 read (inp,*) ns,(iss(i),i=1,ns)
291 C Check whether the specified bridging residues are cystines.
293 if (itype(iss(i)).ne.1) then
294 write (iout,'(2a,i3,a)')
295 & 'Do you REALLY think that the residue ',restyp(iss(i)),i,
296 & ' can form a disulfide bridge?!!!'
297 write (*,'(2a,i3,a)')
298 & 'Do you REALLY think that the residue ',restyp(iss(i)),i,
299 & ' can form a disulfide bridge?!!!'
301 call mp_stopall(error_msg)
307 C Read preformed bridges.
309 read (inp,*) nss,(ihpb(i),jhpb(i),i=1,nss)
312 C Check if the residues involved in bridges are in the specified list of
316 if (ihpb(i).eq.ihpb(j).or.ihpb(i).eq.jhpb(j)
317 & .or.jhpb(i).eq.ihpb(j).or.jhpb(i).eq.jhpb(j)) then
318 write (iout,'(a,i3,a)') 'Disulfide pair',i,
319 & ' contains residues present in other pairs.'
320 write (*,'(a,i3,a)') 'Disulfide pair',i,
321 & ' contains residues present in other pairs.'
323 call mp_stopall(error_msg)
330 if (ihpb(i).eq.iss(j)) goto 10
332 write (iout,'(a,i3,a)') 'Pair',i,' contains unknown cystine.'
335 if (jhpb(i).eq.iss(j)) goto 20
337 write (iout,'(a,i3,a)') 'Pair',i,' contains unknown cystine.'
350 c----------------------------------------------------------------------------
351 subroutine read_angles(kanal,*)
356 include 'COMMON.CHAIN'
357 include 'COMMON.IOUNITS'
359 read (kanal,*,err=10,end=10) (theta(i),i=3,nres)
360 read (kanal,*,err=10,end=10) (phi(i),i=4,nres)
361 read (kanal,*,err=10,end=10) (alph(i),i=2,nres-1)
362 read (kanal,*,err=10,end=10) (omeg(i),i=2,nres-1)
364 theta(i)=deg2rad*theta(i)
365 phi(i)=deg2rad*phi(i)
366 alph(i)=deg2rad*alph(i)
367 omeg(i)=deg2rad*omeg(i)
372 c----------------------------------------------------------------------------
373 subroutine reada(rekord,lancuch,wartosc,default)
375 character*(*) rekord,lancuch
376 double precision wartosc,default
379 iread=index(rekord,lancuch)
384 iread=iread+ilen(lancuch)+1
385 read (rekord(iread:),*) wartosc
388 c----------------------------------------------------------------------------
389 subroutine multreada(rekord,lancuch,tablica,dim,default)
392 double precision tablica(dim),default
393 character*(*) rekord,lancuch
399 iread=index(rekord,lancuch)
400 if (iread.eq.0) return
401 iread=iread+ilen(lancuch)+1
402 read (rekord(iread:),*,end=10,err=10) (tablica(i),i=1,dim)
405 c----------------------------------------------------------------------------
406 subroutine readi(rekord,lancuch,wartosc,default)
408 character*(*) rekord,lancuch
409 integer wartosc,default
412 iread=index(rekord,lancuch)
417 iread=iread+ilen(lancuch)+1
418 read (rekord(iread:),*) wartosc
421 c----------------------------------------------------------------------------
422 subroutine card_concat(card)
424 include 'COMMON.IOUNITS'
426 character*80 karta,ucase
428 read (inp,'(a)') karta
431 do while (karta(80:80).eq.'&')
432 card=card(:ilen(card)+1)//karta(:79)
433 read (inp,'(a)') karta
436 card=card(:ilen(card)+1)//karta
439 c----------------------------------------------------------------------------
448 include 'COMMON.IOUNITS'
449 include 'COMMON.CONTROL'
450 integer lenpre,lenpot,ilen
452 character*16 cformat,cprint
454 integer lenint,lenout
455 call getenv('INPUT',prefix)
456 call getenv('OUTPUT',prefout)
457 call getenv('INTIN',prefintin)
458 call getenv('COORD',cformat)
459 call getenv('PRINTCOOR',cprint)
460 call getenv('SCRATCHDIR',scratchdir)
463 if (index(ucase(cformat),'CX').gt.0) then
470 lenint=ilen(prefintin)
471 C Get the names and open the input files
472 open (inp,file=prefix(:ilen(prefix))//'.inp',status='old')
474 write (liczba,'(bz,i3.3)') me
475 outname=prefout(:lenout)//'_clust.out_'//liczba
477 outname=prefout(:lenout)//'_clust.out'
480 intinname=prefintin(:lenint)//'.bx'
481 else if (from_cx) then
482 intinname=prefintin(:lenint)//'.cx'
484 intinname=prefintin(:lenint)//'.int'
486 open(iout,file=outname,status='unknown')
487 open(istat,file=prefix(:ilen(prefix))//'.stat',status='unknown')
488 C Get parameter filenames and open the parameter files.
489 call getenv('BONDPAR',bondname)
490 open (ibond,file=bondname,status='old')
491 call getenv('THETPAR',thetname)
492 open (ithep,file=thetname,status='old')
493 call getenv('ROTPAR',rotname)
494 open (irotam,file=rotname,status='old')
495 call getenv('TORPAR',torname)
496 open (itorp,file=torname,status='old')
497 call getenv('TORDPAR',tordname)
498 open (itordp,file=tordname,status='old')
499 call getenv('FOURIER',fouriername)
500 open (ifourier,file=fouriername,status='old')
501 call getenv('ELEPAR',elename)
502 open (ielep,file=elename,status='old')
503 call getenv('SIDEPAR',sidename)
504 open (isidep,file=sidename,status='old')
505 call getenv('SIDEP',sidepname)
506 open (isidep1,file=sidepname,status="old")
507 call getenv('SCCORPAR',sccorname)
508 open (isccor,file=sccorname,status="old")
511 C 8/9/01 In the newest version SCp interaction constants are read from a file
512 C Use -DOLDSCP to use hard-coded constants instead.
514 call getenv('SCPPAR',scpname)
515 open (iscpp,file=scpname,status='old')