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(1)
534 write (iout,*) 'FTORS factor =',ftors(1)
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
557 if ( secstruc(i) .eq. 'H') then
558 ! Helix restraints for this residue
561 phi0(ii) = 45.0D0*deg2rad
562 drange(ii)= 5.0D0*deg2rad
563 phibound(1,i) = phi0(ii)-drange(ii)
564 phibound(2,i) = phi0(ii)+drange(ii)
565 else if (secstruc(i) .eq. 'E') then
566 ! strand restraints for this residue
569 phi0(ii) = 180.0D0*deg2rad
570 drange(ii)= 5.0D0*deg2rad
571 phibound(1,i) = phi0(ii)-drange(ii)
572 phibound(2,i) = phi0(ii)+drange(ii)
574 ! no restraints for this residue
575 ndih_nconstr=ndih_nconstr+1
576 idih_nconstr(ndih_nconstr)=i
580 ! deallocate(secstruc)
583 write(iout,'(A30,A80)')'Error reading file SECPRED',secpred
584 ! deallocate(secstruc)
587 write(iout,'(A20)')'Error reading FTORS'
588 ! deallocate(secstruc)
590 end subroutine secstrp2dihc
591 !-----------------------------------------------------------------------------
592 subroutine read_secstr_pred(jin,jout,errors)
594 ! implicit real*8 (a-h,o-z)
595 ! INCLUDE 'DIMENSIONS'
596 ! include 'COMMON.IOUNITS'
597 ! include 'COMMON.CHAIN'
598 !el character(len=1),dimension(nres) :: secstruc !(maxres)
599 !el COMMON/SECONDARYS/secstruc
601 character(len=80) :: line,line1 !,ucase
602 logical :: errflag,errors,blankline
605 integer :: jin,jout,iseq,ipos,ipos1,iend,il,&
608 read (jin,'(a)') line
609 write (jout,'(2a)') '> ',line(1:78)
611 ! Remember that we number full residues starting from 2, then, iseq=1 and iseq=nres
612 ! correspond to the end-groups. ADD to the secondary structure prediction "-" for the
613 ! end-groups in the input file "*.spred"
616 do while (index(line1,'$END').eq.0)
617 ! Override commented lines.
620 do while (.not.blankline)
622 call mykey(line,line1,ipos,blankline,errflag)
623 if (errflag) write (jout,'(2a)') &
624 'Error when reading sequence in line: ',line
625 errors=errors .or. errflag
626 if (.not. blankline .and. .not. errflag) then
629 !el if (iseq.le.maxres) then
630 if (line1(1:1).eq.'-' ) then
631 secstruc(iseq)=line1(1:1)
632 else if ( ( ucase(line1(1:1)).eq.'E' ) .or. &
633 ( ucase(line1(1:1)).eq.'H' ) ) then
634 secstruc(iseq)=ucase(line1(1:1))
637 write (jout,1010) line1(1:1), iseq
642 !el write (jout,1000) iseq,maxres
645 do while (ipos1.le.iend)
650 !el if (iseq.le.maxres) then
651 if (line1(ipos1-1:ipos1-1).eq.'-' ) then
652 secstruc(iseq)=line1(ipos1-1:ipos1-1)
653 else if((ucase(line1(ipos1-1:ipos1-1)).eq.'E').or. &
654 (ucase(line1(ipos1-1:ipos1-1)).eq.'H') ) then
655 secstruc(iseq)=ucase(line1(ipos1-1:ipos1-1))
658 write (jout,1010) line1(ipos1-1:ipos1-1), iseq
663 !el write (jout,1000) iseq,maxres
670 read (jin,'(a)') line
671 write (jout,'(2a)') '> ',line(1:78)
675 !d write (jout,'(10a8)') (sequence(i),i=1,iseq-1)
677 !d check whether the found length of the chain is correct.
678 length_of_chain=iseq-1
679 if (length_of_chain .ne. nres) then
681 write (jout,'(a,i4,a,i4,a)') &
682 'Error: the number of labels specified in $SEC_STRUC_PRED (' &
683 ,length_of_chain,') does not match with the number of residues (' &
688 1000 format('Error - the number of residues (',i4,&
689 ') has exceeded maximum (',i4,').')
690 1010 format ('Error - unrecognized secondary structure label',a4,&
693 end subroutine read_secstr_pred
695 !-----------------------------------------------------------------------------
697 !-----------------------------------------------------------------------------
702 use control_data, only:maxterm !,maxtor
706 use control, only: getenv_loc
708 ! Read the parameters of the probability distributions of the virtual-bond
709 ! valence angles and the side chains and energy parameters.
711 ! Important! Energy-term weights ARE NOT read here; they are read from the
712 ! main input file instead, because NO defaults have yet been set for these
715 ! implicit real*8 (a-h,o-z)
716 ! include 'DIMENSIONS'
721 ! include 'COMMON.IOUNITS'
722 ! include 'COMMON.CHAIN'
723 ! include 'COMMON.INTERACT'
724 ! include 'COMMON.GEO'
725 ! include 'COMMON.LOCAL'
726 ! include 'COMMON.TORSION'
727 ! include 'COMMON.SCCOR'
728 ! include 'COMMON.SCROT'
729 ! include 'COMMON.FFIELD'
730 ! include 'COMMON.NAMES'
731 ! include 'COMMON.SBRIDGE'
732 ! include 'COMMON.MD'
733 ! include 'COMMON.SETUP'
734 character(len=1) :: t1,t2,t3
735 character(len=1) :: onelett(4) = (/"G","A","P","D"/)
736 character(len=1) :: toronelet(-2:2) = (/"p","a","G","A","P"/)
737 logical :: lprint,LaTeX
738 real(kind=8),dimension(3,3,maxlob) :: blower !(3,3,maxlob)
739 real(kind=8),dimension(13) :: buse
740 character(len=3) :: lancuch !,ucase
742 integer :: m,n,l,i,j,k,iblock,lll,llll,ll,nlobi,mm
743 integer :: maxinter,junk,kk,ii,ncatprotparm
744 real(kind=8) :: v0ijsccor,v0ijsccor1,v0ijsccor2,v0ijsccor3,si,&
745 dwa16,rjunk,akl,v0ij,rri,epsij,rrij,sigeps,sigt1sq,&
746 sigt2sq,sigii1,sigii2,ratsig1,ratsig2,rsum_max,r_augm,&
747 res1,epsijlip,epspeptube,epssctube,sigmapeptube, &
749 integer :: ichir1,ichir2
750 ! real(kind=8),dimension(maxterm,-maxtor:maxtor,-maxtor:maxtor,2) :: v1_el,v2_el !(maxterm,-maxtor:maxtor,-maxtor:maxtor,2)
751 !el allocate(v1_el(maxterm,-maxtor:maxtor,-maxtor:maxtor,2))
752 !el allocate(v2_el(maxterm,-maxtor:maxtor,-maxtor:maxtor,2))
754 ! For printing parameters after they are read set the following in the UNRES
757 ! setenv PRINT_PARM YES
759 ! To print parameters in LaTeX format rather than as ASCII tables:
763 call getenv_loc("PRINT_PARM",lancuch)
764 lprint = (ucase(lancuch).eq."YES" .or. ucase(lancuch).eq."Y")
765 call getenv_loc("LATEX",lancuch)
766 LaTeX = (ucase(lancuch).eq."YES" .or. ucase(lancuch).eq."Y")
768 dwa16=2.0d0**(1.0d0/6.0d0)
770 ! Assign virtual-bond length
773 vblinv2=vblinv*vblinv
775 ! Read the virtual-bond parameters, masses, and moments of inertia
776 ! and Stokes' radii of the peptide group and side chains
778 allocate(dsc(ntyp1)) !(ntyp1)
779 allocate(dsc_inv(ntyp1)) !(ntyp1)
780 allocate(nbondterm_nucl(ntyp_molec(2))) !(ntyp)
781 allocate(vbldsc0_nucl(maxbondterm,ntyp_molec(2))) !(maxbondterm,ntyp)
782 allocate(aksc_nucl(maxbondterm,ntyp_molec(2))) !(maxbondterm,ntyp)
783 allocate(nbondterm(ntyp)) !(ntyp)
784 allocate(vbldsc0(maxbondterm,ntyp)) !(maxbondterm,ntyp)
785 allocate(aksc(maxbondterm,ntyp)) !(maxbondterm,ntyp)
786 allocate(abond0(maxbondterm,ntyp)) !(maxbondterm,ntyp)
787 allocate(long_r_sidechain(ntyp))
788 allocate(short_r_sidechain(ntyp))
793 allocate(msc(ntyp+1)) !(ntyp+1)
794 allocate(isc(ntyp+1)) !(ntyp+1)
795 allocate(restok(ntyp+1)) !(ntyp+1)
797 read (ibond,*) vbldp0,akp,mp,ip,pstok
800 read (ibond,*) vbldsc0(1,i),aksc(1,i),msc(i),isc(i),restok(i)
801 dsc(i) = vbldsc0(1,i)
805 dsc_inv(i)=1.0D0/dsc(i)
809 allocate(msc(ntyp+1,5)) !(ntyp+1)
810 allocate(isc(ntyp+1,5)) !(ntyp+1)
811 allocate(restok(ntyp+1,5)) !(ntyp+1)
813 read (ibond,*) junk,vbldp0,vbldpDUM,akp,rjunk,mp(1),ip(1),pstok(1)
815 read (ibond,*) nbondterm(i),(vbldsc0(j,i),aksc(j,i),abond0(j,i),&
816 j=1,nbondterm(i)),msc(i,1),isc(i,1),restok(i,1)
817 dsc(i) = vbldsc0(1,i)
821 dsc_inv(i)=1.0D0/dsc(i)
825 read (ibond_nucl,*) vbldp0_nucl,akp_nucl,mp(2),ip(2),pstok(2)
828 read (ibond_nucl,*) vbldsc0_nucl(1,i),aksc_nucl(1,i),msc(i,2),isc(i,2),restok(i,2)
829 ! dsc(i) = vbldsc0_nucl(1,i)
833 ! dsc_inv(i)=1.0D0/dsc(i)
836 ! read (ibond_nucl,*) junk,vbldp0_nucl,akp_nucl,rjunk,mp(2),ip(2),pstok(2)
837 ! do i=1,ntyp_molec(2)
838 ! read (ibond_nucl,*) nbondterm_nucl(i),(vbldsc0_nucl(j,i),&
839 ! aksc_nucl(j,i),abond0_nucl(j,i),&
840 ! j=1,nbondterm_nucl(i)),msc(i,2),isc(i,2),restok(i,2)
841 ! dsc(i) = vbldsc0(1,i)
845 ! dsc_inv(i)=1.0D0/dsc(i)
850 write(iout,'(/a/)')"Dynamic constants of the interaction sites:"
851 write (iout,'(a10,a3,6a10)') 'Type','N','VBL','K','A0','mass',&
853 write(iout,'(a10,i3,6f10.5)') "p",1,vbldp0,akp,0.0d0,mp(1),ip(1),pstok(1)
855 write (iout,'(a10,i3,6f10.5)') restyp(i,1),nbondterm(i),&
856 vbldsc0(1,i),aksc(1,i),abond0(1,i),msc(i,1),isc(i,1),restok(i,1)
858 write (iout,'(13x,3f10.5)') &
859 vbldsc0(j,i),aksc(j,i),abond0(j,i)
864 read(iion,*) msc(i,5),restok(i,5)
865 print *,msc(i,5),restok(i,5)
869 read (iion,*) ncatprotparm
870 allocate(catprm(ncatprotparm,4))
872 read (iion,*) (catprm(i,k),i=1,ncatprotparm)
875 ! read (iion,*) (vcatprm(k),k=1,ncatprotpram)
876 !----------------------------------------------------
877 allocate(a0thet(-ntyp:ntyp),theta0(-ntyp:ntyp))
878 allocate(sig0(-ntyp:ntyp),sigc0(-ntyp:ntyp)) !(-ntyp:ntyp)
879 allocate(athet(2,-ntyp:ntyp,-1:1,-1:1))
880 allocate(bthet(2,-ntyp:ntyp,-1:1,-1:1)) !(2,-ntyp:ntyp,-1:1,-1:1)
881 allocate(polthet(0:3,-ntyp:ntyp)) !(0:3,-ntyp:ntyp)
882 allocate(gthet(3,-ntyp:ntyp)) !(3,-ntyp:ntyp)
892 allocate(liptranene(ntyp))
893 !C reading lipid parameters
894 write (iout,*) "iliptranpar",iliptranpar
896 read(iliptranpar,*) pepliptran
899 read(iliptranpar,*) liptranene(i)
900 print *,liptranene(i)
906 ! Read the parameters of the probability distribution/energy expression
907 ! of the virtual-bond valence angles theta
910 read (ithep,*,err=111,end=111) a0thet(i),(athet(j,i,1,1),j=1,2),&
911 (bthet(j,i,1,1),j=1,2)
912 read (ithep,*,err=111,end=111) (polthet(j,i),j=0,3)
913 read (ithep,*,err=111,end=111) (gthet(j,i),j=1,3)
914 read (ithep,*,err=111,end=111) theta0(i),sig0(i),sigc0(i)
918 athet(1,i,1,-1)=athet(1,i,1,1)
919 athet(2,i,1,-1)=athet(2,i,1,1)
920 bthet(1,i,1,-1)=-bthet(1,i,1,1)
921 bthet(2,i,1,-1)=-bthet(2,i,1,1)
922 athet(1,i,-1,1)=-athet(1,i,1,1)
923 athet(2,i,-1,1)=-athet(2,i,1,1)
924 bthet(1,i,-1,1)=bthet(1,i,1,1)
925 bthet(2,i,-1,1)=bthet(2,i,1,1)
929 athet(1,i,-1,-1)=athet(1,-i,1,1)
930 athet(2,i,-1,-1)=-athet(2,-i,1,1)
931 bthet(1,i,-1,-1)=bthet(1,-i,1,1)
932 bthet(2,i,-1,-1)=-bthet(2,-i,1,1)
933 athet(1,i,-1,1)=athet(1,-i,1,1)
934 athet(2,i,-1,1)=-athet(2,-i,1,1)
935 bthet(1,i,-1,1)=-bthet(1,-i,1,1)
936 bthet(2,i,-1,1)=bthet(2,-i,1,1)
937 athet(1,i,1,-1)=-athet(1,-i,1,1)
938 athet(2,i,1,-1)=athet(2,-i,1,1)
939 bthet(1,i,1,-1)=bthet(1,-i,1,1)
940 bthet(2,i,1,-1)=-bthet(2,-i,1,1)
945 polthet(j,i)=polthet(j,-i)
948 gthet(j,i)=gthet(j,-i)
956 'Parameters of the virtual-bond valence angles:'
957 write (iout,'(/a/9x,5a/79(1h-))') 'Fourier coefficients:',&
958 ' ATHETA0 ',' A1 ',' A2 ',&
961 write(iout,'(a3,i4,2x,5(1pe14.5))') restyp(i,1),i,&
962 a0thet(i),(athet(j,i,1,1),j=1,2),(bthet(j,i,1,1),j=1,2)
964 write (iout,'(/a/9x,5a/79(1h-))') &
965 'Parameters of the expression for sigma(theta_c):',&
966 ' ALPH0 ',' ALPH1 ',' ALPH2 ',&
967 ' ALPH3 ',' SIGMA0C '
969 write (iout,'(a3,i4,2x,5(1pe14.5))') restyp(i,1),i,&
970 (polthet(j,i),j=0,3),sigc0(i)
972 write (iout,'(/a/9x,5a/79(1h-))') &
973 'Parameters of the second gaussian:',&
974 ' THETA0 ',' SIGMA0 ',' G1 ',&
977 write (iout,'(a3,i4,2x,5(1pe14.5))') restyp(i,1),i,theta0(i),&
978 sig0(i),(gthet(j,i),j=1,3)
982 'Parameters of the virtual-bond valence angles:'
983 write (iout,'(/a/9x,5a/79(1h-))') &
984 'Coefficients of expansion',&
985 ' theta0 ',' a1*10^2 ',' a2*10^2 ',&
986 ' b1*10^1 ',' b2*10^1 '
988 write(iout,'(a3,1h&,2x,5(f8.3,1h&))') restyp(i,1),&
989 a0thet(i),(100*athet(j,i,1,1),j=1,2),&
990 (10*bthet(j,i,1,1),j=1,2)
992 write (iout,'(/a/9x,5a/79(1h-))') &
993 'Parameters of the expression for sigma(theta_c):',&
994 ' alpha0 ',' alph1 ',' alph2 ',&
995 ' alhp3 ',' sigma0c '
997 write (iout,'(a3,1h&,2x,5(1pe12.3,1h&))') restyp(i,1),&
998 (polthet(j,i),j=0,3),sigc0(i)
1000 write (iout,'(/a/9x,5a/79(1h-))') &
1001 'Parameters of the second gaussian:',&
1002 ' theta0 ',' sigma0*10^2 ',' G1*10^-1',&
1005 write (iout,'(a3,1h&,2x,5(f8.3,1h&))') restyp(i,1),theta0(i),&
1006 100*sig0(i),gthet(1,i)*0.1D0,gthet(2,i),gthet(3,i)*10.0D0
1012 ! Read the parameters of Utheta determined from ab initio surfaces
1013 ! Kozlowska et al., J. Phys.: Condens. Matter 19 (2007) 285203
1015 read (ithep,*,err=111,end=111) nthetyp,ntheterm,ntheterm2,&
1016 ntheterm3,nsingle,ndouble
1017 nntheterm=max0(ntheterm,ntheterm2,ntheterm3)
1019 !----------------------------------------------------
1020 allocate(ithetyp(-ntyp1:ntyp1)) !(-ntyp1:ntyp1)
1021 allocate(aa0thet(-nthetyp-1:nthetyp+1,&
1022 -nthetyp-1:nthetyp+1,-nthetyp-1:nthetyp+1,2))
1023 !(-maxthetyp1:maxthetyp1,-maxthetyp1:maxthetyp1,-maxthetyp1:maxthetyp1,2)
1024 allocate(aathet(ntheterm,-nthetyp-1:nthetyp+1,&
1025 -nthetyp-1:nthetyp+1,-nthetyp-1:nthetyp+1,2))
1026 !(maxtheterm,-maxthetyp1:maxthetyp1,&
1027 ! -maxthetyp1:maxthetyp1,-maxthetyp1:maxthetyp1,2)
1028 allocate(bbthet(nsingle,ntheterm2,-nthetyp-1:nthetyp+1,&
1029 -nthetyp-1:nthetyp+1,-nthetyp-1:nthetyp+1,2))
1030 allocate(ccthet(nsingle,ntheterm2,-nthetyp-1:nthetyp+1,&
1031 -nthetyp-1:nthetyp+1,-nthetyp-1:nthetyp+1,2))
1032 allocate(ddthet(nsingle,ntheterm2,-nthetyp-1:nthetyp+1,&
1033 -nthetyp-1:nthetyp+1,-nthetyp-1:nthetyp+1,2))
1034 allocate(eethet(nsingle,ntheterm2,-nthetyp-1:nthetyp+1,&
1035 -nthetyp-1:nthetyp+1,-nthetyp-1:nthetyp+1,2))
1036 !(maxsingle,maxtheterm2,-maxthetyp1:maxthetyp1,&
1037 ! -maxthetyp1:maxthetyp1,-maxthetyp1:maxthetyp1,2)
1038 allocate(ffthet(ndouble,ndouble,ntheterm3,-nthetyp-1:nthetyp+1,&
1039 -nthetyp-1:nthetyp+1,-nthetyp-1:nthetyp+1,2))
1040 allocate(ggthet(ndouble,ndouble,ntheterm3,-nthetyp-1:nthetyp+1,&
1041 -nthetyp-1:nthetyp+1,-nthetyp-1:nthetyp+1,2))
1042 !(maxdouble,maxdouble,maxtheterm3,-maxthetyp1:maxthetyp1,&
1043 ! -maxthetyp1:maxthetyp1,-maxthetyp1:maxthetyp1,2))
1045 read (ithep,*,err=111,end=111) (ithetyp(i),i=1,ntyp1)
1047 ithetyp(i)=-ithetyp(-i)
1050 aa0thet(:,:,:,:)=0.0d0
1051 aathet(:,:,:,:,:)=0.0d0
1052 bbthet(:,:,:,:,:,:)=0.0d0
1053 ccthet(:,:,:,:,:,:)=0.0d0
1054 ddthet(:,:,:,:,:,:)=0.0d0
1055 eethet(:,:,:,:,:,:)=0.0d0
1056 ffthet(:,:,:,:,:,:,:)=0.0d0
1057 ggthet(:,:,:,:,:,:,:)=0.0d0
1059 ! VAR:iblock means terminally blocking group 1=non-proline 2=proline
1061 ! VAR:ntethtyp is type of theta potentials type currently 0=glycine
1062 ! VAR:1=non-glicyne non-proline 2=proline
1063 ! VAR:negative values for D-aminoacid
1065 do j=-nthetyp,nthetyp
1066 do k=-nthetyp,nthetyp
1067 read (ithep,'(6a)',end=111,err=111) res1
1068 read (ithep,*,end=111,err=111) aa0thet(i,j,k,iblock)
1069 ! VAR: aa0thet is variable describing the average value of Foureir
1070 ! VAR: expansion series
1071 ! VAR: aathet is foureir expansion in theta/2 angle for full formula
1072 ! VAR: look at the fitting equation in Kozlowska et al., J. Phys.:
1073 !ondens. Matter 19 (2007) 285203 and Sieradzan et al., unpublished
1074 read (ithep,*,end=111,err=111) &
1075 (aathet(l,i,j,k,iblock),l=1,ntheterm)
1076 read (ithep,*,end=111,err=111) &
1077 ((bbthet(lll,ll,i,j,k,iblock),lll=1,nsingle),&
1078 (ccthet(lll,ll,i,j,k,iblock),lll=1,nsingle),&
1079 (ddthet(lll,ll,i,j,k,iblock),lll=1,nsingle),&
1080 (eethet(lll,ll,i,j,k,iblock),lll=1,nsingle),&
1082 read (ithep,*,end=111,err=111) &
1083 (((ffthet(llll,lll,ll,i,j,k,iblock),&
1084 ffthet(lll,llll,ll,i,j,k,iblock),&
1085 ggthet(llll,lll,ll,i,j,k,iblock),&
1086 ggthet(lll,llll,ll,i,j,k,iblock),&
1087 llll=1,lll-1),lll=2,ndouble),ll=1,ntheterm3)
1092 ! For dummy ends assign glycine-type coefficients of theta-only terms; the
1093 ! coefficients of theta-and-gamma-dependent terms are zero.
1094 ! IF YOU WANT VALENCE POTENTIALS FOR DUMMY ATOM UNCOMENT BELOW (NOT
1095 ! RECOMENTDED AFTER VERSION 3.3)
1099 ! aathet(l,i,j,nthetyp+1,iblock)=aathet(l,i,j,1,iblock)
1100 ! aathet(l,nthetyp+1,i,j,iblock)=aathet(l,1,i,j,iblock)
1102 ! aa0thet(i,j,nthetyp+1,iblock)=aa0thet(i,j,1,iblock)
1103 ! aa0thet(nthetyp+1,i,j,iblock)=aa0thet(1,i,j,iblock)
1106 ! aathet(l,nthetyp+1,i,nthetyp+1,iblock)=aathet(l,1,i,1,iblock)
1108 ! aa0thet(nthetyp+1,i,nthetyp+1,iblock)=aa0thet(1,i,1,iblock)
1111 ! AND COMMENT THE LOOPS BELOW
1115 aathet(l,i,j,nthetyp+1,iblock)=0.0d0
1116 aathet(l,nthetyp+1,i,j,iblock)=0.0d0
1118 aa0thet(i,j,nthetyp+1,iblock)=0.0d0
1119 aa0thet(nthetyp+1,i,j,iblock)=0.0d0
1122 aathet(l,nthetyp+1,i,nthetyp+1,iblock)=0.0d0
1124 aa0thet(nthetyp+1,i,nthetyp+1,iblock)=0.0d0
1129 ! Substitution for D aminoacids from symmetry.
1132 do j=-nthetyp,nthetyp
1133 do k=-nthetyp,nthetyp
1134 aa0thet(i,j,k,iblock)=aa0thet(-i,-j,-k,iblock)
1136 aathet(l,i,j,k,iblock)=aathet(l,-i,-j,-k,iblock)
1140 bbthet(lll,ll,i,j,k,iblock)=bbthet(lll,ll,-i,-j,-k,iblock)
1141 ccthet(lll,ll,i,j,k,iblock)=-ccthet(lll,ll,-i,-j,-k,iblock)
1142 ddthet(lll,ll,i,j,k,iblock)=ddthet(lll,ll,-i,-j,-k,iblock)
1143 eethet(lll,ll,i,j,k,iblock)=-eethet(lll,ll,-i,-j,-k,iblock)
1149 ffthet(llll,lll,ll,i,j,k,iblock)= &
1150 ffthet(llll,lll,ll,-i,-j,-k,iblock)
1151 ffthet(lll,llll,ll,i,j,k,iblock)= &
1152 ffthet(lll,llll,ll,-i,-j,-k,iblock)
1153 ggthet(llll,lll,ll,i,j,k,iblock)= &
1154 -ggthet(llll,lll,ll,-i,-j,-k,iblock)
1155 ggthet(lll,llll,ll,i,j,k,iblock)= &
1156 -ggthet(lll,llll,ll,-i,-j,-k,iblock)
1165 ! Control printout of the coefficients of virtual-bond-angle potentials
1168 write (iout,'(//a)') 'Parameter of virtual-bond-angle potential'
1173 write (iout,'(//4a)') &
1174 'Type ',onelett(i),onelett(j),onelett(k)
1175 write (iout,'(//a,10x,a)') " l","a[l]"
1176 write (iout,'(i2,1pe15.5)') 0,aa0thet(i,j,k,iblock)
1177 write (iout,'(i2,1pe15.5)') &
1178 (l,aathet(l,i,j,k,iblock),l=1,ntheterm)
1180 write (iout,'(//2h m,4(9x,a,3h[m,,i1,1h]))') &
1181 "b",l,"c",l,"d",l,"e",l
1183 write (iout,'(i2,4(1pe15.5))') m,&
1184 bbthet(m,l,i,j,k,iblock),ccthet(m,l,i,j,k,iblock),&
1185 ddthet(m,l,i,j,k,iblock),eethet(m,l,i,j,k,iblock)
1189 write (iout,'(//3hm,n,4(6x,a,5h[m,n,,i1,1h]))') &
1190 "f+",l,"f-",l,"g+",l,"g-",l
1193 write (iout,'(i1,1x,i1,4(1pe15.5))') n,m,&
1194 ffthet(n,m,l,i,j,k,iblock),&
1195 ffthet(m,n,l,i,j,k,iblock),&
1196 ggthet(n,m,l,i,j,k,iblock),&
1197 ggthet(m,n,l,i,j,k,iblock)
1207 write (2,*) "Start reading THETA_PDB",ithep_pdb
1209 ! write (2,*) 'i=',i
1210 read (ithep_pdb,*,err=111,end=111) &
1211 a0thet(i),(athet(j,i,1,1),j=1,2),&
1212 (bthet(j,i,1,1),j=1,2)
1213 read (ithep_pdb,*,err=111,end=111) (polthet(j,i),j=0,3)
1214 read (ithep_pdb,*,err=111,end=111) (gthet(j,i),j=1,3)
1215 read (ithep_pdb,*,err=111,end=111) theta0(i),sig0(i),sigc0(i)
1216 sigc0(i)=sigc0(i)**2
1219 athet(1,i,1,-1)=athet(1,i,1,1)
1220 athet(2,i,1,-1)=athet(2,i,1,1)
1221 bthet(1,i,1,-1)=-bthet(1,i,1,1)
1222 bthet(2,i,1,-1)=-bthet(2,i,1,1)
1223 athet(1,i,-1,1)=-athet(1,i,1,1)
1224 athet(2,i,-1,1)=-athet(2,i,1,1)
1225 bthet(1,i,-1,1)=bthet(1,i,1,1)
1226 bthet(2,i,-1,1)=bthet(2,i,1,1)
1229 a0thet(i)=a0thet(-i)
1230 athet(1,i,-1,-1)=athet(1,-i,1,1)
1231 athet(2,i,-1,-1)=-athet(2,-i,1,1)
1232 bthet(1,i,-1,-1)=bthet(1,-i,1,1)
1233 bthet(2,i,-1,-1)=-bthet(2,-i,1,1)
1234 athet(1,i,-1,1)=athet(1,-i,1,1)
1235 athet(2,i,-1,1)=-athet(2,-i,1,1)
1236 bthet(1,i,-1,1)=-bthet(1,-i,1,1)
1237 bthet(2,i,-1,1)=bthet(2,-i,1,1)
1238 athet(1,i,1,-1)=-athet(1,-i,1,1)
1239 athet(2,i,1,-1)=athet(2,-i,1,1)
1240 bthet(1,i,1,-1)=bthet(1,-i,1,1)
1241 bthet(2,i,1,-1)=-bthet(2,-i,1,1)
1242 theta0(i)=theta0(-i)
1246 polthet(j,i)=polthet(j,-i)
1249 gthet(j,i)=gthet(j,-i)
1252 write (2,*) "End reading THETA_PDB"
1256 !--------------- Reading theta parameters for nucleic acid-------
1257 read (ithep_nucl,*,err=111,end=111) nthetyp_nucl,ntheterm_nucl,&
1258 ntheterm2_nucl,ntheterm3_nucl,nsingle_nucl,ndouble_nucl
1259 nntheterm_nucl=max0(ntheterm_nucl,ntheterm2_nucl,ntheterm3_nucl)
1260 allocate(ithetyp_nucl(ntyp1_molec(2))) !(-ntyp1:ntyp1)
1261 allocate(aa0thet_nucl(nthetyp_nucl+1,&
1262 nthetyp_nucl+1,nthetyp_nucl+1))
1263 !(-maxthetyp1:maxthetyp1,-maxthetyp1:maxthetyp1,-maxthetyp1:maxthetyp1,2)
1264 allocate(aathet_nucl(ntheterm_nucl+1,nthetyp_nucl+1,&
1265 nthetyp_nucl+1,nthetyp_nucl+1))
1266 !(maxtheterm,-maxthetyp1:maxthetyp1,&
1267 ! -maxthetyp1:maxthetyp1,-maxthetyp1:maxthetyp1,2)
1268 allocate(bbthet_nucl(nsingle_nucl+1,ntheterm2_nucl+1,nthetyp_nucl+1,&
1269 nthetyp_nucl+1,nthetyp_nucl+1))
1270 allocate(ccthet_nucl(nsingle_nucl+1,ntheterm2_nucl+1,nthetyp_nucl+1,&
1271 nthetyp_nucl+1,nthetyp_nucl+1))
1272 allocate(ddthet_nucl(nsingle_nucl+1,ntheterm2_nucl+1,nthetyp_nucl+1,&
1273 nthetyp_nucl+1,nthetyp_nucl+1))
1274 allocate(eethet_nucl(nsingle_nucl+1,ntheterm2_nucl+1,nthetyp_nucl+1,&
1275 nthetyp_nucl+1,nthetyp_nucl+1))
1276 !(maxsingle,maxtheterm2,-maxthetyp1:maxthetyp1,&
1277 ! -maxthetyp1:maxthetyp1,-maxthetyp1:maxthetyp1,2)
1278 allocate(ffthet_nucl(ndouble_nucl+1,ndouble_nucl+1,ntheterm3_nucl+1,&
1279 nthetyp_nucl+1,nthetyp_nucl+1,nthetyp_nucl+1))
1280 allocate(ggthet_nucl(ndouble_nucl+1,ndouble_nucl+1,ntheterm3_nucl+1,&
1281 nthetyp_nucl+1,nthetyp_nucl+1,nthetyp_nucl+1))
1283 !(maxdouble,maxdouble,maxtheterm3,-maxthetyp1:maxthetyp1,&
1284 ! -maxthetyp1:maxthetyp1,-maxthetyp1:maxthetyp1,2))
1286 read (ithep_nucl,*,err=111,end=111) (ithetyp_nucl(i),i=1,ntyp1_molec(2))
1288 aa0thet_nucl(:,:,:)=0.0d0
1289 aathet_nucl(:,:,:,:)=0.0d0
1290 bbthet_nucl(:,:,:,:,:)=0.0d0
1291 ccthet_nucl(:,:,:,:,:)=0.0d0
1292 ddthet_nucl(:,:,:,:,:)=0.0d0
1293 eethet_nucl(:,:,:,:,:)=0.0d0
1294 ffthet_nucl(:,:,:,:,:,:)=0.0d0
1295 ggthet_nucl(:,:,:,:,:,:)=0.0d0
1300 read (ithep_nucl,'(3a)',end=111,err=111) t1,t2,t3
1301 read (ithep_nucl,*,end=111,err=111) aa0thet_nucl(i,j,k)
1302 read (ithep_nucl,*,end=111,err=111)(aathet_nucl(l,i,j,k),l=1,ntheterm_nucl)
1303 read (ithep_nucl,*,end=111,err=111) &
1304 (((bbthet_nucl(lll,ll,i,j,k),lll=1,nsingle_nucl), &
1305 (ccthet_nucl(lll,ll,i,j,k),lll=1,nsingle_nucl), &
1306 (ddthet_nucl(lll,ll,i,j,k),lll=1,nsingle_nucl), &
1307 (eethet_nucl(lll,ll,i,j,k),lll=1,nsingle_nucl)),ll=1,ntheterm2_nucl)
1308 read (ithep_nucl,*,end=111,err=111) &
1309 (((ffthet_nucl(llll,lll,ll,i,j,k),ffthet_nucl(lll,llll,ll,i,j,k), &
1310 ggthet_nucl(llll,lll,ll,i,j,k),ggthet_nucl(lll,llll,ll,i,j,k), &
1311 llll=1,lll-1),lll=2,ndouble_nucl),ll=1,ntheterm3_nucl)
1316 !-------------------------------------------
1317 allocate(nlob(ntyp1)) !(ntyp1)
1318 allocate(bsc(maxlob,ntyp)) !(maxlob,ntyp)
1319 allocate(censc(3,maxlob,-ntyp:ntyp)) !(3,maxlob,-ntyp:ntyp)
1320 allocate(gaussc(3,3,maxlob,-ntyp:ntyp)) !(3,3,maxlob,-ntyp:ntyp)
1327 gaussc(:,:,:,:)=0.0D0
1331 ! Read the parameters of the probability distribution/energy expression
1332 ! of the side chains.
1335 read (irotam,'(3x,i3,f8.3)',end=112,err=112) nlob(i),dsc(i)
1339 dsc_inv(i)=1.0D0/dsc(i)
1350 read(irotam,*,end=112,err=112)(censc(k,1,i),k=1,3),&
1351 ((blower(k,l,1),l=1,k),k=1,3)
1352 censc(1,1,-i)=censc(1,1,i)
1353 censc(2,1,-i)=censc(2,1,i)
1354 censc(3,1,-i)=-censc(3,1,i)
1356 read (irotam,*,end=112,err=112) bsc(j,i)
1357 read (irotam,*,end=112,err=112) (censc(k,j,i),k=1,3),&
1358 ((blower(k,l,j),l=1,k),k=1,3)
1359 censc(1,j,-i)=censc(1,j,i)
1360 censc(2,j,-i)=censc(2,j,i)
1361 censc(3,j,-i)=-censc(3,j,i)
1362 ! BSC is amplitude of Gaussian
1369 akl=akl+blower(k,m,j)*blower(l,m,j)
1373 if (((k.eq.3).and.(l.ne.3)) &
1374 .or.((l.eq.3).and.(k.ne.3))) then
1375 gaussc(k,l,j,-i)=-akl
1376 gaussc(l,k,j,-i)=-akl
1378 gaussc(k,l,j,-i)=akl
1379 gaussc(l,k,j,-i)=akl
1388 write (iout,'(/a)') 'Parameters of side-chain local geometry'
1391 if (nlobi.gt.0) then
1393 write (iout,'(/3a,i2,a,f8.3)') 'Residue type: ',restyp(i,1),&
1394 ' # of gaussian lobes:',nlobi,' dsc:',dsc(i)
1395 write (iout,'(1h&,a,3(2h&&,f8.3,2h&&))') &
1396 'log h',(bsc(j,i),j=1,nlobi)
1397 write (iout,'(1h&,a,3(1h&,f8.3,1h&,f8.3,1h&,f8.3,1h&))') &
1398 'x',((censc(k,j,i),k=1,3),j=1,nlobi)
1400 write (iout,'(2h& ,5(2x,1h&,3(f7.3,1h&)))') &
1401 ((gaussc(k,l,j,i),l=1,3),j=1,nlobi)
1404 write (iout,'(/a,8x,i1,4(25x,i1))') 'Lobe:',(j,j=1,nlobi)
1405 write (iout,'(a,f10.4,4(16x,f10.4))') &
1406 'Center ',(bsc(j,i),j=1,nlobi)
1407 write (iout,'(5(2x,3f8.4))') ((censc(k,j,i),k=1,3),&
1416 ! Read scrot parameters for potentials determined from all-atom AM1 calculations
1417 ! added by Urszula Kozlowska 07/11/2007
1419 !el Maximum number of SC local term fitting function coefficiants
1420 !el integer,parameter :: maxsccoef=65
1422 allocate(sc_parmin(65,ntyp)) !(maxsccoef,ntyp)
1425 read (irotam,*,end=112,err=112)
1427 read (irotam,*,end=112,err=112)
1430 read(irotam,*,end=112,err=112) sc_parmin(j,i)
1434 !---------reading nucleic acid parameters for rotamers-------------------
1435 allocate(sc_parmin_nucl(9,ntyp_molec(2))) !(maxsccoef,ntyp)
1436 do i=1,ntyp_molec(2)
1437 read (irotam_nucl,*,end=112,err=112)
1439 read(irotam_nucl,*,end=112,err=112) sc_parmin_nucl(j,i)
1445 write (iout,*) "Base rotamer parameters"
1446 do i=1,ntyp_molec(2)
1447 write (iout,'(a)') restyp(i,2)
1448 write (iout,'(i5,f10.5)') (i,sc_parmin_nucl(j,i),j=1,9)
1453 ! Read the parameters of the probability distribution/energy expression
1454 ! of the side chains.
1456 write (2,*) "Start reading ROTAM_PDB"
1458 read (irotam_pdb,'(3x,i3,f8.3)',end=112,err=112) nlob(i),dsc(i)
1462 dsc_inv(i)=1.0D0/dsc(i)
1473 read(irotam_pdb,*,end=112,err=112)(censc(k,1,i),k=1,3),&
1474 ((blower(k,l,1),l=1,k),k=1,3)
1476 read (irotam_pdb,*,end=112,err=112) bsc(j,i)
1477 read (irotam_pdb,*,end=112,err=112) (censc(k,j,i),k=1,3),&
1478 ((blower(k,l,j),l=1,k),k=1,3)
1485 akl=akl+blower(k,m,j)*blower(l,m,j)
1495 write (2,*) "End reading ROTAM_PDB"
1501 ! Read torsional parameters in old format
1503 allocate(itortyp(ntyp1)) !(-ntyp1:ntyp1)
1505 read (itorp,*,end=113,err=113) ntortyp,nterm_old
1506 if (lprint)write (iout,*) 'ntortyp,nterm',ntortyp,nterm_old
1507 read (itorp,*,end=113,err=113) (itortyp(i),i=1,ntyp)
1509 !el from energy module--------
1510 allocate(v1(nterm_old,ntortyp,ntortyp))
1511 allocate(v2(nterm_old,ntortyp,ntortyp)) !(maxterm,-maxtor:maxtor,-maxtor:maxtor)
1512 !el---------------------------
1517 read (itorp,*,end=113,err=113) kk,v1(k,j,i),v2(k,j,i)
1523 write (iout,'(/a/)') 'Torsional constants:'
1526 write (iout,'(2i3,6f10.5)') i,j,(v1(k,i,j),k=1,nterm_old)
1527 write (iout,'(6x,6f10.5)') (v2(k,i,j),k=1,nterm_old)
1533 ! Read torsional parameters
1535 allocate(itortyp(-ntyp1:ntyp1)) !(-ntyp1:ntyp1)
1536 read (itorp,*,end=113,err=113) ntortyp
1537 !el from energy module---------
1538 allocate(nterm(-ntortyp:ntortyp,-ntortyp:ntortyp,2)) !(-maxtor:maxtor,-maxtor:maxtor,2)
1539 allocate(nlor(-ntortyp:ntortyp,-ntortyp:ntortyp,2)) !(-maxtor:maxtor,-maxtor:maxtor,2)
1541 allocate(vlor1(maxlor,-ntortyp:ntortyp,-ntortyp:ntortyp)) !(maxlor,-maxtor:maxtor,-maxtor:maxtor)
1542 allocate(vlor2(maxlor,ntortyp,ntortyp))
1543 allocate(vlor3(maxlor,ntortyp,ntortyp)) !(maxlor,maxtor,maxtor)
1544 allocate(v0(-ntortyp:ntortyp,-ntortyp:ntortyp,2)) !(-maxtor:maxtor,-maxtor:maxtor,2)
1546 allocate(v1(maxterm,-ntortyp:ntortyp,-ntortyp:ntortyp,2))
1547 allocate(v2(maxterm,-ntortyp:ntortyp,-ntortyp:ntortyp,2)) !(maxterm,-maxtor:maxtor,-maxtor:maxtor,2)
1548 !el---------------------------
1551 !el---------------------------
1553 read (itorp,*,end=113,err=113) (itortyp(i),i=1,ntyp)
1555 itortyp(i)=-itortyp(-i)
1557 itortyp(ntyp1)=ntortyp
1558 itortyp(-ntyp1)=-ntortyp
1560 write (iout,*) 'ntortyp',ntortyp
1562 do j=-ntortyp+1,ntortyp-1
1563 read (itorp,*,end=113,err=113) nterm(i,j,iblock),&
1565 nterm(-i,-j,iblock)=nterm(i,j,iblock)
1566 nlor(-i,-j,iblock)=nlor(i,j,iblock)
1569 do k=1,nterm(i,j,iblock)
1570 read (itorp,*,end=113,err=113) kk,v1(k,i,j,iblock),&
1572 v1(k,-i,-j,iblock)=v1(k,i,j,iblock)
1573 v2(k,-i,-j,iblock)=-v2(k,i,j,iblock)
1574 v0ij=v0ij+si*v1(k,i,j,iblock)
1576 ! write(iout,*) i,j,k,iblock,nterm(i,j,iblock) !
1577 ! write(iout,*) v1(k,-i,-j,iblock),v1(k,i,j,iblock),&!
1578 ! v2(k,-i,-j,iblock),v2(k,i,j,iblock)!
1580 do k=1,nlor(i,j,iblock)
1581 read (itorp,*,end=113,err=113) kk,vlor1(k,i,j),&
1582 vlor2(k,i,j),vlor3(k,i,j)
1583 v0ij=v0ij+vlor1(k,i,j)/(1+vlor3(k,i,j)**2)
1586 v0(-i,-j,iblock)=v0ij
1592 write (iout,'(/a/)') 'Torsional constants:'
1594 do i=-ntortyp,ntortyp
1595 do j=-ntortyp,ntortyp
1596 write (iout,*) 'ityp',i,' jtyp',j
1597 write (iout,*) 'Fourier constants'
1598 do k=1,nterm(i,j,iblock)
1599 write (iout,'(2(1pe15.5))') v1(k,i,j,iblock),&
1602 write (iout,*) 'Lorenz constants'
1603 do k=1,nlor(i,j,iblock)
1604 write (iout,'(3(1pe15.5))') &
1605 vlor1(k,i,j),vlor2(k,i,j),vlor3(k,i,j)
1611 !elwrite (iout,'(/a/)') 'Torsional constants:',vlor1(k,i,j),vlor2(k,i,j),vlor3(k,i,j)
1613 ! 6/23/01 Read parameters for double torsionals
1615 !el from energy module------------
1616 allocate(v1c(2,maxtermd_1,-ntortyp+1:ntortyp-1,-ntortyp+1:ntortyp-1,-ntortyp+1:ntortyp-1,2))
1617 allocate(v1s(2,maxtermd_1,-ntortyp+1:ntortyp-1,-ntortyp+1:ntortyp-1,-ntortyp+1:ntortyp-1,2))
1618 !(2,maxtermd_1,-maxtor:maxtor,-maxtor:maxtor,-maxtor:maxtor,2)
1619 allocate(v2c(maxtermd_2,maxtermd_2,-ntortyp+1:ntortyp-1,-ntortyp+1:ntortyp-1,-ntortyp+1:ntortyp-1,2))
1620 allocate(v2s(maxtermd_2,maxtermd_2,-ntortyp+1:ntortyp-1,-ntortyp+1:ntortyp-1,-ntortyp+1:ntortyp-1,2))
1621 !(maxtermd_2,maxtermd_2,-maxtor:maxtor,-maxtor:maxtor,-maxtor:maxtor,2)
1622 allocate(ntermd_1(-ntortyp+1:ntortyp-1,-ntortyp+1:ntortyp-1,-ntortyp+1:ntortyp-1,2))
1623 allocate(ntermd_2(-ntortyp+1:ntortyp-1,-ntortyp+1:ntortyp-1,-ntortyp+1:ntortyp-1,2))
1624 !(-maxtor:maxtor,-maxtor:maxtor,-maxtor:maxtor,2)
1625 !---------------------------------
1629 do j=-ntortyp+1,ntortyp-1
1630 do k=-ntortyp+1,ntortyp-1
1631 read (itordp,'(3a1)',end=114,err=114) t1,t2,t3
1632 ! write (iout,*) "OK onelett",
1635 if (t1.ne.toronelet(i) .or. t2.ne.toronelet(j) &
1636 .or. t3.ne.toronelet(k)) then
1637 write (iout,*) "Error in double torsional parameter file",&
1640 call MPI_Finalize(Ierror)
1642 stop "Error in double torsional parameter file"
1644 read (itordp,*,end=114,err=114) ntermd_1(i,j,k,iblock),&
1645 ntermd_2(i,j,k,iblock)
1646 ntermd_1(-i,-j,-k,iblock)=ntermd_1(i,j,k,iblock)
1647 ntermd_2(-i,-j,-k,iblock)=ntermd_2(i,j,k,iblock)
1648 read (itordp,*,end=114,err=114) (v1c(1,l,i,j,k,iblock),l=1,&
1649 ntermd_1(i,j,k,iblock))
1650 read (itordp,*,end=114,err=114) (v1s(1,l,i,j,k,iblock),l=1,&
1651 ntermd_1(i,j,k,iblock))
1652 read (itordp,*,end=114,err=114) (v1c(2,l,i,j,k,iblock),l=1,&
1653 ntermd_1(i,j,k,iblock))
1654 read (itordp,*,end=114,err=114) (v1s(2,l,i,j,k,iblock),l=1,&
1655 ntermd_1(i,j,k,iblock))
1656 ! Martix of D parameters for one dimesional foureir series
1657 do l=1,ntermd_1(i,j,k,iblock)
1658 v1c(1,l,-i,-j,-k,iblock)=v1c(1,l,i,j,k,iblock)
1659 v1s(1,l,-i,-j,-k,iblock)=-v1s(1,l,i,j,k,iblock)
1660 v1c(2,l,-i,-j,-k,iblock)=v1c(2,l,i,j,k,iblock)
1661 v1s(2,l,-i,-j,-k,iblock)=-v1s(2,l,i,j,k,iblock)
1662 ! write(iout,*) "whcodze" ,
1663 ! & v1s(2,l,-i,-j,-k,iblock),v1s(2,l,i,j,k,iblock)
1665 read (itordp,*,end=114,err=114) ((v2c(l,m,i,j,k,iblock),&
1666 v2c(m,l,i,j,k,iblock),v2s(l,m,i,j,k,iblock),&
1667 v2s(m,l,i,j,k,iblock),&
1668 m=1,l-1),l=1,ntermd_2(i,j,k,iblock))
1669 ! Martix of D parameters for two dimesional fourier series
1670 do l=1,ntermd_2(i,j,k,iblock)
1672 v2c(l,m,-i,-j,-k,iblock)=v2c(l,m,i,j,k,iblock)
1673 v2c(m,l,-i,-j,-k,iblock)=v2c(m,l,i,j,k,iblock)
1674 v2s(l,m,-i,-j,-k,iblock)=-v2s(l,m,i,j,k,iblock)
1675 v2s(m,l,-i,-j,-k,iblock)=-v2s(m,l,i,j,k,iblock)
1684 write (iout,*) 'Constants for double torsionals'
1687 do j=-ntortyp+1,ntortyp-1
1688 do k=-ntortyp+1,ntortyp-1
1689 write (iout,*) 'ityp',i,' jtyp',j,' ktyp',k,&
1690 ' nsingle',ntermd_1(i,j,k,iblock),&
1691 ' ndouble',ntermd_2(i,j,k,iblock)
1693 write (iout,*) 'Single angles:'
1694 do l=1,ntermd_1(i,j,k,iblock)
1695 write (iout,'(i5,2f10.5,5x,2f10.5,5x,2f10.5)') l,&
1696 v1c(1,l,i,j,k,iblock),v1s(1,l,i,j,k,iblock),&
1697 v1c(2,l,i,j,k,iblock),v1s(2,l,i,j,k,iblock),&
1698 v1s(1,l,-i,-j,-k,iblock),v1s(2,l,-i,-j,-k,iblock)
1701 write (iout,*) 'Pairs of angles:'
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,(v2c(l,m,i,j,k,iblock),m=1,ntermd_2(i,j,k,iblock))
1708 write (iout,'(3x,20i10)') (l,l=1,ntermd_2(i,j,k,iblock))
1709 do l=1,ntermd_2(i,j,k,iblock)
1710 write (iout,'(i5,20f10.5)') &
1711 l,(v2s(l,m,i,j,k,iblock),m=1,ntermd_2(i,j,k,iblock)),&
1712 (v2s(l,m,-i,-j,-k,iblock),m=1,ntermd_2(i,j,k,iblock))
1721 allocate(itortyp_nucl(ntyp1_molec(2))) !(-ntyp1:ntyp1)
1722 read (itorp_nucl,*,end=113,err=113) ntortyp_nucl
1723 ! print *,"ntortyp_nucl",ntortyp_nucl,ntyp_molec(2)
1724 !el from energy module---------
1725 allocate(nterm_nucl(ntortyp_nucl,ntortyp_nucl)) !(-maxtor:maxtor,-maxtor:maxtor,2)
1726 allocate(nlor_nucl(ntortyp_nucl,ntortyp_nucl)) !(-maxtor:maxtor,-maxtor:maxtor,2)
1728 allocate(vlor1_nucl(maxlor,ntortyp_nucl,ntortyp_nucl)) !(maxlor,-maxtor:maxtor,-maxtor:maxtor)
1729 allocate(vlor2_nucl(maxlor,ntortyp_nucl,ntortyp_nucl))
1730 allocate(vlor3_nucl(maxlor,ntortyp_nucl,ntortyp_nucl)) !(maxlor,maxtor,maxtor)
1731 allocate(v0_nucl(ntortyp_nucl,ntortyp_nucl)) !(-maxtor:maxtor,-maxtor:maxtor,2)
1733 allocate(v1_nucl(maxterm,ntortyp_nucl,ntortyp_nucl))
1734 allocate(v2_nucl(maxterm,ntortyp_nucl,ntortyp_nucl)) !(maxterm,-maxtor:maxtor,-maxtor:maxtor,2)
1735 !el---------------------------
1738 !el--------------------
1739 read (itorp_nucl,*,end=113,err=113) &
1740 (itortyp_nucl(i),i=1,ntyp_molec(2))
1741 ! print *,itortyp_nucl(:)
1742 !c write (iout,*) 'ntortyp',ntortyp
1745 read (itorp_nucl,*,end=113,err=113) nterm_nucl(i,j),nlor_nucl(i,j)
1746 ! print *,nterm_nucl(i,j),nlor_nucl(i,j)
1749 do k=1,nterm_nucl(i,j)
1750 read (itorp_nucl,*,end=113,err=113) kk,v1_nucl(k,i,j),v2_nucl(k,i,j)
1751 v0ij=v0ij+si*v1_nucl(k,i,j)
1754 do k=1,nlor_nucl(i,j)
1755 read (itorp,*,end=113,err=113) kk,vlor1_nucl(k,i,j),&
1756 vlor2_nucl(k,i,j),vlor3_nucl(k,i,j)
1757 v0ij=v0ij+vlor1_nucl(k,i,j)/(1+vlor3_nucl(k,i,j)**2)
1763 ! Read of Side-chain backbone correlation parameters
1764 ! Modified 11 May 2012 by Adasko
1767 read (isccor,*,end=119,err=119) nsccortyp
1769 !el from module energy-------------
1770 allocate(nlor_sccor(nsccortyp,nsccortyp)) !(-ntyp:ntyp,-ntyp:ntyp)
1771 allocate(vlor1sccor(maxterm_sccor,nsccortyp,nsccortyp))
1772 allocate(vlor2sccor(maxterm_sccor,nsccortyp,nsccortyp))
1773 allocate(vlor3sccor(maxterm_sccor,nsccortyp,nsccortyp)) !(maxterm_sccor,20,20)
1774 !-----------------------------------
1776 !el from module energy-------------
1777 allocate(isccortyp(-ntyp:ntyp)) !(-ntyp:ntyp)
1779 read (isccor,*,end=119,err=119) (isccortyp(i),i=1,ntyp)
1781 isccortyp(i)=-isccortyp(-i)
1783 iscprol=isccortyp(20)
1784 ! write (iout,*) 'ntortyp',ntortyp
1786 !c maxinter is maximum interaction sites
1787 !el from module energy---------
1788 allocate(nterm_sccor(-nsccortyp:nsccortyp,-nsccortyp:nsccortyp)) !(-ntyp:ntyp,-ntyp:ntyp)
1789 allocate(v1sccor(maxterm_sccor,maxinter,-nsccortyp:nsccortyp,&
1790 -nsccortyp:nsccortyp))
1791 allocate(v2sccor(maxterm_sccor,maxinter,-nsccortyp:nsccortyp,&
1792 -nsccortyp:nsccortyp)) !(maxterm_sccor,3,-ntyp:ntyp,-ntyp:ntyp)
1793 allocate(v0sccor(maxinter,-nsccortyp:nsccortyp,&
1794 -nsccortyp:nsccortyp)) !(maxterm_sccor,-ntyp:ntyp,-ntyp:ntyp)
1795 !-----------------------------------
1799 read (isccor,*,end=119,err=119) &
1800 nterm_sccor(i,j),nlor_sccor(i,j)
1806 nterm_sccor(-i,j)=nterm_sccor(i,j)
1807 nterm_sccor(-i,-j)=nterm_sccor(i,j)
1808 nterm_sccor(i,-j)=nterm_sccor(i,j)
1809 do k=1,nterm_sccor(i,j)
1810 read (isccor,*,end=119,err=119) kk,v1sccor(k,l,i,j),&
1812 if (j.eq.iscprol) then
1813 if (i.eq.isccortyp(10)) then
1814 v1sccor(k,l,i,-j)=v1sccor(k,l,i,j)
1815 v2sccor(k,l,i,-j)=-v2sccor(k,l,i,j)
1817 v1sccor(k,l,i,-j)=v1sccor(k,l,i,j)*0.5d0 &
1818 +v2sccor(k,l,i,j)*dsqrt(0.75d0)
1819 v2sccor(k,l,i,-j)=-v2sccor(k,l,i,j)*0.5d0 &
1820 +v1sccor(k,l,i,j)*dsqrt(0.75d0)
1821 v1sccor(k,l,-i,-j)=v1sccor(k,l,i,j)
1822 v2sccor(k,l,-i,-j)=-v2sccor(k,l,i,j)
1823 v1sccor(k,l,-i,j)=v1sccor(k,l,i,-j)
1824 v2sccor(k,l,-i,j)=-v2sccor(k,l,i,-j)
1827 if (i.eq.isccortyp(10)) then
1828 v1sccor(k,l,i,-j)=v1sccor(k,l,i,j)
1829 v2sccor(k,l,i,-j)=-v2sccor(k,l,i,j)
1831 if (j.eq.isccortyp(10)) then
1832 v1sccor(k,l,-i,j)=v1sccor(k,l,i,j)
1833 v2sccor(k,l,-i,j)=-v2sccor(k,l,i,j)
1835 v1sccor(k,l,i,-j)=-v1sccor(k,l,i,j)
1836 v2sccor(k,l,i,-j)=-v2sccor(k,l,i,j)
1837 v1sccor(k,l,-i,-j)=v1sccor(k,l,i,j)
1838 v2sccor(k,l,-i,-j)=-v2sccor(k,l,i,j)
1839 v1sccor(k,l,-i,j)=v1sccor(k,l,i,-j)
1840 v2sccor(k,l,-i,j)=-v2sccor(k,l,i,-j)
1844 v0ijsccor=v0ijsccor+si*v1sccor(k,l,i,j)
1845 v0ijsccor1=v0ijsccor+si*v1sccor(k,l,-i,j)
1846 v0ijsccor2=v0ijsccor+si*v1sccor(k,l,i,-j)
1847 v0ijsccor3=v0ijsccor+si*v1sccor(k,l,-i,-j)
1850 do k=1,nlor_sccor(i,j)
1851 read (isccor,*,end=119,err=119) kk,vlor1sccor(k,i,j),&
1852 vlor2sccor(k,i,j),vlor3sccor(k,i,j)
1853 v0ijsccor=v0ijsccor+vlor1sccor(k,i,j)/ &
1854 (1+vlor3sccor(k,i,j)**2)
1856 v0sccor(l,i,j)=v0ijsccor
1857 v0sccor(l,-i,j)=v0ijsccor1
1858 v0sccor(l,i,-j)=v0ijsccor2
1859 v0sccor(l,-i,-j)=v0ijsccor3
1865 !el from module energy-------------
1866 allocate(isccortyp(ntyp)) !(-ntyp:ntyp)
1868 read (isccor,*,end=119,err=119) (isccortyp(i),i=1,ntyp)
1869 ! write (iout,*) 'ntortyp',ntortyp
1871 !c maxinter is maximum interaction sites
1872 !el from module energy---------
1873 allocate(nterm_sccor(nsccortyp,nsccortyp)) !(-ntyp:ntyp,-ntyp:ntyp)
1874 allocate(v1sccor(maxterm_sccor,maxinter,nsccortyp,nsccortyp))
1875 allocate(v2sccor(maxterm_sccor,maxinter,nsccortyp,nsccortyp)) !(maxterm_sccor,3,-ntyp:ntyp,-ntyp:ntyp)
1876 allocate(v0sccor(maxinter,nsccortyp,nsccortyp)) !???(maxterm_sccor,-ntyp:ntyp,-ntyp:ntyp)
1877 !-----------------------------------
1881 read (isccor,*,end=119,err=119) &
1882 nterm_sccor(i,j),nlor_sccor(i,j)
1886 do k=1,nterm_sccor(i,j)
1887 read (isccor,*,end=119,err=119) kk,v1sccor(k,l,i,j),&
1889 v0ijsccor=v0ijsccor+si*v1sccor(k,l,i,j)
1892 do k=1,nlor_sccor(i,j)
1893 read (isccor,*,end=119,err=119) kk,vlor1sccor(k,i,j),&
1894 vlor2sccor(k,i,j),vlor3sccor(k,i,j)
1895 v0ijsccor=v0ijsccor+vlor1sccor(k,i,j)/ &
1896 (1+vlor3sccor(k,i,j)**2)
1898 v0sccor(l,i,j)=v0ijsccor !el ,iblock
1907 write (iout,'(/a/)') 'Torsional constants:'
1910 write (iout,*) 'ityp',i,' jtyp',j
1911 write (iout,*) 'Fourier constants'
1912 do k=1,nterm_sccor(i,j)
1913 write (iout,'(2(1pe15.5))') v1sccor(k,l,i,j),v2sccor(k,l,i,j)
1915 write (iout,*) 'Lorenz constants'
1916 do k=1,nlor_sccor(i,j)
1917 write (iout,'(3(1pe15.5))') &
1918 vlor1sccor(k,i,j),vlor2sccor(k,i,j),vlor3sccor(k,i,j)
1925 ! 9/18/99 (AL) Read coefficients of the Fourier expansion of the local
1926 ! interaction energy of the Gly, Ala, and Pro prototypes.
1931 write (iout,*) "Coefficients of the cumulants"
1933 read (ifourier,*) nloctyp
1934 !write(iout,*) "nloctyp",nloctyp
1935 !el from module energy-------
1936 allocate(b1(2,-nloctyp-1:nloctyp+1)) !(2,-maxtor:maxtor)
1937 allocate(b2(2,-nloctyp-1:nloctyp+1)) !(2,-maxtor:maxtor)
1938 allocate(b1tilde(2,-nloctyp+1:nloctyp+1)) !(2,-maxtor:maxtor)
1939 allocate(cc(2,2,-nloctyp-1:nloctyp+1))
1940 allocate(dd(2,2,-nloctyp-1:nloctyp+1))
1941 allocate(ee(2,2,-nloctyp-1:nloctyp+1))
1942 allocate(ctilde(2,2,-nloctyp-1:nloctyp+1))
1943 allocate(dtilde(2,2,-nloctyp-1:nloctyp+1)) !(2,2,-maxtor:maxtor)
1947 !--------------------------------
1950 read (ifourier,*,end=115,err=115)
1951 read (ifourier,*,end=115,err=115) (buse(ii),ii=1,13)
1953 write (iout,*) 'Type',i
1954 write (iout,'(a,i2,a,f10.5)') ('buse(',ii,')=',buse(ii),ii=1,13)
1962 B1tilde(1,i) = buse(3)
1963 B1tilde(2,i) =-buse(5)
1964 B1tilde(1,-i) =-buse(3)
1965 B1tilde(2,-i) =buse(5)
1966 ! buse1tilde(1,i)=0.0d0
1967 ! buse1tilde(2,i)=0.0d0
1987 Ctilde(1,1,i)=buse(7)
1988 Ctilde(1,2,i)=buse(9)
1989 Ctilde(2,1,i)=-buse(9)
1990 Ctilde(2,2,i)=buse(7)
1991 Ctilde(1,1,-i)=buse(7)
1992 Ctilde(1,2,-i)=-buse(9)
1993 Ctilde(2,1,-i)=buse(9)
1994 Ctilde(2,2,-i)=buse(7)
1996 ! Ctilde(1,1,i)=0.0d0
1997 ! Ctilde(1,2,i)=0.0d0
1998 ! Ctilde(2,1,i)=0.0d0
1999 ! Ctilde(2,2,i)=0.0d0
2012 Dtilde(1,1,i)=buse(6)
2013 Dtilde(1,2,i)=buse(8)
2014 Dtilde(2,1,i)=-buse(8)
2015 Dtilde(2,2,i)=buse(6)
2016 Dtilde(1,1,-i)=buse(6)
2017 Dtilde(1,2,-i)=-buse(8)
2018 Dtilde(2,1,-i)=buse(8)
2019 Dtilde(2,2,-i)=buse(6)
2021 ! Dtilde(1,1,i)=0.0d0
2022 ! Dtilde(1,2,i)=0.0d0
2023 ! Dtilde(2,1,i)=0.0d0
2024 ! Dtilde(2,2,i)=0.0d0
2025 EE(1,1,i)= buse(10)+buse(11)
2026 EE(2,2,i)=-buse(10)+buse(11)
2027 EE(2,1,i)= buse(12)-buse(13)
2028 EE(1,2,i)= buse(12)+buse(13)
2029 EE(1,1,-i)= buse(10)+buse(11)
2030 EE(2,2,-i)=-buse(10)+buse(11)
2031 EE(2,1,-i)=-buse(12)+buse(13)
2032 EE(1,2,-i)=-buse(12)-buse(13)
2038 ! ee(2,1,i)=ee(1,2,i)
2042 write (iout,*) 'Type',i
2044 write(iout,*) B1(1,i),B1(2,i)
2046 write(iout,*) B2(1,i),B2(2,i)
2049 write (iout,'(2f10.5)') CC(j,1,i),CC(j,2,i)
2053 write (iout,'(2f10.5)') DD(j,1,i),DD(j,2,i)
2057 write (iout,'(2f10.5)') EE(j,1,i),EE(j,2,i)
2062 ! Read electrostatic-interaction parameters
2067 write (iout,'(/a)') 'Electrostatic interaction constants:'
2068 write (iout,'(1x,a,1x,a,10x,a,11x,a,11x,a,11x,a)') &
2069 'IT','JT','APP','BPP','AEL6','AEL3'
2071 read (ielep,*,end=116,err=116) ((epp(i,j),j=1,2),i=1,2)
2072 read (ielep,*,end=116,err=116) ((rpp(i,j),j=1,2),i=1,2)
2073 read (ielep,*,end=116,err=116) ((elpp6(i,j),j=1,2),i=1,2)
2074 read (ielep,*,end=116,err=116) ((elpp3(i,j),j=1,2),i=1,2)
2079 app (i,j)=epp(i,j)*rri*rri
2080 bpp (i,j)=-2.0D0*epp(i,j)*rri
2081 ael6(i,j)=elpp6(i,j)*4.2D0**6
2082 ael3(i,j)=elpp3(i,j)*4.2D0**3
2084 if (lprint) write(iout,'(2i3,4(1pe15.4))')i,j,app(i,j),bpp(i,j),&
2090 ! Read side-chain interaction parameters.
2092 !el from module energy - COMMON.INTERACT-------
2093 allocate(eps(ntyp,ntyp),sigmaii(ntyp,ntyp),rs0(ntyp,ntyp)) !(ntyp,ntyp)
2094 allocate(augm(ntyp,ntyp)) !(ntyp,ntyp)
2095 allocate(eps_scp(ntyp,2),rscp(ntyp,2)) !(ntyp,2)
2097 allocate(sigma0(ntyp),rr0(ntyp),sigii(ntyp)) !(ntyp)
2098 allocate(chip(ntyp1),alp(ntyp1)) !(ntyp)
2099 allocate(epslip(ntyp,ntyp))
2107 !--------------------------------
2109 read (isidep,*,end=117,err=117) ipot,expon
2110 if (ipot.lt.1 .or. ipot.gt.5) then
2111 write (iout,'(2a)') 'Error while reading SC interaction',&
2112 'potential file - unknown potential type.'
2114 call MPI_Finalize(Ierror)
2120 write(iout,'(/3a,2i3)') 'Potential is ',potname(ipot),&
2121 ', exponents are ',expon,2*expon
2122 ! goto (10,20,30,30,40) ipot
2124 !----------------------- LJ potential ---------------------------------
2126 ! 10 read (isidep,*,end=117,err=117)((eps(i,j),j=i,ntyp),i=1,ntyp),&
2127 read (isidep,*,end=117,err=117)((eps(i,j),j=i,ntyp),i=1,ntyp),&
2128 (sigma0(i),i=1,ntyp)
2130 write (iout,'(/a/)') 'Parameters of the LJ potential:'
2131 write (iout,'(a/)') 'The epsilon array:'
2132 call printmat(ntyp,ntyp,ntyp,iout,restyp,eps)
2133 write (iout,'(/a)') 'One-body parameters:'
2134 write (iout,'(a,4x,a)') 'residue','sigma'
2135 write (iout,'(a3,6x,f10.5)') (restyp(i,1),sigma0(i),i=1,ntyp)
2138 !----------------------- LJK potential --------------------------------
2140 ! 20 read (isidep,*,end=117,err=117)((eps(i,j),j=i,ntyp),i=1,ntyp),&
2141 read (isidep,*,end=117,err=117)((eps(i,j),j=i,ntyp),i=1,ntyp),&
2142 (sigma0(i),i=1,ntyp),(rr0(i),i=1,ntyp)
2144 write (iout,'(/a/)') 'Parameters of the LJK potential:'
2145 write (iout,'(a/)') 'The epsilon array:'
2146 call printmat(ntyp,ntyp,ntyp,iout,restyp,eps)
2147 write (iout,'(/a)') 'One-body parameters:'
2148 write (iout,'(a,4x,2a)') 'residue',' sigma ',' r0 '
2149 write (iout,'(a3,6x,2f10.5)') (restyp(i,1),sigma0(i),rr0(i),&
2153 !---------------------- GB or BP potential -----------------------------
2157 read (isidep,*,end=117,err=117)(eps(i,j),j=i,ntyp)
2159 read (isidep,*,end=117,err=117)(sigma0(i),i=1,ntyp)
2160 read (isidep,*,end=117,err=117)(sigii(i),i=1,ntyp)
2161 read (isidep,*,end=117,err=117)(chip(i),i=1,ntyp)
2162 read (isidep,*,end=117,err=117)(alp(i),i=1,ntyp)
2164 read (isidep,*,end=117,err=117)(epslip(i,j),j=i,ntyp)
2167 ! For the GB potential convert sigma'**2 into chi'
2170 chip(i)=(chip(i)-1.0D0)/(chip(i)+1.0D0)
2174 write (iout,'(/a/)') 'Parameters of the BP potential:'
2175 write (iout,'(a/)') 'The epsilon array:'
2176 call printmat(ntyp,ntyp,ntyp,iout,restyp,eps)
2177 write (iout,'(/a)') 'One-body parameters:'
2178 write (iout,'(a,4x,4a)') 'residue',' sigma ','s||/s_|_^2',&
2180 write (iout,'(a3,6x,4f10.5)') (restyp(i,1),sigma0(i),sigii(i),&
2181 chip(i),alp(i),i=1,ntyp)
2184 !--------------------- GBV potential -----------------------------------
2186 ! 40 read (isidep,*,end=117,err=117)((eps(i,j),j=i,ntyp),i=1,ntyp),&
2187 read (isidep,*,end=117,err=117)((eps(i,j),j=i,ntyp),i=1,ntyp),&
2188 (sigma0(i),i=1,ntyp),(rr0(i),i=1,ntyp),(sigii(i),i=1,ntyp),&
2189 (chip(i),i=1,ntyp),(alp(i),i=1,ntyp)
2191 write (iout,'(/a/)') 'Parameters of the GBV potential:'
2192 write (iout,'(a/)') 'The epsilon array:'
2193 call printmat(ntyp,ntyp,ntyp,iout,restyp,eps)
2194 write (iout,'(/a)') 'One-body parameters:'
2195 write (iout,'(a,4x,5a)') 'residue',' sigma ',' r0 ',&
2196 's||/s_|_^2',' chip ',' alph '
2197 write (iout,'(a3,6x,5f10.5)') (restyp(i,1),sigma0(i),rr0(i),&
2198 sigii(i),chip(i),alp(i),i=1,ntyp)
2201 write(iout,*)"Wrong ipot"
2207 !-----------------------------------------------------------------------
2208 ! Calculate the "working" parameters of SC interactions.
2210 !el from module energy - COMMON.INTERACT-------
2211 allocate(aa_aq(ntyp1,ntyp1),bb_aq(ntyp1,ntyp1),chi(ntyp1,ntyp1)) !(ntyp,ntyp)
2212 allocate(aa_lip(ntyp1,ntyp1),bb_lip(ntyp1,ntyp1)) !(ntyp,ntyp)
2213 allocate(sigma(0:ntyp1,0:ntyp1),r0(ntyp1,ntyp1)) !(0:ntyp1,0:ntyp1)
2214 allocate(acavtub(ntyp1),bcavtub(ntyp1),ccavtub(ntyp1),&
2216 allocate(sc_aa_tube_par(ntyp1),sc_bb_tube_par(ntyp1),&
2229 sc_aa_tube_par(:)=0.0d0
2230 sc_bb_tube_par(:)=0.0d0
2232 !--------------------------------
2237 epslip(i,j)=epslip(j,i)
2242 sigma(i,j)=dsqrt(sigma0(i)**2+sigma0(j)**2)
2243 sigma(j,i)=sigma(i,j)
2244 rs0(i,j)=dwa16*sigma(i,j)
2248 if (lprint) write (iout,'(/a/10x,7a/72(1h-))') &
2249 'Working parameters of the SC interactions:',&
2250 ' a ',' b ',' augm ',' sigma ',' r0 ',&
2255 if (ipot.eq.1 .or. ipot.eq.3 .or. ipot.eq.4) then
2264 sigeps=dsign(1.0D0,epsij)
2266 aa_aq(i,j)=epsij*rrij*rrij
2267 bb_aq(i,j)=-sigeps*epsij*rrij
2268 aa_aq(j,i)=aa_aq(i,j)
2269 bb_aq(j,i)=bb_aq(i,j)
2270 epsijlip=epslip(i,j)
2271 sigeps=dsign(1.0D0,epsijlip)
2272 epsijlip=dabs(epsijlip)
2273 aa_lip(i,j)=epsijlip*rrij*rrij
2274 bb_lip(i,j)=-sigeps*epsijlip*rrij
2275 aa_lip(j,i)=aa_lip(i,j)
2276 bb_lip(j,i)=bb_lip(i,j)
2277 !C write(iout,*) aa_lip
2279 sigt1sq=sigma0(i)**2
2280 sigt2sq=sigma0(j)**2
2283 ratsig1=sigt2sq/sigt1sq
2284 ratsig2=1.0D0/ratsig1
2285 chi(i,j)=(sigii1-1.0D0)/(sigii1+ratsig1)
2286 if (j.gt.i) chi(j,i)=(sigii2-1.0D0)/(sigii2+ratsig2)
2287 rsum_max=dsqrt(sigii1*sigt1sq+sigii2*sigt2sq)
2291 ! if (ipot.eq.1 .or. ipot.eq.3 .or. ipot.eq.4) then
2292 sigmaii(i,j)=rsum_max
2293 sigmaii(j,i)=rsum_max
2295 ! sigmaii(i,j)=r0(i,j)
2296 ! sigmaii(j,i)=r0(i,j)
2298 !d write (iout,*) i,j,r0(i,j),sigma(i,j),rsum_max
2299 if ((ipot.eq.2 .or. ipot.eq.5) .and. r0(i,j).gt.rsum_max) then
2300 r_augm=sigma(i,j)*(rrij-sigma(i,j))/rrij
2301 augm(i,j)=epsij*r_augm**(2*expon)
2302 ! augm(i,j)=0.5D0**(2*expon)*aa(i,j)
2309 write (iout,'(2(a3,2x),3(1pe10.3),5(0pf8.3))') &
2310 restyp(i,1),restyp(j,1),aa_aq(i,j),bb_aq(i,j),augm(i,j),&
2311 sigma(i,j),r0(i,j),chi(i,j),chi(j,i)
2316 allocate(eps_nucl(ntyp_molec(2),ntyp_molec(2)))
2317 allocate(sigma_nucl(ntyp_molec(2),ntyp_molec(2))) !(ntyp_molec(2),ntyp_molec(2))
2318 allocate(elpp6_nucl(ntyp_molec(2),ntyp_molec(2))) !(ntyp_molec(2),ntyp_molec(2))
2319 allocate(elpp3_nucl(ntyp_molec(2),ntyp_molec(2))) !(ntyp,2)
2320 allocate(elpp63_nucl(ntyp_molec(2),ntyp_molec(2))) !(ntyp_molec(2),ntyp_molec(2))
2321 allocate(elpp32_nucl(ntyp_molec(2),ntyp_molec(2))) !(ntyp,2)
2322 allocate(chi_nucl(ntyp_molec(2),ntyp_molec(2)),chip_nucl(ntyp_molec(2),ntyp_molec(2))) !(ntyp_molec(2),ntyp_molec(2))
2323 allocate(ael3_nucl(ntyp_molec(2),ntyp_molec(2))) !(ntyp,2)
2324 allocate(ael6_nucl(ntyp_molec(2),ntyp_molec(2))) !(ntyp,2)
2325 allocate(ael32_nucl(ntyp_molec(2),ntyp_molec(2))) !(ntyp,2)
2326 allocate(ael63_nucl(ntyp_molec(2),ntyp_molec(2))) !(ntyp,2)
2327 allocate(aa_nucl(ntyp_molec(2),ntyp_molec(2))) !(ntyp,2)
2328 allocate(bb_nucl(ntyp_molec(2),ntyp_molec(2))) !(ntyp,2)
2329 allocate(r0_nucl(ntyp_molec(2),ntyp_molec(2))) !(ntyp,2)
2330 allocate(sigmaii_nucl(ntyp_molec(2),ntyp_molec(2))) !(ntyp_molec(2),ntyp_molec(2))
2331 allocate(eps_scp_nucl(ntyp_molec(2)),rscp_nucl(ntyp_molec(2))) !(ntyp,2)
2340 read (isidep_nucl,*) ipot_nucl
2341 ! print *,"TU?!",ipot_nucl
2342 if (ipot_nucl.eq.1) then
2343 do i=1,ntyp_molec(2)
2344 do j=i,ntyp_molec(2)
2345 read (isidep_nucl,*) eps_nucl(i,j),sigma_nucl(i,j),elpp6_nucl(i,j),&
2346 elpp3_nucl(i,j), elpp63_nucl(i,j),elpp32_nucl(i,j)
2350 do i=1,ntyp_molec(2)
2351 do j=i,ntyp_molec(2)
2352 read (isidep_nucl,*) eps_nucl(i,j),sigma_nucl(i,j),chi_nucl(i,j),&
2353 chi_nucl(j,i),chip_nucl(i,j),chip_nucl(j,i),&
2354 elpp6_nucl(i,j),elpp3_nucl(i,j),elpp63_nucl(i,j),elpp32_nucl(i,j)
2358 ! rpp(1,1)=2**(1.0/6.0)*5.16158
2359 do i=1,ntyp_molec(2)
2360 do j=i,ntyp_molec(2)
2361 rrij=sigma_nucl(i,j)
2365 epsij=4*eps_nucl(i,j)
2366 sigeps=dsign(1.0D0,epsij)
2368 aa_nucl(i,j)=epsij*rrij*rrij
2369 bb_nucl(i,j)=-sigeps*epsij*rrij
2370 ael3_nucl(i,j)=elpp3_nucl(i,j)*dsqrt(rrij)
2371 ael6_nucl(i,j)=elpp6_nucl(i,j)*rrij
2372 ael63_nucl(i,j)=elpp63_nucl(i,j)*rrij
2373 ael32_nucl(i,j)=elpp32_nucl(i,j)*rrij
2374 sigmaii_nucl(i,j)=sigma_nucl(i,j)/sqrt(1-(chi_nucl(i,j)+chi_nucl(j,i)- &
2375 2*chi_nucl(i,j)*chi_nucl(j,i))/(1-chi_nucl(i,j)*chi_nucl(j,i)))
2378 aa_nucl(i,j)=aa_nucl(j,i)
2379 bb_nucl(i,j)=bb_nucl(j,i)
2380 ael3_nucl(i,j)=ael3_nucl(j,i)
2381 ael6_nucl(i,j)=ael6_nucl(j,i)
2382 ael63_nucl(i,j)=ael63_nucl(j,i)
2383 ael32_nucl(i,j)=ael32_nucl(j,i)
2384 elpp3_nucl(i,j)=elpp3_nucl(j,i)
2385 elpp6_nucl(i,j)=elpp6_nucl(j,i)
2386 elpp63_nucl(i,j)=elpp63_nucl(j,i)
2387 elpp32_nucl(i,j)=elpp32_nucl(j,i)
2388 eps_nucl(i,j)=eps_nucl(j,i)
2389 sigma_nucl(i,j)=sigma_nucl(j,i)
2390 sigmaii_nucl(i,j)=sigmaii_nucl(j,i)
2394 write(iout,*) "tube param"
2395 read(itube,*) epspeptube,sigmapeptube,acavtubpep,bcavtubpep, &
2396 ccavtubpep,dcavtubpep,tubetranenepep
2397 sigmapeptube=sigmapeptube**6
2398 sigeps=dsign(1.0D0,epspeptube)
2399 epspeptube=dabs(epspeptube)
2400 pep_aa_tube=4.0d0*epspeptube*sigmapeptube**2
2401 pep_bb_tube=-sigeps*4.0d0*epspeptube*sigmapeptube
2402 write(iout,*) pep_aa_tube,pep_bb_tube,tubetranenepep
2404 read(itube,*) epssctube,sigmasctube,acavtub(i),bcavtub(i), &
2405 ccavtub(i),dcavtub(i),tubetranene(i)
2406 sigmasctube=sigmasctube**6
2407 sigeps=dsign(1.0D0,epssctube)
2408 epssctube=dabs(epssctube)
2409 sc_aa_tube_par(i)=4.0d0*epssctube*sigmasctube**2
2410 sc_bb_tube_par(i)=-sigeps*4.0d0*epssctube*sigmasctube
2411 write(iout,*) sc_aa_tube_par(i), sc_bb_tube_par(i),tubetranene(i)
2413 !-----------------READING SC BASE POTENTIALS-----------------------------
2414 allocate(eps_scbase(ntyp_molec(1),ntyp_molec(2)))
2415 allocate(sigma_scbase(ntyp_molec(1),ntyp_molec(2)))
2416 allocate(chi_scbase(ntyp_molec(1),ntyp_molec(2),2))
2417 allocate(chipp_scbase(ntyp_molec(1),ntyp_molec(2),2))
2418 allocate(alphasur_scbase(4,ntyp_molec(1),ntyp_molec(2)))
2419 allocate(sigmap1_scbase(ntyp_molec(1),ntyp_molec(2)))
2420 allocate(sigmap2_scbase(ntyp_molec(1),ntyp_molec(2)))
2421 allocate(chis_scbase(ntyp_molec(1),ntyp_molec(2),2))
2422 allocate(dhead_scbasei(ntyp_molec(1),ntyp_molec(2)))
2423 allocate(dhead_scbasej(ntyp_molec(1),ntyp_molec(2)))
2424 allocate(rborn_scbasei(ntyp_molec(1),ntyp_molec(2)))
2425 allocate(rborn_scbasej(ntyp_molec(1),ntyp_molec(2)))
2426 allocate(wdipdip_scbase(3,ntyp_molec(1),ntyp_molec(2)))
2427 allocate(wqdip_scbase(2,ntyp_molec(1),ntyp_molec(2)))
2428 allocate(alphapol_scbase(ntyp_molec(1),ntyp_molec(2)))
2429 allocate(epsintab_scbase(ntyp_molec(1),ntyp_molec(2)))
2432 do i=1,ntyp_molec(1)
2433 do j=1,ntyp_molec(2)-1 ! without U then we will take T for U
2434 write (*,*) "Im in ", i, " ", j
2435 read(isidep_scbase,*) &
2436 eps_scbase(i,j),sigma_scbase(i,j),chi_scbase(i,j,1),&
2437 chi_scbase(i,j,2),chipp_scbase(i,j,1),chipp_scbase(i,j,2)
2438 write(*,*) "eps",eps_scbase(i,j)
2439 read(isidep_scbase,*) &
2440 (alphasur_scbase(k,i,j),k=1,4),sigmap1_scbase(i,j),sigmap2_scbase(i,j), &
2441 chis_scbase(i,j,1),chis_scbase(i,j,2)
2442 read(isidep_scbase,*) &
2443 dhead_scbasei(i,j), &
2444 dhead_scbasej(i,j), &
2445 rborn_scbasei(i,j),rborn_scbasej(i,j)
2446 read(isidep_scbase,*) &
2447 (wdipdip_scbase(k,i,j),k=1,3), &
2448 (wqdip_scbase(k,i,j),k=1,2)
2449 read(isidep_scbase,*) &
2450 alphapol_scbase(i,j), &
2451 epsintab_scbase(i,j)
2454 allocate(aa_scbase(ntyp_molec(1),ntyp_molec(2)))
2455 allocate(bb_scbase(ntyp_molec(1),ntyp_molec(2)))
2457 do i=1,ntyp_molec(1)
2458 do j=1,ntyp_molec(2)-1
2459 epsij=eps_scbase(i,j)
2460 rrij=sigma_scbase(i,j)
2465 sigeps=dsign(1.0D0,epsij)
2467 aa_scbase(i,j)=epsij*rrij*rrij
2468 bb_scbase(i,j)=-sigeps*epsij*rrij
2471 !-----------------READING PEP BASE POTENTIALS-------------------
2472 allocate(eps_pepbase(ntyp_molec(2)))
2473 allocate(sigma_pepbase(ntyp_molec(2)))
2474 allocate(chi_pepbase(ntyp_molec(2),2))
2475 allocate(chipp_pepbase(ntyp_molec(2),2))
2476 allocate(alphasur_pepbase(4,ntyp_molec(2)))
2477 allocate(sigmap1_pepbase(ntyp_molec(2)))
2478 allocate(sigmap2_pepbase(ntyp_molec(2)))
2479 allocate(chis_pepbase(ntyp_molec(2),2))
2480 allocate(wdipdip_pepbase(3,ntyp_molec(2)))
2483 do j=1,ntyp_molec(2)-1 ! without U then we will take T for U
2484 write (*,*) "Im in ", i, " ", j
2485 read(isidep_pepbase,*) &
2486 eps_pepbase(j),sigma_pepbase(j),chi_pepbase(j,1),&
2487 chi_pepbase(j,2),chipp_pepbase(j,1),chipp_pepbase(j,2)
2488 write(*,*) "eps",eps_pepbase(j)
2489 read(isidep_pepbase,*) &
2490 (alphasur_pepbase(k,j),k=1,4),sigmap1_pepbase(j),sigmap2_pepbase(j), &
2491 chis_pepbase(j,1),chis_pepbase(j,2)
2492 read(isidep_pepbase,*) &
2493 (wdipdip_pepbase(k,j),k=1,3)
2495 allocate(aa_pepbase(ntyp_molec(2)))
2496 allocate(bb_pepbase(ntyp_molec(2)))
2498 do j=1,ntyp_molec(2)-1
2499 epsij=eps_pepbase(j)
2500 rrij=sigma_pepbase(j)
2505 sigeps=dsign(1.0D0,epsij)
2507 aa_pepbase(j)=epsij*rrij*rrij
2508 bb_pepbase(j)=-sigeps*epsij*rrij
2510 !--------------READING SC PHOSPHATE-------------------------------------
2511 allocate(eps_scpho(ntyp_molec(1)))
2512 allocate(sigma_scpho(ntyp_molec(1)))
2513 allocate(chi_scpho(ntyp_molec(1),2))
2514 allocate(chipp_scpho(ntyp_molec(1),2))
2515 allocate(alphasur_scpho(4,ntyp_molec(1)))
2516 allocate(sigmap1_scpho(ntyp_molec(1)))
2517 allocate(sigmap2_scpho(ntyp_molec(1)))
2518 allocate(chis_scpho(ntyp_molec(1),2))
2519 allocate(wqq_scpho(ntyp_molec(1)))
2520 allocate(wqdip_scpho(2,ntyp_molec(1)))
2521 allocate(alphapol_scpho(ntyp_molec(1)))
2522 allocate(epsintab_scpho(ntyp_molec(1)))
2523 allocate(dhead_scphoi(ntyp_molec(1)))
2524 allocate(rborn_scphoi(ntyp_molec(1)))
2525 allocate(rborn_scphoj(ntyp_molec(1)))
2526 allocate(alphi_scpho(ntyp_molec(1)))
2530 do j=1,ntyp_molec(1) ! without U then we will take T for U
2531 write (*,*) "Im in scpho ", i, " ", j
2532 read(isidep_scpho,*) &
2533 eps_scpho(j),sigma_scpho(j),chi_scpho(j,1),&
2534 chi_scpho(j,2),chipp_scpho(j,1),chipp_scpho(j,2)
2535 write(*,*) "eps",eps_scpho(j)
2536 read(isidep_scpho,*) &
2537 (alphasur_scpho(k,j),k=1,4),sigmap1_scpho(j),sigmap2_scpho(j), &
2538 chis_scpho(j,1),chis_scpho(j,2)
2539 read(isidep_scpho,*) &
2540 (wqdip_scpho(k,j),k=1,2),wqq_scpho(j),dhead_scphoi(j)
2541 read(isidep_scpho,*) &
2542 epsintab_scpho(j),alphapol_scpho(j),rborn_scphoi(j),rborn_scphoj(j), &
2546 allocate(aa_scpho(ntyp_molec(1)))
2547 allocate(bb_scpho(ntyp_molec(1)))
2549 do j=1,ntyp_molec(1)
2556 sigeps=dsign(1.0D0,epsij)
2558 aa_scpho(j)=epsij*rrij*rrij
2559 bb_scpho(j)=-sigeps*epsij*rrij
2563 read(isidep_peppho,*) &
2564 eps_peppho,sigma_peppho
2565 read(isidep_peppho,*) &
2566 (alphasur_peppho(k),k=1,4),sigmap1_peppho,sigmap2_peppho
2567 read(isidep_peppho,*) &
2568 (wqdip_peppho(k),k=1,2)
2576 sigeps=dsign(1.0D0,epsij)
2578 aa_peppho=epsij*rrij*rrij
2579 bb_peppho=-sigeps*epsij*rrij
2582 allocate(aad(ntyp,2),bad(ntyp,2)) !(ntyp,2)
2587 ! Define the SC-p interaction constants (hard-coded; old style)
2590 ! "Soft" SC-p repulsion (causes helices to be too flat, but facilitates
2592 ! aad(i,1)=0.3D0*4.0D0**12
2593 ! Following line for constants currently implemented
2594 ! "Hard" SC-p repulsion (gives correct turn spacing in helices)
2595 aad(i,1)=1.5D0*4.0D0**12
2596 ! aad(i,1)=0.17D0*5.6D0**12
2598 ! "Soft" SC-p repulsion
2600 ! Following line for constants currently implemented
2601 ! aad(i,1)=0.3D0*4.0D0**6
2602 ! "Hard" SC-p repulsion
2603 bad(i,1)=3.0D0*4.0D0**6
2604 ! bad(i,1)=-2.0D0*0.17D0*5.6D0**6
2613 ! 8/9/01 Read the SC-p interaction constants from file
2616 read (iscpp,*,end=118,err=118) (eps_scp(i,j),rscp(i,j),j=1,2)
2619 aad(i,1)=dabs(eps_scp(i,1))*rscp(i,1)**12
2620 aad(i,2)=dabs(eps_scp(i,2))*rscp(i,2)**12
2621 bad(i,1)=-2*eps_scp(i,1)*rscp(i,1)**6
2622 bad(i,2)=-2*eps_scp(i,2)*rscp(i,2)**6
2626 write (iout,*) "Parameters of SC-p interactions:"
2628 write (iout,'(4f8.3,4e12.4)') eps_scp(i,1),rscp(i,1),&
2629 eps_scp(i,2),rscp(i,2),aad(i,1),bad(i,1),aad(i,2),bad(i,2)
2634 allocate(aad_nucl(ntyp_molec(2)),bad_nucl(ntyp_molec(2))) !(ntyp,2)
2636 do i=1,ntyp_molec(2)
2637 read (iscpp_nucl,*,end=118,err=118) eps_scp_nucl(i),rscp_nucl(i)
2639 do i=1,ntyp_molec(2)
2640 aad_nucl(i)=dabs(eps_scp_nucl(i))*rscp_nucl(i)**12
2641 bad_nucl(i)=-2*eps_scp_nucl(i)*rscp_nucl(i)**6
2643 r0pp=1.12246204830937298142*5.16158
2649 ! Define the constants of the disulfide bridge
2653 ! Old arbitrary potential - commented out.
2658 ! Constants of the disulfide-bond potential determined based on the RHF/6-31G**
2659 ! energy surface of diethyl disulfide.
2660 ! A. Liwo and U. Kozlowska, 11/24/03
2677 write (iout,'(/a)') "Disulfide bridge parameters:"
2678 write (iout,'(a,f10.2)') 'S-S bridge energy: ',ebr
2679 write (iout,'(2(a,f10.2))') 'd0cm:',d0cm,' akcm:',akcm
2680 write (iout,'(2(a,f10.2))') 'akth:',akth,' akct:',akct
2681 write (iout,'(3(a,f10.2))') 'v1ss:',v1ss,' v2ss:',v2ss,&
2685 111 write (iout,*) "Error reading bending energy parameters."
2687 112 write (iout,*) "Error reading rotamer energy parameters."
2689 113 write (iout,*) "Error reading torsional energy parameters."
2691 114 write (iout,*) "Error reading double torsional energy parameters."
2693 115 write (iout,*) &
2694 "Error reading cumulant (multibody energy) parameters."
2696 116 write (iout,*) "Error reading electrostatic energy parameters."
2698 117 write (iout,*) "Error reading side chain interaction parameters."
2700 118 write (iout,*) "Error reading SCp interaction parameters."
2702 119 write (iout,*) "Error reading SCCOR parameters"
2705 call MPI_Finalize(Ierror)
2709 end subroutine parmread
2711 !-----------------------------------------------------------------------------
2713 !-----------------------------------------------------------------------------
2714 subroutine printmat(ldim,m,n,iout,key,a)
2717 character(len=3),dimension(n) :: key
2718 real(kind=8),dimension(ldim,n) :: a
2720 integer :: i,j,k,m,iout,nlim
2724 write (iout,1000) (key(k),k=i,nlim)
2726 1000 format (/5x,8(6x,a3))
2727 1020 format (/80(1h-)/)
2729 write (iout,1010) key(j),(a(j,k),k=i,nlim)
2732 1010 format (a3,2x,8(f9.4))
2734 end subroutine printmat
2735 !-----------------------------------------------------------------------------
2737 !-----------------------------------------------------------------------------
2739 ! Read the PDB file and convert the peptide geometry into virtual-chain
2742 use energy_data, only: itype,istype
2746 use control, only: rescode,sugarcode
2747 ! implicit real*8 (a-h,o-z)
2748 ! include 'DIMENSIONS'
2749 ! include 'COMMON.LOCAL'
2750 ! include 'COMMON.VAR'
2751 ! include 'COMMON.CHAIN'
2752 ! include 'COMMON.INTERACT'
2753 ! include 'COMMON.IOUNITS'
2754 ! include 'COMMON.GEO'
2755 ! include 'COMMON.NAMES'
2756 ! include 'COMMON.CONTROL'
2757 ! include 'COMMON.DISTFIT'
2758 ! include 'COMMON.SETUP'
2759 integer :: i,j,ibeg,ishift1,ires,iii,ires_old,ishift,k!,ity!,&
2761 logical :: lprn=.true.,fail
2762 real(kind=8),dimension(3) :: e1,e2,e3
2763 real(kind=8) :: dcj,efree_temp
2764 character(len=3) :: seq,res
2765 character(len=5) :: atom
2766 character(len=80) :: card
2767 real(kind=8),dimension(3,20) :: sccor
2768 integer :: kkk,lll,icha,kupa,molecule,counter,seqalingbegin !rescode,
2769 integer :: isugar,molecprev,firstion
2770 character*1 :: sugar
2772 real(kind=8),dimension(3) :: ccc
2774 integer,dimension(2,maxres/3) :: hfrag_alloc
2775 integer,dimension(4,maxres/3) :: bfrag_alloc
2776 real(kind=8),dimension(3,maxres2+2,maxperm) :: cref_alloc !(3,maxres2+2,maxperm)
2777 real(kind=8),dimension(:,:), allocatable :: c_temporary
2778 integer,dimension(:,:) , allocatable :: itype_temporary
2779 integer,dimension(:),allocatable :: istype_temp
2786 ! write (2,*) "UNRES_PDB",unres_pdb
2806 !-----------------------------
2807 allocate(hfrag(2,maxres/3)) !(2,maxres/3)
2808 allocate(bfrag(4,maxres/3)) !(4,maxres/3)
2809 if(.not. allocated(istype)) allocate(istype(maxres))
2811 read (ipdbin,'(a80)',end=10) card
2812 ! write (iout,'(a)') card
2813 if (card(:5).eq.'HELIX') then
2816 read(card(22:25),*) hfrag(1,nhfrag)
2817 read(card(34:37),*) hfrag(2,nhfrag)
2819 if (card(:5).eq.'SHEET') then
2822 read(card(24:26),*) bfrag(1,nbfrag)
2823 read(card(35:37),*) bfrag(2,nbfrag)
2824 !rc----------------------------------------
2825 !rc to be corrected !!!
2826 bfrag(3,nbfrag)=bfrag(1,nbfrag)
2827 bfrag(4,nbfrag)=bfrag(2,nbfrag)
2828 !rc----------------------------------------
2830 if (card(:3).eq.'END') then
2832 else if (card(:3).eq.'TER') then
2837 itype(ires_old,molecule)=ntyp1_molec(molecule)
2838 itype(ires_old-1,molecule)=ntyp1_molec(molecule)
2839 nres_molec(molecule)=nres_molec(molecule)+2
2841 ! write (iout,*) "Chain ended",ires,ishift,ires_old
2844 dc(j,ires)=sccor(j,iii)
2847 call sccenter(ires,iii,sccor)
2853 if (index(card,"FREE ENERGY").gt.0) read(card(35:),*) efree_temp
2854 ! Fish out the ATOM cards.
2855 ! write(iout,*) 'card',card(1:20)
2856 if (index(card(1:4),'ATOM').gt.0) then
2857 read (card(12:16),*) atom
2858 ! write (iout,*) "! ",atom," !",ires
2859 ! if (atom.eq.'CA' .or. atom.eq.'CH3') then
2860 read (card(23:26),*) ires
2861 read (card(18:20),'(a3)') res
2862 ! write (iout,*) "ires",ires,ires-ishift+ishift1,
2863 ! & " ires_old",ires_old
2864 ! write (iout,*) "ishift",ishift," ishift1",ishift1
2865 ! write (iout,*) "IRES",ires-ishift+ishift1,ires_old
2866 if (ires-ishift+ishift1.ne.ires_old) then
2867 ! Calculate the CM of the preceding residue.
2868 ! if (ibeg.eq.0) call sccenter(ires,iii,sccor)
2870 ! write (iout,*) "Calculating sidechain center iii",iii
2873 dc(j,ires+ishift1-ishift-1)=sccor(j,iii)
2876 call sccenter(ires_old,iii,sccor)
2880 ! Start new residue.
2881 if (res.eq.'Cl-' .or. res.eq.'Na+') then
2884 else if (ibeg.eq.1) then
2885 write (iout,*) "BEG ires",ires
2887 if (res.ne.'GLY' .and. res.ne. 'ACE') then
2890 nres_molec(molecule)=nres_molec(molecule)+1
2892 ires=ires-ishift+ishift1
2894 ! write (iout,*) "ishift",ishift," ires",ires,&
2895 ! " ires_old",ires_old
2897 else if (ibeg.eq.2) then
2899 ishift=-ires_old+ires-1 !!!!!
2900 ishift1=ishift1-1 !!!!!
2901 ! write (iout,*) "New chain started",ires,ishift,ishift1,"!"
2902 ires=ires-ishift+ishift1
2903 ! print *,ires,ishift,ishift1
2907 ishift=ishift-(ires-ishift+ishift1-ires_old-1)
2908 ires=ires-ishift+ishift1
2911 ! print *,'atom',ires,atom
2912 if (res.eq.'ACE' .or. res.eq.'NHE') then
2915 if (atom.eq.'CA '.or.atom.eq.'N ') then
2917 itype(ires,molecule)=rescode(ires,res,0,molecule)
2919 ! nres_molec(molecule)=nres_molec(molecule)+1
2922 itype(ires,molecule)=rescode(ires,res(2:3),0,molecule)
2923 ! nres_molec(molecule)=nres_molec(molecule)+1
2924 read (card(19:19),'(a1)') sugar
2925 isugar=sugarcode(sugar,ires)
2926 ! if (ibeg.eq.1) then
2930 ! print *,"ires=",ires,istype(ires)
2936 ires=ires-ishift+ishift1
2938 ! write (iout,*) "ires_old",ires_old," ires",ires
2939 if (card(27:27).eq."A" .or. card(27:27).eq."B") then
2942 ! write (2,*) "ires",ires," res ",res!," ity"!,ity
2943 if (atom.eq.'CA' .or. atom.eq.'CH3' .or. &
2944 res.eq.'NHE'.and.atom(:2).eq.'HN') then
2945 read(card(31:54),'(3f8.3)') (c(j,ires),j=1,3)
2946 ! print *,ires,ishift,ishift1
2947 ! write (iout,*) "backbone ",atom
2949 write (iout,'(2i3,2x,a,3f8.3)') &
2950 ires,itype(ires,1),res,(c(j,ires),j=1,3)
2953 nres_molec(molecule)=nres_molec(molecule)+1
2955 sccor(j,iii)=c(j,ires)
2957 else if (.not.unres_pdb .and. (atom.eq."C1'" .or. &
2958 atom.eq."C2'" .or. atom.eq."C3'" &
2959 .or. atom.eq."C4'" .or. atom.eq."O4'")) then
2960 read(card(31:54),'(3f8.3)') (ccc(j),j=1,3)
2961 !c write (2,'(i5,3f10.5)') ires,(ccc(j),j=1,3)
2962 ! print *,ires,ishift,ishift1
2966 ! sccor(j,iii)=c(j,ires)
2969 c(j,ires)=c(j,ires)+ccc(j)/5.0
2971 print *,counter,molecule
2972 if (counter.eq.5) then
2974 nres_molec(molecule)=nres_molec(molecule)+1
2977 ! sccor(j,iii)=c(j,ires)
2981 ! print *, "ATOM",atom(1:3)
2982 else if (atom.eq."C5'") then
2983 read (card(19:19),'(a1)') sugar
2984 isugar=sugarcode(sugar,ires)
2989 ! print *,ires,istype(ires)
2993 ! print *,"nres_molec(molecule)",nres_molec(molecule),ires
2994 read(card(31:54),'(3f8.3)') (c(j,ires),j=1,3)
2995 nres_molec(molecule)=nres_molec(molecule)+1
2996 print *,"nres_molec(molecule)",nres_molec(molecule),ires
3000 read(card(31:54),'(3f8.3)') (sccor(j,iii),j=1,3)
3002 else if ((atom.eq."C1'").and.unres_pdb) then
3004 read(card(31:54),'(3f8.3)') (sccor(j,iii),j=1,3)
3005 ! write (*,*) card(23:27),ires,itype(ires,1)
3006 else if (atom.ne.'O'.and.atom(1:1).ne.'H' .and. &
3007 atom.ne.'N' .and. atom.ne.'C' .and. &
3008 atom(:2).ne.'1H' .and. atom(:2).ne.'2H' .and. &
3009 atom.ne.'OXT' .and. atom(:2).ne.'3H' &
3010 .and. atom.ne.'P '.and. &
3011 atom(1:1).ne.'H' .and. &
3012 atom.ne.'OP1' .and. atom.ne.'OP2 '.and. atom.ne.'OP3'&
3014 ! write (iout,*) "sidechain ",atom
3015 ! write (iout,*) "sidechain ",atom,molecule,ires,atom(3:3)
3016 if ((molecule.ne.2).or.(atom(3:3).ne."'")) then
3017 ! write (iout,*) "sidechain ",atom,molecule,ires,atom(3:3)
3019 read(card(31:54),'(3f8.3)') (sccor(j,iii),j=1,3)
3022 else if ((ions).and.(card(1:6).eq.'HETATM')) then
3023 if (firstion.eq.0) then
3027 dc(j,ires)=sccor(j,iii)
3030 call sccenter(ires,iii,sccor)
3033 read (card(12:16),*) atom
3034 print *,"HETATOM", atom
3035 read (card(18:20),'(a3)') res
3036 if ((atom(1:2).eq.'NA').or.(atom(1:2).eq.'CL').or.&
3037 (atom(1:2).eq.'CA').or.(atom(1:2).eq.'MG') &
3038 .or.(atom(1:2).eq.'K ')) &
3041 if (molecule.ne.5) molecprev=molecule
3043 nres_molec(molecule)=nres_molec(molecule)+1
3044 print *,"HERE",nres_molec(molecule)
3046 itype(ires,molecule)=rescode(ires,res,0,molecule)
3047 read(card(31:54),'(3f8.3)') (c(j,ires),j=1,3)
3051 10 write (iout,'(a,i5)') ' Number of residues found: ',ires
3052 if (ires.eq.0) return
3053 ! Calculate dummy residue coordinates inside the "chain" of a multichain
3056 if (((ires_old.ne.ires).and.(molecule.ne.5)) &
3057 .and.(.not.unres_pdb)) &
3058 nres_molec(molecule)=nres_molec(molecule)-2
3059 print *,'I have',nres, nres_molec(:)
3061 do k=1,4 ! ions are without dummy
3062 if (nres_molec(k).eq.0) cycle
3064 ! write (iout,*) i,itype(i,1)
3065 ! if (itype(i,1).eq.ntyp1) then
3066 ! write (iout,*) "dummy",i,itype(i,1)
3068 ! c(j,i)=((c(j,i-1)+c(j,i+1))/2+2*c(j,i-1)-c(j,i-2))/2
3069 ! c(j,i)=(c(j,i-1)+c(j,i+1))/2
3073 if (itype(i,k).eq.ntyp1_molec(k)) then
3074 if (itype(i+1,k).eq.ntyp1_molec(k)) then
3075 if (itype(i+2,k).eq.0) then
3076 ! print *,"masz sieczke"
3078 if (itype(i+2,j).ne.0) then
3080 itype(i+1,j)=ntyp1_molec(j)
3081 nres_molec(k)=nres_molec(k)-1
3082 nres_molec(j)=nres_molec(j)+1
3088 ! 16/01/2014 by Adasko: Adding to dummy atoms in the chain
3089 ! first is connected prevous chain (itype(i+1,1).eq.ntyp1)=true
3090 ! second dummy atom is conected to next chain itype(i+1,1).eq.ntyp1=false
3091 ! if (unres_pdb) then
3092 ! 2/15/2013 by Adam: corrected insertion of the last dummy residue
3093 ! print *,i,'tu dochodze'
3094 ! call refsys(i-3,i-2,i-1,e1,e2,e3,fail)
3102 ! c(j,i)=c(j,i-1)-1.9d0*e2(j)
3106 dcj=(c(j,i-2)-c(j,i-3))/2.0
3107 if (dcj.eq.0) dcj=1.23591524223
3112 else !itype(i+1,1).eq.ntyp1
3113 ! if (unres_pdb) then
3114 ! 2/15/2013 by Adam: corrected insertion of the first dummy residue
3115 ! call refsys(i+1,i+2,i+3,e1,e2,e3,fail)
3122 c(j,i)=c(j,i+1)-1.9d0*e2(j)
3126 dcj=(c(j,i+3)-c(j,i+2))/2.0
3127 if (dcj.eq.0) dcj=1.23591524223
3132 endif !itype(i+1,1).eq.ntyp1
3133 endif !itype.eq.ntyp1
3137 ! Calculate the CM of the last side chain.
3141 dc(j,ires)=sccor(j,iii)
3144 call sccenter(ires,iii,sccor)
3150 ! print *,"molecule",molecule
3151 if ((itype(nres,1).ne.10)) then
3153 if (molecule.eq.5) molecule=molecprev
3154 itype(nres,molecule)=ntyp1_molec(molecule)
3155 nres_molec(molecule)=nres_molec(molecule)+1
3156 ! if (unres_pdb) then
3157 ! 2/15/2013 by Adam: corrected insertion of the last dummy residue
3158 ! call refsys(nres-3,nres-2,nres-1,e1,e2,e3,fail)
3165 ! c(j,nres)=c(j,nres-1)-1.9d0*e2(j)
3169 dcj=(c(j,nres-2)-c(j,nres-3))/2.0
3170 c(j,nres)=c(j,nres-1)+dcj
3171 c(j,2*nres)=c(j,nres)
3175 ! print *,'I have',nres, nres_molec(:)
3177 !el kontrola nres w pliku inputowym WHAM-a w porownaniu z wartoscia wczytana z pliku pdb
3179 if (nres.ne.nres0) then
3180 write (iout,*) "Error: wrong parameter value: NRES=",nres,&
3182 stop "Error nres value in WHAM input"
3185 !---------------------------------
3186 !el reallocate tables
3189 ! hfrag_alloc(j,i)=hfrag(j,i)
3192 ! bfrag_alloc(j,i)=bfrag(j,i)
3198 ! allocate(hfrag(2,nres/3)) !(2,maxres/3)
3199 !el allocate(hfrag(2,nhfrag)) !(2,maxres/3)
3200 !el allocate(bfrag(4,nbfrag)) !(4,maxres/3)
3201 ! allocate(bfrag(4,nres/3)) !(4,maxres/3)
3205 ! hfrag(j,i)=hfrag_alloc(j,i)
3210 ! bfrag(j,i)=bfrag_alloc(j,i)
3213 !el end reallocate tables
3214 !---------------------------------
3222 c(j,2*nres)=c(j,nres)
3225 if (itype(1,1).eq.ntyp1) then
3229 ! 2/15/2013 by Adam: corrected insertion of the first dummy residue
3230 call refsys(2,3,4,e1,e2,e3,fail)
3237 c(j,1)=c(j,2)-1.9d0*e2(j)
3241 dcj=(c(j,4)-c(j,3))/2.0
3247 ! First lets assign correct dummy to correct type of chain
3249 if (itype(1,1).eq.ntyp1) then
3250 if (itype(2,1).eq.0) then
3252 if (itype(2,j).ne.0) then
3254 itype(1,j)=ntyp1_molec(j)
3255 nres_molec(1)=nres_molec(1)-1
3256 nres_molec(j)=nres_molec(j)+1
3263 print *,'I have',nres, nres_molec(:)
3265 ! Copy the coordinates to reference coordinates
3271 ! Calculate internal coordinates.
3273 write (iout,'(/a)') &
3274 "Cartesian coordinates of the reference structure"
3275 write (iout,'(a,3(3x,a5),5x,3(3x,a5))') &
3276 "Residue","X(CA)","Y(CA)","Z(CA)","X(SC)","Y(SC)","Z(SC)"
3278 write (iout,'(5(a3,1x),i3,3f8.3,5x,3f8.3)') &
3279 (restyp(itype(ires,j),j),j=1,5),ires,(c(j,ires),j=1,3),&
3280 (c(j,ires+nres),j=1,3)
3283 ! znamy już nres wiec mozna alokowac tablice
3284 ! Calculate internal coordinates.
3285 if(me.eq.king.or..not.out1file)then
3286 write (iout,'(a)') &
3287 "Backbone and SC coordinates as read from the PDB"
3289 write (iout,'(2i3,2x,a,3f8.3,5x,3f8.3)') &
3290 ires,itype(ires,1),restyp(itype(ires,1),1),(c(j,ires),j=1,3),&
3291 (c(j,nres+ires),j=1,3)
3294 ! NOW LETS ROCK! SORTING
3295 allocate(c_temporary(3,2*nres))
3296 allocate(itype_temporary(nres,5))
3297 if (.not.allocated(molnum)) allocate(molnum(nres+1))
3298 if (.not.allocated(istype)) write(iout,*) &
3299 "SOMETHING WRONG WITH ISTYTPE"
3300 allocate(istype_temp(nres))
3301 itype_temporary(:,:)=0
3305 if (itype(i,k).ne.0) then
3307 c_temporary(j,seqalingbegin)=c(j,i)
3308 c_temporary(j,seqalingbegin+nres)=c(j,i+nres)
3311 itype_temporary(seqalingbegin,k)=itype(i,k)
3312 print *,i,k,itype(i,k),itype_temporary(seqalingbegin,k),seqalingbegin
3313 istype_temp(seqalingbegin)=istype(i)
3314 molnum(seqalingbegin)=k
3315 seqalingbegin=seqalingbegin+1
3321 c(j,i)=c_temporary(j,i)
3326 itype(i,k)=itype_temporary(i,k)
3327 istype(i)=istype_temp(i)
3330 if (itype(1,1).eq.ntyp1) then
3334 ! 2/15/2013 by Adam: corrected insertion of the first dummy residue
3335 call refsys(2,3,4,e1,e2,e3,fail)
3342 c(j,1)=c(j,2)-1.9d0*e2(j)
3346 dcj=(c(j,4)-c(j,3))/2.0
3354 write (iout,'(/a)') &
3355 "Cartesian coordinates of the reference structure after sorting"
3356 write (iout,'(a,3(3x,a5),5x,3(3x,a5))') &
3357 "Residue","X(CA)","Y(CA)","Z(CA)","X(SC)","Y(SC)","Z(SC)"
3359 write (iout,'(5(a3,1x),i3,3f8.3,5x,3f8.3)') &
3360 (restyp(itype(ires,j),j),j=1,5),ires,(c(j,ires),j=1,3),&
3361 (c(j,ires+nres),j=1,3)
3365 ! print *,seqalingbegin,nres
3366 if(.not.allocated(vbld)) then
3367 allocate(vbld(2*nres))
3372 if(.not.allocated(vbld_inv)) then
3373 allocate(vbld_inv(2*nres))
3379 if(.not.allocated(theta)) then
3380 allocate(theta(nres+2))
3384 if(.not.allocated(phi)) allocate(phi(nres+2))
3385 if(.not.allocated(alph)) allocate(alph(nres+2))
3386 if(.not.allocated(omeg)) allocate(omeg(nres+2))
3387 if(.not.allocated(thetaref)) allocate(thetaref(nres+2))
3388 if(.not.allocated(phiref)) allocate(phiref(nres+2))
3389 if(.not.allocated(costtab)) allocate(costtab(nres))
3390 if(.not.allocated(sinttab)) allocate(sinttab(nres))
3391 if(.not.allocated(cost2tab)) allocate(cost2tab(nres))
3392 if(.not.allocated(sint2tab)) allocate(sint2tab(nres))
3393 if(.not.allocated(xxref)) allocate(xxref(nres))
3394 if(.not.allocated(yyref)) allocate(yyref(nres))
3395 if(.not.allocated(zzref)) allocate(zzref(nres)) !(maxres)
3396 if(.not.allocated(dc_norm)) then
3397 ! if(.not.allocated(dc_norm)) allocate(dc_norm(3,0:2*nres+2))
3398 allocate(dc_norm(3,0:2*nres+2))
3402 call int_from_cart(.true.,.false.)
3403 call sc_loc_geom(.false.)
3405 thetaref(i)=theta(i)
3415 dc(j,i)=c(j,i+1)-c(j,i)
3416 dc_norm(j,i)=dc(j,i)*vbld_inv(i+1)
3421 dc(j,i+nres)=c(j,i+nres)-c(j,i)
3422 dc_norm(j,i+nres)=dc(j,i+nres)*vbld_inv(i+nres)
3424 ! write (iout,*) i,(dc(j,i+nres),j=1,3),(dc_norm(j,i+nres),j=1,3),&
3428 ! Copy the coordinates to reference coordinates
3429 ! Splits to single chain if occurs
3433 ! cref(j,i,cou)=c(j,i)
3437 if(.not.allocated(cref)) allocate(cref(3,2*nres+2,maxperm)) !(3,maxres2+2,maxperm)
3438 if(.not.allocated(chain_rep)) allocate(chain_rep(3,2*nres+2,maxsym)) !(3,maxres2+2,maxsym)
3439 if(.not.allocated(tabperm)) allocate(tabperm(maxperm,maxsym)) !(maxperm,maxsym)
3440 !-----------------------------
3444 write (iout,*) "symetr", symetr
3447 !c write (iout,*) "spraw lancuchy",(c(j,i),j=1,3)
3449 if ((itype(i-1,1).eq.ntyp1).and.(i.gt.2)) then
3452 ! write (iout,*) "spraw lancuchy",(c(j,i),j=1,3)
3457 cref(j,i,cou)=c(j,i)
3458 cref(j,i+nres,cou)=c(j,i+nres)
3460 chain_rep(j,lll,kkk)=c(j,i)
3461 chain_rep(j,lll+nres,kkk)=c(j,i+nres)
3465 write (iout,*) chain_length
3466 if (chain_length.eq.0) chain_length=nres
3468 chain_rep(j,chain_length,symetr)=chain_rep(j,chain_length,1)
3469 chain_rep(j,chain_length+nres,symetr) &
3470 =chain_rep(j,chain_length+nres,1)
3473 ! write (iout,*) "spraw lancuchy",chain_length,symetr
3475 ! do kkk=1,chain_length
3476 ! write (iout,*) itype(kkk),(chain_rep(j,kkk,i), j=1,3)
3480 ! makes copy of chains
3481 write (iout,*) "symetr", symetr
3486 if (symetr.gt.1) then
3493 write(iout,*) (tabperm(i,kkk),kkk=1,4)
3499 ! write (iout,*) i,icha
3500 do lll=1,chain_length
3502 if (cou.le.nres) then
3504 kupa=mod(lll,chain_length)
3505 iprzes=(kkk-1)*chain_length+lll
3506 if (kupa.eq.0) kupa=chain_length
3507 ! write (iout,*) "kupa", kupa
3508 cref(j,iprzes,i)=chain_rep(j,kupa,icha)
3509 cref(j,iprzes+nres,i)=chain_rep(j,kupa+nres,icha)
3516 !-koniec robienia kopii
3519 write (iout,*) "nowa struktura", nperm
3521 write (iout,110) restyp(itype(i,1),1),i,cref(1,i,kkk),&
3523 cref(3,i,kkk),cref(1,nres+i,kkk),&
3524 cref(2,nres+i,kkk),cref(3,nres+i,kkk)
3526 100 format (//' alpha-carbon coordinates ',&
3527 ' centroid coordinates'/ &
3528 ' ', 6X,'X',11X,'Y',11X,'Z', &
3529 10X,'X',11X,'Y',11X,'Z')
3530 110 format (a,'(',i3,')',6f12.5)
3536 bfrag(i,j)=bfrag(i,j)-ishift
3542 hfrag(i,j)=hfrag(i,j)-ishift
3548 end subroutine readpdb
3549 #if .not. defined(WHAM_RUN) && .not. defined(CLUSTER)
3550 !-----------------------------------------------------------------------------
3552 !-----------------------------------------------------------------------------
3553 subroutine read_control
3567 use random, only: random_init
3568 ! implicit real*8 (a-h,o-z)
3569 ! include 'DIMENSIONS'
3571 use prng, only:prng_restart
3573 logical :: OKRandom!, prng_restart
3576 ! include 'COMMON.IOUNITS'
3577 ! include 'COMMON.TIME1'
3578 ! include 'COMMON.THREAD'
3579 ! include 'COMMON.SBRIDGE'
3580 ! include 'COMMON.CONTROL'
3581 ! include 'COMMON.MCM'
3582 ! include 'COMMON.MAP'
3583 ! include 'COMMON.HEADER'
3584 ! include 'COMMON.CSA'
3585 ! include 'COMMON.CHAIN'
3586 ! include 'COMMON.MUCA'
3587 ! include 'COMMON.MD'
3588 ! include 'COMMON.FFIELD'
3589 ! include 'COMMON.INTERACT'
3590 ! include 'COMMON.SETUP'
3591 !el integer :: KDIAG,ICORFL,IXDR
3592 !el COMMON /MACHSW/ KDIAG,ICORFL,IXDR
3593 character(len=8),dimension(0:3) :: diagmeth = reshape((/'Library ',&
3594 'EVVRSP ','Givens ','Jacobi '/),shape(diagmeth))
3595 ! character(len=80) :: ucase
3596 character(len=640) :: controlcard
3598 real(kind=8) :: seed,rmsdbc,rmsdbc1max,rmsdbcm,drms,timem!,&
3604 read (INP,'(a)') titel
3605 call card_concat(controlcard,.true.)
3606 ! out1file=index(controlcard,'OUT1FILE').gt.0 .or. fg_rank.gt.0
3607 ! print *,"Processor",me," fg_rank",fg_rank," out1file",out1file
3608 call reada(controlcard,'SEED',seed,0.0D0)
3609 call random_init(seed)
3610 ! Set up the time limit (caution! The time must be input in minutes!)
3611 read_cart=index(controlcard,'READ_CART').gt.0
3612 call readi(controlcard,'CONSTR_DIST',constr_dist,0)
3613 call readi(controlcard,'SYM',symetr,1)
3614 call reada(controlcard,'TIMLIM',timlim,960.0D0) ! default 16 hours
3615 unres_pdb = index(controlcard,'UNRES_PDB') .gt. 0
3616 call reada(controlcard,'SAFETY',safety,30.0D0) ! default 30 minutes
3617 call reada(controlcard,'RMSDBC',rmsdbc,3.0D0)
3618 call reada(controlcard,'RMSDBC1',rmsdbc1,0.5D0)
3619 call reada(controlcard,'RMSDBC1MAX',rmsdbc1max,1.5D0)
3620 call reada(controlcard,'RMSDBCM',rmsdbcm,3.0D0)
3621 call reada(controlcard,'DRMS',drms,0.1D0)
3622 if(me.eq.king .or. .not. out1file .and. fg_rank.eq.0) then
3623 write (iout,'(a,f10.1)')'RMSDBC = ',rmsdbc
3624 write (iout,'(a,f10.1)')'RMSDBC1 = ',rmsdbc1
3625 write (iout,'(a,f10.1)')'RMSDBC1MAX = ',rmsdbc1max
3626 write (iout,'(a,f10.1)')'DRMS = ',drms
3627 write (iout,'(a,f10.1)')'RMSDBCM = ',rmsdbcm
3628 write (iout,'(a,f10.1)') 'Time limit (min):',timlim
3630 call readi(controlcard,'NZ_START',nz_start,0)
3631 call readi(controlcard,'NZ_END',nz_end,0)
3632 call readi(controlcard,'IZ_SC',iz_sc,0)
3633 timlim=60.0D0*timlim
3634 safety = 60.0d0*safety
3637 call reada(controlcard,"T_BATH",t_bath,300.0d0)
3638 !C SHIELD keyword sets if the shielding effect of side-chains is used
3639 !C 0 denots no shielding is used all peptide are equally despite the
3640 !C solvent accesible area
3641 !C 1 the newly introduced function
3642 !C 2 reseved for further possible developement
3643 call readi(controlcard,'SHIELD',shield_mode,0)
3644 !C if(me.eq.king .or. .not. out1file .and. fg_rank.eq.0) then
3645 write(iout,*) "shield_mode",shield_mode
3646 !C Varibles set size of box
3647 with_theta_constr = index(controlcard,"WITH_THETA_CONSTR").gt.0
3648 protein=index(controlcard,"PROTEIN").gt.0
3649 ions=index(controlcard,"IONS").gt.0
3650 nucleic=index(controlcard,"NUCLEIC").gt.0
3651 write (iout,*) "with_theta_constr ",with_theta_constr
3652 AFMlog=(index(controlcard,'AFM'))
3653 selfguide=(index(controlcard,'SELFGUIDE'))
3654 print *,'AFMlog',AFMlog,selfguide,"KUPA"
3655 call readi(controlcard,'GENCONSTR',genconstr,0)
3656 call reada(controlcard,'BOXX',boxxsize,100.0d0)
3657 call reada(controlcard,'BOXY',boxysize,100.0d0)
3658 call reada(controlcard,'BOXZ',boxzsize,100.0d0)
3659 call readi(controlcard,'TUBEMOD',tubemode,0)
3660 write (iout,*) TUBEmode,"TUBEMODE"
3661 if (TUBEmode.gt.0) then
3662 call reada(controlcard,"XTUBE",tubecenter(1),0.0d0)
3663 call reada(controlcard,"YTUBE",tubecenter(2),0.0d0)
3664 call reada(controlcard,"ZTUBE",tubecenter(3),0.0d0)
3665 call reada(controlcard,"RTUBE",tubeR0,0.0d0)
3666 call reada(controlcard,"TUBETOP",bordtubetop,boxzsize)
3667 call reada(controlcard,"TUBEBOT",bordtubebot,0.0d0)
3668 call reada(controlcard,"TUBEBUF",tubebufthick,1.0d0)
3669 buftubebot=bordtubebot+tubebufthick
3670 buftubetop=bordtubetop-tubebufthick
3673 ! CUTOFFF ON ELECTROSTATICS
3674 call reada(controlcard,"R_CUT_ELE",r_cut_ele,15.0d0)
3675 call reada(controlcard,"LAMBDA_ELE",rlamb_ele,0.3d0)
3676 write(iout,*) "R_CUT_ELE=",r_cut_ele
3677 ! Lipidic parameters
3678 call reada(controlcard,"LIPTHICK",lipthick,0.0d0)
3679 call reada(controlcard,"LIPAQBUF",lipbufthick,0.0d0)
3680 if (lipthick.gt.0.0d0) then
3681 bordliptop=(boxzsize+lipthick)/2.0
3682 bordlipbot=bordliptop-lipthick
3683 if ((bordliptop.gt.boxzsize).or.(bordlipbot.lt.0.0)) &
3684 write(iout,*) "WARNING WRONG SIZE OF LIPIDIC PHASE"
3685 buflipbot=bordlipbot+lipbufthick
3686 bufliptop=bordliptop-lipbufthick
3687 if ((lipbufthick*2.0d0).gt.lipthick) &
3688 write(iout,*) "WARNING WRONG SIZE OF LIP AQ BUF"
3689 endif !lipthick.gt.0
3690 write(iout,*) "bordliptop=",bordliptop
3691 write(iout,*) "bordlipbot=",bordlipbot
3692 write(iout,*) "bufliptop=",bufliptop
3693 write(iout,*) "buflipbot=",buflipbot
3694 write (iout,*) "SHIELD MODE",shield_mode
3696 !C-------------------------
3697 minim=(index(controlcard,'MINIMIZE').gt.0)
3698 dccart=(index(controlcard,'CART').gt.0)
3699 overlapsc=(index(controlcard,'OVERLAP').gt.0)
3700 overlapsc=.not.overlapsc
3701 searchsc=(index(controlcard,'NOSEARCHSC').gt.0)
3702 searchsc=.not.searchsc
3703 sideadd=(index(controlcard,'SIDEADD').gt.0)
3704 energy_dec=(index(controlcard,'ENERGY_DEC').gt.0)
3705 outpdb=(index(controlcard,'PDBOUT').gt.0)
3706 outmol2=(index(controlcard,'MOL2OUT').gt.0)
3707 pdbref=(index(controlcard,'PDBREF').gt.0)
3708 refstr=pdbref .or. (index(controlcard,'REFSTR').gt.0)
3709 indpdb=index(controlcard,'PDBSTART')
3710 extconf=(index(controlcard,'EXTCONF').gt.0)
3711 call readi(controlcard,'IPRINT',iprint,0)
3712 call readi(controlcard,'MAXGEN',maxgen,10000)
3713 call readi(controlcard,'MAXOVERLAP',maxoverlap,1000)
3714 call readi(controlcard,"KDIAG",kdiag,0)
3715 call readi(controlcard,"RESCALE_MODE",rescale_mode,2)
3716 if(me.eq.king .or. .not. out1file .and. fg_rank.eq.0) &
3717 write (iout,*) "RESCALE_MODE",rescale_mode
3718 split_ene=index(controlcard,'SPLIT_ENE').gt.0
3719 if (index(controlcard,'REGULAR').gt.0.0D0) then
3720 call reada(controlcard,'WEIDIS',weidis,0.1D0)
3724 if (index(controlcard,'CHECKGRAD').gt.0) then
3726 if (index(controlcard,'CART').gt.0) then
3728 elseif (index(controlcard,'CARINT').gt.0) then
3733 elseif (index(controlcard,'THREAD').gt.0) then
3735 call readi(controlcard,'THREAD',nthread,0)
3736 if (nthread.gt.0) then
3737 call reada(controlcard,'WEIDIS',weidis,0.1D0)
3740 write (iout,'(a)')'A number has to follow the THREAD keyword.'
3741 stop 'Error termination in Read_Control.'
3743 else if (index(controlcard,'MCMA').gt.0) then
3745 else if (index(controlcard,'MCEE').gt.0) then
3747 else if (index(controlcard,'MULTCONF').gt.0) then
3749 else if (index(controlcard,'MAP').gt.0) then
3751 call readi(controlcard,'MAP',nmap,0)
3752 else if (index(controlcard,'CSA').gt.0) then
3754 !rc else if (index(controlcard,'ZSCORE').gt.0) then
3756 !rc ZSCORE is rm from UNRES, modecalc=9 is available
3759 !fcm else if (index(controlcard,'MCMF').gt.0) then
3761 else if (index(controlcard,'SOFTREG').gt.0) then
3763 else if (index(controlcard,'CHECK_BOND').gt.0) then
3765 else if (index(controlcard,'TEST').gt.0) then
3767 else if (index(controlcard,'MD').gt.0) then
3769 else if (index(controlcard,'RE ').gt.0) then
3773 lmuca=index(controlcard,'MUCA').gt.0
3774 call readi(controlcard,'MUCADYN',mucadyn,0)
3775 call readi(controlcard,'MUCASMOOTH',muca_smooth,0)
3776 if (lmuca .and. (me.eq.king .or. .not.out1file )) &
3778 write (iout,*) 'MUCADYN=',mucadyn
3779 write (iout,*) 'MUCASMOOTH=',muca_smooth
3782 iscode=index(controlcard,'ONE_LETTER')
3783 indphi=index(controlcard,'PHI')
3784 indback=index(controlcard,'BACK')
3785 iranconf=index(controlcard,'RAND_CONF')
3786 i2ndstr=index(controlcard,'USE_SEC_PRED')
3787 gradout=index(controlcard,'GRADOUT').gt.0
3788 gnorm_check=index(controlcard,'GNORM_CHECK').gt.0
3789 call reada(controlcard,'DISTCHAINMAX',distchainmax,5.0d0)
3790 if (me.eq.king .or. .not.out1file ) &
3791 write (iout,*) "DISTCHAINMAX",distchainmax
3793 if(me.eq.king.or..not.out1file) &
3794 write (iout,'(2a)') diagmeth(kdiag),&
3795 ' routine used to diagonalize matrices.'
3796 if (shield_mode.gt.0) then
3798 !C VSolvSphere the volume of solving sphere
3800 !C rpp(1,1) is the energy r0 for peptide group contact and will be used for it
3801 !C there will be no distinction between proline peptide group and normal peptide
3802 !C group in case of shielding parameters
3803 VSolvSphere=4.0/3.0*pi*rpp(1,1)**3
3804 VSolvSphere_div=VSolvSphere-4.0/3.0*pi*(rpp(1,1)/2.0)**3
3805 write (iout,*) VSolvSphere,VSolvSphere_div
3806 !C long axis of side chain
3808 long_r_sidechain(i)=vbldsc0(1,i)
3809 short_r_sidechain(i)=sigma0(i)
3810 write(iout,*) "parame for long and short axis",i,vbldsc0(1,i),&
3816 end subroutine read_control
3817 !-----------------------------------------------------------------------------
3818 subroutine read_REMDpar
3820 ! Read REMD settings
3827 use control_data, only:out1file
3828 ! implicit real*8 (a-h,o-z)
3829 ! include 'DIMENSIONS'
3830 ! include 'COMMON.IOUNITS'
3831 ! include 'COMMON.TIME1'
3832 ! include 'COMMON.MD'
3835 !el include 'COMMON.LANGEVIN'
3837 !el include 'COMMON.LANGEVIN.lang0'
3839 ! include 'COMMON.INTERACT'
3840 ! include 'COMMON.NAMES'
3841 ! include 'COMMON.GEO'
3842 ! include 'COMMON.REMD'
3843 ! include 'COMMON.CONTROL'
3844 ! include 'COMMON.SETUP'
3845 ! character(len=80) :: ucase
3846 character(len=320) :: controlcard
3847 character(len=3200) :: controlcard1
3848 integer :: iremd_m_total
3851 ! real(kind=8) :: var,ene
3853 if(me.eq.king.or..not.out1file) &
3854 write (iout,*) "REMD setup"
3856 call card_concat(controlcard,.true.)
3857 call readi(controlcard,"NREP",nrep,3)
3858 call readi(controlcard,"NSTEX",nstex,1000)
3859 call reada(controlcard,"RETMIN",retmin,10.0d0)
3860 call reada(controlcard,"RETMAX",retmax,1000.0d0)
3861 mremdsync=(index(controlcard,'SYNC').gt.0)
3862 call readi(controlcard,"NSYN",i_sync_step,100)
3863 restart1file=(index(controlcard,'REST1FILE').gt.0)
3864 traj1file=(index(controlcard,'TRAJ1FILE').gt.0)
3865 call readi(controlcard,"TRAJCACHE",max_cache_traj_use,1)
3866 if(max_cache_traj_use.gt.max_cache_traj) &
3867 max_cache_traj_use=max_cache_traj
3868 if(me.eq.king.or..not.out1file) then
3869 !d if (traj1file) then
3870 !rc caching is in testing - NTWX is not ignored
3871 !d write (iout,*) "NTWX value is ignored"
3872 !d write (iout,*) " trajectory is stored to one file by master"
3873 !d write (iout,*) " before exchange at NSTEX intervals"
3875 write (iout,*) "NREP= ",nrep
3876 write (iout,*) "NSTEX= ",nstex
3877 write (iout,*) "SYNC= ",mremdsync
3878 write (iout,*) "NSYN= ",i_sync_step
3879 write (iout,*) "TRAJCACHE= ",max_cache_traj_use
3882 allocate(remd_t(nrep),remd_m(nrep)) !(maxprocs)
3883 if (index(controlcard,'TLIST').gt.0) then
3885 call card_concat(controlcard1,.true.)
3886 read(controlcard1,*) (remd_t(i),i=1,nrep)
3887 if(me.eq.king.or..not.out1file) &
3888 write (iout,*)'tlist',(remd_t(i),i=1,nrep)
3891 if (index(controlcard,'MLIST').gt.0) then
3893 call card_concat(controlcard1,.true.)
3894 read(controlcard1,*) (remd_m(i),i=1,nrep)
3895 if(me.eq.king.or..not.out1file) then
3896 write (iout,*)'mlist',(remd_m(i),i=1,nrep)
3899 iremd_m_total=iremd_m_total+remd_m(i)
3901 write (iout,*) 'Total number of replicas ',iremd_m_total
3904 if(me.eq.king.or..not.out1file) &
3905 write (iout,'(/30(1h=),a,29(1h=)/)') " End of REMD run setup "
3907 end subroutine read_REMDpar
3908 !-----------------------------------------------------------------------------
3909 subroutine read_MDpar
3913 use control_data, only: r_cut,rlamb,out1file
3915 use geometry_data, only: pi
3917 ! implicit real*8 (a-h,o-z)
3918 ! include 'DIMENSIONS'
3919 ! include 'COMMON.IOUNITS'
3920 ! include 'COMMON.TIME1'
3921 ! include 'COMMON.MD'
3924 !el include 'COMMON.LANGEVIN'
3926 !el include 'COMMON.LANGEVIN.lang0'
3928 ! include 'COMMON.INTERACT'
3929 ! include 'COMMON.NAMES'
3930 ! include 'COMMON.GEO'
3931 ! include 'COMMON.SETUP'
3932 ! include 'COMMON.CONTROL'
3933 ! include 'COMMON.SPLITELE'
3934 ! character(len=80) :: ucase
3935 character(len=320) :: controlcard
3940 call card_concat(controlcard,.true.)
3941 call readi(controlcard,"NSTEP",n_timestep,1000000)
3942 call readi(controlcard,"NTWE",ntwe,100)
3943 call readi(controlcard,"NTWX",ntwx,1000)
3944 call reada(controlcard,"DT",d_time,1.0d-1)
3945 call reada(controlcard,"DVMAX",dvmax,2.0d1)
3946 call reada(controlcard,"DAMAX",damax,1.0d1)
3947 call reada(controlcard,"EDRIFTMAX",edriftmax,1.0d+1)
3948 call readi(controlcard,"LANG",lang,0)
3949 RESPA = index(controlcard,"RESPA") .gt. 0
3950 call readi(controlcard,"NTIME_SPLIT",ntime_split,1)
3951 ntime_split0=ntime_split
3952 call readi(controlcard,"MAXTIME_SPLIT",maxtime_split,64)
3953 ntime_split0=ntime_split
3954 call reada(controlcard,"R_CUT",r_cut,2.0d0)
3955 call reada(controlcard,"LAMBDA",rlamb,0.3d0)
3956 rest = index(controlcard,"REST").gt.0
3957 tbf = index(controlcard,"TBF").gt.0
3958 usampl = index(controlcard,"USAMPL").gt.0
3959 mdpdb = index(controlcard,"MDPDB").gt.0
3960 call reada(controlcard,"T_BATH",t_bath,300.0d0)
3961 call reada(controlcard,"TAU_BATH",tau_bath,1.0d-1)
3962 call reada(controlcard,"EQ_TIME",eq_time,1.0d+4)
3963 call readi(controlcard,"RESET_MOMENT",count_reset_moment,1000)
3964 if (count_reset_moment.eq.0) count_reset_moment=1000000000
3965 call readi(controlcard,"RESET_VEL",count_reset_vel,1000)
3966 reset_moment=lang.eq.0 .and. tbf .and. count_reset_moment.gt.0
3967 reset_vel=lang.eq.0 .and. tbf .and. count_reset_vel.gt.0
3968 if (count_reset_vel.eq.0) count_reset_vel=1000000000
3969 large = index(controlcard,"LARGE").gt.0
3970 print_compon = index(controlcard,"PRINT_COMPON").gt.0
3971 rattle = index(controlcard,"RATTLE").gt.0
3972 ! if performing umbrella sampling, fragments constrained are read from the fragment file
3978 if(me.eq.king.or..not.out1file) then
3980 write (iout,'(27(1h=),a26,27(1h=))') " Parameters of the MD run "
3982 write (iout,'(a)') "The units are:"
3983 write (iout,'(a)') "positions: angstrom, time: 48.9 fs"
3984 write (iout,'(2a)') "velocity: angstrom/(48.9 fs),",&
3985 " acceleration: angstrom/(48.9 fs)**2"
3986 write (iout,'(a)') "energy: kcal/mol, temperature: K"
3988 write (iout,'(a60,i10)') "Number of time steps:",n_timestep
3989 write (iout,'(a60,f10.5,a)') &
3990 "Initial time step of numerical integration:",d_time,&
3992 write (iout,'(60x,f10.5,a)') d_time*48.9," fs"
3994 write (iout,'(2a,i4,a)') &
3995 "A-MTS algorithm used; initial time step for fast-varying",&
3996 " short-range forces split into",ntime_split," steps."
3997 write (iout,'(a,f5.2,a,f5.2)') "Short-range force cutoff",&
3998 r_cut," lambda",rlamb
4000 write (iout,'(2a,f10.5)') &
4001 "Maximum acceleration threshold to reduce the time step",&
4002 "/increase split number:",damax
4003 write (iout,'(2a,f10.5)') &
4004 "Maximum predicted energy drift to reduce the timestep",&
4005 "/increase split number:",edriftmax
4006 write (iout,'(a60,f10.5)') &
4007 "Maximum velocity threshold to reduce velocities:",dvmax
4008 write (iout,'(a60,i10)') "Frequency of property output:",ntwe
4009 write (iout,'(a60,i10)') "Frequency of coordinate output:",ntwx
4010 if (rattle) write (iout,'(a60)') &
4011 "Rattle algorithm used to constrain the virtual bonds"
4015 call reada(controlcard,"ETAWAT",etawat,0.8904d0)
4016 call reada(controlcard,"RWAT",rwat,1.4d0)
4017 call reada(controlcard,"SCAL_FRIC",scal_fric,2.0d-2)
4018 surfarea=index(controlcard,"SURFAREA").gt.0
4019 call readi(controlcard,"RESET_FRICMAT",reset_fricmat,1000)
4020 if(me.eq.king.or..not.out1file)then
4021 write (iout,'(/a,$)') "Langevin dynamics calculation"
4023 write (iout,'(a/)') &
4024 " with direct integration of Langevin equations"
4025 else if (lang.eq.2) then
4026 write (iout,'(a/)') " with TINKER stochasic MD integrator"
4027 else if (lang.eq.3) then
4028 write (iout,'(a/)') " with Ciccotti's stochasic MD integrator"
4029 else if (lang.eq.4) then
4030 write (iout,'(a/)') " in overdamped mode"
4032 write (iout,'(//a,i5)') &
4033 "=========== ERROR: Unknown Langevin dynamics mode:",lang
4036 write (iout,'(a60,f10.5)') "Temperature:",t_bath
4037 write (iout,'(a60,f10.5)') "Viscosity of the solvent:",etawat
4038 write (iout,'(a60,f10.5)') "Radius of solvent molecule:",rwat
4039 write (iout,'(a60,f10.5)') &
4040 "Scaling factor of the friction forces:",scal_fric
4041 if (surfarea) write (iout,'(2a,i10,a)') &
4042 "Friction coefficients will be scaled by solvent-accessible",&
4043 " surface area every",reset_fricmat," steps."
4045 ! Calculate friction coefficients and bounds of stochastic forces
4046 eta=6*pi*cPoise*etawat
4047 if(me.eq.king.or..not.out1file) &
4048 write(iout,'(a60,f10.5)')"Eta of the solvent in natural units:",&
4051 do j=1,5 !types of molecules
4052 gamp(j)=scal_fric*(pstok(j)+rwat)*eta
4053 stdfp(j)=dsqrt(2*Rb*t_bath/d_time)
4055 allocate(gamsc(ntyp1,5),stdfsc(ntyp1,5)) !(ntyp1)
4056 do j=1,5 !types of molecules
4058 gamsc(i,j)=scal_fric*(restok(i,j)+rwat)*eta
4059 stdfsc(i,j)=dsqrt(2*Rb*t_bath/d_time)
4063 if(me.eq.king.or..not.out1file)then
4064 write (iout,'(/2a/)') &
4065 "Radii of site types and friction coefficients and std's of",&
4066 " stochastic forces of fully exposed sites"
4067 write (iout,'(a5,f5.2,2f10.5)')'p',pstok,gamp(1),stdfp*dsqrt(gamp(1))
4069 write (iout,'(a5,f5.2,2f10.5)') restyp(i,1),restok(i,1),&
4070 gamsc(i,1),stdfsc(i,1)*dsqrt(gamsc(i,1))
4074 if(me.eq.king.or..not.out1file)then
4075 write (iout,'(a)') "Berendsen bath calculation"
4076 write (iout,'(a60,f10.5)') "Temperature:",t_bath
4077 write (iout,'(a60,f10.5)') "Coupling constant (tau):",tau_bath
4079 write (iout,'(a,i10,a)') "Momenta will be reset at zero every",&
4080 count_reset_moment," steps"
4082 write (iout,'(a,i10,a)') &
4083 "Velocities will be reset at random every",count_reset_vel,&
4087 if(me.eq.king.or..not.out1file) &
4088 write (iout,'(a31)') "Microcanonical mode calculation"
4090 if(me.eq.king.or..not.out1file)then
4091 if (rest) write (iout,'(/a/)') "===== Calculation restarted ===="
4093 write(iout,*) "MD running with constraints."
4094 write(iout,*) "Equilibration time ", eq_time, " mtus."
4095 write(iout,*) "Constraining ", nfrag," fragments."
4096 write(iout,*) "Length of each fragment, weight and q0:"
4098 write (iout,*) "Set of restraints #",iset
4100 write(iout,'(2i5,f8.1,f7.4)') ifrag(1,i,iset),&
4101 ifrag(2,i,iset),wfrag(i,iset),qinfrag(i,iset)
4103 write(iout,*) "constraints between ", npair, "fragments."
4104 write(iout,*) "constraint pairs, weights and q0:"
4106 write(iout,'(2i5,f8.1,f7.4)') ipair(1,i,iset),&
4107 ipair(2,i,iset),wpair(i,iset),qinpair(i,iset)
4109 write(iout,*) "angle constraints within ", nfrag_back,&
4110 "backbone fragments."
4111 write(iout,*) "fragment, weights:"
4113 write(iout,'(2i5,3f8.1)') ifrag_back(1,i,iset),&
4114 ifrag_back(2,i,iset),wfrag_back(1,i,iset),&
4115 wfrag_back(2,i,iset),wfrag_back(3,i,iset)
4118 iset=mod(kolor,nset)+1
4121 if(me.eq.king.or..not.out1file) &
4122 write (iout,'(/30(1h=),a,29(1h=)/)') " End of MD run setup "
4124 end subroutine read_MDpar
4125 !-----------------------------------------------------------------------------
4129 ! implicit real*8 (a-h,o-z)
4130 ! include 'DIMENSIONS'
4131 ! include 'COMMON.MAP'
4132 ! include 'COMMON.IOUNITS'
4133 character(len=3) :: angid(4) = (/'THE','PHI','ALP','OME'/)
4134 character(len=80) :: mapcard !,ucase
4137 ! real(kind=8) :: var,ene
4140 read (inp,'(a)') mapcard
4141 mapcard=ucase(mapcard)
4142 if (index(mapcard,'PHI').gt.0) then
4144 else if (index(mapcard,'THE').gt.0) then
4146 else if (index(mapcard,'ALP').gt.0) then
4148 else if (index(mapcard,'OME').gt.0) then
4151 write(iout,'(a)')'Error - illegal variable spec in MAP card.'
4152 stop 'Error - illegal variable spec in MAP card.'
4154 call readi (mapcard,'RES1',res1(imap),0)
4155 call readi (mapcard,'RES2',res2(imap),0)
4156 if (res1(imap).eq.0) then
4157 res1(imap)=res2(imap)
4158 else if (res2(imap).eq.0) then
4159 res2(imap)=res1(imap)
4161 if(res1(imap)*res2(imap).eq.0 .or. res1(imap).gt.res2(imap))then
4162 write (iout,'(a)') &
4163 'Error - illegal definition of variable group in MAP.'
4164 stop 'Error - illegal definition of variable group in MAP.'
4166 call reada(mapcard,'FROM',ang_from(imap),0.0D0)
4167 call reada(mapcard,'TO',ang_to(imap),0.0D0)
4168 call readi(mapcard,'NSTEP',nstep(imap),0)
4169 if (ang_from(imap).eq.ang_to(imap) .or. nstep(imap).eq.0) then
4170 write (iout,'(a)') &
4171 'Illegal boundary and/or step size specification in MAP.'
4172 stop 'Illegal boundary and/or step size specification in MAP.'
4176 end subroutine map_read
4177 !-----------------------------------------------------------------------------
4180 use control_data, only: vdisulf
4182 ! implicit real*8 (a-h,o-z)
4183 ! include 'DIMENSIONS'
4184 ! include 'COMMON.IOUNITS'
4185 ! include 'COMMON.GEO'
4186 ! include 'COMMON.CSA'
4187 ! include 'COMMON.BANK'
4188 ! include 'COMMON.CONTROL'
4189 ! character(len=80) :: ucase
4190 character(len=620) :: mcmcard
4192 ! integer :: ntf,ik,iw_pdb
4193 ! real(kind=8) :: var,ene
4195 call card_concat(mcmcard,.true.)
4197 call readi(mcmcard,'NCONF',nconf,50)
4198 call readi(mcmcard,'NADD',nadd,0)
4199 call readi(mcmcard,'JSTART',jstart,1)
4200 call readi(mcmcard,'JEND',jend,1)
4201 call readi(mcmcard,'NSTMAX',nstmax,500000)
4202 call readi(mcmcard,'N0',n0,1)
4203 call readi(mcmcard,'N1',n1,6)
4204 call readi(mcmcard,'N2',n2,4)
4205 call readi(mcmcard,'N3',n3,0)
4206 call readi(mcmcard,'N4',n4,0)
4207 call readi(mcmcard,'N5',n5,0)
4208 call readi(mcmcard,'N6',n6,10)
4209 call readi(mcmcard,'N7',n7,0)
4210 call readi(mcmcard,'N8',n8,0)
4211 call readi(mcmcard,'N9',n9,0)
4212 call readi(mcmcard,'N14',n14,0)
4213 call readi(mcmcard,'N15',n15,0)
4214 call readi(mcmcard,'N16',n16,0)
4215 call readi(mcmcard,'N17',n17,0)
4216 call readi(mcmcard,'N18',n18,0)
4218 vdisulf=(index(mcmcard,'DYNSS').gt.0)
4220 call readi(mcmcard,'NDIFF',ndiff,2)
4221 call reada(mcmcard,'DIFFCUT',diffcut,0.0d0)
4222 call readi(mcmcard,'IS1',is1,1)
4223 call readi(mcmcard,'IS2',is2,8)
4224 call readi(mcmcard,'NRAN0',nran0,4)
4225 call readi(mcmcard,'NRAN1',nran1,2)
4226 call readi(mcmcard,'IRR',irr,1)
4227 call readi(mcmcard,'NSEED',nseed,20)
4228 call readi(mcmcard,'NTOTAL',ntotal,10000)
4229 call reada(mcmcard,'CUT1',cut1,2.0d0)
4230 call reada(mcmcard,'CUT2',cut2,5.0d0)
4231 call reada(mcmcard,'ESTOP',estop,-3000.0d0)
4232 call readi(mcmcard,'ICMAX',icmax,3)
4233 call readi(mcmcard,'IRESTART',irestart,0)
4234 !!bankt call readi(mcmcard,'NBANKTM',ntbankm,0)
4237 call reada(mcmcard,'DELE',dele,20.0d0)
4238 call reada(mcmcard,'DIFCUT',difcut,720.0d0)
4239 call readi(mcmcard,'IREF',iref,0)
4240 call reada(mcmcard,'RMSCUT',rmscut,4.0d0)
4241 call reada(mcmcard,'PNCCUT',pnccut,0.5d0)
4242 call readi(mcmcard,'NCONF_IN',nconf_in,0)
4243 call reada(mcmcard,'RDIH_BIAS',rdih_bias,0.5d0)
4244 write (iout,*) "NCONF_IN",nconf_in
4246 end subroutine csaread
4247 !-----------------------------------------------------------------------------
4251 use control_data, only: MaxMoveType
4254 ! implicit real*8 (a-h,o-z)
4255 ! include 'DIMENSIONS'
4256 ! include 'COMMON.MCM'
4257 ! include 'COMMON.MCE'
4258 ! include 'COMMON.IOUNITS'
4259 ! character(len=80) :: ucase
4260 character(len=320) :: mcmcard
4263 ! real(kind=8) :: var,ene
4265 call card_concat(mcmcard,.true.)
4266 call readi(mcmcard,'MAXACC',maxacc,100)
4267 call readi(mcmcard,'MAX_MCM_IT',max_mcm_it,10000)
4268 call readi(mcmcard,'MAXTRIAL',maxtrial,100)
4269 call readi(mcmcard,'MAXTRIAL_ITER',maxtrial_iter,1000)
4270 call readi(mcmcard,'MAXREPM',maxrepm,200)
4271 call reada(mcmcard,'RANFRACT',RanFract,0.5D0)
4272 call reada(mcmcard,'POOL_FRACT',pool_fraction,0.01D0)
4273 call reada(mcmcard,'OVERLAP',overlap_cut,1.0D3)
4274 call reada(mcmcard,'E_UP',e_up,5.0D0)
4275 call reada(mcmcard,'DELTE',delte,0.1D0)
4276 call readi(mcmcard,'NSWEEP',nsweep,5)
4277 call readi(mcmcard,'NSTEPH',nsteph,0)
4278 call readi(mcmcard,'NSTEPC',nstepc,0)
4279 call reada(mcmcard,'TMIN',tmin,298.0D0)
4280 call reada(mcmcard,'TMAX',tmax,298.0D0)
4281 call readi(mcmcard,'NWINDOW',nwindow,0)
4282 call readi(mcmcard,'PRINT_MC',print_mc,0)
4283 print_stat=(index(mcmcard,'NO_PRINT_STAT').le.0)
4284 print_int=(index(mcmcard,'NO_PRINT_INT').le.0)
4285 ent_read=(index(mcmcard,'ENT_READ').gt.0)
4286 call readi(mcmcard,'SAVE_FREQ',save_frequency,1000)
4287 call readi(mcmcard,'MESSAGE_FREQ',message_frequency,1000)
4288 call readi(mcmcard,'POOL_READ_FREQ',pool_read_freq,5000)
4289 call readi(mcmcard,'POOL_SAVE_FREQ',pool_save_freq,1000)
4290 call readi(mcmcard,'PRINT_FREQ',print_freq,1000)
4291 if (nwindow.gt.0) then
4292 allocate(winstart(nwindow)) !!el (maxres)
4293 allocate(winend(nwindow)) !!el
4294 allocate(winlen(nwindow)) !!el
4295 read (inp,*) (winstart(i),winend(i),i=1,nwindow)
4297 winlen(i)=winend(i)-winstart(i)+1
4300 if (tmax.lt.tmin) tmax=tmin
4301 if (tmax.eq.tmin) then
4305 if (nstepc.gt.0 .and. nsteph.gt.0) then
4306 tsteph=(tmax/tmin)**(1.0D0/(nsteph+0.0D0))
4307 tstepc=(tmax/tmin)**(1.0D0/(nstepc+0.0D0))
4309 allocate(sumpro_type(0:MaxMoveType)) !(0:MaxMoveType)
4310 ! Probabilities of different move types
4311 sumpro_type(0)=0.0D0
4312 call reada(mcmcard,'MULTI_BOND',sumpro_type(1),1.0d0)
4313 call reada(mcmcard,'ONE_ANGLE' ,sumpro_type(2),2.0d0)
4314 sumpro_type(2)=sumpro_type(1)+sumpro_type(2)
4315 call reada(mcmcard,'THETA' ,sumpro_type(3),0.0d0)
4316 sumpro_type(3)=sumpro_type(2)+sumpro_type(3)
4317 call reada(mcmcard,'SIDE_CHAIN',sumpro_type(4),0.5d0)
4318 sumpro_type(4)=sumpro_type(3)+sumpro_type(4)
4320 print *,'i',i,' sumprotype',sumpro_type(i)
4321 sumpro_type(i)=sumpro_type(i)/sumpro_type(MaxMoveType)
4322 print *,'i',i,' sumprotype',sumpro_type(i)
4325 end subroutine mcmread
4326 !-----------------------------------------------------------------------------
4327 subroutine read_minim
4330 ! implicit real*8 (a-h,o-z)
4331 ! include 'DIMENSIONS'
4332 ! include 'COMMON.MINIM'
4333 ! include 'COMMON.IOUNITS'
4334 ! character(len=80) :: ucase
4335 character(len=320) :: minimcard
4337 ! integer :: ntf,ik,iw_pdb
4338 ! real(kind=8) :: var,ene
4340 call card_concat(minimcard,.true.)
4341 call readi(minimcard,'MAXMIN',maxmin,2000)
4342 call readi(minimcard,'MAXFUN',maxfun,5000)
4343 call readi(minimcard,'MINMIN',minmin,maxmin)
4344 call readi(minimcard,'MINFUN',minfun,maxmin)
4345 call reada(minimcard,'TOLF',tolf,1.0D-2)
4346 call reada(minimcard,'RTOLF',rtolf,1.0D-4)
4347 print_min_stat=min0(index(minimcard,'PRINT_MIN_STAT'),1)
4348 print_min_res=min0(index(minimcard,'PRINT_MIN_RES'),1)
4349 print_min_ini=min0(index(minimcard,'PRINT_MIN_INI'),1)
4350 write (iout,'(/80(1h*)/20x,a/80(1h*))') &
4351 'Options in energy minimization:'
4352 write (iout,'(4(a,i5),a,1pe14.5,a,1pe14.5)') &
4353 'MaxMin:',MaxMin,' MaxFun:',MaxFun,&
4354 'MinMin:',MinMin,' MinFun:',MinFun,&
4355 ' TolF:',TolF,' RTolF:',RTolF
4357 end subroutine read_minim
4358 !-----------------------------------------------------------------------------
4359 subroutine openunits
4361 use MD_data, only: usampl
4364 use control_data, only:out1file
4365 use control, only: getenv_loc
4366 ! implicit real*8 (a-h,o-z)
4367 ! include 'DIMENSIONS'
4370 character(len=16) :: form,nodename
4371 integer :: nodelen,ierror,npos
4373 ! include 'COMMON.SETUP'
4374 ! include 'COMMON.IOUNITS'
4375 ! include 'COMMON.MD'
4376 ! include 'COMMON.CONTROL'
4377 integer :: lenpre,lenpot,lentmp !,ilen
4379 character(len=3) :: out1file_text !,ucase
4380 character(len=3) :: ll
4383 ! integer :: ntf,ik,iw_pdb
4384 ! real(kind=8) :: var,ene
4386 ! print *,"Processor",myrank,"fg_rank",fg_rank," entered openunits"
4387 call getenv_loc("PREFIX",prefix)
4389 call getenv_loc("POT",pot)
4390 call getenv_loc("DIRTMP",tmpdir)
4391 call getenv_loc("CURDIR",curdir)
4392 call getenv_loc("OUT1FILE",out1file_text)
4393 ! print *,"Processor",myrank,"fg_rank",fg_rank," did GETENV"
4394 out1file_text=ucase(out1file_text)
4395 if (out1file_text(1:1).eq."Y") then
4398 out1file=fg_rank.gt.0
4403 if (lentmp.gt.0) then
4404 write (*,'(80(1h!))')
4405 write (*,'(a,19x,a,19x,a)') "!"," A T T E N T I O N ","!"
4406 write (*,'(80(1h!))')
4407 write (*,*)"All output files will be on node /tmp directory."
4409 call MPI_GET_PROCESSOR_NAME( nodename, nodelen, IERROR )
4410 if (me.eq.king) then
4411 write (*,*) "The master node is ",nodename
4412 else if (fg_rank.eq.0) then
4413 write (*,*) "I am the CG slave node ",nodename
4415 write (*,*) "I am the FG slave node ",nodename
4418 PREFIX = tmpdir(:lentmp)//'/'//prefix(:lenpre)
4419 lenpre = lentmp+lenpre+1
4421 entname=prefix(:lenpre)//'_'//pot(:lenpot)//'.entr'
4422 ! Get the names and open the input files
4423 #if defined(WINIFL) || defined(WINPGI)
4424 open(1,file=pref_orig(:ilen(pref_orig))// &
4425 '.inp',status='old',readonly,shared)
4426 open (9,file=prefix(:ilen(prefix))//'.intin',status='unknown')
4427 ! open (18,file=prefix(:ilen(prefix))//'.entin',status='unknown')
4428 ! Get parameter filenames and open the parameter files.
4429 call getenv_loc('BONDPAR',bondname)
4430 open (ibond,file=bondname,status='old',readonly,shared)
4431 call getenv_loc('BONDPAR_NUCL',bondname_nucl)
4432 open (ibond_nucl,file=bondname_nucl,status='old',readonly,shared)
4433 call getenv_loc('THETPAR',thetname)
4434 open (ithep,file=thetname,status='old',readonly,shared)
4435 call getenv_loc('ROTPAR',rotname)
4436 open (irotam,file=rotname,status='old',readonly,shared)
4437 call getenv_loc('TORPAR',torname)
4438 open (itorp,file=torname,status='old',readonly,shared)
4439 call getenv_loc('TORDPAR',tordname)
4440 open (itordp,file=tordname,status='old',readonly,shared)
4441 call getenv_loc('FOURIER',fouriername)
4442 open (ifourier,file=fouriername,status='old',readonly,shared)
4443 call getenv_loc('ELEPAR',elename)
4444 open (ielep,file=elename,status='old',readonly,shared)
4445 call getenv_loc('SIDEPAR',sidename)
4446 open (isidep,file=sidename,status='old',readonly,shared)
4448 call getenv_loc('THETPAR_NUCL',thetname_nucl)
4449 open (ithep_nucl,file=thetname_nucl,status='old',readonly,shared)
4450 call getenv_loc('ROTPAR_NUCL',rotname_nucl)
4451 open (irotam_nucl,file=rotname_nucl,status='old',readonly,shared)
4452 call getenv_loc('TORPAR_NUCL',torname_nucl)
4453 open (itorp_nucl,file=torname_nucl,status='old',readonly,shared)
4454 call getenv_loc('TORDPAR_NUCL',tordname_nucl)
4455 open (itordp_nucl,file=tordname_nucl,status='old',readonly,shared)
4456 call getenv_loc('SIDEPAR_NUCL',sidename_nucl)
4457 open (isidep_nucl,file=sidename_nucl,status='old',readonly,shared)
4460 #elif (defined CRAY) || (defined AIX)
4461 open(1,file=pref_orig(:ilen(pref_orig))//'.inp',status='old',&
4463 ! print *,"Processor",myrank," opened file 1"
4464 open (9,file=prefix(:ilen(prefix))//'.intin',status='unknown')
4465 ! print *,"Processor",myrank," opened file 9"
4466 ! open (18,file=prefix(:ilen(prefix))//'.entin',status='unknown')
4467 ! Get parameter filenames and open the parameter files.
4468 call getenv_loc('BONDPAR',bondname)
4469 open (ibond,file=bondname,status='old',action='read')
4470 call getenv_loc('BONDPAR_NUCL',bondname_nucl)
4471 open (ibond_nucl,file=bondname_nucl,status='old',action='read')
4473 ! print *,"Processor",myrank," opened file IBOND"
4474 call getenv_loc('THETPAR',thetname)
4475 open (ithep,file=thetname,status='old',action='read')
4476 ! print *,"Processor",myrank," opened file ITHEP"
4477 call getenv_loc('ROTPAR',rotname)
4478 open (irotam,file=rotname,status='old',action='read')
4479 ! print *,"Processor",myrank," opened file IROTAM"
4480 call getenv_loc('TORPAR',torname)
4481 open (itorp,file=torname,status='old',action='read')
4482 ! print *,"Processor",myrank," opened file ITORP"
4483 call getenv_loc('TORDPAR',tordname)
4484 open (itordp,file=tordname,status='old',action='read')
4485 ! print *,"Processor",myrank," opened file ITORDP"
4486 call getenv_loc('SCCORPAR',sccorname)
4487 open (isccor,file=sccorname,status='old',action='read')
4488 ! print *,"Processor",myrank," opened file ISCCOR"
4489 call getenv_loc('FOURIER',fouriername)
4490 open (ifourier,file=fouriername,status='old',action='read')
4491 ! print *,"Processor",myrank," opened file IFOURIER"
4492 call getenv_loc('ELEPAR',elename)
4493 open (ielep,file=elename,status='old',action='read')
4494 ! print *,"Processor",myrank," opened file IELEP"
4495 call getenv_loc('SIDEPAR',sidename)
4496 open (isidep,file=sidename,status='old',action='read')
4498 call getenv_loc('THETPAR_NUCL',thetname_nucl)
4499 open (ithep_nucl,file=thetname_nucl,status='old',action='read')
4500 call getenv_loc('ROTPAR_NUCL',rotname_nucl)
4501 open (irotam_nucl,file=rotname_nucl,status='old',action='read')
4502 call getenv_loc('TORPAR_NUCL',torname_nucl)
4503 open (itorp_nucl,file=torname_nucl,status='old',action='read')
4504 call getenv_loc('TORDPAR_NUCL',tordname_nucl)
4505 open (itordp_nucl,file=tordname_nucl,status='old',action='read')
4506 call getenv_loc('SIDEPAR_NUCL',sidename_nucl)
4507 open (isidep_nucl,file=sidename_nucl,status='old',action='read')
4509 call getenv_loc('LIPTRANPAR',liptranname)
4510 open (iliptranpar,file=liptranname,status='old',action='read')
4511 call getenv_loc('TUBEPAR',tubename)
4512 open (itube,file=tubename,status='old',action='read')
4513 call getenv_loc('IONPAR',ionname)
4514 open (iion,file=ionname,status='old',action='read')
4516 ! print *,"Processor",myrank," opened file ISIDEP"
4517 ! print *,"Processor",myrank," opened parameter files"
4519 open(1,file=pref_orig(:ilen(pref_orig))//'.inp',status='old')
4520 open (9,file=prefix(:ilen(prefix))//'.intin',status='unknown')
4521 ! open (18,file=prefix(:ilen(prefix))//'.entin',status='unknown')
4522 ! Get parameter filenames and open the parameter files.
4523 call getenv_loc('BONDPAR',bondname)
4524 open (ibond,file=bondname,status='old')
4525 call getenv_loc('BONDPAR_NUCL',bondname_nucl)
4526 open (ibond_nucl,file=bondname_nucl,status='old')
4528 call getenv_loc('THETPAR',thetname)
4529 open (ithep,file=thetname,status='old')
4530 call getenv_loc('ROTPAR',rotname)
4531 open (irotam,file=rotname,status='old')
4532 call getenv_loc('TORPAR',torname)
4533 open (itorp,file=torname,status='old')
4534 call getenv_loc('TORDPAR',tordname)
4535 open (itordp,file=tordname,status='old')
4536 call getenv_loc('SCCORPAR',sccorname)
4537 open (isccor,file=sccorname,status='old')
4538 call getenv_loc('FOURIER',fouriername)
4539 open (ifourier,file=fouriername,status='old')
4540 call getenv_loc('ELEPAR',elename)
4541 open (ielep,file=elename,status='old')
4542 call getenv_loc('SIDEPAR',sidename)
4543 open (isidep,file=sidename,status='old')
4545 open (ithep_nucl,file=thetname_nucl,status='old')
4546 call getenv_loc('ROTPAR_NUCL',rotname_nucl)
4547 open (irotam_nucl,file=rotname_nucl,status='old')
4548 call getenv_loc('TORPAR_NUCL',torname_nucl)
4549 open (itorp_nucl,file=torname_nucl,status='old')
4550 call getenv_loc('TORDPAR_NUCL',tordname_nucl)
4551 open (itordp_nucl,file=tordname_nucl,status='old')
4552 call getenv_loc('SIDEPAR_NUCL',sidename_nucl)
4553 open (isidep_nucl,file=sidename_nucl,status='old')
4555 call getenv_loc('LIPTRANPAR',liptranname)
4556 open (iliptranpar,file=liptranname,status='old')
4557 call getenv_loc('TUBEPAR',tubename)
4558 open (itube,file=tubename,status='old')
4559 call getenv_loc('IONPAR',ionname)
4560 open (iion,file=ionname,status='old')
4562 open(1,file=pref_orig(:ilen(pref_orig))//'.inp',status='old',&
4564 open (9,file=prefix(:ilen(prefix))//'.intin',status='unknown')
4565 ! open (18,file=prefix(:ilen(prefix))//'.entin',status='unknown')
4566 ! Get parameter filenames and open the parameter files.
4567 call getenv_loc('BONDPAR',bondname)
4568 open (ibond,file=bondname,status='old',action='read')
4569 call getenv_loc('BONDPAR_NUCL',bondname_nucl)
4570 open (ibond_nucl,file=bondname_nucl,status='old',action='read')
4571 call getenv_loc('THETPAR',thetname)
4572 open (ithep,file=thetname,status='old',action='read')
4573 call getenv_loc('ROTPAR',rotname)
4574 open (irotam,file=rotname,status='old',action='read')
4575 call getenv_loc('TORPAR',torname)
4576 open (itorp,file=torname,status='old',action='read')
4577 call getenv_loc('TORDPAR',tordname)
4578 open (itordp,file=tordname,status='old',action='read')
4579 call getenv_loc('SCCORPAR',sccorname)
4580 open (isccor,file=sccorname,status='old',action='read')
4582 call getenv_loc('THETPARPDB',thetname_pdb)
4583 print *,"thetname_pdb ",thetname_pdb
4584 open (ithep_pdb,file=thetname_pdb,status='old',action='read')
4585 print *,ithep_pdb," opened"
4587 call getenv_loc('FOURIER',fouriername)
4588 open (ifourier,file=fouriername,status='old',readonly)
4589 call getenv_loc('ELEPAR',elename)
4590 open (ielep,file=elename,status='old',readonly)
4591 call getenv_loc('SIDEPAR',sidename)
4592 open (isidep,file=sidename,status='old',readonly)
4594 call getenv_loc('THETPAR_NUCL',thetname_nucl)
4595 open (ithep_nucl,file=thetname_nucl,status='old',action='read')
4596 call getenv_loc('ROTPAR_NUCL',rotname_nucl)
4597 open (irotam_nucl,file=rotname_nucl,status='old',action='read')
4598 call getenv_loc('TORPAR_NUCL',torname_nucl)
4599 open (itorp_nucl,file=torname_nucl,status='old',action='read')
4600 call getenv_loc('TORDPAR_NUCL',tordname_nucl)
4601 open (itordp_nucl,file=tordname_nucl,status='old',action='read')
4602 call getenv_loc('SIDEPAR_NUCL',sidename_nucl)
4603 open (isidep_nucl,file=sidename_nucl,status='old',action='read')
4604 call getenv_loc('SIDEPAR_SCBASE',sidename_scbase)
4605 open (isidep_scbase,file=sidename_scbase,status='old',action='read')
4606 call getenv_loc('PEPPAR_PEPBASE',pepname_pepbase)
4607 open (isidep_pepbase,file=pepname_pepbase,status='old',action='read')
4608 call getenv_loc('SCPAR_PHOSPH',pepname_scpho)
4609 open (isidep_scpho,file=pepname_scpho,status='old',action='read')
4610 call getenv_loc('PEPPAR_PHOSPH',pepname_peppho)
4611 open (isidep_peppho,file=pepname_peppho,status='old',action='read')
4614 call getenv_loc('LIPTRANPAR',liptranname)
4615 open (iliptranpar,file=liptranname,status='old',action='read')
4616 call getenv_loc('TUBEPAR',tubename)
4617 open (itube,file=tubename,status='old',action='read')
4618 call getenv_loc('IONPAR',ionname)
4619 open (iion,file=ionname,status='old',action='read')
4622 call getenv_loc('ROTPARPDB',rotname_pdb)
4623 open (irotam_pdb,file=rotname_pdb,status='old',action='read')
4626 call getenv_loc('SCPPAR_NUCL',scpname_nucl)
4627 #if defined(WINIFL) || defined(WINPGI)
4628 open (iscpp_nucl,file=scpname_nucl,status='old',readonly,shared)
4629 #elif (defined CRAY) || (defined AIX)
4630 open (iscpp_nucl,file=scpname_nucl,status='old',action='read')
4632 open (iscpp_nucl,file=scpname_nucl,status='old')
4634 open (iscpp_nucl,file=scpname_nucl,status='old',action='read')
4639 ! 8/9/01 In the newest version SCp interaction constants are read from a file
4640 ! Use -DOLDSCP to use hard-coded constants instead.
4642 call getenv_loc('SCPPAR',scpname)
4643 #if defined(WINIFL) || defined(WINPGI)
4644 open (iscpp,file=scpname,status='old',readonly,shared)
4645 #elif (defined CRAY) || (defined AIX)
4646 open (iscpp,file=scpname,status='old',action='read')
4648 open (iscpp,file=scpname,status='old')
4650 open (iscpp,file=scpname,status='old',action='read')
4653 call getenv_loc('PATTERN',patname)
4654 #if defined(WINIFL) || defined(WINPGI)
4655 open (icbase,file=patname,status='old',readonly,shared)
4656 #elif (defined CRAY) || (defined AIX)
4657 open (icbase,file=patname,status='old',action='read')
4659 open (icbase,file=patname,status='old')
4661 open (icbase,file=patname,status='old',action='read')
4664 ! Open output file only for CG processes
4665 ! print *,"Processor",myrank," fg_rank",fg_rank
4666 if (fg_rank.eq.0) then
4668 if (nodes.eq.1) then
4671 npos = dlog10(dfloat(nodes-1))+1
4673 if (npos.lt.3) npos=3
4674 write (liczba,'(i1)') npos
4675 form = '(bz,i'//liczba(:ilen(liczba))//'.'//liczba(:ilen(liczba)) &
4677 write (liczba,form) me
4678 outname=prefix(:lenpre)//'.out_'//pot(:lenpot)// &
4679 liczba(:ilen(liczba))
4680 intname=prefix(:lenpre)//'_'//pot(:lenpot)//liczba(:ilen(liczba)) &
4682 pdbname=prefix(:lenpre)//'_'//pot(:lenpot)//liczba(:ilen(liczba)) &
4684 mol2name=prefix(:lenpre)//'_'//pot(:lenpot)// &
4685 liczba(:ilen(liczba))//'.mol2'
4686 statname=prefix(:lenpre)//'_'//pot(:lenpot)// &
4687 liczba(:ilen(liczba))//'.stat'
4689 call copy_to_tmp(pref_orig(:ilen(pref_orig))//'_'//pot(:lenpot) &
4690 //liczba(:ilen(liczba))//'.stat')
4691 rest2name=prefix(:ilen(prefix))//"_"//liczba(:ilen(liczba)) &
4694 qname=prefix(:lenpre)//'_'//pot(:lenpot)// &
4695 liczba(:ilen(liczba))//'.const'
4700 outname=prefix(:lenpre)//'.out_'//pot(:lenpot)
4701 intname=prefix(:lenpre)//'_'//pot(:lenpot)//'.int'
4702 pdbname=prefix(:lenpre)//'_'//pot(:lenpot)//'.pdb'
4703 mol2name=prefix(:lenpre)//'_'//pot(:lenpot)//'.mol2'
4704 statname=prefix(:lenpre)//'_'//pot(:lenpot)//'.stat'
4706 call copy_to_tmp(pref_orig(:ilen(pref_orig))//'_'//pot(:lenpot)// &
4708 rest2name=prefix(:ilen(prefix))//'.rst'
4710 qname=prefix(:lenpre)//'_'//pot(:lenpot)//'.const'
4713 #if defined(AIX) || defined(PGI)
4714 if (me.eq.king .or. .not. out1file) &
4715 open(iout,file=outname,status='unknown')
4717 if (fg_rank.gt.0) then
4718 write (liczba,'(i3.3)') myrank/nfgtasks
4719 write (ll,'(bz,i3.3)') fg_rank
4720 open(iout,file="debug"//liczba(:ilen(liczba))//"."//ll,&
4725 open(igeom,file=intname,status='unknown',position='append')
4726 open(ipdb,file=pdbname,status='unknown')
4727 open(imol2,file=mol2name,status='unknown')
4728 open(istat,file=statname,status='unknown',position='append')
4730 !1out open(iout,file=outname,status='unknown')
4733 if (me.eq.king .or. .not.out1file) &
4734 open(iout,file=outname,status='unknown')
4736 if (fg_rank.gt.0) then
4737 write (liczba,'(i3.3)') myrank/nfgtasks
4738 write (ll,'(bz,i3.3)') fg_rank
4739 open(iout,file="debug"//liczba(:ilen(liczba))//"."//ll,&
4744 open(igeom,file=intname,status='unknown',access='append')
4745 open(ipdb,file=pdbname,status='unknown')
4746 open(imol2,file=mol2name,status='unknown')
4747 open(istat,file=statname,status='unknown',access='append')
4749 !1out open(iout,file=outname,status='unknown')
4752 csa_rbank=prefix(:lenpre)//'.CSA.rbank'
4753 csa_seed=prefix(:lenpre)//'.CSA.seed'
4754 csa_history=prefix(:lenpre)//'.CSA.history'
4755 csa_bank=prefix(:lenpre)//'.CSA.bank'
4756 csa_bank1=prefix(:lenpre)//'.CSA.bank1'
4757 csa_alpha=prefix(:lenpre)//'.CSA.alpha'
4758 csa_alpha1=prefix(:lenpre)//'.CSA.alpha1'
4759 !!bankt csa_bankt=prefix(:lenpre)//'.CSA.bankt'
4760 csa_int=prefix(:lenpre)//'.int'
4761 csa_bank_reminimized=prefix(:lenpre)//'.CSA.bank_reminimized'
4762 csa_native_int=prefix(:lenpre)//'.CSA.native.int'
4763 csa_in=prefix(:lenpre)//'.CSA.in'
4764 ! print *,"Processor",myrank,"fg_rank",fg_rank," opened files"
4767 write (iout,'(80(1h-))')
4768 write (iout,'(30x,a)') "FILE ASSIGNMENT"
4769 write (iout,'(80(1h-))')
4770 write (iout,*) "Input file : ",&
4771 pref_orig(:ilen(pref_orig))//'.inp'
4772 write (iout,*) "Output file : ",&
4773 outname(:ilen(outname))
4775 write (iout,*) "Sidechain potential file : ",&
4776 sidename(:ilen(sidename))
4778 write (iout,*) "SCp potential file : ",&
4779 scpname(:ilen(scpname))
4781 write (iout,*) "Electrostatic potential file : ",&
4782 elename(:ilen(elename))
4783 write (iout,*) "Cumulant coefficient file : ",&
4784 fouriername(:ilen(fouriername))
4785 write (iout,*) "Torsional parameter file : ",&
4786 torname(:ilen(torname))
4787 write (iout,*) "Double torsional parameter file : ",&
4788 tordname(:ilen(tordname))
4789 write (iout,*) "SCCOR parameter file : ",&
4790 sccorname(:ilen(sccorname))
4791 write (iout,*) "Bond & inertia constant file : ",&
4792 bondname(:ilen(bondname))
4793 write (iout,*) "Bending parameter file : ",&
4794 thetname(:ilen(thetname))
4795 write (iout,*) "Rotamer parameter file : ",&
4796 rotname(:ilen(rotname))
4799 write (iout,*) "Thetpdb parameter file : ",&
4800 thetname_pdb(:ilen(thetname_pdb))
4803 write (iout,*) "Threading database : ",&
4804 patname(:ilen(patname))
4806 write (iout,*)" DIRTMP : ",&
4808 write (iout,'(80(1h-))')
4811 end subroutine openunits
4812 !-----------------------------------------------------------------------------
4815 use geometry_data, only: nres,dc
4817 ! implicit real*8 (a-h,o-z)
4818 ! include 'DIMENSIONS'
4819 ! include 'COMMON.CHAIN'
4820 ! include 'COMMON.IOUNITS'
4821 ! include 'COMMON.MD'
4824 ! real(kind=8) :: var,ene
4826 open(irest2,file=rest2name,status='unknown')
4827 read(irest2,*) totT,EK,potE,totE,t_bath
4830 ! AL 4/17/17: Now reading d_t(0,:) too
4832 read(irest2,'(3e15.5)') (d_t(j,i),j=1,3)
4835 ! AL 4/17/17: Now reading d_c(0,:) too
4837 read(irest2,'(3e15.5)') (dc(j,i),j=1,3)
4840 read (irest2,*) iset
4844 end subroutine readrst
4845 !-----------------------------------------------------------------------------
4846 subroutine read_fragments
4850 use control_data, only:out1file
4853 ! implicit real*8 (a-h,o-z)
4854 ! include 'DIMENSIONS'
4858 ! include 'COMMON.SETUP'
4859 ! include 'COMMON.CHAIN'
4860 ! include 'COMMON.IOUNITS'
4861 ! include 'COMMON.MD'
4862 ! include 'COMMON.CONTROL'
4865 ! real(kind=8) :: var,ene
4867 read(inp,*) nset,nfrag,npair,nfrag_back
4869 !el from module energy
4870 ! if(.not.allocated(mset)) allocate(mset(nset)) !(maxprocs/20)
4871 if(.not.allocated(wfrag_back)) then
4872 allocate(wfrag_back(3,nfrag_back,nset)) !(3,maxfrag_back,maxprocs/20)
4873 allocate(ifrag_back(3,nfrag_back,nset)) !(3,maxfrag_back,maxprocs/20)
4875 allocate(qinfrag(nfrag,nset),wfrag(nfrag,nset)) !(50,maxprocs/20)
4876 allocate(ifrag(2,nfrag,nset)) !(2,50,maxprocs/20)
4878 allocate(qinpair(npair,nset),wpair(npair,nset)) !(100,maxprocs/20)
4879 allocate(ipair(2,npair,nset)) !(2,100,maxprocs/20)
4882 if(me.eq.king.or..not.out1file) &
4883 write(iout,*) "nset",nset," nfrag",nfrag," npair",npair,&
4884 " nfrag_back",nfrag_back
4886 read(inp,*) mset(iset)
4888 read(inp,*) wfrag(i,iset),ifrag(1,i,iset),ifrag(2,i,iset),&
4890 if(me.eq.king.or..not.out1file) &
4891 write(iout,*) "R ",i,wfrag(i,iset),ifrag(1,i,iset),&
4892 ifrag(2,i,iset), qinfrag(i,iset)
4895 read(inp,*) wpair(i,iset),ipair(1,i,iset),ipair(2,i,iset),&
4897 if(me.eq.king.or..not.out1file) &
4898 write(iout,*) "R ",i,wpair(i,iset),ipair(1,i,iset),&
4899 ipair(2,i,iset), qinpair(i,iset)
4902 read(inp,*) wfrag_back(1,i,iset),wfrag_back(2,i,iset),&
4903 wfrag_back(3,i,iset),&
4904 ifrag_back(1,i,iset),ifrag_back(2,i,iset)
4905 if(me.eq.king.or..not.out1file) &
4906 write(iout,*) "A",i,wfrag_back(1,i,iset),wfrag_back(2,i,iset),&
4907 wfrag_back(3,i,iset),ifrag_back(1,i,iset),ifrag_back(2,i,iset)
4911 end subroutine read_fragments
4912 !-----------------------------------------------------------------------------
4914 !-----------------------------------------------------------------------------
4918 ! implicit real*8 (a-h,o-z)
4919 ! include 'DIMENSIONS'
4920 ! include 'COMMON.CSA'
4921 ! include 'COMMON.BANK'
4922 ! include 'COMMON.IOUNITS'
4924 ! integer :: ntf,ik,iw_pdb
4925 ! real(kind=8) :: var,ene
4927 open(icsa_in,file=csa_in,status="old",err=100)
4928 read(icsa_in,*) nconf
4929 read(icsa_in,*) jstart,jend
4930 read(icsa_in,*) nstmax
4931 read(icsa_in,*) n1,n2,n3,n4,n5,n6,n7,n8,is1,is2
4932 read(icsa_in,*) nran0,nran1,irr
4933 read(icsa_in,*) nseed
4934 read(icsa_in,*) ntotal,cut1,cut2
4935 read(icsa_in,*) estop
4936 read(icsa_in,*) icmax,irestart
4937 read(icsa_in,*) ntbankm,dele,difcut
4938 read(icsa_in,*) iref,rmscut,pnccut
4939 read(icsa_in,*) ndiff
4946 end subroutine csa_read
4947 !-----------------------------------------------------------------------------
4948 subroutine initial_write
4951 ! implicit real*8 (a-h,o-z)
4952 ! include 'DIMENSIONS'
4953 ! include 'COMMON.CSA'
4954 ! include 'COMMON.BANK'
4955 ! include 'COMMON.IOUNITS'
4957 ! integer :: ntf,ik,iw_pdb
4958 ! real(kind=8) :: var,ene
4960 open(icsa_seed,file=csa_seed,status="unknown")
4961 write(icsa_seed,*) "seed"
4963 #if defined(AIX) || defined(PGI)
4964 open(icsa_history,file=csa_history,status="unknown",&
4967 open(icsa_history,file=csa_history,status="unknown",&
4970 write(icsa_history,*) nconf
4971 write(icsa_history,*) jstart,jend
4972 write(icsa_history,*) nstmax
4973 write(icsa_history,*) n1,n2,n3,n4,n5,n6,n7,n8,is1,is2
4974 write(icsa_history,*) nran0,nran1,irr
4975 write(icsa_history,*) nseed
4976 write(icsa_history,*) ntotal,cut1,cut2
4977 write(icsa_history,*) estop
4978 write(icsa_history,*) icmax,irestart
4979 write(icsa_history,*) ntbankm,dele,difcut
4980 write(icsa_history,*) iref,rmscut,pnccut
4981 write(icsa_history,*) ndiff
4983 write(icsa_history,*)
4986 open(icsa_bank1,file=csa_bank1,status="unknown")
4987 write(icsa_bank1,*) 0
4991 end subroutine initial_write
4992 !-----------------------------------------------------------------------------
4993 subroutine restart_write
4996 ! implicit real*8 (a-h,o-z)
4997 ! include 'DIMENSIONS'
4998 ! include 'COMMON.IOUNITS'
4999 ! include 'COMMON.CSA'
5000 ! include 'COMMON.BANK'
5002 ! integer :: ntf,ik,iw_pdb
5003 ! real(kind=8) :: var,ene
5005 #if defined(AIX) || defined(PGI)
5006 open(icsa_history,file=csa_history,position="append")
5008 open(icsa_history,file=csa_history,access="append")
5010 write(icsa_history,*)
5011 write(icsa_history,*) "This is restart"
5012 write(icsa_history,*)
5013 write(icsa_history,*) nconf
5014 write(icsa_history,*) jstart,jend
5015 write(icsa_history,*) nstmax
5016 write(icsa_history,*) n1,n2,n3,n4,n5,n6,n7,n8,is1,is2
5017 write(icsa_history,*) nran0,nran1,irr
5018 write(icsa_history,*) nseed
5019 write(icsa_history,*) ntotal,cut1,cut2
5020 write(icsa_history,*) estop
5021 write(icsa_history,*) icmax,irestart
5022 write(icsa_history,*) ntbankm,dele,difcut
5023 write(icsa_history,*) iref,rmscut,pnccut
5024 write(icsa_history,*) ndiff
5025 write(icsa_history,*)
5026 write(icsa_history,*) "irestart is: ", irestart
5028 write(icsa_history,*)
5032 end subroutine restart_write
5033 !-----------------------------------------------------------------------------
5035 !-----------------------------------------------------------------------------
5036 subroutine write_pdb(npdb,titelloc,ee)
5038 ! implicit real*8 (a-h,o-z)
5039 ! include 'DIMENSIONS'
5040 ! include 'COMMON.IOUNITS'
5041 character(len=50) :: titelloc1
5042 character*(*) :: titelloc
5043 character(len=3) :: zahl
5044 character(len=5) :: liczba5
5046 integer :: npdb !,ilen
5050 ! real(kind=8) :: var,ene
5054 if (npdb.lt.1000) then
5055 call numstr(npdb,zahl)
5056 open(ipdb,file=prefix(:lenpre)//'@@'//zahl//'.pdb')
5058 if (npdb.lt.10000) then
5059 write(liczba5,'(i1,i4)') 0,npdb
5061 write(liczba5,'(i5)') npdb
5063 open(ipdb,file=prefix(:lenpre)//'@@'//liczba5//'.pdb')
5065 call pdbout(ee,titelloc1,ipdb)
5068 end subroutine write_pdb
5069 !-----------------------------------------------------------------------------
5071 !-----------------------------------------------------------------------------
5072 subroutine write_thread_summary
5073 ! Thread the sequence through a database of known structures
5074 use control_data, only: refstr
5076 use energy_data, only: n_ene_comp
5078 ! implicit real*8 (a-h,o-z)
5079 ! include 'DIMENSIONS'
5081 use MPI_data !include 'COMMON.INFO'
5084 ! include 'COMMON.CONTROL'
5085 ! include 'COMMON.CHAIN'
5086 ! include 'COMMON.DBASE'
5087 ! include 'COMMON.INTERACT'
5088 ! include 'COMMON.VAR'
5089 ! include 'COMMON.THREAD'
5090 ! include 'COMMON.FFIELD'
5091 ! include 'COMMON.SBRIDGE'
5092 ! include 'COMMON.HEADER'
5093 ! include 'COMMON.NAMES'
5094 ! include 'COMMON.IOUNITS'
5095 ! include 'COMMON.TIME1'
5097 integer,dimension(maxthread) :: ip
5098 real(kind=8),dimension(0:n_ene) :: energia
5100 integer :: i,j,ii,jj,ipj,ik,kk,ist
5101 real(kind=8) :: enet,etot,rmsnat,rms,frac,frac_nn
5103 write (iout,'(30x,a/)') &
5104 ' *********** Summary threading statistics ************'
5105 write (iout,'(a)') 'Initial energies:'
5106 write (iout,'(a4,2x,a12,14a14,3a8)') &
5107 'No','seq',(ename(print_order(i)),i=1,nprint_ene),'ETOT',&
5108 'RMSnat','NatCONT','NNCONT','RMS'
5109 ! Energy sort patterns
5114 enet=ener(n_ene-1,ip(i))
5117 if (ener(n_ene-1,ip(j)).lt.enet) then
5119 enet=ener(n_ene-1,ip(j))
5131 ist=nres_base(2,ii)+ipatt(2,i)
5133 energia(i)=ener0(kk,i)
5135 etot=ener0(n_ene_comp+1,i)
5136 rmsnat=ener0(n_ene_comp+2,i)
5137 rms=ener0(n_ene_comp+3,i)
5138 frac=ener0(n_ene_comp+4,i)
5139 frac_nn=ener0(n_ene_comp+5,i)
5142 write (iout,'(i4,2x,a8,i4,14(1pe14.5),0pf8.3,f8.5,f8.5,f8.3)') &
5143 i,str_nam(ii),ist+1,&
5144 (energia(print_order(kk)),kk=1,nprint_ene),&
5145 etot,rmsnat,frac,frac_nn,rms
5147 write (iout,'(i4,2x,a8,i4,14(1pe14.5),0pf8.3)') &
5148 i,str_nam(ii),ist+1,&
5149 (energia(print_order(kk)),kk=1,nprint_ene),etot
5152 write (iout,'(//a)') 'Final energies:'
5153 write (iout,'(a4,2x,a12,17a14,3a8)') &
5154 'No','seq',(ename(print_order(kk)),kk=1,nprint_ene),'ETOT',&
5155 'RMSnat','NatCONT','NNCONT','RMS'
5159 ist=nres_base(2,ii)+ipatt(2,i)
5161 energia(kk)=ener(kk,ik)
5163 etot=ener(n_ene_comp+1,i)
5164 rmsnat=ener(n_ene_comp+2,i)
5165 rms=ener(n_ene_comp+3,i)
5166 frac=ener(n_ene_comp+4,i)
5167 frac_nn=ener(n_ene_comp+5,i)
5168 write (iout,'(i4,2x,a8,i4,14(1pe14.5),0pf8.3,f8.5,f8.5,f8.3)') &
5169 i,str_nam(ii),ist+1,&
5170 (energia(print_order(kk)),kk=1,nprint_ene),&
5171 etot,rmsnat,frac,frac_nn,rms
5173 write (iout,'(/a/)') 'IEXAM array:'
5174 write (iout,'(i5)') nexcl
5176 write (iout,'(2i5)') iexam(1,i),iexam(2,i)
5178 write (iout,'(/a,1pe14.4/a,1pe14.4/)') &
5179 'Max. time for threading step ',max_time_for_thread,&
5180 'Average time for threading step: ',ave_time_for_thread
5182 end subroutine write_thread_summary
5183 !-----------------------------------------------------------------------------
5184 subroutine write_stat_thread(ithread,ipattern,ist)
5186 use energy_data, only: n_ene_comp
5188 ! implicit real*8 (a-h,o-z)
5189 ! include "DIMENSIONS"
5190 ! include "COMMON.CONTROL"
5191 ! include "COMMON.IOUNITS"
5192 ! include "COMMON.THREAD"
5193 ! include "COMMON.FFIELD"
5194 ! include "COMMON.DBASE"
5195 ! include "COMMON.NAMES"
5196 real(kind=8),dimension(0:n_ene) :: energia
5198 integer :: ithread,ipattern,ist,i
5199 real(kind=8) :: etot,rmsnat,rms,frac,frac_nn
5201 #if defined(AIX) || defined(PGI)
5202 open(istat,file=statname,position='append')
5204 open(istat,file=statname,access='append')
5207 energia(i)=ener(i,ithread)
5209 etot=ener(n_ene_comp+1,ithread)
5210 rmsnat=ener(n_ene_comp+2,ithread)
5211 rms=ener(n_ene_comp+3,ithread)
5212 frac=ener(n_ene_comp+4,ithread)
5213 frac_nn=ener(n_ene_comp+5,ithread)
5214 write (istat,'(i4,2x,a8,i4,14(1pe14.5),0pf8.3,f8.5,f8.5,f8.3)') &
5215 ithread,str_nam(ipattern),ist+1,&
5216 (energia(print_order(i)),i=1,nprint_ene),&
5217 etot,rmsnat,frac,frac_nn,rms
5220 end subroutine write_stat_thread
5221 !-----------------------------------------------------------------------------
5223 !-----------------------------------------------------------------------------
5224 end module io_config