8 use control_data, only:maxterm_sccor
10 !-----------------------------------------------------------------------------
11 ! Max. number of residue types and parameters in expressions for
12 ! virtual-bond angle bending potentials
13 ! integer,parameter :: maxthetyp=3
14 ! integer,parameter :: maxthetyp1=maxthetyp+1
16 ! & maxtheterm2=6,maxtheterm3=4,maxsingle=6,maxdouble=4,
17 ! & mmaxtheterm=maxtheterm)
18 !-----------------------------------------------------------------------------
19 ! Max. number of types of dihedral angles & multiplicity of torsional barriers
20 ! and the number of terms in double torsionals
21 ! integer,parameter :: maxlor=3,maxtermd_1=8,maxtermd_2=8
22 ! parameter (maxtor=4,maxterm=10)
23 !-----------------------------------------------------------------------------
24 ! Max number of torsional terms in SCCOR
25 !el integer,parameter :: maxterm_sccor=6
26 !-----------------------------------------------------------------------------
27 character(len=1),dimension(:),allocatable :: secstruc !(maxres)
28 !-----------------------------------------------------------------------------
31 !-----------------------------------------------------------------------------
33 #if .not. defined(WHAM_RUN) && .not. defined(CLUSTER)
34 !-----------------------------------------------------------------------------
36 !-----------------------------------------------------------------------------
37 subroutine write_rbank(jlee,adif,nft)
40 use geometry_data, only: nres,rad2deg
41 ! implicit real*8 (a-h,o-z)
42 ! include 'DIMENSIONS'
43 ! include 'COMMON.IOUNITS'
44 ! include 'COMMON.CSA'
45 ! include 'COMMON.BANK'
46 ! include 'COMMON.CHAIN'
47 ! include 'COMMON.GEO'
49 integer :: nft,i,k,j,l,jlee
52 open(icsa_rbank,file=csa_rbank,status="unknown")
53 write (icsa_rbank,900) jlee,nbank,nstep,nft,icycle,adif
55 write (icsa_rbank,952) k,rene(k),rrmsn(k),rpncn(k)
58 write (icsa_rbank,850) (rad2deg*rvar(i,l,j,k),i=1,4)
65 900 format (1x,"jlee =",i3,3x,"nbank =",i4,3x,"nstep =",&
67 952 format (1x,'#',i4,' total E ',1pe14.5,' rmsd from N ',0pf8.3,&
71 end subroutine write_rbank
72 !-----------------------------------------------------------------------------
73 subroutine read_rbank(jlee,adif)
76 use geometry_data, only: nres,deg2rad
78 ! implicit real*8 (a-h,o-z)
79 ! include 'DIMENSIONS'
81 ! include 'COMMON.IOUNITS'
82 ! include 'COMMON.CSA'
83 ! include 'COMMON.BANK'
84 ! include 'COMMON.CHAIN'
85 ! include 'COMMON.GEO'
86 ! include 'COMMON.SETUP'
87 character(len=80) :: karta
89 integer :: nbankr,nstepr,nftr,icycler,kk,k,j,l,i,&
90 ierror,ierrcode,jlee,jleer
93 open(icsa_rbank,file=csa_rbank,status="old")
94 read (icsa_rbank,901) jleer,nbankr,nstepr,nftr,icycler,adif
95 print *,jleer,nbankr,nstepr,nftr,icycler,adif
96 ! print *, 'adif from read_rbank ',adif
98 if(nbankr.ne.nbank) then
99 write (iout,*) 'ERROR in READ_BANK: NBANKR',nbankr,&
101 call mpi_abort(mpi_comm_world,ierror,ierrcode)
103 if(jleer.ne.jlee) then
104 write (iout,*) 'ERROR in READ_BANK: JLEER',jleer,&
106 call mpi_abort(mpi_comm_world,ierror,ierrcode)
112 read (icsa_rbank,'(a80)') karta
113 write(iout,*) "READ_RBANK: kk=",kk
115 ! if (index(karta,"*").gt.0) then
116 ! write (iout,*) "***** Stars in bankr ***** k=",k,
120 ! read (30,850) (rdummy,i=1,4)
125 call reada(karta,"total E",rene(kk),1.0d20)
126 call reada(karta,"rmsd from N",rrmsn(kk),0.0d0)
127 call reada(karta,"%NC",rpncn(kk),0.0d0)
128 write(iout,*)"total E",bene(kk),"rmsd from N",brmsn(kk),&
129 "%NC",bpncn(kk),ibank(kk)
130 ! read (icsa_rbank,953) kdummy,rene(kk),rrmsn(kk),rpncn(kk)
133 read (icsa_rbank,850) (rvar(i,l,j,kk),i=1,4)
134 ! write (iout,850) (rvar(i,l,j,kk),i=1,4)
136 rvar(i,l,j,kk)=deg2rad*rvar(i,l,j,kk)
142 !d write (*,*) "read_rbank ******************* kk",kk,
144 if (kk.lt.nbankr) nbankr=kk
149 !d write (*,850) (rvar(i,l,j,kk),i=1,4)
156 901 format (1x,6x,i3,3x,7x,i4,3x,7x,i8,i10,i2,f15.5)
157 953 format (1x,1x,i4,9x,f12.3,13x,f8.3,5x,f5.2)
160 end subroutine read_rbank
161 !-----------------------------------------------------------------------------
162 subroutine write_bank(jlee,nft)
165 use control_data, only: vdisulf
166 use geometry_data, only: nres,rad2deg
167 ! implicit real*8 (a-h,o-z)
168 ! include 'DIMENSIONS'
169 ! include 'COMMON.IOUNITS'
170 ! include 'COMMON.CSA'
171 ! include 'COMMON.BANK'
172 ! include 'COMMON.CHAIN'
173 ! include 'COMMON.GEO'
174 ! include 'COMMON.SBRIDGE'
175 ! include 'COMMON.CONTROL'
176 character(len=7) :: chtmp
177 character(len=40) :: chfrm
180 integer :: nft,k,l,i,j,jlee
182 open(icsa_bank,file=csa_bank,status="unknown")
183 write (icsa_bank,900) jlee,nbank,nstep,nft,icycle,cutdif
184 write (icsa_bank,902) nglob_csa, eglob_csa
185 open (igeom,file=intname,status='UNKNOWN')
187 write (icsa_bank,952) k,bene(k),brmsn(k),bpncn(k),ibank(k)
188 if (vdisulf) write (icsa_bank,'(101i4)') &
189 bvar_nss(k),((bvar_ss(j,i,k),j=1,2),i=1,bvar_nss(k))
192 write (icsa_bank,850) (rad2deg*bvar(i,l,j,k),i=1,4)
195 if (bvar_nss(k).le.9) then
196 write (igeom,'(I5,F10.3,I2,9(1X,2I3))') k,bene(k),&
197 bvar_nss(k),(bvar_ss(1,i,k),bvar_ss(2,i,k),i=1,bvar_nss(k))
199 write (igeom,'(I5,F10.3,I2,9(1X,2I3))') k,bene(k),&
200 bvar_nss(k),(bvar_ss(1,i,k),bvar_ss(2,i,k),i=1,9)
201 write (igeom,'(3X,11(1X,2I3))') (bvar_ss(1,i,k),&
202 bvar_ss(2,i,k),i=10,bvar_nss(k))
204 write (igeom,200) (rad2deg*bvar(1,i,1,k),i=2,nres-1)
205 write (igeom,200) (rad2deg*bvar(2,i,1,k),i=2,nres-2)
206 write (igeom,200) (rad2deg*bvar(3,i,1,k),i=2,nres-1)
207 write (igeom,200) (rad2deg*bvar(4,i,1,k),i=2,nres-1)
212 if (nstep/200.gt.ilastnstep) then
214 ilastnstep=(ilastnstep+1)*1.5
215 write(chfrm,'(a2,i1,a1)') '(i',int(dlog10(dble(nstep))+1),')'
216 write(chtmp,chfrm) nstep
217 open(icsa_int,file=prefix(:ilen(prefix)) &
218 //'_'//chtmp(:ilen(chtmp))//'.int',status='UNKNOWN')
220 if (bvar_nss(k).le.9) then
221 write (icsa_int,'(I5,F10.3,I2,9(1X,2I3))') k,bene(k),&
222 bvar_nss(k),(bvar_ss(1,i,k),bvar_ss(2,i,k),i=1,bvar_nss(k))
224 write (icsa_int,'(I5,F10.3,I2,9(1X,2I3))') k,bene(k),&
225 bvar_nss(k),(bvar_ss(1,i,k),bvar_ss(2,i,k),i=1,9)
226 write (icsa_int,'(3X,11(1X,2I3))') (bvar_ss(1,i,k),&
227 bvar_ss(2,i,k),i=10,bvar_nss(k))
229 write (icsa_int,200) (rad2deg*bvar(1,i,1,k),i=2,nres-1)
230 write (icsa_int,200) (rad2deg*bvar(2,i,1,k),i=2,nres-2)
231 write (icsa_int,200) (rad2deg*bvar(3,i,1,k),i=2,nres-1)
232 write (icsa_int,200) (rad2deg*bvar(4,i,1,k),i=2,nres-1)
240 900 format (1x,"jlee =",i3,3x,"nbank =",i4,3x,"nstep =",&
242 902 format (1x,'nglob_csa =',i4,' eglob_csa =',1pe14.5)
243 952 format (1x,'#',i4,' total E ',1pe14.5,' rmsd from N ',0pf8.3,&
247 end subroutine write_bank
248 !-----------------------------------------------------------------------------
249 subroutine write_bank_reminimized(jlee,nft)
252 use geometry_data, only: nres,rad2deg
254 ! implicit real*8 (a-h,o-z)
255 ! include 'DIMENSIONS'
256 ! include 'COMMON.IOUNITS'
257 ! include 'COMMON.CSA'
258 ! include 'COMMON.BANK'
259 ! include 'COMMON.CHAIN'
260 ! include 'COMMON.GEO'
261 ! include 'COMMON.SBRIDGE'
263 integer :: nft,i,l,j,k,jlee
265 open(icsa_bank_reminimized,file=csa_bank_reminimized,&
267 write (icsa_bank_reminimized,900) &
268 jlee,nbank,nstep,nft,icycle,cutdif
269 open (igeom,file=intname,status='UNKNOWN')
271 write (icsa_bank_reminimized,952) k,bene(k),brmsn(k),&
275 write (icsa_bank_reminimized,850) (rad2deg*bvar(i,l,j,k),i=1,4)
279 write (igeom,'(I5,F10.3,I2,9(1X,2I3))') k,bene(k),&
280 nss,(ihpb(i),jhpb(i),i=1,nss)
282 write (igeom,'(I5,F10.3,I2,9(1X,2I3))') k,bene(k),&
283 nss,(ihpb(i),jhpb(i),i=1,9)
284 write (igeom,'(3X,11(1X,2I3))') (ihpb(i),jhpb(i),i=10,nss)
286 write (igeom,200) (rad2deg*bvar(1,i,1,k),i=2,nres-1)
287 write (igeom,200) (rad2deg*bvar(2,i,1,k),i=2,nres-2)
288 write (igeom,200) (rad2deg*bvar(3,i,1,k),i=2,nres-1)
289 write (igeom,200) (rad2deg*bvar(4,i,1,k),i=2,nres-1)
291 close(icsa_bank_reminimized)
296 900 format (1x,"jlee =",i3,3x,"nbank =",i4,3x,"nstep =",&
298 952 format (1x,'#',i4,' total E ',1pe14.5,' rmsd from N ',0pf8.3,&
302 end subroutine write_bank_reminimized
303 !-----------------------------------------------------------------------------
304 subroutine read_bank(jlee,nft,cutdifr)
307 use control_data, only: vdisulf
308 use geometry_data, only: nres,deg2rad
310 ! implicit real*8 (a-h,o-z)
311 ! include 'DIMENSIONS'
312 ! include 'COMMON.IOUNITS'
313 ! include 'COMMON.CSA'
314 ! include 'COMMON.BANK'
315 ! include 'COMMON.CHAIN'
316 ! include 'COMMON.GEO'
317 ! include 'COMMON.CONTROL'
318 ! include 'COMMON.SBRIDGE'
319 character(len=80) :: karta
323 integer :: nft,kk,k,l,i,j,jlee
324 real(kind=8) :: cutdifr
326 open(icsa_bank,file=csa_bank,status="old")
327 read (icsa_bank,901) jlee,nbank,nstep,nft,icycle,cutdifr
328 read (icsa_bank,902) nglob_csa, eglob_csa
329 ! if(jleer.ne.jlee) then
330 ! write (iout,*) 'ERROR in READ_BANK: JLEER',jleer,
332 ! call mpi_abort(mpi_comm_world,ierror,ierrcode)
337 read (icsa_bank,'(a80)') karta
338 write(iout,*) "READ_BANK: kk=",kk
340 ! if (index(karta,"*").gt.0) then
341 ! write (iout,*) "***** Stars in bank ***** k=",k,
345 ! read (33,850) (rdummy,i=1,4)
350 call reada(karta,"total E",bene(kk),1.0d20)
351 call reada(karta,"rmsd from N",brmsn(kk),0.0d0)
352 call reada(karta,"%NC",bpncn(kk),0.0d0)
353 read (karta(ilen(karta)-1:),*,end=111,err=111) ibank(kk)
357 write(iout,*)"total E",bene(kk),"rmsd from N",brmsn(kk),&
358 "%NC",bpncn(kk),ibank(kk)
359 ! read (icsa_bank,953) kdummy,bene(k),brmsn(k),bpncn(k),ibank(k)
361 read (icsa_bank,'(101i4)') &
362 bvar_nss(kk),((bvar_ss(j,i,kk),j=1,2),i=1,bvar_nss(kk))
363 bvar_ns(kk)=ns-2*bvar_nss(kk)
364 write(iout,*) 'read SSBOND',bvar_nss(kk),&
365 ((bvar_ss(j,i,kk),j=1,2),i=1,bvar_nss(kk))
366 !d write(iout,*) 'read CYS #free ', bvar_ns(kk)
370 do while( iss(i).ne.bvar_ss(1,j,kk)-nres .and. &
371 iss(i).ne.bvar_ss(2,j,kk)-nres .and. &
375 if (j.gt.bvar_nss(kk)) then
380 !d write(iout,*)'read CYS free',(bvar_s(l,kk),l=1,bvar_ns(kk))
384 read (icsa_bank,850) (bvar(i,l,j,kk),i=1,4)
385 ! write (iout,850) (bvar(i,l,j,kk),i=1,4)
387 bvar(i,l,j,kk)=deg2rad*bvar(i,l,j,kk)
394 if (kk.lt.nbank) nbank=kk
395 !d write (*,*) "read_bank ******************* kk",kk,
401 !d write (*,850) (bvar(i,l,j,kk),i=1,4)
407 ! read (33,953) kdummy,bene(k),brmsn(k),bpncn(k),ibank(k)
410 ! read (33,850) (bvar(i,l,j,k),i=1,4)
412 ! bvar(i,l,j,k)=deg2rad*bvar(i,l,j,k)
420 952 format (1x,'#',i4,' total E ',f12.3,' rmsd from N ',f8.3,i5)
421 901 format (1x,6x,i3,3x,7x,i4,3x,7x,i8,i10,i2,f15.5)
422 902 format (1x,11x,i4,12x,1pe14.5)
423 953 format (1x,1x,i4,9x,f12.3,13x,f8.3,5x,f5.2,i5)
426 end subroutine read_bank
427 !-----------------------------------------------------------------------------
428 subroutine write_bank1(jlee)
431 use geometry_data, only: nres,rad2deg
432 ! implicit real*8 (a-h,o-z)
433 ! include 'DIMENSIONS'
434 ! include 'COMMON.IOUNITS'
435 ! include 'COMMON.CSA'
436 ! include 'COMMON.BANK'
437 ! include 'COMMON.CHAIN'
438 ! include 'COMMON.GEO'
440 integer :: k,i,l,j,jlee
442 #if defined(AIX) || defined(PGI)
443 open(icsa_bank1,file=csa_bank1,position="append")
445 open(icsa_bank1,file=csa_bank1,access="append")
447 write (icsa_bank1,900) jlee,nbank,nstep,cutdif
449 write (icsa_bank1,952) k,bene(k),brmsn(k),bpncn(k),ibank(k)
452 write (icsa_bank1,850) (rad2deg*bvar(i,l,j,k),i=1,4)
458 900 format (4x,"jlee =",i5,3x,"nbank =",i5,3x,"nstep =",i10,f15.5)
459 952 format (1x,'#',i4,' total E ',1pe14.5,' rmsd from N ',0pf8.3,&
463 end subroutine write_bank1
464 !-----------------------------------------------------------------------------
466 !-----------------------------------------------------------------------------
467 ! subroutine cartprint
469 ! use geometry_data, only: c
470 ! use energy_data, only: itype
471 ! implicit real*8 (a-h,o-z)
472 ! include 'DIMENSIONS'
473 ! include 'COMMON.CHAIN'
474 ! include 'COMMON.INTERACT'
475 ! include 'COMMON.NAMES'
476 ! include 'COMMON.IOUNITS'
481 ! write (iout,110) restyp(itype(i,1)),i,c(1,i),c(2,i),&
482 ! c(3,i),c(1,nres+i),c(2,nres+i),c(3,nres+i)
484 ! 100 format (//' alpha-carbon coordinates ',&
485 ! ' centroid coordinates'/ &
486 ! ' ', 6X,'X',11X,'Y',11X,'Z',&
487 ! 10X,'X',11X,'Y',11X,'Z')
488 ! 110 format (a,'(',i3,')',6f12.5)
490 ! end subroutine cartprint
491 !-----------------------------------------------------------------------------
493 !-----------------------------------------------------------------------------
494 subroutine secstrp2dihc
498 ! implicit real*8 (a-h,o-z)
499 ! include 'DIMENSIONS'
500 ! include 'COMMON.GEO'
501 ! include 'COMMON.BOUNDS'
502 ! include 'COMMON.CHAIN'
503 ! include 'COMMON.TORCNSTR'
504 ! include 'COMMON.IOUNITS'
505 !el character(len=1),dimension(nres) :: secstruc !(maxres)
506 !el COMMON/SECONDARYS/secstruc
507 character(len=80) :: line
512 integer :: i,ii,lenpre
514 allocate(secstruc(nres))
516 !dr call getenv_loc('SECPREDFIL',secpred)
518 secpred=prefix(:lenpre)//'.spred'
520 #if defined(WINIFL) || defined(WINPGI)
521 open(isecpred,file=secpred,status='old',readonly,shared)
522 #elif (defined CRAY) || (defined AIX)
523 open(isecpred,file=secpred,status='old',action='read')
525 open(isecpred,file=secpred,status='old')
527 open(isecpred,file=secpred,status='old',action='read')
529 ! read secondary structure prediction from JPRED here!
530 ! read(isecpred,'(A80)',err=100,end=100) line
531 ! read(line,'(f10.3)',err=110) ftors
532 read(isecpred,'(f10.3)',err=110) ftors
534 write (iout,*) 'FTORS factor =',ftors
535 ! initialize secstruc to any
542 call read_secstr_pred(isecpred,iout,errflag)
544 write(iout,*)'There is a problem with the list of secondary-',&
545 'structure prediction'
548 ! 8/13/98 Set limits to generating the dihedral angles
556 if ( secstruc(i) .eq. 'H') then
557 ! Helix restraints for this residue
560 phi0(ii) = 45.0D0*deg2rad
561 drange(ii)= 5.0D0*deg2rad
562 phibound(1,i) = phi0(ii)-drange(ii)
563 phibound(2,i) = phi0(ii)+drange(ii)
564 else if (secstruc(i) .eq. 'E') then
565 ! strand restraints for this residue
568 phi0(ii) = 180.0D0*deg2rad
569 drange(ii)= 5.0D0*deg2rad
570 phibound(1,i) = phi0(ii)-drange(ii)
571 phibound(2,i) = phi0(ii)+drange(ii)
573 ! no restraints for this residue
574 ndih_nconstr=ndih_nconstr+1
575 idih_nconstr(ndih_nconstr)=i
579 ! deallocate(secstruc)
582 write(iout,'(A30,A80)')'Error reading file SECPRED',secpred
583 ! deallocate(secstruc)
586 write(iout,'(A20)')'Error reading FTORS'
587 ! deallocate(secstruc)
589 end subroutine secstrp2dihc
590 !-----------------------------------------------------------------------------
591 subroutine read_secstr_pred(jin,jout,errors)
593 ! implicit real*8 (a-h,o-z)
594 ! INCLUDE 'DIMENSIONS'
595 ! include 'COMMON.IOUNITS'
596 ! include 'COMMON.CHAIN'
597 !el character(len=1),dimension(nres) :: secstruc !(maxres)
598 !el COMMON/SECONDARYS/secstruc
600 character(len=80) :: line,line1 !,ucase
601 logical :: errflag,errors,blankline
604 integer :: jin,jout,iseq,ipos,ipos1,iend,il,&
607 read (jin,'(a)') line
608 write (jout,'(2a)') '> ',line(1:78)
610 ! Remember that we number full residues starting from 2, then, iseq=1 and iseq=nres
611 ! correspond to the end-groups. ADD to the secondary structure prediction "-" for the
612 ! end-groups in the input file "*.spred"
615 do while (index(line1,'$END').eq.0)
616 ! Override commented lines.
619 do while (.not.blankline)
621 call mykey(line,line1,ipos,blankline,errflag)
622 if (errflag) write (jout,'(2a)') &
623 'Error when reading sequence in line: ',line
624 errors=errors .or. errflag
625 if (.not. blankline .and. .not. errflag) then
628 !el if (iseq.le.maxres) then
629 if (line1(1:1).eq.'-' ) then
630 secstruc(iseq)=line1(1:1)
631 else if ( ( ucase(line1(1:1)).eq.'E' ) .or. &
632 ( ucase(line1(1:1)).eq.'H' ) ) then
633 secstruc(iseq)=ucase(line1(1:1))
636 write (jout,1010) line1(1:1), iseq
641 !el write (jout,1000) iseq,maxres
644 do while (ipos1.le.iend)
649 !el if (iseq.le.maxres) then
650 if (line1(ipos1-1:ipos1-1).eq.'-' ) then
651 secstruc(iseq)=line1(ipos1-1:ipos1-1)
652 else if((ucase(line1(ipos1-1:ipos1-1)).eq.'E').or. &
653 (ucase(line1(ipos1-1:ipos1-1)).eq.'H') ) then
654 secstruc(iseq)=ucase(line1(ipos1-1:ipos1-1))
657 write (jout,1010) line1(ipos1-1:ipos1-1), iseq
662 !el write (jout,1000) iseq,maxres
669 read (jin,'(a)') line
670 write (jout,'(2a)') '> ',line(1:78)
674 !d write (jout,'(10a8)') (sequence(i),i=1,iseq-1)
676 !d check whether the found length of the chain is correct.
677 length_of_chain=iseq-1
678 if (length_of_chain .ne. nres) then
680 write (jout,'(a,i4,a,i4,a)') &
681 'Error: the number of labels specified in $SEC_STRUC_PRED (' &
682 ,length_of_chain,') does not match with the number of residues (' &
687 1000 format('Error - the number of residues (',i4,&
688 ') has exceeded maximum (',i4,').')
689 1010 format ('Error - unrecognized secondary structure label',a4,&
692 end subroutine read_secstr_pred
694 !-----------------------------------------------------------------------------
696 !-----------------------------------------------------------------------------
701 use control_data, only:maxterm !,maxtor
705 use control, only: getenv_loc
707 ! Read the parameters of the probability distributions of the virtual-bond
708 ! valence angles and the side chains and energy parameters.
710 ! Important! Energy-term weights ARE NOT read here; they are read from the
711 ! main input file instead, because NO defaults have yet been set for these
714 ! implicit real*8 (a-h,o-z)
715 ! include 'DIMENSIONS'
720 ! include 'COMMON.IOUNITS'
721 ! include 'COMMON.CHAIN'
722 ! include 'COMMON.INTERACT'
723 ! include 'COMMON.GEO'
724 ! include 'COMMON.LOCAL'
725 ! include 'COMMON.TORSION'
726 ! include 'COMMON.SCCOR'
727 ! include 'COMMON.SCROT'
728 ! include 'COMMON.FFIELD'
729 ! include 'COMMON.NAMES'
730 ! include 'COMMON.SBRIDGE'
731 ! include 'COMMON.MD'
732 ! include 'COMMON.SETUP'
733 character(len=1) :: t1,t2,t3
734 character(len=1) :: onelett(4) = (/"G","A","P","D"/)
735 character(len=1) :: toronelet(-2:2) = (/"p","a","G","A","P"/)
736 logical :: lprint,LaTeX
737 real(kind=8),dimension(3,3,maxlob) :: blower !(3,3,maxlob)
738 real(kind=8),dimension(13) :: buse
739 character(len=3) :: lancuch !,ucase
741 integer :: m,n,l,i,j,k,iblock,lll,llll,ll,nlobi,mm
742 integer :: maxinter,junk,kk,ii,ncatprotparm
743 real(kind=8) :: v0ijsccor,v0ijsccor1,v0ijsccor2,v0ijsccor3,si,&
744 dwa16,rjunk,akl,v0ij,rri,epsij,rrij,sigeps,sigt1sq,&
745 sigt2sq,sigii1,sigii2,ratsig1,ratsig2,rsum_max,r_augm,&
746 res1,epsijlip,epspeptube,epssctube,sigmapeptube, &
748 integer :: ichir1,ichir2
749 ! real(kind=8),dimension(maxterm,-maxtor:maxtor,-maxtor:maxtor,2) :: v1_el,v2_el !(maxterm,-maxtor:maxtor,-maxtor:maxtor,2)
750 !el allocate(v1_el(maxterm,-maxtor:maxtor,-maxtor:maxtor,2))
751 !el allocate(v2_el(maxterm,-maxtor:maxtor,-maxtor:maxtor,2))
753 ! For printing parameters after they are read set the following in the UNRES
756 ! setenv PRINT_PARM YES
758 ! To print parameters in LaTeX format rather than as ASCII tables:
762 call getenv_loc("PRINT_PARM",lancuch)
763 lprint = (ucase(lancuch).eq."YES" .or. ucase(lancuch).eq."Y")
764 call getenv_loc("LATEX",lancuch)
765 LaTeX = (ucase(lancuch).eq."YES" .or. ucase(lancuch).eq."Y")
767 dwa16=2.0d0**(1.0d0/6.0d0)
769 ! Assign virtual-bond length
772 vblinv2=vblinv*vblinv
774 ! Read the virtual-bond parameters, masses, and moments of inertia
775 ! and Stokes' radii of the peptide group and side chains
777 allocate(dsc(ntyp1)) !(ntyp1)
778 allocate(dsc_inv(ntyp1)) !(ntyp1)
779 allocate(nbondterm_nucl(ntyp_molec(2))) !(ntyp)
780 allocate(vbldsc0_nucl(maxbondterm,ntyp_molec(2))) !(maxbondterm,ntyp)
781 allocate(aksc_nucl(maxbondterm,ntyp_molec(2))) !(maxbondterm,ntyp)
782 allocate(nbondterm(ntyp)) !(ntyp)
783 allocate(vbldsc0(maxbondterm,ntyp)) !(maxbondterm,ntyp)
784 allocate(aksc(maxbondterm,ntyp)) !(maxbondterm,ntyp)
785 allocate(abond0(maxbondterm,ntyp)) !(maxbondterm,ntyp)
786 allocate(long_r_sidechain(ntyp))
787 allocate(short_r_sidechain(ntyp))
792 allocate(msc(ntyp+1)) !(ntyp+1)
793 allocate(isc(ntyp+1)) !(ntyp+1)
794 allocate(restok(ntyp+1)) !(ntyp+1)
796 read (ibond,*) vbldp0,akp,mp,ip,pstok
799 read (ibond,*) vbldsc0(1,i),aksc(1,i),msc(i),isc(i),restok(i)
800 dsc(i) = vbldsc0(1,i)
804 dsc_inv(i)=1.0D0/dsc(i)
808 allocate(msc(ntyp+1,5)) !(ntyp+1)
809 allocate(isc(ntyp+1,5)) !(ntyp+1)
810 allocate(restok(ntyp+1,5)) !(ntyp+1)
812 read (ibond,*) junk,vbldp0,vbldpDUM,akp,rjunk,mp(1),ip(1),pstok(1)
814 read (ibond,*) nbondterm(i),(vbldsc0(j,i),aksc(j,i),abond0(j,i),&
815 j=1,nbondterm(i)),msc(i,1),isc(i,1),restok(i,1)
816 dsc(i) = vbldsc0(1,i)
820 dsc_inv(i)=1.0D0/dsc(i)
824 read (ibond_nucl,*) vbldp0_nucl,akp_nucl,mp(2),ip(2),pstok(2)
827 read (ibond_nucl,*) vbldsc0_nucl(1,i),aksc_nucl(1,i),msc(i,2),isc(i,2),restok(i,2)
828 ! dsc(i) = vbldsc0_nucl(1,i)
832 ! dsc_inv(i)=1.0D0/dsc(i)
835 ! read (ibond_nucl,*) junk,vbldp0_nucl,akp_nucl,rjunk,mp(2),ip(2),pstok(2)
836 ! do i=1,ntyp_molec(2)
837 ! read (ibond_nucl,*) nbondterm_nucl(i),(vbldsc0_nucl(j,i),&
838 ! aksc_nucl(j,i),abond0_nucl(j,i),&
839 ! j=1,nbondterm_nucl(i)),msc(i,2),isc(i,2),restok(i,2)
840 ! dsc(i) = vbldsc0(1,i)
844 ! dsc_inv(i)=1.0D0/dsc(i)
849 write(iout,'(/a/)')"Dynamic constants of the interaction sites:"
850 write (iout,'(a10,a3,6a10)') 'Type','N','VBL','K','A0','mass',&
852 write(iout,'(a10,i3,6f10.5)') "p",1,vbldp0,akp,0.0d0,mp(1),ip(1),pstok(1)
854 write (iout,'(a10,i3,6f10.5)') restyp(i,1),nbondterm(i),&
855 vbldsc0(1,i),aksc(1,i),abond0(1,i),msc(i,1),isc(i,1),restok(i,1)
857 write (iout,'(13x,3f10.5)') &
858 vbldsc0(j,i),aksc(j,i),abond0(j,i)
863 read(iion,*) msc(i,5),restok(i,5)
864 print *,msc(i,5),restok(i,5)
868 read (iion,*) ncatprotparm
869 allocate(catprm(ncatprotparm,4))
871 read (iion,*) (catprm(i,k),i=1,ncatprotparm)
874 ! read (iion,*) (vcatprm(k),k=1,ncatprotpram)
875 !----------------------------------------------------
876 allocate(a0thet(-ntyp:ntyp),theta0(-ntyp:ntyp))
877 allocate(sig0(-ntyp:ntyp),sigc0(-ntyp:ntyp)) !(-ntyp:ntyp)
878 allocate(athet(2,-ntyp:ntyp,-1:1,-1:1))
879 allocate(bthet(2,-ntyp:ntyp,-1:1,-1:1)) !(2,-ntyp:ntyp,-1:1,-1:1)
880 allocate(polthet(0:3,-ntyp:ntyp)) !(0:3,-ntyp:ntyp)
881 allocate(gthet(3,-ntyp:ntyp)) !(3,-ntyp:ntyp)
891 allocate(liptranene(ntyp))
892 !C reading lipid parameters
893 write (iout,*) "iliptranpar",iliptranpar
895 read(iliptranpar,*) pepliptran
898 read(iliptranpar,*) liptranene(i)
899 print *,liptranene(i)
905 ! Read the parameters of the probability distribution/energy expression
906 ! of the virtual-bond valence angles theta
909 read (ithep,*,err=111,end=111) a0thet(i),(athet(j,i,1,1),j=1,2),&
910 (bthet(j,i,1,1),j=1,2)
911 read (ithep,*,err=111,end=111) (polthet(j,i),j=0,3)
912 read (ithep,*,err=111,end=111) (gthet(j,i),j=1,3)
913 read (ithep,*,err=111,end=111) theta0(i),sig0(i),sigc0(i)
917 athet(1,i,1,-1)=athet(1,i,1,1)
918 athet(2,i,1,-1)=athet(2,i,1,1)
919 bthet(1,i,1,-1)=-bthet(1,i,1,1)
920 bthet(2,i,1,-1)=-bthet(2,i,1,1)
921 athet(1,i,-1,1)=-athet(1,i,1,1)
922 athet(2,i,-1,1)=-athet(2,i,1,1)
923 bthet(1,i,-1,1)=bthet(1,i,1,1)
924 bthet(2,i,-1,1)=bthet(2,i,1,1)
928 athet(1,i,-1,-1)=athet(1,-i,1,1)
929 athet(2,i,-1,-1)=-athet(2,-i,1,1)
930 bthet(1,i,-1,-1)=bthet(1,-i,1,1)
931 bthet(2,i,-1,-1)=-bthet(2,-i,1,1)
932 athet(1,i,-1,1)=athet(1,-i,1,1)
933 athet(2,i,-1,1)=-athet(2,-i,1,1)
934 bthet(1,i,-1,1)=-bthet(1,-i,1,1)
935 bthet(2,i,-1,1)=bthet(2,-i,1,1)
936 athet(1,i,1,-1)=-athet(1,-i,1,1)
937 athet(2,i,1,-1)=athet(2,-i,1,1)
938 bthet(1,i,1,-1)=bthet(1,-i,1,1)
939 bthet(2,i,1,-1)=-bthet(2,-i,1,1)
944 polthet(j,i)=polthet(j,-i)
947 gthet(j,i)=gthet(j,-i)
955 'Parameters of the virtual-bond valence angles:'
956 write (iout,'(/a/9x,5a/79(1h-))') 'Fourier coefficients:',&
957 ' ATHETA0 ',' A1 ',' A2 ',&
960 write(iout,'(a3,i4,2x,5(1pe14.5))') restyp(i,1),i,&
961 a0thet(i),(athet(j,i,1,1),j=1,2),(bthet(j,i,1,1),j=1,2)
963 write (iout,'(/a/9x,5a/79(1h-))') &
964 'Parameters of the expression for sigma(theta_c):',&
965 ' ALPH0 ',' ALPH1 ',' ALPH2 ',&
966 ' ALPH3 ',' SIGMA0C '
968 write (iout,'(a3,i4,2x,5(1pe14.5))') restyp(i,1),i,&
969 (polthet(j,i),j=0,3),sigc0(i)
971 write (iout,'(/a/9x,5a/79(1h-))') &
972 'Parameters of the second gaussian:',&
973 ' THETA0 ',' SIGMA0 ',' G1 ',&
976 write (iout,'(a3,i4,2x,5(1pe14.5))') restyp(i,1),i,theta0(i),&
977 sig0(i),(gthet(j,i),j=1,3)
981 'Parameters of the virtual-bond valence angles:'
982 write (iout,'(/a/9x,5a/79(1h-))') &
983 'Coefficients of expansion',&
984 ' theta0 ',' a1*10^2 ',' a2*10^2 ',&
985 ' b1*10^1 ',' b2*10^1 '
987 write(iout,'(a3,1h&,2x,5(f8.3,1h&))') restyp(i,1),&
988 a0thet(i),(100*athet(j,i,1,1),j=1,2),&
989 (10*bthet(j,i,1,1),j=1,2)
991 write (iout,'(/a/9x,5a/79(1h-))') &
992 'Parameters of the expression for sigma(theta_c):',&
993 ' alpha0 ',' alph1 ',' alph2 ',&
994 ' alhp3 ',' sigma0c '
996 write (iout,'(a3,1h&,2x,5(1pe12.3,1h&))') restyp(i,1),&
997 (polthet(j,i),j=0,3),sigc0(i)
999 write (iout,'(/a/9x,5a/79(1h-))') &
1000 'Parameters of the second gaussian:',&
1001 ' theta0 ',' sigma0*10^2 ',' G1*10^-1',&
1004 write (iout,'(a3,1h&,2x,5(f8.3,1h&))') restyp(i,1),theta0(i),&
1005 100*sig0(i),gthet(1,i)*0.1D0,gthet(2,i),gthet(3,i)*10.0D0
1011 ! Read the parameters of Utheta determined from ab initio surfaces
1012 ! Kozlowska et al., J. Phys.: Condens. Matter 19 (2007) 285203
1014 read (ithep,*,err=111,end=111) nthetyp,ntheterm,ntheterm2,&
1015 ntheterm3,nsingle,ndouble
1016 nntheterm=max0(ntheterm,ntheterm2,ntheterm3)
1018 !----------------------------------------------------
1019 allocate(ithetyp(-ntyp1:ntyp1)) !(-ntyp1:ntyp1)
1020 allocate(aa0thet(-nthetyp-1:nthetyp+1,&
1021 -nthetyp-1:nthetyp+1,-nthetyp-1:nthetyp+1,2))
1022 !(-maxthetyp1:maxthetyp1,-maxthetyp1:maxthetyp1,-maxthetyp1:maxthetyp1,2)
1023 allocate(aathet(ntheterm,-nthetyp-1:nthetyp+1,&
1024 -nthetyp-1:nthetyp+1,-nthetyp-1:nthetyp+1,2))
1025 !(maxtheterm,-maxthetyp1:maxthetyp1,&
1026 ! -maxthetyp1:maxthetyp1,-maxthetyp1:maxthetyp1,2)
1027 allocate(bbthet(nsingle,ntheterm2,-nthetyp-1:nthetyp+1,&
1028 -nthetyp-1:nthetyp+1,-nthetyp-1:nthetyp+1,2))
1029 allocate(ccthet(nsingle,ntheterm2,-nthetyp-1:nthetyp+1,&
1030 -nthetyp-1:nthetyp+1,-nthetyp-1:nthetyp+1,2))
1031 allocate(ddthet(nsingle,ntheterm2,-nthetyp-1:nthetyp+1,&
1032 -nthetyp-1:nthetyp+1,-nthetyp-1:nthetyp+1,2))
1033 allocate(eethet(nsingle,ntheterm2,-nthetyp-1:nthetyp+1,&
1034 -nthetyp-1:nthetyp+1,-nthetyp-1:nthetyp+1,2))
1035 !(maxsingle,maxtheterm2,-maxthetyp1:maxthetyp1,&
1036 ! -maxthetyp1:maxthetyp1,-maxthetyp1:maxthetyp1,2)
1037 allocate(ffthet(ndouble,ndouble,ntheterm3,-nthetyp-1:nthetyp+1,&
1038 -nthetyp-1:nthetyp+1,-nthetyp-1:nthetyp+1,2))
1039 allocate(ggthet(ndouble,ndouble,ntheterm3,-nthetyp-1:nthetyp+1,&
1040 -nthetyp-1:nthetyp+1,-nthetyp-1:nthetyp+1,2))
1041 !(maxdouble,maxdouble,maxtheterm3,-maxthetyp1:maxthetyp1,&
1042 ! -maxthetyp1:maxthetyp1,-maxthetyp1:maxthetyp1,2))
1044 read (ithep,*,err=111,end=111) (ithetyp(i),i=1,ntyp1)
1046 ithetyp(i)=-ithetyp(-i)
1049 aa0thet(:,:,:,:)=0.0d0
1050 aathet(:,:,:,:,:)=0.0d0
1051 bbthet(:,:,:,:,:,:)=0.0d0
1052 ccthet(:,:,:,:,:,:)=0.0d0
1053 ddthet(:,:,:,:,:,:)=0.0d0
1054 eethet(:,:,:,:,:,:)=0.0d0
1055 ffthet(:,:,:,:,:,:,:)=0.0d0
1056 ggthet(:,:,:,:,:,:,:)=0.0d0
1058 ! VAR:iblock means terminally blocking group 1=non-proline 2=proline
1060 ! VAR:ntethtyp is type of theta potentials type currently 0=glycine
1061 ! VAR:1=non-glicyne non-proline 2=proline
1062 ! VAR:negative values for D-aminoacid
1064 do j=-nthetyp,nthetyp
1065 do k=-nthetyp,nthetyp
1066 read (ithep,'(6a)',end=111,err=111) res1
1067 read (ithep,*,end=111,err=111) aa0thet(i,j,k,iblock)
1068 ! VAR: aa0thet is variable describing the average value of Foureir
1069 ! VAR: expansion series
1070 ! VAR: aathet is foureir expansion in theta/2 angle for full formula
1071 ! VAR: look at the fitting equation in Kozlowska et al., J. Phys.:
1072 !ondens. Matter 19 (2007) 285203 and Sieradzan et al., unpublished
1073 read (ithep,*,end=111,err=111) &
1074 (aathet(l,i,j,k,iblock),l=1,ntheterm)
1075 read (ithep,*,end=111,err=111) &
1076 ((bbthet(lll,ll,i,j,k,iblock),lll=1,nsingle),&
1077 (ccthet(lll,ll,i,j,k,iblock),lll=1,nsingle),&
1078 (ddthet(lll,ll,i,j,k,iblock),lll=1,nsingle),&
1079 (eethet(lll,ll,i,j,k,iblock),lll=1,nsingle),&
1081 read (ithep,*,end=111,err=111) &
1082 (((ffthet(llll,lll,ll,i,j,k,iblock),&
1083 ffthet(lll,llll,ll,i,j,k,iblock),&
1084 ggthet(llll,lll,ll,i,j,k,iblock),&
1085 ggthet(lll,llll,ll,i,j,k,iblock),&
1086 llll=1,lll-1),lll=2,ndouble),ll=1,ntheterm3)
1091 ! For dummy ends assign glycine-type coefficients of theta-only terms; the
1092 ! coefficients of theta-and-gamma-dependent terms are zero.
1093 ! IF YOU WANT VALENCE POTENTIALS FOR DUMMY ATOM UNCOMENT BELOW (NOT
1094 ! RECOMENTDED AFTER VERSION 3.3)
1098 ! aathet(l,i,j,nthetyp+1,iblock)=aathet(l,i,j,1,iblock)
1099 ! aathet(l,nthetyp+1,i,j,iblock)=aathet(l,1,i,j,iblock)
1101 ! aa0thet(i,j,nthetyp+1,iblock)=aa0thet(i,j,1,iblock)
1102 ! aa0thet(nthetyp+1,i,j,iblock)=aa0thet(1,i,j,iblock)
1105 ! aathet(l,nthetyp+1,i,nthetyp+1,iblock)=aathet(l,1,i,1,iblock)
1107 ! aa0thet(nthetyp+1,i,nthetyp+1,iblock)=aa0thet(1,i,1,iblock)
1110 ! AND COMMENT THE LOOPS BELOW
1114 aathet(l,i,j,nthetyp+1,iblock)=0.0d0
1115 aathet(l,nthetyp+1,i,j,iblock)=0.0d0
1117 aa0thet(i,j,nthetyp+1,iblock)=0.0d0
1118 aa0thet(nthetyp+1,i,j,iblock)=0.0d0
1121 aathet(l,nthetyp+1,i,nthetyp+1,iblock)=0.0d0
1123 aa0thet(nthetyp+1,i,nthetyp+1,iblock)=0.0d0
1128 ! Substitution for D aminoacids from symmetry.
1131 do j=-nthetyp,nthetyp
1132 do k=-nthetyp,nthetyp
1133 aa0thet(i,j,k,iblock)=aa0thet(-i,-j,-k,iblock)
1135 aathet(l,i,j,k,iblock)=aathet(l,-i,-j,-k,iblock)
1139 bbthet(lll,ll,i,j,k,iblock)=bbthet(lll,ll,-i,-j,-k,iblock)
1140 ccthet(lll,ll,i,j,k,iblock)=-ccthet(lll,ll,-i,-j,-k,iblock)
1141 ddthet(lll,ll,i,j,k,iblock)=ddthet(lll,ll,-i,-j,-k,iblock)
1142 eethet(lll,ll,i,j,k,iblock)=-eethet(lll,ll,-i,-j,-k,iblock)
1148 ffthet(llll,lll,ll,i,j,k,iblock)= &
1149 ffthet(llll,lll,ll,-i,-j,-k,iblock)
1150 ffthet(lll,llll,ll,i,j,k,iblock)= &
1151 ffthet(lll,llll,ll,-i,-j,-k,iblock)
1152 ggthet(llll,lll,ll,i,j,k,iblock)= &
1153 -ggthet(llll,lll,ll,-i,-j,-k,iblock)
1154 ggthet(lll,llll,ll,i,j,k,iblock)= &
1155 -ggthet(lll,llll,ll,-i,-j,-k,iblock)
1164 ! Control printout of the coefficients of virtual-bond-angle potentials
1167 write (iout,'(//a)') 'Parameter of virtual-bond-angle potential'
1172 write (iout,'(//4a)') &
1173 'Type ',onelett(i),onelett(j),onelett(k)
1174 write (iout,'(//a,10x,a)') " l","a[l]"
1175 write (iout,'(i2,1pe15.5)') 0,aa0thet(i,j,k,iblock)
1176 write (iout,'(i2,1pe15.5)') &
1177 (l,aathet(l,i,j,k,iblock),l=1,ntheterm)
1179 write (iout,'(//2h m,4(9x,a,3h[m,,i1,1h]))') &
1180 "b",l,"c",l,"d",l,"e",l
1182 write (iout,'(i2,4(1pe15.5))') m,&
1183 bbthet(m,l,i,j,k,iblock),ccthet(m,l,i,j,k,iblock),&
1184 ddthet(m,l,i,j,k,iblock),eethet(m,l,i,j,k,iblock)
1188 write (iout,'(//3hm,n,4(6x,a,5h[m,n,,i1,1h]))') &
1189 "f+",l,"f-",l,"g+",l,"g-",l
1192 write (iout,'(i1,1x,i1,4(1pe15.5))') n,m,&
1193 ffthet(n,m,l,i,j,k,iblock),&
1194 ffthet(m,n,l,i,j,k,iblock),&
1195 ggthet(n,m,l,i,j,k,iblock),&
1196 ggthet(m,n,l,i,j,k,iblock)
1206 write (2,*) "Start reading THETA_PDB",ithep_pdb
1208 ! write (2,*) 'i=',i
1209 read (ithep_pdb,*,err=111,end=111) &
1210 a0thet(i),(athet(j,i,1,1),j=1,2),&
1211 (bthet(j,i,1,1),j=1,2)
1212 read (ithep_pdb,*,err=111,end=111) (polthet(j,i),j=0,3)
1213 read (ithep_pdb,*,err=111,end=111) (gthet(j,i),j=1,3)
1214 read (ithep_pdb,*,err=111,end=111) theta0(i),sig0(i),sigc0(i)
1215 sigc0(i)=sigc0(i)**2
1218 athet(1,i,1,-1)=athet(1,i,1,1)
1219 athet(2,i,1,-1)=athet(2,i,1,1)
1220 bthet(1,i,1,-1)=-bthet(1,i,1,1)
1221 bthet(2,i,1,-1)=-bthet(2,i,1,1)
1222 athet(1,i,-1,1)=-athet(1,i,1,1)
1223 athet(2,i,-1,1)=-athet(2,i,1,1)
1224 bthet(1,i,-1,1)=bthet(1,i,1,1)
1225 bthet(2,i,-1,1)=bthet(2,i,1,1)
1228 a0thet(i)=a0thet(-i)
1229 athet(1,i,-1,-1)=athet(1,-i,1,1)
1230 athet(2,i,-1,-1)=-athet(2,-i,1,1)
1231 bthet(1,i,-1,-1)=bthet(1,-i,1,1)
1232 bthet(2,i,-1,-1)=-bthet(2,-i,1,1)
1233 athet(1,i,-1,1)=athet(1,-i,1,1)
1234 athet(2,i,-1,1)=-athet(2,-i,1,1)
1235 bthet(1,i,-1,1)=-bthet(1,-i,1,1)
1236 bthet(2,i,-1,1)=bthet(2,-i,1,1)
1237 athet(1,i,1,-1)=-athet(1,-i,1,1)
1238 athet(2,i,1,-1)=athet(2,-i,1,1)
1239 bthet(1,i,1,-1)=bthet(1,-i,1,1)
1240 bthet(2,i,1,-1)=-bthet(2,-i,1,1)
1241 theta0(i)=theta0(-i)
1245 polthet(j,i)=polthet(j,-i)
1248 gthet(j,i)=gthet(j,-i)
1251 write (2,*) "End reading THETA_PDB"
1255 !--------------- Reading theta parameters for nucleic acid-------
1256 read (ithep_nucl,*,err=111,end=111) nthetyp_nucl,ntheterm_nucl,&
1257 ntheterm2_nucl,ntheterm3_nucl,nsingle_nucl,ndouble_nucl
1258 nntheterm_nucl=max0(ntheterm_nucl,ntheterm2_nucl,ntheterm3_nucl)
1259 allocate(ithetyp_nucl(ntyp1_molec(2))) !(-ntyp1:ntyp1)
1260 allocate(aa0thet_nucl(nthetyp_nucl+1,&
1261 nthetyp_nucl+1,nthetyp_nucl+1))
1262 !(-maxthetyp1:maxthetyp1,-maxthetyp1:maxthetyp1,-maxthetyp1:maxthetyp1,2)
1263 allocate(aathet_nucl(ntheterm_nucl+1,nthetyp_nucl+1,&
1264 nthetyp_nucl+1,nthetyp_nucl+1))
1265 !(maxtheterm,-maxthetyp1:maxthetyp1,&
1266 ! -maxthetyp1:maxthetyp1,-maxthetyp1:maxthetyp1,2)
1267 allocate(bbthet_nucl(nsingle_nucl+1,ntheterm2_nucl+1,nthetyp_nucl+1,&
1268 nthetyp_nucl+1,nthetyp_nucl+1))
1269 allocate(ccthet_nucl(nsingle_nucl+1,ntheterm2_nucl+1,nthetyp_nucl+1,&
1270 nthetyp_nucl+1,nthetyp_nucl+1))
1271 allocate(ddthet_nucl(nsingle_nucl+1,ntheterm2_nucl+1,nthetyp_nucl+1,&
1272 nthetyp_nucl+1,nthetyp_nucl+1))
1273 allocate(eethet_nucl(nsingle_nucl+1,ntheterm2_nucl+1,nthetyp_nucl+1,&
1274 nthetyp_nucl+1,nthetyp_nucl+1))
1275 !(maxsingle,maxtheterm2,-maxthetyp1:maxthetyp1,&
1276 ! -maxthetyp1:maxthetyp1,-maxthetyp1:maxthetyp1,2)
1277 allocate(ffthet_nucl(ndouble_nucl+1,ndouble_nucl+1,ntheterm3_nucl+1,&
1278 nthetyp_nucl+1,nthetyp_nucl+1,nthetyp_nucl+1))
1279 allocate(ggthet_nucl(ndouble_nucl+1,ndouble_nucl+1,ntheterm3_nucl+1,&
1280 nthetyp_nucl+1,nthetyp_nucl+1,nthetyp_nucl+1))
1282 !(maxdouble,maxdouble,maxtheterm3,-maxthetyp1:maxthetyp1,&
1283 ! -maxthetyp1:maxthetyp1,-maxthetyp1:maxthetyp1,2))
1285 read (ithep_nucl,*,err=111,end=111) (ithetyp_nucl(i),i=1,ntyp1_molec(2))
1287 aa0thet_nucl(:,:,:)=0.0d0
1288 aathet_nucl(:,:,:,:)=0.0d0
1289 bbthet_nucl(:,:,:,:,:)=0.0d0
1290 ccthet_nucl(:,:,:,:,:)=0.0d0
1291 ddthet_nucl(:,:,:,:,:)=0.0d0
1292 eethet_nucl(:,:,:,:,:)=0.0d0
1293 ffthet_nucl(:,:,:,:,:,:)=0.0d0
1294 ggthet_nucl(:,:,:,:,:,:)=0.0d0
1299 read (ithep_nucl,'(3a)',end=111,err=111) t1,t2,t3
1300 read (ithep_nucl,*,end=111,err=111) aa0thet_nucl(i,j,k)
1301 read (ithep_nucl,*,end=111,err=111)(aathet_nucl(l,i,j,k),l=1,ntheterm_nucl)
1302 read (ithep_nucl,*,end=111,err=111) &
1303 (((bbthet_nucl(lll,ll,i,j,k),lll=1,nsingle_nucl), &
1304 (ccthet_nucl(lll,ll,i,j,k),lll=1,nsingle_nucl), &
1305 (ddthet_nucl(lll,ll,i,j,k),lll=1,nsingle_nucl), &
1306 (eethet_nucl(lll,ll,i,j,k),lll=1,nsingle_nucl)),ll=1,ntheterm2_nucl)
1307 read (ithep_nucl,*,end=111,err=111) &
1308 (((ffthet_nucl(llll,lll,ll,i,j,k),ffthet_nucl(lll,llll,ll,i,j,k), &
1309 ggthet_nucl(llll,lll,ll,i,j,k),ggthet_nucl(lll,llll,ll,i,j,k), &
1310 llll=1,lll-1),lll=2,ndouble_nucl),ll=1,ntheterm3_nucl)
1315 !-------------------------------------------
1316 allocate(nlob(ntyp1)) !(ntyp1)
1317 allocate(bsc(maxlob,ntyp)) !(maxlob,ntyp)
1318 allocate(censc(3,maxlob,-ntyp:ntyp)) !(3,maxlob,-ntyp:ntyp)
1319 allocate(gaussc(3,3,maxlob,-ntyp:ntyp)) !(3,3,maxlob,-ntyp:ntyp)
1326 gaussc(:,:,:,:)=0.0D0
1330 ! Read the parameters of the probability distribution/energy expression
1331 ! of the side chains.
1334 read (irotam,'(3x,i3,f8.3)',end=112,err=112) nlob(i),dsc(i)
1338 dsc_inv(i)=1.0D0/dsc(i)
1349 read(irotam,*,end=112,err=112)(censc(k,1,i),k=1,3),&
1350 ((blower(k,l,1),l=1,k),k=1,3)
1351 censc(1,1,-i)=censc(1,1,i)
1352 censc(2,1,-i)=censc(2,1,i)
1353 censc(3,1,-i)=-censc(3,1,i)
1355 read (irotam,*,end=112,err=112) bsc(j,i)
1356 read (irotam,*,end=112,err=112) (censc(k,j,i),k=1,3),&
1357 ((blower(k,l,j),l=1,k),k=1,3)
1358 censc(1,j,-i)=censc(1,j,i)
1359 censc(2,j,-i)=censc(2,j,i)
1360 censc(3,j,-i)=-censc(3,j,i)
1361 ! BSC is amplitude of Gaussian
1368 akl=akl+blower(k,m,j)*blower(l,m,j)
1372 if (((k.eq.3).and.(l.ne.3)) &
1373 .or.((l.eq.3).and.(k.ne.3))) then
1374 gaussc(k,l,j,-i)=-akl
1375 gaussc(l,k,j,-i)=-akl
1377 gaussc(k,l,j,-i)=akl
1378 gaussc(l,k,j,-i)=akl
1387 write (iout,'(/a)') 'Parameters of side-chain local geometry'
1390 if (nlobi.gt.0) then
1392 write (iout,'(/3a,i2,a,f8.3)') 'Residue type: ',restyp(i,1),&
1393 ' # of gaussian lobes:',nlobi,' dsc:',dsc(i)
1394 write (iout,'(1h&,a,3(2h&&,f8.3,2h&&))') &
1395 'log h',(bsc(j,i),j=1,nlobi)
1396 write (iout,'(1h&,a,3(1h&,f8.3,1h&,f8.3,1h&,f8.3,1h&))') &
1397 'x',((censc(k,j,i),k=1,3),j=1,nlobi)
1399 write (iout,'(2h& ,5(2x,1h&,3(f7.3,1h&)))') &
1400 ((gaussc(k,l,j,i),l=1,3),j=1,nlobi)
1403 write (iout,'(/a,8x,i1,4(25x,i1))') 'Lobe:',(j,j=1,nlobi)
1404 write (iout,'(a,f10.4,4(16x,f10.4))') &
1405 'Center ',(bsc(j,i),j=1,nlobi)
1406 write (iout,'(5(2x,3f8.4))') ((censc(k,j,i),k=1,3),&
1415 ! Read scrot parameters for potentials determined from all-atom AM1 calculations
1416 ! added by Urszula Kozlowska 07/11/2007
1418 !el Maximum number of SC local term fitting function coefficiants
1419 !el integer,parameter :: maxsccoef=65
1421 allocate(sc_parmin(65,ntyp)) !(maxsccoef,ntyp)
1424 read (irotam,*,end=112,err=112)
1426 read (irotam,*,end=112,err=112)
1429 read(irotam,*,end=112,err=112) sc_parmin(j,i)
1433 !---------reading nucleic acid parameters for rotamers-------------------
1434 allocate(sc_parmin_nucl(9,ntyp_molec(2))) !(maxsccoef,ntyp)
1435 do i=1,ntyp_molec(2)
1436 read (irotam_nucl,*,end=112,err=112)
1438 read(irotam_nucl,*,end=112,err=112) sc_parmin_nucl(j,i)
1444 write (iout,*) "Base rotamer parameters"
1445 do i=1,ntyp_molec(2)
1446 write (iout,'(a)') restyp(i,2)
1447 write (iout,'(i5,f10.5)') (i,sc_parmin_nucl(j,i),j=1,9)
1452 ! Read the parameters of the probability distribution/energy expression
1453 ! of the side chains.
1455 write (2,*) "Start reading ROTAM_PDB"
1457 read (irotam_pdb,'(3x,i3,f8.3)',end=112,err=112) nlob(i),dsc(i)
1461 dsc_inv(i)=1.0D0/dsc(i)
1472 read(irotam_pdb,*,end=112,err=112)(censc(k,1,i),k=1,3),&
1473 ((blower(k,l,1),l=1,k),k=1,3)
1475 read (irotam_pdb,*,end=112,err=112) bsc(j,i)
1476 read (irotam_pdb,*,end=112,err=112) (censc(k,j,i),k=1,3),&
1477 ((blower(k,l,j),l=1,k),k=1,3)
1484 akl=akl+blower(k,m,j)*blower(l,m,j)
1494 write (2,*) "End reading ROTAM_PDB"
1500 ! Read torsional parameters in old format
1502 allocate(itortyp(ntyp1)) !(-ntyp1:ntyp1)
1504 read (itorp,*,end=113,err=113) ntortyp,nterm_old
1505 if (lprint)write (iout,*) 'ntortyp,nterm',ntortyp,nterm_old
1506 read (itorp,*,end=113,err=113) (itortyp(i),i=1,ntyp)
1508 !el from energy module--------
1509 allocate(v1(nterm_old,ntortyp,ntortyp))
1510 allocate(v2(nterm_old,ntortyp,ntortyp)) !(maxterm,-maxtor:maxtor,-maxtor:maxtor)
1511 !el---------------------------
1516 read (itorp,*,end=113,err=113) kk,v1(k,j,i),v2(k,j,i)
1522 write (iout,'(/a/)') 'Torsional constants:'
1525 write (iout,'(2i3,6f10.5)') i,j,(v1(k,i,j),k=1,nterm_old)
1526 write (iout,'(6x,6f10.5)') (v2(k,i,j),k=1,nterm_old)
1532 ! Read torsional parameters
1534 allocate(itortyp(-ntyp1:ntyp1)) !(-ntyp1:ntyp1)
1535 read (itorp,*,end=113,err=113) ntortyp
1536 !el from energy module---------
1537 allocate(nterm(-ntortyp:ntortyp,-ntortyp:ntortyp,2)) !(-maxtor:maxtor,-maxtor:maxtor,2)
1538 allocate(nlor(-ntortyp:ntortyp,-ntortyp:ntortyp,2)) !(-maxtor:maxtor,-maxtor:maxtor,2)
1540 allocate(vlor1(maxlor,-ntortyp:ntortyp,-ntortyp:ntortyp)) !(maxlor,-maxtor:maxtor,-maxtor:maxtor)
1541 allocate(vlor2(maxlor,ntortyp,ntortyp))
1542 allocate(vlor3(maxlor,ntortyp,ntortyp)) !(maxlor,maxtor,maxtor)
1543 allocate(v0(-ntortyp:ntortyp,-ntortyp:ntortyp,2)) !(-maxtor:maxtor,-maxtor:maxtor,2)
1545 allocate(v1(maxterm,-ntortyp:ntortyp,-ntortyp:ntortyp,2))
1546 allocate(v2(maxterm,-ntortyp:ntortyp,-ntortyp:ntortyp,2)) !(maxterm,-maxtor:maxtor,-maxtor:maxtor,2)
1547 !el---------------------------
1550 !el---------------------------
1552 read (itorp,*,end=113,err=113) (itortyp(i),i=1,ntyp)
1554 itortyp(i)=-itortyp(-i)
1556 itortyp(ntyp1)=ntortyp
1557 itortyp(-ntyp1)=-ntortyp
1559 write (iout,*) 'ntortyp',ntortyp
1561 do j=-ntortyp+1,ntortyp-1
1562 read (itorp,*,end=113,err=113) nterm(i,j,iblock),&
1564 nterm(-i,-j,iblock)=nterm(i,j,iblock)
1565 nlor(-i,-j,iblock)=nlor(i,j,iblock)
1568 do k=1,nterm(i,j,iblock)
1569 read (itorp,*,end=113,err=113) kk,v1(k,i,j,iblock),&
1571 v1(k,-i,-j,iblock)=v1(k,i,j,iblock)
1572 v2(k,-i,-j,iblock)=-v2(k,i,j,iblock)
1573 v0ij=v0ij+si*v1(k,i,j,iblock)
1575 ! write(iout,*) i,j,k,iblock,nterm(i,j,iblock) !
1576 ! write(iout,*) v1(k,-i,-j,iblock),v1(k,i,j,iblock),&!
1577 ! v2(k,-i,-j,iblock),v2(k,i,j,iblock)!
1579 do k=1,nlor(i,j,iblock)
1580 read (itorp,*,end=113,err=113) kk,vlor1(k,i,j),&
1581 vlor2(k,i,j),vlor3(k,i,j)
1582 v0ij=v0ij+vlor1(k,i,j)/(1+vlor3(k,i,j)**2)
1585 v0(-i,-j,iblock)=v0ij
1591 write (iout,'(/a/)') 'Torsional constants:'
1593 do i=-ntortyp,ntortyp
1594 do j=-ntortyp,ntortyp
1595 write (iout,*) 'ityp',i,' jtyp',j
1596 write (iout,*) 'Fourier constants'
1597 do k=1,nterm(i,j,iblock)
1598 write (iout,'(2(1pe15.5))') v1(k,i,j,iblock),&
1601 write (iout,*) 'Lorenz constants'
1602 do k=1,nlor(i,j,iblock)
1603 write (iout,'(3(1pe15.5))') &
1604 vlor1(k,i,j),vlor2(k,i,j),vlor3(k,i,j)
1610 !elwrite (iout,'(/a/)') 'Torsional constants:',vlor1(k,i,j),vlor2(k,i,j),vlor3(k,i,j)
1612 ! 6/23/01 Read parameters for double torsionals
1614 !el from energy module------------
1615 allocate(v1c(2,maxtermd_1,-ntortyp+1:ntortyp-1,-ntortyp+1:ntortyp-1,-ntortyp+1:ntortyp-1,2))
1616 allocate(v1s(2,maxtermd_1,-ntortyp+1:ntortyp-1,-ntortyp+1:ntortyp-1,-ntortyp+1:ntortyp-1,2))
1617 !(2,maxtermd_1,-maxtor:maxtor,-maxtor:maxtor,-maxtor:maxtor,2)
1618 allocate(v2c(maxtermd_2,maxtermd_2,-ntortyp+1:ntortyp-1,-ntortyp+1:ntortyp-1,-ntortyp+1:ntortyp-1,2))
1619 allocate(v2s(maxtermd_2,maxtermd_2,-ntortyp+1:ntortyp-1,-ntortyp+1:ntortyp-1,-ntortyp+1:ntortyp-1,2))
1620 !(maxtermd_2,maxtermd_2,-maxtor:maxtor,-maxtor:maxtor,-maxtor:maxtor,2)
1621 allocate(ntermd_1(-ntortyp+1:ntortyp-1,-ntortyp+1:ntortyp-1,-ntortyp+1:ntortyp-1,2))
1622 allocate(ntermd_2(-ntortyp+1:ntortyp-1,-ntortyp+1:ntortyp-1,-ntortyp+1:ntortyp-1,2))
1623 !(-maxtor:maxtor,-maxtor:maxtor,-maxtor:maxtor,2)
1624 !---------------------------------
1628 do j=-ntortyp+1,ntortyp-1
1629 do k=-ntortyp+1,ntortyp-1
1630 read (itordp,'(3a1)',end=114,err=114) t1,t2,t3
1631 ! write (iout,*) "OK onelett",
1634 if (t1.ne.toronelet(i) .or. t2.ne.toronelet(j) &
1635 .or. t3.ne.toronelet(k)) then
1636 write (iout,*) "Error in double torsional parameter file",&
1639 call MPI_Finalize(Ierror)
1641 stop "Error in double torsional parameter file"
1643 read (itordp,*,end=114,err=114) ntermd_1(i,j,k,iblock),&
1644 ntermd_2(i,j,k,iblock)
1645 ntermd_1(-i,-j,-k,iblock)=ntermd_1(i,j,k,iblock)
1646 ntermd_2(-i,-j,-k,iblock)=ntermd_2(i,j,k,iblock)
1647 read (itordp,*,end=114,err=114) (v1c(1,l,i,j,k,iblock),l=1,&
1648 ntermd_1(i,j,k,iblock))
1649 read (itordp,*,end=114,err=114) (v1s(1,l,i,j,k,iblock),l=1,&
1650 ntermd_1(i,j,k,iblock))
1651 read (itordp,*,end=114,err=114) (v1c(2,l,i,j,k,iblock),l=1,&
1652 ntermd_1(i,j,k,iblock))
1653 read (itordp,*,end=114,err=114) (v1s(2,l,i,j,k,iblock),l=1,&
1654 ntermd_1(i,j,k,iblock))
1655 ! Martix of D parameters for one dimesional foureir series
1656 do l=1,ntermd_1(i,j,k,iblock)
1657 v1c(1,l,-i,-j,-k,iblock)=v1c(1,l,i,j,k,iblock)
1658 v1s(1,l,-i,-j,-k,iblock)=-v1s(1,l,i,j,k,iblock)
1659 v1c(2,l,-i,-j,-k,iblock)=v1c(2,l,i,j,k,iblock)
1660 v1s(2,l,-i,-j,-k,iblock)=-v1s(2,l,i,j,k,iblock)
1661 ! write(iout,*) "whcodze" ,
1662 ! & v1s(2,l,-i,-j,-k,iblock),v1s(2,l,i,j,k,iblock)
1664 read (itordp,*,end=114,err=114) ((v2c(l,m,i,j,k,iblock),&
1665 v2c(m,l,i,j,k,iblock),v2s(l,m,i,j,k,iblock),&
1666 v2s(m,l,i,j,k,iblock),&
1667 m=1,l-1),l=1,ntermd_2(i,j,k,iblock))
1668 ! Martix of D parameters for two dimesional fourier series
1669 do l=1,ntermd_2(i,j,k,iblock)
1671 v2c(l,m,-i,-j,-k,iblock)=v2c(l,m,i,j,k,iblock)
1672 v2c(m,l,-i,-j,-k,iblock)=v2c(m,l,i,j,k,iblock)
1673 v2s(l,m,-i,-j,-k,iblock)=-v2s(l,m,i,j,k,iblock)
1674 v2s(m,l,-i,-j,-k,iblock)=-v2s(m,l,i,j,k,iblock)
1683 write (iout,*) 'Constants for double torsionals'
1686 do j=-ntortyp+1,ntortyp-1
1687 do k=-ntortyp+1,ntortyp-1
1688 write (iout,*) 'ityp',i,' jtyp',j,' ktyp',k,&
1689 ' nsingle',ntermd_1(i,j,k,iblock),&
1690 ' ndouble',ntermd_2(i,j,k,iblock)
1692 write (iout,*) 'Single angles:'
1693 do l=1,ntermd_1(i,j,k,iblock)
1694 write (iout,'(i5,2f10.5,5x,2f10.5,5x,2f10.5)') l,&
1695 v1c(1,l,i,j,k,iblock),v1s(1,l,i,j,k,iblock),&
1696 v1c(2,l,i,j,k,iblock),v1s(2,l,i,j,k,iblock),&
1697 v1s(1,l,-i,-j,-k,iblock),v1s(2,l,-i,-j,-k,iblock)
1700 write (iout,*) 'Pairs of angles:'
1701 write (iout,'(3x,20i10)') (l,l=1,ntermd_2(i,j,k,iblock))
1702 do l=1,ntermd_2(i,j,k,iblock)
1703 write (iout,'(i5,20f10.5)') &
1704 l,(v2c(l,m,i,j,k,iblock),m=1,ntermd_2(i,j,k,iblock))
1707 write (iout,'(3x,20i10)') (l,l=1,ntermd_2(i,j,k,iblock))
1708 do l=1,ntermd_2(i,j,k,iblock)
1709 write (iout,'(i5,20f10.5)') &
1710 l,(v2s(l,m,i,j,k,iblock),m=1,ntermd_2(i,j,k,iblock)),&
1711 (v2s(l,m,-i,-j,-k,iblock),m=1,ntermd_2(i,j,k,iblock))
1720 allocate(itortyp_nucl(ntyp1_molec(2))) !(-ntyp1:ntyp1)
1721 read (itorp_nucl,*,end=113,err=113) ntortyp_nucl
1722 ! print *,"ntortyp_nucl",ntortyp_nucl,ntyp_molec(2)
1723 !el from energy module---------
1724 allocate(nterm_nucl(ntortyp_nucl,ntortyp_nucl)) !(-maxtor:maxtor,-maxtor:maxtor,2)
1725 allocate(nlor_nucl(ntortyp_nucl,ntortyp_nucl)) !(-maxtor:maxtor,-maxtor:maxtor,2)
1727 allocate(vlor1_nucl(maxlor,ntortyp_nucl,ntortyp_nucl)) !(maxlor,-maxtor:maxtor,-maxtor:maxtor)
1728 allocate(vlor2_nucl(maxlor,ntortyp_nucl,ntortyp_nucl))
1729 allocate(vlor3_nucl(maxlor,ntortyp_nucl,ntortyp_nucl)) !(maxlor,maxtor,maxtor)
1730 allocate(v0_nucl(ntortyp_nucl,ntortyp_nucl)) !(-maxtor:maxtor,-maxtor:maxtor,2)
1732 allocate(v1_nucl(maxterm,ntortyp_nucl,ntortyp_nucl))
1733 allocate(v2_nucl(maxterm,ntortyp_nucl,ntortyp_nucl)) !(maxterm,-maxtor:maxtor,-maxtor:maxtor,2)
1734 !el---------------------------
1737 !el--------------------
1738 read (itorp_nucl,*,end=113,err=113) &
1739 (itortyp_nucl(i),i=1,ntyp_molec(2))
1740 ! print *,itortyp_nucl(:)
1741 !c write (iout,*) 'ntortyp',ntortyp
1744 read (itorp_nucl,*,end=113,err=113) nterm_nucl(i,j),nlor_nucl(i,j)
1745 ! print *,nterm_nucl(i,j),nlor_nucl(i,j)
1748 do k=1,nterm_nucl(i,j)
1749 read (itorp_nucl,*,end=113,err=113) kk,v1_nucl(k,i,j),v2_nucl(k,i,j)
1750 v0ij=v0ij+si*v1_nucl(k,i,j)
1753 do k=1,nlor_nucl(i,j)
1754 read (itorp,*,end=113,err=113) kk,vlor1_nucl(k,i,j),&
1755 vlor2_nucl(k,i,j),vlor3_nucl(k,i,j)
1756 v0ij=v0ij+vlor1_nucl(k,i,j)/(1+vlor3_nucl(k,i,j)**2)
1762 ! Read of Side-chain backbone correlation parameters
1763 ! Modified 11 May 2012 by Adasko
1766 read (isccor,*,end=119,err=119) nsccortyp
1768 !el from module energy-------------
1769 allocate(nlor_sccor(nsccortyp,nsccortyp)) !(-ntyp:ntyp,-ntyp:ntyp)
1770 allocate(vlor1sccor(maxterm_sccor,nsccortyp,nsccortyp))
1771 allocate(vlor2sccor(maxterm_sccor,nsccortyp,nsccortyp))
1772 allocate(vlor3sccor(maxterm_sccor,nsccortyp,nsccortyp)) !(maxterm_sccor,20,20)
1773 !-----------------------------------
1775 !el from module energy-------------
1776 allocate(isccortyp(-ntyp:ntyp)) !(-ntyp:ntyp)
1778 read (isccor,*,end=119,err=119) (isccortyp(i),i=1,ntyp)
1780 isccortyp(i)=-isccortyp(-i)
1782 iscprol=isccortyp(20)
1783 ! write (iout,*) 'ntortyp',ntortyp
1785 !c maxinter is maximum interaction sites
1786 !el from module energy---------
1787 allocate(nterm_sccor(-nsccortyp:nsccortyp,-nsccortyp:nsccortyp)) !(-ntyp:ntyp,-ntyp:ntyp)
1788 allocate(v1sccor(maxterm_sccor,maxinter,-nsccortyp:nsccortyp,&
1789 -nsccortyp:nsccortyp))
1790 allocate(v2sccor(maxterm_sccor,maxinter,-nsccortyp:nsccortyp,&
1791 -nsccortyp:nsccortyp)) !(maxterm_sccor,3,-ntyp:ntyp,-ntyp:ntyp)
1792 allocate(v0sccor(maxinter,-nsccortyp:nsccortyp,&
1793 -nsccortyp:nsccortyp)) !(maxterm_sccor,-ntyp:ntyp,-ntyp:ntyp)
1794 !-----------------------------------
1798 read (isccor,*,end=119,err=119) &
1799 nterm_sccor(i,j),nlor_sccor(i,j)
1805 nterm_sccor(-i,j)=nterm_sccor(i,j)
1806 nterm_sccor(-i,-j)=nterm_sccor(i,j)
1807 nterm_sccor(i,-j)=nterm_sccor(i,j)
1808 do k=1,nterm_sccor(i,j)
1809 read (isccor,*,end=119,err=119) kk,v1sccor(k,l,i,j),&
1811 if (j.eq.iscprol) then
1812 if (i.eq.isccortyp(10)) then
1813 v1sccor(k,l,i,-j)=v1sccor(k,l,i,j)
1814 v2sccor(k,l,i,-j)=-v2sccor(k,l,i,j)
1816 v1sccor(k,l,i,-j)=v1sccor(k,l,i,j)*0.5d0 &
1817 +v2sccor(k,l,i,j)*dsqrt(0.75d0)
1818 v2sccor(k,l,i,-j)=-v2sccor(k,l,i,j)*0.5d0 &
1819 +v1sccor(k,l,i,j)*dsqrt(0.75d0)
1820 v1sccor(k,l,-i,-j)=v1sccor(k,l,i,j)
1821 v2sccor(k,l,-i,-j)=-v2sccor(k,l,i,j)
1822 v1sccor(k,l,-i,j)=v1sccor(k,l,i,-j)
1823 v2sccor(k,l,-i,j)=-v2sccor(k,l,i,-j)
1826 if (i.eq.isccortyp(10)) then
1827 v1sccor(k,l,i,-j)=v1sccor(k,l,i,j)
1828 v2sccor(k,l,i,-j)=-v2sccor(k,l,i,j)
1830 if (j.eq.isccortyp(10)) then
1831 v1sccor(k,l,-i,j)=v1sccor(k,l,i,j)
1832 v2sccor(k,l,-i,j)=-v2sccor(k,l,i,j)
1834 v1sccor(k,l,i,-j)=-v1sccor(k,l,i,j)
1835 v2sccor(k,l,i,-j)=-v2sccor(k,l,i,j)
1836 v1sccor(k,l,-i,-j)=v1sccor(k,l,i,j)
1837 v2sccor(k,l,-i,-j)=-v2sccor(k,l,i,j)
1838 v1sccor(k,l,-i,j)=v1sccor(k,l,i,-j)
1839 v2sccor(k,l,-i,j)=-v2sccor(k,l,i,-j)
1843 v0ijsccor=v0ijsccor+si*v1sccor(k,l,i,j)
1844 v0ijsccor1=v0ijsccor+si*v1sccor(k,l,-i,j)
1845 v0ijsccor2=v0ijsccor+si*v1sccor(k,l,i,-j)
1846 v0ijsccor3=v0ijsccor+si*v1sccor(k,l,-i,-j)
1849 do k=1,nlor_sccor(i,j)
1850 read (isccor,*,end=119,err=119) kk,vlor1sccor(k,i,j),&
1851 vlor2sccor(k,i,j),vlor3sccor(k,i,j)
1852 v0ijsccor=v0ijsccor+vlor1sccor(k,i,j)/ &
1853 (1+vlor3sccor(k,i,j)**2)
1855 v0sccor(l,i,j)=v0ijsccor
1856 v0sccor(l,-i,j)=v0ijsccor1
1857 v0sccor(l,i,-j)=v0ijsccor2
1858 v0sccor(l,-i,-j)=v0ijsccor3
1864 !el from module energy-------------
1865 allocate(isccortyp(ntyp)) !(-ntyp:ntyp)
1867 read (isccor,*,end=119,err=119) (isccortyp(i),i=1,ntyp)
1868 ! write (iout,*) 'ntortyp',ntortyp
1870 !c maxinter is maximum interaction sites
1871 !el from module energy---------
1872 allocate(nterm_sccor(nsccortyp,nsccortyp)) !(-ntyp:ntyp,-ntyp:ntyp)
1873 allocate(v1sccor(maxterm_sccor,maxinter,nsccortyp,nsccortyp))
1874 allocate(v2sccor(maxterm_sccor,maxinter,nsccortyp,nsccortyp)) !(maxterm_sccor,3,-ntyp:ntyp,-ntyp:ntyp)
1875 allocate(v0sccor(maxinter,nsccortyp,nsccortyp)) !???(maxterm_sccor,-ntyp:ntyp,-ntyp:ntyp)
1876 !-----------------------------------
1880 read (isccor,*,end=119,err=119) &
1881 nterm_sccor(i,j),nlor_sccor(i,j)
1885 do k=1,nterm_sccor(i,j)
1886 read (isccor,*,end=119,err=119) kk,v1sccor(k,l,i,j),&
1888 v0ijsccor=v0ijsccor+si*v1sccor(k,l,i,j)
1891 do k=1,nlor_sccor(i,j)
1892 read (isccor,*,end=119,err=119) kk,vlor1sccor(k,i,j),&
1893 vlor2sccor(k,i,j),vlor3sccor(k,i,j)
1894 v0ijsccor=v0ijsccor+vlor1sccor(k,i,j)/ &
1895 (1+vlor3sccor(k,i,j)**2)
1897 v0sccor(l,i,j)=v0ijsccor !el ,iblock
1906 write (iout,'(/a/)') 'Torsional constants:'
1909 write (iout,*) 'ityp',i,' jtyp',j
1910 write (iout,*) 'Fourier constants'
1911 do k=1,nterm_sccor(i,j)
1912 write (iout,'(2(1pe15.5))') v1sccor(k,l,i,j),v2sccor(k,l,i,j)
1914 write (iout,*) 'Lorenz constants'
1915 do k=1,nlor_sccor(i,j)
1916 write (iout,'(3(1pe15.5))') &
1917 vlor1sccor(k,i,j),vlor2sccor(k,i,j),vlor3sccor(k,i,j)
1924 ! 9/18/99 (AL) Read coefficients of the Fourier expansion of the local
1925 ! interaction energy of the Gly, Ala, and Pro prototypes.
1930 write (iout,*) "Coefficients of the cumulants"
1932 read (ifourier,*) nloctyp
1933 !write(iout,*) "nloctyp",nloctyp
1934 !el from module energy-------
1935 allocate(b1(2,-nloctyp-1:nloctyp+1)) !(2,-maxtor:maxtor)
1936 allocate(b2(2,-nloctyp-1:nloctyp+1)) !(2,-maxtor:maxtor)
1937 allocate(b1tilde(2,-nloctyp+1:nloctyp+1)) !(2,-maxtor:maxtor)
1938 allocate(cc(2,2,-nloctyp-1:nloctyp+1))
1939 allocate(dd(2,2,-nloctyp-1:nloctyp+1))
1940 allocate(ee(2,2,-nloctyp-1:nloctyp+1))
1941 allocate(ctilde(2,2,-nloctyp-1:nloctyp+1))
1942 allocate(dtilde(2,2,-nloctyp-1:nloctyp+1)) !(2,2,-maxtor:maxtor)
1946 !--------------------------------
1949 read (ifourier,*,end=115,err=115)
1950 read (ifourier,*,end=115,err=115) (buse(ii),ii=1,13)
1952 write (iout,*) 'Type',i
1953 write (iout,'(a,i2,a,f10.5)') ('buse(',ii,')=',buse(ii),ii=1,13)
1961 B1tilde(1,i) = buse(3)
1962 B1tilde(2,i) =-buse(5)
1963 B1tilde(1,-i) =-buse(3)
1964 B1tilde(2,-i) =buse(5)
1965 ! buse1tilde(1,i)=0.0d0
1966 ! buse1tilde(2,i)=0.0d0
1986 Ctilde(1,1,i)=buse(7)
1987 Ctilde(1,2,i)=buse(9)
1988 Ctilde(2,1,i)=-buse(9)
1989 Ctilde(2,2,i)=buse(7)
1990 Ctilde(1,1,-i)=buse(7)
1991 Ctilde(1,2,-i)=-buse(9)
1992 Ctilde(2,1,-i)=buse(9)
1993 Ctilde(2,2,-i)=buse(7)
1995 ! Ctilde(1,1,i)=0.0d0
1996 ! Ctilde(1,2,i)=0.0d0
1997 ! Ctilde(2,1,i)=0.0d0
1998 ! Ctilde(2,2,i)=0.0d0
2011 Dtilde(1,1,i)=buse(6)
2012 Dtilde(1,2,i)=buse(8)
2013 Dtilde(2,1,i)=-buse(8)
2014 Dtilde(2,2,i)=buse(6)
2015 Dtilde(1,1,-i)=buse(6)
2016 Dtilde(1,2,-i)=-buse(8)
2017 Dtilde(2,1,-i)=buse(8)
2018 Dtilde(2,2,-i)=buse(6)
2020 ! Dtilde(1,1,i)=0.0d0
2021 ! Dtilde(1,2,i)=0.0d0
2022 ! Dtilde(2,1,i)=0.0d0
2023 ! Dtilde(2,2,i)=0.0d0
2024 EE(1,1,i)= buse(10)+buse(11)
2025 EE(2,2,i)=-buse(10)+buse(11)
2026 EE(2,1,i)= buse(12)-buse(13)
2027 EE(1,2,i)= buse(12)+buse(13)
2028 EE(1,1,-i)= buse(10)+buse(11)
2029 EE(2,2,-i)=-buse(10)+buse(11)
2030 EE(2,1,-i)=-buse(12)+buse(13)
2031 EE(1,2,-i)=-buse(12)-buse(13)
2037 ! ee(2,1,i)=ee(1,2,i)
2041 write (iout,*) 'Type',i
2043 write(iout,*) B1(1,i),B1(2,i)
2045 write(iout,*) B2(1,i),B2(2,i)
2048 write (iout,'(2f10.5)') CC(j,1,i),CC(j,2,i)
2052 write (iout,'(2f10.5)') DD(j,1,i),DD(j,2,i)
2056 write (iout,'(2f10.5)') EE(j,1,i),EE(j,2,i)
2061 ! Read electrostatic-interaction parameters
2066 write (iout,'(/a)') 'Electrostatic interaction constants:'
2067 write (iout,'(1x,a,1x,a,10x,a,11x,a,11x,a,11x,a)') &
2068 'IT','JT','APP','BPP','AEL6','AEL3'
2070 read (ielep,*,end=116,err=116) ((epp(i,j),j=1,2),i=1,2)
2071 read (ielep,*,end=116,err=116) ((rpp(i,j),j=1,2),i=1,2)
2072 read (ielep,*,end=116,err=116) ((elpp6(i,j),j=1,2),i=1,2)
2073 read (ielep,*,end=116,err=116) ((elpp3(i,j),j=1,2),i=1,2)
2078 app (i,j)=epp(i,j)*rri*rri
2079 bpp (i,j)=-2.0D0*epp(i,j)*rri
2080 ael6(i,j)=elpp6(i,j)*4.2D0**6
2081 ael3(i,j)=elpp3(i,j)*4.2D0**3
2083 if (lprint) write(iout,'(2i3,4(1pe15.4))')i,j,app(i,j),bpp(i,j),&
2089 ! Read side-chain interaction parameters.
2091 !el from module energy - COMMON.INTERACT-------
2092 allocate(eps(ntyp,ntyp),sigmaii(ntyp,ntyp),rs0(ntyp,ntyp)) !(ntyp,ntyp)
2093 allocate(augm(ntyp,ntyp)) !(ntyp,ntyp)
2094 allocate(eps_scp(ntyp,2),rscp(ntyp,2)) !(ntyp,2)
2096 allocate(sigma0(ntyp),rr0(ntyp),sigii(ntyp)) !(ntyp)
2097 allocate(chip(ntyp1),alp(ntyp1)) !(ntyp)
2098 allocate(epslip(ntyp,ntyp))
2106 !--------------------------------
2108 read (isidep,*,end=117,err=117) ipot,expon
2109 if (ipot.lt.1 .or. ipot.gt.5) then
2110 write (iout,'(2a)') 'Error while reading SC interaction',&
2111 'potential file - unknown potential type.'
2113 call MPI_Finalize(Ierror)
2119 write(iout,'(/3a,2i3)') 'Potential is ',potname(ipot),&
2120 ', exponents are ',expon,2*expon
2121 ! goto (10,20,30,30,40) ipot
2123 !----------------------- LJ potential ---------------------------------
2125 ! 10 read (isidep,*,end=117,err=117)((eps(i,j),j=i,ntyp),i=1,ntyp),&
2126 read (isidep,*,end=117,err=117)((eps(i,j),j=i,ntyp),i=1,ntyp),&
2127 (sigma0(i),i=1,ntyp)
2129 write (iout,'(/a/)') 'Parameters of the LJ potential:'
2130 write (iout,'(a/)') 'The epsilon array:'
2131 call printmat(ntyp,ntyp,ntyp,iout,restyp,eps)
2132 write (iout,'(/a)') 'One-body parameters:'
2133 write (iout,'(a,4x,a)') 'residue','sigma'
2134 write (iout,'(a3,6x,f10.5)') (restyp(i,1),sigma0(i),i=1,ntyp)
2137 !----------------------- LJK potential --------------------------------
2139 ! 20 read (isidep,*,end=117,err=117)((eps(i,j),j=i,ntyp),i=1,ntyp),&
2140 read (isidep,*,end=117,err=117)((eps(i,j),j=i,ntyp),i=1,ntyp),&
2141 (sigma0(i),i=1,ntyp),(rr0(i),i=1,ntyp)
2143 write (iout,'(/a/)') 'Parameters of the LJK potential:'
2144 write (iout,'(a/)') 'The epsilon array:'
2145 call printmat(ntyp,ntyp,ntyp,iout,restyp,eps)
2146 write (iout,'(/a)') 'One-body parameters:'
2147 write (iout,'(a,4x,2a)') 'residue',' sigma ',' r0 '
2148 write (iout,'(a3,6x,2f10.5)') (restyp(i,1),sigma0(i),rr0(i),&
2152 !---------------------- GB or BP potential -----------------------------
2155 ! print *,"I AM in SCELE",scelemode
2156 if (scelemode.eq.0) then
2158 read (isidep,*,end=117,err=117)(eps(i,j),j=i,ntyp)
2160 read (isidep,*,end=117,err=117)(sigma0(i),i=1,ntyp)
2161 read (isidep,*,end=117,err=117)(sigii(i),i=1,ntyp)
2162 read (isidep,*,end=117,err=117)(chip(i),i=1,ntyp)
2163 read (isidep,*,end=117,err=117)(alp(i),i=1,ntyp)
2165 read (isidep,*,end=117,err=117)(epslip(i,j),j=i,ntyp)
2168 ! For the GB potential convert sigma'**2 into chi'
2171 chip(i)=(chip(i)-1.0D0)/(chip(i)+1.0D0)
2175 write (iout,'(/a/)') 'Parameters of the BP potential:'
2176 write (iout,'(a/)') 'The epsilon array:'
2177 call printmat(ntyp,ntyp,ntyp,iout,restyp,eps)
2178 write (iout,'(/a)') 'One-body parameters:'
2179 write (iout,'(a,4x,4a)') 'residue',' sigma ','s||/s_|_^2',&
2181 write (iout,'(a3,6x,4f10.5)') (restyp(i,1),sigma0(i),sigii(i),&
2182 chip(i),alp(i),i=1,ntyp)
2185 ! print *,ntyp,"NTYP"
2186 allocate(icharge(ntyp1))
2187 ! print *,ntyp,icharge(i)
2189 read (isidep,*) (icharge(i),i=1,ntyp)
2190 print *,ntyp,icharge(i)
2191 ! if(.not.allocated(eps)) allocate(eps(-ntyp
2192 !c write (2,*) "icharge",(icharge(i),i=1,ntyp)
2193 allocate(alphapol(ntyp,ntyp),epshead(ntyp,ntyp),sig0head(ntyp,ntyp))
2194 allocate(sigiso1(ntyp,ntyp),rborn(ntyp,ntyp),sigmap1(ntyp,ntyp))
2195 allocate(sigmap2(ntyp,ntyp),sigiso2(ntyp,ntyp))
2196 allocate(chis(ntyp,ntyp),wquad(ntyp,ntyp),chipp(ntyp,ntyp))
2197 allocate(epsintab(ntyp,ntyp))
2198 allocate(dtail(2,ntyp,ntyp))
2199 allocate(alphasur(4,ntyp,ntyp),alphiso(4,ntyp,ntyp))
2200 allocate(wqdip(2,ntyp,ntyp))
2201 allocate(wstate(4,ntyp,ntyp))
2202 allocate(dhead(2,2,ntyp,ntyp))
2203 allocate(nstate(ntyp,ntyp))
2204 if (.not.allocated(sigma)) allocate(sigma(0:ntyp1,0:ntyp1))
2205 if (.not.allocated(chi)) allocate(chi(ntyp1,ntyp1)) !(ntyp,ntyp)
2208 ! write (*,*) "Im in ALAB", i, " ", j
2210 eps(i,j),sigma(i,j),chi(i,j),chi(j,i),chipp(i,j),chipp(j,i), &
2211 (alphasur(k,i,j),k=1,4),sigmap1(i,j),sigmap2(i,j), &
2212 chis(i,j),chis(j,i), &
2213 nstate(i,j),(wstate(k,i,j),k=1,4), &
2214 dhead(1,1,i,j),dhead(1,2,i,j),dhead(2,1,i,j),dhead(2,2,i,j),&
2215 dtail(1,i,j),dtail(2,i,j), &
2216 epshead(i,j),sig0head(i,j), &
2217 rborn(i,j),rborn(j,i),(wqdip(k,i,j),k=1,2),wquad(i,j), &
2218 alphapol(i,j),alphapol(j,i), &
2219 (alphiso(k,i,j),k=1,4),sigiso1(i,j),sigiso2(i,j),epsintab(i,j)
2220 ! print *,eps(i,j),sigma(i,j),"SIGMAP",i,j,sigmap1(i,j),sigmap2(j,i)
2226 sigma(i,j) = sigma(j,i)
2227 sigmap1(i,j)=sigmap1(j,i)
2228 sigmap2(i,j)=sigmap2(j,i)
2229 sigiso1(i,j)=sigiso1(j,i)
2230 sigiso2(i,j)=sigiso2(j,i)
2231 ! print *,"ATU",sigma(j,i),sigma(i,j),i,j
2232 nstate(i,j) = nstate(j,i)
2233 dtail(1,i,j) = dtail(1,j,i)
2234 dtail(2,i,j) = dtail(2,j,i)
2236 alphasur(k,i,j) = alphasur(k,j,i)
2237 wstate(k,i,j) = wstate(k,j,i)
2238 alphiso(k,i,j) = alphiso(k,j,i)
2241 dhead(2,1,i,j) = dhead(1,1,j,i)
2242 dhead(2,2,i,j) = dhead(1,2,j,i)
2243 dhead(1,1,i,j) = dhead(2,1,j,i)
2244 dhead(1,2,i,j) = dhead(2,2,j,i)
2246 epshead(i,j) = epshead(j,i)
2247 sig0head(i,j) = sig0head(j,i)
2250 wqdip(k,i,j) = wqdip(k,j,i)
2253 wquad(i,j) = wquad(j,i)
2254 epsintab(i,j) = epsintab(j,i)
2255 ! if (epsintab(i,j).ne.1.0) print *,"WHAT?",i,j,epsintab(i,j)
2260 !--------------------- GBV potential -----------------------------------
2262 ! 40 read (isidep,*,end=117,err=117)((eps(i,j),j=i,ntyp),i=1,ntyp),&
2263 read (isidep,*,end=117,err=117)((eps(i,j),j=i,ntyp),i=1,ntyp),&
2264 (sigma0(i),i=1,ntyp),(rr0(i),i=1,ntyp),(sigii(i),i=1,ntyp),&
2265 (chip(i),i=1,ntyp),(alp(i),i=1,ntyp)
2267 write (iout,'(/a/)') 'Parameters of the GBV potential:'
2268 write (iout,'(a/)') 'The epsilon array:'
2269 call printmat(ntyp,ntyp,ntyp,iout,restyp,eps)
2270 write (iout,'(/a)') 'One-body parameters:'
2271 write (iout,'(a,4x,5a)') 'residue',' sigma ',' r0 ',&
2272 's||/s_|_^2',' chip ',' alph '
2273 write (iout,'(a3,6x,5f10.5)') (restyp(i,1),sigma0(i),rr0(i),&
2274 sigii(i),chip(i),alp(i),i=1,ntyp)
2277 write(iout,*)"Wrong ipot"
2283 !-----------------------------------------------------------------------
2284 ! Calculate the "working" parameters of SC interactions.
2286 !el from module energy - COMMON.INTERACT-------
2287 allocate(aa_aq(ntyp1,ntyp1),bb_aq(ntyp1,ntyp1))
2288 if (.not.allocated(chi)) allocate(chi(ntyp1,ntyp1)) !(ntyp,ntyp)
2289 allocate(aa_lip(ntyp1,ntyp1),bb_lip(ntyp1,ntyp1)) !(ntyp,ntyp)
2290 if (.not.allocated(sigma)) allocate(sigma(0:ntyp1,0:ntyp1))
2291 allocate(r0(ntyp1,ntyp1)) !(0:ntyp1,0:ntyp1)
2292 allocate(acavtub(ntyp1),bcavtub(ntyp1),ccavtub(ntyp1),&
2294 allocate(sc_aa_tube_par(ntyp1),sc_bb_tube_par(ntyp1),&
2300 if (scelemode.eq.0) then
2309 sc_aa_tube_par(:)=0.0d0
2310 sc_bb_tube_par(:)=0.0d0
2312 !--------------------------------
2317 epslip(i,j)=epslip(j,i)
2320 if (scelemode.eq.0) then
2323 sigma(i,j)=dsqrt(sigma0(i)**2+sigma0(j)**2)
2324 sigma(j,i)=sigma(i,j)
2325 rs0(i,j)=dwa16*sigma(i,j)
2330 if (lprint) write (iout,'(/a/10x,7a/72(1h-))') &
2331 'Working parameters of the SC interactions:',&
2332 ' a ',' b ',' augm ',' sigma ',' r0 ',&
2337 if (ipot.eq.1 .or. ipot.eq.3 .or. ipot.eq.4) then
2339 ! print *,"SIGMA ZLA?",sigma(i,j)
2347 sigeps=dsign(1.0D0,epsij)
2349 aa_aq(i,j)=epsij*rrij*rrij
2350 print *,"ADASKO",epsij,rrij,expon
2351 bb_aq(i,j)=-sigeps*epsij*rrij
2352 aa_aq(j,i)=aa_aq(i,j)
2353 bb_aq(j,i)=bb_aq(i,j)
2354 epsijlip=epslip(i,j)
2355 sigeps=dsign(1.0D0,epsijlip)
2356 epsijlip=dabs(epsijlip)
2357 aa_lip(i,j)=epsijlip*rrij*rrij
2358 bb_lip(i,j)=-sigeps*epsijlip*rrij
2359 aa_lip(j,i)=aa_lip(i,j)
2360 bb_lip(j,i)=bb_lip(i,j)
2361 !C write(iout,*) aa_lip
2362 if ((ipot.gt.2).and. (scelemode.eq.0)) then
2363 sigt1sq=sigma0(i)**2
2364 sigt2sq=sigma0(j)**2
2367 ratsig1=sigt2sq/sigt1sq
2368 ratsig2=1.0D0/ratsig1
2369 chi(i,j)=(sigii1-1.0D0)/(sigii1+ratsig1)
2370 if (j.gt.i) chi(j,i)=(sigii2-1.0D0)/(sigii2+ratsig2)
2371 rsum_max=dsqrt(sigii1*sigt1sq+sigii2*sigt2sq)
2375 ! if (ipot.eq.1 .or. ipot.eq.3 .or. ipot.eq.4) then
2376 sigmaii(i,j)=rsum_max
2377 sigmaii(j,i)=rsum_max
2379 ! sigmaii(i,j)=r0(i,j)
2380 ! sigmaii(j,i)=r0(i,j)
2382 !d write (iout,*) i,j,r0(i,j),sigma(i,j),rsum_max
2383 if ((ipot.eq.2 .or. ipot.eq.5) .and. r0(i,j).gt.rsum_max) then
2384 r_augm=sigma(i,j)*(rrij-sigma(i,j))/rrij
2385 augm(i,j)=epsij*r_augm**(2*expon)
2386 ! augm(i,j)=0.5D0**(2*expon)*aa(i,j)
2393 write (iout,'(2(a3,2x),3(1pe10.3),5(0pf8.3))') &
2394 restyp(i,1),restyp(j,1),aa_aq(i,j),bb_aq(i,j),augm(i,j),&
2395 sigma(i,j),r0(i,j),chi(i,j),chi(j,i)
2400 allocate(eps_nucl(ntyp_molec(2),ntyp_molec(2)))
2401 allocate(sigma_nucl(ntyp_molec(2),ntyp_molec(2))) !(ntyp_molec(2),ntyp_molec(2))
2402 allocate(elpp6_nucl(ntyp_molec(2),ntyp_molec(2))) !(ntyp_molec(2),ntyp_molec(2))
2403 allocate(elpp3_nucl(ntyp_molec(2),ntyp_molec(2))) !(ntyp,2)
2404 allocate(elpp63_nucl(ntyp_molec(2),ntyp_molec(2))) !(ntyp_molec(2),ntyp_molec(2))
2405 allocate(elpp32_nucl(ntyp_molec(2),ntyp_molec(2))) !(ntyp,2)
2406 allocate(chi_nucl(ntyp_molec(2),ntyp_molec(2)),chip_nucl(ntyp_molec(2),ntyp_molec(2))) !(ntyp_molec(2),ntyp_molec(2))
2407 allocate(ael3_nucl(ntyp_molec(2),ntyp_molec(2))) !(ntyp,2)
2408 allocate(ael6_nucl(ntyp_molec(2),ntyp_molec(2))) !(ntyp,2)
2409 allocate(ael32_nucl(ntyp_molec(2),ntyp_molec(2))) !(ntyp,2)
2410 allocate(ael63_nucl(ntyp_molec(2),ntyp_molec(2))) !(ntyp,2)
2411 allocate(aa_nucl(ntyp_molec(2),ntyp_molec(2))) !(ntyp,2)
2412 allocate(bb_nucl(ntyp_molec(2),ntyp_molec(2))) !(ntyp,2)
2413 allocate(r0_nucl(ntyp_molec(2),ntyp_molec(2))) !(ntyp,2)
2414 allocate(sigmaii_nucl(ntyp_molec(2),ntyp_molec(2))) !(ntyp_molec(2),ntyp_molec(2))
2415 allocate(eps_scp_nucl(ntyp_molec(2)),rscp_nucl(ntyp_molec(2))) !(ntyp,2)
2424 read (isidep_nucl,*) ipot_nucl
2425 ! print *,"TU?!",ipot_nucl
2426 if (ipot_nucl.eq.1) then
2427 do i=1,ntyp_molec(2)
2428 do j=i,ntyp_molec(2)
2429 read (isidep_nucl,*) eps_nucl(i,j),sigma_nucl(i,j),elpp6_nucl(i,j),&
2430 elpp3_nucl(i,j), elpp63_nucl(i,j),elpp32_nucl(i,j)
2434 do i=1,ntyp_molec(2)
2435 do j=i,ntyp_molec(2)
2436 read (isidep_nucl,*) eps_nucl(i,j),sigma_nucl(i,j),chi_nucl(i,j),&
2437 chi_nucl(j,i),chip_nucl(i,j),chip_nucl(j,i),&
2438 elpp6_nucl(i,j),elpp3_nucl(i,j),elpp63_nucl(i,j),elpp32_nucl(i,j)
2442 ! rpp(1,1)=2**(1.0/6.0)*5.16158
2443 do i=1,ntyp_molec(2)
2444 do j=i,ntyp_molec(2)
2445 rrij=sigma_nucl(i,j)
2449 epsij=4*eps_nucl(i,j)
2450 sigeps=dsign(1.0D0,epsij)
2452 aa_nucl(i,j)=epsij*rrij*rrij
2453 bb_nucl(i,j)=-sigeps*epsij*rrij
2454 ael3_nucl(i,j)=elpp3_nucl(i,j)*dsqrt(rrij)
2455 ael6_nucl(i,j)=elpp6_nucl(i,j)*rrij
2456 ael63_nucl(i,j)=elpp63_nucl(i,j)*rrij
2457 ael32_nucl(i,j)=elpp32_nucl(i,j)*rrij
2458 sigmaii_nucl(i,j)=sigma_nucl(i,j)/sqrt(1-(chi_nucl(i,j)+chi_nucl(j,i)- &
2459 2*chi_nucl(i,j)*chi_nucl(j,i))/(1-chi_nucl(i,j)*chi_nucl(j,i)))
2462 aa_nucl(i,j)=aa_nucl(j,i)
2463 bb_nucl(i,j)=bb_nucl(j,i)
2464 ael3_nucl(i,j)=ael3_nucl(j,i)
2465 ael6_nucl(i,j)=ael6_nucl(j,i)
2466 ael63_nucl(i,j)=ael63_nucl(j,i)
2467 ael32_nucl(i,j)=ael32_nucl(j,i)
2468 elpp3_nucl(i,j)=elpp3_nucl(j,i)
2469 elpp6_nucl(i,j)=elpp6_nucl(j,i)
2470 elpp63_nucl(i,j)=elpp63_nucl(j,i)
2471 elpp32_nucl(i,j)=elpp32_nucl(j,i)
2472 eps_nucl(i,j)=eps_nucl(j,i)
2473 sigma_nucl(i,j)=sigma_nucl(j,i)
2474 sigmaii_nucl(i,j)=sigmaii_nucl(j,i)
2478 write(iout,*) "tube param"
2479 read(itube,*) epspeptube,sigmapeptube,acavtubpep,bcavtubpep, &
2480 ccavtubpep,dcavtubpep,tubetranenepep
2481 sigmapeptube=sigmapeptube**6
2482 sigeps=dsign(1.0D0,epspeptube)
2483 epspeptube=dabs(epspeptube)
2484 pep_aa_tube=4.0d0*epspeptube*sigmapeptube**2
2485 pep_bb_tube=-sigeps*4.0d0*epspeptube*sigmapeptube
2486 write(iout,*) pep_aa_tube,pep_bb_tube,tubetranenepep
2488 read(itube,*) epssctube,sigmasctube,acavtub(i),bcavtub(i), &
2489 ccavtub(i),dcavtub(i),tubetranene(i)
2490 sigmasctube=sigmasctube**6
2491 sigeps=dsign(1.0D0,epssctube)
2492 epssctube=dabs(epssctube)
2493 sc_aa_tube_par(i)=4.0d0*epssctube*sigmasctube**2
2494 sc_bb_tube_par(i)=-sigeps*4.0d0*epssctube*sigmasctube
2495 write(iout,*) sc_aa_tube_par(i), sc_bb_tube_par(i),tubetranene(i)
2497 !-----------------READING SC BASE POTENTIALS-----------------------------
2498 allocate(eps_scbase(ntyp_molec(1),ntyp_molec(2)))
2499 allocate(sigma_scbase(ntyp_molec(1),ntyp_molec(2)))
2500 allocate(chi_scbase(ntyp_molec(1),ntyp_molec(2),2))
2501 allocate(chipp_scbase(ntyp_molec(1),ntyp_molec(2),2))
2502 allocate(alphasur_scbase(4,ntyp_molec(1),ntyp_molec(2)))
2503 allocate(sigmap1_scbase(ntyp_molec(1),ntyp_molec(2)))
2504 allocate(sigmap2_scbase(ntyp_molec(1),ntyp_molec(2)))
2505 allocate(chis_scbase(ntyp_molec(1),ntyp_molec(2),2))
2506 allocate(dhead_scbasei(ntyp_molec(1),ntyp_molec(2)))
2507 allocate(dhead_scbasej(ntyp_molec(1),ntyp_molec(2)))
2508 allocate(rborn_scbasei(ntyp_molec(1),ntyp_molec(2)))
2509 allocate(rborn_scbasej(ntyp_molec(1),ntyp_molec(2)))
2510 allocate(wdipdip_scbase(3,ntyp_molec(1),ntyp_molec(2)))
2511 allocate(wqdip_scbase(2,ntyp_molec(1),ntyp_molec(2)))
2512 allocate(alphapol_scbase(ntyp_molec(1),ntyp_molec(2)))
2513 allocate(epsintab_scbase(ntyp_molec(1),ntyp_molec(2)))
2516 do i=1,ntyp_molec(1)
2517 do j=1,ntyp_molec(2)-1 ! without U then we will take T for U
2518 write (*,*) "Im in ", i, " ", j
2519 read(isidep_scbase,*) &
2520 eps_scbase(i,j),sigma_scbase(i,j),chi_scbase(i,j,1),&
2521 chi_scbase(i,j,2),chipp_scbase(i,j,1),chipp_scbase(i,j,2)
2522 write(*,*) "eps",eps_scbase(i,j)
2523 read(isidep_scbase,*) &
2524 (alphasur_scbase(k,i,j),k=1,4),sigmap1_scbase(i,j),sigmap2_scbase(i,j), &
2525 chis_scbase(i,j,1),chis_scbase(i,j,2)
2526 read(isidep_scbase,*) &
2527 dhead_scbasei(i,j), &
2528 dhead_scbasej(i,j), &
2529 rborn_scbasei(i,j),rborn_scbasej(i,j)
2530 read(isidep_scbase,*) &
2531 (wdipdip_scbase(k,i,j),k=1,3), &
2532 (wqdip_scbase(k,i,j),k=1,2)
2533 read(isidep_scbase,*) &
2534 alphapol_scbase(i,j), &
2535 epsintab_scbase(i,j)
2538 allocate(aa_scbase(ntyp_molec(1),ntyp_molec(2)))
2539 allocate(bb_scbase(ntyp_molec(1),ntyp_molec(2)))
2541 do i=1,ntyp_molec(1)
2542 do j=1,ntyp_molec(2)-1
2543 epsij=eps_scbase(i,j)
2544 rrij=sigma_scbase(i,j)
2549 sigeps=dsign(1.0D0,epsij)
2551 aa_scbase(i,j)=epsij*rrij*rrij
2552 bb_scbase(i,j)=-sigeps*epsij*rrij
2555 !-----------------READING PEP BASE POTENTIALS-------------------
2556 allocate(eps_pepbase(ntyp_molec(2)))
2557 allocate(sigma_pepbase(ntyp_molec(2)))
2558 allocate(chi_pepbase(ntyp_molec(2),2))
2559 allocate(chipp_pepbase(ntyp_molec(2),2))
2560 allocate(alphasur_pepbase(4,ntyp_molec(2)))
2561 allocate(sigmap1_pepbase(ntyp_molec(2)))
2562 allocate(sigmap2_pepbase(ntyp_molec(2)))
2563 allocate(chis_pepbase(ntyp_molec(2),2))
2564 allocate(wdipdip_pepbase(3,ntyp_molec(2)))
2567 do j=1,ntyp_molec(2)-1 ! without U then we will take T for U
2568 write (*,*) "Im in ", i, " ", j
2569 read(isidep_pepbase,*) &
2570 eps_pepbase(j),sigma_pepbase(j),chi_pepbase(j,1),&
2571 chi_pepbase(j,2),chipp_pepbase(j,1),chipp_pepbase(j,2)
2572 write(*,*) "eps",eps_pepbase(j)
2573 read(isidep_pepbase,*) &
2574 (alphasur_pepbase(k,j),k=1,4),sigmap1_pepbase(j),sigmap2_pepbase(j), &
2575 chis_pepbase(j,1),chis_pepbase(j,2)
2576 read(isidep_pepbase,*) &
2577 (wdipdip_pepbase(k,j),k=1,3)
2579 allocate(aa_pepbase(ntyp_molec(2)))
2580 allocate(bb_pepbase(ntyp_molec(2)))
2582 do j=1,ntyp_molec(2)-1
2583 epsij=eps_pepbase(j)
2584 rrij=sigma_pepbase(j)
2589 sigeps=dsign(1.0D0,epsij)
2591 aa_pepbase(j)=epsij*rrij*rrij
2592 bb_pepbase(j)=-sigeps*epsij*rrij
2594 !--------------READING SC PHOSPHATE-------------------------------------
2595 allocate(eps_scpho(ntyp_molec(1)))
2596 allocate(sigma_scpho(ntyp_molec(1)))
2597 allocate(chi_scpho(ntyp_molec(1),2))
2598 allocate(chipp_scpho(ntyp_molec(1),2))
2599 allocate(alphasur_scpho(4,ntyp_molec(1)))
2600 allocate(sigmap1_scpho(ntyp_molec(1)))
2601 allocate(sigmap2_scpho(ntyp_molec(1)))
2602 allocate(chis_scpho(ntyp_molec(1),2))
2603 allocate(wqq_scpho(ntyp_molec(1)))
2604 allocate(wqdip_scpho(2,ntyp_molec(1)))
2605 allocate(alphapol_scpho(ntyp_molec(1)))
2606 allocate(epsintab_scpho(ntyp_molec(1)))
2607 allocate(dhead_scphoi(ntyp_molec(1)))
2608 allocate(rborn_scphoi(ntyp_molec(1)))
2609 allocate(rborn_scphoj(ntyp_molec(1)))
2610 allocate(alphi_scpho(ntyp_molec(1)))
2614 do j=1,ntyp_molec(1) ! without U then we will take T for U
2615 write (*,*) "Im in scpho ", i, " ", j
2616 read(isidep_scpho,*) &
2617 eps_scpho(j),sigma_scpho(j),chi_scpho(j,1),&
2618 chi_scpho(j,2),chipp_scpho(j,1),chipp_scpho(j,2)
2619 write(*,*) "eps",eps_scpho(j)
2620 read(isidep_scpho,*) &
2621 (alphasur_scpho(k,j),k=1,4),sigmap1_scpho(j),sigmap2_scpho(j), &
2622 chis_scpho(j,1),chis_scpho(j,2)
2623 read(isidep_scpho,*) &
2624 (wqdip_scpho(k,j),k=1,2),wqq_scpho(j),dhead_scphoi(j)
2625 read(isidep_scpho,*) &
2626 epsintab_scpho(j),alphapol_scpho(j),rborn_scphoi(j),rborn_scphoj(j), &
2630 allocate(aa_scpho(ntyp_molec(1)))
2631 allocate(bb_scpho(ntyp_molec(1)))
2633 do j=1,ntyp_molec(1)
2640 sigeps=dsign(1.0D0,epsij)
2642 aa_scpho(j)=epsij*rrij*rrij
2643 bb_scpho(j)=-sigeps*epsij*rrij
2647 read(isidep_peppho,*) &
2648 eps_peppho,sigma_peppho
2649 read(isidep_peppho,*) &
2650 (alphasur_peppho(k),k=1,4),sigmap1_peppho,sigmap2_peppho
2651 read(isidep_peppho,*) &
2652 (wqdip_peppho(k),k=1,2)
2660 sigeps=dsign(1.0D0,epsij)
2662 aa_peppho=epsij*rrij*rrij
2663 bb_peppho=-sigeps*epsij*rrij
2666 allocate(aad(ntyp,2),bad(ntyp,2)) !(ntyp,2)
2671 ! Define the SC-p interaction constants (hard-coded; old style)
2674 ! "Soft" SC-p repulsion (causes helices to be too flat, but facilitates
2676 ! aad(i,1)=0.3D0*4.0D0**12
2677 ! Following line for constants currently implemented
2678 ! "Hard" SC-p repulsion (gives correct turn spacing in helices)
2679 aad(i,1)=1.5D0*4.0D0**12
2680 ! aad(i,1)=0.17D0*5.6D0**12
2682 ! "Soft" SC-p repulsion
2684 ! Following line for constants currently implemented
2685 ! aad(i,1)=0.3D0*4.0D0**6
2686 ! "Hard" SC-p repulsion
2687 bad(i,1)=3.0D0*4.0D0**6
2688 ! bad(i,1)=-2.0D0*0.17D0*5.6D0**6
2697 ! 8/9/01 Read the SC-p interaction constants from file
2700 read (iscpp,*,end=118,err=118) (eps_scp(i,j),rscp(i,j),j=1,2)
2703 aad(i,1)=dabs(eps_scp(i,1))*rscp(i,1)**12
2704 aad(i,2)=dabs(eps_scp(i,2))*rscp(i,2)**12
2705 bad(i,1)=-2*eps_scp(i,1)*rscp(i,1)**6
2706 bad(i,2)=-2*eps_scp(i,2)*rscp(i,2)**6
2710 write (iout,*) "Parameters of SC-p interactions:"
2712 write (iout,'(4f8.3,4e12.4)') eps_scp(i,1),rscp(i,1),&
2713 eps_scp(i,2),rscp(i,2),aad(i,1),bad(i,1),aad(i,2),bad(i,2)
2718 allocate(aad_nucl(ntyp_molec(2)),bad_nucl(ntyp_molec(2))) !(ntyp,2)
2720 do i=1,ntyp_molec(2)
2721 read (iscpp_nucl,*,end=118,err=118) eps_scp_nucl(i),rscp_nucl(i)
2723 do i=1,ntyp_molec(2)
2724 aad_nucl(i)=dabs(eps_scp_nucl(i))*rscp_nucl(i)**12
2725 bad_nucl(i)=-2*eps_scp_nucl(i)*rscp_nucl(i)**6
2727 r0pp=1.12246204830937298142*5.16158
2733 ! Define the constants of the disulfide bridge
2737 ! Old arbitrary potential - commented out.
2742 ! Constants of the disulfide-bond potential determined based on the RHF/6-31G**
2743 ! energy surface of diethyl disulfide.
2744 ! A. Liwo and U. Kozlowska, 11/24/03
2761 write (iout,'(/a)') "Disulfide bridge parameters:"
2762 write (iout,'(a,f10.2)') 'S-S bridge energy: ',ebr
2763 write (iout,'(2(a,f10.2))') 'd0cm:',d0cm,' akcm:',akcm
2764 write (iout,'(2(a,f10.2))') 'akth:',akth,' akct:',akct
2765 write (iout,'(3(a,f10.2))') 'v1ss:',v1ss,' v2ss:',v2ss,&
2769 111 write (iout,*) "Error reading bending energy parameters."
2771 112 write (iout,*) "Error reading rotamer energy parameters."
2773 113 write (iout,*) "Error reading torsional energy parameters."
2775 114 write (iout,*) "Error reading double torsional energy parameters."
2777 115 write (iout,*) &
2778 "Error reading cumulant (multibody energy) parameters."
2780 116 write (iout,*) "Error reading electrostatic energy parameters."
2782 117 write (iout,*) "Error reading side chain interaction parameters."
2784 118 write (iout,*) "Error reading SCp interaction parameters."
2786 119 write (iout,*) "Error reading SCCOR parameters"
2789 call MPI_Finalize(Ierror)
2793 end subroutine parmread
2795 !-----------------------------------------------------------------------------
2797 !-----------------------------------------------------------------------------
2798 subroutine printmat(ldim,m,n,iout,key,a)
2801 character(len=3),dimension(n) :: key
2802 real(kind=8),dimension(ldim,n) :: a
2804 integer :: i,j,k,m,iout,nlim
2808 write (iout,1000) (key(k),k=i,nlim)
2810 1000 format (/5x,8(6x,a3))
2811 1020 format (/80(1h-)/)
2813 write (iout,1010) key(j),(a(j,k),k=i,nlim)
2816 1010 format (a3,2x,8(f9.4))
2818 end subroutine printmat
2819 !-----------------------------------------------------------------------------
2821 !-----------------------------------------------------------------------------
2823 ! Read the PDB file and convert the peptide geometry into virtual-chain
2826 use energy_data, only: itype,istype
2830 use control, only: rescode,sugarcode
2831 ! implicit real*8 (a-h,o-z)
2832 ! include 'DIMENSIONS'
2833 ! include 'COMMON.LOCAL'
2834 ! include 'COMMON.VAR'
2835 ! include 'COMMON.CHAIN'
2836 ! include 'COMMON.INTERACT'
2837 ! include 'COMMON.IOUNITS'
2838 ! include 'COMMON.GEO'
2839 ! include 'COMMON.NAMES'
2840 ! include 'COMMON.CONTROL'
2841 ! include 'COMMON.DISTFIT'
2842 ! include 'COMMON.SETUP'
2843 integer :: i,j,ibeg,ishift1,ires,iii,ires_old,ishift,k!,ity!,&
2845 logical :: lprn=.true.,fail
2846 real(kind=8),dimension(3) :: e1,e2,e3
2847 real(kind=8) :: dcj,efree_temp
2848 character(len=3) :: seq,res
2849 character(len=5) :: atom
2850 character(len=80) :: card
2851 real(kind=8),dimension(3,20) :: sccor
2852 integer :: kkk,lll,icha,kupa,molecule,counter,seqalingbegin !rescode,
2853 integer :: isugar,molecprev,firstion
2854 character*1 :: sugar
2856 real(kind=8),dimension(3) :: ccc
2858 integer,dimension(2,maxres/3) :: hfrag_alloc
2859 integer,dimension(4,maxres/3) :: bfrag_alloc
2860 real(kind=8),dimension(3,maxres2+2,maxperm) :: cref_alloc !(3,maxres2+2,maxperm)
2861 real(kind=8),dimension(:,:), allocatable :: c_temporary
2862 integer,dimension(:,:) , allocatable :: itype_temporary
2863 integer,dimension(:),allocatable :: istype_temp
2870 ! write (2,*) "UNRES_PDB",unres_pdb
2890 !-----------------------------
2891 allocate(hfrag(2,maxres/3)) !(2,maxres/3)
2892 allocate(bfrag(4,maxres/3)) !(4,maxres/3)
2893 if(.not. allocated(istype)) allocate(istype(maxres))
2895 read (ipdbin,'(a80)',end=10) card
2896 ! write (iout,'(a)') card
2897 if (card(:5).eq.'HELIX') then
2900 read(card(22:25),*) hfrag(1,nhfrag)
2901 read(card(34:37),*) hfrag(2,nhfrag)
2903 if (card(:5).eq.'SHEET') then
2906 read(card(24:26),*) bfrag(1,nbfrag)
2907 read(card(35:37),*) bfrag(2,nbfrag)
2908 !rc----------------------------------------
2909 !rc to be corrected !!!
2910 bfrag(3,nbfrag)=bfrag(1,nbfrag)
2911 bfrag(4,nbfrag)=bfrag(2,nbfrag)
2912 !rc----------------------------------------
2914 if (card(:3).eq.'END') then
2916 else if (card(:3).eq.'TER') then
2921 itype(ires_old,molecule)=ntyp1_molec(molecule)
2922 itype(ires_old-1,molecule)=ntyp1_molec(molecule)
2923 nres_molec(molecule)=nres_molec(molecule)+2
2925 ! write (iout,*) "Chain ended",ires,ishift,ires_old
2928 dc(j,ires)=sccor(j,iii)
2931 call sccenter(ires,iii,sccor)
2937 if (index(card,"FREE ENERGY").gt.0) read(card(35:),*) efree_temp
2938 ! Fish out the ATOM cards.
2939 ! write(iout,*) 'card',card(1:20)
2940 if (index(card(1:4),'ATOM').gt.0) then
2941 read (card(12:16),*) atom
2942 ! write (iout,*) "! ",atom," !",ires
2943 ! if (atom.eq.'CA' .or. atom.eq.'CH3') then
2944 read (card(23:26),*) ires
2945 read (card(18:20),'(a3)') res
2946 ! write (iout,*) "ires",ires,ires-ishift+ishift1,
2947 ! & " ires_old",ires_old
2948 ! write (iout,*) "ishift",ishift," ishift1",ishift1
2949 ! write (iout,*) "IRES",ires-ishift+ishift1,ires_old
2950 if (ires-ishift+ishift1.ne.ires_old) then
2951 ! Calculate the CM of the preceding residue.
2952 ! if (ibeg.eq.0) call sccenter(ires,iii,sccor)
2954 ! write (iout,*) "Calculating sidechain center iii",iii
2957 dc(j,ires+ishift1-ishift-1)=sccor(j,iii)
2960 call sccenter(ires_old,iii,sccor)
2964 ! Start new residue.
2965 if (res.eq.'Cl-' .or. res.eq.'Na+') then
2968 else if (ibeg.eq.1) then
2969 write (iout,*) "BEG ires",ires
2971 if (res.ne.'GLY' .and. res.ne. 'ACE') then
2974 nres_molec(molecule)=nres_molec(molecule)+1
2976 ires=ires-ishift+ishift1
2978 ! write (iout,*) "ishift",ishift," ires",ires,&
2979 ! " ires_old",ires_old
2981 else if (ibeg.eq.2) then
2983 ishift=-ires_old+ires-1 !!!!!
2984 ishift1=ishift1-1 !!!!!
2985 ! write (iout,*) "New chain started",ires,ishift,ishift1,"!"
2986 ires=ires-ishift+ishift1
2987 ! print *,ires,ishift,ishift1
2991 ishift=ishift-(ires-ishift+ishift1-ires_old-1)
2992 ires=ires-ishift+ishift1
2995 ! print *,'atom',ires,atom
2996 if (res.eq.'ACE' .or. res.eq.'NHE') then
2999 if (atom.eq.'CA '.or.atom.eq.'N ') then
3001 itype(ires,molecule)=rescode(ires,res,0,molecule)
3003 ! nres_molec(molecule)=nres_molec(molecule)+1
3006 itype(ires,molecule)=rescode(ires,res(2:3),0,molecule)
3007 ! nres_molec(molecule)=nres_molec(molecule)+1
3008 read (card(19:19),'(a1)') sugar
3009 isugar=sugarcode(sugar,ires)
3010 ! if (ibeg.eq.1) then
3014 ! print *,"ires=",ires,istype(ires)
3020 ires=ires-ishift+ishift1
3022 ! write (iout,*) "ires_old",ires_old," ires",ires
3023 if (card(27:27).eq."A" .or. card(27:27).eq."B") then
3026 ! write (2,*) "ires",ires," res ",res!," ity"!,ity
3027 if (atom.eq.'CA' .or. atom.eq.'CH3' .or. &
3028 res.eq.'NHE'.and.atom(:2).eq.'HN') then
3029 read(card(31:54),'(3f8.3)') (c(j,ires),j=1,3)
3030 ! print *,ires,ishift,ishift1
3031 ! write (iout,*) "backbone ",atom
3033 write (iout,'(2i3,2x,a,3f8.3)') &
3034 ires,itype(ires,1),res,(c(j,ires),j=1,3)
3037 nres_molec(molecule)=nres_molec(molecule)+1
3039 sccor(j,iii)=c(j,ires)
3041 else if (.not.unres_pdb .and. (atom.eq."C1'" .or. &
3042 atom.eq."C2'" .or. atom.eq."C3'" &
3043 .or. atom.eq."C4'" .or. atom.eq."O4'")) then
3044 read(card(31:54),'(3f8.3)') (ccc(j),j=1,3)
3045 !c write (2,'(i5,3f10.5)') ires,(ccc(j),j=1,3)
3046 ! print *,ires,ishift,ishift1
3050 ! sccor(j,iii)=c(j,ires)
3053 c(j,ires)=c(j,ires)+ccc(j)/5.0
3055 print *,counter,molecule
3056 if (counter.eq.5) then
3058 nres_molec(molecule)=nres_molec(molecule)+1
3061 ! sccor(j,iii)=c(j,ires)
3065 ! print *, "ATOM",atom(1:3)
3066 else if (atom.eq."C5'") then
3067 read (card(19:19),'(a1)') sugar
3068 isugar=sugarcode(sugar,ires)
3073 ! print *,ires,istype(ires)
3077 ! print *,"nres_molec(molecule)",nres_molec(molecule),ires
3078 read(card(31:54),'(3f8.3)') (c(j,ires),j=1,3)
3079 nres_molec(molecule)=nres_molec(molecule)+1
3080 print *,"nres_molec(molecule)",nres_molec(molecule),ires
3084 read(card(31:54),'(3f8.3)') (sccor(j,iii),j=1,3)
3086 else if ((atom.eq."C1'").and.unres_pdb) then
3088 read(card(31:54),'(3f8.3)') (sccor(j,iii),j=1,3)
3089 ! write (*,*) card(23:27),ires,itype(ires,1)
3090 else if (atom.ne.'O'.and.atom(1:1).ne.'H' .and. &
3091 atom.ne.'N' .and. atom.ne.'C' .and. &
3092 atom(:2).ne.'1H' .and. atom(:2).ne.'2H' .and. &
3093 atom.ne.'OXT' .and. atom(:2).ne.'3H' &
3094 .and. atom.ne.'P '.and. &
3095 atom(1:1).ne.'H' .and. &
3096 atom.ne.'OP1' .and. atom.ne.'OP2 '.and. atom.ne.'OP3'&
3098 ! write (iout,*) "sidechain ",atom
3099 ! write (iout,*) "sidechain ",atom,molecule,ires,atom(3:3)
3100 if ((molecule.ne.2).or.(atom(3:3).ne."'")) then
3101 ! write (iout,*) "sidechain ",atom,molecule,ires,atom(3:3)
3103 read(card(31:54),'(3f8.3)') (sccor(j,iii),j=1,3)
3106 else if ((ions).and.(card(1:6).eq.'HETATM')) then
3107 if (firstion.eq.0) then
3111 dc(j,ires)=sccor(j,iii)
3114 call sccenter(ires,iii,sccor)
3117 read (card(12:16),*) atom
3118 print *,"HETATOM", atom
3119 read (card(18:20),'(a3)') res
3120 if ((atom(1:2).eq.'NA').or.(atom(1:2).eq.'CL').or.&
3121 (atom(1:2).eq.'CA').or.(atom(1:2).eq.'MG') &
3122 .or.(atom(1:2).eq.'K ')) &
3125 if (molecule.ne.5) molecprev=molecule
3127 nres_molec(molecule)=nres_molec(molecule)+1
3128 print *,"HERE",nres_molec(molecule)
3130 itype(ires,molecule)=rescode(ires,res,0,molecule)
3131 read(card(31:54),'(3f8.3)') (c(j,ires),j=1,3)
3135 10 write (iout,'(a,i5)') ' Number of residues found: ',ires
3136 if (ires.eq.0) return
3137 ! Calculate dummy residue coordinates inside the "chain" of a multichain
3140 if (((ires_old.ne.ires).and.(molecule.ne.5)) &
3142 nres_molec(molecule)=nres_molec(molecule)-2
3143 print *,'I have',nres, nres_molec(:)
3145 do k=1,4 ! ions are without dummy
3146 if (nres_molec(k).eq.0) cycle
3148 ! write (iout,*) i,itype(i,1)
3149 ! if (itype(i,1).eq.ntyp1) then
3150 ! write (iout,*) "dummy",i,itype(i,1)
3152 ! c(j,i)=((c(j,i-1)+c(j,i+1))/2+2*c(j,i-1)-c(j,i-2))/2
3153 ! c(j,i)=(c(j,i-1)+c(j,i+1))/2
3157 if (itype(i,k).eq.ntyp1_molec(k)) then
3158 if (itype(i+1,k).eq.ntyp1_molec(k)) then
3159 if (itype(i+2,k).eq.0) then
3160 ! print *,"masz sieczke"
3162 if (itype(i+2,j).ne.0) then
3164 itype(i+1,j)=ntyp1_molec(j)
3165 nres_molec(k)=nres_molec(k)-1
3166 nres_molec(j)=nres_molec(j)+1
3172 ! 16/01/2014 by Adasko: Adding to dummy atoms in the chain
3173 ! first is connected prevous chain (itype(i+1,1).eq.ntyp1)=true
3174 ! second dummy atom is conected to next chain itype(i+1,1).eq.ntyp1=false
3175 ! if (unres_pdb) then
3176 ! 2/15/2013 by Adam: corrected insertion of the last dummy residue
3177 ! print *,i,'tu dochodze'
3178 ! call refsys(i-3,i-2,i-1,e1,e2,e3,fail)
3186 ! c(j,i)=c(j,i-1)-1.9d0*e2(j)
3190 dcj=(c(j,i-2)-c(j,i-3))/2.0
3191 if (dcj.eq.0) dcj=1.23591524223
3196 else !itype(i+1,1).eq.ntyp1
3197 ! if (unres_pdb) then
3198 ! 2/15/2013 by Adam: corrected insertion of the first dummy residue
3199 ! call refsys(i+1,i+2,i+3,e1,e2,e3,fail)
3206 c(j,i)=c(j,i+1)-1.9d0*e2(j)
3210 dcj=(c(j,i+3)-c(j,i+2))/2.0
3211 if (dcj.eq.0) dcj=1.23591524223
3216 endif !itype(i+1,1).eq.ntyp1
3217 endif !itype.eq.ntyp1
3221 ! Calculate the CM of the last side chain.
3225 dc(j,ires)=sccor(j,iii)
3228 call sccenter(ires,iii,sccor)
3234 ! print *,"molecule",molecule
3235 if ((itype(nres,1).ne.10)) then
3237 if (molecule.eq.5) molecule=molecprev
3238 itype(nres,molecule)=ntyp1_molec(molecule)
3239 nres_molec(molecule)=nres_molec(molecule)+1
3240 ! if (unres_pdb) then
3241 ! 2/15/2013 by Adam: corrected insertion of the last dummy residue
3242 ! call refsys(nres-3,nres-2,nres-1,e1,e2,e3,fail)
3249 ! c(j,nres)=c(j,nres-1)-1.9d0*e2(j)
3253 dcj=(c(j,nres-2)-c(j,nres-3))/2.0
3254 c(j,nres)=c(j,nres-1)+dcj
3255 c(j,2*nres)=c(j,nres)
3259 ! print *,'I have',nres, nres_molec(:)
3261 !el kontrola nres w pliku inputowym WHAM-a w porownaniu z wartoscia wczytana z pliku pdb
3263 if (nres.ne.nres0) then
3264 write (iout,*) "Error: wrong parameter value: NRES=",nres,&
3266 stop "Error nres value in WHAM input"
3269 !---------------------------------
3270 !el reallocate tables
3273 ! hfrag_alloc(j,i)=hfrag(j,i)
3276 ! bfrag_alloc(j,i)=bfrag(j,i)
3282 ! allocate(hfrag(2,nres/3)) !(2,maxres/3)
3283 !el allocate(hfrag(2,nhfrag)) !(2,maxres/3)
3284 !el allocate(bfrag(4,nbfrag)) !(4,maxres/3)
3285 ! allocate(bfrag(4,nres/3)) !(4,maxres/3)
3289 ! hfrag(j,i)=hfrag_alloc(j,i)
3294 ! bfrag(j,i)=bfrag_alloc(j,i)
3297 !el end reallocate tables
3298 !---------------------------------
3306 c(j,2*nres)=c(j,nres)
3309 if (itype(1,1).eq.ntyp1) then
3313 ! 2/15/2013 by Adam: corrected insertion of the first dummy residue
3314 call refsys(2,3,4,e1,e2,e3,fail)
3321 c(j,1)=c(j,2)-1.9d0*e2(j)
3325 dcj=(c(j,4)-c(j,3))/2.0
3331 ! First lets assign correct dummy to correct type of chain
3333 if (itype(1,1).eq.ntyp1) then
3334 if (itype(2,1).eq.0) then
3336 if (itype(2,j).ne.0) then
3338 itype(1,j)=ntyp1_molec(j)
3339 nres_molec(1)=nres_molec(1)-1
3340 nres_molec(j)=nres_molec(j)+1
3347 print *,'I have',nres, nres_molec(:)
3349 ! Copy the coordinates to reference coordinates
3355 ! Calculate internal coordinates.
3357 write (iout,'(/a)') &
3358 "Cartesian coordinates of the reference structure"
3359 write (iout,'(a,3(3x,a5),5x,3(3x,a5))') &
3360 "Residue","X(CA)","Y(CA)","Z(CA)","X(SC)","Y(SC)","Z(SC)"
3362 write (iout,'(5(a3,1x),i3,3f8.3,5x,3f8.3)') &
3363 (restyp(itype(ires,j),j),j=1,5),ires,(c(j,ires),j=1,3),&
3364 (c(j,ires+nres),j=1,3)
3367 ! znamy już nres wiec mozna alokowac tablice
3368 ! Calculate internal coordinates.
3369 if(me.eq.king.or..not.out1file)then
3370 write (iout,'(a)') &
3371 "Backbone and SC coordinates as read from the PDB"
3373 write (iout,'(2i3,2x,a,3f8.3,5x,3f8.3)') &
3374 ires,itype(ires,1),restyp(itype(ires,1),1),(c(j,ires),j=1,3),&
3375 (c(j,nres+ires),j=1,3)
3378 ! NOW LETS ROCK! SORTING
3379 allocate(c_temporary(3,2*nres))
3380 allocate(itype_temporary(nres,5))
3381 if (.not.allocated(molnum)) allocate(molnum(nres+1))
3382 if (.not.allocated(istype)) write(iout,*) &
3383 "SOMETHING WRONG WITH ISTYTPE"
3384 allocate(istype_temp(nres))
3385 itype_temporary(:,:)=0
3389 if (itype(i,k).ne.0) then
3391 c_temporary(j,seqalingbegin)=c(j,i)
3392 c_temporary(j,seqalingbegin+nres)=c(j,i+nres)
3395 itype_temporary(seqalingbegin,k)=itype(i,k)
3396 print *,i,k,itype(i,k),itype_temporary(seqalingbegin,k),seqalingbegin
3397 istype_temp(seqalingbegin)=istype(i)
3398 molnum(seqalingbegin)=k
3399 seqalingbegin=seqalingbegin+1
3405 c(j,i)=c_temporary(j,i)
3410 itype(i,k)=itype_temporary(i,k)
3411 istype(i)=istype_temp(i)
3414 ! if (itype(1,1).eq.ntyp1) then
3417 ! if (unres_pdb) then
3418 ! 2/15/2013 by Adam: corrected insertion of the first dummy residue
3419 ! call refsys(2,3,4,e1,e2,e3,fail)
3426 ! c(j,1)=c(j,2)-1.9d0*e2(j)
3430 ! dcj=(c(j,4)-c(j,3))/2.0
3432 ! c(j,nres+1)=c(j,1)
3438 write (iout,'(/a)') &
3439 "Cartesian coordinates of the reference structure after sorting"
3440 write (iout,'(a,3(3x,a5),5x,3(3x,a5))') &
3441 "Residue","X(CA)","Y(CA)","Z(CA)","X(SC)","Y(SC)","Z(SC)"
3443 write (iout,'(5(a3,1x),i3,3f8.3,5x,3f8.3)') &
3444 (restyp(itype(ires,j),j),j=1,5),ires,(c(j,ires),j=1,3),&
3445 (c(j,ires+nres),j=1,3)
3449 ! print *,seqalingbegin,nres
3450 if(.not.allocated(vbld)) then
3451 allocate(vbld(2*nres))
3456 if(.not.allocated(vbld_inv)) then
3457 allocate(vbld_inv(2*nres))
3463 if(.not.allocated(theta)) then
3464 allocate(theta(nres+2))
3468 if(.not.allocated(phi)) allocate(phi(nres+2))
3469 if(.not.allocated(alph)) allocate(alph(nres+2))
3470 if(.not.allocated(omeg)) allocate(omeg(nres+2))
3471 if(.not.allocated(thetaref)) allocate(thetaref(nres+2))
3472 if(.not.allocated(phiref)) allocate(phiref(nres+2))
3473 if(.not.allocated(costtab)) allocate(costtab(nres))
3474 if(.not.allocated(sinttab)) allocate(sinttab(nres))
3475 if(.not.allocated(cost2tab)) allocate(cost2tab(nres))
3476 if(.not.allocated(sint2tab)) allocate(sint2tab(nres))
3477 if(.not.allocated(xxref)) allocate(xxref(nres))
3478 if(.not.allocated(yyref)) allocate(yyref(nres))
3479 if(.not.allocated(zzref)) allocate(zzref(nres)) !(maxres)
3480 if(.not.allocated(dc_norm)) then
3481 ! if(.not.allocated(dc_norm)) allocate(dc_norm(3,0:2*nres+2))
3482 allocate(dc_norm(3,0:2*nres+2))
3486 call int_from_cart(.true.,.false.)
3487 call sc_loc_geom(.false.)
3489 thetaref(i)=theta(i)
3499 dc(j,i)=c(j,i+1)-c(j,i)
3500 dc_norm(j,i)=dc(j,i)*vbld_inv(i+1)
3505 dc(j,i+nres)=c(j,i+nres)-c(j,i)
3506 dc_norm(j,i+nres)=dc(j,i+nres)*vbld_inv(i+nres)
3508 ! write (iout,*) i,(dc(j,i+nres),j=1,3),(dc_norm(j,i+nres),j=1,3),&
3512 ! Copy the coordinates to reference coordinates
3513 ! Splits to single chain if occurs
3517 ! cref(j,i,cou)=c(j,i)
3521 if(.not.allocated(cref)) allocate(cref(3,2*nres+2,maxperm)) !(3,maxres2+2,maxperm)
3522 if(.not.allocated(chain_rep)) allocate(chain_rep(3,2*nres+2,maxsym)) !(3,maxres2+2,maxsym)
3523 if(.not.allocated(tabperm)) allocate(tabperm(maxperm,maxsym)) !(maxperm,maxsym)
3524 !-----------------------------
3528 write (iout,*) "symetr", symetr
3531 !c write (iout,*) "spraw lancuchy",(c(j,i),j=1,3)
3533 if ((itype(i-1,1).eq.ntyp1).and.(i.gt.2)) then
3536 ! write (iout,*) "spraw lancuchy",(c(j,i),j=1,3)
3541 cref(j,i,cou)=c(j,i)
3542 cref(j,i+nres,cou)=c(j,i+nres)
3544 chain_rep(j,lll,kkk)=c(j,i)
3545 chain_rep(j,lll+nres,kkk)=c(j,i+nres)
3549 write (iout,*) chain_length
3550 if (chain_length.eq.0) chain_length=nres
3552 chain_rep(j,chain_length,symetr)=chain_rep(j,chain_length,1)
3553 chain_rep(j,chain_length+nres,symetr) &
3554 =chain_rep(j,chain_length+nres,1)
3557 ! write (iout,*) "spraw lancuchy",chain_length,symetr
3559 ! do kkk=1,chain_length
3560 ! write (iout,*) itype(kkk),(chain_rep(j,kkk,i), j=1,3)
3564 ! makes copy of chains
3565 write (iout,*) "symetr", symetr
3570 if (symetr.gt.1) then
3577 write(iout,*) (tabperm(i,kkk),kkk=1,4)
3583 ! write (iout,*) i,icha
3584 do lll=1,chain_length
3586 if (cou.le.nres) then
3588 kupa=mod(lll,chain_length)
3589 iprzes=(kkk-1)*chain_length+lll
3590 if (kupa.eq.0) kupa=chain_length
3591 ! write (iout,*) "kupa", kupa
3592 cref(j,iprzes,i)=chain_rep(j,kupa,icha)
3593 cref(j,iprzes+nres,i)=chain_rep(j,kupa+nres,icha)
3600 !-koniec robienia kopii
3603 write (iout,*) "nowa struktura", nperm
3605 write (iout,110) restyp(itype(i,1),1),i,cref(1,i,kkk),&
3607 cref(3,i,kkk),cref(1,nres+i,kkk),&
3608 cref(2,nres+i,kkk),cref(3,nres+i,kkk)
3610 100 format (//' alpha-carbon coordinates ',&
3611 ' centroid coordinates'/ &
3612 ' ', 6X,'X',11X,'Y',11X,'Z', &
3613 10X,'X',11X,'Y',11X,'Z')
3614 110 format (a,'(',i3,')',6f12.5)
3620 bfrag(i,j)=bfrag(i,j)-ishift
3626 hfrag(i,j)=hfrag(i,j)-ishift
3632 end subroutine readpdb
3633 #if .not. defined(WHAM_RUN) && .not. defined(CLUSTER)
3634 !-----------------------------------------------------------------------------
3636 !-----------------------------------------------------------------------------
3637 subroutine read_control
3651 use random, only: random_init
3652 ! implicit real*8 (a-h,o-z)
3653 ! include 'DIMENSIONS'
3655 use prng, only:prng_restart
3657 logical :: OKRandom!, prng_restart
3660 ! include 'COMMON.IOUNITS'
3661 ! include 'COMMON.TIME1'
3662 ! include 'COMMON.THREAD'
3663 ! include 'COMMON.SBRIDGE'
3664 ! include 'COMMON.CONTROL'
3665 ! include 'COMMON.MCM'
3666 ! include 'COMMON.MAP'
3667 ! include 'COMMON.HEADER'
3668 ! include 'COMMON.CSA'
3669 ! include 'COMMON.CHAIN'
3670 ! include 'COMMON.MUCA'
3671 ! include 'COMMON.MD'
3672 ! include 'COMMON.FFIELD'
3673 ! include 'COMMON.INTERACT'
3674 ! include 'COMMON.SETUP'
3675 !el integer :: KDIAG,ICORFL,IXDR
3676 !el COMMON /MACHSW/ KDIAG,ICORFL,IXDR
3677 character(len=8),dimension(0:3) :: diagmeth = reshape((/'Library ',&
3678 'EVVRSP ','Givens ','Jacobi '/),shape(diagmeth))
3679 ! character(len=80) :: ucase
3680 character(len=640) :: controlcard
3682 real(kind=8) :: seed,rmsdbc,rmsdbc1max,rmsdbcm,drms,timem!,&
3688 read (INP,'(a)') titel
3689 call card_concat(controlcard,.true.)
3690 ! out1file=index(controlcard,'OUT1FILE').gt.0 .or. fg_rank.gt.0
3691 ! print *,"Processor",me," fg_rank",fg_rank," out1file",out1file
3692 call reada(controlcard,'SEED',seed,0.0D0)
3693 call random_init(seed)
3694 ! Set up the time limit (caution! The time must be input in minutes!)
3695 read_cart=index(controlcard,'READ_CART').gt.0
3696 call readi(controlcard,'CONSTR_DIST',constr_dist,0)
3697 call readi(controlcard,'SYM',symetr,1)
3698 call reada(controlcard,'TIMLIM',timlim,960.0D0) ! default 16 hours
3699 unres_pdb = index(controlcard,'UNRES_PDB') .gt. 0
3700 call reada(controlcard,'SAFETY',safety,30.0D0) ! default 30 minutes
3701 call reada(controlcard,'RMSDBC',rmsdbc,3.0D0)
3702 call reada(controlcard,'RMSDBC1',rmsdbc1,0.5D0)
3703 call reada(controlcard,'RMSDBC1MAX',rmsdbc1max,1.5D0)
3704 call reada(controlcard,'RMSDBCM',rmsdbcm,3.0D0)
3705 call reada(controlcard,'DRMS',drms,0.1D0)
3706 if(me.eq.king .or. .not. out1file .and. fg_rank.eq.0) then
3707 write (iout,'(a,f10.1)')'RMSDBC = ',rmsdbc
3708 write (iout,'(a,f10.1)')'RMSDBC1 = ',rmsdbc1
3709 write (iout,'(a,f10.1)')'RMSDBC1MAX = ',rmsdbc1max
3710 write (iout,'(a,f10.1)')'DRMS = ',drms
3711 write (iout,'(a,f10.1)')'RMSDBCM = ',rmsdbcm
3712 write (iout,'(a,f10.1)') 'Time limit (min):',timlim
3714 call readi(controlcard,'NZ_START',nz_start,0)
3715 call readi(controlcard,'NZ_END',nz_end,0)
3716 call readi(controlcard,'IZ_SC',iz_sc,0)
3717 timlim=60.0D0*timlim
3718 safety = 60.0d0*safety
3721 call reada(controlcard,"T_BATH",t_bath,300.0d0)
3722 !C SHIELD keyword sets if the shielding effect of side-chains is used
3723 !C 0 denots no shielding is used all peptide are equally despite the
3724 !C solvent accesible area
3725 !C 1 the newly introduced function
3726 !C 2 reseved for further possible developement
3727 call readi(controlcard,'SHIELD',shield_mode,0)
3728 !C if(me.eq.king .or. .not. out1file .and. fg_rank.eq.0) then
3729 write(iout,*) "shield_mode",shield_mode
3730 !C Varibles set size of box
3731 with_theta_constr = index(controlcard,"WITH_THETA_CONSTR").gt.0
3732 protein=index(controlcard,"PROTEIN").gt.0
3733 ions=index(controlcard,"IONS").gt.0
3734 nucleic=index(controlcard,"NUCLEIC").gt.0
3735 write (iout,*) "with_theta_constr ",with_theta_constr
3736 AFMlog=(index(controlcard,'AFM'))
3737 selfguide=(index(controlcard,'SELFGUIDE'))
3738 print *,'AFMlog',AFMlog,selfguide,"KUPA"
3739 call readi(controlcard,'GENCONSTR',genconstr,0)
3740 call reada(controlcard,'BOXX',boxxsize,100.0d0)
3741 call reada(controlcard,'BOXY',boxysize,100.0d0)
3742 call reada(controlcard,'BOXZ',boxzsize,100.0d0)
3743 call readi(controlcard,'TUBEMOD',tubemode,0)
3744 print *,"SCELE",scelemode
3745 call readi(controlcard,"SCELEMODE",scelemode,0)
3746 print *,"SCELE",scelemode
3748 ! elemode = 0 is orignal UNRES electrostatics
3749 ! elemode = 1 is "Momo" potentials in progress
3750 ! elemode = 2 is in development EVALD
3751 write (iout,*) TUBEmode,"TUBEMODE"
3752 if (TUBEmode.gt.0) then
3753 call reada(controlcard,"XTUBE",tubecenter(1),0.0d0)
3754 call reada(controlcard,"YTUBE",tubecenter(2),0.0d0)
3755 call reada(controlcard,"ZTUBE",tubecenter(3),0.0d0)
3756 call reada(controlcard,"RTUBE",tubeR0,0.0d0)
3757 call reada(controlcard,"TUBETOP",bordtubetop,boxzsize)
3758 call reada(controlcard,"TUBEBOT",bordtubebot,0.0d0)
3759 call reada(controlcard,"TUBEBUF",tubebufthick,1.0d0)
3760 buftubebot=bordtubebot+tubebufthick
3761 buftubetop=bordtubetop-tubebufthick
3764 ! CUTOFFF ON ELECTROSTATICS
3765 call reada(controlcard,"R_CUT_ELE",r_cut_ele,15.0d0)
3766 call reada(controlcard,"LAMBDA_ELE",rlamb_ele,0.3d0)
3767 write(iout,*) "R_CUT_ELE=",r_cut_ele
3768 ! Lipidic parameters
3769 call reada(controlcard,"LIPTHICK",lipthick,0.0d0)
3770 call reada(controlcard,"LIPAQBUF",lipbufthick,0.0d0)
3771 if (lipthick.gt.0.0d0) then
3772 bordliptop=(boxzsize+lipthick)/2.0
3773 bordlipbot=bordliptop-lipthick
3774 if ((bordliptop.gt.boxzsize).or.(bordlipbot.lt.0.0)) &
3775 write(iout,*) "WARNING WRONG SIZE OF LIPIDIC PHASE"
3776 buflipbot=bordlipbot+lipbufthick
3777 bufliptop=bordliptop-lipbufthick
3778 if ((lipbufthick*2.0d0).gt.lipthick) &
3779 write(iout,*) "WARNING WRONG SIZE OF LIP AQ BUF"
3780 endif !lipthick.gt.0
3781 write(iout,*) "bordliptop=",bordliptop
3782 write(iout,*) "bordlipbot=",bordlipbot
3783 write(iout,*) "bufliptop=",bufliptop
3784 write(iout,*) "buflipbot=",buflipbot
3785 write (iout,*) "SHIELD MODE",shield_mode
3787 !C-------------------------
3788 minim=(index(controlcard,'MINIMIZE').gt.0)
3789 dccart=(index(controlcard,'CART').gt.0)
3790 overlapsc=(index(controlcard,'OVERLAP').gt.0)
3791 overlapsc=.not.overlapsc
3792 searchsc=(index(controlcard,'NOSEARCHSC').gt.0)
3793 searchsc=.not.searchsc
3794 sideadd=(index(controlcard,'SIDEADD').gt.0)
3795 energy_dec=(index(controlcard,'ENERGY_DEC').gt.0)
3796 outpdb=(index(controlcard,'PDBOUT').gt.0)
3797 outmol2=(index(controlcard,'MOL2OUT').gt.0)
3798 pdbref=(index(controlcard,'PDBREF').gt.0)
3799 refstr=pdbref .or. (index(controlcard,'REFSTR').gt.0)
3800 indpdb=index(controlcard,'PDBSTART')
3801 extconf=(index(controlcard,'EXTCONF').gt.0)
3802 call readi(controlcard,'IPRINT',iprint,0)
3803 call readi(controlcard,'MAXGEN',maxgen,10000)
3804 call readi(controlcard,'MAXOVERLAP',maxoverlap,1000)
3805 call readi(controlcard,"KDIAG",kdiag,0)
3806 call readi(controlcard,"RESCALE_MODE",rescale_mode,2)
3807 if(me.eq.king .or. .not. out1file .and. fg_rank.eq.0) &
3808 write (iout,*) "RESCALE_MODE",rescale_mode
3809 split_ene=index(controlcard,'SPLIT_ENE').gt.0
3810 if (index(controlcard,'REGULAR').gt.0.0D0) then
3811 call reada(controlcard,'WEIDIS',weidis,0.1D0)
3815 if (index(controlcard,'CHECKGRAD').gt.0) then
3817 if (index(controlcard,'CART').gt.0) then
3819 elseif (index(controlcard,'CARINT').gt.0) then
3824 elseif (index(controlcard,'THREAD').gt.0) then
3826 call readi(controlcard,'THREAD',nthread,0)
3827 if (nthread.gt.0) then
3828 call reada(controlcard,'WEIDIS',weidis,0.1D0)
3831 write (iout,'(a)')'A number has to follow the THREAD keyword.'
3832 stop 'Error termination in Read_Control.'
3834 else if (index(controlcard,'MCMA').gt.0) then
3836 else if (index(controlcard,'MCEE').gt.0) then
3838 else if (index(controlcard,'MULTCONF').gt.0) then
3840 else if (index(controlcard,'MAP').gt.0) then
3842 call readi(controlcard,'MAP',nmap,0)
3843 else if (index(controlcard,'CSA').gt.0) then
3845 !rc else if (index(controlcard,'ZSCORE').gt.0) then
3847 !rc ZSCORE is rm from UNRES, modecalc=9 is available
3850 !fcm else if (index(controlcard,'MCMF').gt.0) then
3852 else if (index(controlcard,'SOFTREG').gt.0) then
3854 else if (index(controlcard,'CHECK_BOND').gt.0) then
3856 else if (index(controlcard,'TEST').gt.0) then
3858 else if (index(controlcard,'MD').gt.0) then
3860 else if (index(controlcard,'RE ').gt.0) then
3864 lmuca=index(controlcard,'MUCA').gt.0
3865 call readi(controlcard,'MUCADYN',mucadyn,0)
3866 call readi(controlcard,'MUCASMOOTH',muca_smooth,0)
3867 if (lmuca .and. (me.eq.king .or. .not.out1file )) &
3869 write (iout,*) 'MUCADYN=',mucadyn
3870 write (iout,*) 'MUCASMOOTH=',muca_smooth
3873 iscode=index(controlcard,'ONE_LETTER')
3874 indphi=index(controlcard,'PHI')
3875 indback=index(controlcard,'BACK')
3876 iranconf=index(controlcard,'RAND_CONF')
3877 i2ndstr=index(controlcard,'USE_SEC_PRED')
3878 gradout=index(controlcard,'GRADOUT').gt.0
3879 gnorm_check=index(controlcard,'GNORM_CHECK').gt.0
3880 call reada(controlcard,'DISTCHAINMAX',distchainmax,5.0d0)
3881 if (me.eq.king .or. .not.out1file ) &
3882 write (iout,*) "DISTCHAINMAX",distchainmax
3884 if(me.eq.king.or..not.out1file) &
3885 write (iout,'(2a)') diagmeth(kdiag),&
3886 ' routine used to diagonalize matrices.'
3887 if (shield_mode.gt.0) then
3889 !C VSolvSphere the volume of solving sphere
3891 !C rpp(1,1) is the energy r0 for peptide group contact and will be used for it
3892 !C there will be no distinction between proline peptide group and normal peptide
3893 !C group in case of shielding parameters
3894 VSolvSphere=4.0/3.0*pi*rpp(1,1)**3
3895 VSolvSphere_div=VSolvSphere-4.0/3.0*pi*(rpp(1,1)/2.0)**3
3896 write (iout,*) VSolvSphere,VSolvSphere_div
3897 !C long axis of side chain
3899 long_r_sidechain(i)=vbldsc0(1,i)
3900 short_r_sidechain(i)=sigma0(i)
3901 write(iout,*) "parame for long and short axis",i,vbldsc0(1,i),&
3907 end subroutine read_control
3908 !-----------------------------------------------------------------------------
3909 subroutine read_REMDpar
3911 ! Read REMD settings
3918 use control_data, only:out1file
3919 ! implicit real*8 (a-h,o-z)
3920 ! include 'DIMENSIONS'
3921 ! include 'COMMON.IOUNITS'
3922 ! include 'COMMON.TIME1'
3923 ! include 'COMMON.MD'
3926 !el include 'COMMON.LANGEVIN'
3928 !el include 'COMMON.LANGEVIN.lang0'
3930 ! include 'COMMON.INTERACT'
3931 ! include 'COMMON.NAMES'
3932 ! include 'COMMON.GEO'
3933 ! include 'COMMON.REMD'
3934 ! include 'COMMON.CONTROL'
3935 ! include 'COMMON.SETUP'
3936 ! character(len=80) :: ucase
3937 character(len=320) :: controlcard
3938 character(len=3200) :: controlcard1
3939 integer :: iremd_m_total
3942 ! real(kind=8) :: var,ene
3944 if(me.eq.king.or..not.out1file) &
3945 write (iout,*) "REMD setup"
3947 call card_concat(controlcard,.true.)
3948 call readi(controlcard,"NREP",nrep,3)
3949 call readi(controlcard,"NSTEX",nstex,1000)
3950 call reada(controlcard,"RETMIN",retmin,10.0d0)
3951 call reada(controlcard,"RETMAX",retmax,1000.0d0)
3952 mremdsync=(index(controlcard,'SYNC').gt.0)
3953 call readi(controlcard,"NSYN",i_sync_step,100)
3954 restart1file=(index(controlcard,'REST1FILE').gt.0)
3955 traj1file=(index(controlcard,'TRAJ1FILE').gt.0)
3956 call readi(controlcard,"TRAJCACHE",max_cache_traj_use,1)
3957 if(max_cache_traj_use.gt.max_cache_traj) &
3958 max_cache_traj_use=max_cache_traj
3959 if(me.eq.king.or..not.out1file) then
3960 !d if (traj1file) then
3961 !rc caching is in testing - NTWX is not ignored
3962 !d write (iout,*) "NTWX value is ignored"
3963 !d write (iout,*) " trajectory is stored to one file by master"
3964 !d write (iout,*) " before exchange at NSTEX intervals"
3966 write (iout,*) "NREP= ",nrep
3967 write (iout,*) "NSTEX= ",nstex
3968 write (iout,*) "SYNC= ",mremdsync
3969 write (iout,*) "NSYN= ",i_sync_step
3970 write (iout,*) "TRAJCACHE= ",max_cache_traj_use
3973 allocate(remd_t(nrep),remd_m(nrep)) !(maxprocs)
3974 if (index(controlcard,'TLIST').gt.0) then
3976 call card_concat(controlcard1,.true.)
3977 read(controlcard1,*) (remd_t(i),i=1,nrep)
3978 if(me.eq.king.or..not.out1file) &
3979 write (iout,*)'tlist',(remd_t(i),i=1,nrep)
3982 if (index(controlcard,'MLIST').gt.0) then
3984 call card_concat(controlcard1,.true.)
3985 read(controlcard1,*) (remd_m(i),i=1,nrep)
3986 if(me.eq.king.or..not.out1file) then
3987 write (iout,*)'mlist',(remd_m(i),i=1,nrep)
3990 iremd_m_total=iremd_m_total+remd_m(i)
3992 write (iout,*) 'Total number of replicas ',iremd_m_total
3995 if(me.eq.king.or..not.out1file) &
3996 write (iout,'(/30(1h=),a,29(1h=)/)') " End of REMD run setup "
3998 end subroutine read_REMDpar
3999 !-----------------------------------------------------------------------------
4000 subroutine read_MDpar
4004 use control_data, only: r_cut,rlamb,out1file
4006 use geometry_data, only: pi
4008 ! implicit real*8 (a-h,o-z)
4009 ! include 'DIMENSIONS'
4010 ! include 'COMMON.IOUNITS'
4011 ! include 'COMMON.TIME1'
4012 ! include 'COMMON.MD'
4015 !el include 'COMMON.LANGEVIN'
4017 !el include 'COMMON.LANGEVIN.lang0'
4019 ! include 'COMMON.INTERACT'
4020 ! include 'COMMON.NAMES'
4021 ! include 'COMMON.GEO'
4022 ! include 'COMMON.SETUP'
4023 ! include 'COMMON.CONTROL'
4024 ! include 'COMMON.SPLITELE'
4025 ! character(len=80) :: ucase
4026 character(len=320) :: controlcard
4031 call card_concat(controlcard,.true.)
4032 call readi(controlcard,"NSTEP",n_timestep,1000000)
4033 call readi(controlcard,"NTWE",ntwe,100)
4034 call readi(controlcard,"NTWX",ntwx,1000)
4035 call reada(controlcard,"DT",d_time,1.0d-1)
4036 call reada(controlcard,"DVMAX",dvmax,2.0d1)
4037 call reada(controlcard,"DAMAX",damax,1.0d1)
4038 call reada(controlcard,"EDRIFTMAX",edriftmax,1.0d+1)
4039 call readi(controlcard,"LANG",lang,0)
4040 RESPA = index(controlcard,"RESPA") .gt. 0
4041 call readi(controlcard,"NTIME_SPLIT",ntime_split,1)
4042 ntime_split0=ntime_split
4043 call readi(controlcard,"MAXTIME_SPLIT",maxtime_split,64)
4044 ntime_split0=ntime_split
4045 call reada(controlcard,"R_CUT",r_cut,2.0d0)
4046 call reada(controlcard,"LAMBDA",rlamb,0.3d0)
4047 rest = index(controlcard,"REST").gt.0
4048 tbf = index(controlcard,"TBF").gt.0
4049 usampl = index(controlcard,"USAMPL").gt.0
4050 mdpdb = index(controlcard,"MDPDB").gt.0
4051 call reada(controlcard,"T_BATH",t_bath,300.0d0)
4052 call reada(controlcard,"TAU_BATH",tau_bath,1.0d-1)
4053 call reada(controlcard,"EQ_TIME",eq_time,1.0d+4)
4054 call readi(controlcard,"RESET_MOMENT",count_reset_moment,1000)
4055 if (count_reset_moment.eq.0) count_reset_moment=1000000000
4056 call readi(controlcard,"RESET_VEL",count_reset_vel,1000)
4057 reset_moment=lang.eq.0 .and. tbf .and. count_reset_moment.gt.0
4058 reset_vel=lang.eq.0 .and. tbf .and. count_reset_vel.gt.0
4059 if (count_reset_vel.eq.0) count_reset_vel=1000000000
4060 large = index(controlcard,"LARGE").gt.0
4061 print_compon = index(controlcard,"PRINT_COMPON").gt.0
4062 rattle = index(controlcard,"RATTLE").gt.0
4063 ! if performing umbrella sampling, fragments constrained are read from the fragment file
4069 if(me.eq.king.or..not.out1file) then
4071 write (iout,'(27(1h=),a26,27(1h=))') " Parameters of the MD run "
4073 write (iout,'(a)') "The units are:"
4074 write (iout,'(a)') "positions: angstrom, time: 48.9 fs"
4075 write (iout,'(2a)') "velocity: angstrom/(48.9 fs),",&
4076 " acceleration: angstrom/(48.9 fs)**2"
4077 write (iout,'(a)') "energy: kcal/mol, temperature: K"
4079 write (iout,'(a60,i10)') "Number of time steps:",n_timestep
4080 write (iout,'(a60,f10.5,a)') &
4081 "Initial time step of numerical integration:",d_time,&
4083 write (iout,'(60x,f10.5,a)') d_time*48.9," fs"
4085 write (iout,'(2a,i4,a)') &
4086 "A-MTS algorithm used; initial time step for fast-varying",&
4087 " short-range forces split into",ntime_split," steps."
4088 write (iout,'(a,f5.2,a,f5.2)') "Short-range force cutoff",&
4089 r_cut," lambda",rlamb
4091 write (iout,'(2a,f10.5)') &
4092 "Maximum acceleration threshold to reduce the time step",&
4093 "/increase split number:",damax
4094 write (iout,'(2a,f10.5)') &
4095 "Maximum predicted energy drift to reduce the timestep",&
4096 "/increase split number:",edriftmax
4097 write (iout,'(a60,f10.5)') &
4098 "Maximum velocity threshold to reduce velocities:",dvmax
4099 write (iout,'(a60,i10)') "Frequency of property output:",ntwe
4100 write (iout,'(a60,i10)') "Frequency of coordinate output:",ntwx
4101 if (rattle) write (iout,'(a60)') &
4102 "Rattle algorithm used to constrain the virtual bonds"
4106 call reada(controlcard,"ETAWAT",etawat,0.8904d0)
4107 call reada(controlcard,"RWAT",rwat,1.4d0)
4108 call reada(controlcard,"SCAL_FRIC",scal_fric,2.0d-2)
4109 surfarea=index(controlcard,"SURFAREA").gt.0
4110 call readi(controlcard,"RESET_FRICMAT",reset_fricmat,1000)
4111 if(me.eq.king.or..not.out1file)then
4112 write (iout,'(/a,$)') "Langevin dynamics calculation"
4114 write (iout,'(a/)') &
4115 " with direct integration of Langevin equations"
4116 else if (lang.eq.2) then
4117 write (iout,'(a/)') " with TINKER stochasic MD integrator"
4118 else if (lang.eq.3) then
4119 write (iout,'(a/)') " with Ciccotti's stochasic MD integrator"
4120 else if (lang.eq.4) then
4121 write (iout,'(a/)') " in overdamped mode"
4123 write (iout,'(//a,i5)') &
4124 "=========== ERROR: Unknown Langevin dynamics mode:",lang
4127 write (iout,'(a60,f10.5)') "Temperature:",t_bath
4128 write (iout,'(a60,f10.5)') "Viscosity of the solvent:",etawat
4129 write (iout,'(a60,f10.5)') "Radius of solvent molecule:",rwat
4130 write (iout,'(a60,f10.5)') &
4131 "Scaling factor of the friction forces:",scal_fric
4132 if (surfarea) write (iout,'(2a,i10,a)') &
4133 "Friction coefficients will be scaled by solvent-accessible",&
4134 " surface area every",reset_fricmat," steps."
4136 ! Calculate friction coefficients and bounds of stochastic forces
4137 eta=6*pi*cPoise*etawat
4138 if(me.eq.king.or..not.out1file) &
4139 write(iout,'(a60,f10.5)')"Eta of the solvent in natural units:",&
4142 do j=1,5 !types of molecules
4143 gamp(j)=scal_fric*(pstok(j)+rwat)*eta
4144 stdfp(j)=dsqrt(2*Rb*t_bath/d_time)
4146 allocate(gamsc(ntyp1,5),stdfsc(ntyp1,5)) !(ntyp1)
4147 do j=1,5 !types of molecules
4149 gamsc(i,j)=scal_fric*(restok(i,j)+rwat)*eta
4150 stdfsc(i,j)=dsqrt(2*Rb*t_bath/d_time)
4154 if(me.eq.king.or..not.out1file)then
4155 write (iout,'(/2a/)') &
4156 "Radii of site types and friction coefficients and std's of",&
4157 " stochastic forces of fully exposed sites"
4158 write (iout,'(a5,f5.2,2f10.5)')'p',pstok,gamp(1),stdfp*dsqrt(gamp(1))
4160 write (iout,'(a5,f5.2,2f10.5)') restyp(i,1),restok(i,1),&
4161 gamsc(i,1),stdfsc(i,1)*dsqrt(gamsc(i,1))
4165 if(me.eq.king.or..not.out1file)then
4166 write (iout,'(a)') "Berendsen bath calculation"
4167 write (iout,'(a60,f10.5)') "Temperature:",t_bath
4168 write (iout,'(a60,f10.5)') "Coupling constant (tau):",tau_bath
4170 write (iout,'(a,i10,a)') "Momenta will be reset at zero every",&
4171 count_reset_moment," steps"
4173 write (iout,'(a,i10,a)') &
4174 "Velocities will be reset at random every",count_reset_vel,&
4178 if(me.eq.king.or..not.out1file) &
4179 write (iout,'(a31)') "Microcanonical mode calculation"
4181 if(me.eq.king.or..not.out1file)then
4182 if (rest) write (iout,'(/a/)') "===== Calculation restarted ===="
4184 write(iout,*) "MD running with constraints."
4185 write(iout,*) "Equilibration time ", eq_time, " mtus."
4186 write(iout,*) "Constraining ", nfrag," fragments."
4187 write(iout,*) "Length of each fragment, weight and q0:"
4189 write (iout,*) "Set of restraints #",iset
4191 write(iout,'(2i5,f8.1,f7.4)') ifrag(1,i,iset),&
4192 ifrag(2,i,iset),wfrag(i,iset),qinfrag(i,iset)
4194 write(iout,*) "constraints between ", npair, "fragments."
4195 write(iout,*) "constraint pairs, weights and q0:"
4197 write(iout,'(2i5,f8.1,f7.4)') ipair(1,i,iset),&
4198 ipair(2,i,iset),wpair(i,iset),qinpair(i,iset)
4200 write(iout,*) "angle constraints within ", nfrag_back,&
4201 "backbone fragments."
4202 write(iout,*) "fragment, weights:"
4204 write(iout,'(2i5,3f8.1)') ifrag_back(1,i,iset),&
4205 ifrag_back(2,i,iset),wfrag_back(1,i,iset),&
4206 wfrag_back(2,i,iset),wfrag_back(3,i,iset)
4209 iset=mod(kolor,nset)+1
4212 if(me.eq.king.or..not.out1file) &
4213 write (iout,'(/30(1h=),a,29(1h=)/)') " End of MD run setup "
4215 end subroutine read_MDpar
4216 !-----------------------------------------------------------------------------
4220 ! implicit real*8 (a-h,o-z)
4221 ! include 'DIMENSIONS'
4222 ! include 'COMMON.MAP'
4223 ! include 'COMMON.IOUNITS'
4224 character(len=3) :: angid(4) = (/'THE','PHI','ALP','OME'/)
4225 character(len=80) :: mapcard !,ucase
4228 ! real(kind=8) :: var,ene
4231 read (inp,'(a)') mapcard
4232 mapcard=ucase(mapcard)
4233 if (index(mapcard,'PHI').gt.0) then
4235 else if (index(mapcard,'THE').gt.0) then
4237 else if (index(mapcard,'ALP').gt.0) then
4239 else if (index(mapcard,'OME').gt.0) then
4242 write(iout,'(a)')'Error - illegal variable spec in MAP card.'
4243 stop 'Error - illegal variable spec in MAP card.'
4245 call readi (mapcard,'RES1',res1(imap),0)
4246 call readi (mapcard,'RES2',res2(imap),0)
4247 if (res1(imap).eq.0) then
4248 res1(imap)=res2(imap)
4249 else if (res2(imap).eq.0) then
4250 res2(imap)=res1(imap)
4252 if(res1(imap)*res2(imap).eq.0 .or. res1(imap).gt.res2(imap))then
4253 write (iout,'(a)') &
4254 'Error - illegal definition of variable group in MAP.'
4255 stop 'Error - illegal definition of variable group in MAP.'
4257 call reada(mapcard,'FROM',ang_from(imap),0.0D0)
4258 call reada(mapcard,'TO',ang_to(imap),0.0D0)
4259 call readi(mapcard,'NSTEP',nstep(imap),0)
4260 if (ang_from(imap).eq.ang_to(imap) .or. nstep(imap).eq.0) then
4261 write (iout,'(a)') &
4262 'Illegal boundary and/or step size specification in MAP.'
4263 stop 'Illegal boundary and/or step size specification in MAP.'
4267 end subroutine map_read
4268 !-----------------------------------------------------------------------------
4271 use control_data, only: vdisulf
4273 ! implicit real*8 (a-h,o-z)
4274 ! include 'DIMENSIONS'
4275 ! include 'COMMON.IOUNITS'
4276 ! include 'COMMON.GEO'
4277 ! include 'COMMON.CSA'
4278 ! include 'COMMON.BANK'
4279 ! include 'COMMON.CONTROL'
4280 ! character(len=80) :: ucase
4281 character(len=620) :: mcmcard
4283 ! integer :: ntf,ik,iw_pdb
4284 ! real(kind=8) :: var,ene
4286 call card_concat(mcmcard,.true.)
4288 call readi(mcmcard,'NCONF',nconf,50)
4289 call readi(mcmcard,'NADD',nadd,0)
4290 call readi(mcmcard,'JSTART',jstart,1)
4291 call readi(mcmcard,'JEND',jend,1)
4292 call readi(mcmcard,'NSTMAX',nstmax,500000)
4293 call readi(mcmcard,'N0',n0,1)
4294 call readi(mcmcard,'N1',n1,6)
4295 call readi(mcmcard,'N2',n2,4)
4296 call readi(mcmcard,'N3',n3,0)
4297 call readi(mcmcard,'N4',n4,0)
4298 call readi(mcmcard,'N5',n5,0)
4299 call readi(mcmcard,'N6',n6,10)
4300 call readi(mcmcard,'N7',n7,0)
4301 call readi(mcmcard,'N8',n8,0)
4302 call readi(mcmcard,'N9',n9,0)
4303 call readi(mcmcard,'N14',n14,0)
4304 call readi(mcmcard,'N15',n15,0)
4305 call readi(mcmcard,'N16',n16,0)
4306 call readi(mcmcard,'N17',n17,0)
4307 call readi(mcmcard,'N18',n18,0)
4309 vdisulf=(index(mcmcard,'DYNSS').gt.0)
4311 call readi(mcmcard,'NDIFF',ndiff,2)
4312 call reada(mcmcard,'DIFFCUT',diffcut,0.0d0)
4313 call readi(mcmcard,'IS1',is1,1)
4314 call readi(mcmcard,'IS2',is2,8)
4315 call readi(mcmcard,'NRAN0',nran0,4)
4316 call readi(mcmcard,'NRAN1',nran1,2)
4317 call readi(mcmcard,'IRR',irr,1)
4318 call readi(mcmcard,'NSEED',nseed,20)
4319 call readi(mcmcard,'NTOTAL',ntotal,10000)
4320 call reada(mcmcard,'CUT1',cut1,2.0d0)
4321 call reada(mcmcard,'CUT2',cut2,5.0d0)
4322 call reada(mcmcard,'ESTOP',estop,-3000.0d0)
4323 call readi(mcmcard,'ICMAX',icmax,3)
4324 call readi(mcmcard,'IRESTART',irestart,0)
4325 !!bankt call readi(mcmcard,'NBANKTM',ntbankm,0)
4328 call reada(mcmcard,'DELE',dele,20.0d0)
4329 call reada(mcmcard,'DIFCUT',difcut,720.0d0)
4330 call readi(mcmcard,'IREF',iref,0)
4331 call reada(mcmcard,'RMSCUT',rmscut,4.0d0)
4332 call reada(mcmcard,'PNCCUT',pnccut,0.5d0)
4333 call readi(mcmcard,'NCONF_IN',nconf_in,0)
4334 call reada(mcmcard,'RDIH_BIAS',rdih_bias,0.5d0)
4335 write (iout,*) "NCONF_IN",nconf_in
4337 end subroutine csaread
4338 !-----------------------------------------------------------------------------
4342 use control_data, only: MaxMoveType
4345 ! implicit real*8 (a-h,o-z)
4346 ! include 'DIMENSIONS'
4347 ! include 'COMMON.MCM'
4348 ! include 'COMMON.MCE'
4349 ! include 'COMMON.IOUNITS'
4350 ! character(len=80) :: ucase
4351 character(len=320) :: mcmcard
4354 ! real(kind=8) :: var,ene
4356 call card_concat(mcmcard,.true.)
4357 call readi(mcmcard,'MAXACC',maxacc,100)
4358 call readi(mcmcard,'MAX_MCM_IT',max_mcm_it,10000)
4359 call readi(mcmcard,'MAXTRIAL',maxtrial,100)
4360 call readi(mcmcard,'MAXTRIAL_ITER',maxtrial_iter,1000)
4361 call readi(mcmcard,'MAXREPM',maxrepm,200)
4362 call reada(mcmcard,'RANFRACT',RanFract,0.5D0)
4363 call reada(mcmcard,'POOL_FRACT',pool_fraction,0.01D0)
4364 call reada(mcmcard,'OVERLAP',overlap_cut,1.0D3)
4365 call reada(mcmcard,'E_UP',e_up,5.0D0)
4366 call reada(mcmcard,'DELTE',delte,0.1D0)
4367 call readi(mcmcard,'NSWEEP',nsweep,5)
4368 call readi(mcmcard,'NSTEPH',nsteph,0)
4369 call readi(mcmcard,'NSTEPC',nstepc,0)
4370 call reada(mcmcard,'TMIN',tmin,298.0D0)
4371 call reada(mcmcard,'TMAX',tmax,298.0D0)
4372 call readi(mcmcard,'NWINDOW',nwindow,0)
4373 call readi(mcmcard,'PRINT_MC',print_mc,0)
4374 print_stat=(index(mcmcard,'NO_PRINT_STAT').le.0)
4375 print_int=(index(mcmcard,'NO_PRINT_INT').le.0)
4376 ent_read=(index(mcmcard,'ENT_READ').gt.0)
4377 call readi(mcmcard,'SAVE_FREQ',save_frequency,1000)
4378 call readi(mcmcard,'MESSAGE_FREQ',message_frequency,1000)
4379 call readi(mcmcard,'POOL_READ_FREQ',pool_read_freq,5000)
4380 call readi(mcmcard,'POOL_SAVE_FREQ',pool_save_freq,1000)
4381 call readi(mcmcard,'PRINT_FREQ',print_freq,1000)
4382 if (nwindow.gt.0) then
4383 allocate(winstart(nwindow)) !!el (maxres)
4384 allocate(winend(nwindow)) !!el
4385 allocate(winlen(nwindow)) !!el
4386 read (inp,*) (winstart(i),winend(i),i=1,nwindow)
4388 winlen(i)=winend(i)-winstart(i)+1
4391 if (tmax.lt.tmin) tmax=tmin
4392 if (tmax.eq.tmin) then
4396 if (nstepc.gt.0 .and. nsteph.gt.0) then
4397 tsteph=(tmax/tmin)**(1.0D0/(nsteph+0.0D0))
4398 tstepc=(tmax/tmin)**(1.0D0/(nstepc+0.0D0))
4400 allocate(sumpro_type(0:MaxMoveType)) !(0:MaxMoveType)
4401 ! Probabilities of different move types
4402 sumpro_type(0)=0.0D0
4403 call reada(mcmcard,'MULTI_BOND',sumpro_type(1),1.0d0)
4404 call reada(mcmcard,'ONE_ANGLE' ,sumpro_type(2),2.0d0)
4405 sumpro_type(2)=sumpro_type(1)+sumpro_type(2)
4406 call reada(mcmcard,'THETA' ,sumpro_type(3),0.0d0)
4407 sumpro_type(3)=sumpro_type(2)+sumpro_type(3)
4408 call reada(mcmcard,'SIDE_CHAIN',sumpro_type(4),0.5d0)
4409 sumpro_type(4)=sumpro_type(3)+sumpro_type(4)
4411 print *,'i',i,' sumprotype',sumpro_type(i)
4412 sumpro_type(i)=sumpro_type(i)/sumpro_type(MaxMoveType)
4413 print *,'i',i,' sumprotype',sumpro_type(i)
4416 end subroutine mcmread
4417 !-----------------------------------------------------------------------------
4418 subroutine read_minim
4421 ! implicit real*8 (a-h,o-z)
4422 ! include 'DIMENSIONS'
4423 ! include 'COMMON.MINIM'
4424 ! include 'COMMON.IOUNITS'
4425 ! character(len=80) :: ucase
4426 character(len=320) :: minimcard
4428 ! integer :: ntf,ik,iw_pdb
4429 ! real(kind=8) :: var,ene
4431 call card_concat(minimcard,.true.)
4432 call readi(minimcard,'MAXMIN',maxmin,2000)
4433 call readi(minimcard,'MAXFUN',maxfun,5000)
4434 call readi(minimcard,'MINMIN',minmin,maxmin)
4435 call readi(minimcard,'MINFUN',minfun,maxmin)
4436 call reada(minimcard,'TOLF',tolf,1.0D-2)
4437 call reada(minimcard,'RTOLF',rtolf,1.0D-4)
4438 print_min_stat=min0(index(minimcard,'PRINT_MIN_STAT'),1)
4439 print_min_res=min0(index(minimcard,'PRINT_MIN_RES'),1)
4440 print_min_ini=min0(index(minimcard,'PRINT_MIN_INI'),1)
4441 write (iout,'(/80(1h*)/20x,a/80(1h*))') &
4442 'Options in energy minimization:'
4443 write (iout,'(4(a,i5),a,1pe14.5,a,1pe14.5)') &
4444 'MaxMin:',MaxMin,' MaxFun:',MaxFun,&
4445 'MinMin:',MinMin,' MinFun:',MinFun,&
4446 ' TolF:',TolF,' RTolF:',RTolF
4448 end subroutine read_minim
4449 !-----------------------------------------------------------------------------
4450 subroutine openunits
4452 use MD_data, only: usampl
4455 use control_data, only:out1file
4456 use control, only: getenv_loc
4457 ! implicit real*8 (a-h,o-z)
4458 ! include 'DIMENSIONS'
4461 character(len=16) :: form,nodename
4462 integer :: nodelen,ierror,npos
4464 ! include 'COMMON.SETUP'
4465 ! include 'COMMON.IOUNITS'
4466 ! include 'COMMON.MD'
4467 ! include 'COMMON.CONTROL'
4468 integer :: lenpre,lenpot,lentmp !,ilen
4470 character(len=3) :: out1file_text !,ucase
4471 character(len=3) :: ll
4474 ! integer :: ntf,ik,iw_pdb
4475 ! real(kind=8) :: var,ene
4477 ! print *,"Processor",myrank,"fg_rank",fg_rank," entered openunits"
4478 call getenv_loc("PREFIX",prefix)
4480 call getenv_loc("POT",pot)
4481 call getenv_loc("DIRTMP",tmpdir)
4482 call getenv_loc("CURDIR",curdir)
4483 call getenv_loc("OUT1FILE",out1file_text)
4484 ! print *,"Processor",myrank,"fg_rank",fg_rank," did GETENV"
4485 out1file_text=ucase(out1file_text)
4486 if (out1file_text(1:1).eq."Y") then
4489 out1file=fg_rank.gt.0
4494 if (lentmp.gt.0) then
4495 write (*,'(80(1h!))')
4496 write (*,'(a,19x,a,19x,a)') "!"," A T T E N T I O N ","!"
4497 write (*,'(80(1h!))')
4498 write (*,*)"All output files will be on node /tmp directory."
4500 call MPI_GET_PROCESSOR_NAME( nodename, nodelen, IERROR )
4501 if (me.eq.king) then
4502 write (*,*) "The master node is ",nodename
4503 else if (fg_rank.eq.0) then
4504 write (*,*) "I am the CG slave node ",nodename
4506 write (*,*) "I am the FG slave node ",nodename
4509 PREFIX = tmpdir(:lentmp)//'/'//prefix(:lenpre)
4510 lenpre = lentmp+lenpre+1
4512 entname=prefix(:lenpre)//'_'//pot(:lenpot)//'.entr'
4513 ! Get the names and open the input files
4514 #if defined(WINIFL) || defined(WINPGI)
4515 open(1,file=pref_orig(:ilen(pref_orig))// &
4516 '.inp',status='old',readonly,shared)
4517 open (9,file=prefix(:ilen(prefix))//'.intin',status='unknown')
4518 ! open (18,file=prefix(:ilen(prefix))//'.entin',status='unknown')
4519 ! Get parameter filenames and open the parameter files.
4520 call getenv_loc('BONDPAR',bondname)
4521 open (ibond,file=bondname,status='old',readonly,shared)
4522 call getenv_loc('BONDPAR_NUCL',bondname_nucl)
4523 open (ibond_nucl,file=bondname_nucl,status='old',readonly,shared)
4524 call getenv_loc('THETPAR',thetname)
4525 open (ithep,file=thetname,status='old',readonly,shared)
4526 call getenv_loc('ROTPAR',rotname)
4527 open (irotam,file=rotname,status='old',readonly,shared)
4528 call getenv_loc('TORPAR',torname)
4529 open (itorp,file=torname,status='old',readonly,shared)
4530 call getenv_loc('TORDPAR',tordname)
4531 open (itordp,file=tordname,status='old',readonly,shared)
4532 call getenv_loc('FOURIER',fouriername)
4533 open (ifourier,file=fouriername,status='old',readonly,shared)
4534 call getenv_loc('ELEPAR',elename)
4535 open (ielep,file=elename,status='old',readonly,shared)
4536 call getenv_loc('SIDEPAR',sidename)
4537 open (isidep,file=sidename,status='old',readonly,shared)
4539 call getenv_loc('THETPAR_NUCL',thetname_nucl)
4540 open (ithep_nucl,file=thetname_nucl,status='old',readonly,shared)
4541 call getenv_loc('ROTPAR_NUCL',rotname_nucl)
4542 open (irotam_nucl,file=rotname_nucl,status='old',readonly,shared)
4543 call getenv_loc('TORPAR_NUCL',torname_nucl)
4544 open (itorp_nucl,file=torname_nucl,status='old',readonly,shared)
4545 call getenv_loc('TORDPAR_NUCL',tordname_nucl)
4546 open (itordp_nucl,file=tordname_nucl,status='old',readonly,shared)
4547 call getenv_loc('SIDEPAR_NUCL',sidename_nucl)
4548 open (isidep_nucl,file=sidename_nucl,status='old',readonly,shared)
4551 #elif (defined CRAY) || (defined AIX)
4552 open(1,file=pref_orig(:ilen(pref_orig))//'.inp',status='old',&
4554 ! print *,"Processor",myrank," opened file 1"
4555 open (9,file=prefix(:ilen(prefix))//'.intin',status='unknown')
4556 ! print *,"Processor",myrank," opened file 9"
4557 ! open (18,file=prefix(:ilen(prefix))//'.entin',status='unknown')
4558 ! Get parameter filenames and open the parameter files.
4559 call getenv_loc('BONDPAR',bondname)
4560 open (ibond,file=bondname,status='old',action='read')
4561 call getenv_loc('BONDPAR_NUCL',bondname_nucl)
4562 open (ibond_nucl,file=bondname_nucl,status='old',action='read')
4564 ! print *,"Processor",myrank," opened file IBOND"
4565 call getenv_loc('THETPAR',thetname)
4566 open (ithep,file=thetname,status='old',action='read')
4567 ! print *,"Processor",myrank," opened file ITHEP"
4568 call getenv_loc('ROTPAR',rotname)
4569 open (irotam,file=rotname,status='old',action='read')
4570 ! print *,"Processor",myrank," opened file IROTAM"
4571 call getenv_loc('TORPAR',torname)
4572 open (itorp,file=torname,status='old',action='read')
4573 ! print *,"Processor",myrank," opened file ITORP"
4574 call getenv_loc('TORDPAR',tordname)
4575 open (itordp,file=tordname,status='old',action='read')
4576 ! print *,"Processor",myrank," opened file ITORDP"
4577 call getenv_loc('SCCORPAR',sccorname)
4578 open (isccor,file=sccorname,status='old',action='read')
4579 ! print *,"Processor",myrank," opened file ISCCOR"
4580 call getenv_loc('FOURIER',fouriername)
4581 open (ifourier,file=fouriername,status='old',action='read')
4582 ! print *,"Processor",myrank," opened file IFOURIER"
4583 call getenv_loc('ELEPAR',elename)
4584 open (ielep,file=elename,status='old',action='read')
4585 ! print *,"Processor",myrank," opened file IELEP"
4586 call getenv_loc('SIDEPAR',sidename)
4587 open (isidep,file=sidename,status='old',action='read')
4589 call getenv_loc('THETPAR_NUCL',thetname_nucl)
4590 open (ithep_nucl,file=thetname_nucl,status='old',action='read')
4591 call getenv_loc('ROTPAR_NUCL',rotname_nucl)
4592 open (irotam_nucl,file=rotname_nucl,status='old',action='read')
4593 call getenv_loc('TORPAR_NUCL',torname_nucl)
4594 open (itorp_nucl,file=torname_nucl,status='old',action='read')
4595 call getenv_loc('TORDPAR_NUCL',tordname_nucl)
4596 open (itordp_nucl,file=tordname_nucl,status='old',action='read')
4597 call getenv_loc('SIDEPAR_NUCL',sidename_nucl)
4598 open (isidep_nucl,file=sidename_nucl,status='old',action='read')
4600 call getenv_loc('LIPTRANPAR',liptranname)
4601 open (iliptranpar,file=liptranname,status='old',action='read')
4602 call getenv_loc('TUBEPAR',tubename)
4603 open (itube,file=tubename,status='old',action='read')
4604 call getenv_loc('IONPAR',ionname)
4605 open (iion,file=ionname,status='old',action='read')
4607 ! print *,"Processor",myrank," opened file ISIDEP"
4608 ! print *,"Processor",myrank," opened parameter files"
4610 open(1,file=pref_orig(:ilen(pref_orig))//'.inp',status='old')
4611 open (9,file=prefix(:ilen(prefix))//'.intin',status='unknown')
4612 ! open (18,file=prefix(:ilen(prefix))//'.entin',status='unknown')
4613 ! Get parameter filenames and open the parameter files.
4614 call getenv_loc('BONDPAR',bondname)
4615 open (ibond,file=bondname,status='old')
4616 call getenv_loc('BONDPAR_NUCL',bondname_nucl)
4617 open (ibond_nucl,file=bondname_nucl,status='old')
4619 call getenv_loc('THETPAR',thetname)
4620 open (ithep,file=thetname,status='old')
4621 call getenv_loc('ROTPAR',rotname)
4622 open (irotam,file=rotname,status='old')
4623 call getenv_loc('TORPAR',torname)
4624 open (itorp,file=torname,status='old')
4625 call getenv_loc('TORDPAR',tordname)
4626 open (itordp,file=tordname,status='old')
4627 call getenv_loc('SCCORPAR',sccorname)
4628 open (isccor,file=sccorname,status='old')
4629 call getenv_loc('FOURIER',fouriername)
4630 open (ifourier,file=fouriername,status='old')
4631 call getenv_loc('ELEPAR',elename)
4632 open (ielep,file=elename,status='old')
4633 call getenv_loc('SIDEPAR',sidename)
4634 open (isidep,file=sidename,status='old')
4636 open (ithep_nucl,file=thetname_nucl,status='old')
4637 call getenv_loc('ROTPAR_NUCL',rotname_nucl)
4638 open (irotam_nucl,file=rotname_nucl,status='old')
4639 call getenv_loc('TORPAR_NUCL',torname_nucl)
4640 open (itorp_nucl,file=torname_nucl,status='old')
4641 call getenv_loc('TORDPAR_NUCL',tordname_nucl)
4642 open (itordp_nucl,file=tordname_nucl,status='old')
4643 call getenv_loc('SIDEPAR_NUCL',sidename_nucl)
4644 open (isidep_nucl,file=sidename_nucl,status='old')
4646 call getenv_loc('LIPTRANPAR',liptranname)
4647 open (iliptranpar,file=liptranname,status='old')
4648 call getenv_loc('TUBEPAR',tubename)
4649 open (itube,file=tubename,status='old')
4650 call getenv_loc('IONPAR',ionname)
4651 open (iion,file=ionname,status='old')
4653 open(1,file=pref_orig(:ilen(pref_orig))//'.inp',status='old',&
4655 open (9,file=prefix(:ilen(prefix))//'.intin',status='unknown')
4656 ! open (18,file=prefix(:ilen(prefix))//'.entin',status='unknown')
4657 ! Get parameter filenames and open the parameter files.
4658 call getenv_loc('BONDPAR',bondname)
4659 open (ibond,file=bondname,status='old',action='read')
4660 call getenv_loc('BONDPAR_NUCL',bondname_nucl)
4661 open (ibond_nucl,file=bondname_nucl,status='old',action='read')
4662 call getenv_loc('THETPAR',thetname)
4663 open (ithep,file=thetname,status='old',action='read')
4664 call getenv_loc('ROTPAR',rotname)
4665 open (irotam,file=rotname,status='old',action='read')
4666 call getenv_loc('TORPAR',torname)
4667 open (itorp,file=torname,status='old',action='read')
4668 call getenv_loc('TORDPAR',tordname)
4669 open (itordp,file=tordname,status='old',action='read')
4670 call getenv_loc('SCCORPAR',sccorname)
4671 open (isccor,file=sccorname,status='old',action='read')
4673 call getenv_loc('THETPARPDB',thetname_pdb)
4674 print *,"thetname_pdb ",thetname_pdb
4675 open (ithep_pdb,file=thetname_pdb,status='old',action='read')
4676 print *,ithep_pdb," opened"
4678 call getenv_loc('FOURIER',fouriername)
4679 open (ifourier,file=fouriername,status='old',readonly)
4680 call getenv_loc('ELEPAR',elename)
4681 open (ielep,file=elename,status='old',readonly)
4682 call getenv_loc('SIDEPAR',sidename)
4683 open (isidep,file=sidename,status='old',readonly)
4685 call getenv_loc('THETPAR_NUCL',thetname_nucl)
4686 open (ithep_nucl,file=thetname_nucl,status='old',action='read')
4687 call getenv_loc('ROTPAR_NUCL',rotname_nucl)
4688 open (irotam_nucl,file=rotname_nucl,status='old',action='read')
4689 call getenv_loc('TORPAR_NUCL',torname_nucl)
4690 open (itorp_nucl,file=torname_nucl,status='old',action='read')
4691 call getenv_loc('TORDPAR_NUCL',tordname_nucl)
4692 open (itordp_nucl,file=tordname_nucl,status='old',action='read')
4693 call getenv_loc('SIDEPAR_NUCL',sidename_nucl)
4694 open (isidep_nucl,file=sidename_nucl,status='old',action='read')
4695 call getenv_loc('SIDEPAR_SCBASE',sidename_scbase)
4696 open (isidep_scbase,file=sidename_scbase,status='old',action='read')
4697 call getenv_loc('PEPPAR_PEPBASE',pepname_pepbase)
4698 open (isidep_pepbase,file=pepname_pepbase,status='old',action='read')
4699 call getenv_loc('SCPAR_PHOSPH',pepname_scpho)
4700 open (isidep_scpho,file=pepname_scpho,status='old',action='read')
4701 call getenv_loc('PEPPAR_PHOSPH',pepname_peppho)
4702 open (isidep_peppho,file=pepname_peppho,status='old',action='read')
4705 call getenv_loc('LIPTRANPAR',liptranname)
4706 open (iliptranpar,file=liptranname,status='old',action='read')
4707 call getenv_loc('TUBEPAR',tubename)
4708 open (itube,file=tubename,status='old',action='read')
4709 call getenv_loc('IONPAR',ionname)
4710 open (iion,file=ionname,status='old',action='read')
4713 call getenv_loc('ROTPARPDB',rotname_pdb)
4714 open (irotam_pdb,file=rotname_pdb,status='old',action='read')
4717 call getenv_loc('SCPPAR_NUCL',scpname_nucl)
4718 #if defined(WINIFL) || defined(WINPGI)
4719 open (iscpp_nucl,file=scpname_nucl,status='old',readonly,shared)
4720 #elif (defined CRAY) || (defined AIX)
4721 open (iscpp_nucl,file=scpname_nucl,status='old',action='read')
4723 open (iscpp_nucl,file=scpname_nucl,status='old')
4725 open (iscpp_nucl,file=scpname_nucl,status='old',action='read')
4730 ! 8/9/01 In the newest version SCp interaction constants are read from a file
4731 ! Use -DOLDSCP to use hard-coded constants instead.
4733 call getenv_loc('SCPPAR',scpname)
4734 #if defined(WINIFL) || defined(WINPGI)
4735 open (iscpp,file=scpname,status='old',readonly,shared)
4736 #elif (defined CRAY) || (defined AIX)
4737 open (iscpp,file=scpname,status='old',action='read')
4739 open (iscpp,file=scpname,status='old')
4741 open (iscpp,file=scpname,status='old',action='read')
4744 call getenv_loc('PATTERN',patname)
4745 #if defined(WINIFL) || defined(WINPGI)
4746 open (icbase,file=patname,status='old',readonly,shared)
4747 #elif (defined CRAY) || (defined AIX)
4748 open (icbase,file=patname,status='old',action='read')
4750 open (icbase,file=patname,status='old')
4752 open (icbase,file=patname,status='old',action='read')
4755 ! Open output file only for CG processes
4756 ! print *,"Processor",myrank," fg_rank",fg_rank
4757 if (fg_rank.eq.0) then
4759 if (nodes.eq.1) then
4762 npos = dlog10(dfloat(nodes-1))+1
4764 if (npos.lt.3) npos=3
4765 write (liczba,'(i1)') npos
4766 form = '(bz,i'//liczba(:ilen(liczba))//'.'//liczba(:ilen(liczba)) &
4768 write (liczba,form) me
4769 outname=prefix(:lenpre)//'.out_'//pot(:lenpot)// &
4770 liczba(:ilen(liczba))
4771 intname=prefix(:lenpre)//'_'//pot(:lenpot)//liczba(:ilen(liczba)) &
4773 pdbname=prefix(:lenpre)//'_'//pot(:lenpot)//liczba(:ilen(liczba)) &
4775 mol2name=prefix(:lenpre)//'_'//pot(:lenpot)// &
4776 liczba(:ilen(liczba))//'.mol2'
4777 statname=prefix(:lenpre)//'_'//pot(:lenpot)// &
4778 liczba(:ilen(liczba))//'.stat'
4780 call copy_to_tmp(pref_orig(:ilen(pref_orig))//'_'//pot(:lenpot) &
4781 //liczba(:ilen(liczba))//'.stat')
4782 rest2name=prefix(:ilen(prefix))//"_"//liczba(:ilen(liczba)) &
4785 qname=prefix(:lenpre)//'_'//pot(:lenpot)// &
4786 liczba(:ilen(liczba))//'.const'
4791 outname=prefix(:lenpre)//'.out_'//pot(:lenpot)
4792 intname=prefix(:lenpre)//'_'//pot(:lenpot)//'.int'
4793 pdbname=prefix(:lenpre)//'_'//pot(:lenpot)//'.pdb'
4794 mol2name=prefix(:lenpre)//'_'//pot(:lenpot)//'.mol2'
4795 statname=prefix(:lenpre)//'_'//pot(:lenpot)//'.stat'
4797 call copy_to_tmp(pref_orig(:ilen(pref_orig))//'_'//pot(:lenpot)// &
4799 rest2name=prefix(:ilen(prefix))//'.rst'
4801 qname=prefix(:lenpre)//'_'//pot(:lenpot)//'.const'
4804 #if defined(AIX) || defined(PGI)
4805 if (me.eq.king .or. .not. out1file) &
4806 open(iout,file=outname,status='unknown')
4808 if (fg_rank.gt.0) then
4809 write (liczba,'(i3.3)') myrank/nfgtasks
4810 write (ll,'(bz,i3.3)') fg_rank
4811 open(iout,file="debug"//liczba(:ilen(liczba))//"."//ll,&
4816 open(igeom,file=intname,status='unknown',position='append')
4817 open(ipdb,file=pdbname,status='unknown')
4818 open(imol2,file=mol2name,status='unknown')
4819 open(istat,file=statname,status='unknown',position='append')
4821 !1out open(iout,file=outname,status='unknown')
4824 if (me.eq.king .or. .not.out1file) &
4825 open(iout,file=outname,status='unknown')
4827 if (fg_rank.gt.0) then
4828 write (liczba,'(i3.3)') myrank/nfgtasks
4829 write (ll,'(bz,i3.3)') fg_rank
4830 open(iout,file="debug"//liczba(:ilen(liczba))//"."//ll,&
4835 open(igeom,file=intname,status='unknown',access='append')
4836 open(ipdb,file=pdbname,status='unknown')
4837 open(imol2,file=mol2name,status='unknown')
4838 open(istat,file=statname,status='unknown',access='append')
4840 !1out open(iout,file=outname,status='unknown')
4843 csa_rbank=prefix(:lenpre)//'.CSA.rbank'
4844 csa_seed=prefix(:lenpre)//'.CSA.seed'
4845 csa_history=prefix(:lenpre)//'.CSA.history'
4846 csa_bank=prefix(:lenpre)//'.CSA.bank'
4847 csa_bank1=prefix(:lenpre)//'.CSA.bank1'
4848 csa_alpha=prefix(:lenpre)//'.CSA.alpha'
4849 csa_alpha1=prefix(:lenpre)//'.CSA.alpha1'
4850 !!bankt csa_bankt=prefix(:lenpre)//'.CSA.bankt'
4851 csa_int=prefix(:lenpre)//'.int'
4852 csa_bank_reminimized=prefix(:lenpre)//'.CSA.bank_reminimized'
4853 csa_native_int=prefix(:lenpre)//'.CSA.native.int'
4854 csa_in=prefix(:lenpre)//'.CSA.in'
4855 ! print *,"Processor",myrank,"fg_rank",fg_rank," opened files"
4858 write (iout,'(80(1h-))')
4859 write (iout,'(30x,a)') "FILE ASSIGNMENT"
4860 write (iout,'(80(1h-))')
4861 write (iout,*) "Input file : ",&
4862 pref_orig(:ilen(pref_orig))//'.inp'
4863 write (iout,*) "Output file : ",&
4864 outname(:ilen(outname))
4866 write (iout,*) "Sidechain potential file : ",&
4867 sidename(:ilen(sidename))
4869 write (iout,*) "SCp potential file : ",&
4870 scpname(:ilen(scpname))
4872 write (iout,*) "Electrostatic potential file : ",&
4873 elename(:ilen(elename))
4874 write (iout,*) "Cumulant coefficient file : ",&
4875 fouriername(:ilen(fouriername))
4876 write (iout,*) "Torsional parameter file : ",&
4877 torname(:ilen(torname))
4878 write (iout,*) "Double torsional parameter file : ",&
4879 tordname(:ilen(tordname))
4880 write (iout,*) "SCCOR parameter file : ",&
4881 sccorname(:ilen(sccorname))
4882 write (iout,*) "Bond & inertia constant file : ",&
4883 bondname(:ilen(bondname))
4884 write (iout,*) "Bending parameter file : ",&
4885 thetname(:ilen(thetname))
4886 write (iout,*) "Rotamer parameter file : ",&
4887 rotname(:ilen(rotname))
4890 write (iout,*) "Thetpdb parameter file : ",&
4891 thetname_pdb(:ilen(thetname_pdb))
4894 write (iout,*) "Threading database : ",&
4895 patname(:ilen(patname))
4897 write (iout,*)" DIRTMP : ",&
4899 write (iout,'(80(1h-))')
4902 end subroutine openunits
4903 !-----------------------------------------------------------------------------
4906 use geometry_data, only: nres,dc
4908 ! implicit real*8 (a-h,o-z)
4909 ! include 'DIMENSIONS'
4910 ! include 'COMMON.CHAIN'
4911 ! include 'COMMON.IOUNITS'
4912 ! include 'COMMON.MD'
4915 ! real(kind=8) :: var,ene
4917 open(irest2,file=rest2name,status='unknown')
4918 read(irest2,*) totT,EK,potE,totE,t_bath
4921 ! AL 4/17/17: Now reading d_t(0,:) too
4923 read(irest2,'(3e15.5)') (d_t(j,i),j=1,3)
4926 ! AL 4/17/17: Now reading d_c(0,:) too
4928 read(irest2,'(3e15.5)') (dc(j,i),j=1,3)
4931 read (irest2,*) iset
4935 end subroutine readrst
4936 !-----------------------------------------------------------------------------
4937 subroutine read_fragments
4941 use control_data, only:out1file
4944 ! implicit real*8 (a-h,o-z)
4945 ! include 'DIMENSIONS'
4949 ! include 'COMMON.SETUP'
4950 ! include 'COMMON.CHAIN'
4951 ! include 'COMMON.IOUNITS'
4952 ! include 'COMMON.MD'
4953 ! include 'COMMON.CONTROL'
4956 ! real(kind=8) :: var,ene
4958 read(inp,*) nset,nfrag,npair,nfrag_back
4960 !el from module energy
4961 ! if(.not.allocated(mset)) allocate(mset(nset)) !(maxprocs/20)
4962 if(.not.allocated(wfrag_back)) then
4963 allocate(wfrag_back(3,nfrag_back,nset)) !(3,maxfrag_back,maxprocs/20)
4964 allocate(ifrag_back(3,nfrag_back,nset)) !(3,maxfrag_back,maxprocs/20)
4966 allocate(qinfrag(nfrag,nset),wfrag(nfrag,nset)) !(50,maxprocs/20)
4967 allocate(ifrag(2,nfrag,nset)) !(2,50,maxprocs/20)
4969 allocate(qinpair(npair,nset),wpair(npair,nset)) !(100,maxprocs/20)
4970 allocate(ipair(2,npair,nset)) !(2,100,maxprocs/20)
4973 if(me.eq.king.or..not.out1file) &
4974 write(iout,*) "nset",nset," nfrag",nfrag," npair",npair,&
4975 " nfrag_back",nfrag_back
4977 read(inp,*) mset(iset)
4979 read(inp,*) wfrag(i,iset),ifrag(1,i,iset),ifrag(2,i,iset),&
4981 if(me.eq.king.or..not.out1file) &
4982 write(iout,*) "R ",i,wfrag(i,iset),ifrag(1,i,iset),&
4983 ifrag(2,i,iset), qinfrag(i,iset)
4986 read(inp,*) wpair(i,iset),ipair(1,i,iset),ipair(2,i,iset),&
4988 if(me.eq.king.or..not.out1file) &
4989 write(iout,*) "R ",i,wpair(i,iset),ipair(1,i,iset),&
4990 ipair(2,i,iset), qinpair(i,iset)
4993 read(inp,*) wfrag_back(1,i,iset),wfrag_back(2,i,iset),&
4994 wfrag_back(3,i,iset),&
4995 ifrag_back(1,i,iset),ifrag_back(2,i,iset)
4996 if(me.eq.king.or..not.out1file) &
4997 write(iout,*) "A",i,wfrag_back(1,i,iset),wfrag_back(2,i,iset),&
4998 wfrag_back(3,i,iset),ifrag_back(1,i,iset),ifrag_back(2,i,iset)
5002 end subroutine read_fragments
5003 !-----------------------------------------------------------------------------
5005 !-----------------------------------------------------------------------------
5009 ! implicit real*8 (a-h,o-z)
5010 ! include 'DIMENSIONS'
5011 ! include 'COMMON.CSA'
5012 ! include 'COMMON.BANK'
5013 ! include 'COMMON.IOUNITS'
5015 ! integer :: ntf,ik,iw_pdb
5016 ! real(kind=8) :: var,ene
5018 open(icsa_in,file=csa_in,status="old",err=100)
5019 read(icsa_in,*) nconf
5020 read(icsa_in,*) jstart,jend
5021 read(icsa_in,*) nstmax
5022 read(icsa_in,*) n1,n2,n3,n4,n5,n6,n7,n8,is1,is2
5023 read(icsa_in,*) nran0,nran1,irr
5024 read(icsa_in,*) nseed
5025 read(icsa_in,*) ntotal,cut1,cut2
5026 read(icsa_in,*) estop
5027 read(icsa_in,*) icmax,irestart
5028 read(icsa_in,*) ntbankm,dele,difcut
5029 read(icsa_in,*) iref,rmscut,pnccut
5030 read(icsa_in,*) ndiff
5037 end subroutine csa_read
5038 !-----------------------------------------------------------------------------
5039 subroutine initial_write
5042 ! implicit real*8 (a-h,o-z)
5043 ! include 'DIMENSIONS'
5044 ! include 'COMMON.CSA'
5045 ! include 'COMMON.BANK'
5046 ! include 'COMMON.IOUNITS'
5048 ! integer :: ntf,ik,iw_pdb
5049 ! real(kind=8) :: var,ene
5051 open(icsa_seed,file=csa_seed,status="unknown")
5052 write(icsa_seed,*) "seed"
5054 #if defined(AIX) || defined(PGI)
5055 open(icsa_history,file=csa_history,status="unknown",&
5058 open(icsa_history,file=csa_history,status="unknown",&
5061 write(icsa_history,*) nconf
5062 write(icsa_history,*) jstart,jend
5063 write(icsa_history,*) nstmax
5064 write(icsa_history,*) n1,n2,n3,n4,n5,n6,n7,n8,is1,is2
5065 write(icsa_history,*) nran0,nran1,irr
5066 write(icsa_history,*) nseed
5067 write(icsa_history,*) ntotal,cut1,cut2
5068 write(icsa_history,*) estop
5069 write(icsa_history,*) icmax,irestart
5070 write(icsa_history,*) ntbankm,dele,difcut
5071 write(icsa_history,*) iref,rmscut,pnccut
5072 write(icsa_history,*) ndiff
5074 write(icsa_history,*)
5077 open(icsa_bank1,file=csa_bank1,status="unknown")
5078 write(icsa_bank1,*) 0
5082 end subroutine initial_write
5083 !-----------------------------------------------------------------------------
5084 subroutine restart_write
5087 ! implicit real*8 (a-h,o-z)
5088 ! include 'DIMENSIONS'
5089 ! include 'COMMON.IOUNITS'
5090 ! include 'COMMON.CSA'
5091 ! include 'COMMON.BANK'
5093 ! integer :: ntf,ik,iw_pdb
5094 ! real(kind=8) :: var,ene
5096 #if defined(AIX) || defined(PGI)
5097 open(icsa_history,file=csa_history,position="append")
5099 open(icsa_history,file=csa_history,access="append")
5101 write(icsa_history,*)
5102 write(icsa_history,*) "This is restart"
5103 write(icsa_history,*)
5104 write(icsa_history,*) nconf
5105 write(icsa_history,*) jstart,jend
5106 write(icsa_history,*) nstmax
5107 write(icsa_history,*) n1,n2,n3,n4,n5,n6,n7,n8,is1,is2
5108 write(icsa_history,*) nran0,nran1,irr
5109 write(icsa_history,*) nseed
5110 write(icsa_history,*) ntotal,cut1,cut2
5111 write(icsa_history,*) estop
5112 write(icsa_history,*) icmax,irestart
5113 write(icsa_history,*) ntbankm,dele,difcut
5114 write(icsa_history,*) iref,rmscut,pnccut
5115 write(icsa_history,*) ndiff
5116 write(icsa_history,*)
5117 write(icsa_history,*) "irestart is: ", irestart
5119 write(icsa_history,*)
5123 end subroutine restart_write
5124 !-----------------------------------------------------------------------------
5126 !-----------------------------------------------------------------------------
5127 subroutine write_pdb(npdb,titelloc,ee)
5129 ! implicit real*8 (a-h,o-z)
5130 ! include 'DIMENSIONS'
5131 ! include 'COMMON.IOUNITS'
5132 character(len=50) :: titelloc1
5133 character*(*) :: titelloc
5134 character(len=3) :: zahl
5135 character(len=5) :: liczba5
5137 integer :: npdb !,ilen
5141 ! real(kind=8) :: var,ene
5145 if (npdb.lt.1000) then
5146 call numstr(npdb,zahl)
5147 open(ipdb,file=prefix(:lenpre)//'@@'//zahl//'.pdb')
5149 if (npdb.lt.10000) then
5150 write(liczba5,'(i1,i4)') 0,npdb
5152 write(liczba5,'(i5)') npdb
5154 open(ipdb,file=prefix(:lenpre)//'@@'//liczba5//'.pdb')
5156 call pdbout(ee,titelloc1,ipdb)
5159 end subroutine write_pdb
5160 !-----------------------------------------------------------------------------
5162 !-----------------------------------------------------------------------------
5163 subroutine write_thread_summary
5164 ! Thread the sequence through a database of known structures
5165 use control_data, only: refstr
5167 use energy_data, only: n_ene_comp
5169 ! implicit real*8 (a-h,o-z)
5170 ! include 'DIMENSIONS'
5172 use MPI_data !include 'COMMON.INFO'
5175 ! include 'COMMON.CONTROL'
5176 ! include 'COMMON.CHAIN'
5177 ! include 'COMMON.DBASE'
5178 ! include 'COMMON.INTERACT'
5179 ! include 'COMMON.VAR'
5180 ! include 'COMMON.THREAD'
5181 ! include 'COMMON.FFIELD'
5182 ! include 'COMMON.SBRIDGE'
5183 ! include 'COMMON.HEADER'
5184 ! include 'COMMON.NAMES'
5185 ! include 'COMMON.IOUNITS'
5186 ! include 'COMMON.TIME1'
5188 integer,dimension(maxthread) :: ip
5189 real(kind=8),dimension(0:n_ene) :: energia
5191 integer :: i,j,ii,jj,ipj,ik,kk,ist
5192 real(kind=8) :: enet,etot,rmsnat,rms,frac,frac_nn
5194 write (iout,'(30x,a/)') &
5195 ' *********** Summary threading statistics ************'
5196 write (iout,'(a)') 'Initial energies:'
5197 write (iout,'(a4,2x,a12,14a14,3a8)') &
5198 'No','seq',(ename(print_order(i)),i=1,nprint_ene),'ETOT',&
5199 'RMSnat','NatCONT','NNCONT','RMS'
5200 ! Energy sort patterns
5205 enet=ener(n_ene-1,ip(i))
5208 if (ener(n_ene-1,ip(j)).lt.enet) then
5210 enet=ener(n_ene-1,ip(j))
5222 ist=nres_base(2,ii)+ipatt(2,i)
5224 energia(i)=ener0(kk,i)
5226 etot=ener0(n_ene_comp+1,i)
5227 rmsnat=ener0(n_ene_comp+2,i)
5228 rms=ener0(n_ene_comp+3,i)
5229 frac=ener0(n_ene_comp+4,i)
5230 frac_nn=ener0(n_ene_comp+5,i)
5233 write (iout,'(i4,2x,a8,i4,14(1pe14.5),0pf8.3,f8.5,f8.5,f8.3)') &
5234 i,str_nam(ii),ist+1,&
5235 (energia(print_order(kk)),kk=1,nprint_ene),&
5236 etot,rmsnat,frac,frac_nn,rms
5238 write (iout,'(i4,2x,a8,i4,14(1pe14.5),0pf8.3)') &
5239 i,str_nam(ii),ist+1,&
5240 (energia(print_order(kk)),kk=1,nprint_ene),etot
5243 write (iout,'(//a)') 'Final energies:'
5244 write (iout,'(a4,2x,a12,17a14,3a8)') &
5245 'No','seq',(ename(print_order(kk)),kk=1,nprint_ene),'ETOT',&
5246 'RMSnat','NatCONT','NNCONT','RMS'
5250 ist=nres_base(2,ii)+ipatt(2,i)
5252 energia(kk)=ener(kk,ik)
5254 etot=ener(n_ene_comp+1,i)
5255 rmsnat=ener(n_ene_comp+2,i)
5256 rms=ener(n_ene_comp+3,i)
5257 frac=ener(n_ene_comp+4,i)
5258 frac_nn=ener(n_ene_comp+5,i)
5259 write (iout,'(i4,2x,a8,i4,14(1pe14.5),0pf8.3,f8.5,f8.5,f8.3)') &
5260 i,str_nam(ii),ist+1,&
5261 (energia(print_order(kk)),kk=1,nprint_ene),&
5262 etot,rmsnat,frac,frac_nn,rms
5264 write (iout,'(/a/)') 'IEXAM array:'
5265 write (iout,'(i5)') nexcl
5267 write (iout,'(2i5)') iexam(1,i),iexam(2,i)
5269 write (iout,'(/a,1pe14.4/a,1pe14.4/)') &
5270 'Max. time for threading step ',max_time_for_thread,&
5271 'Average time for threading step: ',ave_time_for_thread
5273 end subroutine write_thread_summary
5274 !-----------------------------------------------------------------------------
5275 subroutine write_stat_thread(ithread,ipattern,ist)
5277 use energy_data, only: n_ene_comp
5279 ! implicit real*8 (a-h,o-z)
5280 ! include "DIMENSIONS"
5281 ! include "COMMON.CONTROL"
5282 ! include "COMMON.IOUNITS"
5283 ! include "COMMON.THREAD"
5284 ! include "COMMON.FFIELD"
5285 ! include "COMMON.DBASE"
5286 ! include "COMMON.NAMES"
5287 real(kind=8),dimension(0:n_ene) :: energia
5289 integer :: ithread,ipattern,ist,i
5290 real(kind=8) :: etot,rmsnat,rms,frac,frac_nn
5292 #if defined(AIX) || defined(PGI)
5293 open(istat,file=statname,position='append')
5295 open(istat,file=statname,access='append')
5298 energia(i)=ener(i,ithread)
5300 etot=ener(n_ene_comp+1,ithread)
5301 rmsnat=ener(n_ene_comp+2,ithread)
5302 rms=ener(n_ene_comp+3,ithread)
5303 frac=ener(n_ene_comp+4,ithread)
5304 frac_nn=ener(n_ene_comp+5,ithread)
5305 write (istat,'(i4,2x,a8,i4,14(1pe14.5),0pf8.3,f8.5,f8.5,f8.3)') &
5306 ithread,str_nam(ipattern),ist+1,&
5307 (energia(print_order(i)),i=1,nprint_ene),&
5308 etot,rmsnat,frac,frac_nn,rms
5311 end subroutine write_stat_thread
5312 !-----------------------------------------------------------------------------
5314 !-----------------------------------------------------------------------------
5315 end module io_config