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)
752 call reada(weightcard,'SCAL14',scal14,0.4D0)
753 call reada(weightcard,'SCALSCP',scalscp,1.0d0)
754 call reada(weightcard,'CUTOFF',cutoff_corr,7.0d0)
755 call reada(weightcard,'DELT_CORR',delt_corr,0.5d0)
756 call reada(weightcard,'TEMP0',temp0,300.0d0)
757 if (index(weightcard,'SOFT').gt.0) ipot=6
758 C 12/1/95 Added weight for the multi-body term WCORR
759 call reada(weightcard,'WCORRH',wcorr,1.0D0)
760 if (wcorr4.gt.0.0d0) wcorr=wcorr4
782 if(me.eq.king.or..not.out1file)
783 & write (iout,10) wsc,wscp,welec,wvdwpp,wbond,wang,wscloc,wtor,
784 & wtor_d,wstrain,wel_loc,wcorr,wcorr5,wcorr6,wsccor,wturn3,
786 10 format (/'Energy-term weights (unscaled):'//
787 & 'WSCC= ',f10.6,' (SC-SC)'/
788 & 'WSCP= ',f10.6,' (SC-p)'/
789 & 'WELEC= ',f10.6,' (p-p electr)'/
790 & 'WVDWPP= ',f10.6,' (p-p VDW)'/
791 & 'WBOND= ',f10.6,' (stretching)'/
792 & 'WANG= ',f10.6,' (bending)'/
793 & 'WSCLOC= ',f10.6,' (SC local)'/
794 & 'WTOR= ',f10.6,' (torsional)'/
795 & 'WTORD= ',f10.6,' (double torsional)'/
796 & 'WSTRAIN=',f10.6,' (SS bridges & dist. cnstr.)'/
797 & 'WEL_LOC=',f10.6,' (multi-body 3-rd order)'/
798 & 'WCORR4= ',f10.6,' (multi-body 4th order)'/
799 & 'WCORR5= ',f10.6,' (multi-body 5th order)'/
800 & 'WCORR6= ',f10.6,' (multi-body 6th order)'/
801 & 'WSCCOR= ',f10.6,' (back-scloc correlation)'/
802 & 'WTURN3= ',f10.6,' (turns, 3rd order)'/
803 & 'WTURN4= ',f10.6,' (turns, 4th order)'/
804 & 'WTURN6= ',f10.6,' (turns, 6th order)')
805 if(me.eq.king.or..not.out1file)then
806 if (wcorr4.gt.0.0d0) then
807 write (iout,'(/2a/)') 'Local-electrostatic type correlation ',
808 & 'between contact pairs of peptide groups'
809 write (iout,'(2(a,f5.3/))')
810 & 'Cutoff on 4-6th order correlation terms: ',cutoff_corr,
811 & 'Range of quenching the correlation terms:',2*delt_corr
812 else if (wcorr.gt.0.0d0) then
813 write (iout,'(/2a/)') 'Hydrogen-bonding correlation ',
814 & 'between contact pairs of peptide groups'
816 write (iout,'(a,f8.3)')
817 & 'Scaling factor of 1,4 SC-p interactions:',scal14
818 write (iout,'(a,f8.3)')
819 & 'General scaling factor of SC-p interactions:',scalscp
821 r0_corr=cutoff_corr-delt_corr
823 aad(i,1)=scalscp*aad(i,1)
824 aad(i,2)=scalscp*aad(i,2)
825 bad(i,1)=scalscp*bad(i,1)
826 bad(i,2)=scalscp*bad(i,2)
828 call rescale_weights(t_bath)
829 if(me.eq.king.or..not.out1file)
830 & write (iout,22) wsc,wscp,welec,wvdwpp,wbond,wang,wscloc,wtor,
831 & wtor_d,wstrain,wel_loc,wcorr,wcorr5,wcorr6,wsccor,wturn3,
833 22 format (/'Energy-term weights (scaled):'//
834 & 'WSCC= ',f10.6,' (SC-SC)'/
835 & 'WSCP= ',f10.6,' (SC-p)'/
836 & 'WELEC= ',f10.6,' (p-p electr)'/
837 & 'WVDWPP= ',f10.6,' (p-p VDW)'/
838 & 'WBOND= ',f10.6,' (stretching)'/
839 & 'WANG= ',f10.6,' (bending)'/
840 & 'WSCLOC= ',f10.6,' (SC local)'/
841 & 'WTOR= ',f10.6,' (torsional)'/
842 & 'WTORD= ',f10.6,' (double torsional)'/
843 & 'WSTRAIN=',f10.6,' (SS bridges & dist. cnstr.)'/
844 & 'WEL_LOC=',f10.6,' (multi-body 3-rd order)'/
845 & 'WCORR4= ',f10.6,' (multi-body 4th order)'/
846 & 'WCORR5= ',f10.6,' (multi-body 5th order)'/
847 & 'WCORR6= ',f10.6,' (multi-body 6th order)'/
848 & 'WSCCOR= ',f10.6,' (back-scloc correlatkion)'/
849 & 'WTURN3= ',f10.6,' (turns, 3rd order)'/
850 & 'WTURN4= ',f10.6,' (turns, 4th order)'/
851 & 'WTURN6= ',f10.6,' (turns, 6th order)')
852 if(me.eq.king.or..not.out1file)
853 & write (iout,*) "Reference temperature for weights calculation:",
855 call reada(weightcard,"D0CM",d0cm,3.78d0)
856 call reada(weightcard,"AKCM",akcm,15.1d0)
857 call reada(weightcard,"AKTH",akth,11.0d0)
858 call reada(weightcard,"AKCT",akct,12.0d0)
859 call reada(weightcard,"V1SS",v1ss,-1.08d0)
860 call reada(weightcard,"V2SS",v2ss,7.61d0)
861 call reada(weightcard,"V3SS",v3ss,13.7d0)
862 call reada(weightcard,"EBR",ebr,-5.50D0)
863 if(me.eq.king.or..not.out1file) then
864 write (iout,*) "Parameters of the SS-bond potential:"
865 write (iout,*) "D0CM",d0cm," AKCM",akcm," AKTH",akth,
867 write (iout,*) "V1SS",v1ss," V2SS",v2ss," V3SS",v3ss
868 write (iout,*) "EBR",ebr
869 print *,'indpdb=',indpdb,' pdbref=',pdbref
871 if (indpdb.gt.0 .or. pdbref) then
872 read(inp,'(a)') pdbfile
873 if(me.eq.king.or..not.out1file)
874 & write (iout,'(2a)') 'PDB data will be read from file ',
875 & pdbfile(:ilen(pdbfile))
876 open(ipdbin,file=pdbfile,status='old',err=33)
878 33 write (iout,'(a)') 'Error opening PDB file.'
881 c print *,'Begin reading pdb data'
883 c print *,'Finished reading pdb data'
884 if(me.eq.king.or..not.out1file)
885 & write (iout,'(a,i3,a,i3)')'nsup=',nsup,
886 & ' nstart_sup=',nstart_sup
888 itype_pdb(i)=itype(i)
892 nct=nstart_sup+nsup-1
893 call contact(.false.,ncont_ref,icont_ref,co)
896 C Following 2 lines for diagnostics; comment out if not needed
897 write (iout,*) "Before sideadd"
899 if(me.eq.king.or..not.out1file)
900 & write(iout,*)'Adding sidechains'
907 do while (fail.and.nsi.le.maxsi)
908 call gen_side(iti,theta(i+1),alph(i),omeg(i),fail)
911 if(fail) write(iout,*)'Adding sidechain failed for res ',
912 & i,' after ',nsi,' trials'
915 C 10/03/12 Adam: Recalculate coordinates with new side chain positions
918 C Following 2 lines for diagnostics; comment out if not needed
919 write (iout,*) "After sideadd"
922 if (indpdb.eq.0) then
923 C Read sequence if not taken from the pdb file.
925 c print *,'nres=',nres
926 if (iscode.gt.0) then
927 read (inp,'(80a1)') (sequence(i)(1:1),i=1,nres)
929 read (inp,'(20(1x,a3))') (sequence(i),i=1,nres)
931 C Convert sequence to numeric code
933 itype(i)=rescode(i,sequence(i),iscode)
935 C Assign initial virtual bond lengths
941 vbld(i+nres)=dsc(itype(i))
942 vbld_inv(i+nres)=dsc_inv(itype(i))
943 c write (iout,*) "i",i," itype",itype(i),
944 c & " dsc",dsc(itype(i))," vbld",vbld(i),vbld(i+nres)
948 c print '(20i4)',(itype(i),i=1,nres)
951 if (itype(i).eq.21 .or. itype(i+1).eq.21) then
953 if (itype(i).eq.21) then
957 else if (itype(i+1).ne.20) then
959 else if (itype(i).ne.20) then
966 if(me.eq.king.or..not.out1file)then
967 write (iout,*) "ITEL"
969 write (iout,*) i,itype(i),itel(i)
971 print *,'Call Read_Bridge.'
974 C 8/13/98 Set limits to generating the dihedral angles
979 read (inp,*) ndih_constr
980 if (ndih_constr.gt.0) then
982 read (inp,*) (idih_constr(i),phi0(i),drange(i),i=1,ndih_constr)
983 if(me.eq.king.or..not.out1file)then
985 & 'There are',ndih_constr,' constraints on phi angles.'
987 write (iout,'(i5,2f8.3)') idih_constr(i),phi0(i),drange(i)
991 phi0(i)=deg2rad*phi0(i)
992 drange(i)=deg2rad*drange(i)
994 if(me.eq.king.or..not.out1file)
995 & write (iout,*) 'FTORS',ftors
998 phibound(1,ii) = phi0(i)-drange(i)
999 phibound(2,ii) = phi0(i)+drange(i)
1004 if (me.eq.king) then
1006 write (iout,'(a)') 'Boundaries in phi angle sampling:'
1008 write (iout,'(a3,i5,2f10.1)')
1009 & restyp(itype(i)),i,phibound(1,i)*rad2deg,phibound(2,i)*rad2deg
1015 cd print *,'NNT=',NNT,' NCT=',NCT
1016 if (itype(1).eq.21) nnt=2
1017 if (itype(nres).eq.21) nct=nct-1
1019 if(me.eq.king.or..not.out1file)
1020 & write (iout,'(a,i3)') 'nsup=',nsup
1022 if (nsup.le.(nct-nnt+1)) then
1023 do i=0,nct-nnt+1-nsup
1024 if (seq_comp(itype(nnt+i),itype_pdb(nstart_sup),nsup)) then
1030 & 'Error - sequences to be superposed do not match.'
1033 do i=0,nsup-(nct-nnt+1)
1034 if (seq_comp(itype(nnt),itype_pdb(nstart_sup+i),nct-nnt+1))
1036 nstart_sup=nstart_sup+i
1042 & 'Error - sequences to be superposed do not match.'
1045 if (nsup.eq.0) nsup=nct-nnt
1046 if (nstart_sup.eq.0) nstart_sup=nnt
1047 if (nstart_seq.eq.0) nstart_seq=nnt
1048 if(me.eq.king.or..not.out1file)
1049 & write (iout,*) 'nsup=',nsup,' nstart_sup=',nstart_sup,
1050 & ' nstart_seq=',nstart_seq
1052 c--- Zscore rms -------
1053 if (nz_start.eq.0) nz_start=nnt
1054 if (nz_end.eq.0 .and. nsup.gt.0) then
1056 else if (nz_end.eq.0) then
1059 if(me.eq.king.or..not.out1file)then
1060 write (iout,*) 'NZ_START=',nz_start,' NZ_END=',nz_end
1061 write (iout,*) 'IZ_SC=',iz_sc
1063 c----------------------
1066 if (.not.pdbref) then
1067 call read_angles(inp,*38)
1069 38 write (iout,'(a)') 'Error reading reference structure.'
1071 call MPI_Finalize(MPI_COMM_WORLD,IERROR)
1072 stop 'Error reading reference structure'
1076 czscore call geom_to_var(nvar,coord_exp_zs(1,1))
1085 call contact(.true.,ncont_ref,icont_ref,co)
1087 if(me.eq.king.or..not.out1file)
1088 & write (iout,*) 'Contact order:',co
1090 if(me.eq.king.or..not.out1file)
1091 & write (2,*) 'Shifting contacts:',nstart_seq,nstart_sup
1094 icont_ref(j,i)=icont_ref(j,i)+nstart_seq-nstart_sup
1096 if(me.eq.king.or..not.out1file)
1097 & write (2,*) i,' ',restyp(itype(icont_ref(1,i))),' ',
1098 & icont_ref(1,i),' ',
1099 & restyp(itype(icont_ref(2,i))),' ',icont_ref(2,i)
1103 c write (iout,*) "constr_dist",constr_dist,nstart_sup,nsup
1104 if (constr_dist.gt.0) then
1105 call read_dist_constr
1108 c write (iout,*) "After read_dist_constr nhpb",nhpb
1110 if (indpdb.eq.0 .and. modecalc.ne.2 .and. modecalc.ne.4
1111 & .and. modecalc.ne.8 .and. modecalc.ne.9 .and.
1112 & modecalc.ne.10) then
1113 C If input structure hasn't been supplied from the PDB file read or generate
1115 if (iranconf.eq.0 .and. .not. extconf) then
1116 if(me.eq.king.or..not.out1file .and.fg_rank.eq.0)
1117 & write (iout,'(a)') 'Initial geometry will be read in.'
1119 read(inp,'(8f10.5)',end=36,err=36)
1120 & ((c(l,k),l=1,3),k=1,nres),
1121 & ((c(l,k+nres),l=1,3),k=nnt,nct)
1122 call int_from_cart1(.false.)
1125 dc(j,i)=c(j,i+1)-c(j,i)
1126 dc_norm(j,i)=dc_norm(j,i)*vbld_inv(i+1)
1130 if (itype(i).ne.10) then
1132 dc(j,i+nres)=c(j,i+nres)-c(j,i)
1133 dc_norm(j,i+nres)=dc_norm(j,i+nres)*vbld_inv(i+nres)
1139 call read_angles(inp,*36)
1142 36 write (iout,'(a)') 'Error reading angle file.'
1144 call mpi_finalize( MPI_COMM_WORLD,IERR )
1146 stop 'Error reading angle file.'
1148 else if (extconf) then
1149 if(me.eq.king.or..not.out1file .and. fg_rank.eq.0)
1150 & write (iout,'(a)') 'Extended chain initial geometry.'
1152 theta(i)=90d0*deg2rad
1155 phi(i)=180d0*deg2rad
1158 alph(i)=110d0*deg2rad
1161 omeg(i)=-120d0*deg2rad
1164 if(me.eq.king.or..not.out1file)
1165 & write (iout,'(a)') 'Random-generated initial geometry.'
1169 if (me.eq.king .or. fg_rank.eq.0 .and. (
1170 & modecalc.eq.12 .or. modecalc.eq.14) ) then
1174 call gen_rand_conf(itmp,*30)
1176 30 write (iout,*) 'Failed to generate random conformation',
1177 & ', itrial=',itrial
1178 write (*,*) 'Processor:',me,
1179 & ' Failed to generate random conformation',
1189 write (iout,'(a,i3,a)') 'Processor:',me,
1190 & ' error in generating random conformation.'
1191 write (*,'(a,i3,a)') 'Processor:',me,
1192 & ' error in generating random conformation.'
1195 call MPI_Abort(mpi_comm_world,error_msg,ierrcode)
1202 elseif (modecalc.eq.4) then
1203 read (inp,'(a)') intinname
1204 open (intin,file=intinname,status='old',err=333)
1205 if (me.eq.king .or. .not.out1file.and.fg_rank.eq.0)
1206 & write (iout,'(a)') 'intinname',intinname
1207 write (*,'(a)') 'Processor',myrank,' intinname',intinname
1209 333 write (iout,'(2a)') 'Error opening angle file ',intinname
1211 call MPI_Finalize(MPI_COMM_WORLD,IERR)
1213 stop 'Error opening angle file.'
1217 C Generate distance constraints, if the PDB structure is to be regularized.
1218 if (nthread.gt.0) then
1219 call read_threadbase
1222 if (me.eq.king .or. .not. out1file)
1224 if (ns.gt.0 .and. (me.eq.king .or. .not.out1file) ) then
1225 write (iout,'(/a,i3,a)')
1226 & 'The chain contains',ns,' disulfide-bridging cysteines.'
1227 write (iout,'(20i4)') (iss(i),i=1,ns)
1228 write (iout,'(/a/)') 'Pre-formed links are:'
1234 if (me.eq.king.or..not.out1file)
1235 & write (iout,'(2a,i3,3a,i3,a,3f10.3)')
1236 & restyp(it1),'(',i1,') -- ',restyp(it2),'(',i2,')',dhpb(i),
1241 if (i2ndstr.gt.0) call secstrp2dihc
1242 c call geom_to_var(nvar,x)
1243 c call etotal(energia(0))
1244 c call enerprint(energia(0))
1245 c call briefout(0,etot)
1247 cd write (iout,'(2(a,i3))') 'NNT',NNT,' NCT',NCT
1248 cd write (iout,'(a)') 'Variable list:'
1249 cd write (iout,'(i4,f10.5)') (i,rad2deg*x(i),i=1,nvar)
1251 if (me.eq.king .or. (fg_rank.eq.0 .and. .not.out1file))
1252 & write (iout,'(//80(1h*)/20x,a,i4,a/80(1h*)//)')
1253 & 'Processor',myrank,': end reading molecular data.'
1257 c--------------------------------------------------------------------------
1258 logical function seq_comp(itypea,itypeb,length)
1260 integer length,itypea(length),itypeb(length)
1263 if (itypea(i).ne.itypeb(i)) then
1271 c-----------------------------------------------------------------------------
1272 subroutine read_bridge
1273 C Read information about disulfide bridges.
1274 implicit real*8 (a-h,o-z)
1275 include 'DIMENSIONS'
1279 include 'COMMON.IOUNITS'
1280 include 'COMMON.GEO'
1281 include 'COMMON.VAR'
1282 include 'COMMON.INTERACT'
1283 include 'COMMON.LOCAL'
1284 include 'COMMON.NAMES'
1285 include 'COMMON.CHAIN'
1286 include 'COMMON.FFIELD'
1287 include 'COMMON.SBRIDGE'
1288 include 'COMMON.HEADER'
1289 include 'COMMON.CONTROL'
1290 include 'COMMON.DBASE'
1291 include 'COMMON.THREAD'
1292 include 'COMMON.TIME1'
1293 include 'COMMON.SETUP'
1294 C Read bridging residues.
1295 read (inp,*) ns,(iss(i),i=1,ns)
1297 if(me.eq.king.or..not.out1file)
1298 & write (iout,*) 'ns=',ns,' iss:',(iss(i),i=1,ns)
1299 C Check whether the specified bridging residues are cystines.
1301 if (itype(iss(i)).ne.1) then
1302 if (me.eq.king.or..not.out1file) write (iout,'(2a,i3,a)')
1303 & 'Do you REALLY think that the residue ',restyp(iss(i)),i,
1304 & ' can form a disulfide bridge?!!!'
1305 write (*,'(2a,i3,a)')
1306 & 'Do you REALLY think that the residue ',restyp(iss(i)),i,
1307 & ' can form a disulfide bridge?!!!'
1309 call MPI_Finalize(MPI_COMM_WORLD,ierror)
1314 C Read preformed bridges.
1316 read (inp,*) nss,(ihpb(i),jhpb(i),i=1,nss)
1317 write (iout,*) 'nss=',nss,' ihpb,jhpb: ',(ihpb(i),jhpb(i),i=1,nss)
1320 C Check if the residues involved in bridges are in the specified list of
1321 C bridging residues.
1324 if (ihpb(i).eq.ihpb(j).or.ihpb(i).eq.jhpb(j)
1325 & .or.jhpb(i).eq.ihpb(j).or.jhpb(i).eq.jhpb(j)) then
1326 write (iout,'(a,i3,a)') 'Disulfide pair',i,
1327 & ' contains residues present in other pairs.'
1328 write (*,'(a,i3,a)') 'Disulfide pair',i,
1329 & ' contains residues present in other pairs.'
1331 call MPI_Finalize(MPI_COMM_WORLD,ierror)
1337 if (ihpb(i).eq.iss(j)) goto 10
1339 write (iout,'(a,i3,a)') 'Pair',i,' contains unknown cystine.'
1342 if (jhpb(i).eq.iss(j)) goto 20
1344 write (iout,'(a,i3,a)') 'Pair',i,' contains unknown cystine.'
1350 ihpb(i)=ihpb(i)+nres
1351 jhpb(i)=jhpb(i)+nres
1357 c----------------------------------------------------------------------------
1358 subroutine read_x(kanal,*)
1359 implicit real*8 (a-h,o-z)
1360 include 'DIMENSIONS'
1361 include 'COMMON.GEO'
1362 include 'COMMON.VAR'
1363 include 'COMMON.CHAIN'
1364 include 'COMMON.IOUNITS'
1365 include 'COMMON.CONTROL'
1366 include 'COMMON.LOCAL'
1367 include 'COMMON.INTERACT'
1368 c Read coordinates from input
1370 read(kanal,'(8f10.5)',end=10,err=10)
1371 & ((c(l,k),l=1,3),k=1,nres),
1372 & ((c(l,k+nres),l=1,3),k=nnt,nct)
1375 c(j,2*nres)=c(j,nres)
1377 call int_from_cart1(.false.)
1380 dc(j,i)=c(j,i+1)-c(j,i)
1381 dc_norm(j,i)=dc(j,i)*vbld_inv(i+1)
1385 if (itype(i).ne.10) then
1387 dc(j,i+nres)=c(j,i+nres)-c(j,i)
1388 dc_norm(j,i+nres)=dc(j,i+nres)*vbld_inv(i+nres)
1396 c----------------------------------------------------------------------------
1397 subroutine read_threadbase
1398 implicit real*8 (a-h,o-z)
1399 include 'DIMENSIONS'
1400 include 'COMMON.IOUNITS'
1401 include 'COMMON.GEO'
1402 include 'COMMON.VAR'
1403 include 'COMMON.INTERACT'
1404 include 'COMMON.LOCAL'
1405 include 'COMMON.NAMES'
1406 include 'COMMON.CHAIN'
1407 include 'COMMON.FFIELD'
1408 include 'COMMON.SBRIDGE'
1409 include 'COMMON.HEADER'
1410 include 'COMMON.CONTROL'
1411 include 'COMMON.DBASE'
1412 include 'COMMON.THREAD'
1413 include 'COMMON.TIME1'
1414 C Read pattern database for threading.
1415 read (icbase,*) nseq
1417 read (icbase,'(i5,2x,a8,2i4)') nres_base(1,i),str_nam(i),
1418 & nres_base(2,i),nres_base(3,i)
1419 read (icbase,'(9f8.3)') ((cart_base(k,j,i),k=1,3),j=1,
1421 c write (iout,'(i5,2x,a8,2i4)') nres_base(1,i),str_nam(i),
1422 c & nres_base(2,i),nres_base(3,i)
1423 c write (iout,'(9f8.3)') ((cart_base(k,j,i),k=1,3),j=1,
1427 if (weidis.eq.0.0D0) weidis=0.1D0
1436 read (inp,*) nexcl,(iexam(1,i),iexam(2,i),i=1,nexcl)
1437 write (iout,'(a,i5)') 'nexcl: ',nexcl
1438 write (iout,'(2i5)') (iexam(1,i),iexam(2,i),i=1,nexcl)
1441 c------------------------------------------------------------------------------
1442 subroutine setup_var
1443 implicit real*8 (a-h,o-z)
1444 include 'DIMENSIONS'
1445 include 'COMMON.IOUNITS'
1446 include 'COMMON.GEO'
1447 include 'COMMON.VAR'
1448 include 'COMMON.INTERACT'
1449 include 'COMMON.LOCAL'
1450 include 'COMMON.NAMES'
1451 include 'COMMON.CHAIN'
1452 include 'COMMON.FFIELD'
1453 include 'COMMON.SBRIDGE'
1454 include 'COMMON.HEADER'
1455 include 'COMMON.CONTROL'
1456 include 'COMMON.DBASE'
1457 include 'COMMON.THREAD'
1458 include 'COMMON.TIME1'
1459 C Set up variable list.
1465 if (itype(i).ne.10) then
1467 ialph(i,1)=nvar+nside
1471 if (indphi.gt.0) then
1473 else if (indback.gt.0) then
1478 cd write (iout,'(3i4)') (i,ialph(i,1),ialph(i,2),i=2,nres-1)
1481 c----------------------------------------------------------------------------
1482 subroutine gen_dist_constr
1483 C Generate CA distance constraints.
1484 implicit real*8 (a-h,o-z)
1485 include 'DIMENSIONS'
1486 include 'COMMON.IOUNITS'
1487 include 'COMMON.GEO'
1488 include 'COMMON.VAR'
1489 include 'COMMON.INTERACT'
1490 include 'COMMON.LOCAL'
1491 include 'COMMON.NAMES'
1492 include 'COMMON.CHAIN'
1493 include 'COMMON.FFIELD'
1494 include 'COMMON.SBRIDGE'
1495 include 'COMMON.HEADER'
1496 include 'COMMON.CONTROL'
1497 include 'COMMON.DBASE'
1498 include 'COMMON.THREAD'
1499 include 'COMMON.TIME1'
1500 dimension itype_pdb(maxres)
1501 common /pizda/ itype_pdb
1503 cd print *,'gen_dist_constr: nnt=',nnt,' nct=',nct
1504 cd write (2,*) 'gen_dist_constr: nnt=',nnt,' nct=',nct,
1505 cd & ' nstart_sup',nstart_sup,' nstart_seq',nstart_seq,
1507 do i=nstart_sup,nstart_sup+nsup-1
1508 cd write (2,*) 'i',i,' seq ',restyp(itype(i+nstart_seq-nstart_sup)),
1509 cd & ' seq_pdb', restyp(itype_pdb(i))
1510 do j=i+2,nstart_sup+nsup-1
1512 ihpb(nhpb)=i+nstart_seq-nstart_sup
1513 jhpb(nhpb)=j+nstart_seq-nstart_sup
1515 dhpb(nhpb)=dist(i,j)
1518 cd write (iout,'(a)') 'Distance constraints:'
1523 cd if (ii.gt.nres) then
1528 cd write (iout,'(a,1x,a,i4,3x,a,1x,a,i4,2f10.3)')
1529 cd & restyp(itype(ii)),iden,ii,restyp(itype(jj)),iden,jj,
1530 cd & dhpb(i),forcon(i)
1534 c----------------------------------------------------------------------------
1536 implicit real*8 (a-h,o-z)
1537 include 'DIMENSIONS'
1538 include 'COMMON.MAP'
1539 include 'COMMON.IOUNITS'
1540 character*3 angid(4) /'THE','PHI','ALP','OME'/
1541 character*80 mapcard,ucase
1543 read (inp,'(a)') mapcard
1544 mapcard=ucase(mapcard)
1545 if (index(mapcard,'PHI').gt.0) then
1547 else if (index(mapcard,'THE').gt.0) then
1549 else if (index(mapcard,'ALP').gt.0) then
1551 else if (index(mapcard,'OME').gt.0) then
1554 write(iout,'(a)')'Error - illegal variable spec in MAP card.'
1555 stop 'Error - illegal variable spec in MAP card.'
1557 call readi (mapcard,'RES1',res1(imap),0)
1558 call readi (mapcard,'RES2',res2(imap),0)
1559 if (res1(imap).eq.0) then
1560 res1(imap)=res2(imap)
1561 else if (res2(imap).eq.0) then
1562 res2(imap)=res1(imap)
1564 if(res1(imap)*res2(imap).eq.0 .or. res1(imap).gt.res2(imap))then
1566 & 'Error - illegal definition of variable group in MAP.'
1567 stop 'Error - illegal definition of variable group in MAP.'
1569 call reada(mapcard,'FROM',ang_from(imap),0.0D0)
1570 call reada(mapcard,'TO',ang_to(imap),0.0D0)
1571 call readi(mapcard,'NSTEP',nstep(imap),0)
1572 if (ang_from(imap).eq.ang_to(imap) .or. nstep(imap).eq.0) then
1574 & 'Illegal boundary and/or step size specification in MAP.'
1575 stop 'Illegal boundary and/or step size specification in MAP.'
1580 c----------------------------------------------------------------------------
1581 csa subroutine csaread
1582 csa implicit real*8 (a-h,o-z)
1583 csa include 'DIMENSIONS'
1584 csa include 'COMMON.IOUNITS'
1585 csa include 'COMMON.GEO'
1586 csa include 'COMMON.CSA'
1587 csa include 'COMMON.BANK'
1588 csa include 'COMMON.CONTROL'
1589 csa character*80 ucase
1590 csa character*620 mcmcard
1591 csa call card_concat(mcmcard)
1593 csa call readi(mcmcard,'NCONF',nconf,50)
1594 csa call readi(mcmcard,'NADD',nadd,0)
1595 csa call readi(mcmcard,'JSTART',jstart,1)
1596 csa call readi(mcmcard,'JEND',jend,1)
1597 csa call readi(mcmcard,'NSTMAX',nstmax,500000)
1598 csa call readi(mcmcard,'N0',n0,1)
1599 csa call readi(mcmcard,'N1',n1,6)
1600 csa call readi(mcmcard,'N2',n2,4)
1601 csa call readi(mcmcard,'N3',n3,0)
1602 csa call readi(mcmcard,'N4',n4,0)
1603 csa call readi(mcmcard,'N5',n5,0)
1604 csa call readi(mcmcard,'N6',n6,10)
1605 csa call readi(mcmcard,'N7',n7,0)
1606 csa call readi(mcmcard,'N8',n8,0)
1607 csa call readi(mcmcard,'N9',n9,0)
1608 csa call readi(mcmcard,'N14',n14,0)
1609 csa call readi(mcmcard,'N15',n15,0)
1610 csa call readi(mcmcard,'N16',n16,0)
1611 csa call readi(mcmcard,'N17',n17,0)
1612 csa call readi(mcmcard,'N18',n18,0)
1614 csa vdisulf=(index(mcmcard,'DYNSS').gt.0)
1616 csa call readi(mcmcard,'NDIFF',ndiff,2)
1617 csa call reada(mcmcard,'DIFFCUT',diffcut,0.0d0)
1618 csa call readi(mcmcard,'IS1',is1,1)
1619 csa call readi(mcmcard,'IS2',is2,8)
1620 csa call readi(mcmcard,'NRAN0',nran0,4)
1621 csa call readi(mcmcard,'NRAN1',nran1,2)
1622 csa call readi(mcmcard,'IRR',irr,1)
1623 csa call readi(mcmcard,'NSEED',nseed,20)
1624 csa call readi(mcmcard,'NTOTAL',ntotal,10000)
1625 csa call reada(mcmcard,'CUT1',cut1,2.0d0)
1626 csa call reada(mcmcard,'CUT2',cut2,5.0d0)
1627 csa call reada(mcmcard,'ESTOP',estop,-3000.0d0)
1628 csa call readi(mcmcard,'ICMAX',icmax,3)
1629 csa call readi(mcmcard,'IRESTART',irestart,0)
1630 csac!bankt call readi(mcmcard,'NBANKTM',ntbankm,0)
1633 csa call reada(mcmcard,'DELE',dele,20.0d0)
1634 csa call reada(mcmcard,'DIFCUT',difcut,720.0d0)
1635 csa call readi(mcmcard,'IREF',iref,0)
1636 csa call reada(mcmcard,'RMSCUT',rmscut,4.0d0)
1637 csa call reada(mcmcard,'PNCCUT',pnccut,0.5d0)
1638 csa call readi(mcmcard,'NCONF_IN',nconf_in,0)
1639 csa call reada(mcmcard,'RDIH_BIAS',rdih_bias,0.5d0)
1640 csa write (iout,*) "NCONF_IN",nconf_in
1643 c----------------------------------------------------------------------------
1644 cfmc subroutine mcmfread
1645 cfmc implicit real*8 (a-h,o-z)
1646 cfmc include 'DIMENSIONS'
1647 cfmc include 'COMMON.MCMF'
1648 cfmc include 'COMMON.IOUNITS'
1649 cfmc include 'COMMON.GEO'
1650 cfmc character*80 ucase
1651 cfmc character*620 mcmcard
1652 cfmc call card_concat(mcmcard)
1654 cfmc call readi(mcmcard,'MAXRANT',maxrant,1000)
1655 cfmc write(iout,*)'MAXRANT=',maxrant
1656 cfmc call readi(mcmcard,'MAXFAM',maxfam,maxfam_p)
1657 cfmc write(iout,*)'MAXFAM=',maxfam
1658 cfmc call readi(mcmcard,'NNET1',nnet1,5)
1659 cfmc write(iout,*)'NNET1=',nnet1
1660 cfmc call readi(mcmcard,'NNET2',nnet2,4)
1661 cfmc write(iout,*)'NNET2=',nnet2
1662 cfmc call readi(mcmcard,'NNET3',nnet3,4)
1663 cfmc write(iout,*)'NNET3=',nnet3
1664 cfmc call readi(mcmcard,'ILASTT',ilastt,0)
1665 cfmc write(iout,*)'ILASTT=',ilastt
1666 cfmc call readi(mcmcard,'MAXSTR',maxstr,maxstr_mcmf)
1667 cfmc write(iout,*)'MAXSTR=',maxstr
1668 cfmc maxstr_f=maxstr/maxfam
1669 cfmc write(iout,*)'MAXSTR_F=',maxstr_f
1670 cfmc call readi(mcmcard,'NMCMF',nmcmf,10)
1671 cfmc write(iout,*)'NMCMF=',nmcmf
1672 cfmc call readi(mcmcard,'IFOCUS',ifocus,nmcmf)
1673 cfmc write(iout,*)'IFOCUS=',ifocus
1674 cfmc call readi(mcmcard,'NLOCMCMF',nlocmcmf,1000)
1675 cfmc write(iout,*)'NLOCMCMF=',nlocmcmf
1676 cfmc call readi(mcmcard,'INTPRT',intprt,1000)
1677 cfmc write(iout,*)'INTPRT=',intprt
1678 cfmc call readi(mcmcard,'IPRT',iprt,100)
1679 cfmc write(iout,*)'IPRT=',iprt
1680 cfmc call readi(mcmcard,'IMAXTR',imaxtr,100)
1681 cfmc write(iout,*)'IMAXTR=',imaxtr
1682 cfmc call readi(mcmcard,'MAXEVEN',maxeven,1000)
1683 cfmc write(iout,*)'MAXEVEN=',maxeven
1684 cfmc call readi(mcmcard,'MAXEVEN1',maxeven1,3)
1685 cfmc write(iout,*)'MAXEVEN1=',maxeven1
1686 cfmc call readi(mcmcard,'INIMIN',inimin,200)
1687 cfmc write(iout,*)'INIMIN=',inimin
1688 cfmc call readi(mcmcard,'NSTEPMCMF',nstepmcmf,10)
1689 cfmc write(iout,*)'NSTEPMCMF=',nstepmcmf
1690 cfmc call readi(mcmcard,'NTHREAD',nthread,5)
1691 cfmc write(iout,*)'NTHREAD=',nthread
1692 cfmc call readi(mcmcard,'MAXSTEPMCMF',maxstepmcmf,2500)
1693 cfmc write(iout,*)'MAXSTEPMCMF=',maxstepmcmf
1694 cfmc call readi(mcmcard,'MAXPERT',maxpert,9)
1695 cfmc write(iout,*)'MAXPERT=',maxpert
1696 cfmc call readi(mcmcard,'IRMSD',irmsd,1)
1697 cfmc write(iout,*)'IRMSD=',irmsd
1698 cfmc call reada(mcmcard,'DENEMIN',denemin,0.01D0)
1699 cfmc write(iout,*)'DENEMIN=',denemin
1700 cfmc call reada(mcmcard,'RCUT1S',rcut1s,3.5D0)
1701 cfmc write(iout,*)'RCUT1S=',rcut1s
1702 cfmc call reada(mcmcard,'RCUT1E',rcut1e,2.0D0)
1703 cfmc write(iout,*)'RCUT1E=',rcut1e
1704 cfmc call reada(mcmcard,'RCUT2S',rcut2s,0.5D0)
1705 cfmc write(iout,*)'RCUT2S=',rcut2s
1706 cfmc call reada(mcmcard,'RCUT2E',rcut2e,0.1D0)
1707 cfmc write(iout,*)'RCUT2E=',rcut2e
1708 cfmc call reada(mcmcard,'DPERT1',d_pert1,180.0D0)
1709 cfmc write(iout,*)'DPERT1=',d_pert1
1710 cfmc call reada(mcmcard,'DPERT1A',d_pert1a,180.0D0)
1711 cfmc write(iout,*)'DPERT1A=',d_pert1a
1712 cfmc call reada(mcmcard,'DPERT2',d_pert2,90.0D0)
1713 cfmc write(iout,*)'DPERT2=',d_pert2
1714 cfmc call reada(mcmcard,'DPERT2A',d_pert2a,45.0D0)
1715 cfmc write(iout,*)'DPERT2A=',d_pert2a
1716 cfmc call reada(mcmcard,'DPERT2B',d_pert2b,90.0D0)
1717 cfmc write(iout,*)'DPERT2B=',d_pert2b
1718 cfmc call reada(mcmcard,'DPERT2C',d_pert2c,60.0D0)
1719 cfmc write(iout,*)'DPERT2C=',d_pert2c
1720 cfmc d_pert1=deg2rad*d_pert1
1721 cfmc d_pert1a=deg2rad*d_pert1a
1722 cfmc d_pert2=deg2rad*d_pert2
1723 cfmc d_pert2a=deg2rad*d_pert2a
1724 cfmc d_pert2b=deg2rad*d_pert2b
1725 cfmc d_pert2c=deg2rad*d_pert2c
1726 cfmc call reada(mcmcard,'KT_MCMF1',kt_mcmf1,1.0D0)
1727 cfmc write(iout,*)'KT_MCMF1=',kt_mcmf1
1728 cfmc call reada(mcmcard,'KT_MCMF2',kt_mcmf2,1.0D0)
1729 cfmc write(iout,*)'KT_MCMF2=',kt_mcmf2
1730 cfmc call reada(mcmcard,'DKT_MCMF1',dkt_mcmf1,10.0D0)
1731 cfmc write(iout,*)'DKT_MCMF1=',dkt_mcmf1
1732 cfmc call reada(mcmcard,'DKT_MCMF2',dkt_mcmf2,1.0D0)
1733 cfmc write(iout,*)'DKT_MCMF2=',dkt_mcmf2
1734 cfmc call reada(mcmcard,'RCUTINI',rcutini,3.5D0)
1735 cfmc write(iout,*)'RCUTINI=',rcutini
1736 cfmc call reada(mcmcard,'GRAT',grat,0.5D0)
1737 cfmc write(iout,*)'GRAT=',grat
1738 cfmc call reada(mcmcard,'BIAS_MCMF',bias_mcmf,0.0D0)
1739 cfmc write(iout,*)'BIAS_MCMF=',bias_mcmf
1743 c----------------------------------------------------------------------------
1745 implicit real*8 (a-h,o-z)
1746 include 'DIMENSIONS'
1747 include 'COMMON.MCM'
1748 include 'COMMON.MCE'
1749 include 'COMMON.IOUNITS'
1751 character*320 mcmcard
1752 call card_concat(mcmcard)
1753 call readi(mcmcard,'MAXACC',maxacc,100)
1754 call readi(mcmcard,'MAX_MCM_IT',max_mcm_it,10000)
1755 call readi(mcmcard,'MAXTRIAL',maxtrial,100)
1756 call readi(mcmcard,'MAXTRIAL_ITER',maxtrial_iter,1000)
1757 call readi(mcmcard,'MAXREPM',maxrepm,200)
1758 call reada(mcmcard,'RANFRACT',RanFract,0.5D0)
1759 call reada(mcmcard,'POOL_FRACT',pool_fraction,0.01D0)
1760 call reada(mcmcard,'OVERLAP',overlap_cut,1.0D3)
1761 call reada(mcmcard,'E_UP',e_up,5.0D0)
1762 call reada(mcmcard,'DELTE',delte,0.1D0)
1763 call readi(mcmcard,'NSWEEP',nsweep,5)
1764 call readi(mcmcard,'NSTEPH',nsteph,0)
1765 call readi(mcmcard,'NSTEPC',nstepc,0)
1766 call reada(mcmcard,'TMIN',tmin,298.0D0)
1767 call reada(mcmcard,'TMAX',tmax,298.0D0)
1768 call readi(mcmcard,'NWINDOW',nwindow,0)
1769 call readi(mcmcard,'PRINT_MC',print_mc,0)
1770 print_stat=(index(mcmcard,'NO_PRINT_STAT').le.0)
1771 print_int=(index(mcmcard,'NO_PRINT_INT').le.0)
1772 ent_read=(index(mcmcard,'ENT_READ').gt.0)
1773 call readi(mcmcard,'SAVE_FREQ',save_frequency,1000)
1774 call readi(mcmcard,'MESSAGE_FREQ',message_frequency,1000)
1775 call readi(mcmcard,'POOL_READ_FREQ',pool_read_freq,5000)
1776 call readi(mcmcard,'POOL_SAVE_FREQ',pool_save_freq,1000)
1777 call readi(mcmcard,'PRINT_FREQ',print_freq,1000)
1778 if (nwindow.gt.0) then
1779 read (inp,*) (winstart(i),winend(i),i=1,nwindow)
1781 winlen(i)=winend(i)-winstart(i)+1
1784 if (tmax.lt.tmin) tmax=tmin
1785 if (tmax.eq.tmin) then
1789 if (nstepc.gt.0 .and. nsteph.gt.0) then
1790 tsteph=(tmax/tmin)**(1.0D0/(nsteph+0.0D0))
1791 tstepc=(tmax/tmin)**(1.0D0/(nstepc+0.0D0))
1793 C Probabilities of different move types
1794 sumpro_type(0)=0.0D0
1795 call reada(mcmcard,'MULTI_BOND',sumpro_type(1),1.0d0)
1796 call reada(mcmcard,'ONE_ANGLE' ,sumpro_type(2),2.0d0)
1797 sumpro_type(2)=sumpro_type(1)+sumpro_type(2)
1798 call reada(mcmcard,'THETA' ,sumpro_type(3),0.0d0)
1799 sumpro_type(3)=sumpro_type(2)+sumpro_type(3)
1800 call reada(mcmcard,'SIDE_CHAIN',sumpro_type(4),0.5d0)
1801 sumpro_type(4)=sumpro_type(3)+sumpro_type(4)
1803 print *,'i',i,' sumprotype',sumpro_type(i)
1804 sumpro_type(i)=sumpro_type(i)/sumpro_type(MaxMoveType)
1805 print *,'i',i,' sumprotype',sumpro_type(i)
1809 c----------------------------------------------------------------------------
1810 subroutine read_minim
1811 implicit real*8 (a-h,o-z)
1812 include 'DIMENSIONS'
1813 include 'COMMON.MINIM'
1814 include 'COMMON.IOUNITS'
1816 character*320 minimcard
1817 call card_concat(minimcard)
1818 call readi(minimcard,'MAXMIN',maxmin,2000)
1819 call readi(minimcard,'MAXFUN',maxfun,5000)
1820 call readi(minimcard,'MINMIN',minmin,maxmin)
1821 call readi(minimcard,'MINFUN',minfun,maxmin)
1822 call reada(minimcard,'TOLF',tolf,1.0D-2)
1823 call reada(minimcard,'RTOLF',rtolf,1.0D-4)
1824 print_min_stat=min0(index(minimcard,'PRINT_MIN_STAT'),1)
1825 print_min_res=min0(index(minimcard,'PRINT_MIN_RES'),1)
1826 print_min_ini=min0(index(minimcard,'PRINT_MIN_INI'),1)
1827 write (iout,'(/80(1h*)/20x,a/80(1h*))')
1828 & 'Options in energy minimization:'
1829 write (iout,'(4(a,i5),a,1pe14.5,a,1pe14.5)')
1830 & 'MaxMin:',MaxMin,' MaxFun:',MaxFun,
1831 & 'MinMin:',MinMin,' MinFun:',MinFun,
1832 & ' TolF:',TolF,' RTolF:',RTolF
1835 c----------------------------------------------------------------------------
1836 subroutine read_angles(kanal,*)
1837 implicit real*8 (a-h,o-z)
1838 include 'DIMENSIONS'
1839 include 'COMMON.GEO'
1840 include 'COMMON.VAR'
1841 include 'COMMON.CHAIN'
1842 include 'COMMON.IOUNITS'
1843 include 'COMMON.CONTROL'
1844 c Read angles from input
1846 read (kanal,*,err=10,end=10) (theta(i),i=3,nres)
1847 read (kanal,*,err=10,end=10) (phi(i),i=4,nres)
1848 read (kanal,*,err=10,end=10) (alph(i),i=2,nres-1)
1849 read (kanal,*,err=10,end=10) (omeg(i),i=2,nres-1)
1852 c 9/7/01 avoid 180 deg valence angle
1853 if (theta(i).gt.179.99d0) theta(i)=179.99d0
1855 theta(i)=deg2rad*theta(i)
1856 phi(i)=deg2rad*phi(i)
1857 alph(i)=deg2rad*alph(i)
1858 omeg(i)=deg2rad*omeg(i)
1863 c----------------------------------------------------------------------------
1864 subroutine reada(rekord,lancuch,wartosc,default)
1866 character*(*) rekord,lancuch
1867 double precision wartosc,default
1870 iread=index(rekord,lancuch)
1871 if (iread.eq.0) then
1875 iread=iread+ilen(lancuch)+1
1876 read (rekord(iread:),*,err=10,end=10) wartosc
1881 c----------------------------------------------------------------------------
1882 subroutine readi(rekord,lancuch,wartosc,default)
1884 character*(*) rekord,lancuch
1885 integer wartosc,default
1888 iread=index(rekord,lancuch)
1889 if (iread.eq.0) then
1893 iread=iread+ilen(lancuch)+1
1894 read (rekord(iread:),*,err=10,end=10) wartosc
1899 c----------------------------------------------------------------------------
1900 subroutine multreadi(rekord,lancuch,tablica,dim,default)
1903 integer tablica(dim),default
1904 character*(*) rekord,lancuch
1911 iread=index(rekord,lancuch(:ilen(lancuch))//"=")
1912 if (iread.eq.0) return
1913 iread=iread+ilen(lancuch)+1
1914 read (rekord(iread:),*,end=10,err=10) (tablica(i),i=1,dim)
1917 c----------------------------------------------------------------------------
1918 subroutine multreada(rekord,lancuch,tablica,dim,default)
1921 double precision tablica(dim),default
1922 character*(*) rekord,lancuch
1929 iread=index(rekord,lancuch(:ilen(lancuch))//"=")
1930 if (iread.eq.0) return
1931 iread=iread+ilen(lancuch)+1
1932 read (rekord(iread:),*,end=10,err=10) (tablica(i),i=1,dim)
1935 c----------------------------------------------------------------------------
1936 subroutine openunits
1937 implicit real*8 (a-h,o-z)
1938 include 'DIMENSIONS'
1941 character*16 form,nodename
1944 include 'COMMON.SETUP'
1945 include 'COMMON.IOUNITS'
1947 include 'COMMON.CONTROL'
1948 integer lenpre,lenpot,ilen,lentmp
1950 character*3 out1file_text,ucase
1953 c print *,"Processor",myrank,"fg_rank",fg_rank," entered openunits"
1954 call getenv_loc("PREFIX",prefix)
1956 call getenv_loc("POT",pot)
1957 call getenv_loc("DIRTMP",tmpdir)
1958 call getenv_loc("CURDIR",curdir)
1959 call getenv_loc("OUT1FILE",out1file_text)
1960 c print *,"Processor",myrank,"fg_rank",fg_rank," did GETENV"
1961 out1file_text=ucase(out1file_text)
1962 if (out1file_text(1:1).eq."Y") then
1965 out1file=fg_rank.gt.0
1970 if (lentmp.gt.0) then
1971 write (*,'(80(1h!))')
1972 write (*,'(a,19x,a,19x,a)') "!"," A T T E N T I O N ","!"
1973 write (*,'(80(1h!))')
1974 write (*,*)"All output files will be on node /tmp directory."
1976 call MPI_GET_PROCESSOR_NAME( nodename, nodelen, IERROR )
1977 if (me.eq.king) then
1978 write (*,*) "The master node is ",nodename
1979 else if (fg_rank.eq.0) then
1980 write (*,*) "I am the CG slave node ",nodename
1982 write (*,*) "I am the FG slave node ",nodename
1985 PREFIX = tmpdir(:lentmp)//'/'//prefix(:lenpre)
1986 lenpre = lentmp+lenpre+1
1988 entname=prefix(:lenpre)//'_'//pot(:lenpot)//'.entr'
1989 C Get the names and open the input files
1990 #if defined(WINIFL) || defined(WINPGI)
1991 open(1,file=pref_orig(:ilen(pref_orig))//
1992 & '.inp',status='old',readonly,shared)
1993 open (9,file=prefix(:ilen(prefix))//'.intin',status='unknown')
1994 C open (18,file=prefix(:ilen(prefix))//'.entin',status='unknown')
1995 C Get parameter filenames and open the parameter files.
1996 call getenv_loc('BONDPAR',bondname)
1997 open (ibond,file=bondname,status='old',readonly,shared)
1998 call getenv_loc('THETPAR',thetname)
1999 open (ithep,file=thetname,status='old',readonly,shared)
2001 call getenv_loc('THETPARPDB',thetname_pdb)
2002 open (ithep_pdb,file=thetname_pdb,status='old',readonly,shared)
2004 call getenv_loc('ROTPAR',rotname)
2005 open (irotam,file=rotname,status='old',readonly,shared)
2007 call getenv_loc('ROTPARPDB',rotname_pdb)
2008 open (irotam_pdb,file=rotname_pdb,status='old',readonly,shared)
2010 call getenv_loc('TORPAR',torname)
2011 open (itorp,file=torname,status='old',readonly,shared)
2012 call getenv_loc('TORDPAR',tordname)
2013 open (itordp,file=tordname,status='old',readonly,shared)
2014 call getenv_loc('FOURIER',fouriername)
2015 open (ifourier,file=fouriername,status='old',readonly,shared)
2016 call getenv_loc('ELEPAR',elename)
2017 open (ielep,file=elename,status='old',readonly,shared)
2018 call getenv_loc('SIDEPAR',sidename)
2019 open (isidep,file=sidename,status='old',readonly,shared)
2020 #elif (defined CRAY) || (defined AIX)
2021 open(1,file=pref_orig(:ilen(pref_orig))//'.inp',status='old',
2023 c print *,"Processor",myrank," opened file 1"
2024 open (9,file=prefix(:ilen(prefix))//'.intin',status='unknown')
2025 c print *,"Processor",myrank," opened file 9"
2026 C open (18,file=prefix(:ilen(prefix))//'.entin',status='unknown')
2027 C Get parameter filenames and open the parameter files.
2028 call getenv_loc('BONDPAR',bondname)
2029 open (ibond,file=bondname,status='old',action='read')
2030 c print *,"Processor",myrank," opened file IBOND"
2031 call getenv_loc('THETPAR',thetname)
2032 open (ithep,file=thetname,status='old',action='read')
2033 c print *,"Processor",myrank," opened file ITHEP"
2035 call getenv_loc('THETPARPDB',thetname_pdb)
2036 open (ithep_pdb,file=thetname_pdb,status='old',action='read')
2038 call getenv_loc('ROTPAR',rotname)
2039 open (irotam,file=rotname,status='old',action='read')
2040 c print *,"Processor",myrank," opened file IROTAM"
2042 call getenv_loc('ROTPARPDB',rotname_pdb)
2043 open (irotam_pdb,file=rotname_pdb,status='old',action='read')
2045 call getenv_loc('TORPAR',torname)
2046 open (itorp,file=torname,status='old',action='read')
2047 c print *,"Processor",myrank," opened file ITORP"
2048 call getenv_loc('TORDPAR',tordname)
2049 open (itordp,file=tordname,status='old',action='read')
2050 c print *,"Processor",myrank," opened file ITORDP"
2051 call getenv_loc('SCCORPAR',sccorname)
2052 open (isccor,file=sccorname,status='old',action='read')
2053 c print *,"Processor",myrank," opened file ISCCOR"
2054 call getenv_loc('FOURIER',fouriername)
2055 open (ifourier,file=fouriername,status='old',action='read')
2056 c print *,"Processor",myrank," opened file IFOURIER"
2057 call getenv_loc('ELEPAR',elename)
2058 open (ielep,file=elename,status='old',action='read')
2059 c print *,"Processor",myrank," opened file IELEP"
2060 call getenv_loc('SIDEPAR',sidename)
2061 open (isidep,file=sidename,status='old',action='read')
2062 c print *,"Processor",myrank," opened file ISIDEP"
2063 c print *,"Processor",myrank," opened parameter files"
2065 open(1,file=pref_orig(:ilen(pref_orig))//'.inp',status='old')
2066 open (9,file=prefix(:ilen(prefix))//'.intin',status='unknown')
2067 C open (18,file=prefix(:ilen(prefix))//'.entin',status='unknown')
2068 C Get parameter filenames and open the parameter files.
2069 call getenv_loc('BONDPAR',bondname)
2070 open (ibond,file=bondname,status='old')
2071 call getenv_loc('THETPAR',thetname)
2072 open (ithep,file=thetname,status='old')
2074 call getenv_loc('THETPARPDB',thetname_pdb)
2075 open (ithep_pdb,file=thetname_pdb,status='old')
2077 call getenv_loc('ROTPAR',rotname)
2078 open (irotam,file=rotname,status='old')
2080 call getenv_loc('ROTPARPDB',rotname_pdb)
2081 open (irotam_pdb,file=rotname_pdb,status='old')
2083 call getenv_loc('TORPAR',torname)
2084 open (itorp,file=torname,status='old')
2085 call getenv_loc('TORDPAR',tordname)
2086 open (itordp,file=tordname,status='old')
2087 call getenv_loc('SCCORPAR',sccorname)
2088 open (isccor,file=sccorname,status='old')
2089 call getenv_loc('FOURIER',fouriername)
2090 open (ifourier,file=fouriername,status='old')
2091 call getenv_loc('ELEPAR',elename)
2092 open (ielep,file=elename,status='old')
2093 call getenv_loc('SIDEPAR',sidename)
2094 open (isidep,file=sidename,status='old')
2096 open(1,file=pref_orig(:ilen(pref_orig))//'.inp',status='old',
2098 open (9,file=prefix(:ilen(prefix))//'.intin',status='unknown')
2099 C open (18,file=prefix(:ilen(prefix))//'.entin',status='unknown')
2100 C Get parameter filenames and open the parameter files.
2101 call getenv_loc('BONDPAR',bondname)
2102 open (ibond,file=bondname,status='old',action='read')
2103 call getenv_loc('THETPAR',thetname)
2104 open (ithep,file=thetname,status='old',action='read')
2106 call getenv_loc('THETPARPDB',thetname_pdb)
2107 print *,"thetname_pdb ",thetname_pdb
2108 open (ithep_pdb,file=thetname_pdb,status='old',action='read')
2109 print *,ithep_pdb," opened"
2111 call getenv_loc('ROTPAR',rotname)
2112 open (irotam,file=rotname,status='old',action='read')
2114 call getenv_loc('ROTPARPDB',rotname_pdb)
2115 open (irotam_pdb,file=rotname_pdb,status='old',action='read')
2117 call getenv_loc('TORPAR',torname)
2118 open (itorp,file=torname,status='old',action='read')
2119 call getenv_loc('TORDPAR',tordname)
2120 open (itordp,file=tordname,status='old',action='read')
2121 call getenv_loc('SCCORPAR',sccorname)
2122 open (isccor,file=sccorname,status='old',action='read')
2123 call getenv_loc('FOURIER',fouriername)
2124 open (ifourier,file=fouriername,status='old',action='read')
2125 call getenv_loc('ELEPAR',elename)
2126 open (ielep,file=elename,status='old',action='read')
2127 call getenv_loc('SIDEPAR',sidename)
2128 open (isidep,file=sidename,status='old',action='read')
2132 C 8/9/01 In the newest version SCp interaction constants are read from a file
2133 C Use -DOLDSCP to use hard-coded constants instead.
2135 call getenv_loc('SCPPAR',scpname)
2136 #if defined(WINIFL) || defined(WINPGI)
2137 open (iscpp,file=scpname,status='old',readonly,shared)
2138 #elif (defined CRAY) || (defined AIX)
2139 open (iscpp,file=scpname,status='old',action='read')
2141 open (iscpp,file=scpname,status='old')
2143 open (iscpp,file=scpname,status='old',action='read')
2146 call getenv_loc('PATTERN',patname)
2147 #if defined(WINIFL) || defined(WINPGI)
2148 open (icbase,file=patname,status='old',readonly,shared)
2149 #elif (defined CRAY) || (defined AIX)
2150 open (icbase,file=patname,status='old',action='read')
2152 open (icbase,file=patname,status='old')
2154 open (icbase,file=patname,status='old',action='read')
2157 C Open output file only for CG processes
2158 c print *,"Processor",myrank," fg_rank",fg_rank
2159 if (fg_rank.eq.0) then
2161 if (nodes.eq.1) then
2164 npos = dlog10(dfloat(nodes-1))+1
2166 if (npos.lt.3) npos=3
2167 write (liczba,'(i1)') npos
2168 form = '(bz,i'//liczba(:ilen(liczba))//'.'//liczba(:ilen(liczba))
2170 write (liczba,form) me
2171 outname=prefix(:lenpre)//'.out_'//pot(:lenpot)//
2172 & liczba(:ilen(liczba))
2173 intname=prefix(:lenpre)//'_'//pot(:lenpot)//liczba(:ilen(liczba))
2175 pdbname=prefix(:lenpre)//'_'//pot(:lenpot)//liczba(:ilen(liczba))
2177 mol2name=prefix(:lenpre)//'_'//pot(:lenpot)//
2178 & liczba(:ilen(liczba))//'.mol2'
2179 statname=prefix(:lenpre)//'_'//pot(:lenpot)//
2180 & liczba(:ilen(liczba))//'.stat'
2182 & call copy_to_tmp(pref_orig(:ilen(pref_orig))//'_'//pot(:lenpot)
2183 & //liczba(:ilen(liczba))//'.stat')
2184 rest2name=prefix(:ilen(prefix))//"_"//liczba(:ilen(liczba))
2187 qname=prefix(:lenpre)//'_'//pot(:lenpot)//
2188 & liczba(:ilen(liczba))//'.const'
2193 outname=prefix(:lenpre)//'.out_'//pot(:lenpot)
2194 intname=prefix(:lenpre)//'_'//pot(:lenpot)//'.int'
2195 pdbname=prefix(:lenpre)//'_'//pot(:lenpot)//'.pdb'
2196 mol2name=prefix(:lenpre)//'_'//pot(:lenpot)//'.mol2'
2197 statname=prefix(:lenpre)//'_'//pot(:lenpot)//'.stat'
2199 & call copy_to_tmp(pref_orig(:ilen(pref_orig))//'_'//pot(:lenpot)
2201 rest2name=prefix(:ilen(prefix))//'.rst'
2203 qname=prefix(:lenpre)//'_'//pot(:lenpot)//'.const'
2206 #if defined(AIX) || defined(PGI)
2207 if (me.eq.king .or. .not. out1file)
2208 & open(iout,file=outname,status='unknown')
2211 if (fg_rank.gt.0) then
2212 write (liczba,'(i3.3)') myrank/nfgtasks
2213 write (ll,'(bz,i3.3)') fg_rank
2214 open(iout,file="debug"//liczba(:ilen(liczba))//"."//ll,
2220 open(igeom,file=intname,status='unknown',position='append')
2221 open(ipdb,file=pdbname,status='unknown')
2222 open(imol2,file=mol2name,status='unknown')
2223 open(istat,file=statname,status='unknown',position='append')
2225 c1out open(iout,file=outname,status='unknown')
2228 if (me.eq.king .or. .not.out1file)
2229 & open(iout,file=outname,status='unknown')
2232 if (fg_rank.gt.0) then
2233 print "Processor",fg_rank," opening output file"
2234 write (liczba,'(i3.3)') myrank/nfgtasks
2235 write (ll,'(bz,i3.3)') fg_rank
2236 open(iout,file="debug"//liczba(:ilen(liczba))//"."//ll,
2242 open(igeom,file=intname,status='unknown',access='append')
2243 open(ipdb,file=pdbname,status='unknown')
2244 open(imol2,file=mol2name,status='unknown')
2245 open(istat,file=statname,status='unknown',access='append')
2247 c1out open(iout,file=outname,status='unknown')
2250 csa csa_rbank=prefix(:lenpre)//'.CSA.rbank'
2251 csa csa_seed=prefix(:lenpre)//'.CSA.seed'
2252 csa csa_history=prefix(:lenpre)//'.CSA.history'
2253 csa csa_bank=prefix(:lenpre)//'.CSA.bank'
2254 csa csa_bank1=prefix(:lenpre)//'.CSA.bank1'
2255 csa csa_alpha=prefix(:lenpre)//'.CSA.alpha'
2256 csa csa_alpha1=prefix(:lenpre)//'.CSA.alpha1'
2257 csac!bankt csa_bankt=prefix(:lenpre)//'.CSA.bankt'
2258 csa csa_int=prefix(:lenpre)//'.int'
2259 csa csa_bank_reminimized=prefix(:lenpre)//'.CSA.bank_reminimized'
2260 csa csa_native_int=prefix(:lenpre)//'.CSA.native.int'
2261 csa csa_in=prefix(:lenpre)//'.CSA.in'
2262 c print *,"Processor",myrank,"fg_rank",fg_rank," opened files"
2265 write (iout,'(80(1h-))')
2266 write (iout,'(30x,a)') "FILE ASSIGNMENT"
2267 write (iout,'(80(1h-))')
2268 write (iout,*) "Input file : ",
2269 & pref_orig(:ilen(pref_orig))//'.inp'
2270 write (iout,*) "Output file : ",
2271 & outname(:ilen(outname))
2273 write (iout,*) "Sidechain potential file : ",
2274 & sidename(:ilen(sidename))
2276 write (iout,*) "SCp potential file : ",
2277 & scpname(:ilen(scpname))
2279 write (iout,*) "Electrostatic potential file : ",
2280 & elename(:ilen(elename))
2281 write (iout,*) "Cumulant coefficient file : ",
2282 & fouriername(:ilen(fouriername))
2283 write (iout,*) "Torsional parameter file : ",
2284 & torname(:ilen(torname))
2285 write (iout,*) "Double torsional parameter file : ",
2286 & tordname(:ilen(tordname))
2287 write (iout,*) "SCCOR parameter file : ",
2288 & sccorname(:ilen(sccorname))
2289 write (iout,*) "Bond & inertia constant file : ",
2290 & bondname(:ilen(bondname))
2291 write (iout,*) "Bending parameter file : ",
2292 & thetname(:ilen(thetname))
2293 write (iout,*) "Rotamer parameter file : ",
2294 & rotname(:ilen(rotname))
2295 write (iout,*) "Threading database : ",
2296 & patname(:ilen(patname))
2298 &write (iout,*)" DIRTMP : ",
2300 write (iout,'(80(1h-))')
2304 c----------------------------------------------------------------------------
2305 subroutine card_concat(card)
2306 implicit real*8 (a-h,o-z)
2307 include 'DIMENSIONS'
2308 include 'COMMON.IOUNITS'
2310 character*80 karta,ucase
2312 read (inp,'(a)') karta
2315 do while (karta(80:80).eq.'&')
2316 card=card(:ilen(card)+1)//karta(:79)
2317 read (inp,'(a)') karta
2320 card=card(:ilen(card)+1)//karta
2323 c----------------------------------------------------------------------------------
2325 implicit real*8 (a-h,o-z)
2326 include 'DIMENSIONS'
2327 include 'COMMON.CHAIN'
2328 include 'COMMON.IOUNITS'
2330 open(irest2,file=rest2name,status='unknown')
2331 read(irest2,*) totT,EK,potE,totE,t_bath
2333 read(irest2,'(3e15.5)') (d_t(j,i),j=1,3)
2336 read(irest2,'(3e15.5)') (dc(j,i),j=1,3)
2339 read (irest2,*) iset
2344 c---------------------------------------------------------------------------------
2345 subroutine read_fragments
2346 implicit real*8 (a-h,o-z)
2347 include 'DIMENSIONS'
2351 include 'COMMON.SETUP'
2352 include 'COMMON.CHAIN'
2353 include 'COMMON.IOUNITS'
2355 include 'COMMON.CONTROL'
2356 read(inp,*) nset,nfrag,npair,nfrag_back
2357 if(me.eq.king.or..not.out1file)
2358 & write(iout,*) "nset",nset," nfrag",nfrag," npair",npair,
2359 & " nfrag_back",nfrag_back
2361 read(inp,*) mset(iset)
2363 read(inp,*) wfrag(i,iset),ifrag(1,i,iset),ifrag(2,i,iset),
2365 if(me.eq.king.or..not.out1file)
2366 & write(iout,*) "R ",i,wfrag(i,iset),ifrag(1,i,iset),
2367 & ifrag(2,i,iset), qinfrag(i,iset)
2370 read(inp,*) wpair(i,iset),ipair(1,i,iset),ipair(2,i,iset),
2372 if(me.eq.king.or..not.out1file)
2373 & write(iout,*) "R ",i,wpair(i,iset),ipair(1,i,iset),
2374 & ipair(2,i,iset), qinpair(i,iset)
2377 read(inp,*) wfrag_back(1,i,iset),wfrag_back(2,i,iset),
2378 & wfrag_back(3,i,iset),
2379 & ifrag_back(1,i,iset),ifrag_back(2,i,iset)
2380 if(me.eq.king.or..not.out1file)
2381 & write(iout,*) "A",i,wfrag_back(1,i,iset),wfrag_back(2,i,iset),
2382 & wfrag_back(3,i,iset),ifrag_back(1,i,iset),ifrag_back(2,i,iset)
2387 c-------------------------------------------------------------------------------
2388 subroutine read_dist_constr
2389 implicit real*8 (a-h,o-z)
2390 include 'DIMENSIONS'
2394 include 'COMMON.SETUP'
2395 include 'COMMON.CONTROL'
2396 include 'COMMON.CHAIN'
2397 include 'COMMON.IOUNITS'
2398 include 'COMMON.SBRIDGE'
2399 integer ifrag_(2,100),ipair_(2,100)
2400 double precision wfrag_(100),wpair_(100)
2401 character*500 controlcard
2402 c write (iout,*) "Calling read_dist_constr"
2403 c write (iout,*) "nres",nres," nstart_sup",nstart_sup," nsup",nsup
2405 call card_concat(controlcard)
2406 call readi(controlcard,"NFRAG",nfrag_,0)
2407 call readi(controlcard,"NPAIR",npair_,0)
2408 call readi(controlcard,"NDIST",ndist_,0)
2409 call reada(controlcard,'DIST_CUT',dist_cut,5.0d0)
2410 call multreadi(controlcard,"IFRAG",ifrag_(1,1),2*nfrag_,0)
2411 call multreadi(controlcard,"IPAIR",ipair_(1,1),2*npair_,0)
2412 call multreada(controlcard,"WFRAG",wfrag_(1),nfrag_,0.0d0)
2413 call multreada(controlcard,"WPAIR",wpair_(1),npair_,0.0d0)
2414 c write (iout,*) "NFRAG",nfrag_," NPAIR",npair_," NDIST",ndist_
2415 c write (iout,*) "IFRAG"
2417 c write (iout,*) i,ifrag_(1,i),ifrag_(2,i),wfrag_(i)
2419 c write (iout,*) "IPAIR"
2421 c write (iout,*) i,ipair_(1,i),ipair_(2,i),wpair_(i)
2423 if (.not.refstr .and. nfrag.gt.0) then
2425 & "ERROR: no reference structure to compute distance restraints"
2427 & "Restraints must be specified explicitly (NDIST=number)"
2430 if (nfrag.lt.2 .and. npair.gt.0) then
2431 write (iout,*) "ERROR: Less than 2 fragments specified",
2432 & " but distance restraints between pairs requested"
2437 if (ifrag_(1,i).lt.nstart_sup) ifrag_(1,i)=nstart_sup
2438 if (ifrag_(2,i).gt.nstart_sup+nsup-1)
2439 & ifrag_(2,i)=nstart_sup+nsup-1
2440 c write (iout,*) i,ifrag_(1,i),ifrag_(2,i),wfrag_(i)
2442 if (wfrag_(i).gt.0.0d0) then
2443 do j=ifrag_(1,i),ifrag_(2,i)-1
2444 do k=j+1,ifrag_(2,i)
2445 write (iout,*) "j",j," k",k
2447 if (constr_dist.eq.1) then
2452 forcon(nhpb)=wfrag_(i)
2453 else if (constr_dist.eq.2) then
2454 if (ddjk.le.dist_cut) then
2459 forcon(nhpb)=wfrag_(i)
2466 forcon(nhpb)=wfrag_(i)*dexp(-0.5d0*(ddjk/dist_cut)**2)
2469 if (.not.out1file .or. me.eq.king)
2470 & write (iout,'(a,3i5,f8.2,1pe12.2)') "+dist.constr ",
2471 & nhpb,ihpb(nhpb),jhpb(nhpb),dhpb(nhpb),forcon(nhpb)
2473 write (iout,'(a,3i5,f8.2,1pe12.2)') "+dist.constr ",
2474 & nhpb,ihpb(nhpb),jhpb(nhpb),dhpb(nhpb),forcon(nhpb)
2481 if (wpair_(i).gt.0.0d0) then
2489 do j=ifrag_(1,ii),ifrag_(2,ii)
2490 do k=ifrag_(1,jj),ifrag_(2,jj)
2494 forcon(nhpb)=wpair_(i)
2495 dhpb(nhpb)=dist(j,k)
2497 if (.not.out1file .or. me.eq.king)
2498 & write (iout,'(a,3i5,f8.2,f10.1)') "+dist.constr ",
2499 & nhpb,ihpb(nhpb),jhpb(nhpb),dhpb(nhpb),forcon(nhpb)
2501 write (iout,'(a,3i5,f8.2,f10.1)') "+dist.constr ",
2502 & nhpb,ihpb(nhpb),jhpb(nhpb),dhpb(nhpb),forcon(nhpb)
2509 read (inp,*) ihpb(nhpb+1),jhpb(nhpb+1),dhpb(i),dhpb1(i),
2510 & ibecarb(i),forcon(nhpb+1)
2511 if (forcon(nhpb+1).gt.0.0d0) then
2513 if (ibecarb(i).gt.0) then
2514 ihpb(i)=ihpb(i)+nres
2515 jhpb(i)=jhpb(i)+nres
2517 if (dhpb(nhpb).eq.0.0d0)
2518 & dhpb(nhpb)=dist(ihpb(nhpb),jhpb(nhpb))
2522 if (.not.out1file .or. me.eq.king) then
2525 write (iout,'(a,3i5,2f8.2,i2,f10.1)') "+dist.constr ",
2526 & i,ihpb(i),jhpb(i),dhpb(i),dhpb1(i),ibecarb(i),forcon(i)
2534 c-------------------------------------------------------------------------------
2536 subroutine flush(iu)
2541 subroutine flush(iu)
2546 c------------------------------------------------------------------------------
2547 subroutine copy_to_tmp(source)
2548 include "DIMENSIONS"
2549 include "COMMON.IOUNITS"
2550 character*(*) source
2551 character* 256 tmpfile
2555 tmpfile=curdir(:ilen(curdir))//"/"//source(:ilen(source))
2556 inquire(file=tmpfile,exist=ex)
2558 write (*,*) "Copying ",tmpfile(:ilen(tmpfile)),
2559 & " to temporary directory..."
2560 write (*,*) "/bin/cp "//tmpfile(:ilen(tmpfile))//" "//tmpdir
2561 call system("/bin/cp "//tmpfile(:ilen(tmpfile))//" "//tmpdir)
2565 c------------------------------------------------------------------------------
2566 subroutine move_from_tmp(source)
2567 include "DIMENSIONS"
2568 include "COMMON.IOUNITS"
2569 character*(*) source
2572 write (*,*) "Moving ",source(:ilen(source)),
2573 & " from temporary directory to working directory"
2574 write (*,*) "/bin/mv "//source(:ilen(source))//" "//curdir
2575 call system("/bin/mv "//source(:ilen(source))//" "//curdir)
2578 c------------------------------------------------------------------------------
2579 subroutine random_init(seed)
2581 C Initialize random number generator
2583 implicit real*8 (a-h,o-z)
2584 include 'DIMENSIONS'
2590 logical OKRandom, prng_restart
2592 integer iseed_array(4)
2594 include 'COMMON.IOUNITS'
2595 include 'COMMON.TIME1'
2596 include 'COMMON.THREAD'
2597 include 'COMMON.SBRIDGE'
2598 include 'COMMON.CONTROL'
2599 include 'COMMON.MCM'
2600 include 'COMMON.MAP'
2601 include 'COMMON.HEADER'
2602 csa include 'COMMON.CSA'
2603 include 'COMMON.CHAIN'
2604 include 'COMMON.MUCA'
2606 include 'COMMON.FFIELD'
2607 include 'COMMON.SETUP'
2608 iseed=-dint(dabs(seed))
2609 if (iseed.eq.0) then
2610 write (iout,'(/80(1h*)/20x,a/80(1h*))')
2611 & 'Random seed undefined. The program will stop.'
2612 write (*,'(/80(1h*)/20x,a/80(1h*))')
2613 & 'Random seed undefined. The program will stop.'
2615 call mpi_finalize(mpi_comm_world,ierr)
2617 stop 'Bad random seed.'
2620 if (fg_rank.eq.0) then
2624 if(me.eq.king .or. .not. out1file)
2625 & write (iout,*) 'MPI: node= ', me, ' iseed= ',iseedi8
2626 write (*,*) 'MPI: node= ', me, ' iseed= ',iseedi8
2627 OKRandom = prng_restart(me,iseedi8)
2630 tmp=65536.0d0**(4-i)
2631 iseed_array(i) = dint(seed/tmp)
2632 seed=seed-iseed_array(i)*tmp
2634 if(me.eq.king .or. .not. out1file)
2635 & write (iout,*) 'MPI: node= ', me, ' iseed(4)= ',
2636 & (iseed_array(i),i=1,4)
2637 write (*,*) 'MPI: node= ',me, ' iseed(4)= ',
2638 & (iseed_array(i),i=1,4)
2639 OKRandom = prng_restart(me,iseed_array)
2642 r1=ran_number(0.0D0,1.0D0)
2643 if(me.eq.king .or. .not. out1file)
2644 & write (iout,*) 'ran_num',r1
2645 if (r1.lt.0.0d0) OKRandom=.false.
2647 if (.not.OKRandom) then
2648 write (iout,*) 'PRNG IS NOT WORKING!!!'
2649 print *,'PRNG IS NOT WORKING!!!'
2652 call mpi_abort(mpi_comm_world,error_msg,ierr)
2655 write (iout,*) 'too many processors for parallel prng'
2656 write (*,*) 'too many processors for parallel prng'
2664 write (iout,*) 'ran_num',ran_number(0.0d0,1.0d0)