8 use control_data, only:maxterm_sccor
10 !-----------------------------------------------------------------------------
11 ! Max. number of residue types and parameters in expressions for
12 ! virtual-bond angle bending potentials
13 ! integer,parameter :: maxthetyp=3
14 ! integer,parameter :: maxthetyp1=maxthetyp+1
16 ! & maxtheterm2=6,maxtheterm3=4,maxsingle=6,maxdouble=4,
17 ! & mmaxtheterm=maxtheterm)
18 !-----------------------------------------------------------------------------
19 ! Max. number of types of dihedral angles & multiplicity of torsional barriers
20 ! and the number of terms in double torsionals
21 ! integer,parameter :: maxlor=3,maxtermd_1=8,maxtermd_2=8
22 ! parameter (maxtor=4,maxterm=10)
23 !-----------------------------------------------------------------------------
24 ! Max number of torsional terms in SCCOR
25 !el integer,parameter :: maxterm_sccor=6
26 !-----------------------------------------------------------------------------
27 character(len=1),dimension(:),allocatable :: secstruc !(maxres)
28 !-----------------------------------------------------------------------------
31 !-----------------------------------------------------------------------------
33 #if .not. defined(WHAM_RUN) && .not. defined(CLUSTER)
34 !-----------------------------------------------------------------------------
36 !-----------------------------------------------------------------------------
37 subroutine write_rbank(jlee,adif,nft)
40 use geometry_data, only: nres,rad2deg
41 ! implicit real*8 (a-h,o-z)
42 ! include 'DIMENSIONS'
43 ! include 'COMMON.IOUNITS'
44 ! include 'COMMON.CSA'
45 ! include 'COMMON.BANK'
46 ! include 'COMMON.CHAIN'
47 ! include 'COMMON.GEO'
49 integer :: nft,i,k,j,l,jlee
52 open(icsa_rbank,file=csa_rbank,status="unknown")
53 write (icsa_rbank,900) jlee,nbank,nstep,nft,icycle,adif
55 write (icsa_rbank,952) k,rene(k),rrmsn(k),rpncn(k)
58 write (icsa_rbank,850) (rad2deg*rvar(i,l,j,k),i=1,4)
65 900 format (1x,"jlee =",i3,3x,"nbank =",i4,3x,"nstep =",&
67 952 format (1x,'#',i4,' total E ',1pe14.5,' rmsd from N ',0pf8.3,&
71 end subroutine write_rbank
72 !-----------------------------------------------------------------------------
73 subroutine read_rbank(jlee,adif)
76 use geometry_data, only: nres,deg2rad
78 ! implicit real*8 (a-h,o-z)
79 ! include 'DIMENSIONS'
81 ! include 'COMMON.IOUNITS'
82 ! include 'COMMON.CSA'
83 ! include 'COMMON.BANK'
84 ! include 'COMMON.CHAIN'
85 ! include 'COMMON.GEO'
86 ! include 'COMMON.SETUP'
87 character(len=80) :: karta
89 integer :: nbankr,nstepr,nftr,icycler,kk,k,j,l,i,&
90 ierror,ierrcode,jlee,jleer
93 open(icsa_rbank,file=csa_rbank,status="old")
94 read (icsa_rbank,901) jleer,nbankr,nstepr,nftr,icycler,adif
95 print *,jleer,nbankr,nstepr,nftr,icycler,adif
96 ! print *, 'adif from read_rbank ',adif
98 if(nbankr.ne.nbank) then
99 write (iout,*) 'ERROR in READ_BANK: NBANKR',nbankr,&
101 call mpi_abort(mpi_comm_world,ierror,ierrcode)
103 if(jleer.ne.jlee) then
104 write (iout,*) 'ERROR in READ_BANK: JLEER',jleer,&
106 call mpi_abort(mpi_comm_world,ierror,ierrcode)
112 read (icsa_rbank,'(a80)') karta
113 write(iout,*) "READ_RBANK: kk=",kk
115 ! if (index(karta,"*").gt.0) then
116 ! write (iout,*) "***** Stars in bankr ***** k=",k,
120 ! read (30,850) (rdummy,i=1,4)
125 call reada(karta,"total E",rene(kk),1.0d20)
126 call reada(karta,"rmsd from N",rrmsn(kk),0.0d0)
127 call reada(karta,"%NC",rpncn(kk),0.0d0)
128 write(iout,*)"total E",bene(kk),"rmsd from N",brmsn(kk),&
129 "%NC",bpncn(kk),ibank(kk)
130 ! read (icsa_rbank,953) kdummy,rene(kk),rrmsn(kk),rpncn(kk)
133 read (icsa_rbank,850) (rvar(i,l,j,kk),i=1,4)
134 ! write (iout,850) (rvar(i,l,j,kk),i=1,4)
136 rvar(i,l,j,kk)=deg2rad*rvar(i,l,j,kk)
142 !d write (*,*) "read_rbank ******************* kk",kk,
144 if (kk.lt.nbankr) nbankr=kk
149 !d write (*,850) (rvar(i,l,j,kk),i=1,4)
156 901 format (1x,6x,i3,3x,7x,i4,3x,7x,i8,i10,i2,f15.5)
157 953 format (1x,1x,i4,9x,f12.3,13x,f8.3,5x,f5.2)
160 end subroutine read_rbank
161 !-----------------------------------------------------------------------------
162 subroutine write_bank(jlee,nft)
165 use control_data, only: vdisulf
166 use geometry_data, only: nres,rad2deg
167 ! implicit real*8 (a-h,o-z)
168 ! include 'DIMENSIONS'
169 ! include 'COMMON.IOUNITS'
170 ! include 'COMMON.CSA'
171 ! include 'COMMON.BANK'
172 ! include 'COMMON.CHAIN'
173 ! include 'COMMON.GEO'
174 ! include 'COMMON.SBRIDGE'
175 ! include 'COMMON.CONTROL'
176 character(len=7) :: chtmp
177 character(len=40) :: chfrm
180 integer :: nft,k,l,i,j,jlee
182 open(icsa_bank,file=csa_bank,status="unknown")
183 write (icsa_bank,900) jlee,nbank,nstep,nft,icycle,cutdif
184 write (icsa_bank,902) nglob_csa, eglob_csa
185 open (igeom,file=intname,status='UNKNOWN')
187 write (icsa_bank,952) k,bene(k),brmsn(k),bpncn(k),ibank(k)
188 if (vdisulf) write (icsa_bank,'(101i4)') &
189 bvar_nss(k),((bvar_ss(j,i,k),j=1,2),i=1,bvar_nss(k))
192 write (icsa_bank,850) (rad2deg*bvar(i,l,j,k),i=1,4)
195 if (bvar_nss(k).le.9) then
196 write (igeom,'(I5,F10.3,I2,9(1X,2I3))') k,bene(k),&
197 bvar_nss(k),(bvar_ss(1,i,k),bvar_ss(2,i,k),i=1,bvar_nss(k))
199 write (igeom,'(I5,F10.3,I2,9(1X,2I3))') k,bene(k),&
200 bvar_nss(k),(bvar_ss(1,i,k),bvar_ss(2,i,k),i=1,9)
201 write (igeom,'(3X,11(1X,2I3))') (bvar_ss(1,i,k),&
202 bvar_ss(2,i,k),i=10,bvar_nss(k))
204 write (igeom,200) (rad2deg*bvar(1,i,1,k),i=2,nres-1)
205 write (igeom,200) (rad2deg*bvar(2,i,1,k),i=2,nres-2)
206 write (igeom,200) (rad2deg*bvar(3,i,1,k),i=2,nres-1)
207 write (igeom,200) (rad2deg*bvar(4,i,1,k),i=2,nres-1)
212 if (nstep/200.gt.ilastnstep) then
214 ilastnstep=(ilastnstep+1)*1.5
215 write(chfrm,'(a2,i1,a1)') '(i',int(dlog10(dble(nstep))+1),')'
216 write(chtmp,chfrm) nstep
217 open(icsa_int,file=prefix(:ilen(prefix)) &
218 //'_'//chtmp(:ilen(chtmp))//'.int',status='UNKNOWN')
220 if (bvar_nss(k).le.9) then
221 write (icsa_int,'(I5,F10.3,I2,9(1X,2I3))') k,bene(k),&
222 bvar_nss(k),(bvar_ss(1,i,k),bvar_ss(2,i,k),i=1,bvar_nss(k))
224 write (icsa_int,'(I5,F10.3,I2,9(1X,2I3))') k,bene(k),&
225 bvar_nss(k),(bvar_ss(1,i,k),bvar_ss(2,i,k),i=1,9)
226 write (icsa_int,'(3X,11(1X,2I3))') (bvar_ss(1,i,k),&
227 bvar_ss(2,i,k),i=10,bvar_nss(k))
229 write (icsa_int,200) (rad2deg*bvar(1,i,1,k),i=2,nres-1)
230 write (icsa_int,200) (rad2deg*bvar(2,i,1,k),i=2,nres-2)
231 write (icsa_int,200) (rad2deg*bvar(3,i,1,k),i=2,nres-1)
232 write (icsa_int,200) (rad2deg*bvar(4,i,1,k),i=2,nres-1)
240 900 format (1x,"jlee =",i3,3x,"nbank =",i4,3x,"nstep =",&
242 902 format (1x,'nglob_csa =',i4,' eglob_csa =',1pe14.5)
243 952 format (1x,'#',i4,' total E ',1pe14.5,' rmsd from N ',0pf8.3,&
247 end subroutine write_bank
248 !-----------------------------------------------------------------------------
249 subroutine write_bank_reminimized(jlee,nft)
252 use geometry_data, only: nres,rad2deg
254 ! implicit real*8 (a-h,o-z)
255 ! include 'DIMENSIONS'
256 ! include 'COMMON.IOUNITS'
257 ! include 'COMMON.CSA'
258 ! include 'COMMON.BANK'
259 ! include 'COMMON.CHAIN'
260 ! include 'COMMON.GEO'
261 ! include 'COMMON.SBRIDGE'
263 integer :: nft,i,l,j,k,jlee
265 open(icsa_bank_reminimized,file=csa_bank_reminimized,&
267 write (icsa_bank_reminimized,900) &
268 jlee,nbank,nstep,nft,icycle,cutdif
269 open (igeom,file=intname,status='UNKNOWN')
271 write (icsa_bank_reminimized,952) k,bene(k),brmsn(k),&
275 write (icsa_bank_reminimized,850) (rad2deg*bvar(i,l,j,k),i=1,4)
279 write (igeom,'(I5,F10.3,I2,9(1X,2I3))') k,bene(k),&
280 nss,(ihpb(i),jhpb(i),i=1,nss)
282 write (igeom,'(I5,F10.3,I2,9(1X,2I3))') k,bene(k),&
283 nss,(ihpb(i),jhpb(i),i=1,9)
284 write (igeom,'(3X,11(1X,2I3))') (ihpb(i),jhpb(i),i=10,nss)
286 write (igeom,200) (rad2deg*bvar(1,i,1,k),i=2,nres-1)
287 write (igeom,200) (rad2deg*bvar(2,i,1,k),i=2,nres-2)
288 write (igeom,200) (rad2deg*bvar(3,i,1,k),i=2,nres-1)
289 write (igeom,200) (rad2deg*bvar(4,i,1,k),i=2,nres-1)
291 close(icsa_bank_reminimized)
296 900 format (1x,"jlee =",i3,3x,"nbank =",i4,3x,"nstep =",&
298 952 format (1x,'#',i4,' total E ',1pe14.5,' rmsd from N ',0pf8.3,&
302 end subroutine write_bank_reminimized
303 !-----------------------------------------------------------------------------
304 subroutine read_bank(jlee,nft,cutdifr)
307 use control_data, only: vdisulf
308 use geometry_data, only: nres,deg2rad
310 ! implicit real*8 (a-h,o-z)
311 ! include 'DIMENSIONS'
312 ! include 'COMMON.IOUNITS'
313 ! include 'COMMON.CSA'
314 ! include 'COMMON.BANK'
315 ! include 'COMMON.CHAIN'
316 ! include 'COMMON.GEO'
317 ! include 'COMMON.CONTROL'
318 ! include 'COMMON.SBRIDGE'
319 character(len=80) :: karta
323 integer :: nft,kk,k,l,i,j,jlee
324 real(kind=8) :: cutdifr
326 open(icsa_bank,file=csa_bank,status="old")
327 read (icsa_bank,901) jlee,nbank,nstep,nft,icycle,cutdifr
328 read (icsa_bank,902) nglob_csa, eglob_csa
329 ! if(jleer.ne.jlee) then
330 ! write (iout,*) 'ERROR in READ_BANK: JLEER',jleer,
332 ! call mpi_abort(mpi_comm_world,ierror,ierrcode)
337 read (icsa_bank,'(a80)') karta
338 write(iout,*) "READ_BANK: kk=",kk
340 ! if (index(karta,"*").gt.0) then
341 ! write (iout,*) "***** Stars in bank ***** k=",k,
345 ! read (33,850) (rdummy,i=1,4)
350 call reada(karta,"total E",bene(kk),1.0d20)
351 call reada(karta,"rmsd from N",brmsn(kk),0.0d0)
352 call reada(karta,"%NC",bpncn(kk),0.0d0)
353 read (karta(ilen(karta)-1:),*,end=111,err=111) ibank(kk)
357 write(iout,*)"total E",bene(kk),"rmsd from N",brmsn(kk),&
358 "%NC",bpncn(kk),ibank(kk)
359 ! read (icsa_bank,953) kdummy,bene(k),brmsn(k),bpncn(k),ibank(k)
361 read (icsa_bank,'(101i4)') &
362 bvar_nss(kk),((bvar_ss(j,i,kk),j=1,2),i=1,bvar_nss(kk))
363 bvar_ns(kk)=ns-2*bvar_nss(kk)
364 write(iout,*) 'read SSBOND',bvar_nss(kk),&
365 ((bvar_ss(j,i,kk),j=1,2),i=1,bvar_nss(kk))
366 !d write(iout,*) 'read CYS #free ', bvar_ns(kk)
370 do while( iss(i).ne.bvar_ss(1,j,kk)-nres .and. &
371 iss(i).ne.bvar_ss(2,j,kk)-nres .and. &
375 if (j.gt.bvar_nss(kk)) then
380 !d write(iout,*)'read CYS free',(bvar_s(l,kk),l=1,bvar_ns(kk))
384 read (icsa_bank,850) (bvar(i,l,j,kk),i=1,4)
385 ! write (iout,850) (bvar(i,l,j,kk),i=1,4)
387 bvar(i,l,j,kk)=deg2rad*bvar(i,l,j,kk)
394 if (kk.lt.nbank) nbank=kk
395 !d write (*,*) "read_bank ******************* kk",kk,
401 !d write (*,850) (bvar(i,l,j,kk),i=1,4)
407 ! read (33,953) kdummy,bene(k),brmsn(k),bpncn(k),ibank(k)
410 ! read (33,850) (bvar(i,l,j,k),i=1,4)
412 ! bvar(i,l,j,k)=deg2rad*bvar(i,l,j,k)
420 952 format (1x,'#',i4,' total E ',f12.3,' rmsd from N ',f8.3,i5)
421 901 format (1x,6x,i3,3x,7x,i4,3x,7x,i8,i10,i2,f15.5)
422 902 format (1x,11x,i4,12x,1pe14.5)
423 953 format (1x,1x,i4,9x,f12.3,13x,f8.3,5x,f5.2,i5)
426 end subroutine read_bank
427 !-----------------------------------------------------------------------------
428 subroutine write_bank1(jlee)
431 use geometry_data, only: nres,rad2deg
432 ! implicit real*8 (a-h,o-z)
433 ! include 'DIMENSIONS'
434 ! include 'COMMON.IOUNITS'
435 ! include 'COMMON.CSA'
436 ! include 'COMMON.BANK'
437 ! include 'COMMON.CHAIN'
438 ! include 'COMMON.GEO'
440 integer :: k,i,l,j,jlee
442 #if defined(AIX) || defined(PGI)
443 open(icsa_bank1,file=csa_bank1,position="append")
445 open(icsa_bank1,file=csa_bank1,access="append")
447 write (icsa_bank1,900) jlee,nbank,nstep,cutdif
449 write (icsa_bank1,952) k,bene(k),brmsn(k),bpncn(k),ibank(k)
452 write (icsa_bank1,850) (rad2deg*bvar(i,l,j,k),i=1,4)
458 900 format (4x,"jlee =",i5,3x,"nbank =",i5,3x,"nstep =",i10,f15.5)
459 952 format (1x,'#',i4,' total E ',1pe14.5,' rmsd from N ',0pf8.3,&
463 end subroutine write_bank1
464 !-----------------------------------------------------------------------------
466 !-----------------------------------------------------------------------------
467 ! subroutine cartprint
469 ! use geometry_data, only: c
470 ! use energy_data, only: itype
471 ! implicit real*8 (a-h,o-z)
472 ! include 'DIMENSIONS'
473 ! include 'COMMON.CHAIN'
474 ! include 'COMMON.INTERACT'
475 ! include 'COMMON.NAMES'
476 ! include 'COMMON.IOUNITS'
481 ! write (iout,110) restyp(itype(i,1)),i,c(1,i),c(2,i),&
482 ! c(3,i),c(1,nres+i),c(2,nres+i),c(3,nres+i)
484 ! 100 format (//' alpha-carbon coordinates ',&
485 ! ' centroid coordinates'/ &
486 ! ' ', 6X,'X',11X,'Y',11X,'Z',&
487 ! 10X,'X',11X,'Y',11X,'Z')
488 ! 110 format (a,'(',i3,')',6f12.5)
490 ! end subroutine cartprint
491 !-----------------------------------------------------------------------------
493 !-----------------------------------------------------------------------------
494 subroutine secstrp2dihc
498 ! implicit real*8 (a-h,o-z)
499 ! include 'DIMENSIONS'
500 ! include 'COMMON.GEO'
501 ! include 'COMMON.BOUNDS'
502 ! include 'COMMON.CHAIN'
503 ! include 'COMMON.TORCNSTR'
504 ! include 'COMMON.IOUNITS'
505 !el character(len=1),dimension(nres) :: secstruc !(maxres)
506 !el COMMON/SECONDARYS/secstruc
507 character(len=80) :: line
512 integer :: i,ii,lenpre
514 allocate(secstruc(nres))
516 !dr call getenv_loc('SECPREDFIL',secpred)
518 secpred=prefix(:lenpre)//'.spred'
520 #if defined(WINIFL) || defined(WINPGI)
521 open(isecpred,file=secpred,status='old',readonly,shared)
522 #elif (defined CRAY) || (defined AIX)
523 open(isecpred,file=secpred,status='old',action='read')
525 open(isecpred,file=secpred,status='old')
527 open(isecpred,file=secpred,status='old',action='read')
529 ! read secondary structure prediction from JPRED here!
530 ! read(isecpred,'(A80)',err=100,end=100) line
531 ! read(line,'(f10.3)',err=110) ftors
532 read(isecpred,'(f10.3)',err=110) ftors
534 write (iout,*) 'FTORS factor =',ftors
535 ! initialize secstruc to any
542 call read_secstr_pred(isecpred,iout,errflag)
544 write(iout,*)'There is a problem with the list of secondary-',&
545 'structure prediction'
548 ! 8/13/98 Set limits to generating the dihedral angles
556 if ( secstruc(i) .eq. 'H') then
557 ! Helix restraints for this residue
560 phi0(ii) = 45.0D0*deg2rad
561 drange(ii)= 5.0D0*deg2rad
562 phibound(1,i) = phi0(ii)-drange(ii)
563 phibound(2,i) = phi0(ii)+drange(ii)
564 else if (secstruc(i) .eq. 'E') then
565 ! strand restraints for this residue
568 phi0(ii) = 180.0D0*deg2rad
569 drange(ii)= 5.0D0*deg2rad
570 phibound(1,i) = phi0(ii)-drange(ii)
571 phibound(2,i) = phi0(ii)+drange(ii)
573 ! no restraints for this residue
574 ndih_nconstr=ndih_nconstr+1
575 idih_nconstr(ndih_nconstr)=i
579 ! deallocate(secstruc)
582 write(iout,'(A30,A80)')'Error reading file SECPRED',secpred
583 ! deallocate(secstruc)
586 write(iout,'(A20)')'Error reading FTORS'
587 ! deallocate(secstruc)
589 end subroutine secstrp2dihc
590 !-----------------------------------------------------------------------------
591 subroutine read_secstr_pred(jin,jout,errors)
593 ! implicit real*8 (a-h,o-z)
594 ! INCLUDE 'DIMENSIONS'
595 ! include 'COMMON.IOUNITS'
596 ! include 'COMMON.CHAIN'
597 !el character(len=1),dimension(nres) :: secstruc !(maxres)
598 !el COMMON/SECONDARYS/secstruc
600 character(len=80) :: line,line1 !,ucase
601 logical :: errflag,errors,blankline
604 integer :: jin,jout,iseq,ipos,ipos1,iend,il,&
607 read (jin,'(a)') line
608 write (jout,'(2a)') '> ',line(1:78)
610 ! Remember that we number full residues starting from 2, then, iseq=1 and iseq=nres
611 ! correspond to the end-groups. ADD to the secondary structure prediction "-" for the
612 ! end-groups in the input file "*.spred"
615 do while (index(line1,'$END').eq.0)
616 ! Override commented lines.
619 do while (.not.blankline)
621 call mykey(line,line1,ipos,blankline,errflag)
622 if (errflag) write (jout,'(2a)') &
623 'Error when reading sequence in line: ',line
624 errors=errors .or. errflag
625 if (.not. blankline .and. .not. errflag) then
628 !el if (iseq.le.maxres) then
629 if (line1(1:1).eq.'-' ) then
630 secstruc(iseq)=line1(1:1)
631 else if ( ( ucase(line1(1:1)).eq.'E' ) .or. &
632 ( ucase(line1(1:1)).eq.'H' ) ) then
633 secstruc(iseq)=ucase(line1(1:1))
636 write (jout,1010) line1(1:1), iseq
641 !el write (jout,1000) iseq,maxres
644 do while (ipos1.le.iend)
649 !el if (iseq.le.maxres) then
650 if (line1(ipos1-1:ipos1-1).eq.'-' ) then
651 secstruc(iseq)=line1(ipos1-1:ipos1-1)
652 else if((ucase(line1(ipos1-1:ipos1-1)).eq.'E').or. &
653 (ucase(line1(ipos1-1:ipos1-1)).eq.'H') ) then
654 secstruc(iseq)=ucase(line1(ipos1-1:ipos1-1))
657 write (jout,1010) line1(ipos1-1:ipos1-1), iseq
662 !el write (jout,1000) iseq,maxres
669 read (jin,'(a)') line
670 write (jout,'(2a)') '> ',line(1:78)
674 !d write (jout,'(10a8)') (sequence(i),i=1,iseq-1)
676 !d check whether the found length of the chain is correct.
677 length_of_chain=iseq-1
678 if (length_of_chain .ne. nres) then
680 write (jout,'(a,i4,a,i4,a)') &
681 'Error: the number of labels specified in $SEC_STRUC_PRED (' &
682 ,length_of_chain,') does not match with the number of residues (' &
687 1000 format('Error - the number of residues (',i4,&
688 ') has exceeded maximum (',i4,').')
689 1010 format ('Error - unrecognized secondary structure label',a4,&
692 end subroutine read_secstr_pred
694 !-----------------------------------------------------------------------------
696 !-----------------------------------------------------------------------------
701 use control_data, only:maxterm !,maxtor
705 use control, only: getenv_loc
707 ! Read the parameters of the probability distributions of the virtual-bond
708 ! valence angles and the side chains and energy parameters.
710 ! Important! Energy-term weights ARE NOT read here; they are read from the
711 ! main input file instead, because NO defaults have yet been set for these
714 ! implicit real*8 (a-h,o-z)
715 ! include 'DIMENSIONS'
720 ! include 'COMMON.IOUNITS'
721 ! include 'COMMON.CHAIN'
722 ! include 'COMMON.INTERACT'
723 ! include 'COMMON.GEO'
724 ! include 'COMMON.LOCAL'
725 ! include 'COMMON.TORSION'
726 ! include 'COMMON.SCCOR'
727 ! include 'COMMON.SCROT'
728 ! include 'COMMON.FFIELD'
729 ! include 'COMMON.NAMES'
730 ! include 'COMMON.SBRIDGE'
731 ! include 'COMMON.MD'
732 ! include 'COMMON.SETUP'
733 character(len=1) :: t1,t2,t3
734 character(len=1) :: onelett(4) = (/"G","A","P","D"/)
735 character(len=1) :: toronelet(-2:2) = (/"p","a","G","A","P"/)
736 logical :: lprint,LaTeX
737 real(kind=8),dimension(3,3,maxlob) :: blower !(3,3,maxlob)
738 real(kind=8),dimension(13) :: buse
739 character(len=3) :: lancuch !,ucase
741 integer :: m,n,l,i,j,k,iblock,lll,llll,ll,nlobi,mm
742 integer :: maxinter,junk,kk,ii,ncatprotparm
743 real(kind=8) :: v0ijsccor,v0ijsccor1,v0ijsccor2,v0ijsccor3,si,&
744 dwa16,rjunk,akl,v0ij,rri,epsij,rrij,sigeps,sigt1sq,&
745 sigt2sq,sigii1,sigii2,ratsig1,ratsig2,rsum_max,r_augm,&
746 res1,epsijlip,epspeptube,epssctube,sigmapeptube, &
748 integer :: ichir1,ichir2
749 ! real(kind=8),dimension(maxterm,-maxtor:maxtor,-maxtor:maxtor,2) :: v1_el,v2_el !(maxterm,-maxtor:maxtor,-maxtor:maxtor,2)
750 !el allocate(v1_el(maxterm,-maxtor:maxtor,-maxtor:maxtor,2))
751 !el allocate(v2_el(maxterm,-maxtor:maxtor,-maxtor:maxtor,2))
753 ! For printing parameters after they are read set the following in the UNRES
756 ! setenv PRINT_PARM YES
758 ! To print parameters in LaTeX format rather than as ASCII tables:
762 call getenv_loc("PRINT_PARM",lancuch)
763 lprint = (ucase(lancuch).eq."YES" .or. ucase(lancuch).eq."Y")
764 call getenv_loc("LATEX",lancuch)
765 LaTeX = (ucase(lancuch).eq."YES" .or. ucase(lancuch).eq."Y")
767 dwa16=2.0d0**(1.0d0/6.0d0)
769 ! Assign virtual-bond length
772 vblinv2=vblinv*vblinv
774 ! Read the virtual-bond parameters, masses, and moments of inertia
775 ! and Stokes' radii of the peptide group and side chains
777 allocate(dsc(ntyp1)) !(ntyp1)
778 allocate(dsc_inv(ntyp1)) !(ntyp1)
779 allocate(nbondterm_nucl(ntyp_molec(2))) !(ntyp)
780 allocate(vbldsc0_nucl(maxbondterm,ntyp_molec(2))) !(maxbondterm,ntyp)
781 allocate(aksc_nucl(maxbondterm,ntyp_molec(2))) !(maxbondterm,ntyp)
782 allocate(nbondterm(ntyp)) !(ntyp)
783 allocate(vbldsc0(maxbondterm,ntyp)) !(maxbondterm,ntyp)
784 allocate(aksc(maxbondterm,ntyp)) !(maxbondterm,ntyp)
785 allocate(msc(ntyp+1,5)) !(ntyp+1)
786 allocate(isc(ntyp+1,5)) !(ntyp+1)
787 allocate(restok(ntyp+1,5)) !(ntyp+1)
788 allocate(abond0(maxbondterm,ntyp)) !(maxbondterm,ntyp)
789 allocate(long_r_sidechain(ntyp))
790 allocate(short_r_sidechain(ntyp))
795 read (ibond,*) vbldp0,akp,mp,ip,pstok
798 read (ibond,*) vbldsc0(1,i),aksc(1,i),msc(i),isc(i),restok(i)
799 dsc(i) = vbldsc0(1,i)
803 dsc_inv(i)=1.0D0/dsc(i)
807 read (ibond,*) junk,vbldp0,vbldpDUM,akp,rjunk,mp(1),ip(1),pstok(1)
809 read (ibond,*) nbondterm(i),(vbldsc0(j,i),aksc(j,i),abond0(j,i),&
810 j=1,nbondterm(i)),msc(i,1),isc(i,1),restok(i,1)
811 dsc(i) = vbldsc0(1,i)
815 dsc_inv(i)=1.0D0/dsc(i)
819 read (ibond_nucl,*) vbldp0_nucl,akp_nucl,mp(2),ip(2),pstok(2)
822 read (ibond_nucl,*) vbldsc0_nucl(1,i),aksc_nucl(1,i),msc(i,2),isc(i,2),restok(i,2)
823 ! dsc(i) = vbldsc0_nucl(1,i)
827 ! dsc_inv(i)=1.0D0/dsc(i)
830 ! read (ibond_nucl,*) junk,vbldp0_nucl,akp_nucl,rjunk,mp(2),ip(2),pstok(2)
831 ! do i=1,ntyp_molec(2)
832 ! read (ibond_nucl,*) nbondterm_nucl(i),(vbldsc0_nucl(j,i),&
833 ! aksc_nucl(j,i),abond0_nucl(j,i),&
834 ! j=1,nbondterm_nucl(i)),msc(i,2),isc(i,2),restok(i,2)
835 ! dsc(i) = vbldsc0(1,i)
839 ! dsc_inv(i)=1.0D0/dsc(i)
844 write(iout,'(/a/)')"Dynamic constants of the interaction sites:"
845 write (iout,'(a10,a3,6a10)') 'Type','N','VBL','K','A0','mass',&
847 write(iout,'(a10,i3,6f10.5)') "p",1,vbldp0,akp,0.0d0,mp(1),ip(1),pstok(1)
849 write (iout,'(a10,i3,6f10.5)') restyp(i,1),nbondterm(i),&
850 vbldsc0(1,i),aksc(1,i),abond0(1,i),msc(i,1),isc(i,1),restok(i,1)
852 write (iout,'(13x,3f10.5)') &
853 vbldsc0(j,i),aksc(j,i),abond0(j,i)
858 read(iion,*) msc(i,5),restok(i,5)
859 print *,msc(i,5),restok(i,5)
863 read (iion,*) ncatprotparm
864 allocate(catprm(ncatprotparm,4))
866 read (iion,*) (catprm(i,k),i=1,ncatprotparm)
869 ! read (iion,*) (vcatprm(k),k=1,ncatprotpram)
870 !----------------------------------------------------
871 allocate(a0thet(-ntyp:ntyp),theta0(-ntyp:ntyp))
872 allocate(sig0(-ntyp:ntyp),sigc0(-ntyp:ntyp)) !(-ntyp:ntyp)
873 allocate(athet(2,-ntyp:ntyp,-1:1,-1:1))
874 allocate(bthet(2,-ntyp:ntyp,-1:1,-1:1)) !(2,-ntyp:ntyp,-1:1,-1:1)
875 allocate(polthet(0:3,-ntyp:ntyp)) !(0:3,-ntyp:ntyp)
876 allocate(gthet(3,-ntyp:ntyp)) !(3,-ntyp:ntyp)
886 allocate(liptranene(ntyp))
887 !C reading lipid parameters
888 write (iout,*) "iliptranpar",iliptranpar
890 read(iliptranpar,*) pepliptran
893 read(iliptranpar,*) liptranene(i)
894 print *,liptranene(i)
900 ! Read the parameters of the probability distribution/energy expression
901 ! of the virtual-bond valence angles theta
904 read (ithep,*,err=111,end=111) a0thet(i),(athet(j,i,1,1),j=1,2),&
905 (bthet(j,i,1,1),j=1,2)
906 read (ithep,*,err=111,end=111) (polthet(j,i),j=0,3)
907 read (ithep,*,err=111,end=111) (gthet(j,i),j=1,3)
908 read (ithep,*,err=111,end=111) theta0(i),sig0(i),sigc0(i)
912 athet(1,i,1,-1)=athet(1,i,1,1)
913 athet(2,i,1,-1)=athet(2,i,1,1)
914 bthet(1,i,1,-1)=-bthet(1,i,1,1)
915 bthet(2,i,1,-1)=-bthet(2,i,1,1)
916 athet(1,i,-1,1)=-athet(1,i,1,1)
917 athet(2,i,-1,1)=-athet(2,i,1,1)
918 bthet(1,i,-1,1)=bthet(1,i,1,1)
919 bthet(2,i,-1,1)=bthet(2,i,1,1)
923 athet(1,i,-1,-1)=athet(1,-i,1,1)
924 athet(2,i,-1,-1)=-athet(2,-i,1,1)
925 bthet(1,i,-1,-1)=bthet(1,-i,1,1)
926 bthet(2,i,-1,-1)=-bthet(2,-i,1,1)
927 athet(1,i,-1,1)=athet(1,-i,1,1)
928 athet(2,i,-1,1)=-athet(2,-i,1,1)
929 bthet(1,i,-1,1)=-bthet(1,-i,1,1)
930 bthet(2,i,-1,1)=bthet(2,-i,1,1)
931 athet(1,i,1,-1)=-athet(1,-i,1,1)
932 athet(2,i,1,-1)=athet(2,-i,1,1)
933 bthet(1,i,1,-1)=bthet(1,-i,1,1)
934 bthet(2,i,1,-1)=-bthet(2,-i,1,1)
939 polthet(j,i)=polthet(j,-i)
942 gthet(j,i)=gthet(j,-i)
950 'Parameters of the virtual-bond valence angles:'
951 write (iout,'(/a/9x,5a/79(1h-))') 'Fourier coefficients:',&
952 ' ATHETA0 ',' A1 ',' A2 ',&
955 write(iout,'(a3,i4,2x,5(1pe14.5))') restyp(i,1),i,&
956 a0thet(i),(athet(j,i,1,1),j=1,2),(bthet(j,i,1,1),j=1,2)
958 write (iout,'(/a/9x,5a/79(1h-))') &
959 'Parameters of the expression for sigma(theta_c):',&
960 ' ALPH0 ',' ALPH1 ',' ALPH2 ',&
961 ' ALPH3 ',' SIGMA0C '
963 write (iout,'(a3,i4,2x,5(1pe14.5))') restyp(i,1),i,&
964 (polthet(j,i),j=0,3),sigc0(i)
966 write (iout,'(/a/9x,5a/79(1h-))') &
967 'Parameters of the second gaussian:',&
968 ' THETA0 ',' SIGMA0 ',' G1 ',&
971 write (iout,'(a3,i4,2x,5(1pe14.5))') restyp(i,1),i,theta0(i),&
972 sig0(i),(gthet(j,i),j=1,3)
976 'Parameters of the virtual-bond valence angles:'
977 write (iout,'(/a/9x,5a/79(1h-))') &
978 'Coefficients of expansion',&
979 ' theta0 ',' a1*10^2 ',' a2*10^2 ',&
980 ' b1*10^1 ',' b2*10^1 '
982 write(iout,'(a3,1h&,2x,5(f8.3,1h&))') restyp(i,1),&
983 a0thet(i),(100*athet(j,i,1,1),j=1,2),&
984 (10*bthet(j,i,1,1),j=1,2)
986 write (iout,'(/a/9x,5a/79(1h-))') &
987 'Parameters of the expression for sigma(theta_c):',&
988 ' alpha0 ',' alph1 ',' alph2 ',&
989 ' alhp3 ',' sigma0c '
991 write (iout,'(a3,1h&,2x,5(1pe12.3,1h&))') restyp(i,1),&
992 (polthet(j,i),j=0,3),sigc0(i)
994 write (iout,'(/a/9x,5a/79(1h-))') &
995 'Parameters of the second gaussian:',&
996 ' theta0 ',' sigma0*10^2 ',' G1*10^-1',&
999 write (iout,'(a3,1h&,2x,5(f8.3,1h&))') restyp(i,1),theta0(i),&
1000 100*sig0(i),gthet(1,i)*0.1D0,gthet(2,i),gthet(3,i)*10.0D0
1006 ! Read the parameters of Utheta determined from ab initio surfaces
1007 ! Kozlowska et al., J. Phys.: Condens. Matter 19 (2007) 285203
1009 read (ithep,*,err=111,end=111) nthetyp,ntheterm,ntheterm2,&
1010 ntheterm3,nsingle,ndouble
1011 nntheterm=max0(ntheterm,ntheterm2,ntheterm3)
1013 !----------------------------------------------------
1014 allocate(ithetyp(-ntyp1:ntyp1)) !(-ntyp1:ntyp1)
1015 allocate(aa0thet(-nthetyp-1:nthetyp+1,&
1016 -nthetyp-1:nthetyp+1,-nthetyp-1:nthetyp+1,2))
1017 !(-maxthetyp1:maxthetyp1,-maxthetyp1:maxthetyp1,-maxthetyp1:maxthetyp1,2)
1018 allocate(aathet(ntheterm,-nthetyp-1:nthetyp+1,&
1019 -nthetyp-1:nthetyp+1,-nthetyp-1:nthetyp+1,2))
1020 !(maxtheterm,-maxthetyp1:maxthetyp1,&
1021 ! -maxthetyp1:maxthetyp1,-maxthetyp1:maxthetyp1,2)
1022 allocate(bbthet(nsingle,ntheterm2,-nthetyp-1:nthetyp+1,&
1023 -nthetyp-1:nthetyp+1,-nthetyp-1:nthetyp+1,2))
1024 allocate(ccthet(nsingle,ntheterm2,-nthetyp-1:nthetyp+1,&
1025 -nthetyp-1:nthetyp+1,-nthetyp-1:nthetyp+1,2))
1026 allocate(ddthet(nsingle,ntheterm2,-nthetyp-1:nthetyp+1,&
1027 -nthetyp-1:nthetyp+1,-nthetyp-1:nthetyp+1,2))
1028 allocate(eethet(nsingle,ntheterm2,-nthetyp-1:nthetyp+1,&
1029 -nthetyp-1:nthetyp+1,-nthetyp-1:nthetyp+1,2))
1030 !(maxsingle,maxtheterm2,-maxthetyp1:maxthetyp1,&
1031 ! -maxthetyp1:maxthetyp1,-maxthetyp1:maxthetyp1,2)
1032 allocate(ffthet(ndouble,ndouble,ntheterm3,-nthetyp-1:nthetyp+1,&
1033 -nthetyp-1:nthetyp+1,-nthetyp-1:nthetyp+1,2))
1034 allocate(ggthet(ndouble,ndouble,ntheterm3,-nthetyp-1:nthetyp+1,&
1035 -nthetyp-1:nthetyp+1,-nthetyp-1:nthetyp+1,2))
1036 !(maxdouble,maxdouble,maxtheterm3,-maxthetyp1:maxthetyp1,&
1037 ! -maxthetyp1:maxthetyp1,-maxthetyp1:maxthetyp1,2))
1039 read (ithep,*,err=111,end=111) (ithetyp(i),i=1,ntyp1)
1041 ithetyp(i)=-ithetyp(-i)
1044 aa0thet(:,:,:,:)=0.0d0
1045 aathet(:,:,:,:,:)=0.0d0
1046 bbthet(:,:,:,:,:,:)=0.0d0
1047 ccthet(:,:,:,:,:,:)=0.0d0
1048 ddthet(:,:,:,:,:,:)=0.0d0
1049 eethet(:,:,:,:,:,:)=0.0d0
1050 ffthet(:,:,:,:,:,:,:)=0.0d0
1051 ggthet(:,:,:,:,:,:,:)=0.0d0
1053 ! VAR:iblock means terminally blocking group 1=non-proline 2=proline
1055 ! VAR:ntethtyp is type of theta potentials type currently 0=glycine
1056 ! VAR:1=non-glicyne non-proline 2=proline
1057 ! VAR:negative values for D-aminoacid
1059 do j=-nthetyp,nthetyp
1060 do k=-nthetyp,nthetyp
1061 read (ithep,'(6a)',end=111,err=111) res1
1062 read (ithep,*,end=111,err=111) aa0thet(i,j,k,iblock)
1063 ! VAR: aa0thet is variable describing the average value of Foureir
1064 ! VAR: expansion series
1065 ! VAR: aathet is foureir expansion in theta/2 angle for full formula
1066 ! VAR: look at the fitting equation in Kozlowska et al., J. Phys.:
1067 !ondens. Matter 19 (2007) 285203 and Sieradzan et al., unpublished
1068 read (ithep,*,end=111,err=111) &
1069 (aathet(l,i,j,k,iblock),l=1,ntheterm)
1070 read (ithep,*,end=111,err=111) &
1071 ((bbthet(lll,ll,i,j,k,iblock),lll=1,nsingle),&
1072 (ccthet(lll,ll,i,j,k,iblock),lll=1,nsingle),&
1073 (ddthet(lll,ll,i,j,k,iblock),lll=1,nsingle),&
1074 (eethet(lll,ll,i,j,k,iblock),lll=1,nsingle),&
1076 read (ithep,*,end=111,err=111) &
1077 (((ffthet(llll,lll,ll,i,j,k,iblock),&
1078 ffthet(lll,llll,ll,i,j,k,iblock),&
1079 ggthet(llll,lll,ll,i,j,k,iblock),&
1080 ggthet(lll,llll,ll,i,j,k,iblock),&
1081 llll=1,lll-1),lll=2,ndouble),ll=1,ntheterm3)
1086 ! For dummy ends assign glycine-type coefficients of theta-only terms; the
1087 ! coefficients of theta-and-gamma-dependent terms are zero.
1088 ! IF YOU WANT VALENCE POTENTIALS FOR DUMMY ATOM UNCOMENT BELOW (NOT
1089 ! RECOMENTDED AFTER VERSION 3.3)
1093 ! aathet(l,i,j,nthetyp+1,iblock)=aathet(l,i,j,1,iblock)
1094 ! aathet(l,nthetyp+1,i,j,iblock)=aathet(l,1,i,j,iblock)
1096 ! aa0thet(i,j,nthetyp+1,iblock)=aa0thet(i,j,1,iblock)
1097 ! aa0thet(nthetyp+1,i,j,iblock)=aa0thet(1,i,j,iblock)
1100 ! aathet(l,nthetyp+1,i,nthetyp+1,iblock)=aathet(l,1,i,1,iblock)
1102 ! aa0thet(nthetyp+1,i,nthetyp+1,iblock)=aa0thet(1,i,1,iblock)
1105 ! AND COMMENT THE LOOPS BELOW
1109 aathet(l,i,j,nthetyp+1,iblock)=0.0d0
1110 aathet(l,nthetyp+1,i,j,iblock)=0.0d0
1112 aa0thet(i,j,nthetyp+1,iblock)=0.0d0
1113 aa0thet(nthetyp+1,i,j,iblock)=0.0d0
1116 aathet(l,nthetyp+1,i,nthetyp+1,iblock)=0.0d0
1118 aa0thet(nthetyp+1,i,nthetyp+1,iblock)=0.0d0
1123 ! Substitution for D aminoacids from symmetry.
1126 do j=-nthetyp,nthetyp
1127 do k=-nthetyp,nthetyp
1128 aa0thet(i,j,k,iblock)=aa0thet(-i,-j,-k,iblock)
1130 aathet(l,i,j,k,iblock)=aathet(l,-i,-j,-k,iblock)
1134 bbthet(lll,ll,i,j,k,iblock)=bbthet(lll,ll,-i,-j,-k,iblock)
1135 ccthet(lll,ll,i,j,k,iblock)=-ccthet(lll,ll,-i,-j,-k,iblock)
1136 ddthet(lll,ll,i,j,k,iblock)=ddthet(lll,ll,-i,-j,-k,iblock)
1137 eethet(lll,ll,i,j,k,iblock)=-eethet(lll,ll,-i,-j,-k,iblock)
1143 ffthet(llll,lll,ll,i,j,k,iblock)= &
1144 ffthet(llll,lll,ll,-i,-j,-k,iblock)
1145 ffthet(lll,llll,ll,i,j,k,iblock)= &
1146 ffthet(lll,llll,ll,-i,-j,-k,iblock)
1147 ggthet(llll,lll,ll,i,j,k,iblock)= &
1148 -ggthet(llll,lll,ll,-i,-j,-k,iblock)
1149 ggthet(lll,llll,ll,i,j,k,iblock)= &
1150 -ggthet(lll,llll,ll,-i,-j,-k,iblock)
1159 ! Control printout of the coefficients of virtual-bond-angle potentials
1162 write (iout,'(//a)') 'Parameter of virtual-bond-angle potential'
1167 write (iout,'(//4a)') &
1168 'Type ',onelett(i),onelett(j),onelett(k)
1169 write (iout,'(//a,10x,a)') " l","a[l]"
1170 write (iout,'(i2,1pe15.5)') 0,aa0thet(i,j,k,iblock)
1171 write (iout,'(i2,1pe15.5)') &
1172 (l,aathet(l,i,j,k,iblock),l=1,ntheterm)
1174 write (iout,'(//2h m,4(9x,a,3h[m,,i1,1h]))') &
1175 "b",l,"c",l,"d",l,"e",l
1177 write (iout,'(i2,4(1pe15.5))') m,&
1178 bbthet(m,l,i,j,k,iblock),ccthet(m,l,i,j,k,iblock),&
1179 ddthet(m,l,i,j,k,iblock),eethet(m,l,i,j,k,iblock)
1183 write (iout,'(//3hm,n,4(6x,a,5h[m,n,,i1,1h]))') &
1184 "f+",l,"f-",l,"g+",l,"g-",l
1187 write (iout,'(i1,1x,i1,4(1pe15.5))') n,m,&
1188 ffthet(n,m,l,i,j,k,iblock),&
1189 ffthet(m,n,l,i,j,k,iblock),&
1190 ggthet(n,m,l,i,j,k,iblock),&
1191 ggthet(m,n,l,i,j,k,iblock)
1201 write (2,*) "Start reading THETA_PDB",ithep_pdb
1203 ! write (2,*) 'i=',i
1204 read (ithep_pdb,*,err=111,end=111) &
1205 a0thet(i),(athet(j,i,1,1),j=1,2),&
1206 (bthet(j,i,1,1),j=1,2)
1207 read (ithep_pdb,*,err=111,end=111) (polthet(j,i),j=0,3)
1208 read (ithep_pdb,*,err=111,end=111) (gthet(j,i),j=1,3)
1209 read (ithep_pdb,*,err=111,end=111) theta0(i),sig0(i),sigc0(i)
1210 sigc0(i)=sigc0(i)**2
1213 athet(1,i,1,-1)=athet(1,i,1,1)
1214 athet(2,i,1,-1)=athet(2,i,1,1)
1215 bthet(1,i,1,-1)=-bthet(1,i,1,1)
1216 bthet(2,i,1,-1)=-bthet(2,i,1,1)
1217 athet(1,i,-1,1)=-athet(1,i,1,1)
1218 athet(2,i,-1,1)=-athet(2,i,1,1)
1219 bthet(1,i,-1,1)=bthet(1,i,1,1)
1220 bthet(2,i,-1,1)=bthet(2,i,1,1)
1223 a0thet(i)=a0thet(-i)
1224 athet(1,i,-1,-1)=athet(1,-i,1,1)
1225 athet(2,i,-1,-1)=-athet(2,-i,1,1)
1226 bthet(1,i,-1,-1)=bthet(1,-i,1,1)
1227 bthet(2,i,-1,-1)=-bthet(2,-i,1,1)
1228 athet(1,i,-1,1)=athet(1,-i,1,1)
1229 athet(2,i,-1,1)=-athet(2,-i,1,1)
1230 bthet(1,i,-1,1)=-bthet(1,-i,1,1)
1231 bthet(2,i,-1,1)=bthet(2,-i,1,1)
1232 athet(1,i,1,-1)=-athet(1,-i,1,1)
1233 athet(2,i,1,-1)=athet(2,-i,1,1)
1234 bthet(1,i,1,-1)=bthet(1,-i,1,1)
1235 bthet(2,i,1,-1)=-bthet(2,-i,1,1)
1236 theta0(i)=theta0(-i)
1240 polthet(j,i)=polthet(j,-i)
1243 gthet(j,i)=gthet(j,-i)
1246 write (2,*) "End reading THETA_PDB"
1250 !--------------- Reading theta parameters for nucleic acid-------
1251 read (ithep_nucl,*,err=111,end=111) nthetyp_nucl,ntheterm_nucl,&
1252 ntheterm2_nucl,ntheterm3_nucl,nsingle_nucl,ndouble_nucl
1253 nntheterm_nucl=max0(ntheterm_nucl,ntheterm2_nucl,ntheterm3_nucl)
1254 allocate(ithetyp_nucl(ntyp1_molec(2))) !(-ntyp1:ntyp1)
1255 allocate(aa0thet_nucl(nthetyp_nucl+1,&
1256 nthetyp_nucl+1,nthetyp_nucl+1))
1257 !(-maxthetyp1:maxthetyp1,-maxthetyp1:maxthetyp1,-maxthetyp1:maxthetyp1,2)
1258 allocate(aathet_nucl(ntheterm_nucl+1,nthetyp_nucl+1,&
1259 nthetyp_nucl+1,nthetyp_nucl+1))
1260 !(maxtheterm,-maxthetyp1:maxthetyp1,&
1261 ! -maxthetyp1:maxthetyp1,-maxthetyp1:maxthetyp1,2)
1262 allocate(bbthet_nucl(nsingle_nucl+1,ntheterm2_nucl+1,nthetyp_nucl+1,&
1263 nthetyp_nucl+1,nthetyp_nucl+1))
1264 allocate(ccthet_nucl(nsingle_nucl+1,ntheterm2_nucl+1,nthetyp_nucl+1,&
1265 nthetyp_nucl+1,nthetyp_nucl+1))
1266 allocate(ddthet_nucl(nsingle_nucl+1,ntheterm2_nucl+1,nthetyp_nucl+1,&
1267 nthetyp_nucl+1,nthetyp_nucl+1))
1268 allocate(eethet_nucl(nsingle_nucl+1,ntheterm2_nucl+1,nthetyp_nucl+1,&
1269 nthetyp_nucl+1,nthetyp_nucl+1))
1270 !(maxsingle,maxtheterm2,-maxthetyp1:maxthetyp1,&
1271 ! -maxthetyp1:maxthetyp1,-maxthetyp1:maxthetyp1,2)
1272 allocate(ffthet_nucl(ndouble_nucl+1,ndouble_nucl+1,ntheterm3_nucl+1,&
1273 nthetyp_nucl+1,nthetyp_nucl+1,nthetyp_nucl+1))
1274 allocate(ggthet_nucl(ndouble_nucl+1,ndouble_nucl+1,ntheterm3_nucl+1,&
1275 nthetyp_nucl+1,nthetyp_nucl+1,nthetyp_nucl+1))
1277 !(maxdouble,maxdouble,maxtheterm3,-maxthetyp1:maxthetyp1,&
1278 ! -maxthetyp1:maxthetyp1,-maxthetyp1:maxthetyp1,2))
1280 read (ithep_nucl,*,err=111,end=111) (ithetyp_nucl(i),i=1,ntyp1_molec(2))
1282 aa0thet_nucl(:,:,:)=0.0d0
1283 aathet_nucl(:,:,:,:)=0.0d0
1284 bbthet_nucl(:,:,:,:,:)=0.0d0
1285 ccthet_nucl(:,:,:,:,:)=0.0d0
1286 ddthet_nucl(:,:,:,:,:)=0.0d0
1287 eethet_nucl(:,:,:,:,:)=0.0d0
1288 ffthet_nucl(:,:,:,:,:,:)=0.0d0
1289 ggthet_nucl(:,:,:,:,:,:)=0.0d0
1294 read (ithep_nucl,'(3a)',end=111,err=111) t1,t2,t3
1295 read (ithep_nucl,*,end=111,err=111) aa0thet_nucl(i,j,k)
1296 read (ithep_nucl,*,end=111,err=111)(aathet_nucl(l,i,j,k),l=1,ntheterm_nucl)
1297 read (ithep_nucl,*,end=111,err=111) &
1298 (((bbthet_nucl(lll,ll,i,j,k),lll=1,nsingle_nucl), &
1299 (ccthet_nucl(lll,ll,i,j,k),lll=1,nsingle_nucl), &
1300 (ddthet_nucl(lll,ll,i,j,k),lll=1,nsingle_nucl), &
1301 (eethet_nucl(lll,ll,i,j,k),lll=1,nsingle_nucl)),ll=1,ntheterm2_nucl)
1302 read (ithep_nucl,*,end=111,err=111) &
1303 (((ffthet_nucl(llll,lll,ll,i,j,k),ffthet_nucl(lll,llll,ll,i,j,k), &
1304 ggthet_nucl(llll,lll,ll,i,j,k),ggthet_nucl(lll,llll,ll,i,j,k), &
1305 llll=1,lll-1),lll=2,ndouble_nucl),ll=1,ntheterm3_nucl)
1310 !-------------------------------------------
1311 allocate(nlob(ntyp1)) !(ntyp1)
1312 allocate(bsc(maxlob,ntyp)) !(maxlob,ntyp)
1313 allocate(censc(3,maxlob,-ntyp:ntyp)) !(3,maxlob,-ntyp:ntyp)
1314 allocate(gaussc(3,3,maxlob,-ntyp:ntyp)) !(3,3,maxlob,-ntyp:ntyp)
1321 gaussc(:,:,:,:)=0.0D0
1325 ! Read the parameters of the probability distribution/energy expression
1326 ! of the side chains.
1329 read (irotam,'(3x,i3,f8.3)',end=112,err=112) nlob(i),dsc(i)
1333 dsc_inv(i)=1.0D0/dsc(i)
1344 read(irotam,*,end=112,err=112)(censc(k,1,i),k=1,3),&
1345 ((blower(k,l,1),l=1,k),k=1,3)
1346 censc(1,1,-i)=censc(1,1,i)
1347 censc(2,1,-i)=censc(2,1,i)
1348 censc(3,1,-i)=-censc(3,1,i)
1350 read (irotam,*,end=112,err=112) bsc(j,i)
1351 read (irotam,*,end=112,err=112) (censc(k,j,i),k=1,3),&
1352 ((blower(k,l,j),l=1,k),k=1,3)
1353 censc(1,j,-i)=censc(1,j,i)
1354 censc(2,j,-i)=censc(2,j,i)
1355 censc(3,j,-i)=-censc(3,j,i)
1356 ! BSC is amplitude of Gaussian
1363 akl=akl+blower(k,m,j)*blower(l,m,j)
1367 if (((k.eq.3).and.(l.ne.3)) &
1368 .or.((l.eq.3).and.(k.ne.3))) then
1369 gaussc(k,l,j,-i)=-akl
1370 gaussc(l,k,j,-i)=-akl
1372 gaussc(k,l,j,-i)=akl
1373 gaussc(l,k,j,-i)=akl
1382 write (iout,'(/a)') 'Parameters of side-chain local geometry'
1385 if (nlobi.gt.0) then
1387 write (iout,'(/3a,i2,a,f8.3)') 'Residue type: ',restyp(i,1),&
1388 ' # of gaussian lobes:',nlobi,' dsc:',dsc(i)
1389 write (iout,'(1h&,a,3(2h&&,f8.3,2h&&))') &
1390 'log h',(bsc(j,i),j=1,nlobi)
1391 write (iout,'(1h&,a,3(1h&,f8.3,1h&,f8.3,1h&,f8.3,1h&))') &
1392 'x',((censc(k,j,i),k=1,3),j=1,nlobi)
1394 write (iout,'(2h& ,5(2x,1h&,3(f7.3,1h&)))') &
1395 ((gaussc(k,l,j,i),l=1,3),j=1,nlobi)
1398 write (iout,'(/a,8x,i1,4(25x,i1))') 'Lobe:',(j,j=1,nlobi)
1399 write (iout,'(a,f10.4,4(16x,f10.4))') &
1400 'Center ',(bsc(j,i),j=1,nlobi)
1401 write (iout,'(5(2x,3f8.4))') ((censc(k,j,i),k=1,3),&
1410 ! Read scrot parameters for potentials determined from all-atom AM1 calculations
1411 ! added by Urszula Kozlowska 07/11/2007
1413 !el Maximum number of SC local term fitting function coefficiants
1414 !el integer,parameter :: maxsccoef=65
1416 allocate(sc_parmin(65,ntyp)) !(maxsccoef,ntyp)
1419 read (irotam,*,end=112,err=112)
1421 read (irotam,*,end=112,err=112)
1424 read(irotam,*,end=112,err=112) sc_parmin(j,i)
1428 !---------reading nucleic acid parameters for rotamers-------------------
1429 allocate(sc_parmin_nucl(9,ntyp_molec(2))) !(maxsccoef,ntyp)
1430 do i=1,ntyp_molec(2)
1431 read (irotam_nucl,*,end=112,err=112)
1433 read(irotam_nucl,*,end=112,err=112) sc_parmin_nucl(j,i)
1439 write (iout,*) "Base rotamer parameters"
1440 do i=1,ntyp_molec(2)
1441 write (iout,'(a)') restyp(i,2)
1442 write (iout,'(i5,f10.5)') (i,sc_parmin_nucl(j,i),j=1,9)
1447 ! Read the parameters of the probability distribution/energy expression
1448 ! of the side chains.
1450 write (2,*) "Start reading ROTAM_PDB"
1452 read (irotam_pdb,'(3x,i3,f8.3)',end=112,err=112) nlob(i),dsc(i)
1456 dsc_inv(i)=1.0D0/dsc(i)
1467 read(irotam_pdb,*,end=112,err=112)(censc(k,1,i),k=1,3),&
1468 ((blower(k,l,1),l=1,k),k=1,3)
1470 read (irotam_pdb,*,end=112,err=112) bsc(j,i)
1471 read (irotam_pdb,*,end=112,err=112) (censc(k,j,i),k=1,3),&
1472 ((blower(k,l,j),l=1,k),k=1,3)
1479 akl=akl+blower(k,m,j)*blower(l,m,j)
1489 write (2,*) "End reading ROTAM_PDB"
1495 ! Read torsional parameters in old format
1497 allocate(itortyp(ntyp1)) !(-ntyp1:ntyp1)
1499 read (itorp,*,end=113,err=113) ntortyp,nterm_old
1500 if (lprint)write (iout,*) 'ntortyp,nterm',ntortyp,nterm_old
1501 read (itorp,*,end=113,err=113) (itortyp(i),i=1,ntyp)
1503 !el from energy module--------
1504 allocate(v1(nterm_old,ntortyp,ntortyp))
1505 allocate(v2(nterm_old,ntortyp,ntortyp)) !(maxterm,-maxtor:maxtor,-maxtor:maxtor)
1506 !el---------------------------
1511 read (itorp,*,end=113,err=113) kk,v1(k,j,i),v2(k,j,i)
1517 write (iout,'(/a/)') 'Torsional constants:'
1520 write (iout,'(2i3,6f10.5)') i,j,(v1(k,i,j),k=1,nterm_old)
1521 write (iout,'(6x,6f10.5)') (v2(k,i,j),k=1,nterm_old)
1527 ! Read torsional parameters
1529 allocate(itortyp(-ntyp1:ntyp1)) !(-ntyp1:ntyp1)
1530 read (itorp,*,end=113,err=113) ntortyp
1531 !el from energy module---------
1532 allocate(nterm(-ntortyp:ntortyp,-ntortyp:ntortyp,2)) !(-maxtor:maxtor,-maxtor:maxtor,2)
1533 allocate(nlor(-ntortyp:ntortyp,-ntortyp:ntortyp,2)) !(-maxtor:maxtor,-maxtor:maxtor,2)
1535 allocate(vlor1(maxlor,-ntortyp:ntortyp,-ntortyp:ntortyp)) !(maxlor,-maxtor:maxtor,-maxtor:maxtor)
1536 allocate(vlor2(maxlor,ntortyp,ntortyp))
1537 allocate(vlor3(maxlor,ntortyp,ntortyp)) !(maxlor,maxtor,maxtor)
1538 allocate(v0(-ntortyp:ntortyp,-ntortyp:ntortyp,2)) !(-maxtor:maxtor,-maxtor:maxtor,2)
1540 allocate(v1(maxterm,-ntortyp:ntortyp,-ntortyp:ntortyp,2))
1541 allocate(v2(maxterm,-ntortyp:ntortyp,-ntortyp:ntortyp,2)) !(maxterm,-maxtor:maxtor,-maxtor:maxtor,2)
1542 !el---------------------------
1545 !el---------------------------
1547 read (itorp,*,end=113,err=113) (itortyp(i),i=1,ntyp)
1549 itortyp(i)=-itortyp(-i)
1551 itortyp(ntyp1)=ntortyp
1552 itortyp(-ntyp1)=-ntortyp
1554 write (iout,*) 'ntortyp',ntortyp
1556 do j=-ntortyp+1,ntortyp-1
1557 read (itorp,*,end=113,err=113) nterm(i,j,iblock),&
1559 nterm(-i,-j,iblock)=nterm(i,j,iblock)
1560 nlor(-i,-j,iblock)=nlor(i,j,iblock)
1563 do k=1,nterm(i,j,iblock)
1564 read (itorp,*,end=113,err=113) kk,v1(k,i,j,iblock),&
1566 v1(k,-i,-j,iblock)=v1(k,i,j,iblock)
1567 v2(k,-i,-j,iblock)=-v2(k,i,j,iblock)
1568 v0ij=v0ij+si*v1(k,i,j,iblock)
1570 ! write(iout,*) i,j,k,iblock,nterm(i,j,iblock) !
1571 ! write(iout,*) v1(k,-i,-j,iblock),v1(k,i,j,iblock),&!
1572 ! v2(k,-i,-j,iblock),v2(k,i,j,iblock)!
1574 do k=1,nlor(i,j,iblock)
1575 read (itorp,*,end=113,err=113) kk,vlor1(k,i,j),&
1576 vlor2(k,i,j),vlor3(k,i,j)
1577 v0ij=v0ij+vlor1(k,i,j)/(1+vlor3(k,i,j)**2)
1580 v0(-i,-j,iblock)=v0ij
1586 write (iout,'(/a/)') 'Torsional constants:'
1588 do i=-ntortyp,ntortyp
1589 do j=-ntortyp,ntortyp
1590 write (iout,*) 'ityp',i,' jtyp',j
1591 write (iout,*) 'Fourier constants'
1592 do k=1,nterm(i,j,iblock)
1593 write (iout,'(2(1pe15.5))') v1(k,i,j,iblock),&
1596 write (iout,*) 'Lorenz constants'
1597 do k=1,nlor(i,j,iblock)
1598 write (iout,'(3(1pe15.5))') &
1599 vlor1(k,i,j),vlor2(k,i,j),vlor3(k,i,j)
1605 !elwrite (iout,'(/a/)') 'Torsional constants:',vlor1(k,i,j),vlor2(k,i,j),vlor3(k,i,j)
1607 ! 6/23/01 Read parameters for double torsionals
1609 !el from energy module------------
1610 allocate(v1c(2,maxtermd_1,-ntortyp+1:ntortyp-1,-ntortyp+1:ntortyp-1,-ntortyp+1:ntortyp-1,2))
1611 allocate(v1s(2,maxtermd_1,-ntortyp+1:ntortyp-1,-ntortyp+1:ntortyp-1,-ntortyp+1:ntortyp-1,2))
1612 !(2,maxtermd_1,-maxtor:maxtor,-maxtor:maxtor,-maxtor:maxtor,2)
1613 allocate(v2c(maxtermd_2,maxtermd_2,-ntortyp+1:ntortyp-1,-ntortyp+1:ntortyp-1,-ntortyp+1:ntortyp-1,2))
1614 allocate(v2s(maxtermd_2,maxtermd_2,-ntortyp+1:ntortyp-1,-ntortyp+1:ntortyp-1,-ntortyp+1:ntortyp-1,2))
1615 !(maxtermd_2,maxtermd_2,-maxtor:maxtor,-maxtor:maxtor,-maxtor:maxtor,2)
1616 allocate(ntermd_1(-ntortyp+1:ntortyp-1,-ntortyp+1:ntortyp-1,-ntortyp+1:ntortyp-1,2))
1617 allocate(ntermd_2(-ntortyp+1:ntortyp-1,-ntortyp+1:ntortyp-1,-ntortyp+1:ntortyp-1,2))
1618 !(-maxtor:maxtor,-maxtor:maxtor,-maxtor:maxtor,2)
1619 !---------------------------------
1623 do j=-ntortyp+1,ntortyp-1
1624 do k=-ntortyp+1,ntortyp-1
1625 read (itordp,'(3a1)',end=114,err=114) t1,t2,t3
1626 ! write (iout,*) "OK onelett",
1629 if (t1.ne.toronelet(i) .or. t2.ne.toronelet(j) &
1630 .or. t3.ne.toronelet(k)) then
1631 write (iout,*) "Error in double torsional parameter file",&
1634 call MPI_Finalize(Ierror)
1636 stop "Error in double torsional parameter file"
1638 read (itordp,*,end=114,err=114) ntermd_1(i,j,k,iblock),&
1639 ntermd_2(i,j,k,iblock)
1640 ntermd_1(-i,-j,-k,iblock)=ntermd_1(i,j,k,iblock)
1641 ntermd_2(-i,-j,-k,iblock)=ntermd_2(i,j,k,iblock)
1642 read (itordp,*,end=114,err=114) (v1c(1,l,i,j,k,iblock),l=1,&
1643 ntermd_1(i,j,k,iblock))
1644 read (itordp,*,end=114,err=114) (v1s(1,l,i,j,k,iblock),l=1,&
1645 ntermd_1(i,j,k,iblock))
1646 read (itordp,*,end=114,err=114) (v1c(2,l,i,j,k,iblock),l=1,&
1647 ntermd_1(i,j,k,iblock))
1648 read (itordp,*,end=114,err=114) (v1s(2,l,i,j,k,iblock),l=1,&
1649 ntermd_1(i,j,k,iblock))
1650 ! Martix of D parameters for one dimesional foureir series
1651 do l=1,ntermd_1(i,j,k,iblock)
1652 v1c(1,l,-i,-j,-k,iblock)=v1c(1,l,i,j,k,iblock)
1653 v1s(1,l,-i,-j,-k,iblock)=-v1s(1,l,i,j,k,iblock)
1654 v1c(2,l,-i,-j,-k,iblock)=v1c(2,l,i,j,k,iblock)
1655 v1s(2,l,-i,-j,-k,iblock)=-v1s(2,l,i,j,k,iblock)
1656 ! write(iout,*) "whcodze" ,
1657 ! & v1s(2,l,-i,-j,-k,iblock),v1s(2,l,i,j,k,iblock)
1659 read (itordp,*,end=114,err=114) ((v2c(l,m,i,j,k,iblock),&
1660 v2c(m,l,i,j,k,iblock),v2s(l,m,i,j,k,iblock),&
1661 v2s(m,l,i,j,k,iblock),&
1662 m=1,l-1),l=1,ntermd_2(i,j,k,iblock))
1663 ! Martix of D parameters for two dimesional fourier series
1664 do l=1,ntermd_2(i,j,k,iblock)
1666 v2c(l,m,-i,-j,-k,iblock)=v2c(l,m,i,j,k,iblock)
1667 v2c(m,l,-i,-j,-k,iblock)=v2c(m,l,i,j,k,iblock)
1668 v2s(l,m,-i,-j,-k,iblock)=-v2s(l,m,i,j,k,iblock)
1669 v2s(m,l,-i,-j,-k,iblock)=-v2s(m,l,i,j,k,iblock)
1678 write (iout,*) 'Constants for double torsionals'
1681 do j=-ntortyp+1,ntortyp-1
1682 do k=-ntortyp+1,ntortyp-1
1683 write (iout,*) 'ityp',i,' jtyp',j,' ktyp',k,&
1684 ' nsingle',ntermd_1(i,j,k,iblock),&
1685 ' ndouble',ntermd_2(i,j,k,iblock)
1687 write (iout,*) 'Single angles:'
1688 do l=1,ntermd_1(i,j,k,iblock)
1689 write (iout,'(i5,2f10.5,5x,2f10.5,5x,2f10.5)') l,&
1690 v1c(1,l,i,j,k,iblock),v1s(1,l,i,j,k,iblock),&
1691 v1c(2,l,i,j,k,iblock),v1s(2,l,i,j,k,iblock),&
1692 v1s(1,l,-i,-j,-k,iblock),v1s(2,l,-i,-j,-k,iblock)
1695 write (iout,*) 'Pairs of angles:'
1696 write (iout,'(3x,20i10)') (l,l=1,ntermd_2(i,j,k,iblock))
1697 do l=1,ntermd_2(i,j,k,iblock)
1698 write (iout,'(i5,20f10.5)') &
1699 l,(v2c(l,m,i,j,k,iblock),m=1,ntermd_2(i,j,k,iblock))
1702 write (iout,'(3x,20i10)') (l,l=1,ntermd_2(i,j,k,iblock))
1703 do l=1,ntermd_2(i,j,k,iblock)
1704 write (iout,'(i5,20f10.5)') &
1705 l,(v2s(l,m,i,j,k,iblock),m=1,ntermd_2(i,j,k,iblock)),&
1706 (v2s(l,m,-i,-j,-k,iblock),m=1,ntermd_2(i,j,k,iblock))
1715 allocate(itortyp_nucl(ntyp1_molec(2))) !(-ntyp1:ntyp1)
1716 read (itorp_nucl,*,end=113,err=113) ntortyp_nucl
1717 ! print *,"ntortyp_nucl",ntortyp_nucl,ntyp_molec(2)
1718 !el from energy module---------
1719 allocate(nterm_nucl(ntortyp_nucl,ntortyp_nucl)) !(-maxtor:maxtor,-maxtor:maxtor,2)
1720 allocate(nlor_nucl(ntortyp_nucl,ntortyp_nucl)) !(-maxtor:maxtor,-maxtor:maxtor,2)
1722 allocate(vlor1_nucl(maxlor,ntortyp_nucl,ntortyp_nucl)) !(maxlor,-maxtor:maxtor,-maxtor:maxtor)
1723 allocate(vlor2_nucl(maxlor,ntortyp_nucl,ntortyp_nucl))
1724 allocate(vlor3_nucl(maxlor,ntortyp_nucl,ntortyp_nucl)) !(maxlor,maxtor,maxtor)
1725 allocate(v0_nucl(ntortyp_nucl,ntortyp_nucl)) !(-maxtor:maxtor,-maxtor:maxtor,2)
1727 allocate(v1_nucl(maxterm,ntortyp_nucl,ntortyp_nucl))
1728 allocate(v2_nucl(maxterm,ntortyp_nucl,ntortyp_nucl)) !(maxterm,-maxtor:maxtor,-maxtor:maxtor,2)
1729 !el---------------------------
1732 !el--------------------
1733 read (itorp_nucl,*,end=113,err=113) &
1734 (itortyp_nucl(i),i=1,ntyp_molec(2))
1735 ! print *,itortyp_nucl(:)
1736 !c write (iout,*) 'ntortyp',ntortyp
1739 read (itorp_nucl,*,end=113,err=113) nterm_nucl(i,j),nlor_nucl(i,j)
1740 ! print *,nterm_nucl(i,j),nlor_nucl(i,j)
1743 do k=1,nterm_nucl(i,j)
1744 read (itorp_nucl,*,end=113,err=113) kk,v1_nucl(k,i,j),v2_nucl(k,i,j)
1745 v0ij=v0ij+si*v1_nucl(k,i,j)
1748 do k=1,nlor_nucl(i,j)
1749 read (itorp,*,end=113,err=113) kk,vlor1_nucl(k,i,j),&
1750 vlor2_nucl(k,i,j),vlor3_nucl(k,i,j)
1751 v0ij=v0ij+vlor1_nucl(k,i,j)/(1+vlor3_nucl(k,i,j)**2)
1757 ! Read of Side-chain backbone correlation parameters
1758 ! Modified 11 May 2012 by Adasko
1761 read (isccor,*,end=119,err=119) nsccortyp
1763 !el from module energy-------------
1764 allocate(nlor_sccor(nsccortyp,nsccortyp)) !(-ntyp:ntyp,-ntyp:ntyp)
1765 allocate(vlor1sccor(maxterm_sccor,nsccortyp,nsccortyp))
1766 allocate(vlor2sccor(maxterm_sccor,nsccortyp,nsccortyp))
1767 allocate(vlor3sccor(maxterm_sccor,nsccortyp,nsccortyp)) !(maxterm_sccor,20,20)
1768 !-----------------------------------
1770 !el from module energy-------------
1771 allocate(isccortyp(-ntyp:ntyp)) !(-ntyp:ntyp)
1773 read (isccor,*,end=119,err=119) (isccortyp(i),i=1,ntyp)
1775 isccortyp(i)=-isccortyp(-i)
1777 iscprol=isccortyp(20)
1778 ! write (iout,*) 'ntortyp',ntortyp
1780 !c maxinter is maximum interaction sites
1781 !el from module energy---------
1782 allocate(nterm_sccor(-nsccortyp:nsccortyp,-nsccortyp:nsccortyp)) !(-ntyp:ntyp,-ntyp:ntyp)
1783 allocate(v1sccor(maxterm_sccor,maxinter,-nsccortyp:nsccortyp,&
1784 -nsccortyp:nsccortyp))
1785 allocate(v2sccor(maxterm_sccor,maxinter,-nsccortyp:nsccortyp,&
1786 -nsccortyp:nsccortyp)) !(maxterm_sccor,3,-ntyp:ntyp,-ntyp:ntyp)
1787 allocate(v0sccor(maxinter,-nsccortyp:nsccortyp,&
1788 -nsccortyp:nsccortyp)) !(maxterm_sccor,-ntyp:ntyp,-ntyp:ntyp)
1789 !-----------------------------------
1793 read (isccor,*,end=119,err=119) &
1794 nterm_sccor(i,j),nlor_sccor(i,j)
1800 nterm_sccor(-i,j)=nterm_sccor(i,j)
1801 nterm_sccor(-i,-j)=nterm_sccor(i,j)
1802 nterm_sccor(i,-j)=nterm_sccor(i,j)
1803 do k=1,nterm_sccor(i,j)
1804 read (isccor,*,end=119,err=119) kk,v1sccor(k,l,i,j),&
1806 if (j.eq.iscprol) then
1807 if (i.eq.isccortyp(10)) then
1808 v1sccor(k,l,i,-j)=v1sccor(k,l,i,j)
1809 v2sccor(k,l,i,-j)=-v2sccor(k,l,i,j)
1811 v1sccor(k,l,i,-j)=v1sccor(k,l,i,j)*0.5d0 &
1812 +v2sccor(k,l,i,j)*dsqrt(0.75d0)
1813 v2sccor(k,l,i,-j)=-v2sccor(k,l,i,j)*0.5d0 &
1814 +v1sccor(k,l,i,j)*dsqrt(0.75d0)
1815 v1sccor(k,l,-i,-j)=v1sccor(k,l,i,j)
1816 v2sccor(k,l,-i,-j)=-v2sccor(k,l,i,j)
1817 v1sccor(k,l,-i,j)=v1sccor(k,l,i,-j)
1818 v2sccor(k,l,-i,j)=-v2sccor(k,l,i,-j)
1821 if (i.eq.isccortyp(10)) then
1822 v1sccor(k,l,i,-j)=v1sccor(k,l,i,j)
1823 v2sccor(k,l,i,-j)=-v2sccor(k,l,i,j)
1825 if (j.eq.isccortyp(10)) then
1826 v1sccor(k,l,-i,j)=v1sccor(k,l,i,j)
1827 v2sccor(k,l,-i,j)=-v2sccor(k,l,i,j)
1829 v1sccor(k,l,i,-j)=-v1sccor(k,l,i,j)
1830 v2sccor(k,l,i,-j)=-v2sccor(k,l,i,j)
1831 v1sccor(k,l,-i,-j)=v1sccor(k,l,i,j)
1832 v2sccor(k,l,-i,-j)=-v2sccor(k,l,i,j)
1833 v1sccor(k,l,-i,j)=v1sccor(k,l,i,-j)
1834 v2sccor(k,l,-i,j)=-v2sccor(k,l,i,-j)
1838 v0ijsccor=v0ijsccor+si*v1sccor(k,l,i,j)
1839 v0ijsccor1=v0ijsccor+si*v1sccor(k,l,-i,j)
1840 v0ijsccor2=v0ijsccor+si*v1sccor(k,l,i,-j)
1841 v0ijsccor3=v0ijsccor+si*v1sccor(k,l,-i,-j)
1844 do k=1,nlor_sccor(i,j)
1845 read (isccor,*,end=119,err=119) kk,vlor1sccor(k,i,j),&
1846 vlor2sccor(k,i,j),vlor3sccor(k,i,j)
1847 v0ijsccor=v0ijsccor+vlor1sccor(k,i,j)/ &
1848 (1+vlor3sccor(k,i,j)**2)
1850 v0sccor(l,i,j)=v0ijsccor
1851 v0sccor(l,-i,j)=v0ijsccor1
1852 v0sccor(l,i,-j)=v0ijsccor2
1853 v0sccor(l,-i,-j)=v0ijsccor3
1859 !el from module energy-------------
1860 allocate(isccortyp(ntyp)) !(-ntyp:ntyp)
1862 read (isccor,*,end=119,err=119) (isccortyp(i),i=1,ntyp)
1863 ! write (iout,*) 'ntortyp',ntortyp
1865 !c maxinter is maximum interaction sites
1866 !el from module energy---------
1867 allocate(nterm_sccor(nsccortyp,nsccortyp)) !(-ntyp:ntyp,-ntyp:ntyp)
1868 allocate(v1sccor(maxterm_sccor,maxinter,nsccortyp,nsccortyp))
1869 allocate(v2sccor(maxterm_sccor,maxinter,nsccortyp,nsccortyp)) !(maxterm_sccor,3,-ntyp:ntyp,-ntyp:ntyp)
1870 allocate(v0sccor(maxinter,nsccortyp,nsccortyp)) !???(maxterm_sccor,-ntyp:ntyp,-ntyp:ntyp)
1871 !-----------------------------------
1875 read (isccor,*,end=119,err=119) &
1876 nterm_sccor(i,j),nlor_sccor(i,j)
1880 do k=1,nterm_sccor(i,j)
1881 read (isccor,*,end=119,err=119) kk,v1sccor(k,l,i,j),&
1883 v0ijsccor=v0ijsccor+si*v1sccor(k,l,i,j)
1886 do k=1,nlor_sccor(i,j)
1887 read (isccor,*,end=119,err=119) kk,vlor1sccor(k,i,j),&
1888 vlor2sccor(k,i,j),vlor3sccor(k,i,j)
1889 v0ijsccor=v0ijsccor+vlor1sccor(k,i,j)/ &
1890 (1+vlor3sccor(k,i,j)**2)
1892 v0sccor(l,i,j)=v0ijsccor !el ,iblock
1901 write (iout,'(/a/)') 'Torsional constants:'
1904 write (iout,*) 'ityp',i,' jtyp',j
1905 write (iout,*) 'Fourier constants'
1906 do k=1,nterm_sccor(i,j)
1907 write (iout,'(2(1pe15.5))') v1sccor(k,l,i,j),v2sccor(k,l,i,j)
1909 write (iout,*) 'Lorenz constants'
1910 do k=1,nlor_sccor(i,j)
1911 write (iout,'(3(1pe15.5))') &
1912 vlor1sccor(k,i,j),vlor2sccor(k,i,j),vlor3sccor(k,i,j)
1919 ! 9/18/99 (AL) Read coefficients of the Fourier expansion of the local
1920 ! interaction energy of the Gly, Ala, and Pro prototypes.
1925 write (iout,*) "Coefficients of the cumulants"
1927 read (ifourier,*) nloctyp
1928 !write(iout,*) "nloctyp",nloctyp
1929 !el from module energy-------
1930 allocate(b1(2,-nloctyp-1:nloctyp+1)) !(2,-maxtor:maxtor)
1931 allocate(b2(2,-nloctyp-1:nloctyp+1)) !(2,-maxtor:maxtor)
1932 allocate(b1tilde(2,-nloctyp+1:nloctyp+1)) !(2,-maxtor:maxtor)
1933 allocate(cc(2,2,-nloctyp-1:nloctyp+1))
1934 allocate(dd(2,2,-nloctyp-1:nloctyp+1))
1935 allocate(ee(2,2,-nloctyp-1:nloctyp+1))
1936 allocate(ctilde(2,2,-nloctyp-1:nloctyp+1))
1937 allocate(dtilde(2,2,-nloctyp-1:nloctyp+1)) !(2,2,-maxtor:maxtor)
1941 !--------------------------------
1944 read (ifourier,*,end=115,err=115)
1945 read (ifourier,*,end=115,err=115) (buse(ii),ii=1,13)
1947 write (iout,*) 'Type',i
1948 write (iout,'(a,i2,a,f10.5)') ('buse(',ii,')=',buse(ii),ii=1,13)
1956 B1tilde(1,i) = buse(3)
1957 B1tilde(2,i) =-buse(5)
1958 B1tilde(1,-i) =-buse(3)
1959 B1tilde(2,-i) =buse(5)
1960 ! buse1tilde(1,i)=0.0d0
1961 ! buse1tilde(2,i)=0.0d0
1981 Ctilde(1,1,i)=buse(7)
1982 Ctilde(1,2,i)=buse(9)
1983 Ctilde(2,1,i)=-buse(9)
1984 Ctilde(2,2,i)=buse(7)
1985 Ctilde(1,1,-i)=buse(7)
1986 Ctilde(1,2,-i)=-buse(9)
1987 Ctilde(2,1,-i)=buse(9)
1988 Ctilde(2,2,-i)=buse(7)
1990 ! Ctilde(1,1,i)=0.0d0
1991 ! Ctilde(1,2,i)=0.0d0
1992 ! Ctilde(2,1,i)=0.0d0
1993 ! Ctilde(2,2,i)=0.0d0
2006 Dtilde(1,1,i)=buse(6)
2007 Dtilde(1,2,i)=buse(8)
2008 Dtilde(2,1,i)=-buse(8)
2009 Dtilde(2,2,i)=buse(6)
2010 Dtilde(1,1,-i)=buse(6)
2011 Dtilde(1,2,-i)=-buse(8)
2012 Dtilde(2,1,-i)=buse(8)
2013 Dtilde(2,2,-i)=buse(6)
2015 ! Dtilde(1,1,i)=0.0d0
2016 ! Dtilde(1,2,i)=0.0d0
2017 ! Dtilde(2,1,i)=0.0d0
2018 ! Dtilde(2,2,i)=0.0d0
2019 EE(1,1,i)= buse(10)+buse(11)
2020 EE(2,2,i)=-buse(10)+buse(11)
2021 EE(2,1,i)= buse(12)-buse(13)
2022 EE(1,2,i)= buse(12)+buse(13)
2023 EE(1,1,-i)= buse(10)+buse(11)
2024 EE(2,2,-i)=-buse(10)+buse(11)
2025 EE(2,1,-i)=-buse(12)+buse(13)
2026 EE(1,2,-i)=-buse(12)-buse(13)
2032 ! ee(2,1,i)=ee(1,2,i)
2036 write (iout,*) 'Type',i
2038 write(iout,*) B1(1,i),B1(2,i)
2040 write(iout,*) B2(1,i),B2(2,i)
2043 write (iout,'(2f10.5)') CC(j,1,i),CC(j,2,i)
2047 write (iout,'(2f10.5)') DD(j,1,i),DD(j,2,i)
2051 write (iout,'(2f10.5)') EE(j,1,i),EE(j,2,i)
2056 ! Read electrostatic-interaction parameters
2061 write (iout,'(/a)') 'Electrostatic interaction constants:'
2062 write (iout,'(1x,a,1x,a,10x,a,11x,a,11x,a,11x,a)') &
2063 'IT','JT','APP','BPP','AEL6','AEL3'
2065 read (ielep,*,end=116,err=116) ((epp(i,j),j=1,2),i=1,2)
2066 read (ielep,*,end=116,err=116) ((rpp(i,j),j=1,2),i=1,2)
2067 read (ielep,*,end=116,err=116) ((elpp6(i,j),j=1,2),i=1,2)
2068 read (ielep,*,end=116,err=116) ((elpp3(i,j),j=1,2),i=1,2)
2073 app (i,j)=epp(i,j)*rri*rri
2074 bpp (i,j)=-2.0D0*epp(i,j)*rri
2075 ael6(i,j)=elpp6(i,j)*4.2D0**6
2076 ael3(i,j)=elpp3(i,j)*4.2D0**3
2078 if (lprint) write(iout,'(2i3,4(1pe15.4))')i,j,app(i,j),bpp(i,j),&
2084 ! Read side-chain interaction parameters.
2086 !el from module energy - COMMON.INTERACT-------
2087 allocate(eps(ntyp,ntyp),sigmaii(ntyp,ntyp),rs0(ntyp,ntyp)) !(ntyp,ntyp)
2088 allocate(augm(ntyp,ntyp)) !(ntyp,ntyp)
2089 allocate(eps_scp(ntyp,2),rscp(ntyp,2)) !(ntyp,2)
2091 allocate(sigma0(ntyp),rr0(ntyp),sigii(ntyp)) !(ntyp)
2092 allocate(chip(ntyp1),alp(ntyp1)) !(ntyp)
2093 allocate(epslip(ntyp,ntyp))
2101 !--------------------------------
2103 read (isidep,*,end=117,err=117) ipot,expon
2104 if (ipot.lt.1 .or. ipot.gt.5) then
2105 write (iout,'(2a)') 'Error while reading SC interaction',&
2106 'potential file - unknown potential type.'
2108 call MPI_Finalize(Ierror)
2114 write(iout,'(/3a,2i3)') 'Potential is ',potname(ipot),&
2115 ', exponents are ',expon,2*expon
2116 ! goto (10,20,30,30,40) ipot
2118 !----------------------- LJ potential ---------------------------------
2120 ! 10 read (isidep,*,end=117,err=117)((eps(i,j),j=i,ntyp),i=1,ntyp),&
2121 read (isidep,*,end=117,err=117)((eps(i,j),j=i,ntyp),i=1,ntyp),&
2122 (sigma0(i),i=1,ntyp)
2124 write (iout,'(/a/)') 'Parameters of the LJ potential:'
2125 write (iout,'(a/)') 'The epsilon array:'
2126 call printmat(ntyp,ntyp,ntyp,iout,restyp,eps)
2127 write (iout,'(/a)') 'One-body parameters:'
2128 write (iout,'(a,4x,a)') 'residue','sigma'
2129 write (iout,'(a3,6x,f10.5)') (restyp(i,1),sigma0(i),i=1,ntyp)
2132 !----------------------- LJK potential --------------------------------
2134 ! 20 read (isidep,*,end=117,err=117)((eps(i,j),j=i,ntyp),i=1,ntyp),&
2135 read (isidep,*,end=117,err=117)((eps(i,j),j=i,ntyp),i=1,ntyp),&
2136 (sigma0(i),i=1,ntyp),(rr0(i),i=1,ntyp)
2138 write (iout,'(/a/)') 'Parameters of the LJK potential:'
2139 write (iout,'(a/)') 'The epsilon array:'
2140 call printmat(ntyp,ntyp,ntyp,iout,restyp,eps)
2141 write (iout,'(/a)') 'One-body parameters:'
2142 write (iout,'(a,4x,2a)') 'residue',' sigma ',' r0 '
2143 write (iout,'(a3,6x,2f10.5)') (restyp(i,1),sigma0(i),rr0(i),&
2147 !---------------------- GB or BP potential -----------------------------
2151 read (isidep,*,end=117,err=117)(eps(i,j),j=i,ntyp)
2153 read (isidep,*,end=117,err=117)(sigma0(i),i=1,ntyp)
2154 read (isidep,*,end=117,err=117)(sigii(i),i=1,ntyp)
2155 read (isidep,*,end=117,err=117)(chip(i),i=1,ntyp)
2156 read (isidep,*,end=117,err=117)(alp(i),i=1,ntyp)
2158 read (isidep,*,end=117,err=117)(epslip(i,j),j=i,ntyp)
2161 ! For the GB potential convert sigma'**2 into chi'
2164 chip(i)=(chip(i)-1.0D0)/(chip(i)+1.0D0)
2168 write (iout,'(/a/)') 'Parameters of the BP potential:'
2169 write (iout,'(a/)') 'The epsilon array:'
2170 call printmat(ntyp,ntyp,ntyp,iout,restyp,eps)
2171 write (iout,'(/a)') 'One-body parameters:'
2172 write (iout,'(a,4x,4a)') 'residue',' sigma ','s||/s_|_^2',&
2174 write (iout,'(a3,6x,4f10.5)') (restyp(i,1),sigma0(i),sigii(i),&
2175 chip(i),alp(i),i=1,ntyp)
2178 !--------------------- GBV potential -----------------------------------
2180 ! 40 read (isidep,*,end=117,err=117)((eps(i,j),j=i,ntyp),i=1,ntyp),&
2181 read (isidep,*,end=117,err=117)((eps(i,j),j=i,ntyp),i=1,ntyp),&
2182 (sigma0(i),i=1,ntyp),(rr0(i),i=1,ntyp),(sigii(i),i=1,ntyp),&
2183 (chip(i),i=1,ntyp),(alp(i),i=1,ntyp)
2185 write (iout,'(/a/)') 'Parameters of the GBV potential:'
2186 write (iout,'(a/)') 'The epsilon array:'
2187 call printmat(ntyp,ntyp,ntyp,iout,restyp,eps)
2188 write (iout,'(/a)') 'One-body parameters:'
2189 write (iout,'(a,4x,5a)') 'residue',' sigma ',' r0 ',&
2190 's||/s_|_^2',' chip ',' alph '
2191 write (iout,'(a3,6x,5f10.5)') (restyp(i,1),sigma0(i),rr0(i),&
2192 sigii(i),chip(i),alp(i),i=1,ntyp)
2195 write(iout,*)"Wrong ipot"
2201 !-----------------------------------------------------------------------
2202 ! Calculate the "working" parameters of SC interactions.
2204 !el from module energy - COMMON.INTERACT-------
2205 allocate(aa_aq(ntyp1,ntyp1),bb_aq(ntyp1,ntyp1),chi(ntyp1,ntyp1)) !(ntyp,ntyp)
2206 allocate(aa_lip(ntyp1,ntyp1),bb_lip(ntyp1,ntyp1)) !(ntyp,ntyp)
2207 allocate(sigma(0:ntyp1,0:ntyp1),r0(ntyp1,ntyp1)) !(0:ntyp1,0:ntyp1)
2208 allocate(acavtub(ntyp1),bcavtub(ntyp1),ccavtub(ntyp1),&
2210 allocate(sc_aa_tube_par(ntyp1),sc_bb_tube_par(ntyp1),&
2223 sc_aa_tube_par(:)=0.0d0
2224 sc_bb_tube_par(:)=0.0d0
2226 !--------------------------------
2231 epslip(i,j)=epslip(j,i)
2236 sigma(i,j)=dsqrt(sigma0(i)**2+sigma0(j)**2)
2237 sigma(j,i)=sigma(i,j)
2238 rs0(i,j)=dwa16*sigma(i,j)
2242 if (lprint) write (iout,'(/a/10x,7a/72(1h-))') &
2243 'Working parameters of the SC interactions:',&
2244 ' a ',' b ',' augm ',' sigma ',' r0 ',&
2249 if (ipot.eq.1 .or. ipot.eq.3 .or. ipot.eq.4) then
2258 sigeps=dsign(1.0D0,epsij)
2260 aa_aq(i,j)=epsij*rrij*rrij
2261 bb_aq(i,j)=-sigeps*epsij*rrij
2262 aa_aq(j,i)=aa_aq(i,j)
2263 bb_aq(j,i)=bb_aq(i,j)
2264 epsijlip=epslip(i,j)
2265 sigeps=dsign(1.0D0,epsijlip)
2266 epsijlip=dabs(epsijlip)
2267 aa_lip(i,j)=epsijlip*rrij*rrij
2268 bb_lip(i,j)=-sigeps*epsijlip*rrij
2269 aa_lip(j,i)=aa_lip(i,j)
2270 bb_lip(j,i)=bb_lip(i,j)
2271 !C write(iout,*) aa_lip
2273 sigt1sq=sigma0(i)**2
2274 sigt2sq=sigma0(j)**2
2277 ratsig1=sigt2sq/sigt1sq
2278 ratsig2=1.0D0/ratsig1
2279 chi(i,j)=(sigii1-1.0D0)/(sigii1+ratsig1)
2280 if (j.gt.i) chi(j,i)=(sigii2-1.0D0)/(sigii2+ratsig2)
2281 rsum_max=dsqrt(sigii1*sigt1sq+sigii2*sigt2sq)
2285 ! if (ipot.eq.1 .or. ipot.eq.3 .or. ipot.eq.4) then
2286 sigmaii(i,j)=rsum_max
2287 sigmaii(j,i)=rsum_max
2289 ! sigmaii(i,j)=r0(i,j)
2290 ! sigmaii(j,i)=r0(i,j)
2292 !d write (iout,*) i,j,r0(i,j),sigma(i,j),rsum_max
2293 if ((ipot.eq.2 .or. ipot.eq.5) .and. r0(i,j).gt.rsum_max) then
2294 r_augm=sigma(i,j)*(rrij-sigma(i,j))/rrij
2295 augm(i,j)=epsij*r_augm**(2*expon)
2296 ! augm(i,j)=0.5D0**(2*expon)*aa(i,j)
2303 write (iout,'(2(a3,2x),3(1pe10.3),5(0pf8.3))') &
2304 restyp(i,1),restyp(j,1),aa_aq(i,j),bb_aq(i,j),augm(i,j),&
2305 sigma(i,j),r0(i,j),chi(i,j),chi(j,i)
2310 allocate(eps_nucl(ntyp_molec(2),ntyp_molec(2)))
2311 allocate(sigma_nucl(ntyp_molec(2),ntyp_molec(2))) !(ntyp_molec(2),ntyp_molec(2))
2312 allocate(elpp6_nucl(ntyp_molec(2),ntyp_molec(2))) !(ntyp_molec(2),ntyp_molec(2))
2313 allocate(elpp3_nucl(ntyp_molec(2),ntyp_molec(2))) !(ntyp,2)
2314 allocate(elpp63_nucl(ntyp_molec(2),ntyp_molec(2))) !(ntyp_molec(2),ntyp_molec(2))
2315 allocate(elpp32_nucl(ntyp_molec(2),ntyp_molec(2))) !(ntyp,2)
2316 allocate(chi_nucl(ntyp_molec(2),ntyp_molec(2)),chip_nucl(ntyp_molec(2),ntyp_molec(2))) !(ntyp_molec(2),ntyp_molec(2))
2317 allocate(ael3_nucl(ntyp_molec(2),ntyp_molec(2))) !(ntyp,2)
2318 allocate(ael6_nucl(ntyp_molec(2),ntyp_molec(2))) !(ntyp,2)
2319 allocate(ael32_nucl(ntyp_molec(2),ntyp_molec(2))) !(ntyp,2)
2320 allocate(ael63_nucl(ntyp_molec(2),ntyp_molec(2))) !(ntyp,2)
2321 allocate(aa_nucl(ntyp_molec(2),ntyp_molec(2))) !(ntyp,2)
2322 allocate(bb_nucl(ntyp_molec(2),ntyp_molec(2))) !(ntyp,2)
2323 allocate(r0_nucl(ntyp_molec(2),ntyp_molec(2))) !(ntyp,2)
2324 allocate(sigmaii_nucl(ntyp_molec(2),ntyp_molec(2))) !(ntyp_molec(2),ntyp_molec(2))
2325 allocate(eps_scp_nucl(ntyp_molec(2)),rscp_nucl(ntyp_molec(2))) !(ntyp,2)
2334 read (isidep_nucl,*) ipot_nucl
2335 ! print *,"TU?!",ipot_nucl
2336 if (ipot_nucl.eq.1) then
2337 do i=1,ntyp_molec(2)
2338 do j=i,ntyp_molec(2)
2339 read (isidep_nucl,*) eps_nucl(i,j),sigma_nucl(i,j),elpp6_nucl(i,j),&
2340 elpp3_nucl(i,j), elpp63_nucl(i,j),elpp32_nucl(i,j)
2344 do i=1,ntyp_molec(2)
2345 do j=i,ntyp_molec(2)
2346 read (isidep_nucl,*) eps_nucl(i,j),sigma_nucl(i,j),chi_nucl(i,j),&
2347 chi_nucl(j,i),chip_nucl(i,j),chip_nucl(j,i),&
2348 elpp6_nucl(i,j),elpp3_nucl(i,j),elpp63_nucl(i,j),elpp32_nucl(i,j)
2352 ! rpp(1,1)=2**(1.0/6.0)*5.16158
2353 do i=1,ntyp_molec(2)
2354 do j=i,ntyp_molec(2)
2355 rrij=sigma_nucl(i,j)
2359 epsij=4*eps_nucl(i,j)
2360 sigeps=dsign(1.0D0,epsij)
2362 aa_nucl(i,j)=epsij*rrij*rrij
2363 bb_nucl(i,j)=-sigeps*epsij*rrij
2364 ael3_nucl(i,j)=elpp3_nucl(i,j)*dsqrt(rrij)
2365 ael6_nucl(i,j)=elpp6_nucl(i,j)*rrij
2366 ael63_nucl(i,j)=elpp63_nucl(i,j)*rrij
2367 ael32_nucl(i,j)=elpp32_nucl(i,j)*rrij
2368 sigmaii_nucl(i,j)=sigma_nucl(i,j)/sqrt(1-(chi_nucl(i,j)+chi_nucl(j,i)- &
2369 2*chi_nucl(i,j)*chi_nucl(j,i))/(1-chi_nucl(i,j)*chi_nucl(j,i)))
2372 aa_nucl(i,j)=aa_nucl(j,i)
2373 bb_nucl(i,j)=bb_nucl(j,i)
2374 ael3_nucl(i,j)=ael3_nucl(j,i)
2375 ael6_nucl(i,j)=ael6_nucl(j,i)
2376 ael63_nucl(i,j)=ael63_nucl(j,i)
2377 ael32_nucl(i,j)=ael32_nucl(j,i)
2378 elpp3_nucl(i,j)=elpp3_nucl(j,i)
2379 elpp6_nucl(i,j)=elpp6_nucl(j,i)
2380 elpp63_nucl(i,j)=elpp63_nucl(j,i)
2381 elpp32_nucl(i,j)=elpp32_nucl(j,i)
2382 eps_nucl(i,j)=eps_nucl(j,i)
2383 sigma_nucl(i,j)=sigma_nucl(j,i)
2384 sigmaii_nucl(i,j)=sigmaii_nucl(j,i)
2388 write(iout,*) "tube param"
2389 read(itube,*) epspeptube,sigmapeptube,acavtubpep,bcavtubpep, &
2390 ccavtubpep,dcavtubpep,tubetranenepep
2391 sigmapeptube=sigmapeptube**6
2392 sigeps=dsign(1.0D0,epspeptube)
2393 epspeptube=dabs(epspeptube)
2394 pep_aa_tube=4.0d0*epspeptube*sigmapeptube**2
2395 pep_bb_tube=-sigeps*4.0d0*epspeptube*sigmapeptube
2396 write(iout,*) pep_aa_tube,pep_bb_tube,tubetranenepep
2398 read(itube,*) epssctube,sigmasctube,acavtub(i),bcavtub(i), &
2399 ccavtub(i),dcavtub(i),tubetranene(i)
2400 sigmasctube=sigmasctube**6
2401 sigeps=dsign(1.0D0,epssctube)
2402 epssctube=dabs(epssctube)
2403 sc_aa_tube_par(i)=4.0d0*epssctube*sigmasctube**2
2404 sc_bb_tube_par(i)=-sigeps*4.0d0*epssctube*sigmasctube
2405 write(iout,*) sc_aa_tube_par(i), sc_bb_tube_par(i),tubetranene(i)
2407 !-----------------READING SC BASE POTENTIALS-----------------------------
2408 allocate(eps_scbase(ntyp_molec(1),ntyp_molec(2)))
2409 allocate(sigma_scbase(ntyp_molec(1),ntyp_molec(2)))
2410 allocate(chi_scbase(ntyp_molec(1),ntyp_molec(2),2))
2411 allocate(chipp_scbase(ntyp_molec(1),ntyp_molec(2),2))
2412 allocate(alphasur_scbase(4,ntyp_molec(1),ntyp_molec(2)))
2413 allocate(sigmap1_scbase(ntyp_molec(1),ntyp_molec(2)))
2414 allocate(sigmap2_scbase(ntyp_molec(1),ntyp_molec(2)))
2415 allocate(chis_scbase(ntyp_molec(1),ntyp_molec(2),2))
2416 allocate(dhead_scbasei(ntyp_molec(1),ntyp_molec(2)))
2417 allocate(dhead_scbasej(ntyp_molec(1),ntyp_molec(2)))
2418 allocate(rborn_scbasei(ntyp_molec(1),ntyp_molec(2)))
2419 allocate(rborn_scbasej(ntyp_molec(1),ntyp_molec(2)))
2420 allocate(wdipdip_scbase(3,ntyp_molec(1),ntyp_molec(2)))
2421 allocate(wqdip_scbase(2,ntyp_molec(1),ntyp_molec(2)))
2422 allocate(alphapol_scbase(ntyp_molec(1),ntyp_molec(2)))
2423 allocate(epsintab_scbase(ntyp_molec(1),ntyp_molec(2)))
2426 do i=1,ntyp_molec(1)
2427 do j=1,ntyp_molec(2)-1 ! without U then we will take T for U
2428 write (*,*) "Im in ", i, " ", j
2429 read(isidep_scbase,*) &
2430 eps_scbase(i,j),sigma_scbase(i,j),chi_scbase(i,j,1),&
2431 chi_scbase(i,j,2),chipp_scbase(i,j,1),chipp_scbase(i,j,2)
2432 write(*,*) "eps",eps_scbase(i,j)
2433 read(isidep_scbase,*) &
2434 (alphasur_scbase(k,i,j),k=1,4),sigmap1_scbase(i,j),sigmap2_scbase(i,j), &
2435 chis_scbase(i,j,1),chis_scbase(i,j,2)
2436 read(isidep_scbase,*) &
2437 dhead_scbasei(i,j), &
2438 dhead_scbasej(i,j), &
2439 rborn_scbasei(i,j),rborn_scbasej(i,j)
2440 read(isidep_scbase,*) &
2441 (wdipdip_scbase(k,i,j),k=1,3), &
2442 (wqdip_scbase(k,i,j),k=1,2)
2443 read(isidep_scbase,*) &
2444 alphapol_scbase(i,j), &
2445 epsintab_scbase(i,j)
2448 allocate(aa_scbase(ntyp_molec(1),ntyp_molec(2)))
2449 allocate(bb_scbase(ntyp_molec(1),ntyp_molec(2)))
2451 do i=1,ntyp_molec(1)
2452 do j=1,ntyp_molec(2)-1
2453 epsij=eps_scbase(i,j)
2454 rrij=sigma_scbase(i,j)
2459 sigeps=dsign(1.0D0,epsij)
2461 aa_scbase(i,j)=epsij*rrij*rrij
2462 bb_scbase(i,j)=-sigeps*epsij*rrij
2465 !-----------------READING PEP BASE POTENTIALS-------------------
2466 allocate(eps_pepbase(ntyp_molec(2)))
2467 allocate(sigma_pepbase(ntyp_molec(2)))
2468 allocate(chi_pepbase(ntyp_molec(2),2))
2469 allocate(chipp_pepbase(ntyp_molec(2),2))
2470 allocate(alphasur_pepbase(4,ntyp_molec(2)))
2471 allocate(sigmap1_pepbase(ntyp_molec(2)))
2472 allocate(sigmap2_pepbase(ntyp_molec(2)))
2473 allocate(chis_pepbase(ntyp_molec(2),2))
2474 allocate(wdipdip_pepbase(3,ntyp_molec(2)))
2477 do j=1,ntyp_molec(2)-1 ! without U then we will take T for U
2478 write (*,*) "Im in ", i, " ", j
2479 read(isidep_pepbase,*) &
2480 eps_pepbase(j),sigma_pepbase(j),chi_pepbase(j,1),&
2481 chi_pepbase(j,2),chipp_pepbase(j,1),chipp_pepbase(j,2)
2482 write(*,*) "eps",eps_pepbase(j)
2483 read(isidep_pepbase,*) &
2484 (alphasur_pepbase(k,j),k=1,4),sigmap1_pepbase(j),sigmap2_pepbase(j), &
2485 chis_pepbase(j,1),chis_pepbase(j,2)
2486 read(isidep_pepbase,*) &
2487 (wdipdip_pepbase(k,j),k=1,3)
2489 allocate(aa_pepbase(ntyp_molec(2)))
2490 allocate(bb_pepbase(ntyp_molec(2)))
2492 do j=1,ntyp_molec(2)-1
2493 epsij=eps_pepbase(j)
2494 rrij=sigma_pepbase(j)
2499 sigeps=dsign(1.0D0,epsij)
2501 aa_pepbase(j)=epsij*rrij*rrij
2502 bb_pepbase(j)=-sigeps*epsij*rrij
2504 !--------------READING SC PHOSPHATE-------------------------------------
2505 allocate(eps_scpho(ntyp_molec(1)))
2506 allocate(sigma_scpho(ntyp_molec(1)))
2507 allocate(chi_scpho(ntyp_molec(1),2))
2508 allocate(chipp_scpho(ntyp_molec(1),2))
2509 allocate(alphasur_scpho(4,ntyp_molec(1)))
2510 allocate(sigmap1_scpho(ntyp_molec(1)))
2511 allocate(sigmap2_scpho(ntyp_molec(1)))
2512 allocate(chis_scpho(ntyp_molec(1),2))
2513 allocate(wqq_scpho(ntyp_molec(1)))
2514 allocate(wqdip_scpho(2,ntyp_molec(1)))
2515 allocate(alphapol_scpho(ntyp_molec(1)))
2516 allocate(epsintab_scpho(ntyp_molec(1)))
2517 allocate(dhead_scphoi(ntyp_molec(1)))
2518 allocate(rborn_scphoi(ntyp_molec(1)))
2519 allocate(rborn_scphoj(ntyp_molec(1)))
2522 do j=1,ntyp_molec(1) ! without U then we will take T for U
2523 write (*,*) "Im in scpho ", i, " ", j
2524 read(isidep_scpho,*) &
2525 eps_scpho(j),sigma_scpho(j),chi_scpho(j,1),&
2526 chi_scpho(j,2),chipp_scpho(j,1),chipp_scpho(j,2)
2527 write(*,*) "eps",eps_scpho(j)
2528 read(isidep_scpho,*) &
2529 (alphasur_scpho(k,j),k=1,4),sigmap1_scpho(j),sigmap2_scpho(j), &
2530 chis_scpho(j,1),chis_scpho(j,2)
2531 read(isidep_scpho,*) &
2532 (wqdip_scpho(k,j),k=1,2),wqq_scpho(j),dhead_scphoi(j)
2533 read(isidep_scpho,*) &
2534 epsintab_scpho(j),alphapol_scpho(j),rborn_scphoi(j),rborn_scphoj(j)
2537 allocate(aa_scpho(ntyp_molec(1)))
2538 allocate(bb_scpho(ntyp_molec(1)))
2540 do j=1,ntyp_molec(1)
2547 sigeps=dsign(1.0D0,epsij)
2549 aa_scpho(j)=epsij*rrij*rrij
2550 bb_scpho(j)=-sigeps*epsij*rrij
2554 read(isidep_peppho,*) &
2555 eps_peppho,sigma_peppho
2556 read(isidep_peppho,*) &
2557 (alphasur_peppho(k),k=1,4),sigmap1_peppho,sigmap2_peppho
2558 read(isidep_peppho,*) &
2559 (wqdip_peppho(k),k=1,2)
2567 sigeps=dsign(1.0D0,epsij)
2569 aa_peppho=epsij*rrij*rrij
2570 bb_peppho=-sigeps*epsij*rrij
2573 allocate(aad(ntyp,2),bad(ntyp,2)) !(ntyp,2)
2578 ! Define the SC-p interaction constants (hard-coded; old style)
2581 ! "Soft" SC-p repulsion (causes helices to be too flat, but facilitates
2583 ! aad(i,1)=0.3D0*4.0D0**12
2584 ! Following line for constants currently implemented
2585 ! "Hard" SC-p repulsion (gives correct turn spacing in helices)
2586 aad(i,1)=1.5D0*4.0D0**12
2587 ! aad(i,1)=0.17D0*5.6D0**12
2589 ! "Soft" SC-p repulsion
2591 ! Following line for constants currently implemented
2592 ! aad(i,1)=0.3D0*4.0D0**6
2593 ! "Hard" SC-p repulsion
2594 bad(i,1)=3.0D0*4.0D0**6
2595 ! bad(i,1)=-2.0D0*0.17D0*5.6D0**6
2604 ! 8/9/01 Read the SC-p interaction constants from file
2607 read (iscpp,*,end=118,err=118) (eps_scp(i,j),rscp(i,j),j=1,2)
2610 aad(i,1)=dabs(eps_scp(i,1))*rscp(i,1)**12
2611 aad(i,2)=dabs(eps_scp(i,2))*rscp(i,2)**12
2612 bad(i,1)=-2*eps_scp(i,1)*rscp(i,1)**6
2613 bad(i,2)=-2*eps_scp(i,2)*rscp(i,2)**6
2617 write (iout,*) "Parameters of SC-p interactions:"
2619 write (iout,'(4f8.3,4e12.4)') eps_scp(i,1),rscp(i,1),&
2620 eps_scp(i,2),rscp(i,2),aad(i,1),bad(i,1),aad(i,2),bad(i,2)
2625 allocate(aad_nucl(ntyp_molec(2)),bad_nucl(ntyp_molec(2))) !(ntyp,2)
2627 do i=1,ntyp_molec(2)
2628 read (iscpp_nucl,*,end=118,err=118) eps_scp_nucl(i),rscp_nucl(i)
2630 do i=1,ntyp_molec(2)
2631 aad_nucl(i)=dabs(eps_scp_nucl(i))*rscp_nucl(i)**12
2632 bad_nucl(i)=-2*eps_scp_nucl(i)*rscp_nucl(i)**6
2634 r0pp=1.12246204830937298142*5.16158
2640 ! Define the constants of the disulfide bridge
2644 ! Old arbitrary potential - commented out.
2649 ! Constants of the disulfide-bond potential determined based on the RHF/6-31G**
2650 ! energy surface of diethyl disulfide.
2651 ! A. Liwo and U. Kozlowska, 11/24/03
2668 write (iout,'(/a)') "Disulfide bridge parameters:"
2669 write (iout,'(a,f10.2)') 'S-S bridge energy: ',ebr
2670 write (iout,'(2(a,f10.2))') 'd0cm:',d0cm,' akcm:',akcm
2671 write (iout,'(2(a,f10.2))') 'akth:',akth,' akct:',akct
2672 write (iout,'(3(a,f10.2))') 'v1ss:',v1ss,' v2ss:',v2ss,&
2676 111 write (iout,*) "Error reading bending energy parameters."
2678 112 write (iout,*) "Error reading rotamer energy parameters."
2680 113 write (iout,*) "Error reading torsional energy parameters."
2682 114 write (iout,*) "Error reading double torsional energy parameters."
2684 115 write (iout,*) &
2685 "Error reading cumulant (multibody energy) parameters."
2687 116 write (iout,*) "Error reading electrostatic energy parameters."
2689 117 write (iout,*) "Error reading side chain interaction parameters."
2691 118 write (iout,*) "Error reading SCp interaction parameters."
2693 119 write (iout,*) "Error reading SCCOR parameters"
2696 call MPI_Finalize(Ierror)
2700 end subroutine parmread
2702 !-----------------------------------------------------------------------------
2704 !-----------------------------------------------------------------------------
2705 subroutine printmat(ldim,m,n,iout,key,a)
2708 character(len=3),dimension(n) :: key
2709 real(kind=8),dimension(ldim,n) :: a
2711 integer :: i,j,k,m,iout,nlim
2715 write (iout,1000) (key(k),k=i,nlim)
2717 1000 format (/5x,8(6x,a3))
2718 1020 format (/80(1h-)/)
2720 write (iout,1010) key(j),(a(j,k),k=i,nlim)
2723 1010 format (a3,2x,8(f9.4))
2725 end subroutine printmat
2726 !-----------------------------------------------------------------------------
2728 !-----------------------------------------------------------------------------
2730 ! Read the PDB file and convert the peptide geometry into virtual-chain
2733 use energy_data, only: itype,istype
2737 use control, only: rescode,sugarcode
2738 ! implicit real*8 (a-h,o-z)
2739 ! include 'DIMENSIONS'
2740 ! include 'COMMON.LOCAL'
2741 ! include 'COMMON.VAR'
2742 ! include 'COMMON.CHAIN'
2743 ! include 'COMMON.INTERACT'
2744 ! include 'COMMON.IOUNITS'
2745 ! include 'COMMON.GEO'
2746 ! include 'COMMON.NAMES'
2747 ! include 'COMMON.CONTROL'
2748 ! include 'COMMON.DISTFIT'
2749 ! include 'COMMON.SETUP'
2750 integer :: i,j,ibeg,ishift1,ires,iii,ires_old,ishift,k!,ity!,&
2752 logical :: lprn=.true.,fail
2753 real(kind=8),dimension(3) :: e1,e2,e3
2754 real(kind=8) :: dcj,efree_temp
2755 character(len=3) :: seq,res
2756 character(len=5) :: atom
2757 character(len=80) :: card
2758 real(kind=8),dimension(3,20) :: sccor
2759 integer :: kkk,lll,icha,kupa,molecule,counter,seqalingbegin !rescode,
2760 integer :: isugar,molecprev,firstion
2761 character*1 :: sugar
2763 real(kind=8),dimension(3) :: ccc
2765 integer,dimension(2,maxres/3) :: hfrag_alloc
2766 integer,dimension(4,maxres/3) :: bfrag_alloc
2767 real(kind=8),dimension(3,maxres2+2,maxperm) :: cref_alloc !(3,maxres2+2,maxperm)
2768 real(kind=8),dimension(:,:), allocatable :: c_temporary
2769 integer,dimension(:,:) , allocatable :: itype_temporary
2770 integer,dimension(:),allocatable :: istype_temp
2777 ! write (2,*) "UNRES_PDB",unres_pdb
2785 !-----------------------------
2786 allocate(hfrag(2,maxres/3)) !(2,maxres/3)
2787 allocate(bfrag(4,maxres/3)) !(4,maxres/3)
2790 read (ipdbin,'(a80)',end=10) card
2791 ! write (iout,'(a)') card
2792 if (card(:5).eq.'HELIX') then
2795 read(card(22:25),*) hfrag(1,nhfrag)
2796 read(card(34:37),*) hfrag(2,nhfrag)
2798 if (card(:5).eq.'SHEET') then
2801 read(card(24:26),*) bfrag(1,nbfrag)
2802 read(card(35:37),*) bfrag(2,nbfrag)
2803 !rc----------------------------------------
2804 !rc to be corrected !!!
2805 bfrag(3,nbfrag)=bfrag(1,nbfrag)
2806 bfrag(4,nbfrag)=bfrag(2,nbfrag)
2807 !rc----------------------------------------
2809 if (card(:3).eq.'END') then
2811 else if (card(:3).eq.'TER') then
2816 itype(ires_old,molecule)=ntyp1_molec(molecule)
2817 itype(ires_old-1,molecule)=ntyp1_molec(molecule)
2818 nres_molec(molecule)=nres_molec(molecule)+2
2820 ! write (iout,*) "Chain ended",ires,ishift,ires_old
2823 dc(j,ires)=sccor(j,iii)
2826 call sccenter(ires,iii,sccor)
2832 if (index(card,"FREE ENERGY").gt.0) read(card(35:),*) efree_temp
2833 ! Fish out the ATOM cards.
2834 ! write(iout,*) 'card',card(1:20)
2835 if (index(card(1:4),'ATOM').gt.0) then
2836 read (card(12:16),*) atom
2837 ! write (iout,*) "! ",atom," !",ires
2838 ! if (atom.eq.'CA' .or. atom.eq.'CH3') then
2839 read (card(23:26),*) ires
2840 read (card(18:20),'(a3)') res
2841 ! write (iout,*) "ires",ires,ires-ishift+ishift1,
2842 ! & " ires_old",ires_old
2843 ! write (iout,*) "ishift",ishift," ishift1",ishift1
2844 ! write (iout,*) "IRES",ires-ishift+ishift1,ires_old
2845 if (ires-ishift+ishift1.ne.ires_old) then
2846 ! Calculate the CM of the preceding residue.
2847 ! if (ibeg.eq.0) call sccenter(ires,iii,sccor)
2849 ! write (iout,*) "Calculating sidechain center iii",iii
2852 dc(j,ires+ishift1-ishift-1)=sccor(j,iii)
2855 call sccenter(ires_old,iii,sccor)
2859 ! Start new residue.
2860 if (res.eq.'Cl-' .or. res.eq.'Na+') then
2863 else if (ibeg.eq.1) then
2864 write (iout,*) "BEG ires",ires
2866 if (res.ne.'GLY' .and. res.ne. 'ACE') then
2869 nres_molec(molecule)=nres_molec(molecule)+1
2871 ires=ires-ishift+ishift1
2873 ! write (iout,*) "ishift",ishift," ires",ires,&
2874 ! " ires_old",ires_old
2876 else if (ibeg.eq.2) then
2878 ishift=-ires_old+ires-1 !!!!!
2879 ishift1=ishift1-1 !!!!!
2880 ! write (iout,*) "New chain started",ires,ishift,ishift1,"!"
2881 ires=ires-ishift+ishift1
2882 ! print *,ires,ishift,ishift1
2886 ishift=ishift-(ires-ishift+ishift1-ires_old-1)
2887 ires=ires-ishift+ishift1
2890 ! print *,'atom',ires,atom
2891 if (res.eq.'ACE' .or. res.eq.'NHE') then
2894 if (atom.eq.'CA '.or.atom.eq.'N ') then
2896 itype(ires,molecule)=rescode(ires,res,0,molecule)
2898 ! nres_molec(molecule)=nres_molec(molecule)+1
2901 itype(ires,molecule)=rescode(ires,res(2:4),0,molecule)
2902 ! nres_molec(molecule)=nres_molec(molecule)+1
2903 read (card(19:19),'(a1)') sugar
2904 isugar=sugarcode(sugar,ires)
2905 ! if (ibeg.eq.1) then
2909 ! print *,"ires=",ires,istype(ires)
2915 ires=ires-ishift+ishift1
2917 ! write (iout,*) "ires_old",ires_old," ires",ires
2918 if (card(27:27).eq."A" .or. card(27:27).eq."B") then
2921 ! write (2,*) "ires",ires," res ",res!," ity"!,ity
2922 if (atom.eq.'CA' .or. atom.eq.'CH3' .or. &
2923 res.eq.'NHE'.and.atom(:2).eq.'HN') then
2924 read(card(31:54),'(3f8.3)') (c(j,ires),j=1,3)
2925 ! print *,ires,ishift,ishift1
2926 ! write (iout,*) "backbone ",atom
2928 write (iout,'(2i3,2x,a,3f8.3)') &
2929 ires,itype(ires,1),res,(c(j,ires),j=1,3)
2932 nres_molec(molecule)=nres_molec(molecule)+1
2934 sccor(j,iii)=c(j,ires)
2936 else if (.not.unres_pdb .and. (atom.eq."C1'" .or. &
2937 atom.eq."C2'" .or. atom.eq."C3'" &
2938 .or. atom.eq."C4'" .or. atom.eq."O4'")) then
2939 read(card(31:54),'(3f8.3)') (ccc(j),j=1,3)
2940 !c write (2,'(i5,3f10.5)') ires,(ccc(j),j=1,3)
2941 ! print *,ires,ishift,ishift1
2945 ! sccor(j,iii)=c(j,ires)
2948 c(j,ires)=c(j,ires)+ccc(j)/5.0
2950 print *,counter,molecule
2951 if (counter.eq.5) then
2953 nres_molec(molecule)=nres_molec(molecule)+1
2956 ! sccor(j,iii)=c(j,ires)
2960 ! print *, "ATOM",atom(1:3)
2961 else if (atom.eq."C5'") then
2962 read (card(19:19),'(a1)') sugar
2963 isugar=sugarcode(sugar,ires)
2968 ! print *,ires,istype(ires)
2972 ! print *,"nres_molec(molecule)",nres_molec(molecule),ires
2973 read(card(31:54),'(3f8.3)') (c(j,ires),j=1,3)
2974 nres_molec(molecule)=nres_molec(molecule)+1
2975 print *,"nres_molec(molecule)",nres_molec(molecule),ires
2979 read(card(31:54),'(3f8.3)') (sccor(j,iii),j=1,3)
2981 else if ((atom.eq."C1'").and.unres_pdb) then
2983 read(card(31:54),'(3f8.3)') (sccor(j,iii),j=1,3)
2984 ! write (*,*) card(23:27),ires,itype(ires,1)
2985 else if (atom.ne.'O'.and.atom(1:1).ne.'H' .and. &
2986 atom.ne.'N' .and. atom.ne.'C' .and. &
2987 atom(:2).ne.'1H' .and. atom(:2).ne.'2H' .and. &
2988 atom.ne.'OXT' .and. atom(:2).ne.'3H' &
2989 .and. atom.ne.'P '.and. &
2990 atom(1:1).ne.'H' .and. &
2991 atom.ne.'OP1' .and. atom.ne.'OP2 '.and. atom.ne.'OP3'&
2993 ! write (iout,*) "sidechain ",atom
2994 ! write (iout,*) "sidechain ",atom,molecule,ires,atom(3:3)
2995 if ((molecule.ne.2).or.(atom(3:3).ne."'")) then
2996 ! write (iout,*) "sidechain ",atom,molecule,ires,atom(3:3)
2998 read(card(31:54),'(3f8.3)') (sccor(j,iii),j=1,3)
3001 else if ((ions).and.(card(1:6).eq.'HETATM')) then
3002 if (firstion.eq.0) then
3006 dc(j,ires)=sccor(j,iii)
3009 call sccenter(ires,iii,sccor)
3012 read (card(12:16),*) atom
3013 print *,"HETATOM", atom
3014 read (card(18:20),'(a3)') res
3015 if ((atom(1:2).eq.'NA').or.(atom(1:2).eq.'CL').or.&
3016 (atom(1:2).eq.'CA').or.(atom(1:2).eq.'MG') &
3017 .or.(atom(1:2).eq.'K ')) &
3020 if (molecule.ne.5) molecprev=molecule
3022 nres_molec(molecule)=nres_molec(molecule)+1
3023 print *,"HERE",nres_molec(molecule)
3024 itype(ires,molecule)=rescode(ires,res(2:4),0,molecule)
3025 read(card(31:54),'(3f8.3)') (c(j,ires),j=1,3)
3029 10 write (iout,'(a,i5)') ' Number of residues found: ',ires
3030 if (ires.eq.0) return
3031 ! Calculate dummy residue coordinates inside the "chain" of a multichain
3034 if (((ires_old.ne.ires).and.(molecule.ne.5)) &
3035 .and.(.not.unres_pdb)) &
3036 nres_molec(molecule)=nres_molec(molecule)-2
3037 print *,'I have',nres, nres_molec(:)
3039 do k=1,4 ! ions are without dummy
3040 if (nres_molec(k).eq.0) cycle
3042 ! write (iout,*) i,itype(i,1)
3043 ! if (itype(i,1).eq.ntyp1) then
3044 ! write (iout,*) "dummy",i,itype(i,1)
3046 ! c(j,i)=((c(j,i-1)+c(j,i+1))/2+2*c(j,i-1)-c(j,i-2))/2
3047 ! c(j,i)=(c(j,i-1)+c(j,i+1))/2
3051 if (itype(i,k).eq.ntyp1_molec(k)) then
3052 if (itype(i+1,k).eq.ntyp1_molec(k)) then
3053 if (itype(i+2,k).eq.0) then
3054 ! print *,"masz sieczke"
3056 if (itype(i+2,j).ne.0) then
3058 itype(i+1,j)=ntyp1_molec(j)
3059 nres_molec(k)=nres_molec(k)-1
3060 nres_molec(j)=nres_molec(j)+1
3066 ! 16/01/2014 by Adasko: Adding to dummy atoms in the chain
3067 ! first is connected prevous chain (itype(i+1,1).eq.ntyp1)=true
3068 ! second dummy atom is conected to next chain itype(i+1,1).eq.ntyp1=false
3069 ! if (unres_pdb) then
3070 ! 2/15/2013 by Adam: corrected insertion of the last dummy residue
3071 ! print *,i,'tu dochodze'
3072 ! call refsys(i-3,i-2,i-1,e1,e2,e3,fail)
3080 ! c(j,i)=c(j,i-1)-1.9d0*e2(j)
3084 dcj=(c(j,i-2)-c(j,i-3))/2.0
3085 if (dcj.eq.0) dcj=1.23591524223
3090 else !itype(i+1,1).eq.ntyp1
3091 ! if (unres_pdb) then
3092 ! 2/15/2013 by Adam: corrected insertion of the first dummy residue
3093 ! call refsys(i+1,i+2,i+3,e1,e2,e3,fail)
3100 c(j,i)=c(j,i+1)-1.9d0*e2(j)
3104 dcj=(c(j,i+3)-c(j,i+2))/2.0
3105 if (dcj.eq.0) dcj=1.23591524223
3110 endif !itype(i+1,1).eq.ntyp1
3111 endif !itype.eq.ntyp1
3115 ! Calculate the CM of the last side chain.
3119 dc(j,ires)=sccor(j,iii)
3122 call sccenter(ires,iii,sccor)
3128 ! print *,"molecule",molecule
3129 if ((itype(nres,1).ne.10)) then
3131 if (molecule.eq.5) molecule=molecprev
3132 itype(nres,molecule)=ntyp1_molec(molecule)
3133 nres_molec(molecule)=nres_molec(molecule)+1
3134 ! if (unres_pdb) then
3135 ! 2/15/2013 by Adam: corrected insertion of the last dummy residue
3136 ! call refsys(nres-3,nres-2,nres-1,e1,e2,e3,fail)
3143 ! c(j,nres)=c(j,nres-1)-1.9d0*e2(j)
3147 dcj=(c(j,nres-2)-c(j,nres-3))/2.0
3148 c(j,nres)=c(j,nres-1)+dcj
3149 c(j,2*nres)=c(j,nres)
3153 ! print *,'I have',nres, nres_molec(:)
3155 !el kontrola nres w pliku inputowym WHAM-a w porownaniu z wartoscia wczytana z pliku pdb
3157 if (nres.ne.nres0) then
3158 write (iout,*) "Error: wrong parameter value: NRES=",nres,&
3160 stop "Error nres value in WHAM input"
3163 !---------------------------------
3164 !el reallocate tables
3167 ! hfrag_alloc(j,i)=hfrag(j,i)
3170 ! bfrag_alloc(j,i)=bfrag(j,i)
3176 ! allocate(hfrag(2,nres/3)) !(2,maxres/3)
3177 !el allocate(hfrag(2,nhfrag)) !(2,maxres/3)
3178 !el allocate(bfrag(4,nbfrag)) !(4,maxres/3)
3179 ! allocate(bfrag(4,nres/3)) !(4,maxres/3)
3183 ! hfrag(j,i)=hfrag_alloc(j,i)
3188 ! bfrag(j,i)=bfrag_alloc(j,i)
3191 !el end reallocate tables
3192 !---------------------------------
3200 c(j,2*nres)=c(j,nres)
3203 if (itype(1,1).eq.ntyp1) then
3207 ! 2/15/2013 by Adam: corrected insertion of the first dummy residue
3208 call refsys(2,3,4,e1,e2,e3,fail)
3215 c(j,1)=c(j,2)-1.9d0*e2(j)
3219 dcj=(c(j,4)-c(j,3))/2.0
3225 ! First lets assign correct dummy to correct type of chain
3227 if (itype(1,1).eq.ntyp1) then
3228 if (itype(2,1).eq.0) then
3230 if (itype(2,j).ne.0) then
3232 itype(1,j)=ntyp1_molec(j)
3233 nres_molec(1)=nres_molec(1)-1
3234 nres_molec(j)=nres_molec(j)+1
3241 print *,'I have',nres, nres_molec(:)
3243 ! Copy the coordinates to reference coordinates
3249 ! Calculate internal coordinates.
3251 write (iout,'(/a)') &
3252 "Cartesian coordinates of the reference structure"
3253 write (iout,'(a,3(3x,a5),5x,3(3x,a5))') &
3254 "Residue","X(CA)","Y(CA)","Z(CA)","X(SC)","Y(SC)","Z(SC)"
3256 write (iout,'(5(a3,1x),i3,3f8.3,5x,3f8.3)') &
3257 (restyp(itype(ires,j),j),j=1,5),ires,(c(j,ires),j=1,3),&
3258 (c(j,ires+nres),j=1,3)
3261 ! znamy już nres wiec mozna alokowac tablice
3262 ! Calculate internal coordinates.
3263 if(me.eq.king.or..not.out1file)then
3264 write (iout,'(a)') &
3265 "Backbone and SC coordinates as read from the PDB"
3267 write (iout,'(2i3,2x,a,3f8.3,5x,3f8.3)') &
3268 ires,itype(ires,1),restyp(itype(ires,1),1),(c(j,ires),j=1,3),&
3269 (c(j,nres+ires),j=1,3)
3272 ! NOW LETS ROCK! SORTING
3273 allocate(c_temporary(3,2*nres))
3274 allocate(itype_temporary(nres,5))
3275 allocate(molnum(nres+1))
3276 allocate(istype_temp(nres))
3277 itype_temporary(:,:)=0
3281 if (itype(i,k).ne.0) then
3283 c_temporary(j,seqalingbegin)=c(j,i)
3284 c_temporary(j,seqalingbegin+nres)=c(j,i+nres)
3287 itype_temporary(seqalingbegin,k)=itype(i,k)
3288 print *,i,k,itype(i,k),itype_temporary(seqalingbegin,k),seqalingbegin
3289 istype_temp(seqalingbegin)=istype(i)
3290 molnum(seqalingbegin)=k
3291 seqalingbegin=seqalingbegin+1
3297 c(j,i)=c_temporary(j,i)
3302 itype(i,k)=itype_temporary(i,k)
3303 istype(i)=istype_temp(i)
3306 if (itype(1,1).eq.ntyp1) then
3310 ! 2/15/2013 by Adam: corrected insertion of the first dummy residue
3311 call refsys(2,3,4,e1,e2,e3,fail)
3318 c(j,1)=c(j,2)-1.9d0*e2(j)
3322 dcj=(c(j,4)-c(j,3))/2.0
3330 write (iout,'(/a)') &
3331 "Cartesian coordinates of the reference structure after sorting"
3332 write (iout,'(a,3(3x,a5),5x,3(3x,a5))') &
3333 "Residue","X(CA)","Y(CA)","Z(CA)","X(SC)","Y(SC)","Z(SC)"
3335 write (iout,'(5(a3,1x),i3,3f8.3,5x,3f8.3)') &
3336 (restyp(itype(ires,j),j),j=1,5),ires,(c(j,ires),j=1,3),&
3337 (c(j,ires+nres),j=1,3)
3341 ! print *,seqalingbegin,nres
3342 if(.not.allocated(vbld)) then
3343 allocate(vbld(2*nres))
3348 if(.not.allocated(vbld_inv)) then
3349 allocate(vbld_inv(2*nres))
3355 if(.not.allocated(theta)) then
3356 allocate(theta(nres+2))
3360 if(.not.allocated(phi)) allocate(phi(nres+2))
3361 if(.not.allocated(alph)) allocate(alph(nres+2))
3362 if(.not.allocated(omeg)) allocate(omeg(nres+2))
3363 if(.not.allocated(thetaref)) allocate(thetaref(nres+2))
3364 if(.not.allocated(phiref)) allocate(phiref(nres+2))
3365 if(.not.allocated(costtab)) allocate(costtab(nres))
3366 if(.not.allocated(sinttab)) allocate(sinttab(nres))
3367 if(.not.allocated(cost2tab)) allocate(cost2tab(nres))
3368 if(.not.allocated(sint2tab)) allocate(sint2tab(nres))
3369 if(.not.allocated(xxref)) allocate(xxref(nres))
3370 if(.not.allocated(yyref)) allocate(yyref(nres))
3371 if(.not.allocated(zzref)) allocate(zzref(nres)) !(maxres)
3372 if(.not.allocated(dc_norm)) then
3373 ! if(.not.allocated(dc_norm)) allocate(dc_norm(3,0:2*nres+2))
3374 allocate(dc_norm(3,0:2*nres+2))
3378 call int_from_cart(.true.,.false.)
3379 call sc_loc_geom(.false.)
3381 thetaref(i)=theta(i)
3391 dc(j,i)=c(j,i+1)-c(j,i)
3392 dc_norm(j,i)=dc(j,i)*vbld_inv(i+1)
3397 dc(j,i+nres)=c(j,i+nres)-c(j,i)
3398 dc_norm(j,i+nres)=dc(j,i+nres)*vbld_inv(i+nres)
3400 ! write (iout,*) i,(dc(j,i+nres),j=1,3),(dc_norm(j,i+nres),j=1,3),&
3404 ! Copy the coordinates to reference coordinates
3405 ! Splits to single chain if occurs
3409 ! cref(j,i,cou)=c(j,i)
3413 if(.not.allocated(cref)) allocate(cref(3,2*nres+2,maxperm)) !(3,maxres2+2,maxperm)
3414 if(.not.allocated(chain_rep)) allocate(chain_rep(3,2*nres+2,maxsym)) !(3,maxres2+2,maxsym)
3415 if(.not.allocated(tabperm)) allocate(tabperm(maxperm,maxsym)) !(maxperm,maxsym)
3416 !-----------------------------
3420 write (iout,*) "symetr", symetr
3423 !c write (iout,*) "spraw lancuchy",(c(j,i),j=1,3)
3425 if ((itype(i-1,1).eq.ntyp1).and.(i.gt.2)) then
3428 ! write (iout,*) "spraw lancuchy",(c(j,i),j=1,3)
3433 cref(j,i,cou)=c(j,i)
3434 cref(j,i+nres,cou)=c(j,i+nres)
3436 chain_rep(j,lll,kkk)=c(j,i)
3437 chain_rep(j,lll+nres,kkk)=c(j,i+nres)
3441 write (iout,*) chain_length
3442 if (chain_length.eq.0) chain_length=nres
3444 chain_rep(j,chain_length,symetr)=chain_rep(j,chain_length,1)
3445 chain_rep(j,chain_length+nres,symetr) &
3446 =chain_rep(j,chain_length+nres,1)
3449 ! write (iout,*) "spraw lancuchy",chain_length,symetr
3451 ! do kkk=1,chain_length
3452 ! write (iout,*) itype(kkk),(chain_rep(j,kkk,i), j=1,3)
3456 ! makes copy of chains
3457 write (iout,*) "symetr", symetr
3462 if (symetr.gt.1) then
3469 write(iout,*) (tabperm(i,kkk),kkk=1,4)
3475 ! write (iout,*) i,icha
3476 do lll=1,chain_length
3478 if (cou.le.nres) then
3480 kupa=mod(lll,chain_length)
3481 iprzes=(kkk-1)*chain_length+lll
3482 if (kupa.eq.0) kupa=chain_length
3483 ! write (iout,*) "kupa", kupa
3484 cref(j,iprzes,i)=chain_rep(j,kupa,icha)
3485 cref(j,iprzes+nres,i)=chain_rep(j,kupa+nres,icha)
3492 !-koniec robienia kopii
3495 write (iout,*) "nowa struktura", nperm
3497 write (iout,110) restyp(itype(i,1),1),i,cref(1,i,kkk),&
3499 cref(3,i,kkk),cref(1,nres+i,kkk),&
3500 cref(2,nres+i,kkk),cref(3,nres+i,kkk)
3502 100 format (//' alpha-carbon coordinates ',&
3503 ' centroid coordinates'/ &
3504 ' ', 6X,'X',11X,'Y',11X,'Z', &
3505 10X,'X',11X,'Y',11X,'Z')
3506 110 format (a,'(',i3,')',6f12.5)
3512 bfrag(i,j)=bfrag(i,j)-ishift
3518 hfrag(i,j)=hfrag(i,j)-ishift
3524 end subroutine readpdb
3525 #if .not. defined(WHAM_RUN) && .not. defined(CLUSTER)
3526 !-----------------------------------------------------------------------------
3528 !-----------------------------------------------------------------------------
3529 subroutine read_control
3543 use random, only: random_init
3544 ! implicit real*8 (a-h,o-z)
3545 ! include 'DIMENSIONS'
3547 use prng, only:prng_restart
3549 logical :: OKRandom!, prng_restart
3552 ! include 'COMMON.IOUNITS'
3553 ! include 'COMMON.TIME1'
3554 ! include 'COMMON.THREAD'
3555 ! include 'COMMON.SBRIDGE'
3556 ! include 'COMMON.CONTROL'
3557 ! include 'COMMON.MCM'
3558 ! include 'COMMON.MAP'
3559 ! include 'COMMON.HEADER'
3560 ! include 'COMMON.CSA'
3561 ! include 'COMMON.CHAIN'
3562 ! include 'COMMON.MUCA'
3563 ! include 'COMMON.MD'
3564 ! include 'COMMON.FFIELD'
3565 ! include 'COMMON.INTERACT'
3566 ! include 'COMMON.SETUP'
3567 !el integer :: KDIAG,ICORFL,IXDR
3568 !el COMMON /MACHSW/ KDIAG,ICORFL,IXDR
3569 character(len=8),dimension(0:3) :: diagmeth = reshape((/'Library ',&
3570 'EVVRSP ','Givens ','Jacobi '/),shape(diagmeth))
3571 ! character(len=80) :: ucase
3572 character(len=640) :: controlcard
3574 real(kind=8) :: seed,rmsdbc,rmsdbc1max,rmsdbcm,drms,timem!,&
3580 read (INP,'(a)') titel
3581 call card_concat(controlcard,.true.)
3582 ! out1file=index(controlcard,'OUT1FILE').gt.0 .or. fg_rank.gt.0
3583 ! print *,"Processor",me," fg_rank",fg_rank," out1file",out1file
3584 call reada(controlcard,'SEED',seed,0.0D0)
3585 call random_init(seed)
3586 ! Set up the time limit (caution! The time must be input in minutes!)
3587 read_cart=index(controlcard,'READ_CART').gt.0
3588 call readi(controlcard,'CONSTR_DIST',constr_dist,0)
3589 call readi(controlcard,'SYM',symetr,1)
3590 call reada(controlcard,'TIMLIM',timlim,960.0D0) ! default 16 hours
3591 unres_pdb = index(controlcard,'UNRES_PDB') .gt. 0
3592 call reada(controlcard,'SAFETY',safety,30.0D0) ! default 30 minutes
3593 call reada(controlcard,'RMSDBC',rmsdbc,3.0D0)
3594 call reada(controlcard,'RMSDBC1',rmsdbc1,0.5D0)
3595 call reada(controlcard,'RMSDBC1MAX',rmsdbc1max,1.5D0)
3596 call reada(controlcard,'RMSDBCM',rmsdbcm,3.0D0)
3597 call reada(controlcard,'DRMS',drms,0.1D0)
3598 if(me.eq.king .or. .not. out1file .and. fg_rank.eq.0) then
3599 write (iout,'(a,f10.1)')'RMSDBC = ',rmsdbc
3600 write (iout,'(a,f10.1)')'RMSDBC1 = ',rmsdbc1
3601 write (iout,'(a,f10.1)')'RMSDBC1MAX = ',rmsdbc1max
3602 write (iout,'(a,f10.1)')'DRMS = ',drms
3603 write (iout,'(a,f10.1)')'RMSDBCM = ',rmsdbcm
3604 write (iout,'(a,f10.1)') 'Time limit (min):',timlim
3606 call readi(controlcard,'NZ_START',nz_start,0)
3607 call readi(controlcard,'NZ_END',nz_end,0)
3608 call readi(controlcard,'IZ_SC',iz_sc,0)
3609 timlim=60.0D0*timlim
3610 safety = 60.0d0*safety
3613 call reada(controlcard,"T_BATH",t_bath,300.0d0)
3614 !C SHIELD keyword sets if the shielding effect of side-chains is used
3615 !C 0 denots no shielding is used all peptide are equally despite the
3616 !C solvent accesible area
3617 !C 1 the newly introduced function
3618 !C 2 reseved for further possible developement
3619 call readi(controlcard,'SHIELD',shield_mode,0)
3620 !C if(me.eq.king .or. .not. out1file .and. fg_rank.eq.0) then
3621 write(iout,*) "shield_mode",shield_mode
3622 !C Varibles set size of box
3623 with_theta_constr = index(controlcard,"WITH_THETA_CONSTR").gt.0
3624 protein=index(controlcard,"PROTEIN").gt.0
3625 ions=index(controlcard,"IONS").gt.0
3626 nucleic=index(controlcard,"NUCLEIC").gt.0
3627 write (iout,*) "with_theta_constr ",with_theta_constr
3628 AFMlog=(index(controlcard,'AFM'))
3629 selfguide=(index(controlcard,'SELFGUIDE'))
3630 print *,'AFMlog',AFMlog,selfguide,"KUPA"
3631 call readi(controlcard,'GENCONSTR',genconstr,0)
3632 call reada(controlcard,'BOXX',boxxsize,100.0d0)
3633 call reada(controlcard,'BOXY',boxysize,100.0d0)
3634 call reada(controlcard,'BOXZ',boxzsize,100.0d0)
3635 call readi(controlcard,'TUBEMOD',tubemode,0)
3636 write (iout,*) TUBEmode,"TUBEMODE"
3637 if (TUBEmode.gt.0) then
3638 call reada(controlcard,"XTUBE",tubecenter(1),0.0d0)
3639 call reada(controlcard,"YTUBE",tubecenter(2),0.0d0)
3640 call reada(controlcard,"ZTUBE",tubecenter(3),0.0d0)
3641 call reada(controlcard,"RTUBE",tubeR0,0.0d0)
3642 call reada(controlcard,"TUBETOP",bordtubetop,boxzsize)
3643 call reada(controlcard,"TUBEBOT",bordtubebot,0.0d0)
3644 call reada(controlcard,"TUBEBUF",tubebufthick,1.0d0)
3645 buftubebot=bordtubebot+tubebufthick
3646 buftubetop=bordtubetop-tubebufthick
3649 ! CUTOFFF ON ELECTROSTATICS
3650 call reada(controlcard,"R_CUT_ELE",r_cut_ele,15.0d0)
3651 call reada(controlcard,"LAMBDA_ELE",rlamb_ele,0.3d0)
3652 write(iout,*) "R_CUT_ELE=",r_cut_ele
3653 ! Lipidic parameters
3654 call reada(controlcard,"LIPTHICK",lipthick,0.0d0)
3655 call reada(controlcard,"LIPAQBUF",lipbufthick,0.0d0)
3656 if (lipthick.gt.0.0d0) then
3657 bordliptop=(boxzsize+lipthick)/2.0
3658 bordlipbot=bordliptop-lipthick
3659 if ((bordliptop.gt.boxzsize).or.(bordlipbot.lt.0.0)) &
3660 write(iout,*) "WARNING WRONG SIZE OF LIPIDIC PHASE"
3661 buflipbot=bordlipbot+lipbufthick
3662 bufliptop=bordliptop-lipbufthick
3663 if ((lipbufthick*2.0d0).gt.lipthick) &
3664 write(iout,*) "WARNING WRONG SIZE OF LIP AQ BUF"
3665 endif !lipthick.gt.0
3666 write(iout,*) "bordliptop=",bordliptop
3667 write(iout,*) "bordlipbot=",bordlipbot
3668 write(iout,*) "bufliptop=",bufliptop
3669 write(iout,*) "buflipbot=",buflipbot
3670 write (iout,*) "SHIELD MODE",shield_mode
3672 !C-------------------------
3673 minim=(index(controlcard,'MINIMIZE').gt.0)
3674 dccart=(index(controlcard,'CART').gt.0)
3675 overlapsc=(index(controlcard,'OVERLAP').gt.0)
3676 overlapsc=.not.overlapsc
3677 searchsc=(index(controlcard,'NOSEARCHSC').gt.0)
3678 searchsc=.not.searchsc
3679 sideadd=(index(controlcard,'SIDEADD').gt.0)
3680 energy_dec=(index(controlcard,'ENERGY_DEC').gt.0)
3681 outpdb=(index(controlcard,'PDBOUT').gt.0)
3682 outmol2=(index(controlcard,'MOL2OUT').gt.0)
3683 pdbref=(index(controlcard,'PDBREF').gt.0)
3684 refstr=pdbref .or. (index(controlcard,'REFSTR').gt.0)
3685 indpdb=index(controlcard,'PDBSTART')
3686 extconf=(index(controlcard,'EXTCONF').gt.0)
3687 call readi(controlcard,'IPRINT',iprint,0)
3688 call readi(controlcard,'MAXGEN',maxgen,10000)
3689 call readi(controlcard,'MAXOVERLAP',maxoverlap,1000)
3690 call readi(controlcard,"KDIAG",kdiag,0)
3691 call readi(controlcard,"RESCALE_MODE",rescale_mode,2)
3692 if(me.eq.king .or. .not. out1file .and. fg_rank.eq.0) &
3693 write (iout,*) "RESCALE_MODE",rescale_mode
3694 split_ene=index(controlcard,'SPLIT_ENE').gt.0
3695 if (index(controlcard,'REGULAR').gt.0.0D0) then
3696 call reada(controlcard,'WEIDIS',weidis,0.1D0)
3700 if (index(controlcard,'CHECKGRAD').gt.0) then
3702 if (index(controlcard,'CART').gt.0) then
3704 elseif (index(controlcard,'CARINT').gt.0) then
3709 elseif (index(controlcard,'THREAD').gt.0) then
3711 call readi(controlcard,'THREAD',nthread,0)
3712 if (nthread.gt.0) then
3713 call reada(controlcard,'WEIDIS',weidis,0.1D0)
3716 write (iout,'(a)')'A number has to follow the THREAD keyword.'
3717 stop 'Error termination in Read_Control.'
3719 else if (index(controlcard,'MCMA').gt.0) then
3721 else if (index(controlcard,'MCEE').gt.0) then
3723 else if (index(controlcard,'MULTCONF').gt.0) then
3725 else if (index(controlcard,'MAP').gt.0) then
3727 call readi(controlcard,'MAP',nmap,0)
3728 else if (index(controlcard,'CSA').gt.0) then
3730 !rc else if (index(controlcard,'ZSCORE').gt.0) then
3732 !rc ZSCORE is rm from UNRES, modecalc=9 is available
3735 !fcm else if (index(controlcard,'MCMF').gt.0) then
3737 else if (index(controlcard,'SOFTREG').gt.0) then
3739 else if (index(controlcard,'CHECK_BOND').gt.0) then
3741 else if (index(controlcard,'TEST').gt.0) then
3743 else if (index(controlcard,'MD').gt.0) then
3745 else if (index(controlcard,'RE ').gt.0) then
3749 lmuca=index(controlcard,'MUCA').gt.0
3750 call readi(controlcard,'MUCADYN',mucadyn,0)
3751 call readi(controlcard,'MUCASMOOTH',muca_smooth,0)
3752 if (lmuca .and. (me.eq.king .or. .not.out1file )) &
3754 write (iout,*) 'MUCADYN=',mucadyn
3755 write (iout,*) 'MUCASMOOTH=',muca_smooth
3758 iscode=index(controlcard,'ONE_LETTER')
3759 indphi=index(controlcard,'PHI')
3760 indback=index(controlcard,'BACK')
3761 iranconf=index(controlcard,'RAND_CONF')
3762 i2ndstr=index(controlcard,'USE_SEC_PRED')
3763 gradout=index(controlcard,'GRADOUT').gt.0
3764 gnorm_check=index(controlcard,'GNORM_CHECK').gt.0
3765 call reada(controlcard,'DISTCHAINMAX',distchainmax,5.0d0)
3766 if (me.eq.king .or. .not.out1file ) &
3767 write (iout,*) "DISTCHAINMAX",distchainmax
3769 if(me.eq.king.or..not.out1file) &
3770 write (iout,'(2a)') diagmeth(kdiag),&
3771 ' routine used to diagonalize matrices.'
3772 if (shield_mode.gt.0) then
3774 !C VSolvSphere the volume of solving sphere
3776 !C rpp(1,1) is the energy r0 for peptide group contact and will be used for it
3777 !C there will be no distinction between proline peptide group and normal peptide
3778 !C group in case of shielding parameters
3779 VSolvSphere=4.0/3.0*pi*rpp(1,1)**3
3780 VSolvSphere_div=VSolvSphere-4.0/3.0*pi*(rpp(1,1)/2.0)**3
3781 write (iout,*) VSolvSphere,VSolvSphere_div
3782 !C long axis of side chain
3784 long_r_sidechain(i)=vbldsc0(1,i)
3785 short_r_sidechain(i)=sigma0(i)
3786 write(iout,*) "parame for long and short axis",i,vbldsc0(1,i),&
3792 end subroutine read_control
3793 !-----------------------------------------------------------------------------
3794 subroutine read_REMDpar
3796 ! Read REMD settings
3803 use control_data, only:out1file
3804 ! implicit real*8 (a-h,o-z)
3805 ! include 'DIMENSIONS'
3806 ! include 'COMMON.IOUNITS'
3807 ! include 'COMMON.TIME1'
3808 ! include 'COMMON.MD'
3811 !el include 'COMMON.LANGEVIN'
3813 !el include 'COMMON.LANGEVIN.lang0'
3815 ! include 'COMMON.INTERACT'
3816 ! include 'COMMON.NAMES'
3817 ! include 'COMMON.GEO'
3818 ! include 'COMMON.REMD'
3819 ! include 'COMMON.CONTROL'
3820 ! include 'COMMON.SETUP'
3821 ! character(len=80) :: ucase
3822 character(len=320) :: controlcard
3823 character(len=3200) :: controlcard1
3824 integer :: iremd_m_total
3827 ! real(kind=8) :: var,ene
3829 if(me.eq.king.or..not.out1file) &
3830 write (iout,*) "REMD setup"
3832 call card_concat(controlcard,.true.)
3833 call readi(controlcard,"NREP",nrep,3)
3834 call readi(controlcard,"NSTEX",nstex,1000)
3835 call reada(controlcard,"RETMIN",retmin,10.0d0)
3836 call reada(controlcard,"RETMAX",retmax,1000.0d0)
3837 mremdsync=(index(controlcard,'SYNC').gt.0)
3838 call readi(controlcard,"NSYN",i_sync_step,100)
3839 restart1file=(index(controlcard,'REST1FILE').gt.0)
3840 traj1file=(index(controlcard,'TRAJ1FILE').gt.0)
3841 call readi(controlcard,"TRAJCACHE",max_cache_traj_use,1)
3842 if(max_cache_traj_use.gt.max_cache_traj) &
3843 max_cache_traj_use=max_cache_traj
3844 if(me.eq.king.or..not.out1file) then
3845 !d if (traj1file) then
3846 !rc caching is in testing - NTWX is not ignored
3847 !d write (iout,*) "NTWX value is ignored"
3848 !d write (iout,*) " trajectory is stored to one file by master"
3849 !d write (iout,*) " before exchange at NSTEX intervals"
3851 write (iout,*) "NREP= ",nrep
3852 write (iout,*) "NSTEX= ",nstex
3853 write (iout,*) "SYNC= ",mremdsync
3854 write (iout,*) "NSYN= ",i_sync_step
3855 write (iout,*) "TRAJCACHE= ",max_cache_traj_use
3858 allocate(remd_t(nrep),remd_m(nrep)) !(maxprocs)
3859 if (index(controlcard,'TLIST').gt.0) then
3861 call card_concat(controlcard1,.true.)
3862 read(controlcard1,*) (remd_t(i),i=1,nrep)
3863 if(me.eq.king.or..not.out1file) &
3864 write (iout,*)'tlist',(remd_t(i),i=1,nrep)
3867 if (index(controlcard,'MLIST').gt.0) then
3869 call card_concat(controlcard1,.true.)
3870 read(controlcard1,*) (remd_m(i),i=1,nrep)
3871 if(me.eq.king.or..not.out1file) then
3872 write (iout,*)'mlist',(remd_m(i),i=1,nrep)
3875 iremd_m_total=iremd_m_total+remd_m(i)
3877 write (iout,*) 'Total number of replicas ',iremd_m_total
3880 if(me.eq.king.or..not.out1file) &
3881 write (iout,'(/30(1h=),a,29(1h=)/)') " End of REMD run setup "
3883 end subroutine read_REMDpar
3884 !-----------------------------------------------------------------------------
3885 subroutine read_MDpar
3889 use control_data, only: r_cut,rlamb,out1file
3891 use geometry_data, only: pi
3893 ! implicit real*8 (a-h,o-z)
3894 ! include 'DIMENSIONS'
3895 ! include 'COMMON.IOUNITS'
3896 ! include 'COMMON.TIME1'
3897 ! include 'COMMON.MD'
3900 !el include 'COMMON.LANGEVIN'
3902 !el include 'COMMON.LANGEVIN.lang0'
3904 ! include 'COMMON.INTERACT'
3905 ! include 'COMMON.NAMES'
3906 ! include 'COMMON.GEO'
3907 ! include 'COMMON.SETUP'
3908 ! include 'COMMON.CONTROL'
3909 ! include 'COMMON.SPLITELE'
3910 ! character(len=80) :: ucase
3911 character(len=320) :: controlcard
3916 call card_concat(controlcard,.true.)
3917 call readi(controlcard,"NSTEP",n_timestep,1000000)
3918 call readi(controlcard,"NTWE",ntwe,100)
3919 call readi(controlcard,"NTWX",ntwx,1000)
3920 call reada(controlcard,"DT",d_time,1.0d-1)
3921 call reada(controlcard,"DVMAX",dvmax,2.0d1)
3922 call reada(controlcard,"DAMAX",damax,1.0d1)
3923 call reada(controlcard,"EDRIFTMAX",edriftmax,1.0d+1)
3924 call readi(controlcard,"LANG",lang,0)
3925 RESPA = index(controlcard,"RESPA") .gt. 0
3926 call readi(controlcard,"NTIME_SPLIT",ntime_split,1)
3927 ntime_split0=ntime_split
3928 call readi(controlcard,"MAXTIME_SPLIT",maxtime_split,64)
3929 ntime_split0=ntime_split
3930 call reada(controlcard,"R_CUT",r_cut,2.0d0)
3931 call reada(controlcard,"LAMBDA",rlamb,0.3d0)
3932 rest = index(controlcard,"REST").gt.0
3933 tbf = index(controlcard,"TBF").gt.0
3934 usampl = index(controlcard,"USAMPL").gt.0
3935 mdpdb = index(controlcard,"MDPDB").gt.0
3936 call reada(controlcard,"T_BATH",t_bath,300.0d0)
3937 call reada(controlcard,"TAU_BATH",tau_bath,1.0d-1)
3938 call reada(controlcard,"EQ_TIME",eq_time,1.0d+4)
3939 call readi(controlcard,"RESET_MOMENT",count_reset_moment,1000)
3940 if (count_reset_moment.eq.0) count_reset_moment=1000000000
3941 call readi(controlcard,"RESET_VEL",count_reset_vel,1000)
3942 reset_moment=lang.eq.0 .and. tbf .and. count_reset_moment.gt.0
3943 reset_vel=lang.eq.0 .and. tbf .and. count_reset_vel.gt.0
3944 if (count_reset_vel.eq.0) count_reset_vel=1000000000
3945 large = index(controlcard,"LARGE").gt.0
3946 print_compon = index(controlcard,"PRINT_COMPON").gt.0
3947 rattle = index(controlcard,"RATTLE").gt.0
3948 ! if performing umbrella sampling, fragments constrained are read from the fragment file
3954 if(me.eq.king.or..not.out1file) then
3956 write (iout,'(27(1h=),a26,27(1h=))') " Parameters of the MD run "
3958 write (iout,'(a)') "The units are:"
3959 write (iout,'(a)') "positions: angstrom, time: 48.9 fs"
3960 write (iout,'(2a)') "velocity: angstrom/(48.9 fs),",&
3961 " acceleration: angstrom/(48.9 fs)**2"
3962 write (iout,'(a)') "energy: kcal/mol, temperature: K"
3964 write (iout,'(a60,i10)') "Number of time steps:",n_timestep
3965 write (iout,'(a60,f10.5,a)') &
3966 "Initial time step of numerical integration:",d_time,&
3968 write (iout,'(60x,f10.5,a)') d_time*48.9," fs"
3970 write (iout,'(2a,i4,a)') &
3971 "A-MTS algorithm used; initial time step for fast-varying",&
3972 " short-range forces split into",ntime_split," steps."
3973 write (iout,'(a,f5.2,a,f5.2)') "Short-range force cutoff",&
3974 r_cut," lambda",rlamb
3976 write (iout,'(2a,f10.5)') &
3977 "Maximum acceleration threshold to reduce the time step",&
3978 "/increase split number:",damax
3979 write (iout,'(2a,f10.5)') &
3980 "Maximum predicted energy drift to reduce the timestep",&
3981 "/increase split number:",edriftmax
3982 write (iout,'(a60,f10.5)') &
3983 "Maximum velocity threshold to reduce velocities:",dvmax
3984 write (iout,'(a60,i10)') "Frequency of property output:",ntwe
3985 write (iout,'(a60,i10)') "Frequency of coordinate output:",ntwx
3986 if (rattle) write (iout,'(a60)') &
3987 "Rattle algorithm used to constrain the virtual bonds"
3991 call reada(controlcard,"ETAWAT",etawat,0.8904d0)
3992 call reada(controlcard,"RWAT",rwat,1.4d0)
3993 call reada(controlcard,"SCAL_FRIC",scal_fric,2.0d-2)
3994 surfarea=index(controlcard,"SURFAREA").gt.0
3995 call readi(controlcard,"RESET_FRICMAT",reset_fricmat,1000)
3996 if(me.eq.king.or..not.out1file)then
3997 write (iout,'(/a,$)') "Langevin dynamics calculation"
3999 write (iout,'(a/)') &
4000 " with direct integration of Langevin equations"
4001 else if (lang.eq.2) then
4002 write (iout,'(a/)') " with TINKER stochasic MD integrator"
4003 else if (lang.eq.3) then
4004 write (iout,'(a/)') " with Ciccotti's stochasic MD integrator"
4005 else if (lang.eq.4) then
4006 write (iout,'(a/)') " in overdamped mode"
4008 write (iout,'(//a,i5)') &
4009 "=========== ERROR: Unknown Langevin dynamics mode:",lang
4012 write (iout,'(a60,f10.5)') "Temperature:",t_bath
4013 write (iout,'(a60,f10.5)') "Viscosity of the solvent:",etawat
4014 write (iout,'(a60,f10.5)') "Radius of solvent molecule:",rwat
4015 write (iout,'(a60,f10.5)') &
4016 "Scaling factor of the friction forces:",scal_fric
4017 if (surfarea) write (iout,'(2a,i10,a)') &
4018 "Friction coefficients will be scaled by solvent-accessible",&
4019 " surface area every",reset_fricmat," steps."
4021 ! Calculate friction coefficients and bounds of stochastic forces
4022 eta=6*pi*cPoise*etawat
4023 if(me.eq.king.or..not.out1file) &
4024 write(iout,'(a60,f10.5)')"Eta of the solvent in natural units:",&
4027 do j=1,5 !types of molecules
4028 gamp(j)=scal_fric*(pstok(j)+rwat)*eta
4029 stdfp(j)=dsqrt(2*Rb*t_bath/d_time)
4031 allocate(gamsc(ntyp1,5),stdfsc(ntyp1,5)) !(ntyp1)
4032 do j=1,5 !types of molecules
4034 gamsc(i,j)=scal_fric*(restok(i,j)+rwat)*eta
4035 stdfsc(i,j)=dsqrt(2*Rb*t_bath/d_time)
4039 if(me.eq.king.or..not.out1file)then
4040 write (iout,'(/2a/)') &
4041 "Radii of site types and friction coefficients and std's of",&
4042 " stochastic forces of fully exposed sites"
4043 write (iout,'(a5,f5.2,2f10.5)')'p',pstok,gamp(1),stdfp*dsqrt(gamp(1))
4045 write (iout,'(a5,f5.2,2f10.5)') restyp(i,1),restok(i,1),&
4046 gamsc(i,1),stdfsc(i,1)*dsqrt(gamsc(i,1))
4050 if(me.eq.king.or..not.out1file)then
4051 write (iout,'(a)') "Berendsen bath calculation"
4052 write (iout,'(a60,f10.5)') "Temperature:",t_bath
4053 write (iout,'(a60,f10.5)') "Coupling constant (tau):",tau_bath
4055 write (iout,'(a,i10,a)') "Momenta will be reset at zero every",&
4056 count_reset_moment," steps"
4058 write (iout,'(a,i10,a)') &
4059 "Velocities will be reset at random every",count_reset_vel,&
4063 if(me.eq.king.or..not.out1file) &
4064 write (iout,'(a31)') "Microcanonical mode calculation"
4066 if(me.eq.king.or..not.out1file)then
4067 if (rest) write (iout,'(/a/)') "===== Calculation restarted ===="
4069 write(iout,*) "MD running with constraints."
4070 write(iout,*) "Equilibration time ", eq_time, " mtus."
4071 write(iout,*) "Constraining ", nfrag," fragments."
4072 write(iout,*) "Length of each fragment, weight and q0:"
4074 write (iout,*) "Set of restraints #",iset
4076 write(iout,'(2i5,f8.1,f7.4)') ifrag(1,i,iset),&
4077 ifrag(2,i,iset),wfrag(i,iset),qinfrag(i,iset)
4079 write(iout,*) "constraints between ", npair, "fragments."
4080 write(iout,*) "constraint pairs, weights and q0:"
4082 write(iout,'(2i5,f8.1,f7.4)') ipair(1,i,iset),&
4083 ipair(2,i,iset),wpair(i,iset),qinpair(i,iset)
4085 write(iout,*) "angle constraints within ", nfrag_back,&
4086 "backbone fragments."
4087 write(iout,*) "fragment, weights:"
4089 write(iout,'(2i5,3f8.1)') ifrag_back(1,i,iset),&
4090 ifrag_back(2,i,iset),wfrag_back(1,i,iset),&
4091 wfrag_back(2,i,iset),wfrag_back(3,i,iset)
4094 iset=mod(kolor,nset)+1
4097 if(me.eq.king.or..not.out1file) &
4098 write (iout,'(/30(1h=),a,29(1h=)/)') " End of MD run setup "
4100 end subroutine read_MDpar
4101 !-----------------------------------------------------------------------------
4105 ! implicit real*8 (a-h,o-z)
4106 ! include 'DIMENSIONS'
4107 ! include 'COMMON.MAP'
4108 ! include 'COMMON.IOUNITS'
4109 character(len=3) :: angid(4) = (/'THE','PHI','ALP','OME'/)
4110 character(len=80) :: mapcard !,ucase
4113 ! real(kind=8) :: var,ene
4116 read (inp,'(a)') mapcard
4117 mapcard=ucase(mapcard)
4118 if (index(mapcard,'PHI').gt.0) then
4120 else if (index(mapcard,'THE').gt.0) then
4122 else if (index(mapcard,'ALP').gt.0) then
4124 else if (index(mapcard,'OME').gt.0) then
4127 write(iout,'(a)')'Error - illegal variable spec in MAP card.'
4128 stop 'Error - illegal variable spec in MAP card.'
4130 call readi (mapcard,'RES1',res1(imap),0)
4131 call readi (mapcard,'RES2',res2(imap),0)
4132 if (res1(imap).eq.0) then
4133 res1(imap)=res2(imap)
4134 else if (res2(imap).eq.0) then
4135 res2(imap)=res1(imap)
4137 if(res1(imap)*res2(imap).eq.0 .or. res1(imap).gt.res2(imap))then
4138 write (iout,'(a)') &
4139 'Error - illegal definition of variable group in MAP.'
4140 stop 'Error - illegal definition of variable group in MAP.'
4142 call reada(mapcard,'FROM',ang_from(imap),0.0D0)
4143 call reada(mapcard,'TO',ang_to(imap),0.0D0)
4144 call readi(mapcard,'NSTEP',nstep(imap),0)
4145 if (ang_from(imap).eq.ang_to(imap) .or. nstep(imap).eq.0) then
4146 write (iout,'(a)') &
4147 'Illegal boundary and/or step size specification in MAP.'
4148 stop 'Illegal boundary and/or step size specification in MAP.'
4152 end subroutine map_read
4153 !-----------------------------------------------------------------------------
4156 use control_data, only: vdisulf
4158 ! implicit real*8 (a-h,o-z)
4159 ! include 'DIMENSIONS'
4160 ! include 'COMMON.IOUNITS'
4161 ! include 'COMMON.GEO'
4162 ! include 'COMMON.CSA'
4163 ! include 'COMMON.BANK'
4164 ! include 'COMMON.CONTROL'
4165 ! character(len=80) :: ucase
4166 character(len=620) :: mcmcard
4168 ! integer :: ntf,ik,iw_pdb
4169 ! real(kind=8) :: var,ene
4171 call card_concat(mcmcard,.true.)
4173 call readi(mcmcard,'NCONF',nconf,50)
4174 call readi(mcmcard,'NADD',nadd,0)
4175 call readi(mcmcard,'JSTART',jstart,1)
4176 call readi(mcmcard,'JEND',jend,1)
4177 call readi(mcmcard,'NSTMAX',nstmax,500000)
4178 call readi(mcmcard,'N0',n0,1)
4179 call readi(mcmcard,'N1',n1,6)
4180 call readi(mcmcard,'N2',n2,4)
4181 call readi(mcmcard,'N3',n3,0)
4182 call readi(mcmcard,'N4',n4,0)
4183 call readi(mcmcard,'N5',n5,0)
4184 call readi(mcmcard,'N6',n6,10)
4185 call readi(mcmcard,'N7',n7,0)
4186 call readi(mcmcard,'N8',n8,0)
4187 call readi(mcmcard,'N9',n9,0)
4188 call readi(mcmcard,'N14',n14,0)
4189 call readi(mcmcard,'N15',n15,0)
4190 call readi(mcmcard,'N16',n16,0)
4191 call readi(mcmcard,'N17',n17,0)
4192 call readi(mcmcard,'N18',n18,0)
4194 vdisulf=(index(mcmcard,'DYNSS').gt.0)
4196 call readi(mcmcard,'NDIFF',ndiff,2)
4197 call reada(mcmcard,'DIFFCUT',diffcut,0.0d0)
4198 call readi(mcmcard,'IS1',is1,1)
4199 call readi(mcmcard,'IS2',is2,8)
4200 call readi(mcmcard,'NRAN0',nran0,4)
4201 call readi(mcmcard,'NRAN1',nran1,2)
4202 call readi(mcmcard,'IRR',irr,1)
4203 call readi(mcmcard,'NSEED',nseed,20)
4204 call readi(mcmcard,'NTOTAL',ntotal,10000)
4205 call reada(mcmcard,'CUT1',cut1,2.0d0)
4206 call reada(mcmcard,'CUT2',cut2,5.0d0)
4207 call reada(mcmcard,'ESTOP',estop,-3000.0d0)
4208 call readi(mcmcard,'ICMAX',icmax,3)
4209 call readi(mcmcard,'IRESTART',irestart,0)
4210 !!bankt call readi(mcmcard,'NBANKTM',ntbankm,0)
4213 call reada(mcmcard,'DELE',dele,20.0d0)
4214 call reada(mcmcard,'DIFCUT',difcut,720.0d0)
4215 call readi(mcmcard,'IREF',iref,0)
4216 call reada(mcmcard,'RMSCUT',rmscut,4.0d0)
4217 call reada(mcmcard,'PNCCUT',pnccut,0.5d0)
4218 call readi(mcmcard,'NCONF_IN',nconf_in,0)
4219 call reada(mcmcard,'RDIH_BIAS',rdih_bias,0.5d0)
4220 write (iout,*) "NCONF_IN",nconf_in
4222 end subroutine csaread
4223 !-----------------------------------------------------------------------------
4227 use control_data, only: MaxMoveType
4230 ! implicit real*8 (a-h,o-z)
4231 ! include 'DIMENSIONS'
4232 ! include 'COMMON.MCM'
4233 ! include 'COMMON.MCE'
4234 ! include 'COMMON.IOUNITS'
4235 ! character(len=80) :: ucase
4236 character(len=320) :: mcmcard
4239 ! real(kind=8) :: var,ene
4241 call card_concat(mcmcard,.true.)
4242 call readi(mcmcard,'MAXACC',maxacc,100)
4243 call readi(mcmcard,'MAX_MCM_IT',max_mcm_it,10000)
4244 call readi(mcmcard,'MAXTRIAL',maxtrial,100)
4245 call readi(mcmcard,'MAXTRIAL_ITER',maxtrial_iter,1000)
4246 call readi(mcmcard,'MAXREPM',maxrepm,200)
4247 call reada(mcmcard,'RANFRACT',RanFract,0.5D0)
4248 call reada(mcmcard,'POOL_FRACT',pool_fraction,0.01D0)
4249 call reada(mcmcard,'OVERLAP',overlap_cut,1.0D3)
4250 call reada(mcmcard,'E_UP',e_up,5.0D0)
4251 call reada(mcmcard,'DELTE',delte,0.1D0)
4252 call readi(mcmcard,'NSWEEP',nsweep,5)
4253 call readi(mcmcard,'NSTEPH',nsteph,0)
4254 call readi(mcmcard,'NSTEPC',nstepc,0)
4255 call reada(mcmcard,'TMIN',tmin,298.0D0)
4256 call reada(mcmcard,'TMAX',tmax,298.0D0)
4257 call readi(mcmcard,'NWINDOW',nwindow,0)
4258 call readi(mcmcard,'PRINT_MC',print_mc,0)
4259 print_stat=(index(mcmcard,'NO_PRINT_STAT').le.0)
4260 print_int=(index(mcmcard,'NO_PRINT_INT').le.0)
4261 ent_read=(index(mcmcard,'ENT_READ').gt.0)
4262 call readi(mcmcard,'SAVE_FREQ',save_frequency,1000)
4263 call readi(mcmcard,'MESSAGE_FREQ',message_frequency,1000)
4264 call readi(mcmcard,'POOL_READ_FREQ',pool_read_freq,5000)
4265 call readi(mcmcard,'POOL_SAVE_FREQ',pool_save_freq,1000)
4266 call readi(mcmcard,'PRINT_FREQ',print_freq,1000)
4267 if (nwindow.gt.0) then
4268 allocate(winstart(nwindow)) !!el (maxres)
4269 allocate(winend(nwindow)) !!el
4270 allocate(winlen(nwindow)) !!el
4271 read (inp,*) (winstart(i),winend(i),i=1,nwindow)
4273 winlen(i)=winend(i)-winstart(i)+1
4276 if (tmax.lt.tmin) tmax=tmin
4277 if (tmax.eq.tmin) then
4281 if (nstepc.gt.0 .and. nsteph.gt.0) then
4282 tsteph=(tmax/tmin)**(1.0D0/(nsteph+0.0D0))
4283 tstepc=(tmax/tmin)**(1.0D0/(nstepc+0.0D0))
4285 allocate(sumpro_type(0:MaxMoveType)) !(0:MaxMoveType)
4286 ! Probabilities of different move types
4287 sumpro_type(0)=0.0D0
4288 call reada(mcmcard,'MULTI_BOND',sumpro_type(1),1.0d0)
4289 call reada(mcmcard,'ONE_ANGLE' ,sumpro_type(2),2.0d0)
4290 sumpro_type(2)=sumpro_type(1)+sumpro_type(2)
4291 call reada(mcmcard,'THETA' ,sumpro_type(3),0.0d0)
4292 sumpro_type(3)=sumpro_type(2)+sumpro_type(3)
4293 call reada(mcmcard,'SIDE_CHAIN',sumpro_type(4),0.5d0)
4294 sumpro_type(4)=sumpro_type(3)+sumpro_type(4)
4296 print *,'i',i,' sumprotype',sumpro_type(i)
4297 sumpro_type(i)=sumpro_type(i)/sumpro_type(MaxMoveType)
4298 print *,'i',i,' sumprotype',sumpro_type(i)
4301 end subroutine mcmread
4302 !-----------------------------------------------------------------------------
4303 subroutine read_minim
4306 ! implicit real*8 (a-h,o-z)
4307 ! include 'DIMENSIONS'
4308 ! include 'COMMON.MINIM'
4309 ! include 'COMMON.IOUNITS'
4310 ! character(len=80) :: ucase
4311 character(len=320) :: minimcard
4313 ! integer :: ntf,ik,iw_pdb
4314 ! real(kind=8) :: var,ene
4316 call card_concat(minimcard,.true.)
4317 call readi(minimcard,'MAXMIN',maxmin,2000)
4318 call readi(minimcard,'MAXFUN',maxfun,5000)
4319 call readi(minimcard,'MINMIN',minmin,maxmin)
4320 call readi(minimcard,'MINFUN',minfun,maxmin)
4321 call reada(minimcard,'TOLF',tolf,1.0D-2)
4322 call reada(minimcard,'RTOLF',rtolf,1.0D-4)
4323 print_min_stat=min0(index(minimcard,'PRINT_MIN_STAT'),1)
4324 print_min_res=min0(index(minimcard,'PRINT_MIN_RES'),1)
4325 print_min_ini=min0(index(minimcard,'PRINT_MIN_INI'),1)
4326 write (iout,'(/80(1h*)/20x,a/80(1h*))') &
4327 'Options in energy minimization:'
4328 write (iout,'(4(a,i5),a,1pe14.5,a,1pe14.5)') &
4329 'MaxMin:',MaxMin,' MaxFun:',MaxFun,&
4330 'MinMin:',MinMin,' MinFun:',MinFun,&
4331 ' TolF:',TolF,' RTolF:',RTolF
4333 end subroutine read_minim
4334 !-----------------------------------------------------------------------------
4335 subroutine openunits
4337 use MD_data, only: usampl
4340 use control_data, only:out1file
4341 use control, only: getenv_loc
4342 ! implicit real*8 (a-h,o-z)
4343 ! include 'DIMENSIONS'
4346 character(len=16) :: form,nodename
4347 integer :: nodelen,ierror,npos
4349 ! include 'COMMON.SETUP'
4350 ! include 'COMMON.IOUNITS'
4351 ! include 'COMMON.MD'
4352 ! include 'COMMON.CONTROL'
4353 integer :: lenpre,lenpot,lentmp !,ilen
4355 character(len=3) :: out1file_text !,ucase
4356 character(len=3) :: ll
4359 ! integer :: ntf,ik,iw_pdb
4360 ! real(kind=8) :: var,ene
4362 ! print *,"Processor",myrank,"fg_rank",fg_rank," entered openunits"
4363 call getenv_loc("PREFIX",prefix)
4365 call getenv_loc("POT",pot)
4366 call getenv_loc("DIRTMP",tmpdir)
4367 call getenv_loc("CURDIR",curdir)
4368 call getenv_loc("OUT1FILE",out1file_text)
4369 ! print *,"Processor",myrank,"fg_rank",fg_rank," did GETENV"
4370 out1file_text=ucase(out1file_text)
4371 if (out1file_text(1:1).eq."Y") then
4374 out1file=fg_rank.gt.0
4379 if (lentmp.gt.0) then
4380 write (*,'(80(1h!))')
4381 write (*,'(a,19x,a,19x,a)') "!"," A T T E N T I O N ","!"
4382 write (*,'(80(1h!))')
4383 write (*,*)"All output files will be on node /tmp directory."
4385 call MPI_GET_PROCESSOR_NAME( nodename, nodelen, IERROR )
4386 if (me.eq.king) then
4387 write (*,*) "The master node is ",nodename
4388 else if (fg_rank.eq.0) then
4389 write (*,*) "I am the CG slave node ",nodename
4391 write (*,*) "I am the FG slave node ",nodename
4394 PREFIX = tmpdir(:lentmp)//'/'//prefix(:lenpre)
4395 lenpre = lentmp+lenpre+1
4397 entname=prefix(:lenpre)//'_'//pot(:lenpot)//'.entr'
4398 ! Get the names and open the input files
4399 #if defined(WINIFL) || defined(WINPGI)
4400 open(1,file=pref_orig(:ilen(pref_orig))// &
4401 '.inp',status='old',readonly,shared)
4402 open (9,file=prefix(:ilen(prefix))//'.intin',status='unknown')
4403 ! open (18,file=prefix(:ilen(prefix))//'.entin',status='unknown')
4404 ! Get parameter filenames and open the parameter files.
4405 call getenv_loc('BONDPAR',bondname)
4406 open (ibond,file=bondname,status='old',readonly,shared)
4407 call getenv_loc('BONDPAR_NUCL',bondname_nucl)
4408 open (ibond_nucl,file=bondname_nucl,status='old',readonly,shared)
4409 call getenv_loc('THETPAR',thetname)
4410 open (ithep,file=thetname,status='old',readonly,shared)
4411 call getenv_loc('ROTPAR',rotname)
4412 open (irotam,file=rotname,status='old',readonly,shared)
4413 call getenv_loc('TORPAR',torname)
4414 open (itorp,file=torname,status='old',readonly,shared)
4415 call getenv_loc('TORDPAR',tordname)
4416 open (itordp,file=tordname,status='old',readonly,shared)
4417 call getenv_loc('FOURIER',fouriername)
4418 open (ifourier,file=fouriername,status='old',readonly,shared)
4419 call getenv_loc('ELEPAR',elename)
4420 open (ielep,file=elename,status='old',readonly,shared)
4421 call getenv_loc('SIDEPAR',sidename)
4422 open (isidep,file=sidename,status='old',readonly,shared)
4424 call getenv_loc('THETPAR_NUCL',thetname_nucl)
4425 open (ithep_nucl,file=thetname_nucl,status='old',readonly,shared)
4426 call getenv_loc('ROTPAR_NUCL',rotname_nucl)
4427 open (irotam_nucl,file=rotname_nucl,status='old',readonly,shared)
4428 call getenv_loc('TORPAR_NUCL',torname_nucl)
4429 open (itorp_nucl,file=torname_nucl,status='old',readonly,shared)
4430 call getenv_loc('TORDPAR_NUCL',tordname_nucl)
4431 open (itordp_nucl,file=tordname_nucl,status='old',readonly,shared)
4432 call getenv_loc('SIDEPAR_NUCL',sidename_nucl)
4433 open (isidep_nucl,file=sidename_nucl,status='old',readonly,shared)
4436 #elif (defined CRAY) || (defined AIX)
4437 open(1,file=pref_orig(:ilen(pref_orig))//'.inp',status='old',&
4439 ! print *,"Processor",myrank," opened file 1"
4440 open (9,file=prefix(:ilen(prefix))//'.intin',status='unknown')
4441 ! print *,"Processor",myrank," opened file 9"
4442 ! open (18,file=prefix(:ilen(prefix))//'.entin',status='unknown')
4443 ! Get parameter filenames and open the parameter files.
4444 call getenv_loc('BONDPAR',bondname)
4445 open (ibond,file=bondname,status='old',action='read')
4446 call getenv_loc('BONDPAR_NUCL',bondname_nucl)
4447 open (ibond_nucl,file=bondname_nucl,status='old',action='read')
4449 ! print *,"Processor",myrank," opened file IBOND"
4450 call getenv_loc('THETPAR',thetname)
4451 open (ithep,file=thetname,status='old',action='read')
4452 ! print *,"Processor",myrank," opened file ITHEP"
4453 call getenv_loc('ROTPAR',rotname)
4454 open (irotam,file=rotname,status='old',action='read')
4455 ! print *,"Processor",myrank," opened file IROTAM"
4456 call getenv_loc('TORPAR',torname)
4457 open (itorp,file=torname,status='old',action='read')
4458 ! print *,"Processor",myrank," opened file ITORP"
4459 call getenv_loc('TORDPAR',tordname)
4460 open (itordp,file=tordname,status='old',action='read')
4461 ! print *,"Processor",myrank," opened file ITORDP"
4462 call getenv_loc('SCCORPAR',sccorname)
4463 open (isccor,file=sccorname,status='old',action='read')
4464 ! print *,"Processor",myrank," opened file ISCCOR"
4465 call getenv_loc('FOURIER',fouriername)
4466 open (ifourier,file=fouriername,status='old',action='read')
4467 ! print *,"Processor",myrank," opened file IFOURIER"
4468 call getenv_loc('ELEPAR',elename)
4469 open (ielep,file=elename,status='old',action='read')
4470 ! print *,"Processor",myrank," opened file IELEP"
4471 call getenv_loc('SIDEPAR',sidename)
4472 open (isidep,file=sidename,status='old',action='read')
4474 call getenv_loc('THETPAR_NUCL',thetname_nucl)
4475 open (ithep_nucl,file=thetname_nucl,status='old',action='read')
4476 call getenv_loc('ROTPAR_NUCL',rotname_nucl)
4477 open (irotam_nucl,file=rotname_nucl,status='old',action='read')
4478 call getenv_loc('TORPAR_NUCL',torname_nucl)
4479 open (itorp_nucl,file=torname_nucl,status='old',action='read')
4480 call getenv_loc('TORDPAR_NUCL',tordname_nucl)
4481 open (itordp_nucl,file=tordname_nucl,status='old',action='read')
4482 call getenv_loc('SIDEPAR_NUCL',sidename_nucl)
4483 open (isidep_nucl,file=sidename_nucl,status='old',action='read')
4485 call getenv_loc('LIPTRANPAR',liptranname)
4486 open (iliptranpar,file=liptranname,status='old',action='read')
4487 call getenv_loc('TUBEPAR',tubename)
4488 open (itube,file=tubename,status='old',action='read')
4489 call getenv_loc('IONPAR',ionname)
4490 open (iion,file=ionname,status='old',action='read')
4492 ! print *,"Processor",myrank," opened file ISIDEP"
4493 ! print *,"Processor",myrank," opened parameter files"
4495 open(1,file=pref_orig(:ilen(pref_orig))//'.inp',status='old')
4496 open (9,file=prefix(:ilen(prefix))//'.intin',status='unknown')
4497 ! open (18,file=prefix(:ilen(prefix))//'.entin',status='unknown')
4498 ! Get parameter filenames and open the parameter files.
4499 call getenv_loc('BONDPAR',bondname)
4500 open (ibond,file=bondname,status='old')
4501 call getenv_loc('BONDPAR_NUCL',bondname_nucl)
4502 open (ibond_nucl,file=bondname_nucl,status='old')
4504 call getenv_loc('THETPAR',thetname)
4505 open (ithep,file=thetname,status='old')
4506 call getenv_loc('ROTPAR',rotname)
4507 open (irotam,file=rotname,status='old')
4508 call getenv_loc('TORPAR',torname)
4509 open (itorp,file=torname,status='old')
4510 call getenv_loc('TORDPAR',tordname)
4511 open (itordp,file=tordname,status='old')
4512 call getenv_loc('SCCORPAR',sccorname)
4513 open (isccor,file=sccorname,status='old')
4514 call getenv_loc('FOURIER',fouriername)
4515 open (ifourier,file=fouriername,status='old')
4516 call getenv_loc('ELEPAR',elename)
4517 open (ielep,file=elename,status='old')
4518 call getenv_loc('SIDEPAR',sidename)
4519 open (isidep,file=sidename,status='old')
4521 open (ithep_nucl,file=thetname_nucl,status='old')
4522 call getenv_loc('ROTPAR_NUCL',rotname_nucl)
4523 open (irotam_nucl,file=rotname_nucl,status='old')
4524 call getenv_loc('TORPAR_NUCL',torname_nucl)
4525 open (itorp_nucl,file=torname_nucl,status='old')
4526 call getenv_loc('TORDPAR_NUCL',tordname_nucl)
4527 open (itordp_nucl,file=tordname_nucl,status='old')
4528 call getenv_loc('SIDEPAR_NUCL',sidename_nucl)
4529 open (isidep_nucl,file=sidename_nucl,status='old')
4531 call getenv_loc('LIPTRANPAR',liptranname)
4532 open (iliptranpar,file=liptranname,status='old')
4533 call getenv_loc('TUBEPAR',tubename)
4534 open (itube,file=tubename,status='old')
4535 call getenv_loc('IONPAR',ionname)
4536 open (iion,file=ionname,status='old')
4538 open(1,file=pref_orig(:ilen(pref_orig))//'.inp',status='old',&
4540 open (9,file=prefix(:ilen(prefix))//'.intin',status='unknown')
4541 ! open (18,file=prefix(:ilen(prefix))//'.entin',status='unknown')
4542 ! Get parameter filenames and open the parameter files.
4543 call getenv_loc('BONDPAR',bondname)
4544 open (ibond,file=bondname,status='old',action='read')
4545 call getenv_loc('BONDPAR_NUCL',bondname_nucl)
4546 open (ibond_nucl,file=bondname_nucl,status='old',action='read')
4547 call getenv_loc('THETPAR',thetname)
4548 open (ithep,file=thetname,status='old',action='read')
4549 call getenv_loc('ROTPAR',rotname)
4550 open (irotam,file=rotname,status='old',action='read')
4551 call getenv_loc('TORPAR',torname)
4552 open (itorp,file=torname,status='old',action='read')
4553 call getenv_loc('TORDPAR',tordname)
4554 open (itordp,file=tordname,status='old',action='read')
4555 call getenv_loc('SCCORPAR',sccorname)
4556 open (isccor,file=sccorname,status='old',action='read')
4558 call getenv_loc('THETPARPDB',thetname_pdb)
4559 print *,"thetname_pdb ",thetname_pdb
4560 open (ithep_pdb,file=thetname_pdb,status='old',action='read')
4561 print *,ithep_pdb," opened"
4563 call getenv_loc('FOURIER',fouriername)
4564 open (ifourier,file=fouriername,status='old',readonly)
4565 call getenv_loc('ELEPAR',elename)
4566 open (ielep,file=elename,status='old',readonly)
4567 call getenv_loc('SIDEPAR',sidename)
4568 open (isidep,file=sidename,status='old',readonly)
4570 call getenv_loc('THETPAR_NUCL',thetname_nucl)
4571 open (ithep_nucl,file=thetname_nucl,status='old',action='read')
4572 call getenv_loc('ROTPAR_NUCL',rotname_nucl)
4573 open (irotam_nucl,file=rotname_nucl,status='old',action='read')
4574 call getenv_loc('TORPAR_NUCL',torname_nucl)
4575 open (itorp_nucl,file=torname_nucl,status='old',action='read')
4576 call getenv_loc('TORDPAR_NUCL',tordname_nucl)
4577 open (itordp_nucl,file=tordname_nucl,status='old',action='read')
4578 call getenv_loc('SIDEPAR_NUCL',sidename_nucl)
4579 open (isidep_nucl,file=sidename_nucl,status='old',action='read')
4580 call getenv_loc('SIDEPAR_SCBASE',sidename_scbase)
4581 open (isidep_scbase,file=sidename_scbase,status='old',action='read')
4582 call getenv_loc('PEPPAR_PEPBASE',pepname_pepbase)
4583 open (isidep_pepbase,file=pepname_pepbase,status='old',action='read')
4584 call getenv_loc('SCPAR_PHOSPH',pepname_scpho)
4585 open (isidep_scpho,file=pepname_scpho,status='old',action='read')
4586 call getenv_loc('PEPPAR_PHOSPH',pepname_peppho)
4587 open (isidep_peppho,file=pepname_peppho,status='old',action='read')
4590 call getenv_loc('LIPTRANPAR',liptranname)
4591 open (iliptranpar,file=liptranname,status='old',action='read')
4592 call getenv_loc('TUBEPAR',tubename)
4593 open (itube,file=tubename,status='old',action='read')
4594 call getenv_loc('IONPAR',ionname)
4595 open (iion,file=ionname,status='old',action='read')
4598 call getenv_loc('ROTPARPDB',rotname_pdb)
4599 open (irotam_pdb,file=rotname_pdb,status='old',action='read')
4602 call getenv_loc('SCPPAR_NUCL',scpname_nucl)
4603 #if defined(WINIFL) || defined(WINPGI)
4604 open (iscpp_nucl,file=scpname_nucl,status='old',readonly,shared)
4605 #elif (defined CRAY) || (defined AIX)
4606 open (iscpp_nucl,file=scpname_nucl,status='old',action='read')
4608 open (iscpp_nucl,file=scpname_nucl,status='old')
4610 open (iscpp_nucl,file=scpname_nucl,status='old',action='read')
4615 ! 8/9/01 In the newest version SCp interaction constants are read from a file
4616 ! Use -DOLDSCP to use hard-coded constants instead.
4618 call getenv_loc('SCPPAR',scpname)
4619 #if defined(WINIFL) || defined(WINPGI)
4620 open (iscpp,file=scpname,status='old',readonly,shared)
4621 #elif (defined CRAY) || (defined AIX)
4622 open (iscpp,file=scpname,status='old',action='read')
4624 open (iscpp,file=scpname,status='old')
4626 open (iscpp,file=scpname,status='old',action='read')
4629 call getenv_loc('PATTERN',patname)
4630 #if defined(WINIFL) || defined(WINPGI)
4631 open (icbase,file=patname,status='old',readonly,shared)
4632 #elif (defined CRAY) || (defined AIX)
4633 open (icbase,file=patname,status='old',action='read')
4635 open (icbase,file=patname,status='old')
4637 open (icbase,file=patname,status='old',action='read')
4640 ! Open output file only for CG processes
4641 ! print *,"Processor",myrank," fg_rank",fg_rank
4642 if (fg_rank.eq.0) then
4644 if (nodes.eq.1) then
4647 npos = dlog10(dfloat(nodes-1))+1
4649 if (npos.lt.3) npos=3
4650 write (liczba,'(i1)') npos
4651 form = '(bz,i'//liczba(:ilen(liczba))//'.'//liczba(:ilen(liczba)) &
4653 write (liczba,form) me
4654 outname=prefix(:lenpre)//'.out_'//pot(:lenpot)// &
4655 liczba(:ilen(liczba))
4656 intname=prefix(:lenpre)//'_'//pot(:lenpot)//liczba(:ilen(liczba)) &
4658 pdbname=prefix(:lenpre)//'_'//pot(:lenpot)//liczba(:ilen(liczba)) &
4660 mol2name=prefix(:lenpre)//'_'//pot(:lenpot)// &
4661 liczba(:ilen(liczba))//'.mol2'
4662 statname=prefix(:lenpre)//'_'//pot(:lenpot)// &
4663 liczba(:ilen(liczba))//'.stat'
4665 call copy_to_tmp(pref_orig(:ilen(pref_orig))//'_'//pot(:lenpot) &
4666 //liczba(:ilen(liczba))//'.stat')
4667 rest2name=prefix(:ilen(prefix))//"_"//liczba(:ilen(liczba)) &
4670 qname=prefix(:lenpre)//'_'//pot(:lenpot)// &
4671 liczba(:ilen(liczba))//'.const'
4676 outname=prefix(:lenpre)//'.out_'//pot(:lenpot)
4677 intname=prefix(:lenpre)//'_'//pot(:lenpot)//'.int'
4678 pdbname=prefix(:lenpre)//'_'//pot(:lenpot)//'.pdb'
4679 mol2name=prefix(:lenpre)//'_'//pot(:lenpot)//'.mol2'
4680 statname=prefix(:lenpre)//'_'//pot(:lenpot)//'.stat'
4682 call copy_to_tmp(pref_orig(:ilen(pref_orig))//'_'//pot(:lenpot)// &
4684 rest2name=prefix(:ilen(prefix))//'.rst'
4686 qname=prefix(:lenpre)//'_'//pot(:lenpot)//'.const'
4689 #if defined(AIX) || defined(PGI)
4690 if (me.eq.king .or. .not. out1file) &
4691 open(iout,file=outname,status='unknown')
4693 if (fg_rank.gt.0) then
4694 write (liczba,'(i3.3)') myrank/nfgtasks
4695 write (ll,'(bz,i3.3)') fg_rank
4696 open(iout,file="debug"//liczba(:ilen(liczba))//"."//ll,&
4701 open(igeom,file=intname,status='unknown',position='append')
4702 open(ipdb,file=pdbname,status='unknown')
4703 open(imol2,file=mol2name,status='unknown')
4704 open(istat,file=statname,status='unknown',position='append')
4706 !1out open(iout,file=outname,status='unknown')
4709 if (me.eq.king .or. .not.out1file) &
4710 open(iout,file=outname,status='unknown')
4712 if (fg_rank.gt.0) then
4713 write (liczba,'(i3.3)') myrank/nfgtasks
4714 write (ll,'(bz,i3.3)') fg_rank
4715 open(iout,file="debug"//liczba(:ilen(liczba))//"."//ll,&
4720 open(igeom,file=intname,status='unknown',access='append')
4721 open(ipdb,file=pdbname,status='unknown')
4722 open(imol2,file=mol2name,status='unknown')
4723 open(istat,file=statname,status='unknown',access='append')
4725 !1out open(iout,file=outname,status='unknown')
4728 csa_rbank=prefix(:lenpre)//'.CSA.rbank'
4729 csa_seed=prefix(:lenpre)//'.CSA.seed'
4730 csa_history=prefix(:lenpre)//'.CSA.history'
4731 csa_bank=prefix(:lenpre)//'.CSA.bank'
4732 csa_bank1=prefix(:lenpre)//'.CSA.bank1'
4733 csa_alpha=prefix(:lenpre)//'.CSA.alpha'
4734 csa_alpha1=prefix(:lenpre)//'.CSA.alpha1'
4735 !!bankt csa_bankt=prefix(:lenpre)//'.CSA.bankt'
4736 csa_int=prefix(:lenpre)//'.int'
4737 csa_bank_reminimized=prefix(:lenpre)//'.CSA.bank_reminimized'
4738 csa_native_int=prefix(:lenpre)//'.CSA.native.int'
4739 csa_in=prefix(:lenpre)//'.CSA.in'
4740 ! print *,"Processor",myrank,"fg_rank",fg_rank," opened files"
4743 write (iout,'(80(1h-))')
4744 write (iout,'(30x,a)') "FILE ASSIGNMENT"
4745 write (iout,'(80(1h-))')
4746 write (iout,*) "Input file : ",&
4747 pref_orig(:ilen(pref_orig))//'.inp'
4748 write (iout,*) "Output file : ",&
4749 outname(:ilen(outname))
4751 write (iout,*) "Sidechain potential file : ",&
4752 sidename(:ilen(sidename))
4754 write (iout,*) "SCp potential file : ",&
4755 scpname(:ilen(scpname))
4757 write (iout,*) "Electrostatic potential file : ",&
4758 elename(:ilen(elename))
4759 write (iout,*) "Cumulant coefficient file : ",&
4760 fouriername(:ilen(fouriername))
4761 write (iout,*) "Torsional parameter file : ",&
4762 torname(:ilen(torname))
4763 write (iout,*) "Double torsional parameter file : ",&
4764 tordname(:ilen(tordname))
4765 write (iout,*) "SCCOR parameter file : ",&
4766 sccorname(:ilen(sccorname))
4767 write (iout,*) "Bond & inertia constant file : ",&
4768 bondname(:ilen(bondname))
4769 write (iout,*) "Bending parameter file : ",&
4770 thetname(:ilen(thetname))
4771 write (iout,*) "Rotamer parameter file : ",&
4772 rotname(:ilen(rotname))
4775 write (iout,*) "Thetpdb parameter file : ",&
4776 thetname_pdb(:ilen(thetname_pdb))
4779 write (iout,*) "Threading database : ",&
4780 patname(:ilen(patname))
4782 write (iout,*)" DIRTMP : ",&
4784 write (iout,'(80(1h-))')
4787 end subroutine openunits
4788 !-----------------------------------------------------------------------------
4791 use geometry_data, only: nres,dc
4793 ! implicit real*8 (a-h,o-z)
4794 ! include 'DIMENSIONS'
4795 ! include 'COMMON.CHAIN'
4796 ! include 'COMMON.IOUNITS'
4797 ! include 'COMMON.MD'
4800 ! real(kind=8) :: var,ene
4802 open(irest2,file=rest2name,status='unknown')
4803 read(irest2,*) totT,EK,potE,totE,t_bath
4806 ! AL 4/17/17: Now reading d_t(0,:) too
4808 read(irest2,'(3e15.5)') (d_t(j,i),j=1,3)
4811 ! AL 4/17/17: Now reading d_c(0,:) too
4813 read(irest2,'(3e15.5)') (dc(j,i),j=1,3)
4816 read (irest2,*) iset
4820 end subroutine readrst
4821 !-----------------------------------------------------------------------------
4822 subroutine read_fragments
4826 use control_data, only:out1file
4829 ! implicit real*8 (a-h,o-z)
4830 ! include 'DIMENSIONS'
4834 ! include 'COMMON.SETUP'
4835 ! include 'COMMON.CHAIN'
4836 ! include 'COMMON.IOUNITS'
4837 ! include 'COMMON.MD'
4838 ! include 'COMMON.CONTROL'
4841 ! real(kind=8) :: var,ene
4843 read(inp,*) nset,nfrag,npair,nfrag_back
4845 !el from module energy
4846 ! if(.not.allocated(mset)) allocate(mset(nset)) !(maxprocs/20)
4847 if(.not.allocated(wfrag_back)) then
4848 allocate(wfrag_back(3,nfrag_back,nset)) !(3,maxfrag_back,maxprocs/20)
4849 allocate(ifrag_back(3,nfrag_back,nset)) !(3,maxfrag_back,maxprocs/20)
4851 allocate(qinfrag(nfrag,nset),wfrag(nfrag,nset)) !(50,maxprocs/20)
4852 allocate(ifrag(2,nfrag,nset)) !(2,50,maxprocs/20)
4854 allocate(qinpair(npair,nset),wpair(npair,nset)) !(100,maxprocs/20)
4855 allocate(ipair(2,npair,nset)) !(2,100,maxprocs/20)
4858 if(me.eq.king.or..not.out1file) &
4859 write(iout,*) "nset",nset," nfrag",nfrag," npair",npair,&
4860 " nfrag_back",nfrag_back
4862 read(inp,*) mset(iset)
4864 read(inp,*) wfrag(i,iset),ifrag(1,i,iset),ifrag(2,i,iset),&
4866 if(me.eq.king.or..not.out1file) &
4867 write(iout,*) "R ",i,wfrag(i,iset),ifrag(1,i,iset),&
4868 ifrag(2,i,iset), qinfrag(i,iset)
4871 read(inp,*) wpair(i,iset),ipair(1,i,iset),ipair(2,i,iset),&
4873 if(me.eq.king.or..not.out1file) &
4874 write(iout,*) "R ",i,wpair(i,iset),ipair(1,i,iset),&
4875 ipair(2,i,iset), qinpair(i,iset)
4878 read(inp,*) wfrag_back(1,i,iset),wfrag_back(2,i,iset),&
4879 wfrag_back(3,i,iset),&
4880 ifrag_back(1,i,iset),ifrag_back(2,i,iset)
4881 if(me.eq.king.or..not.out1file) &
4882 write(iout,*) "A",i,wfrag_back(1,i,iset),wfrag_back(2,i,iset),&
4883 wfrag_back(3,i,iset),ifrag_back(1,i,iset),ifrag_back(2,i,iset)
4887 end subroutine read_fragments
4888 !-----------------------------------------------------------------------------
4890 !-----------------------------------------------------------------------------
4894 ! implicit real*8 (a-h,o-z)
4895 ! include 'DIMENSIONS'
4896 ! include 'COMMON.CSA'
4897 ! include 'COMMON.BANK'
4898 ! include 'COMMON.IOUNITS'
4900 ! integer :: ntf,ik,iw_pdb
4901 ! real(kind=8) :: var,ene
4903 open(icsa_in,file=csa_in,status="old",err=100)
4904 read(icsa_in,*) nconf
4905 read(icsa_in,*) jstart,jend
4906 read(icsa_in,*) nstmax
4907 read(icsa_in,*) n1,n2,n3,n4,n5,n6,n7,n8,is1,is2
4908 read(icsa_in,*) nran0,nran1,irr
4909 read(icsa_in,*) nseed
4910 read(icsa_in,*) ntotal,cut1,cut2
4911 read(icsa_in,*) estop
4912 read(icsa_in,*) icmax,irestart
4913 read(icsa_in,*) ntbankm,dele,difcut
4914 read(icsa_in,*) iref,rmscut,pnccut
4915 read(icsa_in,*) ndiff
4922 end subroutine csa_read
4923 !-----------------------------------------------------------------------------
4924 subroutine initial_write
4927 ! implicit real*8 (a-h,o-z)
4928 ! include 'DIMENSIONS'
4929 ! include 'COMMON.CSA'
4930 ! include 'COMMON.BANK'
4931 ! include 'COMMON.IOUNITS'
4933 ! integer :: ntf,ik,iw_pdb
4934 ! real(kind=8) :: var,ene
4936 open(icsa_seed,file=csa_seed,status="unknown")
4937 write(icsa_seed,*) "seed"
4939 #if defined(AIX) || defined(PGI)
4940 open(icsa_history,file=csa_history,status="unknown",&
4943 open(icsa_history,file=csa_history,status="unknown",&
4946 write(icsa_history,*) nconf
4947 write(icsa_history,*) jstart,jend
4948 write(icsa_history,*) nstmax
4949 write(icsa_history,*) n1,n2,n3,n4,n5,n6,n7,n8,is1,is2
4950 write(icsa_history,*) nran0,nran1,irr
4951 write(icsa_history,*) nseed
4952 write(icsa_history,*) ntotal,cut1,cut2
4953 write(icsa_history,*) estop
4954 write(icsa_history,*) icmax,irestart
4955 write(icsa_history,*) ntbankm,dele,difcut
4956 write(icsa_history,*) iref,rmscut,pnccut
4957 write(icsa_history,*) ndiff
4959 write(icsa_history,*)
4962 open(icsa_bank1,file=csa_bank1,status="unknown")
4963 write(icsa_bank1,*) 0
4967 end subroutine initial_write
4968 !-----------------------------------------------------------------------------
4969 subroutine restart_write
4972 ! implicit real*8 (a-h,o-z)
4973 ! include 'DIMENSIONS'
4974 ! include 'COMMON.IOUNITS'
4975 ! include 'COMMON.CSA'
4976 ! include 'COMMON.BANK'
4978 ! integer :: ntf,ik,iw_pdb
4979 ! real(kind=8) :: var,ene
4981 #if defined(AIX) || defined(PGI)
4982 open(icsa_history,file=csa_history,position="append")
4984 open(icsa_history,file=csa_history,access="append")
4986 write(icsa_history,*)
4987 write(icsa_history,*) "This is restart"
4988 write(icsa_history,*)
4989 write(icsa_history,*) nconf
4990 write(icsa_history,*) jstart,jend
4991 write(icsa_history,*) nstmax
4992 write(icsa_history,*) n1,n2,n3,n4,n5,n6,n7,n8,is1,is2
4993 write(icsa_history,*) nran0,nran1,irr
4994 write(icsa_history,*) nseed
4995 write(icsa_history,*) ntotal,cut1,cut2
4996 write(icsa_history,*) estop
4997 write(icsa_history,*) icmax,irestart
4998 write(icsa_history,*) ntbankm,dele,difcut
4999 write(icsa_history,*) iref,rmscut,pnccut
5000 write(icsa_history,*) ndiff
5001 write(icsa_history,*)
5002 write(icsa_history,*) "irestart is: ", irestart
5004 write(icsa_history,*)
5008 end subroutine restart_write
5009 !-----------------------------------------------------------------------------
5011 !-----------------------------------------------------------------------------
5012 subroutine write_pdb(npdb,titelloc,ee)
5014 ! implicit real*8 (a-h,o-z)
5015 ! include 'DIMENSIONS'
5016 ! include 'COMMON.IOUNITS'
5017 character(len=50) :: titelloc1
5018 character*(*) :: titelloc
5019 character(len=3) :: zahl
5020 character(len=5) :: liczba5
5022 integer :: npdb !,ilen
5026 ! real(kind=8) :: var,ene
5030 if (npdb.lt.1000) then
5031 call numstr(npdb,zahl)
5032 open(ipdb,file=prefix(:lenpre)//'@@'//zahl//'.pdb')
5034 if (npdb.lt.10000) then
5035 write(liczba5,'(i1,i4)') 0,npdb
5037 write(liczba5,'(i5)') npdb
5039 open(ipdb,file=prefix(:lenpre)//'@@'//liczba5//'.pdb')
5041 call pdbout(ee,titelloc1,ipdb)
5044 end subroutine write_pdb
5045 !-----------------------------------------------------------------------------
5047 !-----------------------------------------------------------------------------
5048 subroutine write_thread_summary
5049 ! Thread the sequence through a database of known structures
5050 use control_data, only: refstr
5052 use energy_data, only: n_ene_comp
5054 ! implicit real*8 (a-h,o-z)
5055 ! include 'DIMENSIONS'
5057 use MPI_data !include 'COMMON.INFO'
5060 ! include 'COMMON.CONTROL'
5061 ! include 'COMMON.CHAIN'
5062 ! include 'COMMON.DBASE'
5063 ! include 'COMMON.INTERACT'
5064 ! include 'COMMON.VAR'
5065 ! include 'COMMON.THREAD'
5066 ! include 'COMMON.FFIELD'
5067 ! include 'COMMON.SBRIDGE'
5068 ! include 'COMMON.HEADER'
5069 ! include 'COMMON.NAMES'
5070 ! include 'COMMON.IOUNITS'
5071 ! include 'COMMON.TIME1'
5073 integer,dimension(maxthread) :: ip
5074 real(kind=8),dimension(0:n_ene) :: energia
5076 integer :: i,j,ii,jj,ipj,ik,kk,ist
5077 real(kind=8) :: enet,etot,rmsnat,rms,frac,frac_nn
5079 write (iout,'(30x,a/)') &
5080 ' *********** Summary threading statistics ************'
5081 write (iout,'(a)') 'Initial energies:'
5082 write (iout,'(a4,2x,a12,14a14,3a8)') &
5083 'No','seq',(ename(print_order(i)),i=1,nprint_ene),'ETOT',&
5084 'RMSnat','NatCONT','NNCONT','RMS'
5085 ! Energy sort patterns
5090 enet=ener(n_ene-1,ip(i))
5093 if (ener(n_ene-1,ip(j)).lt.enet) then
5095 enet=ener(n_ene-1,ip(j))
5107 ist=nres_base(2,ii)+ipatt(2,i)
5109 energia(i)=ener0(kk,i)
5111 etot=ener0(n_ene_comp+1,i)
5112 rmsnat=ener0(n_ene_comp+2,i)
5113 rms=ener0(n_ene_comp+3,i)
5114 frac=ener0(n_ene_comp+4,i)
5115 frac_nn=ener0(n_ene_comp+5,i)
5118 write (iout,'(i4,2x,a8,i4,14(1pe14.5),0pf8.3,f8.5,f8.5,f8.3)') &
5119 i,str_nam(ii),ist+1,&
5120 (energia(print_order(kk)),kk=1,nprint_ene),&
5121 etot,rmsnat,frac,frac_nn,rms
5123 write (iout,'(i4,2x,a8,i4,14(1pe14.5),0pf8.3)') &
5124 i,str_nam(ii),ist+1,&
5125 (energia(print_order(kk)),kk=1,nprint_ene),etot
5128 write (iout,'(//a)') 'Final energies:'
5129 write (iout,'(a4,2x,a12,17a14,3a8)') &
5130 'No','seq',(ename(print_order(kk)),kk=1,nprint_ene),'ETOT',&
5131 'RMSnat','NatCONT','NNCONT','RMS'
5135 ist=nres_base(2,ii)+ipatt(2,i)
5137 energia(kk)=ener(kk,ik)
5139 etot=ener(n_ene_comp+1,i)
5140 rmsnat=ener(n_ene_comp+2,i)
5141 rms=ener(n_ene_comp+3,i)
5142 frac=ener(n_ene_comp+4,i)
5143 frac_nn=ener(n_ene_comp+5,i)
5144 write (iout,'(i4,2x,a8,i4,14(1pe14.5),0pf8.3,f8.5,f8.5,f8.3)') &
5145 i,str_nam(ii),ist+1,&
5146 (energia(print_order(kk)),kk=1,nprint_ene),&
5147 etot,rmsnat,frac,frac_nn,rms
5149 write (iout,'(/a/)') 'IEXAM array:'
5150 write (iout,'(i5)') nexcl
5152 write (iout,'(2i5)') iexam(1,i),iexam(2,i)
5154 write (iout,'(/a,1pe14.4/a,1pe14.4/)') &
5155 'Max. time for threading step ',max_time_for_thread,&
5156 'Average time for threading step: ',ave_time_for_thread
5158 end subroutine write_thread_summary
5159 !-----------------------------------------------------------------------------
5160 subroutine write_stat_thread(ithread,ipattern,ist)
5162 use energy_data, only: n_ene_comp
5164 ! implicit real*8 (a-h,o-z)
5165 ! include "DIMENSIONS"
5166 ! include "COMMON.CONTROL"
5167 ! include "COMMON.IOUNITS"
5168 ! include "COMMON.THREAD"
5169 ! include "COMMON.FFIELD"
5170 ! include "COMMON.DBASE"
5171 ! include "COMMON.NAMES"
5172 real(kind=8),dimension(0:n_ene) :: energia
5174 integer :: ithread,ipattern,ist,i
5175 real(kind=8) :: etot,rmsnat,rms,frac,frac_nn
5177 #if defined(AIX) || defined(PGI)
5178 open(istat,file=statname,position='append')
5180 open(istat,file=statname,access='append')
5183 energia(i)=ener(i,ithread)
5185 etot=ener(n_ene_comp+1,ithread)
5186 rmsnat=ener(n_ene_comp+2,ithread)
5187 rms=ener(n_ene_comp+3,ithread)
5188 frac=ener(n_ene_comp+4,ithread)
5189 frac_nn=ener(n_ene_comp+5,ithread)
5190 write (istat,'(i4,2x,a8,i4,14(1pe14.5),0pf8.3,f8.5,f8.5,f8.3)') &
5191 ithread,str_nam(ipattern),ist+1,&
5192 (energia(print_order(i)),i=1,nprint_ene),&
5193 etot,rmsnat,frac,frac_nn,rms
5196 end subroutine write_stat_thread
5197 !-----------------------------------------------------------------------------
5199 !-----------------------------------------------------------------------------
5200 end module io_config