2 implicit real*8 (a-h,o-z)
8 include 'COMMON.CONTROL'
9 include 'COMMON.SBRIDGE'
10 include 'COMMON.IOUNITS'
12 C Read force-field parameters except weights
14 C Read job setup parameters
16 C Read control parameters for energy minimzation if required
17 if (minim) call read_minim
18 C Read MCM control parameters if required
19 if (modecalc.eq.3 .or. modecalc.eq.6) call mcmread
20 C Read MD control parameters if reqjuired
21 if (modecalc.eq.12) call read_MDpar
22 C Read MREMD control parameters if required
23 if (modecalc.eq.14) then
27 C Read MUCA control parameters if required
28 if (lmuca) call read_muca
29 C Read CSA control parameters if required (from fort.40 if exists
30 C otherwise from general input file)
31 csa if (modecalc.eq.8) then
32 csa inquire (file="fort.40",exist=file_exist)
33 csa if (.not.file_exist) call csaread
35 cfmc if (modecalc.eq.10) call mcmfread
36 C Read molecule information, molecule geometry, energy-term weights, and
37 C restraints if requested
39 C Print restraint information
41 if (.not. out1file .or. me.eq.king) then
44 &write (iout,'(a,i5,a)') "The following",nhpb-nss,
45 & " distance constraints have been imposed"
47 write (iout,'(3i6,i2,3f10.5)') i-nss,ihpb(i),jhpb(i),
48 & ibecarb(i),dhpb(i),dhpb1(i),forcon(i)
53 c print *,"Processor",myrank," leaves READRTNS"
56 C-------------------------------------------------------------------------------
57 subroutine read_control
61 implicit real*8 (a-h,o-z)
65 logical OKRandom, prng_restart
68 include 'COMMON.IOUNITS'
69 include 'COMMON.TIME1'
70 include 'COMMON.THREAD'
71 include 'COMMON.SBRIDGE'
72 include 'COMMON.CONTROL'
75 include 'COMMON.HEADER'
76 csa include 'COMMON.CSA'
77 include 'COMMON.CHAIN'
80 include 'COMMON.FFIELD'
81 include 'COMMON.SETUP'
82 COMMON /MACHSW/ KDIAG,ICORFL,IXDR
83 character*8 diagmeth(0:3) /'Library','EVVRSP','Givens','Jacobi'/
85 character*320 controlcard
90 read (INP,'(a)') titel
91 call card_concat(controlcard)
92 c out1file=index(controlcard,'OUT1FILE').gt.0 .or. fg_rank.gt.0
93 c print *,"Processor",me," fg_rank",fg_rank," out1file",out1file
94 call reada(controlcard,'SEED',seed,0.0D0)
95 call random_init(seed)
96 C Set up the time limit (caution! The time must be input in minutes!)
97 read_cart=index(controlcard,'READ_CART').gt.0
98 call readi(controlcard,'CONSTR_DIST',constr_dist,0)
99 call reada(controlcard,'TIMLIM',timlim,960.0D0) ! default 16 hours
100 unres_pdb = index(controlcard,'UNRES_PDB') .gt. 0
101 call reada(controlcard,'SAFETY',safety,30.0D0) ! default 30 minutes
102 call reada(controlcard,'RMSDBC',rmsdbc,3.0D0)
103 call reada(controlcard,'RMSDBC1',rmsdbc1,0.5D0)
104 call reada(controlcard,'RMSDBC1MAX',rmsdbc1max,1.5D0)
105 call reada(controlcard,'RMSDBCM',rmsdbcm,3.0D0)
106 call reada(controlcard,'DRMS',drms,0.1D0)
107 if(me.eq.king .or. .not. out1file .and. fg_rank.eq.0) then
108 write (iout,'(a,f10.1)')'RMSDBC = ',rmsdbc
109 write (iout,'(a,f10.1)')'RMSDBC1 = ',rmsdbc1
110 write (iout,'(a,f10.1)')'RMSDBC1MAX = ',rmsdbc1max
111 write (iout,'(a,f10.1)')'DRMS = ',drms
112 write (iout,'(a,f10.1)')'RMSDBCM = ',rmsdbcm
113 write (iout,'(a,f10.1)') 'Time limit (min):',timlim
115 call readi(controlcard,'NZ_START',nz_start,0)
116 call readi(controlcard,'NZ_END',nz_end,0)
117 call readi(controlcard,'IZ_SC',iz_sc,0)
119 safety = 60.0d0*safety
122 call reada(controlcard,"T_BATH",t_bath,300.0d0)
123 minim=(index(controlcard,'MINIMIZE').gt.0)
124 dccart=(index(controlcard,'CART').gt.0)
125 overlapsc=(index(controlcard,'OVERLAP').gt.0)
126 overlapsc=.not.overlapsc
127 searchsc=(index(controlcard,'NOSEARCHSC').gt.0)
128 searchsc=.not.searchsc
129 sideadd=(index(controlcard,'SIDEADD').gt.0)
130 energy_dec=(index(controlcard,'ENERGY_DEC').gt.0)
131 outpdb=(index(controlcard,'PDBOUT').gt.0)
132 outmol2=(index(controlcard,'MOL2OUT').gt.0)
133 pdbref=(index(controlcard,'PDBREF').gt.0)
134 refstr=pdbref .or. (index(controlcard,'REFSTR').gt.0)
135 indpdb=index(controlcard,'PDBSTART')
136 extconf=(index(controlcard,'EXTCONF').gt.0)
137 call readi(controlcard,'IPRINT',iprint,0)
138 call readi(controlcard,'MAXGEN',maxgen,10000)
139 call readi(controlcard,'MAXOVERLAP',maxoverlap,1000)
140 call readi(controlcard,"KDIAG",kdiag,0)
141 call readi(controlcard,"RESCALE_MODE",rescale_mode,2)
142 if(me.eq.king .or. .not. out1file .and. fg_rank.eq.0)
143 & write (iout,*) "RESCALE_MODE",rescale_mode
144 split_ene=index(controlcard,'SPLIT_ENE').gt.0
145 if (index(controlcard,'REGULAR').gt.0.0D0) then
146 call reada(controlcard,'WEIDIS',weidis,0.1D0)
150 if (index(controlcard,'CHECKGRAD').gt.0) then
152 if (index(controlcard,'CART').gt.0) then
154 elseif (index(controlcard,'CARINT').gt.0) then
159 elseif (index(controlcard,'THREAD').gt.0) then
161 call readi(controlcard,'THREAD',nthread,0)
162 if (nthread.gt.0) then
163 call reada(controlcard,'WEIDIS',weidis,0.1D0)
166 & write (iout,'(a)')'A number has to follow the THREAD keyword.'
167 stop 'Error termination in Read_Control.'
169 else if (index(controlcard,'MCMA').gt.0) then
171 else if (index(controlcard,'MCEE').gt.0) then
173 else if (index(controlcard,'MULTCONF').gt.0) then
175 else if (index(controlcard,'MAP').gt.0) then
177 call readi(controlcard,'MAP',nmap,0)
178 else if (index(controlcard,'CSA').gt.0) then
179 write(*,*) "CSA not supported in this version"
182 crc else if (index(controlcard,'ZSCORE').gt.0) then
184 crc ZSCORE is rm from UNRES, modecalc=9 is available
187 cfcm else if (index(controlcard,'MCMF').gt.0) then
189 else if (index(controlcard,'SOFTREG').gt.0) then
191 else if (index(controlcard,'CHECK_BOND').gt.0) then
193 else if (index(controlcard,'TEST').gt.0) then
195 else if (index(controlcard,'MD').gt.0) then
197 else if (index(controlcard,'RE ').gt.0) then
201 lmuca=index(controlcard,'MUCA').gt.0
202 call readi(controlcard,'MUCADYN',mucadyn,0)
203 call readi(controlcard,'MUCASMOOTH',muca_smooth,0)
204 if (lmuca .and. (me.eq.king .or. .not.out1file ))
206 write (iout,*) 'MUCADYN=',mucadyn
207 write (iout,*) 'MUCASMOOTH=',muca_smooth
210 iscode=index(controlcard,'ONE_LETTER')
211 indphi=index(controlcard,'PHI')
212 indback=index(controlcard,'BACK')
213 iranconf=index(controlcard,'RAND_CONF')
214 i2ndstr=index(controlcard,'USE_SEC_PRED')
215 gradout=index(controlcard,'GRADOUT').gt.0
216 gnorm_check=index(controlcard,'GNORM_CHECK').gt.0
218 if(me.eq.king.or..not.out1file)
219 & write (iout,'(2a)') diagmeth(kdiag),
220 & ' routine used to diagonalize matrices.'
223 c--------------------------------------------------------------------------
224 subroutine read_REMDpar
228 implicit real*8 (a-h,o-z)
230 include 'COMMON.IOUNITS'
231 include 'COMMON.TIME1'
234 include 'COMMON.LANGEVIN'
236 include 'COMMON.LANGEVIN.lang0'
238 include 'COMMON.INTERACT'
239 include 'COMMON.NAMES'
241 include 'COMMON.REMD'
242 include 'COMMON.CONTROL'
243 include 'COMMON.SETUP'
245 character*320 controlcard
246 character*3200 controlcard1
247 integer iremd_m_total
249 if(me.eq.king.or..not.out1file)
250 & write (iout,*) "REMD setup"
252 call card_concat(controlcard)
253 call readi(controlcard,"NREP",nrep,3)
254 call readi(controlcard,"NSTEX",nstex,1000)
255 call reada(controlcard,"RETMIN",retmin,10.0d0)
256 call reada(controlcard,"RETMAX",retmax,1000.0d0)
257 mremdsync=(index(controlcard,'SYNC').gt.0)
258 call readi(controlcard,"NSYN",i_sync_step,100)
259 restart1file=(index(controlcard,'REST1FILE').gt.0)
260 traj1file=(index(controlcard,'TRAJ1FILE').gt.0)
261 call readi(controlcard,"TRAJCACHE",max_cache_traj_use,1)
262 if(max_cache_traj_use.gt.max_cache_traj)
263 & max_cache_traj_use=max_cache_traj
264 if(me.eq.king.or..not.out1file) then
265 cd if (traj1file) then
266 crc caching is in testing - NTWX is not ignored
267 cd write (iout,*) "NTWX value is ignored"
268 cd write (iout,*) " trajectory is stored to one file by master"
269 cd write (iout,*) " before exchange at NSTEX intervals"
271 write (iout,*) "NREP= ",nrep
272 write (iout,*) "NSTEX= ",nstex
273 write (iout,*) "SYNC= ",mremdsync
274 write (iout,*) "NSYN= ",i_sync_step
275 write (iout,*) "TRAJCACHE= ",max_cache_traj_use
278 t_exchange_only=(index(controlcard,'TONLY').gt.0)
279 call readi(controlcard,"HREMD",hremd,0)
280 if((me.eq.king.or..not.out1file).and.hremd.gt.0) then
281 write (iout,*) "Hamiltonian REMD with ",hremd," sets of weights"
283 if(usampl.and.hremd.gt.0) then
285 & "========== ERROR: USAMPL and HREMD cannot be used together"
287 call MPI_Abort(MPI_COMM_WORLD,IERROR,ERRCODE)
294 if (index(controlcard,'TLIST').gt.0) then
296 call card_concat(controlcard1)
297 read(controlcard1,*) (remd_t(i),i=1,nrep)
298 if(me.eq.king.or..not.out1file)
299 & write (iout,*)'tlist',(remd_t(i),i=1,nrep)
302 if (index(controlcard,'MLIST').gt.0) then
304 call card_concat(controlcard1)
305 read(controlcard1,*) (remd_m(i),i=1,nrep)
306 if(me.eq.king.or..not.out1file) then
307 write (iout,*)'mlist',(remd_m(i),i=1,nrep)
310 iremd_m_total=iremd_m_total+remd_m(i)
313 write (iout,*) 'Total number of replicas ',
314 & iremd_m_total*hremd
316 write (iout,*) 'Total number of replicas ',iremd_m_total
320 if(me.eq.king.or..not.out1file)
321 & write (iout,'(/30(1h=),a,29(1h=)/)') " End of REMD run setup "
324 c--------------------------------------------------------------------------
325 subroutine read_MDpar
329 implicit real*8 (a-h,o-z)
331 include 'COMMON.IOUNITS'
332 include 'COMMON.TIME1'
335 include 'COMMON.LANGEVIN'
337 include 'COMMON.LANGEVIN.lang0'
339 include 'COMMON.INTERACT'
340 include 'COMMON.NAMES'
342 include 'COMMON.SETUP'
343 include 'COMMON.CONTROL'
344 include 'COMMON.SPLITELE'
346 character*320 controlcard
348 call card_concat(controlcard)
349 call readi(controlcard,"NSTEP",n_timestep,1000000)
350 call readi(controlcard,"NTWE",ntwe,100)
351 call readi(controlcard,"NTWX",ntwx,1000)
352 call reada(controlcard,"DT",d_time,1.0d-1)
353 call reada(controlcard,"DVMAX",dvmax,2.0d1)
354 call reada(controlcard,"DAMAX",damax,1.0d1)
355 call reada(controlcard,"EDRIFTMAX",edriftmax,1.0d+1)
356 call readi(controlcard,"LANG",lang,0)
357 RESPA = index(controlcard,"RESPA") .gt. 0
358 call readi(controlcard,"NTIME_SPLIT",ntime_split,1)
359 ntime_split0=ntime_split
360 call readi(controlcard,"MAXTIME_SPLIT",maxtime_split,64)
361 ntime_split0=ntime_split
362 call reada(controlcard,"R_CUT",r_cut,2.0d0)
363 call reada(controlcard,"LAMBDA",rlamb,0.3d0)
364 rest = index(controlcard,"REST").gt.0
365 tbf = index(controlcard,"TBF").gt.0
366 call readi(controlcard,"HMC",hmc,0)
367 tnp = index(controlcard,"NOSEPOINCARE99").gt.0
368 tnp1 = index(controlcard,"NOSEPOINCARE01").gt.0
369 tnh = index(controlcard,"NOSEHOOVER96").gt.0
370 if (RESPA.and.tnh)then
371 xiresp = index(controlcard,"XIRESP").gt.0
373 call reada(controlcard,"Q_NP",Q_np,0.1d0)
374 usampl = index(controlcard,"USAMPL").gt.0
376 mdpdb = index(controlcard,"MDPDB").gt.0
377 call reada(controlcard,"T_BATH",t_bath,300.0d0)
378 call reada(controlcard,"TAU_BATH",tau_bath,1.0d-1)
379 call reada(controlcard,"EQ_TIME",eq_time,1.0d+4)
380 call readi(controlcard,"RESET_MOMENT",count_reset_moment,1000)
381 if (count_reset_moment.eq.0) count_reset_moment=1000000000
382 call readi(controlcard,"RESET_VEL",count_reset_vel,1000)
383 reset_moment=lang.eq.0 .and. tbf .and. count_reset_moment.gt.0
384 reset_vel=lang.eq.0 .and. tbf .and. count_reset_vel.gt.0
385 if (count_reset_vel.eq.0) count_reset_vel=1000000000
386 large = index(controlcard,"LARGE").gt.0
387 print_compon = index(controlcard,"PRINT_COMPON").gt.0
388 rattle = index(controlcard,"RATTLE").gt.0
389 c if performing umbrella sampling, fragments constrained are read from the fragment file
395 if(me.eq.king.or..not.out1file) then
397 write (iout,'(27(1h=),a26,27(1h=))') " Parameters of the MD run "
399 write (iout,'(a)') "The units are:"
400 write (iout,'(a)') "positions: angstrom, time: 48.9 fs"
401 write (iout,'(2a)') "velocity: angstrom/(48.9 fs),",
402 & " acceleration: angstrom/(48.9 fs)**2"
403 write (iout,'(a)') "energy: kcal/mol, temperature: K"
405 write (iout,'(a60,i10)') "Number of time steps:",n_timestep
406 write (iout,'(a60,f10.5,a)')
407 & "Initial time step of numerical integration:",d_time,
409 write (iout,'(60x,f10.5,a)') d_time*48.9," fs"
411 write (iout,'(2a,i4,a)')
412 & "A-MTS algorithm used; initial time step for fast-varying",
413 & " short-range forces split into",ntime_split," steps."
414 write (iout,'(a,f5.2,a,f5.2)') "Short-range force cutoff",
415 & r_cut," lambda",rlamb
417 write (iout,'(2a,f10.5)')
418 & "Maximum acceleration threshold to reduce the time step",
419 & "/increase split number:",damax
420 write (iout,'(2a,f10.5)')
421 & "Maximum predicted energy drift to reduce the timestep",
422 & "/increase split number:",edriftmax
423 write (iout,'(a60,f10.5)')
424 & "Maximum velocity threshold to reduce velocities:",dvmax
425 write (iout,'(a60,i10)') "Frequency of property output:",ntwe
426 write (iout,'(a60,i10)') "Frequency of coordinate output:",ntwx
427 if (rattle) write (iout,'(a60)')
428 & "Rattle algorithm used to constrain the virtual bonds"
432 call reada(controlcard,"ETAWAT",etawat,0.8904d0)
433 call reada(controlcard,"RWAT",rwat,1.4d0)
434 call reada(controlcard,"SCAL_FRIC",scal_fric,2.0d-2)
435 surfarea=index(controlcard,"SURFAREA").gt.0
436 call readi(controlcard,"RESET_FRICMAT",reset_fricmat,1000)
437 if(me.eq.king.or..not.out1file)then
438 write (iout,'(/a,$)') "Langevin dynamics calculation"
441 & " with direct integration of Langevin equations"
442 else if (lang.eq.2) then
443 write (iout,'(a/)') " with TINKER stochasic MD integrator"
444 else if (lang.eq.3) then
445 write (iout,'(a/)') " with Ciccotti's stochasic MD integrator"
446 else if (lang.eq.4) then
447 write (iout,'(a/)') " in overdamped mode"
449 write (iout,'(//a,i5)')
450 & "=========== ERROR: Unknown Langevin dynamics mode:",lang
453 write (iout,'(a60,f10.5)') "Temperature:",t_bath
454 write (iout,'(a60,f10.5)') "Viscosity of the solvent:",etawat
455 write (iout,'(a60,f10.5)') "Radius of solvent molecule:",rwat
456 write (iout,'(a60,f10.5)')
457 & "Scaling factor of the friction forces:",scal_fric
458 if (surfarea) write (iout,'(2a,i10,a)')
459 & "Friction coefficients will be scaled by solvent-accessible",
460 & " surface area every",reset_fricmat," steps."
462 c Calculate friction coefficients and bounds of stochastic forces
463 eta=6*pi*cPoise*etawat
464 if(me.eq.king.or..not.out1file)
465 & write(iout,'(a60,f10.5)')"Eta of the solvent in natural units:"
467 gamp=scal_fric*(pstok+rwat)*eta
468 stdfp=dsqrt(2*Rb*t_bath/d_time)
470 gamsc(i)=scal_fric*(restok(i)+rwat)*eta
471 stdfsc(i)=dsqrt(2*Rb*t_bath/d_time)
473 if(me.eq.king.or..not.out1file)then
474 write (iout,'(/2a/)')
475 & "Radii of site types and friction coefficients and std's of",
476 & " stochastic forces of fully exposed sites"
477 write (iout,'(a5,f5.2,2f10.5)')'p',pstok,gamp,stdfp*dsqrt(gamp)
479 write (iout,'(a5,f5.2,2f10.5)') restyp(i),restok(i),
480 & gamsc(i),stdfsc(i)*dsqrt(gamsc(i))
484 if(me.eq.king.or..not.out1file)then
485 write (iout,'(a)') "Berendsen bath calculation"
486 write (iout,'(a60,f10.5)') "Temperature:",t_bath
487 write (iout,'(a60,f10.5)') "Coupling constant (tau):",tau_bath
489 & write (iout,'(a,i10,a)') "Momenta will be reset at zero every",
490 & count_reset_moment," steps"
492 & write (iout,'(a,i10,a)')
493 & "Velocities will be reset at random every",count_reset_vel,
496 else if (tnp .or. tnp1 .or. tnh) then
497 if (tnp .or. tnp1) then
498 write (iout,'(a)') "Nose-Poincare bath calculation"
499 if (tnp) write (iout,'(a)')
500 & "J.Comput.Phys. 151 114 (1999) S.D.Bond B.J.Leimkuhler B.B.Laird"
501 if (tnp1) write (iout,'(a)') "JPSJ 70 75 (2001) S. Nose"
503 write (iout,'(a)') "Nose-Hoover bath calculation"
504 write (iout,'(a)') "Mol.Phys. 87 1117 (1996) Martyna et al."
514 WDTI(i) = 1.0*d_time/nresn
521 write (iout,'(a)') "NVT-XI-RESPA algorithm"
523 write (iout,'(a)') "NVT-XO-RESPA algorithm"
526 WDTIi(i) = 1.0*d_time/nresn/ntime_split
534 write (iout,'(a60,f10.5)') "Temperature:",t_bath
535 write (iout,'(a60,f10.5)') "Q =",Q_np
537 & write (iout,'(a,i10,a)') "Momenta will be reset at zero every",
538 & count_reset_moment," steps"
540 & write (iout,'(a,i10,a)')
541 & "Velocities will be reset at random every",count_reset_vel,
544 else if (hmc.gt.0) then
545 write (iout,'(a)') "Hybrid Monte Carlo calculation"
546 write (iout,'(a60,f10.5)') "Temperature:",t_bath
547 write (iout,'(a60,i10)')
548 & "Number of MD steps between Metropolis tests:",hmc
551 if(me.eq.king.or..not.out1file)
552 & write (iout,'(a31)') "Microcanonical mode calculation"
554 if(me.eq.king.or..not.out1file)then
555 if (rest) write (iout,'(/a/)') "===== Calculation restarted ===="
557 write(iout,*) "MD running with constraints."
558 write(iout,*) "Equilibration time ", eq_time, " mtus."
559 write(iout,*) "Constraining ", nfrag," fragments."
560 write(iout,*) "Length of each fragment, weight and q0:"
562 write (iout,*) "Set of restraints #",iset
564 write(iout,'(2i5,f8.1,f7.4)') ifrag(1,i,iset),
565 & ifrag(2,i,iset),wfrag(i,iset),qinfrag(i,iset)
567 write(iout,*) "constraints between ", npair, "fragments."
568 write(iout,*) "constraint pairs, weights and q0:"
570 write(iout,'(2i5,f8.1,f7.4)') ipair(1,i,iset),
571 & ipair(2,i,iset),wpair(i,iset),qinpair(i,iset)
573 write(iout,*) "angle constraints within ", nfrag_back,
574 & "backbone fragments."
575 write(iout,*) "fragment, weights:"
577 write(iout,'(2i5,3f8.1)') ifrag_back(1,i,iset),
578 & ifrag_back(2,i,iset),wfrag_back(1,i,iset),
579 & wfrag_back(2,i,iset),wfrag_back(3,i,iset)
582 iset=mod(kolor,nset)+1
585 if(me.eq.king.or..not.out1file)
586 & write (iout,'(/30(1h=),a,29(1h=)/)') " End of MD run setup "
589 c------------------------------------------------------------------------------
592 C Read molecular data.
594 implicit real*8 (a-h,o-z)
600 include 'COMMON.IOUNITS'
603 include 'COMMON.INTERACT'
604 include 'COMMON.LOCAL'
605 include 'COMMON.NAMES'
606 include 'COMMON.CHAIN'
607 include 'COMMON.FFIELD'
608 include 'COMMON.SBRIDGE'
609 include 'COMMON.HEADER'
610 include 'COMMON.CONTROL'
611 include 'COMMON.DBASE'
612 include 'COMMON.THREAD'
613 include 'COMMON.CONTACTS'
614 include 'COMMON.TORCNSTR'
615 include 'COMMON.TIME1'
616 include 'COMMON.BOUNDS'
618 include 'COMMON.REMD'
619 include 'COMMON.SETUP'
620 character*4 sequence(maxres)
622 double precision x(maxvar)
623 character*256 pdbfile
624 character*320 weightcard
625 character*80 weightcard_t,ucase
626 dimension itype_pdb(maxres)
627 common /pizda/ itype_pdb
628 logical seq_comp,fail
629 double precision energia(0:n_ene)
635 C Read weights of the subsequent energy terms.
648 if(me.eq.king.or..not.out1file) then
649 write (iout,*) 'Reading ',hremd,' sets of weights for HREMD'
650 write (iout,*) 'Current weights for processor ',
651 & me,' set ',i2set(me)
655 call card_concat(weightcard)
656 call reada(weightcard,'WLONG',wlong,1.0D0)
657 call reada(weightcard,'WSC',wsc,wlong)
658 call reada(weightcard,'WSCP',wscp,wlong)
659 call reada(weightcard,'WELEC',welec,1.0D0)
660 call reada(weightcard,'WVDWPP',wvdwpp,welec)
661 call reada(weightcard,'WEL_LOC',wel_loc,1.0D0)
662 call reada(weightcard,'WCORR4',wcorr4,0.0D0)
663 call reada(weightcard,'WCORR5',wcorr5,0.0D0)
664 call reada(weightcard,'WCORR6',wcorr6,0.0D0)
665 call reada(weightcard,'WTURN3',wturn3,1.0D0)
666 call reada(weightcard,'WTURN4',wturn4,1.0D0)
667 call reada(weightcard,'WTURN6',wturn6,1.0D0)
668 call reada(weightcard,'WSCCOR',wsccor,1.0D0)
669 call reada(weightcard,'WSTRAIN',wstrain,1.0D0)
670 call reada(weightcard,'WBOND',wbond,1.0D0)
671 call reada(weightcard,'WTOR',wtor,1.0D0)
672 call reada(weightcard,'WTORD',wtor_d,1.0D0)
673 call reada(weightcard,'WANG',wang,1.0D0)
674 call reada(weightcard,'WSCLOC',wscloc,1.0D0)
675 call reada(weightcard,'SCAL14',scal14,0.4D0)
676 call reada(weightcard,'SCALSCP',scalscp,1.0d0)
677 call reada(weightcard,'CUTOFF',cutoff_corr,7.0d0)
678 call reada(weightcard,'DELT_CORR',delt_corr,0.5d0)
679 call reada(weightcard,'TEMP0',temp0,300.0d0)
680 if (index(weightcard,'SOFT').gt.0) ipot=6
681 C 12/1/95 Added weight for the multi-body term WCORR
682 call reada(weightcard,'WCORRH',wcorr,1.0D0)
683 if (wcorr4.gt.0.0d0) wcorr=wcorr4
691 hweights(i,7)=wel_loc
694 hweights(i,10)=wturn6
696 hweights(i,12)=wscloc
698 hweights(i,14)=wtor_d
699 hweights(i,15)=wstrain
700 hweights(i,16)=wvdwpp
702 hweights(i,18)=scal14
703 hweights(i,21)=wsccor
708 weights(i)=hweights(i2set(me),i)
732 call card_concat(weightcard)
733 call reada(weightcard,'WLONG',wlong,1.0D0)
734 call reada(weightcard,'WSC',wsc,wlong)
735 call reada(weightcard,'WSCP',wscp,wlong)
736 call reada(weightcard,'WELEC',welec,1.0D0)
737 call reada(weightcard,'WVDWPP',wvdwpp,welec)
738 call reada(weightcard,'WEL_LOC',wel_loc,1.0D0)
739 call reada(weightcard,'WCORR4',wcorr4,0.0D0)
740 call reada(weightcard,'WCORR5',wcorr5,0.0D0)
741 call reada(weightcard,'WCORR6',wcorr6,0.0D0)
742 call reada(weightcard,'WTURN3',wturn3,1.0D0)
743 call reada(weightcard,'WTURN4',wturn4,1.0D0)
744 call reada(weightcard,'WTURN6',wturn6,1.0D0)
745 call reada(weightcard,'WSCCOR',wsccor,1.0D0)
746 call reada(weightcard,'WSTRAIN',wstrain,1.0D0)
747 call reada(weightcard,'WBOND',wbond,1.0D0)
748 call reada(weightcard,'WTOR',wtor,1.0D0)
749 call reada(weightcard,'WTORD',wtor_d,1.0D0)
750 call reada(weightcard,'WANG',wang,1.0D0)
751 call reada(weightcard,'WSCLOC',wscloc,1.0D0)
753 call reada(weightcard,'WDFAD',wdfa_dist,0.0d0)
754 call reada(weightcard,'WDFAT',wdfa_tor,0.0d0)
755 call reada(weightcard,'WDFAN',wdfa_nei,0.0d0)
756 call reada(weightcard,'WDFAB',wdfa_beta,0.0d0)
758 call reada(weightcard,'SCAL14',scal14,0.4D0)
759 call reada(weightcard,'SCALSCP',scalscp,1.0d0)
760 call reada(weightcard,'CUTOFF',cutoff_corr,7.0d0)
761 call reada(weightcard,'DELT_CORR',delt_corr,0.5d0)
762 call reada(weightcard,'TEMP0',temp0,300.0d0)
763 if (index(weightcard,'SOFT').gt.0) ipot=6
764 C 12/1/95 Added weight for the multi-body term WCORR
765 call reada(weightcard,'WCORRH',wcorr,1.0D0)
766 if (wcorr4.gt.0.0d0) wcorr=wcorr4
788 weights(24)=wdfa_dist
791 weights(27)=wdfa_beta
793 if(me.eq.king.or..not.out1file)
794 & write (iout,10) wsc,wscp,welec,wvdwpp,wbond,wang,wscloc,wtor,
795 & wtor_d,wstrain,wel_loc,wcorr,wcorr5,wcorr6,wsccor,wturn3,
797 & wdfa_dist,wdfa_tor,wdfa_nei,wdfa_beta
799 10 format (/'Energy-term weights (unscaled):'//
800 & 'WSCC= ',f10.6,' (SC-SC)'/
801 & 'WSCP= ',f10.6,' (SC-p)'/
802 & 'WELEC= ',f10.6,' (p-p electr)'/
803 & 'WVDWPP= ',f10.6,' (p-p VDW)'/
804 & 'WBOND= ',f10.6,' (stretching)'/
805 & 'WANG= ',f10.6,' (bending)'/
806 & 'WSCLOC= ',f10.6,' (SC local)'/
807 & 'WTOR= ',f10.6,' (torsional)'/
808 & 'WTORD= ',f10.6,' (double torsional)'/
809 & 'WSTRAIN=',f10.6,' (SS bridges & dist. cnstr.)'/
810 & 'WEL_LOC=',f10.6,' (multi-body 3-rd order)'/
811 & 'WCORR4= ',f10.6,' (multi-body 4th order)'/
812 & 'WCORR5= ',f10.6,' (multi-body 5th order)'/
813 & 'WCORR6= ',f10.6,' (multi-body 6th order)'/
814 & 'WSCCOR= ',f10.6,' (back-scloc correlation)'/
815 & 'WTURN3= ',f10.6,' (turns, 3rd order)'/
816 & 'WTURN4= ',f10.6,' (turns, 4th order)'/
817 & 'WTURN6= ',f10.6,' (turns, 6th order)'/
818 & 'WDFA_D= ',f10.6,' (DFA, distance)' /
819 & 'WDFA_T= ',f10.6,' (DFA, torsional)' /
820 & 'WDFA_N= ',f10.6,' (DFA, number of neighbor)' /
821 & 'WDFA_B= ',f10.6,' (DFA, beta formation)')
823 if(me.eq.king.or..not.out1file)then
824 if (wcorr4.gt.0.0d0) then
825 write (iout,'(/2a/)') 'Local-electrostatic type correlation ',
826 & 'between contact pairs of peptide groups'
827 write (iout,'(2(a,f5.3/))')
828 & 'Cutoff on 4-6th order correlation terms: ',cutoff_corr,
829 & 'Range of quenching the correlation terms:',2*delt_corr
830 else if (wcorr.gt.0.0d0) then
831 write (iout,'(/2a/)') 'Hydrogen-bonding correlation ',
832 & 'between contact pairs of peptide groups'
834 write (iout,'(a,f8.3)')
835 & 'Scaling factor of 1,4 SC-p interactions:',scal14
836 write (iout,'(a,f8.3)')
837 & 'General scaling factor of SC-p interactions:',scalscp
839 r0_corr=cutoff_corr-delt_corr
841 aad(i,1)=scalscp*aad(i,1)
842 aad(i,2)=scalscp*aad(i,2)
843 bad(i,1)=scalscp*bad(i,1)
844 bad(i,2)=scalscp*bad(i,2)
846 call rescale_weights(t_bath)
847 if(me.eq.king.or..not.out1file)
848 & write (iout,22) wsc,wscp,welec,wvdwpp,wbond,wang,wscloc,wtor,
849 & wtor_d,wstrain,wel_loc,wcorr,wcorr5,wcorr6,wsccor,wturn3,
851 & wdfa_dist,wdfa_tor,wdfa_nei,wdfa_beta
853 22 format (/'Energy-term weights (scaled):'//
854 & 'WSCC= ',f10.6,' (SC-SC)'/
855 & 'WSCP= ',f10.6,' (SC-p)'/
856 & 'WELEC= ',f10.6,' (p-p electr)'/
857 & 'WVDWPP= ',f10.6,' (p-p VDW)'/
858 & 'WBOND= ',f10.6,' (stretching)'/
859 & 'WANG= ',f10.6,' (bending)'/
860 & 'WSCLOC= ',f10.6,' (SC local)'/
861 & 'WTOR= ',f10.6,' (torsional)'/
862 & 'WTORD= ',f10.6,' (double torsional)'/
863 & 'WSTRAIN=',f10.6,' (SS bridges & dist. cnstr.)'/
864 & 'WEL_LOC=',f10.6,' (multi-body 3-rd order)'/
865 & 'WCORR4= ',f10.6,' (multi-body 4th order)'/
866 & 'WCORR5= ',f10.6,' (multi-body 5th order)'/
867 & 'WCORR6= ',f10.6,' (multi-body 6th order)'/
868 & 'WSCCOR= ',f10.6,' (back-scloc correlatkion)'/
869 & 'WTURN3= ',f10.6,' (turns, 3rd order)'/
870 & 'WTURN4= ',f10.6,' (turns, 4th order)'/
871 & 'WTURN6= ',f10.6,' (turns, 6th order)'/
872 & 'WDFA_D= ',f10.6,' (DFA, distance)' /
873 & 'WDFA_T= ',f10.6,' (DFA, torsional)' /
874 & 'WDFA_N= ',f10.6,' (DFA, number of neighbor)' /
875 & 'WDFA_B= ',f10.6,' (DFA, beta formation)')
877 if(me.eq.king.or..not.out1file)
878 & write (iout,*) "Reference temperature for weights calculation:",
880 call reada(weightcard,"D0CM",d0cm,3.78d0)
881 call reada(weightcard,"AKCM",akcm,15.1d0)
882 call reada(weightcard,"AKTH",akth,11.0d0)
883 call reada(weightcard,"AKCT",akct,12.0d0)
884 call reada(weightcard,"V1SS",v1ss,-1.08d0)
885 call reada(weightcard,"V2SS",v2ss,7.61d0)
886 call reada(weightcard,"V3SS",v3ss,13.7d0)
887 call reada(weightcard,"EBR",ebr,-5.50D0)
888 if(me.eq.king.or..not.out1file) then
889 write (iout,*) "Parameters of the SS-bond potential:"
890 write (iout,*) "D0CM",d0cm," AKCM",akcm," AKTH",akth,
892 write (iout,*) "V1SS",v1ss," V2SS",v2ss," V3SS",v3ss
893 write (iout,*) "EBR",ebr
894 print *,'indpdb=',indpdb,' pdbref=',pdbref
896 if (indpdb.gt.0 .or. pdbref) then
897 read(inp,'(a)') pdbfile
898 if(me.eq.king.or..not.out1file)
899 & write (iout,'(2a)') 'PDB data will be read from file ',
900 & pdbfile(:ilen(pdbfile))
901 open(ipdbin,file=pdbfile,status='old',err=33)
903 33 write (iout,'(a)') 'Error opening PDB file.'
906 c print *,'Begin reading pdb data'
908 c print *,'Finished reading pdb data'
909 if(me.eq.king.or..not.out1file)
910 & write (iout,'(a,i3,a,i3)')'nsup=',nsup,
911 & ' nstart_sup=',nstart_sup
913 itype_pdb(i)=itype(i)
917 nct=nstart_sup+nsup-1
918 call contact(.false.,ncont_ref,icont_ref,co)
921 if(me.eq.king.or..not.out1file)
922 & write(iout,*)'Adding sidechains'
929 do while (fail.and.nsi.le.maxsi)
930 call gen_side(iti,theta(i+1),alph(i),omeg(i),fail)
933 if(fail) write(iout,*)'Adding sidechain failed for res ',
934 & i,' after ',nsi,' trials'
939 if (indpdb.eq.0) then
940 C Read sequence if not taken from the pdb file.
942 c print *,'nres=',nres
943 if (iscode.gt.0) then
944 read (inp,'(80a1)') (sequence(i)(1:1),i=1,nres)
946 read (inp,'(20(1x,a3))') (sequence(i),i=1,nres)
948 C Convert sequence to numeric code
950 itype(i)=rescode(i,sequence(i),iscode)
952 C Assign initial virtual bond lengths
958 vbld(i+nres)=dsc(itype(i))
959 vbld_inv(i+nres)=dsc_inv(itype(i))
960 c write (iout,*) "i",i," itype",itype(i),
961 c & " dsc",dsc(itype(i))," vbld",vbld(i),vbld(i+nres)
965 c print '(20i4)',(itype(i),i=1,nres)
968 if (itype(i).eq.ntyp1 .or. itype(i+1).eq.ntyp1) then
970 if (itype(i).eq.ntyp1) then
974 else if (itype(i+1).ne.20) then
976 else if (itype(i).ne.20) then
983 if(me.eq.king.or..not.out1file)then
984 write (iout,*) "ITEL"
986 write (iout,*) i,itype(i),itel(i)
988 print *,'Call Read_Bridge.'
991 C 8/13/98 Set limits to generating the dihedral angles
996 read (inp,*) ndih_constr
997 if (ndih_constr.gt.0) then
999 read (inp,*) (idih_constr(i),phi0(i),drange(i),i=1,ndih_constr)
1000 if(me.eq.king.or..not.out1file)then
1002 & 'There are',ndih_constr,' constraints on phi angles.'
1004 write (iout,'(i5,2f8.3)') idih_constr(i),phi0(i),drange(i)
1008 phi0(i)=deg2rad*phi0(i)
1009 drange(i)=deg2rad*drange(i)
1011 if(me.eq.king.or..not.out1file)
1012 & write (iout,*) 'FTORS',ftors
1015 phibound(1,ii) = phi0(i)-drange(i)
1016 phibound(2,ii) = phi0(i)+drange(i)
1021 if (me.eq.king) then
1023 write (iout,'(a)') 'Boundaries in phi angle sampling:'
1025 write (iout,'(a3,i5,2f10.1)')
1026 & restyp(itype(i)),i,phibound(1,i)*rad2deg,phibound(2,i)*rad2deg
1032 cd print *,'NNT=',NNT,' NCT=',NCT
1033 if (itype(1).eq.ntyp1) nnt=2
1034 if (itype(nres).eq.ntyp1) nct=nct-1
1036 if(me.eq.king.or..not.out1file)
1037 & write (iout,'(a,i3)') 'nsup=',nsup
1039 if (nsup.le.(nct-nnt+1)) then
1040 do i=0,nct-nnt+1-nsup
1041 if (seq_comp(itype(nnt+i),itype_pdb(nstart_sup),nsup)) then
1047 & 'Error - sequences to be superposed do not match.'
1050 do i=0,nsup-(nct-nnt+1)
1051 if (seq_comp(itype(nnt),itype_pdb(nstart_sup+i),nct-nnt+1))
1053 nstart_sup=nstart_sup+i
1059 & 'Error - sequences to be superposed do not match.'
1062 if (nsup.eq.0) nsup=nct-nnt
1063 if (nstart_sup.eq.0) nstart_sup=nnt
1064 if (nstart_seq.eq.0) nstart_seq=nnt
1065 if(me.eq.king.or..not.out1file)
1066 & write (iout,*) 'nsup=',nsup,' nstart_sup=',nstart_sup,
1067 & ' nstart_seq=',nstart_seq
1069 c--- Zscore rms -------
1070 if (nz_start.eq.0) nz_start=nnt
1071 if (nz_end.eq.0 .and. nsup.gt.0) then
1073 else if (nz_end.eq.0) then
1076 if(me.eq.king.or..not.out1file)then
1077 write (iout,*) 'NZ_START=',nz_start,' NZ_END=',nz_end
1078 write (iout,*) 'IZ_SC=',iz_sc
1080 c----------------------
1083 if (.not.pdbref) then
1084 call read_angles(inp,*38)
1086 38 write (iout,'(a)') 'Error reading reference structure.'
1088 call MPI_Finalize(MPI_COMM_WORLD,IERROR)
1089 stop 'Error reading reference structure'
1093 czscore call geom_to_var(nvar,coord_exp_zs(1,1))
1102 call contact(.true.,ncont_ref,icont_ref,co)
1104 if(me.eq.king.or..not.out1file)
1105 & write (iout,*) 'Contact order:',co
1107 if(me.eq.king.or..not.out1file)
1108 & write (2,*) 'Shifting contacts:',nstart_seq,nstart_sup
1111 icont_ref(j,i)=icont_ref(j,i)+nstart_seq-nstart_sup
1113 if(me.eq.king.or..not.out1file)
1114 & write (2,*) i,' ',restyp(itype(icont_ref(1,i))),' ',
1115 & icont_ref(1,i),' ',
1116 & restyp(itype(icont_ref(2,i))),' ',icont_ref(2,i)
1120 c write (iout,*) "constr_dist",constr_dist,nstart_sup,nsup
1121 if (constr_dist.gt.0) then
1122 call read_dist_constr
1125 c write (iout,*) "After read_dist_constr nhpb",nhpb
1127 if (indpdb.eq.0 .and. modecalc.ne.2 .and. modecalc.ne.4
1128 & .and. modecalc.ne.8 .and. modecalc.ne.9 .and.
1129 & modecalc.ne.10) then
1130 C If input structure hasn't been supplied from the PDB file read or generate
1132 if (iranconf.eq.0 .and. .not. extconf) then
1133 if(me.eq.king.or..not.out1file .and.fg_rank.eq.0)
1134 & write (iout,'(a)') 'Initial geometry will be read in.'
1136 read(inp,'(8f10.5)',end=36,err=36)
1137 & ((c(l,k),l=1,3),k=1,nres),
1138 & ((c(l,k+nres),l=1,3),k=nnt,nct)
1139 call int_from_cart1(.false.)
1142 dc(j,i)=c(j,i+1)-c(j,i)
1143 dc_norm(j,i)=dc_norm(j,i)*vbld_inv(i+1)
1147 if (itype(i).ne.10) then
1149 dc(j,i+nres)=c(j,i+nres)-c(j,i)
1150 dc_norm(j,i+nres)=dc_norm(j,i+nres)*vbld_inv(i+nres)
1156 call read_angles(inp,*36)
1159 36 write (iout,'(a)') 'Error reading angle file.'
1161 call mpi_finalize( MPI_COMM_WORLD,IERR )
1163 stop 'Error reading angle file.'
1165 else if (extconf) then
1166 if(me.eq.king.or..not.out1file .and. fg_rank.eq.0)
1167 & write (iout,'(a)') 'Extended chain initial geometry.'
1169 theta(i)=90d0*deg2rad
1172 phi(i)=180d0*deg2rad
1175 alph(i)=110d0*deg2rad
1178 omeg(i)=-120d0*deg2rad
1181 if(me.eq.king.or..not.out1file)
1182 & write (iout,'(a)') 'Random-generated initial geometry.'
1186 if (me.eq.king .or. fg_rank.eq.0 .and. (
1187 & modecalc.eq.12 .or. modecalc.eq.14) ) then
1191 call gen_rand_conf(itmp,*30)
1193 30 write (iout,*) 'Failed to generate random conformation',
1194 & ', itrial=',itrial
1195 write (*,*) 'Processor:',me,
1196 & ' Failed to generate random conformation',
1206 write (iout,'(a,i3,a)') 'Processor:',me,
1207 & ' error in generating random conformation.'
1208 write (*,'(a,i3,a)') 'Processor:',me,
1209 & ' error in generating random conformation.'
1212 call MPI_Abort(mpi_comm_world,error_msg,ierrcode)
1219 elseif (modecalc.eq.4) then
1220 read (inp,'(a)') intinname
1221 open (intin,file=intinname,status='old',err=333)
1222 if (me.eq.king .or. .not.out1file.and.fg_rank.eq.0)
1223 & write (iout,'(a)') 'intinname',intinname
1224 write (*,'(a)') 'Processor',myrank,' intinname',intinname
1226 333 write (iout,'(2a)') 'Error opening angle file ',intinname
1228 call MPI_Finalize(MPI_COMM_WORLD,IERR)
1230 stop 'Error opening angle file.'
1234 C Generate distance constraints, if the PDB structure is to be regularized.
1235 if (nthread.gt.0) then
1236 call read_threadbase
1239 if (me.eq.king .or. .not. out1file)
1241 if (ns.gt.0 .and. (me.eq.king .or. .not.out1file) ) then
1242 write (iout,'(/a,i3,a)')
1243 & 'The chain contains',ns,' disulfide-bridging cysteines.'
1244 write (iout,'(20i4)') (iss(i),i=1,ns)
1245 write (iout,'(/a/)') 'Pre-formed links are:'
1251 if (me.eq.king.or..not.out1file)
1252 & write (iout,'(2a,i3,3a,i3,a,3f10.3)')
1253 & restyp(it1),'(',i1,') -- ',restyp(it2),'(',i2,')',dhpb(i),
1258 if (i2ndstr.gt.0) call secstrp2dihc
1259 c call geom_to_var(nvar,x)
1260 c call etotal(energia(0))
1261 c call enerprint(energia(0))
1262 c call briefout(0,etot)
1264 cd write (iout,'(2(a,i3))') 'NNT',NNT,' NCT',NCT
1265 cd write (iout,'(a)') 'Variable list:'
1266 cd write (iout,'(i4,f10.5)') (i,rad2deg*x(i),i=1,nvar)
1268 if (me.eq.king .or. (fg_rank.eq.0 .and. .not.out1file))
1269 & write (iout,'(//80(1h*)/20x,a,i4,a/80(1h*)//)')
1270 & 'Processor',myrank,': end reading molecular data.'
1274 c--------------------------------------------------------------------------
1275 logical function seq_comp(itypea,itypeb,length)
1277 integer length,itypea(length),itypeb(length)
1280 if (itypea(i).ne.itypeb(i)) then
1288 c-----------------------------------------------------------------------------
1289 subroutine read_bridge
1290 C Read information about disulfide bridges.
1291 implicit real*8 (a-h,o-z)
1292 include 'DIMENSIONS'
1296 include 'COMMON.IOUNITS'
1297 include 'COMMON.GEO'
1298 include 'COMMON.VAR'
1299 include 'COMMON.INTERACT'
1300 include 'COMMON.LOCAL'
1301 include 'COMMON.NAMES'
1302 include 'COMMON.CHAIN'
1303 include 'COMMON.FFIELD'
1304 include 'COMMON.SBRIDGE'
1305 include 'COMMON.HEADER'
1306 include 'COMMON.CONTROL'
1307 include 'COMMON.DBASE'
1308 include 'COMMON.THREAD'
1309 include 'COMMON.TIME1'
1310 include 'COMMON.SETUP'
1311 C Read bridging residues.
1312 read (inp,*) ns,(iss(i),i=1,ns)
1314 if(me.eq.king.or..not.out1file)
1315 & write (iout,*) 'ns=',ns,' iss:',(iss(i),i=1,ns)
1316 C Check whether the specified bridging residues are cystines.
1318 if (itype(iss(i)).ne.1) then
1319 if (me.eq.king.or..not.out1file) write (iout,'(2a,i3,a)')
1320 & 'Do you REALLY think that the residue ',restyp(iss(i)),i,
1321 & ' can form a disulfide bridge?!!!'
1322 write (*,'(2a,i3,a)')
1323 & 'Do you REALLY think that the residue ',restyp(iss(i)),i,
1324 & ' can form a disulfide bridge?!!!'
1326 call MPI_Finalize(MPI_COMM_WORLD,ierror)
1331 C Read preformed bridges.
1333 read (inp,*) nss,(ihpb(i),jhpb(i),i=1,nss)
1334 write (iout,*) 'nss=',nss,' ihpb,jhpb: ',(ihpb(i),jhpb(i),i=1,nss)
1337 C Check if the residues involved in bridges are in the specified list of
1338 C bridging residues.
1341 if (ihpb(i).eq.ihpb(j).or.ihpb(i).eq.jhpb(j)
1342 & .or.jhpb(i).eq.ihpb(j).or.jhpb(i).eq.jhpb(j)) then
1343 write (iout,'(a,i3,a)') 'Disulfide pair',i,
1344 & ' contains residues present in other pairs.'
1345 write (*,'(a,i3,a)') 'Disulfide pair',i,
1346 & ' contains residues present in other pairs.'
1348 call MPI_Finalize(MPI_COMM_WORLD,ierror)
1354 if (ihpb(i).eq.iss(j)) goto 10
1356 write (iout,'(a,i3,a)') 'Pair',i,' contains unknown cystine.'
1359 if (jhpb(i).eq.iss(j)) goto 20
1361 write (iout,'(a,i3,a)') 'Pair',i,' contains unknown cystine.'
1367 ihpb(i)=ihpb(i)+nres
1368 jhpb(i)=jhpb(i)+nres
1374 c----------------------------------------------------------------------------
1375 subroutine read_x(kanal,*)
1376 implicit real*8 (a-h,o-z)
1377 include 'DIMENSIONS'
1378 include 'COMMON.GEO'
1379 include 'COMMON.VAR'
1380 include 'COMMON.CHAIN'
1381 include 'COMMON.IOUNITS'
1382 include 'COMMON.CONTROL'
1383 include 'COMMON.LOCAL'
1384 include 'COMMON.INTERACT'
1385 c Read coordinates from input
1387 read(kanal,'(8f10.5)',end=10,err=10)
1388 & ((c(l,k),l=1,3),k=1,nres),
1389 & ((c(l,k+nres),l=1,3),k=nnt,nct)
1392 c(j,2*nres)=c(j,nres)
1394 call int_from_cart1(.false.)
1397 dc(j,i)=c(j,i+1)-c(j,i)
1398 dc_norm(j,i)=dc(j,i)*vbld_inv(i+1)
1402 if (itype(i).ne.10) then
1404 dc(j,i+nres)=c(j,i+nres)-c(j,i)
1405 dc_norm(j,i+nres)=dc(j,i+nres)*vbld_inv(i+nres)
1413 c----------------------------------------------------------------------------
1414 subroutine read_threadbase
1415 implicit real*8 (a-h,o-z)
1416 include 'DIMENSIONS'
1417 include 'COMMON.IOUNITS'
1418 include 'COMMON.GEO'
1419 include 'COMMON.VAR'
1420 include 'COMMON.INTERACT'
1421 include 'COMMON.LOCAL'
1422 include 'COMMON.NAMES'
1423 include 'COMMON.CHAIN'
1424 include 'COMMON.FFIELD'
1425 include 'COMMON.SBRIDGE'
1426 include 'COMMON.HEADER'
1427 include 'COMMON.CONTROL'
1428 include 'COMMON.DBASE'
1429 include 'COMMON.THREAD'
1430 include 'COMMON.TIME1'
1431 C Read pattern database for threading.
1432 read (icbase,*) nseq
1434 read (icbase,'(i5,2x,a8,2i4)') nres_base(1,i),str_nam(i),
1435 & nres_base(2,i),nres_base(3,i)
1436 read (icbase,'(9f8.3)') ((cart_base(k,j,i),k=1,3),j=1,
1438 c write (iout,'(i5,2x,a8,2i4)') nres_base(1,i),str_nam(i),
1439 c & nres_base(2,i),nres_base(3,i)
1440 c write (iout,'(9f8.3)') ((cart_base(k,j,i),k=1,3),j=1,
1444 if (weidis.eq.0.0D0) weidis=0.1D0
1453 read (inp,*) nexcl,(iexam(1,i),iexam(2,i),i=1,nexcl)
1454 write (iout,'(a,i5)') 'nexcl: ',nexcl
1455 write (iout,'(2i5)') (iexam(1,i),iexam(2,i),i=1,nexcl)
1458 c------------------------------------------------------------------------------
1459 subroutine setup_var
1460 implicit real*8 (a-h,o-z)
1461 include 'DIMENSIONS'
1462 include 'COMMON.IOUNITS'
1463 include 'COMMON.GEO'
1464 include 'COMMON.VAR'
1465 include 'COMMON.INTERACT'
1466 include 'COMMON.LOCAL'
1467 include 'COMMON.NAMES'
1468 include 'COMMON.CHAIN'
1469 include 'COMMON.FFIELD'
1470 include 'COMMON.SBRIDGE'
1471 include 'COMMON.HEADER'
1472 include 'COMMON.CONTROL'
1473 include 'COMMON.DBASE'
1474 include 'COMMON.THREAD'
1475 include 'COMMON.TIME1'
1476 C Set up variable list.
1482 if (itype(i).ne.10) then
1484 ialph(i,1)=nvar+nside
1488 if (indphi.gt.0) then
1490 else if (indback.gt.0) then
1495 cd write (iout,'(3i4)') (i,ialph(i,1),ialph(i,2),i=2,nres-1)
1498 c----------------------------------------------------------------------------
1499 subroutine gen_dist_constr
1500 C Generate CA distance constraints.
1501 implicit real*8 (a-h,o-z)
1502 include 'DIMENSIONS'
1503 include 'COMMON.IOUNITS'
1504 include 'COMMON.GEO'
1505 include 'COMMON.VAR'
1506 include 'COMMON.INTERACT'
1507 include 'COMMON.LOCAL'
1508 include 'COMMON.NAMES'
1509 include 'COMMON.CHAIN'
1510 include 'COMMON.FFIELD'
1511 include 'COMMON.SBRIDGE'
1512 include 'COMMON.HEADER'
1513 include 'COMMON.CONTROL'
1514 include 'COMMON.DBASE'
1515 include 'COMMON.THREAD'
1516 include 'COMMON.TIME1'
1517 dimension itype_pdb(maxres)
1518 common /pizda/ itype_pdb
1520 cd print *,'gen_dist_constr: nnt=',nnt,' nct=',nct
1521 cd write (2,*) 'gen_dist_constr: nnt=',nnt,' nct=',nct,
1522 cd & ' nstart_sup',nstart_sup,' nstart_seq',nstart_seq,
1524 do i=nstart_sup,nstart_sup+nsup-1
1525 cd write (2,*) 'i',i,' seq ',restyp(itype(i+nstart_seq-nstart_sup)),
1526 cd & ' seq_pdb', restyp(itype_pdb(i))
1527 do j=i+2,nstart_sup+nsup-1
1529 ihpb(nhpb)=i+nstart_seq-nstart_sup
1530 jhpb(nhpb)=j+nstart_seq-nstart_sup
1532 dhpb(nhpb)=dist(i,j)
1535 cd write (iout,'(a)') 'Distance constraints:'
1540 cd if (ii.gt.nres) then
1545 cd write (iout,'(a,1x,a,i4,3x,a,1x,a,i4,2f10.3)')
1546 cd & restyp(itype(ii)),iden,ii,restyp(itype(jj)),iden,jj,
1547 cd & dhpb(i),forcon(i)
1551 c----------------------------------------------------------------------------
1553 implicit real*8 (a-h,o-z)
1554 include 'DIMENSIONS'
1555 include 'COMMON.MAP'
1556 include 'COMMON.IOUNITS'
1557 character*3 angid(4) /'THE','PHI','ALP','OME'/
1558 character*80 mapcard,ucase
1560 read (inp,'(a)') mapcard
1561 mapcard=ucase(mapcard)
1562 if (index(mapcard,'PHI').gt.0) then
1564 else if (index(mapcard,'THE').gt.0) then
1566 else if (index(mapcard,'ALP').gt.0) then
1568 else if (index(mapcard,'OME').gt.0) then
1571 write(iout,'(a)')'Error - illegal variable spec in MAP card.'
1572 stop 'Error - illegal variable spec in MAP card.'
1574 call readi (mapcard,'RES1',res1(imap),0)
1575 call readi (mapcard,'RES2',res2(imap),0)
1576 if (res1(imap).eq.0) then
1577 res1(imap)=res2(imap)
1578 else if (res2(imap).eq.0) then
1579 res2(imap)=res1(imap)
1581 if(res1(imap)*res2(imap).eq.0 .or. res1(imap).gt.res2(imap))then
1583 & 'Error - illegal definition of variable group in MAP.'
1584 stop 'Error - illegal definition of variable group in MAP.'
1586 call reada(mapcard,'FROM',ang_from(imap),0.0D0)
1587 call reada(mapcard,'TO',ang_to(imap),0.0D0)
1588 call readi(mapcard,'NSTEP',nstep(imap),0)
1589 if (ang_from(imap).eq.ang_to(imap) .or. nstep(imap).eq.0) then
1591 & 'Illegal boundary and/or step size specification in MAP.'
1592 stop 'Illegal boundary and/or step size specification in MAP.'
1597 c----------------------------------------------------------------------------
1598 csa subroutine csaread
1599 csa implicit real*8 (a-h,o-z)
1600 csa include 'DIMENSIONS'
1601 csa include 'COMMON.IOUNITS'
1602 csa include 'COMMON.GEO'
1603 csa include 'COMMON.CSA'
1604 csa include 'COMMON.BANK'
1605 csa include 'COMMON.CONTROL'
1606 csa character*80 ucase
1607 csa character*620 mcmcard
1608 csa call card_concat(mcmcard)
1610 csa call readi(mcmcard,'NCONF',nconf,50)
1611 csa call readi(mcmcard,'NADD',nadd,0)
1612 csa call readi(mcmcard,'JSTART',jstart,1)
1613 csa call readi(mcmcard,'JEND',jend,1)
1614 csa call readi(mcmcard,'NSTMAX',nstmax,500000)
1615 csa call readi(mcmcard,'N0',n0,1)
1616 csa call readi(mcmcard,'N1',n1,6)
1617 csa call readi(mcmcard,'N2',n2,4)
1618 csa call readi(mcmcard,'N3',n3,0)
1619 csa call readi(mcmcard,'N4',n4,0)
1620 csa call readi(mcmcard,'N5',n5,0)
1621 csa call readi(mcmcard,'N6',n6,10)
1622 csa call readi(mcmcard,'N7',n7,0)
1623 csa call readi(mcmcard,'N8',n8,0)
1624 csa call readi(mcmcard,'N9',n9,0)
1625 csa call readi(mcmcard,'N14',n14,0)
1626 csa call readi(mcmcard,'N15',n15,0)
1627 csa call readi(mcmcard,'N16',n16,0)
1628 csa call readi(mcmcard,'N17',n17,0)
1629 csa call readi(mcmcard,'N18',n18,0)
1631 csa vdisulf=(index(mcmcard,'DYNSS').gt.0)
1633 csa call readi(mcmcard,'NDIFF',ndiff,2)
1634 csa call reada(mcmcard,'DIFFCUT',diffcut,0.0d0)
1635 csa call readi(mcmcard,'IS1',is1,1)
1636 csa call readi(mcmcard,'IS2',is2,8)
1637 csa call readi(mcmcard,'NRAN0',nran0,4)
1638 csa call readi(mcmcard,'NRAN1',nran1,2)
1639 csa call readi(mcmcard,'IRR',irr,1)
1640 csa call readi(mcmcard,'NSEED',nseed,20)
1641 csa call readi(mcmcard,'NTOTAL',ntotal,10000)
1642 csa call reada(mcmcard,'CUT1',cut1,2.0d0)
1643 csa call reada(mcmcard,'CUT2',cut2,5.0d0)
1644 csa call reada(mcmcard,'ESTOP',estop,-3000.0d0)
1645 csa call readi(mcmcard,'ICMAX',icmax,3)
1646 csa call readi(mcmcard,'IRESTART',irestart,0)
1647 csac!bankt call readi(mcmcard,'NBANKTM',ntbankm,0)
1650 csa call reada(mcmcard,'DELE',dele,20.0d0)
1651 csa call reada(mcmcard,'DIFCUT',difcut,720.0d0)
1652 csa call readi(mcmcard,'IREF',iref,0)
1653 csa call reada(mcmcard,'RMSCUT',rmscut,4.0d0)
1654 csa call reada(mcmcard,'PNCCUT',pnccut,0.5d0)
1655 csa call readi(mcmcard,'NCONF_IN',nconf_in,0)
1656 csa call reada(mcmcard,'RDIH_BIAS',rdih_bias,0.5d0)
1657 csa write (iout,*) "NCONF_IN",nconf_in
1660 c----------------------------------------------------------------------------
1661 cfmc subroutine mcmfread
1662 cfmc implicit real*8 (a-h,o-z)
1663 cfmc include 'DIMENSIONS'
1664 cfmc include 'COMMON.MCMF'
1665 cfmc include 'COMMON.IOUNITS'
1666 cfmc include 'COMMON.GEO'
1667 cfmc character*80 ucase
1668 cfmc character*620 mcmcard
1669 cfmc call card_concat(mcmcard)
1671 cfmc call readi(mcmcard,'MAXRANT',maxrant,1000)
1672 cfmc write(iout,*)'MAXRANT=',maxrant
1673 cfmc call readi(mcmcard,'MAXFAM',maxfam,maxfam_p)
1674 cfmc write(iout,*)'MAXFAM=',maxfam
1675 cfmc call readi(mcmcard,'NNET1',nnet1,5)
1676 cfmc write(iout,*)'NNET1=',nnet1
1677 cfmc call readi(mcmcard,'NNET2',nnet2,4)
1678 cfmc write(iout,*)'NNET2=',nnet2
1679 cfmc call readi(mcmcard,'NNET3',nnet3,4)
1680 cfmc write(iout,*)'NNET3=',nnet3
1681 cfmc call readi(mcmcard,'ILASTT',ilastt,0)
1682 cfmc write(iout,*)'ILASTT=',ilastt
1683 cfmc call readi(mcmcard,'MAXSTR',maxstr,maxstr_mcmf)
1684 cfmc write(iout,*)'MAXSTR=',maxstr
1685 cfmc maxstr_f=maxstr/maxfam
1686 cfmc write(iout,*)'MAXSTR_F=',maxstr_f
1687 cfmc call readi(mcmcard,'NMCMF',nmcmf,10)
1688 cfmc write(iout,*)'NMCMF=',nmcmf
1689 cfmc call readi(mcmcard,'IFOCUS',ifocus,nmcmf)
1690 cfmc write(iout,*)'IFOCUS=',ifocus
1691 cfmc call readi(mcmcard,'NLOCMCMF',nlocmcmf,1000)
1692 cfmc write(iout,*)'NLOCMCMF=',nlocmcmf
1693 cfmc call readi(mcmcard,'INTPRT',intprt,1000)
1694 cfmc write(iout,*)'INTPRT=',intprt
1695 cfmc call readi(mcmcard,'IPRT',iprt,100)
1696 cfmc write(iout,*)'IPRT=',iprt
1697 cfmc call readi(mcmcard,'IMAXTR',imaxtr,100)
1698 cfmc write(iout,*)'IMAXTR=',imaxtr
1699 cfmc call readi(mcmcard,'MAXEVEN',maxeven,1000)
1700 cfmc write(iout,*)'MAXEVEN=',maxeven
1701 cfmc call readi(mcmcard,'MAXEVEN1',maxeven1,3)
1702 cfmc write(iout,*)'MAXEVEN1=',maxeven1
1703 cfmc call readi(mcmcard,'INIMIN',inimin,200)
1704 cfmc write(iout,*)'INIMIN=',inimin
1705 cfmc call readi(mcmcard,'NSTEPMCMF',nstepmcmf,10)
1706 cfmc write(iout,*)'NSTEPMCMF=',nstepmcmf
1707 cfmc call readi(mcmcard,'NTHREAD',nthread,5)
1708 cfmc write(iout,*)'NTHREAD=',nthread
1709 cfmc call readi(mcmcard,'MAXSTEPMCMF',maxstepmcmf,2500)
1710 cfmc write(iout,*)'MAXSTEPMCMF=',maxstepmcmf
1711 cfmc call readi(mcmcard,'MAXPERT',maxpert,9)
1712 cfmc write(iout,*)'MAXPERT=',maxpert
1713 cfmc call readi(mcmcard,'IRMSD',irmsd,1)
1714 cfmc write(iout,*)'IRMSD=',irmsd
1715 cfmc call reada(mcmcard,'DENEMIN',denemin,0.01D0)
1716 cfmc write(iout,*)'DENEMIN=',denemin
1717 cfmc call reada(mcmcard,'RCUT1S',rcut1s,3.5D0)
1718 cfmc write(iout,*)'RCUT1S=',rcut1s
1719 cfmc call reada(mcmcard,'RCUT1E',rcut1e,2.0D0)
1720 cfmc write(iout,*)'RCUT1E=',rcut1e
1721 cfmc call reada(mcmcard,'RCUT2S',rcut2s,0.5D0)
1722 cfmc write(iout,*)'RCUT2S=',rcut2s
1723 cfmc call reada(mcmcard,'RCUT2E',rcut2e,0.1D0)
1724 cfmc write(iout,*)'RCUT2E=',rcut2e
1725 cfmc call reada(mcmcard,'DPERT1',d_pert1,180.0D0)
1726 cfmc write(iout,*)'DPERT1=',d_pert1
1727 cfmc call reada(mcmcard,'DPERT1A',d_pert1a,180.0D0)
1728 cfmc write(iout,*)'DPERT1A=',d_pert1a
1729 cfmc call reada(mcmcard,'DPERT2',d_pert2,90.0D0)
1730 cfmc write(iout,*)'DPERT2=',d_pert2
1731 cfmc call reada(mcmcard,'DPERT2A',d_pert2a,45.0D0)
1732 cfmc write(iout,*)'DPERT2A=',d_pert2a
1733 cfmc call reada(mcmcard,'DPERT2B',d_pert2b,90.0D0)
1734 cfmc write(iout,*)'DPERT2B=',d_pert2b
1735 cfmc call reada(mcmcard,'DPERT2C',d_pert2c,60.0D0)
1736 cfmc write(iout,*)'DPERT2C=',d_pert2c
1737 cfmc d_pert1=deg2rad*d_pert1
1738 cfmc d_pert1a=deg2rad*d_pert1a
1739 cfmc d_pert2=deg2rad*d_pert2
1740 cfmc d_pert2a=deg2rad*d_pert2a
1741 cfmc d_pert2b=deg2rad*d_pert2b
1742 cfmc d_pert2c=deg2rad*d_pert2c
1743 cfmc call reada(mcmcard,'KT_MCMF1',kt_mcmf1,1.0D0)
1744 cfmc write(iout,*)'KT_MCMF1=',kt_mcmf1
1745 cfmc call reada(mcmcard,'KT_MCMF2',kt_mcmf2,1.0D0)
1746 cfmc write(iout,*)'KT_MCMF2=',kt_mcmf2
1747 cfmc call reada(mcmcard,'DKT_MCMF1',dkt_mcmf1,10.0D0)
1748 cfmc write(iout,*)'DKT_MCMF1=',dkt_mcmf1
1749 cfmc call reada(mcmcard,'DKT_MCMF2',dkt_mcmf2,1.0D0)
1750 cfmc write(iout,*)'DKT_MCMF2=',dkt_mcmf2
1751 cfmc call reada(mcmcard,'RCUTINI',rcutini,3.5D0)
1752 cfmc write(iout,*)'RCUTINI=',rcutini
1753 cfmc call reada(mcmcard,'GRAT',grat,0.5D0)
1754 cfmc write(iout,*)'GRAT=',grat
1755 cfmc call reada(mcmcard,'BIAS_MCMF',bias_mcmf,0.0D0)
1756 cfmc write(iout,*)'BIAS_MCMF=',bias_mcmf
1760 c----------------------------------------------------------------------------
1762 implicit real*8 (a-h,o-z)
1763 include 'DIMENSIONS'
1764 include 'COMMON.MCM'
1765 include 'COMMON.MCE'
1766 include 'COMMON.IOUNITS'
1768 character*320 mcmcard
1769 call card_concat(mcmcard)
1770 call readi(mcmcard,'MAXACC',maxacc,100)
1771 call readi(mcmcard,'MAX_MCM_IT',max_mcm_it,10000)
1772 call readi(mcmcard,'MAXTRIAL',maxtrial,100)
1773 call readi(mcmcard,'MAXTRIAL_ITER',maxtrial_iter,1000)
1774 call readi(mcmcard,'MAXREPM',maxrepm,200)
1775 call reada(mcmcard,'RANFRACT',RanFract,0.5D0)
1776 call reada(mcmcard,'POOL_FRACT',pool_fraction,0.01D0)
1777 call reada(mcmcard,'OVERLAP',overlap_cut,1.0D3)
1778 call reada(mcmcard,'E_UP',e_up,5.0D0)
1779 call reada(mcmcard,'DELTE',delte,0.1D0)
1780 call readi(mcmcard,'NSWEEP',nsweep,5)
1781 call readi(mcmcard,'NSTEPH',nsteph,0)
1782 call readi(mcmcard,'NSTEPC',nstepc,0)
1783 call reada(mcmcard,'TMIN',tmin,298.0D0)
1784 call reada(mcmcard,'TMAX',tmax,298.0D0)
1785 call readi(mcmcard,'NWINDOW',nwindow,0)
1786 call readi(mcmcard,'PRINT_MC',print_mc,0)
1787 print_stat=(index(mcmcard,'NO_PRINT_STAT').le.0)
1788 print_int=(index(mcmcard,'NO_PRINT_INT').le.0)
1789 ent_read=(index(mcmcard,'ENT_READ').gt.0)
1790 call readi(mcmcard,'SAVE_FREQ',save_frequency,1000)
1791 call readi(mcmcard,'MESSAGE_FREQ',message_frequency,1000)
1792 call readi(mcmcard,'POOL_READ_FREQ',pool_read_freq,5000)
1793 call readi(mcmcard,'POOL_SAVE_FREQ',pool_save_freq,1000)
1794 call readi(mcmcard,'PRINT_FREQ',print_freq,1000)
1795 if (nwindow.gt.0) then
1796 read (inp,*) (winstart(i),winend(i),i=1,nwindow)
1798 winlen(i)=winend(i)-winstart(i)+1
1801 if (tmax.lt.tmin) tmax=tmin
1802 if (tmax.eq.tmin) then
1806 if (nstepc.gt.0 .and. nsteph.gt.0) then
1807 tsteph=(tmax/tmin)**(1.0D0/(nsteph+0.0D0))
1808 tstepc=(tmax/tmin)**(1.0D0/(nstepc+0.0D0))
1810 C Probabilities of different move types
1811 sumpro_type(0)=0.0D0
1812 call reada(mcmcard,'MULTI_BOND',sumpro_type(1),1.0d0)
1813 call reada(mcmcard,'ONE_ANGLE' ,sumpro_type(2),2.0d0)
1814 sumpro_type(2)=sumpro_type(1)+sumpro_type(2)
1815 call reada(mcmcard,'THETA' ,sumpro_type(3),0.0d0)
1816 sumpro_type(3)=sumpro_type(2)+sumpro_type(3)
1817 call reada(mcmcard,'SIDE_CHAIN',sumpro_type(4),0.5d0)
1818 sumpro_type(4)=sumpro_type(3)+sumpro_type(4)
1820 print *,'i',i,' sumprotype',sumpro_type(i)
1821 sumpro_type(i)=sumpro_type(i)/sumpro_type(MaxMoveType)
1822 print *,'i',i,' sumprotype',sumpro_type(i)
1826 c----------------------------------------------------------------------------
1827 subroutine read_minim
1828 implicit real*8 (a-h,o-z)
1829 include 'DIMENSIONS'
1830 include 'COMMON.MINIM'
1831 include 'COMMON.IOUNITS'
1833 character*320 minimcard
1834 call card_concat(minimcard)
1835 call readi(minimcard,'MAXMIN',maxmin,2000)
1836 call readi(minimcard,'MAXFUN',maxfun,5000)
1837 call readi(minimcard,'MINMIN',minmin,maxmin)
1838 call readi(minimcard,'MINFUN',minfun,maxmin)
1839 call reada(minimcard,'TOLF',tolf,1.0D-2)
1840 call reada(minimcard,'RTOLF',rtolf,1.0D-4)
1841 print_min_stat=min0(index(minimcard,'PRINT_MIN_STAT'),1)
1842 print_min_res=min0(index(minimcard,'PRINT_MIN_RES'),1)
1843 print_min_ini=min0(index(minimcard,'PRINT_MIN_INI'),1)
1844 write (iout,'(/80(1h*)/20x,a/80(1h*))')
1845 & 'Options in energy minimization:'
1846 write (iout,'(4(a,i5),a,1pe14.5,a,1pe14.5)')
1847 & 'MaxMin:',MaxMin,' MaxFun:',MaxFun,
1848 & 'MinMin:',MinMin,' MinFun:',MinFun,
1849 & ' TolF:',TolF,' RTolF:',RTolF
1852 c----------------------------------------------------------------------------
1853 subroutine read_angles(kanal,*)
1854 implicit real*8 (a-h,o-z)
1855 include 'DIMENSIONS'
1856 include 'COMMON.GEO'
1857 include 'COMMON.VAR'
1858 include 'COMMON.CHAIN'
1859 include 'COMMON.IOUNITS'
1860 include 'COMMON.CONTROL'
1861 c Read angles from input
1863 read (kanal,*,err=10,end=10) (theta(i),i=3,nres)
1864 read (kanal,*,err=10,end=10) (phi(i),i=4,nres)
1865 read (kanal,*,err=10,end=10) (alph(i),i=2,nres-1)
1866 read (kanal,*,err=10,end=10) (omeg(i),i=2,nres-1)
1869 c 9/7/01 avoid 180 deg valence angle
1870 if (theta(i).gt.179.99d0) theta(i)=179.99d0
1872 theta(i)=deg2rad*theta(i)
1873 phi(i)=deg2rad*phi(i)
1874 alph(i)=deg2rad*alph(i)
1875 omeg(i)=deg2rad*omeg(i)
1880 c----------------------------------------------------------------------------
1881 subroutine reada(rekord,lancuch,wartosc,default)
1883 character*(*) rekord,lancuch
1884 double precision wartosc,default
1887 iread=index(rekord,lancuch)
1888 if (iread.eq.0) then
1892 iread=iread+ilen(lancuch)+1
1893 read (rekord(iread:),*,err=10,end=10) wartosc
1898 c----------------------------------------------------------------------------
1899 subroutine readi(rekord,lancuch,wartosc,default)
1901 character*(*) rekord,lancuch
1902 integer wartosc,default
1905 iread=index(rekord,lancuch)
1906 if (iread.eq.0) then
1910 iread=iread+ilen(lancuch)+1
1911 read (rekord(iread:),*,err=10,end=10) wartosc
1916 c----------------------------------------------------------------------------
1917 subroutine multreadi(rekord,lancuch,tablica,dim,default)
1920 integer tablica(dim),default
1921 character*(*) rekord,lancuch
1928 iread=index(rekord,lancuch(:ilen(lancuch))//"=")
1929 if (iread.eq.0) return
1930 iread=iread+ilen(lancuch)+1
1931 read (rekord(iread:),*,end=10,err=10) (tablica(i),i=1,dim)
1934 c----------------------------------------------------------------------------
1935 subroutine multreada(rekord,lancuch,tablica,dim,default)
1938 double precision tablica(dim),default
1939 character*(*) rekord,lancuch
1946 iread=index(rekord,lancuch(:ilen(lancuch))//"=")
1947 if (iread.eq.0) return
1948 iread=iread+ilen(lancuch)+1
1949 read (rekord(iread:),*,end=10,err=10) (tablica(i),i=1,dim)
1952 c----------------------------------------------------------------------------
1953 subroutine openunits
1954 implicit real*8 (a-h,o-z)
1955 include 'DIMENSIONS'
1958 character*16 form,nodename
1961 include 'COMMON.SETUP'
1962 include 'COMMON.IOUNITS'
1964 include 'COMMON.CONTROL'
1965 integer lenpre,lenpot,ilen,lentmp
1967 character*3 out1file_text,ucase
1970 c print *,"Processor",myrank,"fg_rank",fg_rank," entered openunits"
1971 call getenv_loc("PREFIX",prefix)
1973 call getenv_loc("POT",pot)
1974 call getenv_loc("DIRTMP",tmpdir)
1975 call getenv_loc("CURDIR",curdir)
1976 call getenv_loc("OUT1FILE",out1file_text)
1977 c print *,"Processor",myrank,"fg_rank",fg_rank," did GETENV"
1978 out1file_text=ucase(out1file_text)
1979 if (out1file_text(1:1).eq."Y") then
1982 out1file=fg_rank.gt.0
1987 if (lentmp.gt.0) then
1988 write (*,'(80(1h!))')
1989 write (*,'(a,19x,a,19x,a)') "!"," A T T E N T I O N ","!"
1990 write (*,'(80(1h!))')
1991 write (*,*)"All output files will be on node /tmp directory."
1993 call MPI_GET_PROCESSOR_NAME( nodename, nodelen, IERROR )
1994 if (me.eq.king) then
1995 write (*,*) "The master node is ",nodename
1996 else if (fg_rank.eq.0) then
1997 write (*,*) "I am the CG slave node ",nodename
1999 write (*,*) "I am the FG slave node ",nodename
2002 PREFIX = tmpdir(:lentmp)//'/'//prefix(:lenpre)
2003 lenpre = lentmp+lenpre+1
2005 entname=prefix(:lenpre)//'_'//pot(:lenpot)//'.entr'
2006 C Get the names and open the input files
2007 #if defined(WINIFL) || defined(WINPGI)
2008 open(1,file=pref_orig(:ilen(pref_orig))//
2009 & '.inp',status='old',readonly,shared)
2010 open (9,file=prefix(:ilen(prefix))//'.intin',status='unknown')
2011 C open (18,file=prefix(:ilen(prefix))//'.entin',status='unknown')
2012 C Get parameter filenames and open the parameter files.
2013 call getenv_loc('BONDPAR',bondname)
2014 open (ibond,file=bondname,status='old',readonly,shared)
2015 call getenv_loc('THETPAR',thetname)
2016 open (ithep,file=thetname,status='old',readonly,shared)
2018 call getenv_loc('THETPARPDB',thetname_pdb)
2019 open (ithep_pdb,file=thetname_pdb,status='old',readonly,shared)
2021 call getenv_loc('ROTPAR',rotname)
2022 open (irotam,file=rotname,status='old',readonly,shared)
2024 call getenv_loc('ROTPARPDB',rotname_pdb)
2025 open (irotam_pdb,file=rotname_pdb,status='old',readonly,shared)
2027 call getenv_loc('TORPAR',torname)
2028 open (itorp,file=torname,status='old',readonly,shared)
2029 call getenv_loc('TORDPAR',tordname)
2030 open (itordp,file=tordname,status='old',readonly,shared)
2031 call getenv_loc('FOURIER',fouriername)
2032 open (ifourier,file=fouriername,status='old',readonly,shared)
2033 call getenv_loc('ELEPAR',elename)
2034 open (ielep,file=elename,status='old',readonly,shared)
2035 call getenv_loc('SIDEPAR',sidename)
2036 open (isidep,file=sidename,status='old',readonly,shared)
2037 #elif (defined CRAY) || (defined AIX)
2038 open(1,file=pref_orig(:ilen(pref_orig))//'.inp',status='old',
2040 c print *,"Processor",myrank," opened file 1"
2041 open (9,file=prefix(:ilen(prefix))//'.intin',status='unknown')
2042 c print *,"Processor",myrank," opened file 9"
2043 C open (18,file=prefix(:ilen(prefix))//'.entin',status='unknown')
2044 C Get parameter filenames and open the parameter files.
2045 call getenv_loc('BONDPAR',bondname)
2046 open (ibond,file=bondname,status='old',action='read')
2047 c print *,"Processor",myrank," opened file IBOND"
2048 call getenv_loc('THETPAR',thetname)
2049 open (ithep,file=thetname,status='old',action='read')
2050 c print *,"Processor",myrank," opened file ITHEP"
2052 call getenv_loc('THETPARPDB',thetname_pdb)
2053 open (ithep_pdb,file=thetname_pdb,status='old',action='read')
2055 call getenv_loc('ROTPAR',rotname)
2056 open (irotam,file=rotname,status='old',action='read')
2057 c print *,"Processor",myrank," opened file IROTAM"
2059 call getenv_loc('ROTPARPDB',rotname_pdb)
2060 open (irotam_pdb,file=rotname_pdb,status='old',action='read')
2062 call getenv_loc('TORPAR',torname)
2063 open (itorp,file=torname,status='old',action='read')
2064 c print *,"Processor",myrank," opened file ITORP"
2065 call getenv_loc('TORDPAR',tordname)
2066 open (itordp,file=tordname,status='old',action='read')
2067 c print *,"Processor",myrank," opened file ITORDP"
2068 call getenv_loc('SCCORPAR',sccorname)
2069 open (isccor,file=sccorname,status='old',action='read')
2070 c print *,"Processor",myrank," opened file ISCCOR"
2071 call getenv_loc('FOURIER',fouriername)
2072 open (ifourier,file=fouriername,status='old',action='read')
2073 c print *,"Processor",myrank," opened file IFOURIER"
2074 call getenv_loc('ELEPAR',elename)
2075 open (ielep,file=elename,status='old',action='read')
2076 c print *,"Processor",myrank," opened file IELEP"
2077 call getenv_loc('SIDEPAR',sidename)
2078 open (isidep,file=sidename,status='old',action='read')
2079 c print *,"Processor",myrank," opened file ISIDEP"
2080 c print *,"Processor",myrank," opened parameter files"
2082 open(1,file=pref_orig(:ilen(pref_orig))//'.inp',status='old')
2083 open (9,file=prefix(:ilen(prefix))//'.intin',status='unknown')
2084 C open (18,file=prefix(:ilen(prefix))//'.entin',status='unknown')
2085 C Get parameter filenames and open the parameter files.
2086 call getenv_loc('BONDPAR',bondname)
2087 open (ibond,file=bondname,status='old')
2088 call getenv_loc('THETPAR',thetname)
2089 open (ithep,file=thetname,status='old')
2091 call getenv_loc('THETPARPDB',thetname_pdb)
2092 open (ithep_pdb,file=thetname_pdb,status='old')
2094 call getenv_loc('ROTPAR',rotname)
2095 open (irotam,file=rotname,status='old')
2097 call getenv_loc('ROTPARPDB',rotname_pdb)
2098 open (irotam_pdb,file=rotname_pdb,status='old')
2100 call getenv_loc('TORPAR',torname)
2101 open (itorp,file=torname,status='old')
2102 call getenv_loc('TORDPAR',tordname)
2103 open (itordp,file=tordname,status='old')
2104 call getenv_loc('SCCORPAR',sccorname)
2105 open (isccor,file=sccorname,status='old')
2106 call getenv_loc('FOURIER',fouriername)
2107 open (ifourier,file=fouriername,status='old')
2108 call getenv_loc('ELEPAR',elename)
2109 open (ielep,file=elename,status='old')
2110 call getenv_loc('SIDEPAR',sidename)
2111 open (isidep,file=sidename,status='old')
2113 open(1,file=pref_orig(:ilen(pref_orig))//'.inp',status='old',
2115 open (9,file=prefix(:ilen(prefix))//'.intin',status='unknown')
2116 C open (18,file=prefix(:ilen(prefix))//'.entin',status='unknown')
2117 C Get parameter filenames and open the parameter files.
2118 call getenv_loc('BONDPAR',bondname)
2119 open (ibond,file=bondname,status='old',action='read')
2120 call getenv_loc('THETPAR',thetname)
2121 open (ithep,file=thetname,status='old',action='read')
2123 call getenv_loc('THETPARPDB',thetname_pdb)
2124 print *,"thetname_pdb ",thetname_pdb
2125 open (ithep_pdb,file=thetname_pdb,status='old',action='read')
2126 print *,ithep_pdb," opened"
2128 call getenv_loc('ROTPAR',rotname)
2129 open (irotam,file=rotname,status='old',action='read')
2131 call getenv_loc('ROTPARPDB',rotname_pdb)
2132 open (irotam_pdb,file=rotname_pdb,status='old',action='read')
2134 call getenv_loc('TORPAR',torname)
2135 open (itorp,file=torname,status='old',action='read')
2136 call getenv_loc('TORDPAR',tordname)
2137 open (itordp,file=tordname,status='old',action='read')
2138 call getenv_loc('SCCORPAR',sccorname)
2139 open (isccor,file=sccorname,status='old',action='read')
2140 call getenv_loc('FOURIER',fouriername)
2141 open (ifourier,file=fouriername,status='old',action='read')
2142 call getenv_loc('ELEPAR',elename)
2143 open (ielep,file=elename,status='old',action='read')
2144 call getenv_loc('SIDEPAR',sidename)
2145 open (isidep,file=sidename,status='old',action='read')
2149 C 8/9/01 In the newest version SCp interaction constants are read from a file
2150 C Use -DOLDSCP to use hard-coded constants instead.
2152 call getenv_loc('SCPPAR',scpname)
2153 #if defined(WINIFL) || defined(WINPGI)
2154 open (iscpp,file=scpname,status='old',readonly,shared)
2155 #elif (defined CRAY) || (defined AIX)
2156 open (iscpp,file=scpname,status='old',action='read')
2158 open (iscpp,file=scpname,status='old')
2160 open (iscpp,file=scpname,status='old',action='read')
2163 call getenv_loc('PATTERN',patname)
2164 #if defined(WINIFL) || defined(WINPGI)
2165 open (icbase,file=patname,status='old',readonly,shared)
2166 #elif (defined CRAY) || (defined AIX)
2167 open (icbase,file=patname,status='old',action='read')
2169 open (icbase,file=patname,status='old')
2171 open (icbase,file=patname,status='old',action='read')
2174 C Open output file only for CG processes
2175 c print *,"Processor",myrank," fg_rank",fg_rank
2176 if (fg_rank.eq.0) then
2178 if (nodes.eq.1) then
2181 npos = dlog10(dfloat(nodes-1))+1
2183 if (npos.lt.3) npos=3
2184 write (liczba,'(i1)') npos
2185 form = '(bz,i'//liczba(:ilen(liczba))//'.'//liczba(:ilen(liczba))
2187 write (liczba,form) me
2188 outname=prefix(:lenpre)//'.out_'//pot(:lenpot)//
2189 & liczba(:ilen(liczba))
2190 intname=prefix(:lenpre)//'_'//pot(:lenpot)//liczba(:ilen(liczba))
2192 pdbname=prefix(:lenpre)//'_'//pot(:lenpot)//liczba(:ilen(liczba))
2194 mol2name=prefix(:lenpre)//'_'//pot(:lenpot)//
2195 & liczba(:ilen(liczba))//'.mol2'
2196 statname=prefix(:lenpre)//'_'//pot(:lenpot)//
2197 & liczba(:ilen(liczba))//'.stat'
2199 & call copy_to_tmp(pref_orig(:ilen(pref_orig))//'_'//pot(:lenpot)
2200 & //liczba(:ilen(liczba))//'.stat')
2201 rest2name=prefix(:ilen(prefix))//"_"//liczba(:ilen(liczba))
2204 qname=prefix(:lenpre)//'_'//pot(:lenpot)//
2205 & liczba(:ilen(liczba))//'.const'
2210 outname=prefix(:lenpre)//'.out_'//pot(:lenpot)
2211 intname=prefix(:lenpre)//'_'//pot(:lenpot)//'.int'
2212 pdbname=prefix(:lenpre)//'_'//pot(:lenpot)//'.pdb'
2213 mol2name=prefix(:lenpre)//'_'//pot(:lenpot)//'.mol2'
2214 statname=prefix(:lenpre)//'_'//pot(:lenpot)//'.stat'
2216 & call copy_to_tmp(pref_orig(:ilen(pref_orig))//'_'//pot(:lenpot)
2218 rest2name=prefix(:ilen(prefix))//'.rst'
2220 qname=prefix(:lenpre)//'_'//pot(:lenpot)//'.const'
2223 #if defined(AIX) || defined(PGI)
2224 if (me.eq.king .or. .not. out1file)
2225 & open(iout,file=outname,status='unknown')
2228 if (fg_rank.gt.0) then
2229 write (liczba,'(i3.3)') myrank/nfgtasks
2230 write (ll,'(bz,i3.3)') fg_rank
2231 open(iout,file="debug"//liczba(:ilen(liczba))//"."//ll,
2237 open(igeom,file=intname,status='unknown',position='append')
2238 open(ipdb,file=pdbname,status='unknown')
2239 open(imol2,file=mol2name,status='unknown')
2240 open(istat,file=statname,status='unknown',position='append')
2242 c1out open(iout,file=outname,status='unknown')
2245 if (me.eq.king .or. .not.out1file)
2246 & open(iout,file=outname,status='unknown')
2249 if (fg_rank.gt.0) then
2250 print "Processor",fg_rank," opening output file"
2251 write (liczba,'(i3.3)') myrank/nfgtasks
2252 write (ll,'(bz,i3.3)') fg_rank
2253 open(iout,file="debug"//liczba(:ilen(liczba))//"."//ll,
2259 open(igeom,file=intname,status='unknown',access='append')
2260 open(ipdb,file=pdbname,status='unknown')
2261 open(imol2,file=mol2name,status='unknown')
2262 open(istat,file=statname,status='unknown',access='append')
2264 c1out open(iout,file=outname,status='unknown')
2267 csa csa_rbank=prefix(:lenpre)//'.CSA.rbank'
2268 csa csa_seed=prefix(:lenpre)//'.CSA.seed'
2269 csa csa_history=prefix(:lenpre)//'.CSA.history'
2270 csa csa_bank=prefix(:lenpre)//'.CSA.bank'
2271 csa csa_bank1=prefix(:lenpre)//'.CSA.bank1'
2272 csa csa_alpha=prefix(:lenpre)//'.CSA.alpha'
2273 csa csa_alpha1=prefix(:lenpre)//'.CSA.alpha1'
2274 csac!bankt csa_bankt=prefix(:lenpre)//'.CSA.bankt'
2275 csa csa_int=prefix(:lenpre)//'.int'
2276 csa csa_bank_reminimized=prefix(:lenpre)//'.CSA.bank_reminimized'
2277 csa csa_native_int=prefix(:lenpre)//'.CSA.native.int'
2278 csa csa_in=prefix(:lenpre)//'.CSA.in'
2279 c print *,"Processor",myrank,"fg_rank",fg_rank," opened files"
2282 write (iout,'(80(1h-))')
2283 write (iout,'(30x,a)') "FILE ASSIGNMENT"
2284 write (iout,'(80(1h-))')
2285 write (iout,*) "Input file : ",
2286 & pref_orig(:ilen(pref_orig))//'.inp'
2287 write (iout,*) "Output file : ",
2288 & outname(:ilen(outname))
2290 write (iout,*) "Sidechain potential file : ",
2291 & sidename(:ilen(sidename))
2293 write (iout,*) "SCp potential file : ",
2294 & scpname(:ilen(scpname))
2296 write (iout,*) "Electrostatic potential file : ",
2297 & elename(:ilen(elename))
2298 write (iout,*) "Cumulant coefficient file : ",
2299 & fouriername(:ilen(fouriername))
2300 write (iout,*) "Torsional parameter file : ",
2301 & torname(:ilen(torname))
2302 write (iout,*) "Double torsional parameter file : ",
2303 & tordname(:ilen(tordname))
2304 write (iout,*) "SCCOR parameter file : ",
2305 & sccorname(:ilen(sccorname))
2306 write (iout,*) "Bond & inertia constant file : ",
2307 & bondname(:ilen(bondname))
2308 write (iout,*) "Bending parameter file : ",
2309 & thetname(:ilen(thetname))
2310 write (iout,*) "Rotamer parameter file : ",
2311 & rotname(:ilen(rotname))
2312 write (iout,*) "Threading database : ",
2313 & patname(:ilen(patname))
2315 &write (iout,*)" DIRTMP : ",
2317 write (iout,'(80(1h-))')
2321 c----------------------------------------------------------------------------
2322 subroutine card_concat(card)
2323 implicit real*8 (a-h,o-z)
2324 include 'DIMENSIONS'
2325 include 'COMMON.IOUNITS'
2327 character*80 karta,ucase
2329 read (inp,'(a)') karta
2332 do while (karta(80:80).eq.'&')
2333 card=card(:ilen(card)+1)//karta(:79)
2334 read (inp,'(a)') karta
2337 card=card(:ilen(card)+1)//karta
2340 c----------------------------------------------------------------------------------
2342 implicit real*8 (a-h,o-z)
2343 include 'DIMENSIONS'
2344 include 'COMMON.CHAIN'
2345 include 'COMMON.IOUNITS'
2347 open(irest2,file=rest2name,status='unknown')
2348 read(irest2,*) totT,EK,potE,totE,t_bath
2350 read(irest2,'(3e15.5)') (d_t(j,i),j=1,3)
2353 read(irest2,'(3e15.5)') (dc(j,i),j=1,3)
2356 read (irest2,*) iset
2361 c---------------------------------------------------------------------------------
2362 subroutine read_fragments
2363 implicit real*8 (a-h,o-z)
2364 include 'DIMENSIONS'
2368 include 'COMMON.SETUP'
2369 include 'COMMON.CHAIN'
2370 include 'COMMON.IOUNITS'
2372 include 'COMMON.CONTROL'
2373 read(inp,*) nset,nfrag,npair,nfrag_back
2374 if(me.eq.king.or..not.out1file)
2375 & write(iout,*) "nset",nset," nfrag",nfrag," npair",npair,
2376 & " nfrag_back",nfrag_back
2378 read(inp,*) mset(iset)
2380 read(inp,*) wfrag(i,iset),ifrag(1,i,iset),ifrag(2,i,iset),
2382 if(me.eq.king.or..not.out1file)
2383 & write(iout,*) "R ",i,wfrag(i,iset),ifrag(1,i,iset),
2384 & ifrag(2,i,iset), qinfrag(i,iset)
2387 read(inp,*) wpair(i,iset),ipair(1,i,iset),ipair(2,i,iset),
2389 if(me.eq.king.or..not.out1file)
2390 & write(iout,*) "R ",i,wpair(i,iset),ipair(1,i,iset),
2391 & ipair(2,i,iset), qinpair(i,iset)
2394 read(inp,*) wfrag_back(1,i,iset),wfrag_back(2,i,iset),
2395 & wfrag_back(3,i,iset),
2396 & ifrag_back(1,i,iset),ifrag_back(2,i,iset)
2397 if(me.eq.king.or..not.out1file)
2398 & write(iout,*) "A",i,wfrag_back(1,i,iset),wfrag_back(2,i,iset),
2399 & wfrag_back(3,i,iset),ifrag_back(1,i,iset),ifrag_back(2,i,iset)
2404 c-------------------------------------------------------------------------------
2405 subroutine read_dist_constr
2406 implicit real*8 (a-h,o-z)
2407 include 'DIMENSIONS'
2411 include 'COMMON.SETUP'
2412 include 'COMMON.CONTROL'
2413 include 'COMMON.CHAIN'
2414 include 'COMMON.IOUNITS'
2415 include 'COMMON.SBRIDGE'
2416 integer ifrag_(2,100),ipair_(2,100)
2417 double precision wfrag_(100),wpair_(100)
2418 character*500 controlcard
2419 c write (iout,*) "Calling read_dist_constr"
2420 c write (iout,*) "nres",nres," nstart_sup",nstart_sup," nsup",nsup
2422 call card_concat(controlcard)
2423 call readi(controlcard,"NFRAG",nfrag_,0)
2424 call readi(controlcard,"NPAIR",npair_,0)
2425 call readi(controlcard,"NDIST",ndist_,0)
2426 call reada(controlcard,'DIST_CUT',dist_cut,5.0d0)
2427 call multreadi(controlcard,"IFRAG",ifrag_(1,1),2*nfrag_,0)
2428 call multreadi(controlcard,"IPAIR",ipair_(1,1),2*npair_,0)
2429 call multreada(controlcard,"WFRAG",wfrag_(1),nfrag_,0.0d0)
2430 call multreada(controlcard,"WPAIR",wpair_(1),npair_,0.0d0)
2431 c write (iout,*) "NFRAG",nfrag_," NPAIR",npair_," NDIST",ndist_
2432 c write (iout,*) "IFRAG"
2434 c write (iout,*) i,ifrag_(1,i),ifrag_(2,i),wfrag_(i)
2436 c write (iout,*) "IPAIR"
2438 c write (iout,*) i,ipair_(1,i),ipair_(2,i),wpair_(i)
2440 if (.not.refstr .and. nfrag.gt.0) then
2442 & "ERROR: no reference structure to compute distance restraints"
2444 & "Restraints must be specified explicitly (NDIST=number)"
2447 if (nfrag.lt.2 .and. npair.gt.0) then
2448 write (iout,*) "ERROR: Less than 2 fragments specified",
2449 & " but distance restraints between pairs requested"
2454 if (ifrag_(1,i).lt.nstart_sup) ifrag_(1,i)=nstart_sup
2455 if (ifrag_(2,i).gt.nstart_sup+nsup-1)
2456 & ifrag_(2,i)=nstart_sup+nsup-1
2457 c write (iout,*) i,ifrag_(1,i),ifrag_(2,i),wfrag_(i)
2459 if (wfrag_(i).gt.0.0d0) then
2460 do j=ifrag_(1,i),ifrag_(2,i)-1
2461 do k=j+1,ifrag_(2,i)
2462 write (iout,*) "j",j," k",k
2464 if (constr_dist.eq.1) then
2469 forcon(nhpb)=wfrag_(i)
2470 else if (constr_dist.eq.2) then
2471 if (ddjk.le.dist_cut) then
2476 forcon(nhpb)=wfrag_(i)
2483 forcon(nhpb)=wfrag_(i)*dexp(-0.5d0*(ddjk/dist_cut)**2)
2486 if (.not.out1file .or. me.eq.king)
2487 & write (iout,'(a,3i5,f8.2,1pe12.2)') "+dist.constr ",
2488 & nhpb,ihpb(nhpb),jhpb(nhpb),dhpb(nhpb),forcon(nhpb)
2490 write (iout,'(a,3i5,f8.2,1pe12.2)') "+dist.constr ",
2491 & nhpb,ihpb(nhpb),jhpb(nhpb),dhpb(nhpb),forcon(nhpb)
2498 if (wpair_(i).gt.0.0d0) then
2506 do j=ifrag_(1,ii),ifrag_(2,ii)
2507 do k=ifrag_(1,jj),ifrag_(2,jj)
2511 forcon(nhpb)=wpair_(i)
2512 dhpb(nhpb)=dist(j,k)
2514 if (.not.out1file .or. me.eq.king)
2515 & write (iout,'(a,3i5,f8.2,f10.1)') "+dist.constr ",
2516 & nhpb,ihpb(nhpb),jhpb(nhpb),dhpb(nhpb),forcon(nhpb)
2518 write (iout,'(a,3i5,f8.2,f10.1)') "+dist.constr ",
2519 & nhpb,ihpb(nhpb),jhpb(nhpb),dhpb(nhpb),forcon(nhpb)
2526 read (inp,*) ihpb(nhpb+1),jhpb(nhpb+1),dhpb(i),dhpb1(i),
2527 & ibecarb(i),forcon(nhpb+1)
2528 if (forcon(nhpb+1).gt.0.0d0) then
2530 if (ibecarb(i).gt.0) then
2531 ihpb(i)=ihpb(i)+nres
2532 jhpb(i)=jhpb(i)+nres
2534 if (dhpb(nhpb).eq.0.0d0)
2535 & dhpb(nhpb)=dist(ihpb(nhpb),jhpb(nhpb))
2539 if (.not.out1file .or. me.eq.king) then
2542 write (iout,'(a,3i5,2f8.2,i2,f10.1)') "+dist.constr ",
2543 & i,ihpb(i),jhpb(i),dhpb(i),dhpb1(i),ibecarb(i),forcon(i)
2551 c-------------------------------------------------------------------------------
2553 subroutine flush(iu)
2558 subroutine flush(iu)
2563 c------------------------------------------------------------------------------
2564 subroutine copy_to_tmp(source)
2565 include "DIMENSIONS"
2566 include "COMMON.IOUNITS"
2567 character*(*) source
2568 character* 256 tmpfile
2572 tmpfile=curdir(:ilen(curdir))//"/"//source(:ilen(source))
2573 inquire(file=tmpfile,exist=ex)
2575 write (*,*) "Copying ",tmpfile(:ilen(tmpfile)),
2576 & " to temporary directory..."
2577 write (*,*) "/bin/cp "//tmpfile(:ilen(tmpfile))//" "//tmpdir
2578 call system("/bin/cp "//tmpfile(:ilen(tmpfile))//" "//tmpdir)
2582 c------------------------------------------------------------------------------
2583 subroutine move_from_tmp(source)
2584 include "DIMENSIONS"
2585 include "COMMON.IOUNITS"
2586 character*(*) source
2589 write (*,*) "Moving ",source(:ilen(source)),
2590 & " from temporary directory to working directory"
2591 write (*,*) "/bin/mv "//source(:ilen(source))//" "//curdir
2592 call system("/bin/mv "//source(:ilen(source))//" "//curdir)
2595 c------------------------------------------------------------------------------
2596 subroutine random_init(seed)
2598 C Initialize random number generator
2600 implicit real*8 (a-h,o-z)
2601 include 'DIMENSIONS'
2607 logical OKRandom, prng_restart
2609 integer iseed_array(4)
2611 include 'COMMON.IOUNITS'
2612 include 'COMMON.TIME1'
2613 include 'COMMON.THREAD'
2614 include 'COMMON.SBRIDGE'
2615 include 'COMMON.CONTROL'
2616 include 'COMMON.MCM'
2617 include 'COMMON.MAP'
2618 include 'COMMON.HEADER'
2619 csa include 'COMMON.CSA'
2620 include 'COMMON.CHAIN'
2621 include 'COMMON.MUCA'
2623 include 'COMMON.FFIELD'
2624 include 'COMMON.SETUP'
2625 iseed=-dint(dabs(seed))
2626 if (iseed.eq.0) then
2627 write (iout,'(/80(1h*)/20x,a/80(1h*))')
2628 & 'Random seed undefined. The program will stop.'
2629 write (*,'(/80(1h*)/20x,a/80(1h*))')
2630 & 'Random seed undefined. The program will stop.'
2632 call mpi_finalize(mpi_comm_world,ierr)
2634 stop 'Bad random seed.'
2637 if (fg_rank.eq.0) then
2641 if(me.eq.king .or. .not. out1file)
2642 & write (iout,*) 'MPI: node= ', me, ' iseed= ',iseedi8
2643 write (*,*) 'MPI: node= ', me, ' iseed= ',iseedi8
2644 OKRandom = prng_restart(me,iseedi8)
2647 tmp=65536.0d0**(4-i)
2648 iseed_array(i) = dint(seed/tmp)
2649 seed=seed-iseed_array(i)*tmp
2651 if(me.eq.king .or. .not. out1file)
2652 & write (iout,*) 'MPI: node= ', me, ' iseed(4)= ',
2653 & (iseed_array(i),i=1,4)
2654 write (*,*) 'MPI: node= ',me, ' iseed(4)= ',
2655 & (iseed_array(i),i=1,4)
2656 OKRandom = prng_restart(me,iseed_array)
2659 r1=ran_number(0.0D0,1.0D0)
2660 if(me.eq.king .or. .not. out1file)
2661 & write (iout,*) 'ran_num',r1
2662 if (r1.lt.0.0d0) OKRandom=.false.
2664 if (.not.OKRandom) then
2665 write (iout,*) 'PRNG IS NOT WORKING!!!'
2666 print *,'PRNG IS NOT WORKING!!!'
2669 call mpi_abort(mpi_comm_world,error_msg,ierr)
2672 write (iout,*) 'too many processors for parallel prng'
2673 write (*,*) 'too many processors for parallel prng'
2681 write (iout,*) 'ran_num',ran_number(0.0d0,1.0d0)