9 !-----------------------------------------------------------------------------
10 ! Max. number of residue types and parameters in expressions for
11 ! virtual-bond angle bending potentials
12 ! integer,parameter :: maxthetyp=3
13 ! integer,parameter :: maxthetyp1=maxthetyp+1
15 ! & maxtheterm2=6,maxtheterm3=4,maxsingle=6,maxdouble=4,
16 ! & mmaxtheterm=maxtheterm)
17 !-----------------------------------------------------------------------------
18 ! Max. number of types of dihedral angles & multiplicity of torsional barriers
19 ! and the number of terms in double torsionals
20 ! integer,parameter :: maxlor=3,maxtermd_1=8,maxtermd_2=8
21 ! parameter (maxtor=4,maxterm=10)
22 !-----------------------------------------------------------------------------
23 ! Max number of torsional terms in SCCOR
24 integer,parameter :: maxterm_sccor=6
25 !-----------------------------------------------------------------------------
26 character(len=1),dimension(:),allocatable :: secstruc !(maxres)
27 !-----------------------------------------------------------------------------
30 !-----------------------------------------------------------------------------
33 !-----------------------------------------------------------------------------
35 !-----------------------------------------------------------------------------
36 subroutine write_rbank(jlee,adif,nft)
39 use geometry_data, only: nres,rad2deg
40 ! implicit real*8 (a-h,o-z)
41 ! include 'DIMENSIONS'
42 ! include 'COMMON.IOUNITS'
43 ! include 'COMMON.CSA'
44 ! include 'COMMON.BANK'
45 ! include 'COMMON.CHAIN'
46 ! include 'COMMON.GEO'
48 integer :: nft,i,k,j,l,jlee
51 open(icsa_rbank,file=csa_rbank,status="unknown")
52 write (icsa_rbank,900) jlee,nbank,nstep,nft,icycle,adif
54 write (icsa_rbank,952) k,rene(k),rrmsn(k),rpncn(k)
57 write (icsa_rbank,850) (rad2deg*rvar(i,l,j,k),i=1,4)
64 900 format (1x,"jlee =",i3,3x,"nbank =",i4,3x,"nstep =",&
66 952 format (1x,'#',i4,' total E ',1pe14.5,' rmsd from N ',0pf8.3,&
70 end subroutine write_rbank
71 !-----------------------------------------------------------------------------
72 subroutine read_rbank(jlee,adif)
75 use geometry_data, only: nres,deg2rad
77 ! implicit real*8 (a-h,o-z)
78 ! include 'DIMENSIONS'
80 ! include 'COMMON.IOUNITS'
81 ! include 'COMMON.CSA'
82 ! include 'COMMON.BANK'
83 ! include 'COMMON.CHAIN'
84 ! include 'COMMON.GEO'
85 ! include 'COMMON.SETUP'
86 character(len=80) :: karta
88 integer :: nbankr,nstepr,nftr,icycler,kk,k,j,l,i,&
89 ierror,ierrcode,jlee,jleer
92 open(icsa_rbank,file=csa_rbank,status="old")
93 read (icsa_rbank,901) jleer,nbankr,nstepr,nftr,icycler,adif
94 print *,jleer,nbankr,nstepr,nftr,icycler,adif
95 ! print *, 'adif from read_rbank ',adif
97 if(nbankr.ne.nbank) then
98 write (iout,*) 'ERROR in READ_BANK: NBANKR',nbankr,&
100 call mpi_abort(mpi_comm_world,ierror,ierrcode)
102 if(jleer.ne.jlee) then
103 write (iout,*) 'ERROR in READ_BANK: JLEER',jleer,&
105 call mpi_abort(mpi_comm_world,ierror,ierrcode)
111 read (icsa_rbank,'(a80)') karta
112 write(iout,*) "READ_RBANK: kk=",kk
114 ! if (index(karta,"*").gt.0) then
115 ! write (iout,*) "***** Stars in bankr ***** k=",k,
119 ! read (30,850) (rdummy,i=1,4)
124 call reada(karta,"total E",rene(kk),1.0d20)
125 call reada(karta,"rmsd from N",rrmsn(kk),0.0d0)
126 call reada(karta,"%NC",rpncn(kk),0.0d0)
127 write(iout,*)"total E",bene(kk),"rmsd from N",brmsn(kk),&
128 "%NC",bpncn(kk),ibank(kk)
129 ! read (icsa_rbank,953) kdummy,rene(kk),rrmsn(kk),rpncn(kk)
132 read (icsa_rbank,850) (rvar(i,l,j,kk),i=1,4)
133 ! write (iout,850) (rvar(i,l,j,kk),i=1,4)
135 rvar(i,l,j,kk)=deg2rad*rvar(i,l,j,kk)
141 !d write (*,*) "read_rbank ******************* kk",kk,
143 if (kk.lt.nbankr) nbankr=kk
148 !d write (*,850) (rvar(i,l,j,kk),i=1,4)
155 901 format (1x,6x,i3,3x,7x,i4,3x,7x,i8,i10,i2,f15.5)
156 953 format (1x,1x,i4,9x,f12.3,13x,f8.3,5x,f5.2)
159 end subroutine read_rbank
160 !-----------------------------------------------------------------------------
161 subroutine write_bank(jlee,nft)
164 use control_data, only: vdisulf
165 use geometry_data, only: nres,rad2deg
166 ! implicit real*8 (a-h,o-z)
167 ! include 'DIMENSIONS'
168 ! include 'COMMON.IOUNITS'
169 ! include 'COMMON.CSA'
170 ! include 'COMMON.BANK'
171 ! include 'COMMON.CHAIN'
172 ! include 'COMMON.GEO'
173 ! include 'COMMON.SBRIDGE'
174 ! include 'COMMON.CONTROL'
175 character(len=7) :: chtmp
176 character(len=40) :: chfrm
179 integer :: nft,k,l,i,j,jlee
181 open(icsa_bank,file=csa_bank,status="unknown")
182 write (icsa_bank,900) jlee,nbank,nstep,nft,icycle,cutdif
183 write (icsa_bank,902) nglob_csa, eglob_csa
184 open (igeom,file=intname,status='UNKNOWN')
186 write (icsa_bank,952) k,bene(k),brmsn(k),bpncn(k),ibank(k)
187 if (vdisulf) write (icsa_bank,'(101i4)') &
188 bvar_nss(k),((bvar_ss(j,i,k),j=1,2),i=1,bvar_nss(k))
191 write (icsa_bank,850) (rad2deg*bvar(i,l,j,k),i=1,4)
194 if (bvar_nss(k).le.9) then
195 write (igeom,'(I5,F10.3,I2,9(1X,2I3))') k,bene(k),&
196 bvar_nss(k),(bvar_ss(1,i,k),bvar_ss(2,i,k),i=1,bvar_nss(k))
198 write (igeom,'(I5,F10.3,I2,9(1X,2I3))') k,bene(k),&
199 bvar_nss(k),(bvar_ss(1,i,k),bvar_ss(2,i,k),i=1,9)
200 write (igeom,'(3X,11(1X,2I3))') (bvar_ss(1,i,k),&
201 bvar_ss(2,i,k),i=10,bvar_nss(k))
203 write (igeom,200) (rad2deg*bvar(1,i,1,k),i=2,nres-1)
204 write (igeom,200) (rad2deg*bvar(2,i,1,k),i=2,nres-2)
205 write (igeom,200) (rad2deg*bvar(3,i,1,k),i=2,nres-1)
206 write (igeom,200) (rad2deg*bvar(4,i,1,k),i=2,nres-1)
211 if (nstep/200.gt.ilastnstep) then
213 ilastnstep=(ilastnstep+1)*1.5
214 write(chfrm,'(a2,i1,a1)') '(i',int(dlog10(dble(nstep))+1),')'
215 write(chtmp,chfrm) nstep
216 open(icsa_int,file=prefix(:ilen(prefix)) &
217 //'_'//chtmp(:ilen(chtmp))//'.int',status='UNKNOWN')
219 if (bvar_nss(k).le.9) then
220 write (icsa_int,'(I5,F10.3,I2,9(1X,2I3))') k,bene(k),&
221 bvar_nss(k),(bvar_ss(1,i,k),bvar_ss(2,i,k),i=1,bvar_nss(k))
223 write (icsa_int,'(I5,F10.3,I2,9(1X,2I3))') k,bene(k),&
224 bvar_nss(k),(bvar_ss(1,i,k),bvar_ss(2,i,k),i=1,9)
225 write (icsa_int,'(3X,11(1X,2I3))') (bvar_ss(1,i,k),&
226 bvar_ss(2,i,k),i=10,bvar_nss(k))
228 write (icsa_int,200) (rad2deg*bvar(1,i,1,k),i=2,nres-1)
229 write (icsa_int,200) (rad2deg*bvar(2,i,1,k),i=2,nres-2)
230 write (icsa_int,200) (rad2deg*bvar(3,i,1,k),i=2,nres-1)
231 write (icsa_int,200) (rad2deg*bvar(4,i,1,k),i=2,nres-1)
239 900 format (1x,"jlee =",i3,3x,"nbank =",i4,3x,"nstep =",&
241 902 format (1x,'nglob_csa =',i4,' eglob_csa =',1pe14.5)
242 952 format (1x,'#',i4,' total E ',1pe14.5,' rmsd from N ',0pf8.3,&
246 end subroutine write_bank
247 !-----------------------------------------------------------------------------
248 subroutine write_bank_reminimized(jlee,nft)
251 use geometry_data, only: nres,rad2deg
253 ! implicit real*8 (a-h,o-z)
254 ! include 'DIMENSIONS'
255 ! include 'COMMON.IOUNITS'
256 ! include 'COMMON.CSA'
257 ! include 'COMMON.BANK'
258 ! include 'COMMON.CHAIN'
259 ! include 'COMMON.GEO'
260 ! include 'COMMON.SBRIDGE'
262 integer :: nft,i,l,j,k,jlee
264 open(icsa_bank_reminimized,file=csa_bank_reminimized,&
266 write (icsa_bank_reminimized,900) &
267 jlee,nbank,nstep,nft,icycle,cutdif
268 open (igeom,file=intname,status='UNKNOWN')
270 write (icsa_bank_reminimized,952) k,bene(k),brmsn(k),&
274 write (icsa_bank_reminimized,850) (rad2deg*bvar(i,l,j,k),i=1,4)
278 write (igeom,'(I5,F10.3,I2,9(1X,2I3))') k,bene(k),&
279 nss,(ihpb(i),jhpb(i),i=1,nss)
281 write (igeom,'(I5,F10.3,I2,9(1X,2I3))') k,bene(k),&
282 nss,(ihpb(i),jhpb(i),i=1,9)
283 write (igeom,'(3X,11(1X,2I3))') (ihpb(i),jhpb(i),i=10,nss)
285 write (igeom,200) (rad2deg*bvar(1,i,1,k),i=2,nres-1)
286 write (igeom,200) (rad2deg*bvar(2,i,1,k),i=2,nres-2)
287 write (igeom,200) (rad2deg*bvar(3,i,1,k),i=2,nres-1)
288 write (igeom,200) (rad2deg*bvar(4,i,1,k),i=2,nres-1)
290 close(icsa_bank_reminimized)
295 900 format (1x,"jlee =",i3,3x,"nbank =",i4,3x,"nstep =",&
297 952 format (1x,'#',i4,' total E ',1pe14.5,' rmsd from N ',0pf8.3,&
301 end subroutine write_bank_reminimized
302 !-----------------------------------------------------------------------------
303 subroutine read_bank(jlee,nft,cutdifr)
306 use control_data, only: vdisulf
307 use geometry_data, only: nres,deg2rad
309 ! implicit real*8 (a-h,o-z)
310 ! include 'DIMENSIONS'
311 ! include 'COMMON.IOUNITS'
312 ! include 'COMMON.CSA'
313 ! include 'COMMON.BANK'
314 ! include 'COMMON.CHAIN'
315 ! include 'COMMON.GEO'
316 ! include 'COMMON.CONTROL'
317 ! include 'COMMON.SBRIDGE'
318 character(len=80) :: karta
322 integer :: nft,kk,k,l,i,j,jlee
323 real(kind=8) :: cutdifr
325 open(icsa_bank,file=csa_bank,status="old")
326 read (icsa_bank,901) jlee,nbank,nstep,nft,icycle,cutdifr
327 read (icsa_bank,902) nglob_csa, eglob_csa
328 ! if(jleer.ne.jlee) then
329 ! write (iout,*) 'ERROR in READ_BANK: JLEER',jleer,
331 ! call mpi_abort(mpi_comm_world,ierror,ierrcode)
336 read (icsa_bank,'(a80)') karta
337 write(iout,*) "READ_BANK: kk=",kk
339 ! if (index(karta,"*").gt.0) then
340 ! write (iout,*) "***** Stars in bank ***** k=",k,
344 ! read (33,850) (rdummy,i=1,4)
349 call reada(karta,"total E",bene(kk),1.0d20)
350 call reada(karta,"rmsd from N",brmsn(kk),0.0d0)
351 call reada(karta,"%NC",bpncn(kk),0.0d0)
352 read (karta(ilen(karta)-1:),*,end=111,err=111) ibank(kk)
356 write(iout,*)"total E",bene(kk),"rmsd from N",brmsn(kk),&
357 "%NC",bpncn(kk),ibank(kk)
358 ! read (icsa_bank,953) kdummy,bene(k),brmsn(k),bpncn(k),ibank(k)
360 read (icsa_bank,'(101i4)') &
361 bvar_nss(kk),((bvar_ss(j,i,kk),j=1,2),i=1,bvar_nss(kk))
362 bvar_ns(kk)=ns-2*bvar_nss(kk)
363 write(iout,*) 'read SSBOND',bvar_nss(kk),&
364 ((bvar_ss(j,i,kk),j=1,2),i=1,bvar_nss(kk))
365 !d write(iout,*) 'read CYS #free ', bvar_ns(kk)
369 do while( iss(i).ne.bvar_ss(1,j,kk)-nres .and. &
370 iss(i).ne.bvar_ss(2,j,kk)-nres .and. &
374 if (j.gt.bvar_nss(kk)) then
379 !d write(iout,*)'read CYS free',(bvar_s(l,kk),l=1,bvar_ns(kk))
383 read (icsa_bank,850) (bvar(i,l,j,kk),i=1,4)
384 ! write (iout,850) (bvar(i,l,j,kk),i=1,4)
386 bvar(i,l,j,kk)=deg2rad*bvar(i,l,j,kk)
393 if (kk.lt.nbank) nbank=kk
394 !d write (*,*) "read_bank ******************* kk",kk,
400 !d write (*,850) (bvar(i,l,j,kk),i=1,4)
406 ! read (33,953) kdummy,bene(k),brmsn(k),bpncn(k),ibank(k)
409 ! read (33,850) (bvar(i,l,j,k),i=1,4)
411 ! bvar(i,l,j,k)=deg2rad*bvar(i,l,j,k)
419 952 format (1x,'#',i4,' total E ',f12.3,' rmsd from N ',f8.3,i5)
420 901 format (1x,6x,i3,3x,7x,i4,3x,7x,i8,i10,i2,f15.5)
421 902 format (1x,11x,i4,12x,1pe14.5)
422 953 format (1x,1x,i4,9x,f12.3,13x,f8.3,5x,f5.2,i5)
425 end subroutine read_bank
426 !-----------------------------------------------------------------------------
427 subroutine write_bank1(jlee)
430 use geometry_data, only: nres,rad2deg
431 ! implicit real*8 (a-h,o-z)
432 ! include 'DIMENSIONS'
433 ! include 'COMMON.IOUNITS'
434 ! include 'COMMON.CSA'
435 ! include 'COMMON.BANK'
436 ! include 'COMMON.CHAIN'
437 ! include 'COMMON.GEO'
439 integer :: k,i,l,j,jlee
441 #if defined(AIX) || defined(PGI)
442 open(icsa_bank1,file=csa_bank1,position="append")
444 open(icsa_bank1,file=csa_bank1,access="append")
446 write (icsa_bank1,900) jlee,nbank,nstep,cutdif
448 write (icsa_bank1,952) k,bene(k),brmsn(k),bpncn(k),ibank(k)
451 write (icsa_bank1,850) (rad2deg*bvar(i,l,j,k),i=1,4)
457 900 format (4x,"jlee =",i5,3x,"nbank =",i5,3x,"nstep =",i10,f15.5)
458 952 format (1x,'#',i4,' total E ',1pe14.5,' rmsd from N ',0pf8.3,&
462 end subroutine write_bank1
463 !-----------------------------------------------------------------------------
465 !-----------------------------------------------------------------------------
466 ! subroutine cartprint
468 ! use geometry_data, only: c
469 ! use energy_data, only: itype
470 ! implicit real*8 (a-h,o-z)
471 ! include 'DIMENSIONS'
472 ! include 'COMMON.CHAIN'
473 ! include 'COMMON.INTERACT'
474 ! include 'COMMON.NAMES'
475 ! include 'COMMON.IOUNITS'
480 ! write (iout,110) restyp(itype(i)),i,c(1,i),c(2,i),&
481 ! c(3,i),c(1,nres+i),c(2,nres+i),c(3,nres+i)
483 ! 100 format (//' alpha-carbon coordinates ',&
484 ! ' centroid coordinates'/ &
485 ! ' ', 6X,'X',11X,'Y',11X,'Z',&
486 ! 10X,'X',11X,'Y',11X,'Z')
487 ! 110 format (a,'(',i3,')',6f12.5)
489 ! end subroutine cartprint
490 !-----------------------------------------------------------------------------
492 !-----------------------------------------------------------------------------
493 subroutine secstrp2dihc
497 ! implicit real*8 (a-h,o-z)
498 ! include 'DIMENSIONS'
499 ! include 'COMMON.GEO'
500 ! include 'COMMON.BOUNDS'
501 ! include 'COMMON.CHAIN'
502 ! include 'COMMON.TORCNSTR'
503 ! include 'COMMON.IOUNITS'
504 !el character(len=1),dimension(nres) :: secstruc !(maxres)
505 !el COMMON/SECONDARYS/secstruc
506 character(len=80) :: line
511 integer :: i,ii,lenpre
513 allocate(secstruc(nres))
515 !dr call getenv_loc('SECPREDFIL',secpred)
517 secpred=prefix(:lenpre)//'.spred'
519 #if defined(WINIFL) || defined(WINPGI)
520 open(isecpred,file=secpred,status='old',readonly,shared)
521 #elif (defined CRAY) || (defined AIX)
522 open(isecpred,file=secpred,status='old',action='read')
524 open(isecpred,file=secpred,status='old')
526 open(isecpred,file=secpred,status='old',action='read')
528 ! read secondary structure prediction from JPRED here!
529 ! read(isecpred,'(A80)',err=100,end=100) line
530 ! read(line,'(f10.3)',err=110) ftors
531 read(isecpred,'(f10.3)',err=110) ftors
533 write (iout,*) 'FTORS factor =',ftors
534 ! initialize secstruc to any
541 call read_secstr_pred(isecpred,iout,errflag)
543 write(iout,*)'There is a problem with the list of secondary-',&
544 'structure prediction'
547 ! 8/13/98 Set limits to generating the dihedral angles
555 if ( secstruc(i) .eq. 'H') then
556 ! Helix restraints for this residue
559 phi0(ii) = 45.0D0*deg2rad
560 drange(ii)= 5.0D0*deg2rad
561 phibound(1,i) = phi0(ii)-drange(ii)
562 phibound(2,i) = phi0(ii)+drange(ii)
563 else if (secstruc(i) .eq. 'E') then
564 ! strand restraints for this residue
567 phi0(ii) = 180.0D0*deg2rad
568 drange(ii)= 5.0D0*deg2rad
569 phibound(1,i) = phi0(ii)-drange(ii)
570 phibound(2,i) = phi0(ii)+drange(ii)
572 ! no restraints for this residue
573 ndih_nconstr=ndih_nconstr+1
574 idih_nconstr(ndih_nconstr)=i
581 write(iout,'(A30,A80)')'Error reading file SECPRED',secpred
585 write(iout,'(A20)')'Error reading FTORS'
588 end subroutine secstrp2dihc
589 !-----------------------------------------------------------------------------
590 subroutine read_secstr_pred(jin,jout,errors)
592 ! implicit real*8 (a-h,o-z)
593 ! INCLUDE 'DIMENSIONS'
594 ! include 'COMMON.IOUNITS'
595 ! include 'COMMON.CHAIN'
596 !el character(len=1),dimension(nres) :: secstruc !(maxres)
597 !el COMMON/SECONDARYS/secstruc
599 character(len=80) :: line,line1 !,ucase
600 logical :: errflag,errors,blankline
603 integer :: jin,jout,iseq,ipos,ipos1,iend,il,&
606 read (jin,'(a)') line
607 write (jout,'(2a)') '> ',line(1:78)
609 ! Remember that we number full residues starting from 2, then, iseq=1 and iseq=nres
610 ! correspond to the end-groups. ADD to the secondary structure prediction "-" for the
611 ! end-groups in the input file "*.spred"
614 do while (index(line1,'$END').eq.0)
615 ! Override commented lines.
618 do while (.not.blankline)
620 call mykey(line,line1,ipos,blankline,errflag)
621 if (errflag) write (jout,'(2a)') &
622 'Error when reading sequence in line: ',line
623 errors=errors .or. errflag
624 if (.not. blankline .and. .not. errflag) then
627 !el if (iseq.le.maxres) then
628 if (line1(1:1).eq.'-' ) then
629 secstruc(iseq)=line1(1:1)
630 else if ( ( ucase(line1(1:1)).eq.'E' ) .or. &
631 ( ucase(line1(1:1)).eq.'H' ) ) then
632 secstruc(iseq)=ucase(line1(1:1))
635 write (jout,1010) line1(1:1), iseq
640 !el write (jout,1000) iseq,maxres
643 do while (ipos1.le.iend)
648 !el if (iseq.le.maxres) then
649 if (line1(ipos1-1:ipos1-1).eq.'-' ) then
650 secstruc(iseq)=line1(ipos1-1:ipos1-1)
651 else if((ucase(line1(ipos1-1:ipos1-1)).eq.'E').or. &
652 (ucase(line1(ipos1-1:ipos1-1)).eq.'H') ) then
653 secstruc(iseq)=ucase(line1(ipos1-1:ipos1-1))
656 write (jout,1010) line1(ipos1-1:ipos1-1), iseq
661 !el write (jout,1000) iseq,maxres
668 read (jin,'(a)') line
669 write (jout,'(2a)') '> ',line(1:78)
673 !d write (jout,'(10a8)') (sequence(i),i=1,iseq-1)
675 !d check whether the found length of the chain is correct.
676 length_of_chain=iseq-1
677 if (length_of_chain .ne. nres) then
679 write (jout,'(a,i4,a,i4,a)') &
680 'Error: the number of labels specified in $SEC_STRUC_PRED (' &
681 ,length_of_chain,') does not match with the number of residues (' &
686 1000 format('Error - the number of residues (',i4,&
687 ') has exceeded maximum (',i4,').')
688 1010 format ('Error - unrecognized secondary structure label',a4,&
691 end subroutine read_secstr_pred
693 !-----------------------------------------------------------------------------
695 !-----------------------------------------------------------------------------
700 use control_data, only:maxtor,maxterm
704 use control, only: getenv_loc
706 ! Read the parameters of the probability distributions of the virtual-bond
707 ! valence angles and the side chains and energy parameters.
709 ! Important! Energy-term weights ARE NOT read here; they are read from the
710 ! main input file instead, because NO defaults have yet been set for these
713 ! implicit real*8 (a-h,o-z)
714 ! include 'DIMENSIONS'
719 ! include 'COMMON.IOUNITS'
720 ! include 'COMMON.CHAIN'
721 ! include 'COMMON.INTERACT'
722 ! include 'COMMON.GEO'
723 ! include 'COMMON.LOCAL'
724 ! include 'COMMON.TORSION'
725 ! include 'COMMON.SCCOR'
726 ! include 'COMMON.SCROT'
727 ! include 'COMMON.FFIELD'
728 ! include 'COMMON.NAMES'
729 ! include 'COMMON.SBRIDGE'
730 ! include 'COMMON.MD'
731 ! include 'COMMON.SETUP'
732 character(len=1) :: t1,t2,t3
733 character(len=1) :: onelett(4) = (/"G","A","P","D"/)
734 character(len=1) :: toronelet(-2:2) = (/"p","a","G","A","P"/)
735 logical :: lprint,LaTeX
736 real(kind=8),dimension(3,3,maxlob) :: blower !(3,3,maxlob)
737 real(kind=8),dimension(13) :: b
738 character(len=3) :: lancuch !,ucase
740 integer :: m,n,l,i,j,k,iblock,lll,llll,ll,nlobi,mm
741 integer :: maxinter,junk,kk,ii
742 real(kind=8) :: v0ijsccor,v0ijsccor1,v0ijsccor2,v0ijsccor3,si,&
743 dwa16,rjunk,akl,v0ij,rri,epsij,rrij,sigeps,sigt1sq,&
744 sigt2sq,sigii1,sigii2,ratsig1,ratsig2,rsum_max,r_augm,&
746 integer :: ichir1,ichir2
747 ! real(kind=8),dimension(maxterm,-maxtor:maxtor,-maxtor:maxtor,2) :: v1_el,v2_el !(maxterm,-maxtor:maxtor,-maxtor:maxtor,2)
748 !el allocate(v1_el(maxterm,-maxtor:maxtor,-maxtor:maxtor,2))
749 !el allocate(v2_el(maxterm,-maxtor:maxtor,-maxtor:maxtor,2))
752 ! For printing parameters after they are read set the following in the UNRES
755 ! setenv PRINT_PARM YES
757 ! To print parameters in LaTeX format rather than as ASCII tables:
761 call getenv_loc("PRINT_PARM",lancuch)
762 lprint = (ucase(lancuch).eq."YES" .or. ucase(lancuch).eq."Y")
763 call getenv_loc("LATEX",lancuch)
764 LaTeX = (ucase(lancuch).eq."YES" .or. ucase(lancuch).eq."Y")
766 dwa16=2.0d0**(1.0d0/6.0d0)
768 ! Assign virtual-bond length
771 vblinv2=vblinv*vblinv
773 ! Read the virtual-bond parameters, masses, and moments of inertia
774 ! and Stokes' radii of the peptide group and side chains
776 allocate(dsc(ntyp1)) !(ntyp1)
777 allocate(dsc_inv(ntyp1)) !(ntyp1)
778 allocate(nbondterm(ntyp)) !(ntyp)
779 allocate(vbldsc0(maxbondterm,ntyp)) !(maxbondterm,ntyp)
780 allocate(aksc(maxbondterm,ntyp)) !(maxbondterm,ntyp)
781 allocate(msc(ntyp+1)) !(ntyp+1)
782 allocate(isc(ntyp+1)) !(ntyp+1)
783 allocate(restok(ntyp+1)) !(ntyp+1)
784 allocate(abond0(maxbondterm,ntyp)) !(maxbondterm,ntyp)
787 read (ibond,*) vbldp0,akp,mp,ip,pstok
790 read (ibond,*) vbldsc0(1,i),aksc(1,i),msc(i),isc(i),restok(i)
791 dsc(i) = vbldsc0(1,i)
795 dsc_inv(i)=1.0D0/dsc(i)
799 read (ibond,*) junk,vbldp0,akp,rjunk,mp,ip,pstok
801 read (ibond,*) nbondterm(i),(vbldsc0(j,i),aksc(j,i),abond0(j,i),&
802 j=1,nbondterm(i)),msc(i),isc(i),restok(i)
803 dsc(i) = vbldsc0(1,i)
807 dsc_inv(i)=1.0D0/dsc(i)
812 write(iout,'(/a/)')"Dynamic constants of the interaction sites:"
813 write (iout,'(a10,a3,6a10)') 'Type','N','VBL','K','A0','mass',&
815 write(iout,'(a10,i3,6f10.5)') "p",1,vbldp0,akp,0.0d0,mp,ip,pstok
817 write (iout,'(a10,i3,6f10.5)') restyp(i),nbondterm(i),&
818 vbldsc0(1,i),aksc(1,i),abond0(1,i),msc(i),isc(i),restok(i)
820 write (iout,'(13x,3f10.5)') &
821 vbldsc0(j,i),aksc(j,i),abond0(j,i)
825 !----------------------------------------------------
826 allocate(a0thet(-ntyp:ntyp),theta0(-ntyp:ntyp))
827 allocate(sig0(-ntyp:ntyp),sigc0(-ntyp:ntyp)) !(-ntyp:ntyp)
828 allocate(athet(2,-ntyp:ntyp,-1:1,-1:1))
829 allocate(bthet(2,-ntyp:ntyp,-1:1,-1:1)) !(2,-ntyp:ntyp,-1:1,-1:1)
830 allocate(polthet(0:3,-ntyp:ntyp)) !(0:3,-ntyp:ntyp)
831 allocate(gthet(3,-ntyp:ntyp)) !(3,-ntyp:ntyp)
837 athet(j,i,ichir1,ichir2)=0.0D0
838 bthet(j,i,ichir1,ichir2)=0.0D0
855 ! Read the parameters of the probability distribution/energy expression
856 ! of the virtual-bond valence angles theta
859 read (ithep,*,err=111,end=111) a0thet(i),(athet(j,i,1,1),j=1,2),&
860 (bthet(j,i,1,1),j=1,2)
861 read (ithep,*,err=111,end=111) (polthet(j,i),j=0,3)
862 read (ithep,*,err=111,end=111) (gthet(j,i),j=1,3)
863 read (ithep,*,err=111,end=111) theta0(i),sig0(i),sigc0(i)
867 athet(1,i,1,-1)=athet(1,i,1,1)
868 athet(2,i,1,-1)=athet(2,i,1,1)
869 bthet(1,i,1,-1)=-bthet(1,i,1,1)
870 bthet(2,i,1,-1)=-bthet(2,i,1,1)
871 athet(1,i,-1,1)=-athet(1,i,1,1)
872 athet(2,i,-1,1)=-athet(2,i,1,1)
873 bthet(1,i,-1,1)=bthet(1,i,1,1)
874 bthet(2,i,-1,1)=bthet(2,i,1,1)
878 athet(1,i,-1,-1)=athet(1,-i,1,1)
879 athet(2,i,-1,-1)=-athet(2,-i,1,1)
880 bthet(1,i,-1,-1)=bthet(1,-i,1,1)
881 bthet(2,i,-1,-1)=-bthet(2,-i,1,1)
882 athet(1,i,-1,1)=athet(1,-i,1,1)
883 athet(2,i,-1,1)=-athet(2,-i,1,1)
884 bthet(1,i,-1,1)=-bthet(1,-i,1,1)
885 bthet(2,i,-1,1)=bthet(2,-i,1,1)
886 athet(1,i,1,-1)=-athet(1,-i,1,1)
887 athet(2,i,1,-1)=athet(2,-i,1,1)
888 bthet(1,i,1,-1)=bthet(1,-i,1,1)
889 bthet(2,i,1,-1)=-bthet(2,-i,1,1)
894 polthet(j,i)=polthet(j,-i)
897 gthet(j,i)=gthet(j,-i)
905 'Parameters of the virtual-bond valence angles:'
906 write (iout,'(/a/9x,5a/79(1h-))') 'Fourier coefficients:',&
907 ' ATHETA0 ',' A1 ',' A2 ',&
910 write(iout,'(a3,i4,2x,5(1pe14.5))') restyp(i),i,&
911 a0thet(i),(athet(j,i,1,1),j=1,2),(bthet(j,i,1,1),j=1,2)
913 write (iout,'(/a/9x,5a/79(1h-))') &
914 'Parameters of the expression for sigma(theta_c):',&
915 ' ALPH0 ',' ALPH1 ',' ALPH2 ',&
916 ' ALPH3 ',' SIGMA0C '
918 write (iout,'(a3,i4,2x,5(1pe14.5))') restyp(i),i,&
919 (polthet(j,i),j=0,3),sigc0(i)
921 write (iout,'(/a/9x,5a/79(1h-))') &
922 'Parameters of the second gaussian:',&
923 ' THETA0 ',' SIGMA0 ',' G1 ',&
926 write (iout,'(a3,i4,2x,5(1pe14.5))') restyp(i),i,theta0(i),&
927 sig0(i),(gthet(j,i),j=1,3)
931 'Parameters of the virtual-bond valence angles:'
932 write (iout,'(/a/9x,5a/79(1h-))') &
933 'Coefficients of expansion',&
934 ' theta0 ',' a1*10^2 ',' a2*10^2 ',&
935 ' b1*10^1 ',' b2*10^1 '
937 write(iout,'(a3,1h&,2x,5(f8.3,1h&))') restyp(i),&
938 a0thet(i),(100*athet(j,i,1,1),j=1,2),&
939 (10*bthet(j,i,1,1),j=1,2)
941 write (iout,'(/a/9x,5a/79(1h-))') &
942 'Parameters of the expression for sigma(theta_c):',&
943 ' alpha0 ',' alph1 ',' alph2 ',&
944 ' alhp3 ',' sigma0c '
946 write (iout,'(a3,1h&,2x,5(1pe12.3,1h&))') restyp(i),&
947 (polthet(j,i),j=0,3),sigc0(i)
949 write (iout,'(/a/9x,5a/79(1h-))') &
950 'Parameters of the second gaussian:',&
951 ' theta0 ',' sigma0*10^2 ',' G1*10^-1',&
954 write (iout,'(a3,1h&,2x,5(f8.3,1h&))') restyp(i),theta0(i),&
955 100*sig0(i),gthet(1,i)*0.1D0,gthet(2,i),gthet(3,i)*10.0D0
961 ! Read the parameters of Utheta determined from ab initio surfaces
962 ! Kozlowska et al., J. Phys.: Condens. Matter 19 (2007) 285203
964 read (ithep,*,err=111,end=111) nthetyp,ntheterm,ntheterm2,&
965 ntheterm3,nsingle,ndouble
966 nntheterm=max0(ntheterm,ntheterm2,ntheterm3)
968 !----------------------------------------------------
969 allocate(ithetyp(-ntyp1:ntyp1)) !(-ntyp1:ntyp1)
970 allocate(aa0thet(-maxthetyp1:maxthetyp1,&
971 -maxthetyp1:maxthetyp1,-maxthetyp1:maxthetyp1,2))
972 !(-maxthetyp1:maxthetyp1,-maxthetyp1:maxthetyp1,-maxthetyp1:maxthetyp1,2)
973 allocate(aathet(ntheterm,-maxthetyp1:maxthetyp1,&
974 -maxthetyp1:maxthetyp1,-maxthetyp1:maxthetyp1,2))
975 !(maxtheterm,-maxthetyp1:maxthetyp1,&
976 ! -maxthetyp1:maxthetyp1,-maxthetyp1:maxthetyp1,2)
977 allocate(bbthet(nsingle,ntheterm2,-maxthetyp1:maxthetyp1,&
978 -maxthetyp1:maxthetyp1,-maxthetyp1:maxthetyp1,2))
979 allocate(ccthet(nsingle,ntheterm2,-maxthetyp1:maxthetyp1,&
980 -maxthetyp1:maxthetyp1,-maxthetyp1:maxthetyp1,2))
981 allocate(ddthet(nsingle,ntheterm2,-maxthetyp1:maxthetyp1,&
982 -maxthetyp1:maxthetyp1,-maxthetyp1:maxthetyp1,2))
983 allocate(eethet(nsingle,ntheterm2,-maxthetyp1:maxthetyp1,&
984 -maxthetyp1:maxthetyp1,-maxthetyp1:maxthetyp1,2))
985 !(maxsingle,maxtheterm2,-maxthetyp1:maxthetyp1,&
986 ! -maxthetyp1:maxthetyp1,-maxthetyp1:maxthetyp1,2)
987 allocate(ffthet(ndouble,ndouble,ntheterm3,-maxthetyp1:maxthetyp1,&
988 -maxthetyp1:maxthetyp1,-maxthetyp1:maxthetyp1,2))
989 allocate(ggthet(ndouble,ndouble,ntheterm3,-maxthetyp1:maxthetyp1,&
990 -maxthetyp1:maxthetyp1,-maxthetyp1:maxthetyp1,2))
991 !(maxdouble,maxdouble,maxtheterm3,-maxthetyp1:maxthetyp1,&
992 ! -maxthetyp1:maxthetyp1,-maxthetyp1:maxthetyp1,2))
994 read (ithep,*,err=111,end=111) (ithetyp(i),i=1,ntyp1)
996 ithetyp(i)=-ithetyp(-i)
999 do i=-maxthetyp,maxthetyp
1000 do j=-maxthetyp,maxthetyp
1001 do k=-maxthetyp,maxthetyp
1002 aa0thet(i,j,k,iblock)=0.0d0
1004 aathet(l,i,j,k,iblock)=0.0d0
1008 bbthet(m,l,i,j,k,iblock)=0.0d0
1009 ccthet(m,l,i,j,k,iblock)=0.0d0
1010 ddthet(m,l,i,j,k,iblock)=0.0d0
1011 eethet(m,l,i,j,k,iblock)=0.0d0
1017 ffthet(mm,m,l,i,j,k,iblock)=0.0d0
1018 ggthet(mm,m,l,i,j,k,iblock)=0.0d0
1026 ! VAR:iblock means terminally blocking group 1=non-proline 2=proline
1028 ! VAR:ntethtyp is type of theta potentials type currently 0=glycine
1029 ! VAR:1=non-glicyne non-proline 2=proline
1030 ! VAR:negative values for D-aminoacid
1032 do j=-nthetyp,nthetyp
1033 do k=-nthetyp,nthetyp
1034 read (ithep,'(6a)',end=111,err=111) res1
1035 read (ithep,*,end=111,err=111) aa0thet(i,j,k,iblock)
1036 ! VAR: aa0thet is variable describing the average value of Foureir
1037 ! VAR: expansion series
1038 ! VAR: aathet is foureir expansion in theta/2 angle for full formula
1039 ! VAR: look at the fitting equation in Kozlowska et al., J. Phys.:
1040 !ondens. Matter 19 (2007) 285203 and Sieradzan et al., unpublished
1041 read (ithep,*,end=111,err=111) &
1042 (aathet(l,i,j,k,iblock),l=1,ntheterm)
1043 read (ithep,*,end=111,err=111) &
1044 ((bbthet(lll,ll,i,j,k,iblock),lll=1,nsingle),&
1045 (ccthet(lll,ll,i,j,k,iblock),lll=1,nsingle),&
1046 (ddthet(lll,ll,i,j,k,iblock),lll=1,nsingle),&
1047 (eethet(lll,ll,i,j,k,iblock),lll=1,nsingle),&
1049 read (ithep,*,end=111,err=111) &
1050 (((ffthet(llll,lll,ll,i,j,k,iblock),&
1051 ffthet(lll,llll,ll,i,j,k,iblock),&
1052 ggthet(llll,lll,ll,i,j,k,iblock),&
1053 ggthet(lll,llll,ll,i,j,k,iblock),&
1054 llll=1,lll-1),lll=2,ndouble),ll=1,ntheterm3)
1059 ! For dummy ends assign glycine-type coefficients of theta-only terms; the
1060 ! coefficients of theta-and-gamma-dependent terms are zero.
1061 ! IF YOU WANT VALENCE POTENTIALS FOR DUMMY ATOM UNCOMENT BELOW (NOT
1062 ! RECOMENTDED AFTER VERSION 3.3)
1066 ! aathet(l,i,j,nthetyp+1,iblock)=aathet(l,i,j,1,iblock)
1067 ! aathet(l,nthetyp+1,i,j,iblock)=aathet(l,1,i,j,iblock)
1069 ! aa0thet(i,j,nthetyp+1,iblock)=aa0thet(i,j,1,iblock)
1070 ! aa0thet(nthetyp+1,i,j,iblock)=aa0thet(1,i,j,iblock)
1073 ! aathet(l,nthetyp+1,i,nthetyp+1,iblock)=aathet(l,1,i,1,iblock)
1075 ! aa0thet(nthetyp+1,i,nthetyp+1,iblock)=aa0thet(1,i,1,iblock)
1078 ! AND COMMENT THE LOOPS BELOW
1082 aathet(l,i,j,nthetyp+1,iblock)=0.0d0
1083 aathet(l,nthetyp+1,i,j,iblock)=0.0d0
1085 aa0thet(i,j,nthetyp+1,iblock)=0.0d0
1086 aa0thet(nthetyp+1,i,j,iblock)=0.0d0
1089 aathet(l,nthetyp+1,i,nthetyp+1,iblock)=0.0d0
1091 aa0thet(nthetyp+1,i,nthetyp+1,iblock)=0.0d0
1096 ! Substitution for D aminoacids from symmetry.
1099 do j=-nthetyp,nthetyp
1100 do k=-nthetyp,nthetyp
1101 aa0thet(i,j,k,iblock)=aa0thet(-i,-j,-k,iblock)
1103 aathet(l,i,j,k,iblock)=aathet(l,-i,-j,-k,iblock)
1107 bbthet(lll,ll,i,j,k,iblock)=bbthet(lll,ll,-i,-j,-k,iblock)
1108 ccthet(lll,ll,i,j,k,iblock)=-ccthet(lll,ll,-i,-j,-k,iblock)
1109 ddthet(lll,ll,i,j,k,iblock)=ddthet(lll,ll,-i,-j,-k,iblock)
1110 eethet(lll,ll,i,j,k,iblock)=-eethet(lll,ll,-i,-j,-k,iblock)
1116 ffthet(llll,lll,ll,i,j,k,iblock)= &
1117 ffthet(llll,lll,ll,-i,-j,-k,iblock)
1118 ffthet(lll,llll,ll,i,j,k,iblock)= &
1119 ffthet(lll,llll,ll,-i,-j,-k,iblock)
1120 ggthet(llll,lll,ll,i,j,k,iblock)= &
1121 -ggthet(llll,lll,ll,-i,-j,-k,iblock)
1122 ggthet(lll,llll,ll,i,j,k,iblock)= &
1123 -ggthet(lll,llll,ll,-i,-j,-k,iblock)
1132 ! Control printout of the coefficients of virtual-bond-angle potentials
1135 write (iout,'(//a)') 'Parameter of virtual-bond-angle potential'
1140 write (iout,'(//4a)') &
1141 'Type ',onelett(i),onelett(j),onelett(k)
1142 write (iout,'(//a,10x,a)') " l","a[l]"
1143 write (iout,'(i2,1pe15.5)') 0,aa0thet(i,j,k,iblock)
1144 write (iout,'(i2,1pe15.5)') &
1145 (l,aathet(l,i,j,k,iblock),l=1,ntheterm)
1147 write (iout,'(//2h m,4(9x,a,3h[m,,i1,1h]))') &
1148 "b",l,"c",l,"d",l,"e",l
1150 write (iout,'(i2,4(1pe15.5))') m,&
1151 bbthet(m,l,i,j,k,iblock),ccthet(m,l,i,j,k,iblock),&
1152 ddthet(m,l,i,j,k,iblock),eethet(m,l,i,j,k,iblock)
1156 write (iout,'(//3hm,n,4(6x,a,5h[m,n,,i1,1h]))') &
1157 "f+",l,"f-",l,"g+",l,"g-",l
1160 write (iout,'(i1,1x,i1,4(1pe15.5))') n,m,&
1161 ffthet(n,m,l,i,j,k,iblock),&
1162 ffthet(m,n,l,i,j,k,iblock),&
1163 ggthet(n,m,l,i,j,k,iblock),&
1164 ggthet(m,n,l,i,j,k,iblock)
1174 write (2,*) "Start reading THETA_PDB",ithep_pdb
1176 ! write (2,*) 'i=',i
1177 read (ithep_pdb,*,err=111,end=111) &
1178 a0thet(i),(athet(j,i,1,1),j=1,2),&
1179 (bthet(j,i,1,1),j=1,2)
1180 read (ithep_pdb,*,err=111,end=111) (polthet(j,i),j=0,3)
1181 read (ithep_pdb,*,err=111,end=111) (gthet(j,i),j=1,3)
1182 read (ithep_pdb,*,err=111,end=111) theta0(i),sig0(i),sigc0(i)
1183 sigc0(i)=sigc0(i)**2
1186 athet(1,i,1,-1)=athet(1,i,1,1)
1187 athet(2,i,1,-1)=athet(2,i,1,1)
1188 bthet(1,i,1,-1)=-bthet(1,i,1,1)
1189 bthet(2,i,1,-1)=-bthet(2,i,1,1)
1190 athet(1,i,-1,1)=-athet(1,i,1,1)
1191 athet(2,i,-1,1)=-athet(2,i,1,1)
1192 bthet(1,i,-1,1)=bthet(1,i,1,1)
1193 bthet(2,i,-1,1)=bthet(2,i,1,1)
1196 a0thet(i)=a0thet(-i)
1197 athet(1,i,-1,-1)=athet(1,-i,1,1)
1198 athet(2,i,-1,-1)=-athet(2,-i,1,1)
1199 bthet(1,i,-1,-1)=bthet(1,-i,1,1)
1200 bthet(2,i,-1,-1)=-bthet(2,-i,1,1)
1201 athet(1,i,-1,1)=athet(1,-i,1,1)
1202 athet(2,i,-1,1)=-athet(2,-i,1,1)
1203 bthet(1,i,-1,1)=-bthet(1,-i,1,1)
1204 bthet(2,i,-1,1)=bthet(2,-i,1,1)
1205 athet(1,i,1,-1)=-athet(1,-i,1,1)
1206 athet(2,i,1,-1)=athet(2,-i,1,1)
1207 bthet(1,i,1,-1)=bthet(1,-i,1,1)
1208 bthet(2,i,1,-1)=-bthet(2,-i,1,1)
1209 theta0(i)=theta0(-i)
1213 polthet(j,i)=polthet(j,-i)
1216 gthet(j,i)=gthet(j,-i)
1219 write (2,*) "End reading THETA_PDB"
1224 !-------------------------------------------
1225 allocate(nlob(ntyp1)) !(ntyp1)
1226 allocate(bsc(maxlob,ntyp)) !(maxlob,ntyp)
1227 allocate(censc(3,maxlob,-ntyp:ntyp)) !(3,maxlob,-ntyp:ntyp)
1228 allocate(gaussc(3,3,maxlob,-ntyp:ntyp)) !(3,3,maxlob,-ntyp:ntyp)
1246 gaussc(l,k,j,i)=0.0D0
1254 ! Read the parameters of the probability distribution/energy expression
1255 ! of the side chains.
1258 read (irotam,'(3x,i3,f8.3)',end=112,err=112) nlob(i),dsc(i)
1262 dsc_inv(i)=1.0D0/dsc(i)
1273 read(irotam,*,end=112,err=112)(censc(k,1,i),k=1,3),&
1274 ((blower(k,l,1),l=1,k),k=1,3)
1275 censc(1,1,-i)=censc(1,1,i)
1276 censc(2,1,-i)=censc(2,1,i)
1277 censc(3,1,-i)=-censc(3,1,i)
1279 read (irotam,*,end=112,err=112) bsc(j,i)
1280 read (irotam,*,end=112,err=112) (censc(k,j,i),k=1,3),&
1281 ((blower(k,l,j),l=1,k),k=1,3)
1282 censc(1,j,-i)=censc(1,j,i)
1283 censc(2,j,-i)=censc(2,j,i)
1284 censc(3,j,-i)=-censc(3,j,i)
1285 ! BSC is amplitude of Gaussian
1292 akl=akl+blower(k,m,j)*blower(l,m,j)
1296 if (((k.eq.3).and.(l.ne.3)) &
1297 .or.((l.eq.3).and.(k.ne.3))) then
1298 gaussc(k,l,j,-i)=-akl
1299 gaussc(l,k,j,-i)=-akl
1301 gaussc(k,l,j,-i)=akl
1302 gaussc(l,k,j,-i)=akl
1311 write (iout,'(/a)') 'Parameters of side-chain local geometry'
1314 if (nlobi.gt.0) then
1316 write (iout,'(/3a,i2,a,f8.3)') 'Residue type: ',restyp(i),&
1317 ' # of gaussian lobes:',nlobi,' dsc:',dsc(i)
1318 write (iout,'(1h&,a,3(2h&&,f8.3,2h&&))') &
1319 'log h',(bsc(j,i),j=1,nlobi)
1320 write (iout,'(1h&,a,3(1h&,f8.3,1h&,f8.3,1h&,f8.3,1h&))') &
1321 'x',((censc(k,j,i),k=1,3),j=1,nlobi)
1323 write (iout,'(2h& ,5(2x,1h&,3(f7.3,1h&)))') &
1324 ((gaussc(k,l,j,i),l=1,3),j=1,nlobi)
1327 write (iout,'(/a,8x,i1,4(25x,i1))') 'Lobe:',(j,j=1,nlobi)
1328 write (iout,'(a,f10.4,4(16x,f10.4))') &
1329 'Center ',(bsc(j,i),j=1,nlobi)
1330 write (iout,'(5(2x,3f8.4))') ((censc(k,j,i),k=1,3),&
1339 ! Read scrot parameters for potentials determined from all-atom AM1 calculations
1340 ! added by Urszula Kozlowska 07/11/2007
1342 !el Maximum number of SC local term fitting function coefficiants
1343 !el integer,parameter :: maxsccoef=65
1345 allocate(sc_parmin(65,ntyp)) !(maxsccoef,ntyp)
1348 read (irotam,*,end=112,err=112)
1350 read (irotam,*,end=112,err=112)
1353 read(irotam,*,end=112,err=112) sc_parmin(j,i)
1358 ! Read the parameters of the probability distribution/energy expression
1359 ! of the side chains.
1361 write (2,*) "Start reading ROTAM_PDB"
1363 read (irotam_pdb,'(3x,i3,f8.3)',end=112,err=112) nlob(i),dsc(i)
1367 dsc_inv(i)=1.0D0/dsc(i)
1378 read(irotam_pdb,*,end=112,err=112)(censc(k,1,i),k=1,3),&
1379 ((blower(k,l,1),l=1,k),k=1,3)
1381 read (irotam_pdb,*,end=112,err=112) bsc(j,i)
1382 read (irotam_pdb,*,end=112,err=112) (censc(k,j,i),k=1,3),&
1383 ((blower(k,l,j),l=1,k),k=1,3)
1390 akl=akl+blower(k,m,j)*blower(l,m,j)
1400 write (2,*) "End reading ROTAM_PDB"
1406 ! Read torsional parameters in old format
1408 allocate(itortyp(ntyp1)) !(-ntyp1:ntyp1)
1410 read (itorp,*,end=113,err=113) ntortyp,nterm_old
1411 if (lprint)write (iout,*) 'ntortyp,nterm',ntortyp,nterm_old
1412 read (itorp,*,end=113,err=113) (itortyp(i),i=1,ntyp)
1414 !el from energy module--------
1415 allocate(v1(nterm_old,ntortyp,ntortyp))
1416 allocate(v2(nterm_old,ntortyp,ntortyp)) !(maxterm,-maxtor:maxtor,-maxtor:maxtor)
1417 !el---------------------------
1422 read (itorp,*,end=113,err=113) kk,v1(k,j,i),v2(k,j,i)
1428 write (iout,'(/a/)') 'Torsional constants:'
1431 write (iout,'(2i3,6f10.5)') i,j,(v1(k,i,j),k=1,nterm_old)
1432 write (iout,'(6x,6f10.5)') (v2(k,i,j),k=1,nterm_old)
1438 ! Read torsional parameters
1440 allocate(itortyp(-ntyp1:ntyp1)) !(-ntyp1:ntyp1)
1441 read (itorp,*,end=113,err=113) ntortyp
1442 !el from energy module---------
1443 allocate(nterm(-ntortyp:ntortyp,-ntortyp:ntortyp,2)) !(-maxtor:maxtor,-maxtor:maxtor,2)
1444 allocate(nlor(-ntortyp:ntortyp,-ntortyp:ntortyp,2)) !(-maxtor:maxtor,-maxtor:maxtor,2)
1446 allocate(vlor1(maxlor,-ntortyp:ntortyp,-ntortyp:ntortyp)) !(maxlor,-maxtor:maxtor,-maxtor:maxtor)
1447 allocate(vlor2(maxlor,ntortyp,ntortyp))
1448 allocate(vlor3(maxlor,ntortyp,ntortyp)) !(maxlor,maxtor,maxtor)
1449 allocate(v0(-ntortyp:ntortyp,-ntortyp:ntortyp,2)) !(-maxtor:maxtor,-maxtor:maxtor,2)
1451 allocate(v1(maxterm,-ntortyp:ntortyp,-ntortyp:ntortyp,2))
1452 allocate(v2(maxterm,-ntortyp:ntortyp,-ntortyp:ntortyp,2)) !(maxterm,-maxtor:maxtor,-maxtor:maxtor,2)
1453 !el---------------------------
1455 do i=-ntortyp,ntortyp
1456 do j=-ntortyp,ntortyp
1462 !el---------------------------
1464 read (itorp,*,end=113,err=113) (itortyp(i),i=1,ntyp)
1466 itortyp(i)=-itortyp(-i)
1468 write (iout,*) 'ntortyp',ntortyp
1471 do j=-ntortyp+1,ntortyp-1
1472 read (itorp,*,end=113,err=113) nterm(i,j,iblock),&
1474 nterm(-i,-j,iblock)=nterm(i,j,iblock)
1475 nlor(-i,-j,iblock)=nlor(i,j,iblock)
1478 do k=1,nterm(i,j,iblock)
1479 read (itorp,*,end=113,err=113) kk,v1(k,i,j,iblock),&
1481 v1(k,-i,-j,iblock)=v1(k,i,j,iblock)
1482 v2(k,-i,-j,iblock)=-v2(k,i,j,iblock)
1483 v0ij=v0ij+si*v1(k,i,j,iblock)
1485 ! write(iout,*) i,j,k,iblock,nterm(i,j,iblock) !
1486 ! write(iout,*) v1(k,-i,-j,iblock),v1(k,i,j,iblock),&!
1487 ! v2(k,-i,-j,iblock),v2(k,i,j,iblock)!
1489 do k=1,nlor(i,j,iblock)
1490 read (itorp,*,end=113,err=113) kk,vlor1(k,i,j),&
1491 vlor2(k,i,j),vlor3(k,i,j)
1492 v0ij=v0ij+vlor1(k,i,j)/(1+vlor3(k,i,j)**2)
1495 v0(-i,-j,iblock)=v0ij
1501 write (iout,'(/a/)') 'Torsional constants:'
1503 do i=-ntortyp,ntortyp
1504 do j=-ntortyp,ntortyp
1505 write (iout,*) 'ityp',i,' jtyp',j
1506 write (iout,*) 'Fourier constants'
1507 do k=1,nterm(i,j,iblock)
1508 write (iout,'(2(1pe15.5))') v1(k,i,j,iblock),&
1511 write (iout,*) 'Lorenz constants'
1512 do k=1,nlor(i,j,iblock)
1513 write (iout,'(3(1pe15.5))') &
1514 vlor1(k,i,j),vlor2(k,i,j),vlor3(k,i,j)
1520 !elwrite (iout,'(/a/)') 'Torsional constants:',vlor1(k,i,j),vlor2(k,i,j),vlor3(k,i,j)
1522 ! 6/23/01 Read parameters for double torsionals
1524 !el from energy module------------
1525 allocate(v1c(2,maxtermd_1,-ntortyp+1:ntortyp-1,-ntortyp+1:ntortyp-1,-ntortyp+1:ntortyp-1,2))
1526 allocate(v1s(2,maxtermd_1,-ntortyp+1:ntortyp-1,-ntortyp+1:ntortyp-1,-ntortyp+1:ntortyp-1,2))
1527 !(2,maxtermd_1,-maxtor:maxtor,-maxtor:maxtor,-maxtor:maxtor,2)
1528 allocate(v2c(maxtermd_2,maxtermd_2,-ntortyp+1:ntortyp-1,-ntortyp+1:ntortyp-1,-ntortyp+1:ntortyp-1,2))
1529 allocate(v2s(maxtermd_2,maxtermd_2,-ntortyp+1:ntortyp-1,-ntortyp+1:ntortyp-1,-ntortyp+1:ntortyp-1,2))
1530 !(maxtermd_2,maxtermd_2,-maxtor:maxtor,-maxtor:maxtor,-maxtor:maxtor,2)
1531 allocate(ntermd_1(-ntortyp+1:ntortyp-1,-ntortyp+1:ntortyp-1,-ntortyp+1:ntortyp-1,2))
1532 allocate(ntermd_2(-ntortyp+1:ntortyp-1,-ntortyp+1:ntortyp-1,-ntortyp+1:ntortyp-1,2))
1533 !(-maxtor:maxtor,-maxtor:maxtor,-maxtor:maxtor,2)
1534 !---------------------------------
1538 do j=-ntortyp+1,ntortyp-1
1539 do k=-ntortyp+1,ntortyp-1
1540 read (itordp,'(3a1)',end=114,err=114) t1,t2,t3
1541 ! write (iout,*) "OK onelett",
1544 if (t1.ne.toronelet(i) .or. t2.ne.toronelet(j) &
1545 .or. t3.ne.toronelet(k)) then
1546 write (iout,*) "Error in double torsional parameter file",&
1549 call MPI_Finalize(Ierror)
1551 stop "Error in double torsional parameter file"
1553 read (itordp,*,end=114,err=114) ntermd_1(i,j,k,iblock),&
1554 ntermd_2(i,j,k,iblock)
1555 ntermd_1(-i,-j,-k,iblock)=ntermd_1(i,j,k,iblock)
1556 ntermd_2(-i,-j,-k,iblock)=ntermd_2(i,j,k,iblock)
1557 read (itordp,*,end=114,err=114) (v1c(1,l,i,j,k,iblock),l=1,&
1558 ntermd_1(i,j,k,iblock))
1559 read (itordp,*,end=114,err=114) (v1s(1,l,i,j,k,iblock),l=1,&
1560 ntermd_1(i,j,k,iblock))
1561 read (itordp,*,end=114,err=114) (v1c(2,l,i,j,k,iblock),l=1,&
1562 ntermd_1(i,j,k,iblock))
1563 read (itordp,*,end=114,err=114) (v1s(2,l,i,j,k,iblock),l=1,&
1564 ntermd_1(i,j,k,iblock))
1565 ! Martix of D parameters for one dimesional foureir series
1566 do l=1,ntermd_1(i,j,k,iblock)
1567 v1c(1,l,-i,-j,-k,iblock)=v1c(1,l,i,j,k,iblock)
1568 v1s(1,l,-i,-j,-k,iblock)=-v1s(1,l,i,j,k,iblock)
1569 v1c(2,l,-i,-j,-k,iblock)=v1c(2,l,i,j,k,iblock)
1570 v1s(2,l,-i,-j,-k,iblock)=-v1s(2,l,i,j,k,iblock)
1571 ! write(iout,*) "whcodze" ,
1572 ! & v1s(2,l,-i,-j,-k,iblock),v1s(2,l,i,j,k,iblock)
1574 read (itordp,*,end=114,err=114) ((v2c(l,m,i,j,k,iblock),&
1575 v2c(m,l,i,j,k,iblock),v2s(l,m,i,j,k,iblock),&
1576 v2s(m,l,i,j,k,iblock),&
1577 m=1,l-1),l=1,ntermd_2(i,j,k,iblock))
1578 ! Martix of D parameters for two dimesional fourier series
1579 do l=1,ntermd_2(i,j,k,iblock)
1581 v2c(l,m,-i,-j,-k,iblock)=v2c(l,m,i,j,k,iblock)
1582 v2c(m,l,-i,-j,-k,iblock)=v2c(m,l,i,j,k,iblock)
1583 v2s(l,m,-i,-j,-k,iblock)=-v2s(l,m,i,j,k,iblock)
1584 v2s(m,l,-i,-j,-k,iblock)=-v2s(m,l,i,j,k,iblock)
1593 write (iout,*) 'Constants for double torsionals'
1596 do j=-ntortyp+1,ntortyp-1
1597 do k=-ntortyp+1,ntortyp-1
1598 write (iout,*) 'ityp',i,' jtyp',j,' ktyp',k,&
1599 ' nsingle',ntermd_1(i,j,k,iblock),&
1600 ' ndouble',ntermd_2(i,j,k,iblock)
1602 write (iout,*) 'Single angles:'
1603 do l=1,ntermd_1(i,j,k,iblock)
1604 write (iout,'(i5,2f10.5,5x,2f10.5,5x,2f10.5)') l,&
1605 v1c(1,l,i,j,k,iblock),v1s(1,l,i,j,k,iblock),&
1606 v1c(2,l,i,j,k,iblock),v1s(2,l,i,j,k,iblock),&
1607 v1s(1,l,-i,-j,-k,iblock),v1s(2,l,-i,-j,-k,iblock)
1610 write (iout,*) 'Pairs of angles:'
1611 write (iout,'(3x,20i10)') (l,l=1,ntermd_2(i,j,k,iblock))
1612 do l=1,ntermd_2(i,j,k,iblock)
1613 write (iout,'(i5,20f10.5)') &
1614 l,(v2c(l,m,i,j,k,iblock),m=1,ntermd_2(i,j,k,iblock))
1617 write (iout,'(3x,20i10)') (l,l=1,ntermd_2(i,j,k,iblock))
1618 do l=1,ntermd_2(i,j,k,iblock)
1619 write (iout,'(i5,20f10.5)') &
1620 l,(v2s(l,m,i,j,k,iblock),m=1,ntermd_2(i,j,k,iblock)),&
1621 (v2s(l,m,-i,-j,-k,iblock),m=1,ntermd_2(i,j,k,iblock))
1630 ! Read of Side-chain backbone correlation parameters
1631 ! Modified 11 May 2012 by Adasko
1634 read (isccor,*,end=119,err=119) nsccortyp
1636 !el from module energy-------------
1637 allocate(nlor_sccor(nsccortyp,nsccortyp)) !(-ntyp:ntyp,-ntyp:ntyp)
1638 allocate(vlor1sccor(maxterm_sccor,nsccortyp,nsccortyp))
1639 allocate(vlor2sccor(maxterm_sccor,nsccortyp,nsccortyp))
1640 allocate(vlor3sccor(maxterm_sccor,nsccortyp,nsccortyp)) !(maxterm_sccor,20,20)
1641 !-----------------------------------
1643 !el from module energy-------------
1644 allocate(isccortyp(-ntyp:ntyp)) !(-ntyp:ntyp)
1646 read (isccor,*,end=119,err=119) (isccortyp(i),i=1,ntyp)
1648 isccortyp(i)=-isccortyp(-i)
1650 iscprol=isccortyp(20)
1651 ! write (iout,*) 'ntortyp',ntortyp
1653 !c maxinter is maximum interaction sites
1654 !el from module energy---------
1655 allocate(nterm_sccor(-nsccortyp:nsccortyp,-nsccortyp:nsccortyp)) !(-ntyp:ntyp,-ntyp:ntyp)
1656 allocate(v1sccor(maxterm_sccor,maxinter,-nsccortyp:nsccortyp,&
1657 -nsccortyp:nsccortyp))
1658 allocate(v2sccor(maxterm_sccor,maxinter,-nsccortyp:nsccortyp,&
1659 -nsccortyp:nsccortyp)) !(maxterm_sccor,3,-ntyp:ntyp,-ntyp:ntyp)
1660 allocate(v0sccor(maxinter,-nsccortyp:nsccortyp,&
1661 -nsccortyp:nsccortyp)) !(maxterm_sccor,-ntyp:ntyp,-ntyp:ntyp)
1662 !-----------------------------------
1666 read (isccor,*,end=119,err=119) &
1667 nterm_sccor(i,j),nlor_sccor(i,j)
1673 nterm_sccor(-i,j)=nterm_sccor(i,j)
1674 nterm_sccor(-i,-j)=nterm_sccor(i,j)
1675 nterm_sccor(i,-j)=nterm_sccor(i,j)
1676 do k=1,nterm_sccor(i,j)
1677 read (isccor,*,end=119,err=119) kk,v1sccor(k,l,i,j),&
1679 if (j.eq.iscprol) then
1680 if (i.eq.isccortyp(10)) then
1681 v1sccor(k,l,i,-j)=v1sccor(k,l,i,j)
1682 v2sccor(k,l,i,-j)=-v2sccor(k,l,i,j)
1684 v1sccor(k,l,i,-j)=v1sccor(k,l,i,j)*0.5d0 &
1685 +v2sccor(k,l,i,j)*dsqrt(0.75d0)
1686 v2sccor(k,l,i,-j)=-v2sccor(k,l,i,j)*0.5d0 &
1687 +v1sccor(k,l,i,j)*dsqrt(0.75d0)
1688 v1sccor(k,l,-i,-j)=v1sccor(k,l,i,j)
1689 v2sccor(k,l,-i,-j)=-v2sccor(k,l,i,j)
1690 v1sccor(k,l,-i,j)=v1sccor(k,l,i,-j)
1691 v2sccor(k,l,-i,j)=-v2sccor(k,l,i,-j)
1694 if (i.eq.isccortyp(10)) then
1695 v1sccor(k,l,i,-j)=v1sccor(k,l,i,j)
1696 v2sccor(k,l,i,-j)=-v2sccor(k,l,i,j)
1698 if (j.eq.isccortyp(10)) then
1699 v1sccor(k,l,-i,j)=v1sccor(k,l,i,j)
1700 v2sccor(k,l,-i,j)=-v2sccor(k,l,i,j)
1702 v1sccor(k,l,i,-j)=-v1sccor(k,l,i,j)
1703 v2sccor(k,l,i,-j)=-v2sccor(k,l,i,j)
1704 v1sccor(k,l,-i,-j)=v1sccor(k,l,i,j)
1705 v2sccor(k,l,-i,-j)=-v2sccor(k,l,i,j)
1706 v1sccor(k,l,-i,j)=v1sccor(k,l,i,-j)
1707 v2sccor(k,l,-i,j)=-v2sccor(k,l,i,-j)
1711 v0ijsccor=v0ijsccor+si*v1sccor(k,l,i,j)
1712 v0ijsccor1=v0ijsccor+si*v1sccor(k,l,-i,j)
1713 v0ijsccor2=v0ijsccor+si*v1sccor(k,l,i,-j)
1714 v0ijsccor3=v0ijsccor+si*v1sccor(k,l,-i,-j)
1717 do k=1,nlor_sccor(i,j)
1718 read (isccor,*,end=119,err=119) kk,vlor1sccor(k,i,j),&
1719 vlor2sccor(k,i,j),vlor3sccor(k,i,j)
1720 v0ijsccor=v0ijsccor+vlor1sccor(k,i,j)/ &
1721 (1+vlor3sccor(k,i,j)**2)
1723 v0sccor(l,i,j)=v0ijsccor
1724 v0sccor(l,-i,j)=v0ijsccor1
1725 v0sccor(l,i,-j)=v0ijsccor2
1726 v0sccor(l,-i,-j)=v0ijsccor3
1732 !el from module energy-------------
1733 allocate(isccortyp(ntyp)) !(-ntyp:ntyp)
1735 read (isccor,*,end=119,err=119) (isccortyp(i),i=1,ntyp)
1736 ! write (iout,*) 'ntortyp',ntortyp
1738 !c maxinter is maximum interaction sites
1739 !el from module energy---------
1740 allocate(nterm_sccor(nsccortyp,nsccortyp)) !(-ntyp:ntyp,-ntyp:ntyp)
1741 allocate(v1sccor(maxterm_sccor,maxinter,nsccortyp,nsccortyp))
1742 allocate(v2sccor(maxterm_sccor,maxinter,nsccortyp,nsccortyp)) !(maxterm_sccor,3,-ntyp:ntyp,-ntyp:ntyp)
1743 allocate(v0sccor(maxinter,nsccortyp,nsccortyp)) !???(maxterm_sccor,-ntyp:ntyp,-ntyp:ntyp)
1744 !-----------------------------------
1748 read (isccor,*,end=119,err=119) &
1749 nterm_sccor(i,j),nlor_sccor(i,j)
1753 do k=1,nterm_sccor(i,j)
1754 read (isccor,*,end=119,err=119) kk,v1sccor(k,l,i,j),&
1756 v0ijsccor=v0ijsccor+si*v1sccor(k,l,i,j)
1759 do k=1,nlor_sccor(i,j)
1760 read (isccor,*,end=119,err=119) kk,vlor1sccor(k,i,j),&
1761 vlor2sccor(k,i,j),vlor3sccor(k,i,j)
1762 v0ijsccor=v0ijsccor+vlor1sccor(k,i,j)/ &
1763 (1+vlor3sccor(k,i,j)**2)
1765 v0sccor(l,i,j)=v0ijsccor !el ,iblock
1773 write (iout,'(/a/)') 'Torsional constants:'
1776 write (iout,*) 'ityp',i,' jtyp',j
1777 write (iout,*) 'Fourier constants'
1778 do k=1,nterm_sccor(i,j)
1779 write (iout,'(2(1pe15.5))') v1sccor(k,l,i,j),v2sccor(k,l,i,j)
1781 write (iout,*) 'Lorenz constants'
1782 do k=1,nlor_sccor(i,j)
1783 write (iout,'(3(1pe15.5))') &
1784 vlor1sccor(k,i,j),vlor2sccor(k,i,j),vlor3sccor(k,i,j)
1791 ! 9/18/99 (AL) Read coefficients of the Fourier expansion of the local
1792 ! interaction energy of the Gly, Ala, and Pro prototypes.
1797 write (iout,*) "Coefficients of the cumulants"
1799 read (ifourier,*) nloctyp
1800 write(iout,*) "nloctyp",nloctyp
1801 !el from module energy-------
1802 allocate(b1(2,-nloctyp-1:nloctyp+1)) !(2,-maxtor:maxtor)
1803 allocate(b2(2,-nloctyp-1:nloctyp+1)) !(2,-maxtor:maxtor)
1804 allocate(b1tilde(2,-nloctyp+1:nloctyp+1)) !(2,-maxtor:maxtor)
1805 allocate(cc(2,2,-nloctyp-1:nloctyp+1))
1806 allocate(dd(2,2,-nloctyp-1:nloctyp+1))
1807 allocate(ee(2,2,-nloctyp-1:nloctyp+1))
1808 allocate(ctilde(2,2,-nloctyp-1:nloctyp+1))
1809 allocate(dtilde(2,2,-nloctyp-1:nloctyp+1)) !(2,2,-maxtor:maxtor)
1810 !--------------------------------
1813 read (ifourier,*,end=115,err=115)
1814 read (ifourier,*,end=115,err=115) (b(ii),ii=1,13)
1816 write (iout,*) 'Type',i
1817 write (iout,'(a,i2,a,f10.5)') ('b(',ii,')=',b(ii),ii=1,13)
1827 B1tilde(1,-i) =-b(3)
1829 ! b1tilde(1,i)=0.0d0
1830 ! b1tilde(2,i)=0.0d0
1855 Ctilde(1,2,-i)=-b(9)
1859 ! Ctilde(1,1,i)=0.0d0
1860 ! Ctilde(1,2,i)=0.0d0
1861 ! Ctilde(2,1,i)=0.0d0
1862 ! Ctilde(2,2,i)=0.0d0
1880 Dtilde(1,2,-i)=-b(8)
1884 ! Dtilde(1,1,i)=0.0d0
1885 ! Dtilde(1,2,i)=0.0d0
1886 ! Dtilde(2,1,i)=0.0d0
1887 ! Dtilde(2,2,i)=0.0d0
1888 EE(1,1,i)= b(10)+b(11)
1889 EE(2,2,i)=-b(10)+b(11)
1890 EE(2,1,i)= b(12)-b(13)
1891 EE(1,2,i)= b(12)+b(13)
1892 EE(1,1,-i)= b(10)+b(11)
1893 EE(2,2,-i)=-b(10)+b(11)
1894 EE(2,1,-i)=-b(12)+b(13)
1895 EE(1,2,-i)=-b(12)-b(13)
1901 ! ee(2,1,i)=ee(1,2,i)
1905 write (iout,*) 'Type',i
1907 write(iout,*) B1(1,i),B1(2,i)
1909 write(iout,*) B2(1,i),B2(2,i)
1912 write (iout,'(2f10.5)') CC(j,1,i),CC(j,2,i)
1916 write (iout,'(2f10.5)') DD(j,1,i),DD(j,2,i)
1920 write (iout,'(2f10.5)') EE(j,1,i),EE(j,2,i)
1926 ! Read electrostatic-interaction parameters
1931 write (iout,'(/a)') 'Electrostatic interaction constants:'
1932 write (iout,'(1x,a,1x,a,10x,a,11x,a,11x,a,11x,a)') &
1933 'IT','JT','APP','BPP','AEL6','AEL3'
1935 read (ielep,*,end=116,err=116) ((epp(i,j),j=1,2),i=1,2)
1936 read (ielep,*,end=116,err=116) ((rpp(i,j),j=1,2),i=1,2)
1937 read (ielep,*,end=116,err=116) ((elpp6(i,j),j=1,2),i=1,2)
1938 read (ielep,*,end=116,err=116) ((elpp3(i,j),j=1,2),i=1,2)
1943 app (i,j)=epp(i,j)*rri*rri
1944 bpp (i,j)=-2.0D0*epp(i,j)*rri
1945 ael6(i,j)=elpp6(i,j)*4.2D0**6
1946 ael3(i,j)=elpp3(i,j)*4.2D0**3
1948 if (lprint) write(iout,'(2i3,4(1pe15.4))')i,j,app(i,j),bpp(i,j),&
1954 ! Read side-chain interaction parameters.
1956 !el from module energy - COMMON.INTERACT-------
1957 allocate(eps(ntyp,ntyp),sigmaii(ntyp,ntyp),rs0(ntyp,ntyp)) !(ntyp,ntyp)
1958 allocate(augm(ntyp,ntyp)) !(ntyp,ntyp)
1959 allocate(eps_scp(ntyp,2),rscp(ntyp,2)) !(ntyp,2)
1960 allocate(sigma0(ntyp),rr0(ntyp),sigii(ntyp)) !(ntyp)
1961 allocate(chip(ntyp1),alp(ntyp1)) !(ntyp)
1972 !--------------------------------
1974 read (isidep,*,end=117,err=117) ipot,expon
1975 if (ipot.lt.1 .or. ipot.gt.5) then
1976 write (iout,'(2a)') 'Error while reading SC interaction',&
1977 'potential file - unknown potential type.'
1979 call MPI_Finalize(Ierror)
1985 write(iout,'(/3a,2i3)') 'Potential is ',potname(ipot),&
1986 ', exponents are ',expon,2*expon
1987 goto (10,20,30,30,40) ipot
1988 !----------------------- LJ potential ---------------------------------
1989 10 read (isidep,*,end=117,err=117)((eps(i,j),j=i,ntyp),i=1,ntyp),&
1990 (sigma0(i),i=1,ntyp)
1992 write (iout,'(/a/)') 'Parameters of the LJ potential:'
1993 write (iout,'(a/)') 'The epsilon array:'
1994 call printmat(ntyp,ntyp,ntyp,iout,restyp,eps)
1995 write (iout,'(/a)') 'One-body parameters:'
1996 write (iout,'(a,4x,a)') 'residue','sigma'
1997 write (iout,'(a3,6x,f10.5)') (restyp(i),sigma0(i),i=1,ntyp)
2000 !----------------------- LJK potential --------------------------------
2001 20 read (isidep,*,end=117,err=117)((eps(i,j),j=i,ntyp),i=1,ntyp),&
2002 (sigma0(i),i=1,ntyp),(rr0(i),i=1,ntyp)
2004 write (iout,'(/a/)') 'Parameters of the LJK potential:'
2005 write (iout,'(a/)') 'The epsilon array:'
2006 call printmat(ntyp,ntyp,ntyp,iout,restyp,eps)
2007 write (iout,'(/a)') 'One-body parameters:'
2008 write (iout,'(a,4x,2a)') 'residue',' sigma ',' r0 '
2009 write (iout,'(a3,6x,2f10.5)') (restyp(i),sigma0(i),rr0(i),&
2013 !---------------------- GB or BP potential -----------------------------
2015 read (isidep,*,end=117,err=117)(eps(i,j),j=i,ntyp)
2017 read (isidep,*,end=117,err=117)(sigma0(i),i=1,ntyp)
2018 read (isidep,*,end=117,err=117)(sigii(i),i=1,ntyp)
2019 read (isidep,*,end=117,err=117)(chip(i),i=1,ntyp)
2020 read (isidep,*,end=117,err=117)(alp(i),i=1,ntyp)
2021 ! For the GB potential convert sigma'**2 into chi'
2024 chip(i)=(chip(i)-1.0D0)/(chip(i)+1.0D0)
2028 write (iout,'(/a/)') 'Parameters of the BP potential:'
2029 write (iout,'(a/)') 'The epsilon array:'
2030 call printmat(ntyp,ntyp,ntyp,iout,restyp,eps)
2031 write (iout,'(/a)') 'One-body parameters:'
2032 write (iout,'(a,4x,4a)') 'residue',' sigma ','s||/s_|_^2',&
2034 write (iout,'(a3,6x,4f10.5)') (restyp(i),sigma0(i),sigii(i),&
2035 chip(i),alp(i),i=1,ntyp)
2038 !--------------------- GBV potential -----------------------------------
2039 40 read (isidep,*,end=117,err=117)((eps(i,j),j=i,ntyp),i=1,ntyp),&
2040 (sigma0(i),i=1,ntyp),(rr0(i),i=1,ntyp),(sigii(i),i=1,ntyp),&
2041 (chip(i),i=1,ntyp),(alp(i),i=1,ntyp)
2043 write (iout,'(/a/)') 'Parameters of the GBV potential:'
2044 write (iout,'(a/)') 'The epsilon array:'
2045 call printmat(ntyp,ntyp,ntyp,iout,restyp,eps)
2046 write (iout,'(/a)') 'One-body parameters:'
2047 write (iout,'(a,4x,5a)') 'residue',' sigma ',' r0 ',&
2048 's||/s_|_^2',' chip ',' alph '
2049 write (iout,'(a3,6x,5f10.5)') (restyp(i),sigma0(i),rr0(i),&
2050 sigii(i),chip(i),alp(i),i=1,ntyp)
2054 !-----------------------------------------------------------------------
2055 ! Calculate the "working" parameters of SC interactions.
2057 !el from module energy - COMMON.INTERACT-------
2058 allocate(aa(ntyp1,ntyp1),bb(ntyp1,ntyp1),chi(ntyp1,ntyp1)) !(ntyp,ntyp)
2059 allocate(sigma(0:ntyp1,0:ntyp1),r0(ntyp1,ntyp1)) !(0:ntyp1,0:ntyp1)
2069 !--------------------------------
2078 sigma(i,j)=dsqrt(sigma0(i)**2+sigma0(j)**2)
2079 sigma(j,i)=sigma(i,j)
2080 rs0(i,j)=dwa16*sigma(i,j)
2084 if (lprint) write (iout,'(/a/10x,7a/72(1h-))') &
2085 'Working parameters of the SC interactions:',&
2086 ' a ',' b ',' augm ',' sigma ',' r0 ',&
2091 if (ipot.eq.1 .or. ipot.eq.3 .or. ipot.eq.4) then
2100 sigeps=dsign(1.0D0,epsij)
2102 aa(i,j)=epsij*rrij*rrij
2103 bb(i,j)=-sigeps*epsij*rrij
2107 sigt1sq=sigma0(i)**2
2108 sigt2sq=sigma0(j)**2
2111 ratsig1=sigt2sq/sigt1sq
2112 ratsig2=1.0D0/ratsig1
2113 chi(i,j)=(sigii1-1.0D0)/(sigii1+ratsig1)
2114 if (j.gt.i) chi(j,i)=(sigii2-1.0D0)/(sigii2+ratsig2)
2115 rsum_max=dsqrt(sigii1*sigt1sq+sigii2*sigt2sq)
2119 ! if (ipot.eq.1 .or. ipot.eq.3 .or. ipot.eq.4) then
2120 sigmaii(i,j)=rsum_max
2121 sigmaii(j,i)=rsum_max
2123 ! sigmaii(i,j)=r0(i,j)
2124 ! sigmaii(j,i)=r0(i,j)
2126 !d write (iout,*) i,j,r0(i,j),sigma(i,j),rsum_max
2127 if ((ipot.eq.2 .or. ipot.eq.5) .and. r0(i,j).gt.rsum_max) then
2128 r_augm=sigma(i,j)*(rrij-sigma(i,j))/rrij
2129 augm(i,j)=epsij*r_augm**(2*expon)
2130 ! augm(i,j)=0.5D0**(2*expon)*aa(i,j)
2137 write (iout,'(2(a3,2x),3(1pe10.3),5(0pf8.3))') &
2138 restyp(i),restyp(j),aa(i,j),bb(i,j),augm(i,j),&
2139 sigma(i,j),r0(i,j),chi(i,j),chi(j,i)
2144 allocate(aad(ntyp,2),bad(ntyp,2)) !(ntyp,2)
2153 ! Define the SC-p interaction constants (hard-coded; old style)
2156 ! "Soft" SC-p repulsion (causes helices to be too flat, but facilitates
2158 ! aad(i,1)=0.3D0*4.0D0**12
2159 ! Following line for constants currently implemented
2160 ! "Hard" SC-p repulsion (gives correct turn spacing in helices)
2161 aad(i,1)=1.5D0*4.0D0**12
2162 ! aad(i,1)=0.17D0*5.6D0**12
2164 ! "Soft" SC-p repulsion
2166 ! Following line for constants currently implemented
2167 ! aad(i,1)=0.3D0*4.0D0**6
2168 ! "Hard" SC-p repulsion
2169 bad(i,1)=3.0D0*4.0D0**6
2170 ! bad(i,1)=-2.0D0*0.17D0*5.6D0**6
2179 ! 8/9/01 Read the SC-p interaction constants from file
2182 read (iscpp,*,end=118,err=118) (eps_scp(i,j),rscp(i,j),j=1,2)
2185 aad(i,1)=dabs(eps_scp(i,1))*rscp(i,1)**12
2186 aad(i,2)=dabs(eps_scp(i,2))*rscp(i,2)**12
2187 bad(i,1)=-2*eps_scp(i,1)*rscp(i,1)**6
2188 bad(i,2)=-2*eps_scp(i,2)*rscp(i,2)**6
2192 write (iout,*) "Parameters of SC-p interactions:"
2194 write (iout,'(4f8.3,4e12.4)') eps_scp(i,1),rscp(i,1),&
2195 eps_scp(i,2),rscp(i,2),aad(i,1),bad(i,1),aad(i,2),bad(i,2)
2201 ! Define the constants of the disulfide bridge
2205 ! Old arbitrary potential - commented out.
2210 ! Constants of the disulfide-bond potential determined based on the RHF/6-31G**
2211 ! energy surface of diethyl disulfide.
2212 ! A. Liwo and U. Kozlowska, 11/24/03
2229 write (iout,'(/a)') "Disulfide bridge parameters:"
2230 write (iout,'(a,f10.2)') 'S-S bridge energy: ',ebr
2231 write (iout,'(2(a,f10.2))') 'd0cm:',d0cm,' akcm:',akcm
2232 write (iout,'(2(a,f10.2))') 'akth:',akth,' akct:',akct
2233 write (iout,'(3(a,f10.2))') 'v1ss:',v1ss,' v2ss:',v2ss,&
2237 111 write (iout,*) "Error reading bending energy parameters."
2239 112 write (iout,*) "Error reading rotamer energy parameters."
2241 113 write (iout,*) "Error reading torsional energy parameters."
2243 114 write (iout,*) "Error reading double torsional energy parameters."
2245 115 write (iout,*) &
2246 "Error reading cumulant (multibody energy) parameters."
2248 116 write (iout,*) "Error reading electrostatic energy parameters."
2250 117 write (iout,*) "Error reading side chain interaction parameters."
2252 118 write (iout,*) "Error reading SCp interaction parameters."
2254 119 write (iout,*) "Error reading SCCOR parameters"
2257 call MPI_Finalize(Ierror)
2261 end subroutine parmread
2262 !-----------------------------------------------------------------------------
2264 !-----------------------------------------------------------------------------
2265 subroutine permut(isym)
2267 use geometry_data, only: tabperm
2269 ! use control_data, only:lsecondary
2276 ! implicit real*8 (a-h,o-z)
2277 ! include 'DIMENSIONS'
2278 ! include 'COMMON.LOCAL'
2279 ! include 'COMMON.VAR'
2280 ! include 'COMMON.CHAIN'
2281 ! include 'COMMON.INTERACT'
2282 ! include 'COMMON.IOUNITS'
2283 ! include 'COMMON.GEO'
2284 ! include 'COMMON.NAMES'
2285 ! include 'COMMON.CONTROL'
2290 integer,dimension(isym) :: a
2291 ! parameter(n=symetr)
2304 10 print *,(a(i),i=1,n)
2308 ! write (iout,*) "tututu", kkk
2310 if(nextp(n,a)) go to 10
2312 end subroutine permut
2313 !-----------------------------------------------------------------------------
2314 logical function nextp(n,a)
2316 integer :: n,i,j,k,t
2318 integer,dimension(n) :: a
2320 10 if(a(i).lt.a(i+1)) go to 20
2337 if(a(j).lt.a(i)) go to 40
2344 !-----------------------------------------------------------------------------
2346 !-----------------------------------------------------------------------------
2347 subroutine printmat(ldim,m,n,iout,key,a)
2350 character(len=3),dimension(n) :: key
2351 real(kind=8),dimension(ldim,n) :: a
2353 integer :: i,j,k,m,iout,nlim
2357 write (iout,1000) (key(k),k=i,nlim)
2359 1000 format (/5x,8(6x,a3))
2360 1020 format (/80(1h-)/)
2362 write (iout,1010) key(j),(a(j,k),k=i,nlim)
2365 1010 format (a3,2x,8(f9.4))
2367 end subroutine printmat
2368 !-----------------------------------------------------------------------------
2370 !-----------------------------------------------------------------------------
2372 ! Read the PDB file and convert the peptide geometry into virtual-chain
2375 use energy_data, only: itype
2379 use control, only: rescode
2380 ! implicit real*8 (a-h,o-z)
2381 ! include 'DIMENSIONS'
2382 ! include 'COMMON.LOCAL'
2383 ! include 'COMMON.VAR'
2384 ! include 'COMMON.CHAIN'
2385 ! include 'COMMON.INTERACT'
2386 ! include 'COMMON.IOUNITS'
2387 ! include 'COMMON.GEO'
2388 ! include 'COMMON.NAMES'
2389 ! include 'COMMON.CONTROL'
2390 ! include 'COMMON.DISTFIT'
2391 ! include 'COMMON.SETUP'
2392 integer :: i,j,ibeg,ishift1,ires,iii,ires_old,ishift,ity!,&
2394 logical :: lprn=.true.,fail
2395 real(kind=8),dimension(3) :: e1,e2,e3
2396 real(kind=8) :: dcj,efree_temp
2397 character(len=3) :: seq,res
2398 character(len=5) :: atom
2399 character(len=80) :: card
2400 real(kind=8),dimension(3,20) :: sccor
2401 integer :: kkk,lll,icha,kupa !rescode,
2404 integer,dimension(2,maxres/3) :: hfrag_alloc
2405 integer,dimension(4,maxres/3) :: bfrag_alloc
2406 real(kind=8),dimension(3,maxres2+2,maxperm) :: cref_alloc !(3,maxres2+2,maxperm)
2412 ! write (2,*) "UNRES_PDB",unres_pdb
2420 !-----------------------------
2421 allocate(hfrag(2,maxres/3)) !(2,maxres/3)
2422 allocate(bfrag(4,maxres/3)) !(4,maxres/3)
2424 !elwrite(iout,*)"poczatek read pdb"
2427 read (ipdbin,'(a80)',end=10) card
2428 ! write (iout,'(a)') card
2429 if (card(:5).eq.'HELIX') then
2432 read(card(22:25),*) hfrag(1,nhfrag)
2433 read(card(34:37),*) hfrag(2,nhfrag)
2435 if (card(:5).eq.'SHEET') then
2438 read(card(24:26),*) bfrag(1,nbfrag)
2439 read(card(35:37),*) bfrag(2,nbfrag)
2440 !rc----------------------------------------
2441 !rc to be corrected !!!
2442 bfrag(3,nbfrag)=bfrag(1,nbfrag)
2443 bfrag(4,nbfrag)=bfrag(2,nbfrag)
2444 !rc----------------------------------------
2446 if (card(:3).eq.'END') then
2448 else if (card(:3).eq.'TER') then
2452 itype(ires_old)=ntyp1
2454 ! write (iout,*) "Chain ended",ires,ishift,ires_old
2457 dc(j,ires)=sccor(j,iii)
2460 call sccenter(ires,iii,sccor)
2465 if (index(card,"FREE ENERGY").gt.0) read(card(35:),*) efree_temp
2466 ! Fish out the ATOM cards.
2467 if (index(card(1:4),'ATOM').gt.0) then
2468 read (card(12:16),*) atom
2469 ! write (iout,*) "! ",atom," !",ires
2470 ! if (atom.eq.'CA' .or. atom.eq.'CH3') then
2471 read (card(23:26),*) ires
2472 read (card(18:20),'(a3)') res
2473 ! write (iout,*) "ires",ires,ires-ishift+ishift1,
2474 ! & " ires_old",ires_old
2475 ! write (iout,*) "ishift",ishift," ishift1",ishift1
2476 ! write (iout,*) "IRES",ires-ishift+ishift1,ires_old
2477 if (ires-ishift+ishift1.ne.ires_old) then
2478 ! Calculate the CM of the preceding residue.
2479 ! if (ibeg.eq.0) call sccenter(ires,iii,sccor)
2481 ! write (iout,*) "Calculating sidechain center iii",iii
2484 dc(j,ires+nres)=sccor(j,iii)
2487 call sccenter(ires_old,iii,sccor)
2491 ! Start new residue.
2492 if (res.eq.'Cl-' .or. res.eq.'Na+') then
2495 else if (ibeg.eq.1) then
2496 write (iout,*) "BEG ires",ires
2498 if (res.ne.'GLY' .and. res.ne. 'ACE') then
2502 ires=ires-ishift+ishift1
2504 ! write (iout,*) "ishift",ishift," ires",ires,
2505 ! & " ires_old",ires_old
2507 else if (ibeg.eq.2) then
2509 ! ishift=-ires_old+ires-1
2511 ! write (iout,*) "New chain started",ires,ishift,ishift1,"!"
2512 ires=ires-ishift+ishift1
2516 ishift=ishift-(ires-ishift+ishift1-ires_old-1)
2517 ires=ires-ishift+ishift1
2520 if (res.eq.'ACE' .or. res.eq.'NHE') then
2523 itype(ires)=rescode(ires,res,0)
2526 ires=ires-ishift+ishift1
2528 ! write (iout,*) "ires_old",ires_old," ires",ires
2529 if (card(27:27).eq."A" .or. card(27:27).eq."B") then
2532 ! write (2,*) "ires",ires," res ",res," ity",ity
2533 if (atom.eq.'CA' .or. atom.eq.'CH3' .or. &
2534 res.eq.'NHE'.and.atom(:2).eq.'HN') then
2535 read(card(31:54),'(3f8.3)') (c(j,ires),j=1,3)
2536 ! write (iout,*) "backbone ",atom
2538 write (iout,'(2i3,2x,a,3f8.3)') &
2539 ires,itype(ires),res,(c(j,ires),j=1,3)
2543 sccor(j,iii)=c(j,ires)
2545 ! write (*,*) card(23:27),ires,itype(ires)
2546 else if (atom.ne.'O'.and.atom(1:1).ne.'H' .and. &
2547 atom.ne.'N' .and. atom.ne.'C' .and. &
2548 atom(:2).ne.'1H' .and. atom(:2).ne.'2H' .and. &
2549 atom.ne.'OXT' .and. atom(:2).ne.'3H') then
2550 ! write (iout,*) "sidechain ",atom
2552 read(card(31:54),'(3f8.3)') (sccor(j,iii),j=1,3)
2556 10 write (iout,'(a,i5)') ' Number of residues found: ',ires
2557 if (ires.eq.0) return
2558 ! Calculate dummy residue coordinates inside the "chain" of a multichain
2562 ! write (iout,*) i,itype(i)
2563 if (itype(i).eq.ntyp1) then
2564 ! write (iout,*) "dummy",i,itype(i)
2566 c(j,i)=((c(j,i-1)+c(j,i+1))/2+2*c(j,i-1)-c(j,i-2))/2
2567 ! c(j,i)=(c(j,i-1)+c(j,i+1))/2
2572 ! Calculate the CM of the last side chain.
2576 dc(j,ires)=sccor(j,iii)
2579 call sccenter(ires,iii,sccor)
2585 if (itype(nres).ne.10) then
2589 ! 2/15/2013 by Adam: corrected insertion of the last dummy residue
2590 call refsys(nres-3,nres-2,nres-1,e1,e2,e3,fail)
2597 c(j,nres)=c(j,nres-1)-3.8d0*e2(j)
2601 dcj=c(j,nres-2)-c(j,nres-3)
2602 c(j,nres)=c(j,nres-1)+dcj
2603 c(j,2*nres)=c(j,nres)
2607 !---------------------------------
2608 !el reallocate tables
2611 hfrag_alloc(j,i)=hfrag(j,i)
2614 bfrag_alloc(j,i)=bfrag(j,i)
2620 allocate(hfrag(2,nres/3)) !(2,maxres/3)
2621 !el allocate(hfrag(2,nhfrag)) !(2,maxres/3)
2622 !el allocate(bfrag(4,nbfrag)) !(4,maxres/3)
2623 allocate(bfrag(4,nres/3)) !(4,maxres/3)
2627 hfrag(j,i)=hfrag_alloc(j,i)
2632 bfrag(j,i)=bfrag_alloc(j,i)
2635 !el end reallocate tables
2636 !---------------------------------
2644 c(j,2*nres)=c(j,nres)
2646 if (itype(1).eq.ntyp1) then
2650 ! 2/15/2013 by Adam: corrected insertion of the first dummy residue
2651 call refsys(2,3,4,e1,e2,e3,fail)
2658 c(j,1)=c(j,2)-3.8d0*e2(j)
2668 ! Copy the coordinates to reference coordinates
2674 ! Calculate internal coordinates.
2676 write (iout,'(/a)') &
2677 "Cartesian coordinates of the reference structure"
2678 write (iout,'(a,3(3x,a5),5x,3(3x,a5))') &
2679 "Residue","X(CA)","Y(CA)","Z(CA)","X(SC)","Y(SC)","Z(SC)"
2681 write (iout,'(a3,1x,i3,3f8.3,5x,3f8.3)') &
2682 restyp(itype(ires)),ires,(c(j,ires),j=1,3),&
2683 (c(j,ires+nres),j=1,3)
2686 ! Calculate internal coordinates.
2687 if(me.eq.king.or..not.out1file)then
2688 write (iout,'(a)') &
2689 "Backbone and SC coordinates as read from the PDB"
2691 write (iout,'(2i3,2x,a,3f8.3,5x,3f8.3)') &
2692 ires,itype(ires),restyp(itype(ires)),(c(j,ires),j=1,3),&
2693 (c(j,nres+ires),j=1,3)
2697 if(.not.allocated(vbld)) allocate(vbld(2*nres))
2698 if(.not.allocated(vbld_inv)) allocate(vbld_inv(2*nres))
2699 if(.not.allocated(theta)) allocate(theta(nres+2))
2700 if(.not.allocated(phi)) allocate(phi(nres+2))
2701 if(.not.allocated(alph)) allocate(alph(nres+2))
2702 if(.not.allocated(omeg)) allocate(omeg(nres+2))
2703 if(.not.allocated(theta)) allocate(theta(nres+2))
2704 if(.not.allocated(thetaref)) allocate(thetaref(nres+2))
2705 if(.not.allocated(phiref)) allocate(phiref(nres+2))
2706 if(.not.allocated(costtab)) allocate(costtab(nres))
2707 if(.not.allocated(sinttab)) allocate(sinttab(nres))
2708 if(.not.allocated(cost2tab)) allocate(cost2tab(nres))
2709 if(.not.allocated(sint2tab)) allocate(sint2tab(nres))
2710 if(.not.allocated(xxref)) allocate(xxref(nres))
2711 if(.not.allocated(yyref)) allocate(yyref(nres))
2712 if(.not.allocated(zzref)) allocate(zzref(nres)) !(maxres)
2713 if(.not.allocated(theta)) allocate(theta(nres))
2714 if(.not.allocated(dc_norm)) allocate(dc_norm(3,0:2*nres))
2715 if(.not.allocated(theta)) allocate(theta(nres))
2716 call int_from_cart(.true.,.false.)
2717 call sc_loc_geom(.true.)
2718 ! wczesbiej bylo false
2720 thetaref(i)=theta(i)
2725 dc(j,i)=c(j,i+1)-c(j,i)
2726 dc_norm(j,i)=dc(j,i)*vbld_inv(i+1)
2732 dc(j,i+nres)=c(j,i+nres)-c(j,i)
2733 dc_norm(j,i+nres)=dc(j,i+nres)*vbld_inv(i+nres)
2735 ! write (iout,*) i,(dc(j,i+nres),j=1,3),(dc_norm(j,i+nres),j=1,3),&
2739 ! Copy the coordinates to reference coordinates
2740 ! Splits to single chain if occurs
2744 ! cref(j,i,cou)=c(j,i)
2748 allocate(cref(3,2*nres+2,maxperm)) !(3,maxres2+2,maxperm)
2749 allocate(chain_rep(3,2*nres+2,maxsym)) !(3,maxres2+2,maxsym)
2750 allocate(tabperm(maxperm,maxsym)) !(maxperm,maxsym)
2751 !-----------------------------
2757 !c write (iout,*) "spraw lancuchy",(c(j,i),j=1,3)
2759 if ((itype(i-1).eq.ntyp1).and.(i.gt.2)) then
2762 ! write (iout,*) "spraw lancuchy",(c(j,i),j=1,3)
2767 cref(j,i,cou)=c(j,i)
2768 cref(j,i+nres,cou)=c(j,i+nres)
2770 chain_rep(j,lll,kkk)=c(j,i)
2771 chain_rep(j,lll+nres,kkk)=c(j,i+nres)
2775 write (iout,*) chain_length
2776 if (chain_length.eq.0) chain_length=nres
2778 chain_rep(j,chain_length,symetr)=chain_rep(j,chain_length,1)
2779 chain_rep(j,chain_length+nres,symetr) &
2780 =chain_rep(j,chain_length+nres,1)
2783 ! write (iout,*) "spraw lancuchy",chain_length,symetr
2785 ! do kkk=1,chain_length
2786 ! write (iout,*) itype(kkk),(chain_rep(j,kkk,i), j=1,3)
2790 ! makes copy of chains
2791 write (iout,*) "symetr", symetr
2793 if (symetr.gt.1) then
2800 write(iout,*) (tabperm(i,kkk),kkk=1,4)
2806 ! write (iout,*) i,icha
2807 do lll=1,chain_length
2809 if (cou.le.nres) then
2811 kupa=mod(lll,chain_length)
2812 iprzes=(kkk-1)*chain_length+lll
2813 if (kupa.eq.0) kupa=chain_length
2814 ! write (iout,*) "kupa", kupa
2815 cref(j,iprzes,i)=chain_rep(j,kupa,icha)
2816 cref(j,iprzes+nres,i)=chain_rep(j,kupa+nres,icha)
2823 !-koniec robienia kopii
2826 write (iout,*) "nowa struktura", nperm
2828 write (iout,110) restyp(itype(i)),i,cref(1,i,kkk),&
2830 cref(3,i,kkk),cref(1,nres+i,kkk),&
2831 cref(2,nres+i,kkk),cref(3,nres+i,kkk)
2833 100 format (//' alpha-carbon coordinates ',&
2834 ' centroid coordinates'/ &
2835 ' ', 6X,'X',11X,'Y',11X,'Z', &
2836 10X,'X',11X,'Y',11X,'Z')
2837 110 format (a,'(',i3,')',6f12.5)
2843 bfrag(i,j)=bfrag(i,j)-ishift
2849 hfrag(i,j)=hfrag(i,j)-ishift
2853 !---------------------
2854 ! el reallocate array
2857 cref_alloc(1,i,kkk)=cref(1,i,kkk)
2858 cref_alloc(2,i,kkk)=cref(2,i,kkk)
2859 cref_alloc(3,i,kkk)=cref(3,i,kkk)
2862 !el deallocate(cref)
2863 !el allocate(cref(3,2*nres+2,nperm)) !(3,maxres2+2,maxperm)
2867 cref(1,i,kkk)=cref_alloc(1,i,kkk)
2868 cref(2,i,kkk)=cref_alloc(2,i,kkk)
2869 cref(3,i,kkk)=cref_alloc(3,i,kkk)
2872 !---------------------
2874 end subroutine readpdb
2876 !-----------------------------------------------------------------------------
2878 !-----------------------------------------------------------------------------
2879 subroutine read_control
2893 use random, only: random_init
2894 ! implicit real*8 (a-h,o-z)
2895 ! include 'DIMENSIONS'
2897 use prng, only:prng_restart
2899 logical :: OKRandom!, prng_restart
2902 ! include 'COMMON.IOUNITS'
2903 ! include 'COMMON.TIME1'
2904 ! include 'COMMON.THREAD'
2905 ! include 'COMMON.SBRIDGE'
2906 ! include 'COMMON.CONTROL'
2907 ! include 'COMMON.MCM'
2908 ! include 'COMMON.MAP'
2909 ! include 'COMMON.HEADER'
2910 ! include 'COMMON.CSA'
2911 ! include 'COMMON.CHAIN'
2912 ! include 'COMMON.MUCA'
2913 ! include 'COMMON.MD'
2914 ! include 'COMMON.FFIELD'
2915 ! include 'COMMON.INTERACT'
2916 ! include 'COMMON.SETUP'
2917 !el integer :: KDIAG,ICORFL,IXDR
2918 !el COMMON /MACHSW/ KDIAG,ICORFL,IXDR
2919 character(len=8),dimension(0:3) :: diagmeth = reshape((/'Library ',&
2920 'EVVRSP ','Givens ','Jacobi '/),shape(diagmeth))
2921 ! character(len=80) :: ucase
2922 character(len=640) :: controlcard
2924 real(kind=8) :: seed,rmsdbc,rmsdbc1max,rmsdbcm,drms,timem!,&
2930 read (INP,'(a)') titel
2931 call card_concat(controlcard,.true.)
2932 ! out1file=index(controlcard,'OUT1FILE').gt.0 .or. fg_rank.gt.0
2933 ! print *,"Processor",me," fg_rank",fg_rank," out1file",out1file
2934 call reada(controlcard,'SEED',seed,0.0D0)
2935 call random_init(seed)
2936 ! Set up the time limit (caution! The time must be input in minutes!)
2937 read_cart=index(controlcard,'READ_CART').gt.0
2938 call readi(controlcard,'CONSTR_DIST',constr_dist,0)
2939 call readi(controlcard,'SYM',symetr,1)
2940 call reada(controlcard,'TIMLIM',timlim,960.0D0) ! default 16 hours
2941 unres_pdb = index(controlcard,'UNRES_PDB') .gt. 0
2942 call reada(controlcard,'SAFETY',safety,30.0D0) ! default 30 minutes
2943 call reada(controlcard,'RMSDBC',rmsdbc,3.0D0)
2944 call reada(controlcard,'RMSDBC1',rmsdbc1,0.5D0)
2945 call reada(controlcard,'RMSDBC1MAX',rmsdbc1max,1.5D0)
2946 call reada(controlcard,'RMSDBCM',rmsdbcm,3.0D0)
2947 call reada(controlcard,'DRMS',drms,0.1D0)
2948 if(me.eq.king .or. .not. out1file .and. fg_rank.eq.0) then
2949 write (iout,'(a,f10.1)')'RMSDBC = ',rmsdbc
2950 write (iout,'(a,f10.1)')'RMSDBC1 = ',rmsdbc1
2951 write (iout,'(a,f10.1)')'RMSDBC1MAX = ',rmsdbc1max
2952 write (iout,'(a,f10.1)')'DRMS = ',drms
2953 write (iout,'(a,f10.1)')'RMSDBCM = ',rmsdbcm
2954 write (iout,'(a,f10.1)') 'Time limit (min):',timlim
2956 call readi(controlcard,'NZ_START',nz_start,0)
2957 call readi(controlcard,'NZ_END',nz_end,0)
2958 call readi(controlcard,'IZ_SC',iz_sc,0)
2959 timlim=60.0D0*timlim
2960 safety = 60.0d0*safety
2963 call reada(controlcard,"T_BATH",t_bath,300.0d0)
2964 minim=(index(controlcard,'MINIMIZE').gt.0)
2965 dccart=(index(controlcard,'CART').gt.0)
2966 overlapsc=(index(controlcard,'OVERLAP').gt.0)
2967 overlapsc=.not.overlapsc
2968 searchsc=(index(controlcard,'NOSEARCHSC').gt.0)
2969 searchsc=.not.searchsc
2970 sideadd=(index(controlcard,'SIDEADD').gt.0)
2971 energy_dec=(index(controlcard,'ENERGY_DEC').gt.0)
2972 outpdb=(index(controlcard,'PDBOUT').gt.0)
2973 outmol2=(index(controlcard,'MOL2OUT').gt.0)
2974 pdbref=(index(controlcard,'PDBREF').gt.0)
2975 refstr=pdbref .or. (index(controlcard,'REFSTR').gt.0)
2976 indpdb=index(controlcard,'PDBSTART')
2977 extconf=(index(controlcard,'EXTCONF').gt.0)
2978 call readi(controlcard,'IPRINT',iprint,0)
2979 call readi(controlcard,'MAXGEN',maxgen,10000)
2980 call readi(controlcard,'MAXOVERLAP',maxoverlap,1000)
2981 call readi(controlcard,"KDIAG",kdiag,0)
2982 call readi(controlcard,"RESCALE_MODE",rescale_mode,2)
2983 if(me.eq.king .or. .not. out1file .and. fg_rank.eq.0) &
2984 write (iout,*) "RESCALE_MODE",rescale_mode
2985 split_ene=index(controlcard,'SPLIT_ENE').gt.0
2986 if (index(controlcard,'REGULAR').gt.0.0D0) then
2987 call reada(controlcard,'WEIDIS',weidis,0.1D0)
2991 if (index(controlcard,'CHECKGRAD').gt.0) then
2993 if (index(controlcard,'CART').gt.0) then
2995 elseif (index(controlcard,'CARINT').gt.0) then
3000 elseif (index(controlcard,'THREAD').gt.0) then
3002 call readi(controlcard,'THREAD',nthread,0)
3003 if (nthread.gt.0) then
3004 call reada(controlcard,'WEIDIS',weidis,0.1D0)
3007 write (iout,'(a)')'A number has to follow the THREAD keyword.'
3008 stop 'Error termination in Read_Control.'
3010 else if (index(controlcard,'MCMA').gt.0) then
3012 else if (index(controlcard,'MCEE').gt.0) then
3014 else if (index(controlcard,'MULTCONF').gt.0) then
3016 else if (index(controlcard,'MAP').gt.0) then
3018 call readi(controlcard,'MAP',nmap,0)
3019 else if (index(controlcard,'CSA').gt.0) then
3021 !rc else if (index(controlcard,'ZSCORE').gt.0) then
3023 !rc ZSCORE is rm from UNRES, modecalc=9 is available
3026 !fcm else if (index(controlcard,'MCMF').gt.0) then
3028 else if (index(controlcard,'SOFTREG').gt.0) then
3030 else if (index(controlcard,'CHECK_BOND').gt.0) then
3032 else if (index(controlcard,'TEST').gt.0) then
3034 else if (index(controlcard,'MD').gt.0) then
3036 else if (index(controlcard,'RE ').gt.0) then
3040 lmuca=index(controlcard,'MUCA').gt.0
3041 call readi(controlcard,'MUCADYN',mucadyn,0)
3042 call readi(controlcard,'MUCASMOOTH',muca_smooth,0)
3043 if (lmuca .and. (me.eq.king .or. .not.out1file )) &
3045 write (iout,*) 'MUCADYN=',mucadyn
3046 write (iout,*) 'MUCASMOOTH=',muca_smooth
3049 iscode=index(controlcard,'ONE_LETTER')
3050 indphi=index(controlcard,'PHI')
3051 indback=index(controlcard,'BACK')
3052 iranconf=index(controlcard,'RAND_CONF')
3053 i2ndstr=index(controlcard,'USE_SEC_PRED')
3054 gradout=index(controlcard,'GRADOUT').gt.0
3055 gnorm_check=index(controlcard,'GNORM_CHECK').gt.0
3056 call reada(controlcard,'DISTCHAINMAX',distchainmax,5.0d0)
3057 if (me.eq.king .or. .not.out1file ) &
3058 write (iout,*) "DISTCHAINMAX",distchainmax
3060 if(me.eq.king.or..not.out1file) &
3061 write (iout,'(2a)') diagmeth(kdiag),&
3062 ' routine used to diagonalize matrices.'
3064 end subroutine read_control
3065 !-----------------------------------------------------------------------------
3066 subroutine read_REMDpar
3068 ! Read REMD settings
3075 use control_data, only:out1file
3076 ! implicit real*8 (a-h,o-z)
3077 ! include 'DIMENSIONS'
3078 ! include 'COMMON.IOUNITS'
3079 ! include 'COMMON.TIME1'
3080 ! include 'COMMON.MD'
3083 !el include 'COMMON.LANGEVIN'
3085 !el include 'COMMON.LANGEVIN.lang0'
3087 ! include 'COMMON.INTERACT'
3088 ! include 'COMMON.NAMES'
3089 ! include 'COMMON.GEO'
3090 ! include 'COMMON.REMD'
3091 ! include 'COMMON.CONTROL'
3092 ! include 'COMMON.SETUP'
3093 ! character(len=80) :: ucase
3094 character(len=320) :: controlcard
3095 character(len=3200) :: controlcard1
3096 integer :: iremd_m_total
3099 ! real(kind=8) :: var,ene
3101 if(me.eq.king.or..not.out1file) &
3102 write (iout,*) "REMD setup"
3104 call card_concat(controlcard,.true.)
3105 call readi(controlcard,"NREP",nrep,3)
3106 call readi(controlcard,"NSTEX",nstex,1000)
3107 call reada(controlcard,"RETMIN",retmin,10.0d0)
3108 call reada(controlcard,"RETMAX",retmax,1000.0d0)
3109 mremdsync=(index(controlcard,'SYNC').gt.0)
3110 call readi(controlcard,"NSYN",i_sync_step,100)
3111 restart1file=(index(controlcard,'REST1FILE').gt.0)
3112 traj1file=(index(controlcard,'TRAJ1FILE').gt.0)
3113 call readi(controlcard,"TRAJCACHE",max_cache_traj_use,1)
3114 if(max_cache_traj_use.gt.max_cache_traj) &
3115 max_cache_traj_use=max_cache_traj
3116 if(me.eq.king.or..not.out1file) then
3117 !d if (traj1file) then
3118 !rc caching is in testing - NTWX is not ignored
3119 !d write (iout,*) "NTWX value is ignored"
3120 !d write (iout,*) " trajectory is stored to one file by master"
3121 !d write (iout,*) " before exchange at NSTEX intervals"
3123 write (iout,*) "NREP= ",nrep
3124 write (iout,*) "NSTEX= ",nstex
3125 write (iout,*) "SYNC= ",mremdsync
3126 write (iout,*) "NSYN= ",i_sync_step
3127 write (iout,*) "TRAJCACHE= ",max_cache_traj_use
3130 allocate(remd_t(nrep),remd_m(nrep)) !(maxprocs)
3131 if (index(controlcard,'TLIST').gt.0) then
3133 call card_concat(controlcard1,.true.)
3134 read(controlcard1,*) (remd_t(i),i=1,nrep)
3135 if(me.eq.king.or..not.out1file) &
3136 write (iout,*)'tlist',(remd_t(i),i=1,nrep)
3139 if (index(controlcard,'MLIST').gt.0) then
3141 call card_concat(controlcard1,.true.)
3142 read(controlcard1,*) (remd_m(i),i=1,nrep)
3143 if(me.eq.king.or..not.out1file) then
3144 write (iout,*)'mlist',(remd_m(i),i=1,nrep)
3147 iremd_m_total=iremd_m_total+remd_m(i)
3149 write (iout,*) 'Total number of replicas ',iremd_m_total
3152 if(me.eq.king.or..not.out1file) &
3153 write (iout,'(/30(1h=),a,29(1h=)/)') " End of REMD run setup "
3155 end subroutine read_REMDpar
3156 !-----------------------------------------------------------------------------
3157 subroutine read_MDpar
3161 use control_data, only: r_cut,rlamb,out1file
3163 use geometry_data, only: pi
3165 ! implicit real*8 (a-h,o-z)
3166 ! include 'DIMENSIONS'
3167 ! include 'COMMON.IOUNITS'
3168 ! include 'COMMON.TIME1'
3169 ! include 'COMMON.MD'
3172 !el include 'COMMON.LANGEVIN'
3174 !el include 'COMMON.LANGEVIN.lang0'
3176 ! include 'COMMON.INTERACT'
3177 ! include 'COMMON.NAMES'
3178 ! include 'COMMON.GEO'
3179 ! include 'COMMON.SETUP'
3180 ! include 'COMMON.CONTROL'
3181 ! include 'COMMON.SPLITELE'
3182 ! character(len=80) :: ucase
3183 character(len=320) :: controlcard
3188 call card_concat(controlcard,.true.)
3189 call readi(controlcard,"NSTEP",n_timestep,1000000)
3190 call readi(controlcard,"NTWE",ntwe,100)
3191 call readi(controlcard,"NTWX",ntwx,1000)
3192 call reada(controlcard,"DT",d_time,1.0d-1)
3193 call reada(controlcard,"DVMAX",dvmax,2.0d1)
3194 call reada(controlcard,"DAMAX",damax,1.0d1)
3195 call reada(controlcard,"EDRIFTMAX",edriftmax,1.0d+1)
3196 call readi(controlcard,"LANG",lang,0)
3197 RESPA = index(controlcard,"RESPA") .gt. 0
3198 call readi(controlcard,"NTIME_SPLIT",ntime_split,1)
3199 ntime_split0=ntime_split
3200 call readi(controlcard,"MAXTIME_SPLIT",maxtime_split,64)
3201 ntime_split0=ntime_split
3202 call reada(controlcard,"R_CUT",r_cut,2.0d0)
3203 call reada(controlcard,"LAMBDA",rlamb,0.3d0)
3204 rest = index(controlcard,"REST").gt.0
3205 tbf = index(controlcard,"TBF").gt.0
3206 usampl = index(controlcard,"USAMPL").gt.0
3207 mdpdb = index(controlcard,"MDPDB").gt.0
3208 call reada(controlcard,"T_BATH",t_bath,300.0d0)
3209 call reada(controlcard,"TAU_BATH",tau_bath,1.0d-1)
3210 call reada(controlcard,"EQ_TIME",eq_time,1.0d+4)
3211 call readi(controlcard,"RESET_MOMENT",count_reset_moment,1000)
3212 if (count_reset_moment.eq.0) count_reset_moment=1000000000
3213 call readi(controlcard,"RESET_VEL",count_reset_vel,1000)
3214 reset_moment=lang.eq.0 .and. tbf .and. count_reset_moment.gt.0
3215 reset_vel=lang.eq.0 .and. tbf .and. count_reset_vel.gt.0
3216 if (count_reset_vel.eq.0) count_reset_vel=1000000000
3217 large = index(controlcard,"LARGE").gt.0
3218 print_compon = index(controlcard,"PRINT_COMPON").gt.0
3219 rattle = index(controlcard,"RATTLE").gt.0
3220 ! if performing umbrella sampling, fragments constrained are read from the fragment file
3226 if(me.eq.king.or..not.out1file) then
3228 write (iout,'(27(1h=),a26,27(1h=))') " Parameters of the MD run "
3230 write (iout,'(a)') "The units are:"
3231 write (iout,'(a)') "positions: angstrom, time: 48.9 fs"
3232 write (iout,'(2a)') "velocity: angstrom/(48.9 fs),",&
3233 " acceleration: angstrom/(48.9 fs)**2"
3234 write (iout,'(a)') "energy: kcal/mol, temperature: K"
3236 write (iout,'(a60,i10)') "Number of time steps:",n_timestep
3237 write (iout,'(a60,f10.5,a)') &
3238 "Initial time step of numerical integration:",d_time,&
3240 write (iout,'(60x,f10.5,a)') d_time*48.9," fs"
3242 write (iout,'(2a,i4,a)') &
3243 "A-MTS algorithm used; initial time step for fast-varying",&
3244 " short-range forces split into",ntime_split," steps."
3245 write (iout,'(a,f5.2,a,f5.2)') "Short-range force cutoff",&
3246 r_cut," lambda",rlamb
3248 write (iout,'(2a,f10.5)') &
3249 "Maximum acceleration threshold to reduce the time step",&
3250 "/increase split number:",damax
3251 write (iout,'(2a,f10.5)') &
3252 "Maximum predicted energy drift to reduce the timestep",&
3253 "/increase split number:",edriftmax
3254 write (iout,'(a60,f10.5)') &
3255 "Maximum velocity threshold to reduce velocities:",dvmax
3256 write (iout,'(a60,i10)') "Frequency of property output:",ntwe
3257 write (iout,'(a60,i10)') "Frequency of coordinate output:",ntwx
3258 if (rattle) write (iout,'(a60)') &
3259 "Rattle algorithm used to constrain the virtual bonds"
3263 call reada(controlcard,"ETAWAT",etawat,0.8904d0)
3264 call reada(controlcard,"RWAT",rwat,1.4d0)
3265 call reada(controlcard,"SCAL_FRIC",scal_fric,2.0d-2)
3266 surfarea=index(controlcard,"SURFAREA").gt.0
3267 call readi(controlcard,"RESET_FRICMAT",reset_fricmat,1000)
3268 if(me.eq.king.or..not.out1file)then
3269 write (iout,'(/a,$)') "Langevin dynamics calculation"
3271 write (iout,'(a/)') &
3272 " with direct integration of Langevin equations"
3273 else if (lang.eq.2) then
3274 write (iout,'(a/)') " with TINKER stochasic MD integrator"
3275 else if (lang.eq.3) then
3276 write (iout,'(a/)') " with Ciccotti's stochasic MD integrator"
3277 else if (lang.eq.4) then
3278 write (iout,'(a/)') " in overdamped mode"
3280 write (iout,'(//a,i5)') &
3281 "=========== ERROR: Unknown Langevin dynamics mode:",lang
3284 write (iout,'(a60,f10.5)') "Temperature:",t_bath
3285 write (iout,'(a60,f10.5)') "Viscosity of the solvent:",etawat
3286 write (iout,'(a60,f10.5)') "Radius of solvent molecule:",rwat
3287 write (iout,'(a60,f10.5)') &
3288 "Scaling factor of the friction forces:",scal_fric
3289 if (surfarea) write (iout,'(2a,i10,a)') &
3290 "Friction coefficients will be scaled by solvent-accessible",&
3291 " surface area every",reset_fricmat," steps."
3293 ! Calculate friction coefficients and bounds of stochastic forces
3294 eta=6*pi*cPoise*etawat
3295 if(me.eq.king.or..not.out1file) &
3296 write(iout,'(a60,f10.5)')"Eta of the solvent in natural units:",&
3298 gamp=scal_fric*(pstok+rwat)*eta
3299 stdfp=dsqrt(2*Rb*t_bath/d_time)
3300 allocate(gamsc(ntyp1),stdfsc(ntyp1)) !(ntyp1)
3302 gamsc(i)=scal_fric*(restok(i)+rwat)*eta
3303 stdfsc(i)=dsqrt(2*Rb*t_bath/d_time)
3305 if(me.eq.king.or..not.out1file)then
3306 write (iout,'(/2a/)') &
3307 "Radii of site types and friction coefficients and std's of",&
3308 " stochastic forces of fully exposed sites"
3309 write (iout,'(a5,f5.2,2f10.5)')'p',pstok,gamp,stdfp*dsqrt(gamp)
3311 write (iout,'(a5,f5.2,2f10.5)') restyp(i),restok(i),&
3312 gamsc(i),stdfsc(i)*dsqrt(gamsc(i))
3316 if(me.eq.king.or..not.out1file)then
3317 write (iout,'(a)') "Berendsen bath calculation"
3318 write (iout,'(a60,f10.5)') "Temperature:",t_bath
3319 write (iout,'(a60,f10.5)') "Coupling constant (tau):",tau_bath
3321 write (iout,'(a,i10,a)') "Momenta will be reset at zero every",&
3322 count_reset_moment," steps"
3324 write (iout,'(a,i10,a)') &
3325 "Velocities will be reset at random every",count_reset_vel,&
3329 if(me.eq.king.or..not.out1file) &
3330 write (iout,'(a31)') "Microcanonical mode calculation"
3332 if(me.eq.king.or..not.out1file)then
3333 if (rest) write (iout,'(/a/)') "===== Calculation restarted ===="
3335 write(iout,*) "MD running with constraints."
3336 write(iout,*) "Equilibration time ", eq_time, " mtus."
3337 write(iout,*) "Constraining ", nfrag," fragments."
3338 write(iout,*) "Length of each fragment, weight and q0:"
3340 write (iout,*) "Set of restraints #",iset
3342 write(iout,'(2i5,f8.1,f7.4)') ifrag(1,i,iset),&
3343 ifrag(2,i,iset),wfrag(i,iset),qinfrag(i,iset)
3345 write(iout,*) "constraints between ", npair, "fragments."
3346 write(iout,*) "constraint pairs, weights and q0:"
3348 write(iout,'(2i5,f8.1,f7.4)') ipair(1,i,iset),&
3349 ipair(2,i,iset),wpair(i,iset),qinpair(i,iset)
3351 write(iout,*) "angle constraints within ", nfrag_back,&
3352 "backbone fragments."
3353 write(iout,*) "fragment, weights:"
3355 write(iout,'(2i5,3f8.1)') ifrag_back(1,i,iset),&
3356 ifrag_back(2,i,iset),wfrag_back(1,i,iset),&
3357 wfrag_back(2,i,iset),wfrag_back(3,i,iset)
3360 iset=mod(kolor,nset)+1
3363 if(me.eq.king.or..not.out1file) &
3364 write (iout,'(/30(1h=),a,29(1h=)/)') " End of MD run setup "
3366 end subroutine read_MDpar
3367 !-----------------------------------------------------------------------------
3371 ! implicit real*8 (a-h,o-z)
3372 ! include 'DIMENSIONS'
3373 ! include 'COMMON.MAP'
3374 ! include 'COMMON.IOUNITS'
3375 character(len=3) :: angid(4) = (/'THE','PHI','ALP','OME'/)
3376 character(len=80) :: mapcard !,ucase
3379 ! real(kind=8) :: var,ene
3382 read (inp,'(a)') mapcard
3383 mapcard=ucase(mapcard)
3384 if (index(mapcard,'PHI').gt.0) then
3386 else if (index(mapcard,'THE').gt.0) then
3388 else if (index(mapcard,'ALP').gt.0) then
3390 else if (index(mapcard,'OME').gt.0) then
3393 write(iout,'(a)')'Error - illegal variable spec in MAP card.'
3394 stop 'Error - illegal variable spec in MAP card.'
3396 call readi (mapcard,'RES1',res1(imap),0)
3397 call readi (mapcard,'RES2',res2(imap),0)
3398 if (res1(imap).eq.0) then
3399 res1(imap)=res2(imap)
3400 else if (res2(imap).eq.0) then
3401 res2(imap)=res1(imap)
3403 if(res1(imap)*res2(imap).eq.0 .or. res1(imap).gt.res2(imap))then
3404 write (iout,'(a)') &
3405 'Error - illegal definition of variable group in MAP.'
3406 stop 'Error - illegal definition of variable group in MAP.'
3408 call reada(mapcard,'FROM',ang_from(imap),0.0D0)
3409 call reada(mapcard,'TO',ang_to(imap),0.0D0)
3410 call readi(mapcard,'NSTEP',nstep(imap),0)
3411 if (ang_from(imap).eq.ang_to(imap) .or. nstep(imap).eq.0) then
3412 write (iout,'(a)') &
3413 'Illegal boundary and/or step size specification in MAP.'
3414 stop 'Illegal boundary and/or step size specification in MAP.'
3418 end subroutine map_read
3419 !-----------------------------------------------------------------------------
3422 use control_data, only: vdisulf
3424 ! implicit real*8 (a-h,o-z)
3425 ! include 'DIMENSIONS'
3426 ! include 'COMMON.IOUNITS'
3427 ! include 'COMMON.GEO'
3428 ! include 'COMMON.CSA'
3429 ! include 'COMMON.BANK'
3430 ! include 'COMMON.CONTROL'
3431 ! character(len=80) :: ucase
3432 character(len=620) :: mcmcard
3434 ! integer :: ntf,ik,iw_pdb
3435 ! real(kind=8) :: var,ene
3437 call card_concat(mcmcard,.true.)
3439 call readi(mcmcard,'NCONF',nconf,50)
3440 call readi(mcmcard,'NADD',nadd,0)
3441 call readi(mcmcard,'JSTART',jstart,1)
3442 call readi(mcmcard,'JEND',jend,1)
3443 call readi(mcmcard,'NSTMAX',nstmax,500000)
3444 call readi(mcmcard,'N0',n0,1)
3445 call readi(mcmcard,'N1',n1,6)
3446 call readi(mcmcard,'N2',n2,4)
3447 call readi(mcmcard,'N3',n3,0)
3448 call readi(mcmcard,'N4',n4,0)
3449 call readi(mcmcard,'N5',n5,0)
3450 call readi(mcmcard,'N6',n6,10)
3451 call readi(mcmcard,'N7',n7,0)
3452 call readi(mcmcard,'N8',n8,0)
3453 call readi(mcmcard,'N9',n9,0)
3454 call readi(mcmcard,'N14',n14,0)
3455 call readi(mcmcard,'N15',n15,0)
3456 call readi(mcmcard,'N16',n16,0)
3457 call readi(mcmcard,'N17',n17,0)
3458 call readi(mcmcard,'N18',n18,0)
3460 vdisulf=(index(mcmcard,'DYNSS').gt.0)
3462 call readi(mcmcard,'NDIFF',ndiff,2)
3463 call reada(mcmcard,'DIFFCUT',diffcut,0.0d0)
3464 call readi(mcmcard,'IS1',is1,1)
3465 call readi(mcmcard,'IS2',is2,8)
3466 call readi(mcmcard,'NRAN0',nran0,4)
3467 call readi(mcmcard,'NRAN1',nran1,2)
3468 call readi(mcmcard,'IRR',irr,1)
3469 call readi(mcmcard,'NSEED',nseed,20)
3470 call readi(mcmcard,'NTOTAL',ntotal,10000)
3471 call reada(mcmcard,'CUT1',cut1,2.0d0)
3472 call reada(mcmcard,'CUT2',cut2,5.0d0)
3473 call reada(mcmcard,'ESTOP',estop,-3000.0d0)
3474 call readi(mcmcard,'ICMAX',icmax,3)
3475 call readi(mcmcard,'IRESTART',irestart,0)
3476 !!bankt call readi(mcmcard,'NBANKTM',ntbankm,0)
3479 call reada(mcmcard,'DELE',dele,20.0d0)
3480 call reada(mcmcard,'DIFCUT',difcut,720.0d0)
3481 call readi(mcmcard,'IREF',iref,0)
3482 call reada(mcmcard,'RMSCUT',rmscut,4.0d0)
3483 call reada(mcmcard,'PNCCUT',pnccut,0.5d0)
3484 call readi(mcmcard,'NCONF_IN',nconf_in,0)
3485 call reada(mcmcard,'RDIH_BIAS',rdih_bias,0.5d0)
3486 write (iout,*) "NCONF_IN",nconf_in
3488 end subroutine csaread
3489 !-----------------------------------------------------------------------------
3493 use control_data, only: MaxMoveType
3496 ! implicit real*8 (a-h,o-z)
3497 ! include 'DIMENSIONS'
3498 ! include 'COMMON.MCM'
3499 ! include 'COMMON.MCE'
3500 ! include 'COMMON.IOUNITS'
3501 ! character(len=80) :: ucase
3502 character(len=320) :: mcmcard
3505 ! real(kind=8) :: var,ene
3507 call card_concat(mcmcard,.true.)
3508 call readi(mcmcard,'MAXACC',maxacc,100)
3509 call readi(mcmcard,'MAX_MCM_IT',max_mcm_it,10000)
3510 call readi(mcmcard,'MAXTRIAL',maxtrial,100)
3511 call readi(mcmcard,'MAXTRIAL_ITER',maxtrial_iter,1000)
3512 call readi(mcmcard,'MAXREPM',maxrepm,200)
3513 call reada(mcmcard,'RANFRACT',RanFract,0.5D0)
3514 call reada(mcmcard,'POOL_FRACT',pool_fraction,0.01D0)
3515 call reada(mcmcard,'OVERLAP',overlap_cut,1.0D3)
3516 call reada(mcmcard,'E_UP',e_up,5.0D0)
3517 call reada(mcmcard,'DELTE',delte,0.1D0)
3518 call readi(mcmcard,'NSWEEP',nsweep,5)
3519 call readi(mcmcard,'NSTEPH',nsteph,0)
3520 call readi(mcmcard,'NSTEPC',nstepc,0)
3521 call reada(mcmcard,'TMIN',tmin,298.0D0)
3522 call reada(mcmcard,'TMAX',tmax,298.0D0)
3523 call readi(mcmcard,'NWINDOW',nwindow,0)
3524 call readi(mcmcard,'PRINT_MC',print_mc,0)
3525 print_stat=(index(mcmcard,'NO_PRINT_STAT').le.0)
3526 print_int=(index(mcmcard,'NO_PRINT_INT').le.0)
3527 ent_read=(index(mcmcard,'ENT_READ').gt.0)
3528 call readi(mcmcard,'SAVE_FREQ',save_frequency,1000)
3529 call readi(mcmcard,'MESSAGE_FREQ',message_frequency,1000)
3530 call readi(mcmcard,'POOL_READ_FREQ',pool_read_freq,5000)
3531 call readi(mcmcard,'POOL_SAVE_FREQ',pool_save_freq,1000)
3532 call readi(mcmcard,'PRINT_FREQ',print_freq,1000)
3533 if (nwindow.gt.0) then
3534 allocate(winstart(nwindow)) !!el (maxres)
3535 allocate(winend(nwindow)) !!el
3536 allocate(winlen(nwindow)) !!el
3537 read (inp,*) (winstart(i),winend(i),i=1,nwindow)
3539 winlen(i)=winend(i)-winstart(i)+1
3542 if (tmax.lt.tmin) tmax=tmin
3543 if (tmax.eq.tmin) then
3547 if (nstepc.gt.0 .and. nsteph.gt.0) then
3548 tsteph=(tmax/tmin)**(1.0D0/(nsteph+0.0D0))
3549 tstepc=(tmax/tmin)**(1.0D0/(nstepc+0.0D0))
3551 allocate(sumpro_type(0:MaxMoveType)) !(0:MaxMoveType)
3552 ! Probabilities of different move types
3553 sumpro_type(0)=0.0D0
3554 call reada(mcmcard,'MULTI_BOND',sumpro_type(1),1.0d0)
3555 call reada(mcmcard,'ONE_ANGLE' ,sumpro_type(2),2.0d0)
3556 sumpro_type(2)=sumpro_type(1)+sumpro_type(2)
3557 call reada(mcmcard,'THETA' ,sumpro_type(3),0.0d0)
3558 sumpro_type(3)=sumpro_type(2)+sumpro_type(3)
3559 call reada(mcmcard,'SIDE_CHAIN',sumpro_type(4),0.5d0)
3560 sumpro_type(4)=sumpro_type(3)+sumpro_type(4)
3562 print *,'i',i,' sumprotype',sumpro_type(i)
3563 sumpro_type(i)=sumpro_type(i)/sumpro_type(MaxMoveType)
3564 print *,'i',i,' sumprotype',sumpro_type(i)
3567 end subroutine mcmread
3568 !-----------------------------------------------------------------------------
3569 subroutine read_minim
3572 ! implicit real*8 (a-h,o-z)
3573 ! include 'DIMENSIONS'
3574 ! include 'COMMON.MINIM'
3575 ! include 'COMMON.IOUNITS'
3576 ! character(len=80) :: ucase
3577 character(len=320) :: minimcard
3579 ! integer :: ntf,ik,iw_pdb
3580 ! real(kind=8) :: var,ene
3582 call card_concat(minimcard,.true.)
3583 call readi(minimcard,'MAXMIN',maxmin,2000)
3584 call readi(minimcard,'MAXFUN',maxfun,5000)
3585 call readi(minimcard,'MINMIN',minmin,maxmin)
3586 call readi(minimcard,'MINFUN',minfun,maxmin)
3587 call reada(minimcard,'TOLF',tolf,1.0D-2)
3588 call reada(minimcard,'RTOLF',rtolf,1.0D-4)
3589 print_min_stat=min0(index(minimcard,'PRINT_MIN_STAT'),1)
3590 print_min_res=min0(index(minimcard,'PRINT_MIN_RES'),1)
3591 print_min_ini=min0(index(minimcard,'PRINT_MIN_INI'),1)
3592 write (iout,'(/80(1h*)/20x,a/80(1h*))') &
3593 'Options in energy minimization:'
3594 write (iout,'(4(a,i5),a,1pe14.5,a,1pe14.5)') &
3595 'MaxMin:',MaxMin,' MaxFun:',MaxFun,&
3596 'MinMin:',MinMin,' MinFun:',MinFun,&
3597 ' TolF:',TolF,' RTolF:',RTolF
3599 end subroutine read_minim
3600 !-----------------------------------------------------------------------------
3601 subroutine openunits
3603 use energy_data, only: usampl
3607 use control_data, only:out1file
3608 use control, only: getenv_loc
3609 ! implicit real*8 (a-h,o-z)
3610 ! include 'DIMENSIONS'
3613 character(len=16) :: form,nodename
3614 integer :: nodelen,ierror,npos
3616 ! include 'COMMON.SETUP'
3617 ! include 'COMMON.IOUNITS'
3618 ! include 'COMMON.MD'
3619 ! include 'COMMON.CONTROL'
3620 integer :: lenpre,lenpot,lentmp !,ilen
3622 character(len=3) :: out1file_text !,ucase
3623 character(len=3) :: ll
3626 ! integer :: ntf,ik,iw_pdb
3627 ! real(kind=8) :: var,ene
3629 ! print *,"Processor",myrank,"fg_rank",fg_rank," entered openunits"
3630 call getenv_loc("PREFIX",prefix)
3632 call getenv_loc("POT",pot)
3633 call getenv_loc("DIRTMP",tmpdir)
3634 call getenv_loc("CURDIR",curdir)
3635 call getenv_loc("OUT1FILE",out1file_text)
3636 ! print *,"Processor",myrank,"fg_rank",fg_rank," did GETENV"
3637 out1file_text=ucase(out1file_text)
3638 if (out1file_text(1:1).eq."Y") then
3641 out1file=fg_rank.gt.0
3646 if (lentmp.gt.0) then
3647 write (*,'(80(1h!))')
3648 write (*,'(a,19x,a,19x,a)') "!"," A T T E N T I O N ","!"
3649 write (*,'(80(1h!))')
3650 write (*,*)"All output files will be on node /tmp directory."
3652 call MPI_GET_PROCESSOR_NAME( nodename, nodelen, IERROR )
3653 if (me.eq.king) then
3654 write (*,*) "The master node is ",nodename
3655 else if (fg_rank.eq.0) then
3656 write (*,*) "I am the CG slave node ",nodename
3658 write (*,*) "I am the FG slave node ",nodename
3661 PREFIX = tmpdir(:lentmp)//'/'//prefix(:lenpre)
3662 lenpre = lentmp+lenpre+1
3664 entname=prefix(:lenpre)//'_'//pot(:lenpot)//'.entr'
3665 ! Get the names and open the input files
3666 #if defined(WINIFL) || defined(WINPGI)
3667 open(1,file=pref_orig(:ilen(pref_orig))// &
3668 '.inp',status='old',readonly,shared)
3669 open (9,file=prefix(:ilen(prefix))//'.intin',status='unknown')
3670 ! open (18,file=prefix(:ilen(prefix))//'.entin',status='unknown')
3671 ! Get parameter filenames and open the parameter files.
3672 call getenv_loc('BONDPAR',bondname)
3673 open (ibond,file=bondname,status='old',readonly,shared)
3674 call getenv_loc('THETPAR',thetname)
3675 open (ithep,file=thetname,status='old',readonly,shared)
3676 call getenv_loc('ROTPAR',rotname)
3677 open (irotam,file=rotname,status='old',readonly,shared)
3678 call getenv_loc('TORPAR',torname)
3679 open (itorp,file=torname,status='old',readonly,shared)
3680 call getenv_loc('TORDPAR',tordname)
3681 open (itordp,file=tordname,status='old',readonly,shared)
3682 call getenv_loc('FOURIER',fouriername)
3683 open (ifourier,file=fouriername,status='old',readonly,shared)
3684 call getenv_loc('ELEPAR',elename)
3685 open (ielep,file=elename,status='old',readonly,shared)
3686 call getenv_loc('SIDEPAR',sidename)
3687 open (isidep,file=sidename,status='old',readonly,shared)
3688 #elif (defined CRAY) || (defined AIX)
3689 open(1,file=pref_orig(:ilen(pref_orig))//'.inp',status='old',&
3691 ! print *,"Processor",myrank," opened file 1"
3692 open (9,file=prefix(:ilen(prefix))//'.intin',status='unknown')
3693 ! print *,"Processor",myrank," opened file 9"
3694 ! open (18,file=prefix(:ilen(prefix))//'.entin',status='unknown')
3695 ! Get parameter filenames and open the parameter files.
3696 call getenv_loc('BONDPAR',bondname)
3697 open (ibond,file=bondname,status='old',action='read')
3698 ! print *,"Processor",myrank," opened file IBOND"
3699 call getenv_loc('THETPAR',thetname)
3700 open (ithep,file=thetname,status='old',action='read')
3701 ! print *,"Processor",myrank," opened file ITHEP"
3702 call getenv_loc('ROTPAR',rotname)
3703 open (irotam,file=rotname,status='old',action='read')
3704 ! print *,"Processor",myrank," opened file IROTAM"
3705 call getenv_loc('TORPAR',torname)
3706 open (itorp,file=torname,status='old',action='read')
3707 ! print *,"Processor",myrank," opened file ITORP"
3708 call getenv_loc('TORDPAR',tordname)
3709 open (itordp,file=tordname,status='old',action='read')
3710 ! print *,"Processor",myrank," opened file ITORDP"
3711 call getenv_loc('SCCORPAR',sccorname)
3712 open (isccor,file=sccorname,status='old',action='read')
3713 ! print *,"Processor",myrank," opened file ISCCOR"
3714 call getenv_loc('FOURIER',fouriername)
3715 open (ifourier,file=fouriername,status='old',action='read')
3716 ! print *,"Processor",myrank," opened file IFOURIER"
3717 call getenv_loc('ELEPAR',elename)
3718 open (ielep,file=elename,status='old',action='read')
3719 ! print *,"Processor",myrank," opened file IELEP"
3720 call getenv_loc('SIDEPAR',sidename)
3721 open (isidep,file=sidename,status='old',action='read')
3722 ! print *,"Processor",myrank," opened file ISIDEP"
3723 ! print *,"Processor",myrank," opened parameter files"
3725 open(1,file=pref_orig(:ilen(pref_orig))//'.inp',status='old')
3726 open (9,file=prefix(:ilen(prefix))//'.intin',status='unknown')
3727 ! open (18,file=prefix(:ilen(prefix))//'.entin',status='unknown')
3728 ! Get parameter filenames and open the parameter files.
3729 call getenv_loc('BONDPAR',bondname)
3730 open (ibond,file=bondname,status='old')
3731 call getenv_loc('THETPAR',thetname)
3732 open (ithep,file=thetname,status='old')
3733 call getenv_loc('ROTPAR',rotname)
3734 open (irotam,file=rotname,status='old')
3735 call getenv_loc('TORPAR',torname)
3736 open (itorp,file=torname,status='old')
3737 call getenv_loc('TORDPAR',tordname)
3738 open (itordp,file=tordname,status='old')
3739 call getenv_loc('SCCORPAR',sccorname)
3740 open (isccor,file=sccorname,status='old')
3741 call getenv_loc('FOURIER',fouriername)
3742 open (ifourier,file=fouriername,status='old')
3743 call getenv_loc('ELEPAR',elename)
3744 open (ielep,file=elename,status='old')
3745 call getenv_loc('SIDEPAR',sidename)
3746 open (isidep,file=sidename,status='old')
3748 open(1,file=pref_orig(:ilen(pref_orig))//'.inp',status='old',&
3750 open (9,file=prefix(:ilen(prefix))//'.intin',status='unknown')
3751 ! open (18,file=prefix(:ilen(prefix))//'.entin',status='unknown')
3752 ! Get parameter filenames and open the parameter files.
3753 call getenv_loc('BONDPAR',bondname)
3754 open (ibond,file=bondname,status='old',action='read')
3755 call getenv_loc('THETPAR',thetname)
3756 open (ithep,file=thetname,status='old',action='read')
3757 call getenv_loc('ROTPAR',rotname)
3758 open (irotam,file=rotname,status='old',action='read')
3759 call getenv_loc('TORPAR',torname)
3760 open (itorp,file=torname,status='old',action='read')
3761 call getenv_loc('TORDPAR',tordname)
3762 open (itordp,file=tordname,status='old',action='read')
3763 call getenv_loc('SCCORPAR',sccorname)
3764 open (isccor,file=sccorname,status='old',action='read')
3766 call getenv_loc('THETPARPDB',thetname_pdb)
3767 print *,"thetname_pdb ",thetname_pdb
3768 open (ithep_pdb,file=thetname_pdb,status='old',action='read')
3769 print *,ithep_pdb," opened"
3771 call getenv_loc('FOURIER',fouriername)
3772 open (ifourier,file=fouriername,status='old',readonly)
3773 call getenv_loc('ELEPAR',elename)
3774 open (ielep,file=elename,status='old',readonly)
3775 call getenv_loc('SIDEPAR',sidename)
3776 open (isidep,file=sidename,status='old',readonly)
3778 call getenv_loc('ROTPARPDB',rotname_pdb)
3779 open (irotam_pdb,file=rotname_pdb,status='old',action='read')
3784 ! 8/9/01 In the newest version SCp interaction constants are read from a file
3785 ! Use -DOLDSCP to use hard-coded constants instead.
3787 call getenv_loc('SCPPAR',scpname)
3788 #if defined(WINIFL) || defined(WINPGI)
3789 open (iscpp,file=scpname,status='old',readonly,shared)
3790 #elif (defined CRAY) || (defined AIX)
3791 open (iscpp,file=scpname,status='old',action='read')
3793 open (iscpp,file=scpname,status='old')
3795 open (iscpp,file=scpname,status='old',action='read')
3798 call getenv_loc('PATTERN',patname)
3799 #if defined(WINIFL) || defined(WINPGI)
3800 open (icbase,file=patname,status='old',readonly,shared)
3801 #elif (defined CRAY) || (defined AIX)
3802 open (icbase,file=patname,status='old',action='read')
3804 open (icbase,file=patname,status='old')
3806 open (icbase,file=patname,status='old',action='read')
3809 ! Open output file only for CG processes
3810 ! print *,"Processor",myrank," fg_rank",fg_rank
3811 if (fg_rank.eq.0) then
3813 if (nodes.eq.1) then
3816 npos = dlog10(dfloat(nodes-1))+1
3818 if (npos.lt.3) npos=3
3819 write (liczba,'(i1)') npos
3820 form = '(bz,i'//liczba(:ilen(liczba))//'.'//liczba(:ilen(liczba)) &
3822 write (liczba,form) me
3823 outname=prefix(:lenpre)//'.out_'//pot(:lenpot)// &
3824 liczba(:ilen(liczba))
3825 intname=prefix(:lenpre)//'_'//pot(:lenpot)//liczba(:ilen(liczba)) &
3827 pdbname=prefix(:lenpre)//'_'//pot(:lenpot)//liczba(:ilen(liczba)) &
3829 mol2name=prefix(:lenpre)//'_'//pot(:lenpot)// &
3830 liczba(:ilen(liczba))//'.mol2'
3831 statname=prefix(:lenpre)//'_'//pot(:lenpot)// &
3832 liczba(:ilen(liczba))//'.stat'
3834 call copy_to_tmp(pref_orig(:ilen(pref_orig))//'_'//pot(:lenpot) &
3835 //liczba(:ilen(liczba))//'.stat')
3836 rest2name=prefix(:ilen(prefix))//"_"//liczba(:ilen(liczba)) &
3839 qname=prefix(:lenpre)//'_'//pot(:lenpot)// &
3840 liczba(:ilen(liczba))//'.const'
3845 outname=prefix(:lenpre)//'.out_'//pot(:lenpot)
3846 intname=prefix(:lenpre)//'_'//pot(:lenpot)//'.int'
3847 pdbname=prefix(:lenpre)//'_'//pot(:lenpot)//'.pdb'
3848 mol2name=prefix(:lenpre)//'_'//pot(:lenpot)//'.mol2'
3849 statname=prefix(:lenpre)//'_'//pot(:lenpot)//'.stat'
3851 call copy_to_tmp(pref_orig(:ilen(pref_orig))//'_'//pot(:lenpot)// &
3853 rest2name=prefix(:ilen(prefix))//'.rst'
3855 qname=prefix(:lenpre)//'_'//pot(:lenpot)//'.const'
3858 #if defined(AIX) || defined(PGI)
3859 if (me.eq.king .or. .not. out1file) &
3860 open(iout,file=outname,status='unknown')
3862 if (fg_rank.gt.0) then
3863 write (liczba,'(i3.3)') myrank/nfgtasks
3864 write (ll,'(bz,i3.3)') fg_rank
3865 open(iout,file="debug"//liczba(:ilen(liczba))//"."//ll,&
3870 open(igeom,file=intname,status='unknown',position='append')
3871 open(ipdb,file=pdbname,status='unknown')
3872 open(imol2,file=mol2name,status='unknown')
3873 open(istat,file=statname,status='unknown',position='append')
3875 !1out open(iout,file=outname,status='unknown')
3878 if (me.eq.king .or. .not.out1file) &
3879 open(iout,file=outname,status='unknown')
3881 if (fg_rank.gt.0) then
3882 write (liczba,'(i3.3)') myrank/nfgtasks
3883 write (ll,'(bz,i3.3)') fg_rank
3884 open(iout,file="debug"//liczba(:ilen(liczba))//"."//ll,&
3889 open(igeom,file=intname,status='unknown',access='append')
3890 open(ipdb,file=pdbname,status='unknown')
3891 open(imol2,file=mol2name,status='unknown')
3892 open(istat,file=statname,status='unknown',access='append')
3894 !1out open(iout,file=outname,status='unknown')
3897 csa_rbank=prefix(:lenpre)//'.CSA.rbank'
3898 csa_seed=prefix(:lenpre)//'.CSA.seed'
3899 csa_history=prefix(:lenpre)//'.CSA.history'
3900 csa_bank=prefix(:lenpre)//'.CSA.bank'
3901 csa_bank1=prefix(:lenpre)//'.CSA.bank1'
3902 csa_alpha=prefix(:lenpre)//'.CSA.alpha'
3903 csa_alpha1=prefix(:lenpre)//'.CSA.alpha1'
3904 !!bankt csa_bankt=prefix(:lenpre)//'.CSA.bankt'
3905 csa_int=prefix(:lenpre)//'.int'
3906 csa_bank_reminimized=prefix(:lenpre)//'.CSA.bank_reminimized'
3907 csa_native_int=prefix(:lenpre)//'.CSA.native.int'
3908 csa_in=prefix(:lenpre)//'.CSA.in'
3909 ! print *,"Processor",myrank,"fg_rank",fg_rank," opened files"
3912 write (iout,'(80(1h-))')
3913 write (iout,'(30x,a)') "FILE ASSIGNMENT"
3914 write (iout,'(80(1h-))')
3915 write (iout,*) "Input file : ",&
3916 pref_orig(:ilen(pref_orig))//'.inp'
3917 write (iout,*) "Output file : ",&
3918 outname(:ilen(outname))
3920 write (iout,*) "Sidechain potential file : ",&
3921 sidename(:ilen(sidename))
3923 write (iout,*) "SCp potential file : ",&
3924 scpname(:ilen(scpname))
3926 write (iout,*) "Electrostatic potential file : ",&
3927 elename(:ilen(elename))
3928 write (iout,*) "Cumulant coefficient file : ",&
3929 fouriername(:ilen(fouriername))
3930 write (iout,*) "Torsional parameter file : ",&
3931 torname(:ilen(torname))
3932 write (iout,*) "Double torsional parameter file : ",&
3933 tordname(:ilen(tordname))
3934 write (iout,*) "SCCOR parameter file : ",&
3935 sccorname(:ilen(sccorname))
3936 write (iout,*) "Bond & inertia constant file : ",&
3937 bondname(:ilen(bondname))
3938 write (iout,*) "Bending parameter file : ",&
3939 thetname(:ilen(thetname))
3940 write (iout,*) "Rotamer parameter file : ",&
3941 rotname(:ilen(rotname))
3942 write (iout,*) "Thetpdb parameter file : ",&
3943 thetname_pdb(:ilen(thetname_pdb))
3944 write (iout,*) "Threading database : ",&
3945 patname(:ilen(patname))
3947 write (iout,*)" DIRTMP : ",&
3949 write (iout,'(80(1h-))')
3952 end subroutine openunits
3953 !-----------------------------------------------------------------------------
3956 use geometry_data, only: nres,dc
3957 use energy_data, only: usampl,iset
3959 ! implicit real*8 (a-h,o-z)
3960 ! include 'DIMENSIONS'
3961 ! include 'COMMON.CHAIN'
3962 ! include 'COMMON.IOUNITS'
3963 ! include 'COMMON.MD'
3966 ! real(kind=8) :: var,ene
3968 open(irest2,file=rest2name,status='unknown')
3969 read(irest2,*) totT,EK,potE,totE,t_bath
3971 read(irest2,'(3e15.5)') (d_t(j,i),j=1,3)
3974 read(irest2,'(3e15.5)') (dc(j,i),j=1,3)
3977 read (irest2,*) iset
3981 end subroutine readrst
3982 !-----------------------------------------------------------------------------
3983 subroutine read_fragments
3987 use control_data, only:out1file
3990 ! implicit real*8 (a-h,o-z)
3991 ! include 'DIMENSIONS'
3995 ! include 'COMMON.SETUP'
3996 ! include 'COMMON.CHAIN'
3997 ! include 'COMMON.IOUNITS'
3998 ! include 'COMMON.MD'
3999 ! include 'COMMON.CONTROL'
4002 ! real(kind=8) :: var,ene
4004 read(inp,*) nset,nfrag,npair,nfrag_back
4006 !el from module energy
4007 ! if(.not.allocated(mset)) allocate(mset(nset)) !(maxprocs/20)
4008 if(.not.allocated(wfrag_back)) then
4009 allocate(wfrag_back(3,nfrag_back,nset)) !(3,maxfrag_back,maxprocs/20)
4010 allocate(ifrag_back(3,nfrag_back,nset)) !(3,maxfrag_back,maxprocs/20)
4012 allocate(qinfrag(nfrag,nset),wfrag(nfrag,nset)) !(50,maxprocs/20)
4013 allocate(ifrag(2,nfrag,nset)) !(2,50,maxprocs/20)
4015 allocate(qinpair(npair,nset),wpair(npair,nset)) !(100,maxprocs/20)
4016 allocate(ipair(2,npair,nset)) !(2,100,maxprocs/20)
4019 if(me.eq.king.or..not.out1file) &
4020 write(iout,*) "nset",nset," nfrag",nfrag," npair",npair,&
4021 " nfrag_back",nfrag_back
4023 read(inp,*) mset(iset)
4025 read(inp,*) wfrag(i,iset),ifrag(1,i,iset),ifrag(2,i,iset),&
4027 if(me.eq.king.or..not.out1file) &
4028 write(iout,*) "R ",i,wfrag(i,iset),ifrag(1,i,iset),&
4029 ifrag(2,i,iset), qinfrag(i,iset)
4032 read(inp,*) wpair(i,iset),ipair(1,i,iset),ipair(2,i,iset),&
4034 if(me.eq.king.or..not.out1file) &
4035 write(iout,*) "R ",i,wpair(i,iset),ipair(1,i,iset),&
4036 ipair(2,i,iset), qinpair(i,iset)
4039 read(inp,*) wfrag_back(1,i,iset),wfrag_back(2,i,iset),&
4040 wfrag_back(3,i,iset),&
4041 ifrag_back(1,i,iset),ifrag_back(2,i,iset)
4042 if(me.eq.king.or..not.out1file) &
4043 write(iout,*) "A",i,wfrag_back(1,i,iset),wfrag_back(2,i,iset),&
4044 wfrag_back(3,i,iset),ifrag_back(1,i,iset),ifrag_back(2,i,iset)
4048 end subroutine read_fragments
4049 !-----------------------------------------------------------------------------
4051 !-----------------------------------------------------------------------------
4055 ! implicit real*8 (a-h,o-z)
4056 ! include 'DIMENSIONS'
4057 ! include 'COMMON.CSA'
4058 ! include 'COMMON.BANK'
4059 ! include 'COMMON.IOUNITS'
4061 ! integer :: ntf,ik,iw_pdb
4062 ! real(kind=8) :: var,ene
4064 open(icsa_in,file=csa_in,status="old",err=100)
4065 read(icsa_in,*) nconf
4066 read(icsa_in,*) jstart,jend
4067 read(icsa_in,*) nstmax
4068 read(icsa_in,*) n1,n2,n3,n4,n5,n6,n7,n8,is1,is2
4069 read(icsa_in,*) nran0,nran1,irr
4070 read(icsa_in,*) nseed
4071 read(icsa_in,*) ntotal,cut1,cut2
4072 read(icsa_in,*) estop
4073 read(icsa_in,*) icmax,irestart
4074 read(icsa_in,*) ntbankm,dele,difcut
4075 read(icsa_in,*) iref,rmscut,pnccut
4076 read(icsa_in,*) ndiff
4083 end subroutine csa_read
4084 !-----------------------------------------------------------------------------
4085 subroutine initial_write
4088 ! implicit real*8 (a-h,o-z)
4089 ! include 'DIMENSIONS'
4090 ! include 'COMMON.CSA'
4091 ! include 'COMMON.BANK'
4092 ! include 'COMMON.IOUNITS'
4094 ! integer :: ntf,ik,iw_pdb
4095 ! real(kind=8) :: var,ene
4097 open(icsa_seed,file=csa_seed,status="unknown")
4098 write(icsa_seed,*) "seed"
4100 #if defined(AIX) || defined(PGI)
4101 open(icsa_history,file=csa_history,status="unknown",&
4104 open(icsa_history,file=csa_history,status="unknown",&
4107 write(icsa_history,*) nconf
4108 write(icsa_history,*) jstart,jend
4109 write(icsa_history,*) nstmax
4110 write(icsa_history,*) n1,n2,n3,n4,n5,n6,n7,n8,is1,is2
4111 write(icsa_history,*) nran0,nran1,irr
4112 write(icsa_history,*) nseed
4113 write(icsa_history,*) ntotal,cut1,cut2
4114 write(icsa_history,*) estop
4115 write(icsa_history,*) icmax,irestart
4116 write(icsa_history,*) ntbankm,dele,difcut
4117 write(icsa_history,*) iref,rmscut,pnccut
4118 write(icsa_history,*) ndiff
4120 write(icsa_history,*)
4123 open(icsa_bank1,file=csa_bank1,status="unknown")
4124 write(icsa_bank1,*) 0
4128 end subroutine initial_write
4129 !-----------------------------------------------------------------------------
4130 subroutine restart_write
4133 ! implicit real*8 (a-h,o-z)
4134 ! include 'DIMENSIONS'
4135 ! include 'COMMON.IOUNITS'
4136 ! include 'COMMON.CSA'
4137 ! include 'COMMON.BANK'
4139 ! integer :: ntf,ik,iw_pdb
4140 ! real(kind=8) :: var,ene
4142 #if defined(AIX) || defined(PGI)
4143 open(icsa_history,file=csa_history,position="append")
4145 open(icsa_history,file=csa_history,access="append")
4147 write(icsa_history,*)
4148 write(icsa_history,*) "This is restart"
4149 write(icsa_history,*)
4150 write(icsa_history,*) nconf
4151 write(icsa_history,*) jstart,jend
4152 write(icsa_history,*) nstmax
4153 write(icsa_history,*) n1,n2,n3,n4,n5,n6,n7,n8,is1,is2
4154 write(icsa_history,*) nran0,nran1,irr
4155 write(icsa_history,*) nseed
4156 write(icsa_history,*) ntotal,cut1,cut2
4157 write(icsa_history,*) estop
4158 write(icsa_history,*) icmax,irestart
4159 write(icsa_history,*) ntbankm,dele,difcut
4160 write(icsa_history,*) iref,rmscut,pnccut
4161 write(icsa_history,*) ndiff
4162 write(icsa_history,*)
4163 write(icsa_history,*) "irestart is: ", irestart
4165 write(icsa_history,*)
4169 end subroutine restart_write
4170 !-----------------------------------------------------------------------------
4172 !-----------------------------------------------------------------------------
4173 subroutine write_pdb(npdb,titelloc,ee)
4175 ! implicit real*8 (a-h,o-z)
4176 ! include 'DIMENSIONS'
4177 ! include 'COMMON.IOUNITS'
4178 character(len=50) :: titelloc1
4179 character*(*) :: titelloc
4180 character(len=3) :: zahl
4181 character(len=5) :: liczba5
4183 integer :: npdb !,ilen
4187 ! real(kind=8) :: var,ene
4191 if (npdb.lt.1000) then
4192 call numstr(npdb,zahl)
4193 open(ipdb,file=prefix(:lenpre)//'@@'//zahl//'.pdb')
4195 if (npdb.lt.10000) then
4196 write(liczba5,'(i1,i4)') 0,npdb
4198 write(liczba5,'(i5)') npdb
4200 open(ipdb,file=prefix(:lenpre)//'@@'//liczba5//'.pdb')
4202 call pdbout(ee,titelloc1,ipdb)
4205 end subroutine write_pdb
4206 !-----------------------------------------------------------------------------
4208 !-----------------------------------------------------------------------------
4209 subroutine write_thread_summary
4210 ! Thread the sequence through a database of known structures
4211 use control_data, only: refstr
4213 use energy_data, only: n_ene_comp
4215 ! implicit real*8 (a-h,o-z)
4216 ! include 'DIMENSIONS'
4218 use MPI_data !include 'COMMON.INFO'
4221 ! include 'COMMON.CONTROL'
4222 ! include 'COMMON.CHAIN'
4223 ! include 'COMMON.DBASE'
4224 ! include 'COMMON.INTERACT'
4225 ! include 'COMMON.VAR'
4226 ! include 'COMMON.THREAD'
4227 ! include 'COMMON.FFIELD'
4228 ! include 'COMMON.SBRIDGE'
4229 ! include 'COMMON.HEADER'
4230 ! include 'COMMON.NAMES'
4231 ! include 'COMMON.IOUNITS'
4232 ! include 'COMMON.TIME1'
4234 integer,dimension(maxthread) :: ip
4235 real(kind=8),dimension(0:n_ene) :: energia
4237 integer :: i,j,ii,jj,ipj,ik,kk,ist
4238 real(kind=8) :: enet,etot,rmsnat,rms,frac,frac_nn
4240 write (iout,'(30x,a/)') &
4241 ' *********** Summary threading statistics ************'
4242 write (iout,'(a)') 'Initial energies:'
4243 write (iout,'(a4,2x,a12,14a14,3a8)') &
4244 'No','seq',(ename(print_order(i)),i=1,nprint_ene),'ETOT',&
4245 'RMSnat','NatCONT','NNCONT','RMS'
4246 ! Energy sort patterns
4251 enet=ener(n_ene-1,ip(i))
4254 if (ener(n_ene-1,ip(j)).lt.enet) then
4256 enet=ener(n_ene-1,ip(j))
4268 ist=nres_base(2,ii)+ipatt(2,i)
4270 energia(i)=ener0(kk,i)
4272 etot=ener0(n_ene_comp+1,i)
4273 rmsnat=ener0(n_ene_comp+2,i)
4274 rms=ener0(n_ene_comp+3,i)
4275 frac=ener0(n_ene_comp+4,i)
4276 frac_nn=ener0(n_ene_comp+5,i)
4279 write (iout,'(i4,2x,a8,i4,14(1pe14.5),0pf8.3,f8.5,f8.5,f8.3)') &
4280 i,str_nam(ii),ist+1,&
4281 (energia(print_order(kk)),kk=1,nprint_ene),&
4282 etot,rmsnat,frac,frac_nn,rms
4284 write (iout,'(i4,2x,a8,i4,14(1pe14.5),0pf8.3)') &
4285 i,str_nam(ii),ist+1,&
4286 (energia(print_order(kk)),kk=1,nprint_ene),etot
4289 write (iout,'(//a)') 'Final energies:'
4290 write (iout,'(a4,2x,a12,17a14,3a8)') &
4291 'No','seq',(ename(print_order(kk)),kk=1,nprint_ene),'ETOT',&
4292 'RMSnat','NatCONT','NNCONT','RMS'
4296 ist=nres_base(2,ii)+ipatt(2,i)
4298 energia(kk)=ener(kk,ik)
4300 etot=ener(n_ene_comp+1,i)
4301 rmsnat=ener(n_ene_comp+2,i)
4302 rms=ener(n_ene_comp+3,i)
4303 frac=ener(n_ene_comp+4,i)
4304 frac_nn=ener(n_ene_comp+5,i)
4305 write (iout,'(i4,2x,a8,i4,14(1pe14.5),0pf8.3,f8.5,f8.5,f8.3)') &
4306 i,str_nam(ii),ist+1,&
4307 (energia(print_order(kk)),kk=1,nprint_ene),&
4308 etot,rmsnat,frac,frac_nn,rms
4310 write (iout,'(/a/)') 'IEXAM array:'
4311 write (iout,'(i5)') nexcl
4313 write (iout,'(2i5)') iexam(1,i),iexam(2,i)
4315 write (iout,'(/a,1pe14.4/a,1pe14.4/)') &
4316 'Max. time for threading step ',max_time_for_thread,&
4317 'Average time for threading step: ',ave_time_for_thread
4319 end subroutine write_thread_summary
4320 !-----------------------------------------------------------------------------
4321 subroutine write_stat_thread(ithread,ipattern,ist)
4323 use energy_data, only: n_ene_comp
4325 ! implicit real*8 (a-h,o-z)
4326 ! include "DIMENSIONS"
4327 ! include "COMMON.CONTROL"
4328 ! include "COMMON.IOUNITS"
4329 ! include "COMMON.THREAD"
4330 ! include "COMMON.FFIELD"
4331 ! include "COMMON.DBASE"
4332 ! include "COMMON.NAMES"
4333 real(kind=8),dimension(0:n_ene) :: energia
4335 integer :: ithread,ipattern,ist,i
4336 real(kind=8) :: etot,rmsnat,rms,frac,frac_nn
4338 #if defined(AIX) || defined(PGI)
4339 open(istat,file=statname,position='append')
4341 open(istat,file=statname,access='append')
4344 energia(i)=ener(i,ithread)
4346 etot=ener(n_ene_comp+1,ithread)
4347 rmsnat=ener(n_ene_comp+2,ithread)
4348 rms=ener(n_ene_comp+3,ithread)
4349 frac=ener(n_ene_comp+4,ithread)
4350 frac_nn=ener(n_ene_comp+5,ithread)
4351 write (istat,'(i4,2x,a8,i4,14(1pe14.5),0pf8.3,f8.5,f8.5,f8.3)') &
4352 ithread,str_nam(ipattern),ist+1,&
4353 (energia(print_order(i)),i=1,nprint_ene),&
4354 etot,rmsnat,frac,frac_nn,rms
4357 end subroutine write_stat_thread
4358 !-----------------------------------------------------------------------------
4360 !-----------------------------------------------------------------------------
4361 end module io_config