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) :: b
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
743 real(kind=8) :: v0ijsccor,v0ijsccor1,v0ijsccor2,v0ijsccor3,si,&
744 dwa16,rjunk,akl,v0ij,rri,epsij,rrij,sigeps,sigt1sq,&
745 sigt2sq,sigii1,sigii2,ratsig1,ratsig2,rsum_max,r_augm,&
746 res1,epsijlip,epspeptube,epssctube,sigmapeptube, &
748 integer :: ichir1,ichir2
749 ! real(kind=8),dimension(maxterm,-maxtor:maxtor,-maxtor:maxtor,2) :: v1_el,v2_el !(maxterm,-maxtor:maxtor,-maxtor:maxtor,2)
750 !el allocate(v1_el(maxterm,-maxtor:maxtor,-maxtor:maxtor,2))
751 !el allocate(v2_el(maxterm,-maxtor:maxtor,-maxtor:maxtor,2))
753 ! For printing parameters after they are read set the following in the UNRES
756 ! setenv PRINT_PARM YES
758 ! To print parameters in LaTeX format rather than as ASCII tables:
762 call getenv_loc("PRINT_PARM",lancuch)
763 lprint = (ucase(lancuch).eq."YES" .or. ucase(lancuch).eq."Y")
764 call getenv_loc("LATEX",lancuch)
765 LaTeX = (ucase(lancuch).eq."YES" .or. ucase(lancuch).eq."Y")
767 dwa16=2.0d0**(1.0d0/6.0d0)
769 ! Assign virtual-bond length
772 vblinv2=vblinv*vblinv
774 ! Read the virtual-bond parameters, masses, and moments of inertia
775 ! and Stokes' radii of the peptide group and side chains
777 allocate(dsc(ntyp1)) !(ntyp1)
778 allocate(dsc_inv(ntyp1)) !(ntyp1)
779 allocate(nbondterm_nucl(ntyp_molec(2))) !(ntyp)
780 allocate(vbldsc0_nucl(maxbondterm,ntyp_molec(2))) !(maxbondterm,ntyp)
781 allocate(aksc_nucl(maxbondterm,ntyp_molec(2))) !(maxbondterm,ntyp)
782 allocate(nbondterm(ntyp)) !(ntyp)
783 allocate(vbldsc0(maxbondterm,ntyp)) !(maxbondterm,ntyp)
784 allocate(aksc(maxbondterm,ntyp)) !(maxbondterm,ntyp)
785 allocate(msc(ntyp+1,5)) !(ntyp+1)
786 allocate(isc(ntyp+1,5)) !(ntyp+1)
787 allocate(restok(ntyp+1,5)) !(ntyp+1)
788 allocate(abond0(maxbondterm,ntyp)) !(maxbondterm,ntyp)
789 allocate(long_r_sidechain(ntyp))
790 allocate(short_r_sidechain(ntyp))
795 read (ibond,*) vbldp0,akp,mp,ip,pstok
798 read (ibond,*) vbldsc0(1,i),aksc(1,i),msc(i),isc(i),restok(i)
799 dsc(i) = vbldsc0(1,i)
803 dsc_inv(i)=1.0D0/dsc(i)
807 read (ibond,*) junk,vbldp0,vbldpDUM,akp,rjunk,mp(1),ip(1),pstok(1)
809 read (ibond,*) nbondterm(i),(vbldsc0(j,i),aksc(j,i),abond0(j,i),&
810 j=1,nbondterm(i)),msc(i,1),isc(i,1),restok(i,1)
811 dsc(i) = vbldsc0(1,i)
815 dsc_inv(i)=1.0D0/dsc(i)
819 read (ibond_nucl,*) vbldp0_nucl,akp_nucl,mp(2),ip(2),pstok(2)
822 read (ibond_nucl,*) vbldsc0_nucl(1,i),aksc_nucl(1,i),msc(i,2),isc(i,2),restok(i,2)
823 ! dsc(i) = vbldsc0_nucl(1,i)
827 ! dsc_inv(i)=1.0D0/dsc(i)
830 ! read (ibond_nucl,*) junk,vbldp0_nucl,akp_nucl,rjunk,mp(2),ip(2),pstok(2)
831 ! do i=1,ntyp_molec(2)
832 ! read (ibond_nucl,*) nbondterm_nucl(i),(vbldsc0_nucl(j,i),&
833 ! aksc_nucl(j,i),abond0_nucl(j,i),&
834 ! j=1,nbondterm_nucl(i)),msc(i,2),isc(i,2),restok(i,2)
835 ! dsc(i) = vbldsc0(1,i)
839 ! dsc_inv(i)=1.0D0/dsc(i)
844 write(iout,'(/a/)')"Dynamic constants of the interaction sites:"
845 write (iout,'(a10,a3,6a10)') 'Type','N','VBL','K','A0','mass',&
847 write(iout,'(a10,i3,6f10.5)') "p",1,vbldp0,akp,0.0d0,mp(1),ip(1),pstok(1)
849 write (iout,'(a10,i3,6f10.5)') restyp(i,1),nbondterm(i),&
850 vbldsc0(1,i),aksc(1,i),abond0(1,i),msc(i,1),isc(i,1),restok(i,1)
852 write (iout,'(13x,3f10.5)') &
853 vbldsc0(j,i),aksc(j,i),abond0(j,i)
857 !----------------------------------------------------
858 allocate(a0thet(-ntyp:ntyp),theta0(-ntyp:ntyp))
859 allocate(sig0(-ntyp:ntyp),sigc0(-ntyp:ntyp)) !(-ntyp:ntyp)
860 allocate(athet(2,-ntyp:ntyp,-1:1,-1:1))
861 allocate(bthet(2,-ntyp:ntyp,-1:1,-1:1)) !(2,-ntyp:ntyp,-1:1,-1:1)
862 allocate(polthet(0:3,-ntyp:ntyp)) !(0:3,-ntyp:ntyp)
863 allocate(gthet(3,-ntyp:ntyp)) !(3,-ntyp:ntyp)
873 allocate(liptranene(ntyp))
874 !C reading lipid parameters
875 write (iout,*) "iliptranpar",iliptranpar
877 read(iliptranpar,*) pepliptran
880 read(iliptranpar,*) liptranene(i)
881 print *,liptranene(i)
887 ! Read the parameters of the probability distribution/energy expression
888 ! of the virtual-bond valence angles theta
891 read (ithep,*,err=111,end=111) a0thet(i),(athet(j,i,1,1),j=1,2),&
892 (bthet(j,i,1,1),j=1,2)
893 read (ithep,*,err=111,end=111) (polthet(j,i),j=0,3)
894 read (ithep,*,err=111,end=111) (gthet(j,i),j=1,3)
895 read (ithep,*,err=111,end=111) theta0(i),sig0(i),sigc0(i)
899 athet(1,i,1,-1)=athet(1,i,1,1)
900 athet(2,i,1,-1)=athet(2,i,1,1)
901 bthet(1,i,1,-1)=-bthet(1,i,1,1)
902 bthet(2,i,1,-1)=-bthet(2,i,1,1)
903 athet(1,i,-1,1)=-athet(1,i,1,1)
904 athet(2,i,-1,1)=-athet(2,i,1,1)
905 bthet(1,i,-1,1)=bthet(1,i,1,1)
906 bthet(2,i,-1,1)=bthet(2,i,1,1)
910 athet(1,i,-1,-1)=athet(1,-i,1,1)
911 athet(2,i,-1,-1)=-athet(2,-i,1,1)
912 bthet(1,i,-1,-1)=bthet(1,-i,1,1)
913 bthet(2,i,-1,-1)=-bthet(2,-i,1,1)
914 athet(1,i,-1,1)=athet(1,-i,1,1)
915 athet(2,i,-1,1)=-athet(2,-i,1,1)
916 bthet(1,i,-1,1)=-bthet(1,-i,1,1)
917 bthet(2,i,-1,1)=bthet(2,-i,1,1)
918 athet(1,i,1,-1)=-athet(1,-i,1,1)
919 athet(2,i,1,-1)=athet(2,-i,1,1)
920 bthet(1,i,1,-1)=bthet(1,-i,1,1)
921 bthet(2,i,1,-1)=-bthet(2,-i,1,1)
926 polthet(j,i)=polthet(j,-i)
929 gthet(j,i)=gthet(j,-i)
937 'Parameters of the virtual-bond valence angles:'
938 write (iout,'(/a/9x,5a/79(1h-))') 'Fourier coefficients:',&
939 ' ATHETA0 ',' A1 ',' A2 ',&
942 write(iout,'(a3,i4,2x,5(1pe14.5))') restyp(i,1),i,&
943 a0thet(i),(athet(j,i,1,1),j=1,2),(bthet(j,i,1,1),j=1,2)
945 write (iout,'(/a/9x,5a/79(1h-))') &
946 'Parameters of the expression for sigma(theta_c):',&
947 ' ALPH0 ',' ALPH1 ',' ALPH2 ',&
948 ' ALPH3 ',' SIGMA0C '
950 write (iout,'(a3,i4,2x,5(1pe14.5))') restyp(i,1),i,&
951 (polthet(j,i),j=0,3),sigc0(i)
953 write (iout,'(/a/9x,5a/79(1h-))') &
954 'Parameters of the second gaussian:',&
955 ' THETA0 ',' SIGMA0 ',' G1 ',&
958 write (iout,'(a3,i4,2x,5(1pe14.5))') restyp(i,1),i,theta0(i),&
959 sig0(i),(gthet(j,i),j=1,3)
963 'Parameters of the virtual-bond valence angles:'
964 write (iout,'(/a/9x,5a/79(1h-))') &
965 'Coefficients of expansion',&
966 ' theta0 ',' a1*10^2 ',' a2*10^2 ',&
967 ' b1*10^1 ',' b2*10^1 '
969 write(iout,'(a3,1h&,2x,5(f8.3,1h&))') restyp(i,1),&
970 a0thet(i),(100*athet(j,i,1,1),j=1,2),&
971 (10*bthet(j,i,1,1),j=1,2)
973 write (iout,'(/a/9x,5a/79(1h-))') &
974 'Parameters of the expression for sigma(theta_c):',&
975 ' alpha0 ',' alph1 ',' alph2 ',&
976 ' alhp3 ',' sigma0c '
978 write (iout,'(a3,1h&,2x,5(1pe12.3,1h&))') restyp(i,1),&
979 (polthet(j,i),j=0,3),sigc0(i)
981 write (iout,'(/a/9x,5a/79(1h-))') &
982 'Parameters of the second gaussian:',&
983 ' theta0 ',' sigma0*10^2 ',' G1*10^-1',&
986 write (iout,'(a3,1h&,2x,5(f8.3,1h&))') restyp(i,1),theta0(i),&
987 100*sig0(i),gthet(1,i)*0.1D0,gthet(2,i),gthet(3,i)*10.0D0
993 ! Read the parameters of Utheta determined from ab initio surfaces
994 ! Kozlowska et al., J. Phys.: Condens. Matter 19 (2007) 285203
996 read (ithep,*,err=111,end=111) nthetyp,ntheterm,ntheterm2,&
997 ntheterm3,nsingle,ndouble
998 nntheterm=max0(ntheterm,ntheterm2,ntheterm3)
1000 !----------------------------------------------------
1001 allocate(ithetyp(-ntyp1:ntyp1)) !(-ntyp1:ntyp1)
1002 allocate(aa0thet(-nthetyp-1:nthetyp+1,&
1003 -nthetyp-1:nthetyp+1,-nthetyp-1:nthetyp+1,2))
1004 !(-maxthetyp1:maxthetyp1,-maxthetyp1:maxthetyp1,-maxthetyp1:maxthetyp1,2)
1005 allocate(aathet(ntheterm,-nthetyp-1:nthetyp+1,&
1006 -nthetyp-1:nthetyp+1,-nthetyp-1:nthetyp+1,2))
1007 !(maxtheterm,-maxthetyp1:maxthetyp1,&
1008 ! -maxthetyp1:maxthetyp1,-maxthetyp1:maxthetyp1,2)
1009 allocate(bbthet(nsingle,ntheterm2,-nthetyp-1:nthetyp+1,&
1010 -nthetyp-1:nthetyp+1,-nthetyp-1:nthetyp+1,2))
1011 allocate(ccthet(nsingle,ntheterm2,-nthetyp-1:nthetyp+1,&
1012 -nthetyp-1:nthetyp+1,-nthetyp-1:nthetyp+1,2))
1013 allocate(ddthet(nsingle,ntheterm2,-nthetyp-1:nthetyp+1,&
1014 -nthetyp-1:nthetyp+1,-nthetyp-1:nthetyp+1,2))
1015 allocate(eethet(nsingle,ntheterm2,-nthetyp-1:nthetyp+1,&
1016 -nthetyp-1:nthetyp+1,-nthetyp-1:nthetyp+1,2))
1017 !(maxsingle,maxtheterm2,-maxthetyp1:maxthetyp1,&
1018 ! -maxthetyp1:maxthetyp1,-maxthetyp1:maxthetyp1,2)
1019 allocate(ffthet(ndouble,ndouble,ntheterm3,-nthetyp-1:nthetyp+1,&
1020 -nthetyp-1:nthetyp+1,-nthetyp-1:nthetyp+1,2))
1021 allocate(ggthet(ndouble,ndouble,ntheterm3,-nthetyp-1:nthetyp+1,&
1022 -nthetyp-1:nthetyp+1,-nthetyp-1:nthetyp+1,2))
1023 !(maxdouble,maxdouble,maxtheterm3,-maxthetyp1:maxthetyp1,&
1024 ! -maxthetyp1:maxthetyp1,-maxthetyp1:maxthetyp1,2))
1026 read (ithep,*,err=111,end=111) (ithetyp(i),i=1,ntyp1)
1028 ithetyp(i)=-ithetyp(-i)
1031 aa0thet(:,:,:,:)=0.0d0
1032 aathet(:,:,:,:,:)=0.0d0
1033 bbthet(:,:,:,:,:,:)=0.0d0
1034 ccthet(:,:,:,:,:,:)=0.0d0
1035 ddthet(:,:,:,:,:,:)=0.0d0
1036 eethet(:,:,:,:,:,:)=0.0d0
1037 ffthet(:,:,:,:,:,:,:)=0.0d0
1038 ggthet(:,:,:,:,:,:,:)=0.0d0
1040 ! VAR:iblock means terminally blocking group 1=non-proline 2=proline
1042 ! VAR:ntethtyp is type of theta potentials type currently 0=glycine
1043 ! VAR:1=non-glicyne non-proline 2=proline
1044 ! VAR:negative values for D-aminoacid
1046 do j=-nthetyp,nthetyp
1047 do k=-nthetyp,nthetyp
1048 read (ithep,'(6a)',end=111,err=111) res1
1049 read (ithep,*,end=111,err=111) aa0thet(i,j,k,iblock)
1050 ! VAR: aa0thet is variable describing the average value of Foureir
1051 ! VAR: expansion series
1052 ! VAR: aathet is foureir expansion in theta/2 angle for full formula
1053 ! VAR: look at the fitting equation in Kozlowska et al., J. Phys.:
1054 !ondens. Matter 19 (2007) 285203 and Sieradzan et al., unpublished
1055 read (ithep,*,end=111,err=111) &
1056 (aathet(l,i,j,k,iblock),l=1,ntheterm)
1057 read (ithep,*,end=111,err=111) &
1058 ((bbthet(lll,ll,i,j,k,iblock),lll=1,nsingle),&
1059 (ccthet(lll,ll,i,j,k,iblock),lll=1,nsingle),&
1060 (ddthet(lll,ll,i,j,k,iblock),lll=1,nsingle),&
1061 (eethet(lll,ll,i,j,k,iblock),lll=1,nsingle),&
1063 read (ithep,*,end=111,err=111) &
1064 (((ffthet(llll,lll,ll,i,j,k,iblock),&
1065 ffthet(lll,llll,ll,i,j,k,iblock),&
1066 ggthet(llll,lll,ll,i,j,k,iblock),&
1067 ggthet(lll,llll,ll,i,j,k,iblock),&
1068 llll=1,lll-1),lll=2,ndouble),ll=1,ntheterm3)
1073 ! For dummy ends assign glycine-type coefficients of theta-only terms; the
1074 ! coefficients of theta-and-gamma-dependent terms are zero.
1075 ! IF YOU WANT VALENCE POTENTIALS FOR DUMMY ATOM UNCOMENT BELOW (NOT
1076 ! RECOMENTDED AFTER VERSION 3.3)
1080 ! aathet(l,i,j,nthetyp+1,iblock)=aathet(l,i,j,1,iblock)
1081 ! aathet(l,nthetyp+1,i,j,iblock)=aathet(l,1,i,j,iblock)
1083 ! aa0thet(i,j,nthetyp+1,iblock)=aa0thet(i,j,1,iblock)
1084 ! aa0thet(nthetyp+1,i,j,iblock)=aa0thet(1,i,j,iblock)
1087 ! aathet(l,nthetyp+1,i,nthetyp+1,iblock)=aathet(l,1,i,1,iblock)
1089 ! aa0thet(nthetyp+1,i,nthetyp+1,iblock)=aa0thet(1,i,1,iblock)
1092 ! AND COMMENT THE LOOPS BELOW
1096 aathet(l,i,j,nthetyp+1,iblock)=0.0d0
1097 aathet(l,nthetyp+1,i,j,iblock)=0.0d0
1099 aa0thet(i,j,nthetyp+1,iblock)=0.0d0
1100 aa0thet(nthetyp+1,i,j,iblock)=0.0d0
1103 aathet(l,nthetyp+1,i,nthetyp+1,iblock)=0.0d0
1105 aa0thet(nthetyp+1,i,nthetyp+1,iblock)=0.0d0
1110 ! Substitution for D aminoacids from symmetry.
1113 do j=-nthetyp,nthetyp
1114 do k=-nthetyp,nthetyp
1115 aa0thet(i,j,k,iblock)=aa0thet(-i,-j,-k,iblock)
1117 aathet(l,i,j,k,iblock)=aathet(l,-i,-j,-k,iblock)
1121 bbthet(lll,ll,i,j,k,iblock)=bbthet(lll,ll,-i,-j,-k,iblock)
1122 ccthet(lll,ll,i,j,k,iblock)=-ccthet(lll,ll,-i,-j,-k,iblock)
1123 ddthet(lll,ll,i,j,k,iblock)=ddthet(lll,ll,-i,-j,-k,iblock)
1124 eethet(lll,ll,i,j,k,iblock)=-eethet(lll,ll,-i,-j,-k,iblock)
1130 ffthet(llll,lll,ll,i,j,k,iblock)= &
1131 ffthet(llll,lll,ll,-i,-j,-k,iblock)
1132 ffthet(lll,llll,ll,i,j,k,iblock)= &
1133 ffthet(lll,llll,ll,-i,-j,-k,iblock)
1134 ggthet(llll,lll,ll,i,j,k,iblock)= &
1135 -ggthet(llll,lll,ll,-i,-j,-k,iblock)
1136 ggthet(lll,llll,ll,i,j,k,iblock)= &
1137 -ggthet(lll,llll,ll,-i,-j,-k,iblock)
1146 ! Control printout of the coefficients of virtual-bond-angle potentials
1149 write (iout,'(//a)') 'Parameter of virtual-bond-angle potential'
1154 write (iout,'(//4a)') &
1155 'Type ',onelett(i),onelett(j),onelett(k)
1156 write (iout,'(//a,10x,a)') " l","a[l]"
1157 write (iout,'(i2,1pe15.5)') 0,aa0thet(i,j,k,iblock)
1158 write (iout,'(i2,1pe15.5)') &
1159 (l,aathet(l,i,j,k,iblock),l=1,ntheterm)
1161 write (iout,'(//2h m,4(9x,a,3h[m,,i1,1h]))') &
1162 "b",l,"c",l,"d",l,"e",l
1164 write (iout,'(i2,4(1pe15.5))') m,&
1165 bbthet(m,l,i,j,k,iblock),ccthet(m,l,i,j,k,iblock),&
1166 ddthet(m,l,i,j,k,iblock),eethet(m,l,i,j,k,iblock)
1170 write (iout,'(//3hm,n,4(6x,a,5h[m,n,,i1,1h]))') &
1171 "f+",l,"f-",l,"g+",l,"g-",l
1174 write (iout,'(i1,1x,i1,4(1pe15.5))') n,m,&
1175 ffthet(n,m,l,i,j,k,iblock),&
1176 ffthet(m,n,l,i,j,k,iblock),&
1177 ggthet(n,m,l,i,j,k,iblock),&
1178 ggthet(m,n,l,i,j,k,iblock)
1188 write (2,*) "Start reading THETA_PDB",ithep_pdb
1190 ! write (2,*) 'i=',i
1191 read (ithep_pdb,*,err=111,end=111) &
1192 a0thet(i),(athet(j,i,1,1),j=1,2),&
1193 (bthet(j,i,1,1),j=1,2)
1194 read (ithep_pdb,*,err=111,end=111) (polthet(j,i),j=0,3)
1195 read (ithep_pdb,*,err=111,end=111) (gthet(j,i),j=1,3)
1196 read (ithep_pdb,*,err=111,end=111) theta0(i),sig0(i),sigc0(i)
1197 sigc0(i)=sigc0(i)**2
1200 athet(1,i,1,-1)=athet(1,i,1,1)
1201 athet(2,i,1,-1)=athet(2,i,1,1)
1202 bthet(1,i,1,-1)=-bthet(1,i,1,1)
1203 bthet(2,i,1,-1)=-bthet(2,i,1,1)
1204 athet(1,i,-1,1)=-athet(1,i,1,1)
1205 athet(2,i,-1,1)=-athet(2,i,1,1)
1206 bthet(1,i,-1,1)=bthet(1,i,1,1)
1207 bthet(2,i,-1,1)=bthet(2,i,1,1)
1210 a0thet(i)=a0thet(-i)
1211 athet(1,i,-1,-1)=athet(1,-i,1,1)
1212 athet(2,i,-1,-1)=-athet(2,-i,1,1)
1213 bthet(1,i,-1,-1)=bthet(1,-i,1,1)
1214 bthet(2,i,-1,-1)=-bthet(2,-i,1,1)
1215 athet(1,i,-1,1)=athet(1,-i,1,1)
1216 athet(2,i,-1,1)=-athet(2,-i,1,1)
1217 bthet(1,i,-1,1)=-bthet(1,-i,1,1)
1218 bthet(2,i,-1,1)=bthet(2,-i,1,1)
1219 athet(1,i,1,-1)=-athet(1,-i,1,1)
1220 athet(2,i,1,-1)=athet(2,-i,1,1)
1221 bthet(1,i,1,-1)=bthet(1,-i,1,1)
1222 bthet(2,i,1,-1)=-bthet(2,-i,1,1)
1223 theta0(i)=theta0(-i)
1227 polthet(j,i)=polthet(j,-i)
1230 gthet(j,i)=gthet(j,-i)
1233 write (2,*) "End reading THETA_PDB"
1237 !--------------- Reading theta parameters for nucleic acid-------
1238 read (ithep_nucl,*,err=111,end=111) nthetyp_nucl,ntheterm_nucl,&
1239 ntheterm2_nucl,ntheterm3_nucl,nsingle_nucl,ndouble_nucl
1240 nntheterm_nucl=max0(ntheterm_nucl,ntheterm2_nucl,ntheterm3_nucl)
1241 allocate(ithetyp_nucl(ntyp1_molec(2))) !(-ntyp1:ntyp1)
1242 allocate(aa0thet_nucl(nthetyp_nucl+1,&
1243 nthetyp_nucl+1,nthetyp_nucl+1))
1244 !(-maxthetyp1:maxthetyp1,-maxthetyp1:maxthetyp1,-maxthetyp1:maxthetyp1,2)
1245 allocate(aathet_nucl(ntheterm_nucl+1,nthetyp_nucl+1,&
1246 nthetyp_nucl+1,nthetyp_nucl+1))
1247 !(maxtheterm,-maxthetyp1:maxthetyp1,&
1248 ! -maxthetyp1:maxthetyp1,-maxthetyp1:maxthetyp1,2)
1249 allocate(bbthet_nucl(nsingle_nucl+1,ntheterm2_nucl+1,nthetyp_nucl+1,&
1250 nthetyp_nucl+1,nthetyp_nucl+1))
1251 allocate(ccthet_nucl(nsingle_nucl+1,ntheterm2_nucl+1,nthetyp_nucl+1,&
1252 nthetyp_nucl+1,nthetyp_nucl+1))
1253 allocate(ddthet_nucl(nsingle_nucl+1,ntheterm2_nucl+1,nthetyp_nucl+1,&
1254 nthetyp_nucl+1,nthetyp_nucl+1))
1255 allocate(eethet_nucl(nsingle_nucl+1,ntheterm2_nucl+1,nthetyp_nucl+1,&
1256 nthetyp_nucl+1,nthetyp_nucl+1))
1257 !(maxsingle,maxtheterm2,-maxthetyp1:maxthetyp1,&
1258 ! -maxthetyp1:maxthetyp1,-maxthetyp1:maxthetyp1,2)
1259 allocate(ffthet_nucl(ndouble_nucl+1,ndouble_nucl+1,ntheterm3_nucl+1,&
1260 nthetyp_nucl+1,nthetyp_nucl+1,nthetyp_nucl+1))
1261 allocate(ggthet_nucl(ndouble_nucl+1,ndouble_nucl+1,ntheterm3_nucl+1,&
1262 nthetyp_nucl+1,nthetyp_nucl+1,nthetyp_nucl+1))
1264 !(maxdouble,maxdouble,maxtheterm3,-maxthetyp1:maxthetyp1,&
1265 ! -maxthetyp1:maxthetyp1,-maxthetyp1:maxthetyp1,2))
1267 read (ithep_nucl,*,err=111,end=111) (ithetyp_nucl(i),i=1,ntyp1_molec(2))
1269 aa0thet_nucl(:,:,:)=0.0d0
1270 aathet_nucl(:,:,:,:)=0.0d0
1271 bbthet_nucl(:,:,:,:,:)=0.0d0
1272 ccthet_nucl(:,:,:,:,:)=0.0d0
1273 ddthet_nucl(:,:,:,:,:)=0.0d0
1274 eethet_nucl(:,:,:,:,:)=0.0d0
1275 ffthet_nucl(:,:,:,:,:,:)=0.0d0
1276 ggthet_nucl(:,:,:,:,:,:)=0.0d0
1281 read (ithep_nucl,'(3a)',end=111,err=111) t1,t2,t3
1282 read (ithep_nucl,*,end=111,err=111) aa0thet_nucl(i,j,k)
1283 read (ithep_nucl,*,end=111,err=111)(aathet_nucl(l,i,j,k),l=1,ntheterm_nucl)
1284 read (ithep_nucl,*,end=111,err=111) &
1285 (((bbthet_nucl(lll,ll,i,j,k),lll=1,nsingle_nucl), &
1286 (ccthet_nucl(lll,ll,i,j,k),lll=1,nsingle_nucl), &
1287 (ddthet_nucl(lll,ll,i,j,k),lll=1,nsingle_nucl), &
1288 (eethet_nucl(lll,ll,i,j,k),lll=1,nsingle_nucl)),ll=1,ntheterm2_nucl)
1289 read (ithep_nucl,*,end=111,err=111) &
1290 (((ffthet_nucl(llll,lll,ll,i,j,k),ffthet_nucl(lll,llll,ll,i,j,k), &
1291 ggthet_nucl(llll,lll,ll,i,j,k),ggthet_nucl(lll,llll,ll,i,j,k), &
1292 llll=1,lll-1),lll=2,ndouble_nucl),ll=1,ntheterm3_nucl)
1297 !-------------------------------------------
1298 allocate(nlob(ntyp1)) !(ntyp1)
1299 allocate(bsc(maxlob,ntyp)) !(maxlob,ntyp)
1300 allocate(censc(3,maxlob,-ntyp:ntyp)) !(3,maxlob,-ntyp:ntyp)
1301 allocate(gaussc(3,3,maxlob,-ntyp:ntyp)) !(3,3,maxlob,-ntyp:ntyp)
1308 gaussc(:,:,:,:)=0.0D0
1312 ! Read the parameters of the probability distribution/energy expression
1313 ! of the side chains.
1316 read (irotam,'(3x,i3,f8.3)',end=112,err=112) nlob(i),dsc(i)
1320 dsc_inv(i)=1.0D0/dsc(i)
1331 read(irotam,*,end=112,err=112)(censc(k,1,i),k=1,3),&
1332 ((blower(k,l,1),l=1,k),k=1,3)
1333 censc(1,1,-i)=censc(1,1,i)
1334 censc(2,1,-i)=censc(2,1,i)
1335 censc(3,1,-i)=-censc(3,1,i)
1337 read (irotam,*,end=112,err=112) bsc(j,i)
1338 read (irotam,*,end=112,err=112) (censc(k,j,i),k=1,3),&
1339 ((blower(k,l,j),l=1,k),k=1,3)
1340 censc(1,j,-i)=censc(1,j,i)
1341 censc(2,j,-i)=censc(2,j,i)
1342 censc(3,j,-i)=-censc(3,j,i)
1343 ! BSC is amplitude of Gaussian
1350 akl=akl+blower(k,m,j)*blower(l,m,j)
1354 if (((k.eq.3).and.(l.ne.3)) &
1355 .or.((l.eq.3).and.(k.ne.3))) then
1356 gaussc(k,l,j,-i)=-akl
1357 gaussc(l,k,j,-i)=-akl
1359 gaussc(k,l,j,-i)=akl
1360 gaussc(l,k,j,-i)=akl
1369 write (iout,'(/a)') 'Parameters of side-chain local geometry'
1372 if (nlobi.gt.0) then
1374 write (iout,'(/3a,i2,a,f8.3)') 'Residue type: ',restyp(i,1),&
1375 ' # of gaussian lobes:',nlobi,' dsc:',dsc(i)
1376 write (iout,'(1h&,a,3(2h&&,f8.3,2h&&))') &
1377 'log h',(bsc(j,i),j=1,nlobi)
1378 write (iout,'(1h&,a,3(1h&,f8.3,1h&,f8.3,1h&,f8.3,1h&))') &
1379 'x',((censc(k,j,i),k=1,3),j=1,nlobi)
1381 write (iout,'(2h& ,5(2x,1h&,3(f7.3,1h&)))') &
1382 ((gaussc(k,l,j,i),l=1,3),j=1,nlobi)
1385 write (iout,'(/a,8x,i1,4(25x,i1))') 'Lobe:',(j,j=1,nlobi)
1386 write (iout,'(a,f10.4,4(16x,f10.4))') &
1387 'Center ',(bsc(j,i),j=1,nlobi)
1388 write (iout,'(5(2x,3f8.4))') ((censc(k,j,i),k=1,3),&
1397 ! Read scrot parameters for potentials determined from all-atom AM1 calculations
1398 ! added by Urszula Kozlowska 07/11/2007
1400 !el Maximum number of SC local term fitting function coefficiants
1401 !el integer,parameter :: maxsccoef=65
1403 allocate(sc_parmin(65,ntyp)) !(maxsccoef,ntyp)
1406 read (irotam,*,end=112,err=112)
1408 read (irotam,*,end=112,err=112)
1411 read(irotam,*,end=112,err=112) sc_parmin(j,i)
1416 ! Read the parameters of the probability distribution/energy expression
1417 ! of the side chains.
1419 write (2,*) "Start reading ROTAM_PDB"
1421 read (irotam_pdb,'(3x,i3,f8.3)',end=112,err=112) nlob(i),dsc(i)
1425 dsc_inv(i)=1.0D0/dsc(i)
1436 read(irotam_pdb,*,end=112,err=112)(censc(k,1,i),k=1,3),&
1437 ((blower(k,l,1),l=1,k),k=1,3)
1439 read (irotam_pdb,*,end=112,err=112) bsc(j,i)
1440 read (irotam_pdb,*,end=112,err=112) (censc(k,j,i),k=1,3),&
1441 ((blower(k,l,j),l=1,k),k=1,3)
1448 akl=akl+blower(k,m,j)*blower(l,m,j)
1458 write (2,*) "End reading ROTAM_PDB"
1464 ! Read torsional parameters in old format
1466 allocate(itortyp(ntyp1)) !(-ntyp1:ntyp1)
1468 read (itorp,*,end=113,err=113) ntortyp,nterm_old
1469 if (lprint)write (iout,*) 'ntortyp,nterm',ntortyp,nterm_old
1470 read (itorp,*,end=113,err=113) (itortyp(i),i=1,ntyp)
1472 !el from energy module--------
1473 allocate(v1(nterm_old,ntortyp,ntortyp))
1474 allocate(v2(nterm_old,ntortyp,ntortyp)) !(maxterm,-maxtor:maxtor,-maxtor:maxtor)
1475 !el---------------------------
1480 read (itorp,*,end=113,err=113) kk,v1(k,j,i),v2(k,j,i)
1486 write (iout,'(/a/)') 'Torsional constants:'
1489 write (iout,'(2i3,6f10.5)') i,j,(v1(k,i,j),k=1,nterm_old)
1490 write (iout,'(6x,6f10.5)') (v2(k,i,j),k=1,nterm_old)
1496 ! Read torsional parameters
1498 allocate(itortyp(-ntyp1:ntyp1)) !(-ntyp1:ntyp1)
1499 read (itorp,*,end=113,err=113) ntortyp
1500 !el from energy module---------
1501 allocate(nterm(-ntortyp:ntortyp,-ntortyp:ntortyp,2)) !(-maxtor:maxtor,-maxtor:maxtor,2)
1502 allocate(nlor(-ntortyp:ntortyp,-ntortyp:ntortyp,2)) !(-maxtor:maxtor,-maxtor:maxtor,2)
1504 allocate(vlor1(maxlor,-ntortyp:ntortyp,-ntortyp:ntortyp)) !(maxlor,-maxtor:maxtor,-maxtor:maxtor)
1505 allocate(vlor2(maxlor,ntortyp,ntortyp))
1506 allocate(vlor3(maxlor,ntortyp,ntortyp)) !(maxlor,maxtor,maxtor)
1507 allocate(v0(-ntortyp:ntortyp,-ntortyp:ntortyp,2)) !(-maxtor:maxtor,-maxtor:maxtor,2)
1509 allocate(v1(maxterm,-ntortyp:ntortyp,-ntortyp:ntortyp,2))
1510 allocate(v2(maxterm,-ntortyp:ntortyp,-ntortyp:ntortyp,2)) !(maxterm,-maxtor:maxtor,-maxtor:maxtor,2)
1511 !el---------------------------
1514 !el---------------------------
1516 read (itorp,*,end=113,err=113) (itortyp(i),i=1,ntyp)
1518 itortyp(i)=-itortyp(-i)
1520 itortyp(ntyp1)=ntortyp
1521 itortyp(-ntyp1)=-ntortyp
1523 write (iout,*) 'ntortyp',ntortyp
1525 do j=-ntortyp+1,ntortyp-1
1526 read (itorp,*,end=113,err=113) nterm(i,j,iblock),&
1528 nterm(-i,-j,iblock)=nterm(i,j,iblock)
1529 nlor(-i,-j,iblock)=nlor(i,j,iblock)
1532 do k=1,nterm(i,j,iblock)
1533 read (itorp,*,end=113,err=113) kk,v1(k,i,j,iblock),&
1535 v1(k,-i,-j,iblock)=v1(k,i,j,iblock)
1536 v2(k,-i,-j,iblock)=-v2(k,i,j,iblock)
1537 v0ij=v0ij+si*v1(k,i,j,iblock)
1539 ! write(iout,*) i,j,k,iblock,nterm(i,j,iblock) !
1540 ! write(iout,*) v1(k,-i,-j,iblock),v1(k,i,j,iblock),&!
1541 ! v2(k,-i,-j,iblock),v2(k,i,j,iblock)!
1543 do k=1,nlor(i,j,iblock)
1544 read (itorp,*,end=113,err=113) kk,vlor1(k,i,j),&
1545 vlor2(k,i,j),vlor3(k,i,j)
1546 v0ij=v0ij+vlor1(k,i,j)/(1+vlor3(k,i,j)**2)
1549 v0(-i,-j,iblock)=v0ij
1555 write (iout,'(/a/)') 'Torsional constants:'
1557 do i=-ntortyp,ntortyp
1558 do j=-ntortyp,ntortyp
1559 write (iout,*) 'ityp',i,' jtyp',j
1560 write (iout,*) 'Fourier constants'
1561 do k=1,nterm(i,j,iblock)
1562 write (iout,'(2(1pe15.5))') v1(k,i,j,iblock),&
1565 write (iout,*) 'Lorenz constants'
1566 do k=1,nlor(i,j,iblock)
1567 write (iout,'(3(1pe15.5))') &
1568 vlor1(k,i,j),vlor2(k,i,j),vlor3(k,i,j)
1574 !elwrite (iout,'(/a/)') 'Torsional constants:',vlor1(k,i,j),vlor2(k,i,j),vlor3(k,i,j)
1576 ! 6/23/01 Read parameters for double torsionals
1578 !el from energy module------------
1579 allocate(v1c(2,maxtermd_1,-ntortyp+1:ntortyp-1,-ntortyp+1:ntortyp-1,-ntortyp+1:ntortyp-1,2))
1580 allocate(v1s(2,maxtermd_1,-ntortyp+1:ntortyp-1,-ntortyp+1:ntortyp-1,-ntortyp+1:ntortyp-1,2))
1581 !(2,maxtermd_1,-maxtor:maxtor,-maxtor:maxtor,-maxtor:maxtor,2)
1582 allocate(v2c(maxtermd_2,maxtermd_2,-ntortyp+1:ntortyp-1,-ntortyp+1:ntortyp-1,-ntortyp+1:ntortyp-1,2))
1583 allocate(v2s(maxtermd_2,maxtermd_2,-ntortyp+1:ntortyp-1,-ntortyp+1:ntortyp-1,-ntortyp+1:ntortyp-1,2))
1584 !(maxtermd_2,maxtermd_2,-maxtor:maxtor,-maxtor:maxtor,-maxtor:maxtor,2)
1585 allocate(ntermd_1(-ntortyp+1:ntortyp-1,-ntortyp+1:ntortyp-1,-ntortyp+1:ntortyp-1,2))
1586 allocate(ntermd_2(-ntortyp+1:ntortyp-1,-ntortyp+1:ntortyp-1,-ntortyp+1:ntortyp-1,2))
1587 !(-maxtor:maxtor,-maxtor:maxtor,-maxtor:maxtor,2)
1588 !---------------------------------
1592 do j=-ntortyp+1,ntortyp-1
1593 do k=-ntortyp+1,ntortyp-1
1594 read (itordp,'(3a1)',end=114,err=114) t1,t2,t3
1595 ! write (iout,*) "OK onelett",
1598 if (t1.ne.toronelet(i) .or. t2.ne.toronelet(j) &
1599 .or. t3.ne.toronelet(k)) then
1600 write (iout,*) "Error in double torsional parameter file",&
1603 call MPI_Finalize(Ierror)
1605 stop "Error in double torsional parameter file"
1607 read (itordp,*,end=114,err=114) ntermd_1(i,j,k,iblock),&
1608 ntermd_2(i,j,k,iblock)
1609 ntermd_1(-i,-j,-k,iblock)=ntermd_1(i,j,k,iblock)
1610 ntermd_2(-i,-j,-k,iblock)=ntermd_2(i,j,k,iblock)
1611 read (itordp,*,end=114,err=114) (v1c(1,l,i,j,k,iblock),l=1,&
1612 ntermd_1(i,j,k,iblock))
1613 read (itordp,*,end=114,err=114) (v1s(1,l,i,j,k,iblock),l=1,&
1614 ntermd_1(i,j,k,iblock))
1615 read (itordp,*,end=114,err=114) (v1c(2,l,i,j,k,iblock),l=1,&
1616 ntermd_1(i,j,k,iblock))
1617 read (itordp,*,end=114,err=114) (v1s(2,l,i,j,k,iblock),l=1,&
1618 ntermd_1(i,j,k,iblock))
1619 ! Martix of D parameters for one dimesional foureir series
1620 do l=1,ntermd_1(i,j,k,iblock)
1621 v1c(1,l,-i,-j,-k,iblock)=v1c(1,l,i,j,k,iblock)
1622 v1s(1,l,-i,-j,-k,iblock)=-v1s(1,l,i,j,k,iblock)
1623 v1c(2,l,-i,-j,-k,iblock)=v1c(2,l,i,j,k,iblock)
1624 v1s(2,l,-i,-j,-k,iblock)=-v1s(2,l,i,j,k,iblock)
1625 ! write(iout,*) "whcodze" ,
1626 ! & v1s(2,l,-i,-j,-k,iblock),v1s(2,l,i,j,k,iblock)
1628 read (itordp,*,end=114,err=114) ((v2c(l,m,i,j,k,iblock),&
1629 v2c(m,l,i,j,k,iblock),v2s(l,m,i,j,k,iblock),&
1630 v2s(m,l,i,j,k,iblock),&
1631 m=1,l-1),l=1,ntermd_2(i,j,k,iblock))
1632 ! Martix of D parameters for two dimesional fourier series
1633 do l=1,ntermd_2(i,j,k,iblock)
1635 v2c(l,m,-i,-j,-k,iblock)=v2c(l,m,i,j,k,iblock)
1636 v2c(m,l,-i,-j,-k,iblock)=v2c(m,l,i,j,k,iblock)
1637 v2s(l,m,-i,-j,-k,iblock)=-v2s(l,m,i,j,k,iblock)
1638 v2s(m,l,-i,-j,-k,iblock)=-v2s(m,l,i,j,k,iblock)
1647 write (iout,*) 'Constants for double torsionals'
1650 do j=-ntortyp+1,ntortyp-1
1651 do k=-ntortyp+1,ntortyp-1
1652 write (iout,*) 'ityp',i,' jtyp',j,' ktyp',k,&
1653 ' nsingle',ntermd_1(i,j,k,iblock),&
1654 ' ndouble',ntermd_2(i,j,k,iblock)
1656 write (iout,*) 'Single angles:'
1657 do l=1,ntermd_1(i,j,k,iblock)
1658 write (iout,'(i5,2f10.5,5x,2f10.5,5x,2f10.5)') l,&
1659 v1c(1,l,i,j,k,iblock),v1s(1,l,i,j,k,iblock),&
1660 v1c(2,l,i,j,k,iblock),v1s(2,l,i,j,k,iblock),&
1661 v1s(1,l,-i,-j,-k,iblock),v1s(2,l,-i,-j,-k,iblock)
1664 write (iout,*) 'Pairs of angles:'
1665 write (iout,'(3x,20i10)') (l,l=1,ntermd_2(i,j,k,iblock))
1666 do l=1,ntermd_2(i,j,k,iblock)
1667 write (iout,'(i5,20f10.5)') &
1668 l,(v2c(l,m,i,j,k,iblock),m=1,ntermd_2(i,j,k,iblock))
1671 write (iout,'(3x,20i10)') (l,l=1,ntermd_2(i,j,k,iblock))
1672 do l=1,ntermd_2(i,j,k,iblock)
1673 write (iout,'(i5,20f10.5)') &
1674 l,(v2s(l,m,i,j,k,iblock),m=1,ntermd_2(i,j,k,iblock)),&
1675 (v2s(l,m,-i,-j,-k,iblock),m=1,ntermd_2(i,j,k,iblock))
1684 allocate(itortyp_nucl(ntyp1_molec(2))) !(-ntyp1:ntyp1)
1685 read (itorp_nucl,*,end=113,err=113) ntortyp_nucl
1686 ! print *,"ntortyp_nucl",ntortyp_nucl,ntyp_molec(2)
1687 !el from energy module---------
1688 allocate(nterm_nucl(ntortyp_nucl,ntortyp_nucl)) !(-maxtor:maxtor,-maxtor:maxtor,2)
1689 allocate(nlor_nucl(ntortyp_nucl,ntortyp_nucl)) !(-maxtor:maxtor,-maxtor:maxtor,2)
1691 allocate(vlor1_nucl(maxlor,ntortyp_nucl,ntortyp_nucl)) !(maxlor,-maxtor:maxtor,-maxtor:maxtor)
1692 allocate(vlor2_nucl(maxlor,ntortyp_nucl,ntortyp_nucl))
1693 allocate(vlor3_nucl(maxlor,ntortyp_nucl,ntortyp_nucl)) !(maxlor,maxtor,maxtor)
1694 allocate(v0_nucl(ntortyp_nucl,ntortyp_nucl)) !(-maxtor:maxtor,-maxtor:maxtor,2)
1696 allocate(v1_nucl(maxterm,ntortyp_nucl,ntortyp_nucl))
1697 allocate(v2_nucl(maxterm,ntortyp_nucl,ntortyp_nucl)) !(maxterm,-maxtor:maxtor,-maxtor:maxtor,2)
1698 !el---------------------------
1701 !el--------------------
1702 read (itorp_nucl,*,end=113,err=113) &
1703 (itortyp_nucl(i),i=1,ntyp_molec(2))
1704 ! print *,itortyp_nucl(:)
1705 !c write (iout,*) 'ntortyp',ntortyp
1708 read (itorp_nucl,*,end=113,err=113) nterm_nucl(i,j),nlor_nucl(i,j)
1709 ! print *,nterm_nucl(i,j),nlor_nucl(i,j)
1712 do k=1,nterm_nucl(i,j)
1713 read (itorp_nucl,*,end=113,err=113) kk,v1_nucl(k,i,j),v2_nucl(k,i,j)
1714 v0ij=v0ij+si*v1_nucl(k,i,j)
1717 do k=1,nlor_nucl(i,j)
1718 read (itorp,*,end=113,err=113) kk,vlor1_nucl(k,i,j),&
1719 vlor2_nucl(k,i,j),vlor3_nucl(k,i,j)
1720 v0ij=v0ij+vlor1_nucl(k,i,j)/(1+vlor3_nucl(k,i,j)**2)
1726 ! Read of Side-chain backbone correlation parameters
1727 ! Modified 11 May 2012 by Adasko
1730 read (isccor,*,end=119,err=119) nsccortyp
1732 !el from module energy-------------
1733 allocate(nlor_sccor(nsccortyp,nsccortyp)) !(-ntyp:ntyp,-ntyp:ntyp)
1734 allocate(vlor1sccor(maxterm_sccor,nsccortyp,nsccortyp))
1735 allocate(vlor2sccor(maxterm_sccor,nsccortyp,nsccortyp))
1736 allocate(vlor3sccor(maxterm_sccor,nsccortyp,nsccortyp)) !(maxterm_sccor,20,20)
1737 !-----------------------------------
1739 !el from module energy-------------
1740 allocate(isccortyp(-ntyp:ntyp)) !(-ntyp:ntyp)
1742 read (isccor,*,end=119,err=119) (isccortyp(i),i=1,ntyp)
1744 isccortyp(i)=-isccortyp(-i)
1746 iscprol=isccortyp(20)
1747 ! write (iout,*) 'ntortyp',ntortyp
1749 !c maxinter is maximum interaction sites
1750 !el from module energy---------
1751 allocate(nterm_sccor(-nsccortyp:nsccortyp,-nsccortyp:nsccortyp)) !(-ntyp:ntyp,-ntyp:ntyp)
1752 allocate(v1sccor(maxterm_sccor,maxinter,-nsccortyp:nsccortyp,&
1753 -nsccortyp:nsccortyp))
1754 allocate(v2sccor(maxterm_sccor,maxinter,-nsccortyp:nsccortyp,&
1755 -nsccortyp:nsccortyp)) !(maxterm_sccor,3,-ntyp:ntyp,-ntyp:ntyp)
1756 allocate(v0sccor(maxinter,-nsccortyp:nsccortyp,&
1757 -nsccortyp:nsccortyp)) !(maxterm_sccor,-ntyp:ntyp,-ntyp:ntyp)
1758 !-----------------------------------
1762 read (isccor,*,end=119,err=119) &
1763 nterm_sccor(i,j),nlor_sccor(i,j)
1769 nterm_sccor(-i,j)=nterm_sccor(i,j)
1770 nterm_sccor(-i,-j)=nterm_sccor(i,j)
1771 nterm_sccor(i,-j)=nterm_sccor(i,j)
1772 do k=1,nterm_sccor(i,j)
1773 read (isccor,*,end=119,err=119) kk,v1sccor(k,l,i,j),&
1775 if (j.eq.iscprol) then
1776 if (i.eq.isccortyp(10)) then
1777 v1sccor(k,l,i,-j)=v1sccor(k,l,i,j)
1778 v2sccor(k,l,i,-j)=-v2sccor(k,l,i,j)
1780 v1sccor(k,l,i,-j)=v1sccor(k,l,i,j)*0.5d0 &
1781 +v2sccor(k,l,i,j)*dsqrt(0.75d0)
1782 v2sccor(k,l,i,-j)=-v2sccor(k,l,i,j)*0.5d0 &
1783 +v1sccor(k,l,i,j)*dsqrt(0.75d0)
1784 v1sccor(k,l,-i,-j)=v1sccor(k,l,i,j)
1785 v2sccor(k,l,-i,-j)=-v2sccor(k,l,i,j)
1786 v1sccor(k,l,-i,j)=v1sccor(k,l,i,-j)
1787 v2sccor(k,l,-i,j)=-v2sccor(k,l,i,-j)
1790 if (i.eq.isccortyp(10)) then
1791 v1sccor(k,l,i,-j)=v1sccor(k,l,i,j)
1792 v2sccor(k,l,i,-j)=-v2sccor(k,l,i,j)
1794 if (j.eq.isccortyp(10)) then
1795 v1sccor(k,l,-i,j)=v1sccor(k,l,i,j)
1796 v2sccor(k,l,-i,j)=-v2sccor(k,l,i,j)
1798 v1sccor(k,l,i,-j)=-v1sccor(k,l,i,j)
1799 v2sccor(k,l,i,-j)=-v2sccor(k,l,i,j)
1800 v1sccor(k,l,-i,-j)=v1sccor(k,l,i,j)
1801 v2sccor(k,l,-i,-j)=-v2sccor(k,l,i,j)
1802 v1sccor(k,l,-i,j)=v1sccor(k,l,i,-j)
1803 v2sccor(k,l,-i,j)=-v2sccor(k,l,i,-j)
1807 v0ijsccor=v0ijsccor+si*v1sccor(k,l,i,j)
1808 v0ijsccor1=v0ijsccor+si*v1sccor(k,l,-i,j)
1809 v0ijsccor2=v0ijsccor+si*v1sccor(k,l,i,-j)
1810 v0ijsccor3=v0ijsccor+si*v1sccor(k,l,-i,-j)
1813 do k=1,nlor_sccor(i,j)
1814 read (isccor,*,end=119,err=119) kk,vlor1sccor(k,i,j),&
1815 vlor2sccor(k,i,j),vlor3sccor(k,i,j)
1816 v0ijsccor=v0ijsccor+vlor1sccor(k,i,j)/ &
1817 (1+vlor3sccor(k,i,j)**2)
1819 v0sccor(l,i,j)=v0ijsccor
1820 v0sccor(l,-i,j)=v0ijsccor1
1821 v0sccor(l,i,-j)=v0ijsccor2
1822 v0sccor(l,-i,-j)=v0ijsccor3
1828 !el from module energy-------------
1829 allocate(isccortyp(ntyp)) !(-ntyp:ntyp)
1831 read (isccor,*,end=119,err=119) (isccortyp(i),i=1,ntyp)
1832 ! write (iout,*) 'ntortyp',ntortyp
1834 !c maxinter is maximum interaction sites
1835 !el from module energy---------
1836 allocate(nterm_sccor(nsccortyp,nsccortyp)) !(-ntyp:ntyp,-ntyp:ntyp)
1837 allocate(v1sccor(maxterm_sccor,maxinter,nsccortyp,nsccortyp))
1838 allocate(v2sccor(maxterm_sccor,maxinter,nsccortyp,nsccortyp)) !(maxterm_sccor,3,-ntyp:ntyp,-ntyp:ntyp)
1839 allocate(v0sccor(maxinter,nsccortyp,nsccortyp)) !???(maxterm_sccor,-ntyp:ntyp,-ntyp:ntyp)
1840 !-----------------------------------
1844 read (isccor,*,end=119,err=119) &
1845 nterm_sccor(i,j),nlor_sccor(i,j)
1849 do k=1,nterm_sccor(i,j)
1850 read (isccor,*,end=119,err=119) kk,v1sccor(k,l,i,j),&
1852 v0ijsccor=v0ijsccor+si*v1sccor(k,l,i,j)
1855 do k=1,nlor_sccor(i,j)
1856 read (isccor,*,end=119,err=119) kk,vlor1sccor(k,i,j),&
1857 vlor2sccor(k,i,j),vlor3sccor(k,i,j)
1858 v0ijsccor=v0ijsccor+vlor1sccor(k,i,j)/ &
1859 (1+vlor3sccor(k,i,j)**2)
1861 v0sccor(l,i,j)=v0ijsccor !el ,iblock
1869 write (iout,'(/a/)') 'Torsional constants:'
1872 write (iout,*) 'ityp',i,' jtyp',j
1873 write (iout,*) 'Fourier constants'
1874 do k=1,nterm_sccor(i,j)
1875 write (iout,'(2(1pe15.5))') v1sccor(k,l,i,j),v2sccor(k,l,i,j)
1877 write (iout,*) 'Lorenz constants'
1878 do k=1,nlor_sccor(i,j)
1879 write (iout,'(3(1pe15.5))') &
1880 vlor1sccor(k,i,j),vlor2sccor(k,i,j),vlor3sccor(k,i,j)
1887 ! 9/18/99 (AL) Read coefficients of the Fourier expansion of the local
1888 ! interaction energy of the Gly, Ala, and Pro prototypes.
1893 write (iout,*) "Coefficients of the cumulants"
1895 read (ifourier,*) nloctyp
1896 !write(iout,*) "nloctyp",nloctyp
1897 !el from module energy-------
1898 allocate(b1(2,-nloctyp-1:nloctyp+1)) !(2,-maxtor:maxtor)
1899 allocate(b2(2,-nloctyp-1:nloctyp+1)) !(2,-maxtor:maxtor)
1900 allocate(b1tilde(2,-nloctyp+1:nloctyp+1)) !(2,-maxtor:maxtor)
1901 allocate(cc(2,2,-nloctyp-1:nloctyp+1))
1902 allocate(dd(2,2,-nloctyp-1:nloctyp+1))
1903 allocate(ee(2,2,-nloctyp-1:nloctyp+1))
1904 allocate(ctilde(2,2,-nloctyp-1:nloctyp+1))
1905 allocate(dtilde(2,2,-nloctyp-1:nloctyp+1)) !(2,2,-maxtor:maxtor)
1909 !--------------------------------
1912 read (ifourier,*,end=115,err=115)
1913 read (ifourier,*,end=115,err=115) (b(ii),ii=1,13)
1915 write (iout,*) 'Type',i
1916 write (iout,'(a,i2,a,f10.5)') ('b(',ii,')=',b(ii),ii=1,13)
1926 B1tilde(1,-i) =-b(3)
1928 ! b1tilde(1,i)=0.0d0
1929 ! b1tilde(2,i)=0.0d0
1954 Ctilde(1,2,-i)=-b(9)
1958 ! Ctilde(1,1,i)=0.0d0
1959 ! Ctilde(1,2,i)=0.0d0
1960 ! Ctilde(2,1,i)=0.0d0
1961 ! Ctilde(2,2,i)=0.0d0
1979 Dtilde(1,2,-i)=-b(8)
1983 ! Dtilde(1,1,i)=0.0d0
1984 ! Dtilde(1,2,i)=0.0d0
1985 ! Dtilde(2,1,i)=0.0d0
1986 ! Dtilde(2,2,i)=0.0d0
1987 EE(1,1,i)= b(10)+b(11)
1988 EE(2,2,i)=-b(10)+b(11)
1989 EE(2,1,i)= b(12)-b(13)
1990 EE(1,2,i)= b(12)+b(13)
1991 EE(1,1,-i)= b(10)+b(11)
1992 EE(2,2,-i)=-b(10)+b(11)
1993 EE(2,1,-i)=-b(12)+b(13)
1994 EE(1,2,-i)=-b(12)-b(13)
2000 ! ee(2,1,i)=ee(1,2,i)
2004 write (iout,*) 'Type',i
2006 write(iout,*) B1(1,i),B1(2,i)
2008 write(iout,*) B2(1,i),B2(2,i)
2011 write (iout,'(2f10.5)') CC(j,1,i),CC(j,2,i)
2015 write (iout,'(2f10.5)') DD(j,1,i),DD(j,2,i)
2019 write (iout,'(2f10.5)') EE(j,1,i),EE(j,2,i)
2024 ! Read electrostatic-interaction parameters
2029 write (iout,'(/a)') 'Electrostatic interaction constants:'
2030 write (iout,'(1x,a,1x,a,10x,a,11x,a,11x,a,11x,a)') &
2031 'IT','JT','APP','BPP','AEL6','AEL3'
2033 read (ielep,*,end=116,err=116) ((epp(i,j),j=1,2),i=1,2)
2034 read (ielep,*,end=116,err=116) ((rpp(i,j),j=1,2),i=1,2)
2035 read (ielep,*,end=116,err=116) ((elpp6(i,j),j=1,2),i=1,2)
2036 read (ielep,*,end=116,err=116) ((elpp3(i,j),j=1,2),i=1,2)
2041 app (i,j)=epp(i,j)*rri*rri
2042 bpp (i,j)=-2.0D0*epp(i,j)*rri
2043 ael6(i,j)=elpp6(i,j)*4.2D0**6
2044 ael3(i,j)=elpp3(i,j)*4.2D0**3
2046 if (lprint) write(iout,'(2i3,4(1pe15.4))')i,j,app(i,j),bpp(i,j),&
2052 ! Read side-chain interaction parameters.
2054 !el from module energy - COMMON.INTERACT-------
2055 allocate(eps(ntyp,ntyp),sigmaii(ntyp,ntyp),rs0(ntyp,ntyp)) !(ntyp,ntyp)
2056 allocate(augm(ntyp,ntyp)) !(ntyp,ntyp)
2057 allocate(eps_scp(ntyp,2),rscp(ntyp,2)) !(ntyp,2)
2059 allocate(sigma0(ntyp),rr0(ntyp),sigii(ntyp)) !(ntyp)
2060 allocate(chip(ntyp1),alp(ntyp1)) !(ntyp)
2061 allocate(epslip(ntyp,ntyp))
2069 !--------------------------------
2071 read (isidep,*,end=117,err=117) ipot,expon
2072 if (ipot.lt.1 .or. ipot.gt.5) then
2073 write (iout,'(2a)') 'Error while reading SC interaction',&
2074 'potential file - unknown potential type.'
2076 call MPI_Finalize(Ierror)
2082 write(iout,'(/3a,2i3)') 'Potential is ',potname(ipot),&
2083 ', exponents are ',expon,2*expon
2084 ! goto (10,20,30,30,40) ipot
2086 !----------------------- LJ potential ---------------------------------
2088 ! 10 read (isidep,*,end=117,err=117)((eps(i,j),j=i,ntyp),i=1,ntyp),&
2089 read (isidep,*,end=117,err=117)((eps(i,j),j=i,ntyp),i=1,ntyp),&
2090 (sigma0(i),i=1,ntyp)
2092 write (iout,'(/a/)') 'Parameters of the LJ potential:'
2093 write (iout,'(a/)') 'The epsilon array:'
2094 call printmat(ntyp,ntyp,ntyp,iout,restyp,eps)
2095 write (iout,'(/a)') 'One-body parameters:'
2096 write (iout,'(a,4x,a)') 'residue','sigma'
2097 write (iout,'(a3,6x,f10.5)') (restyp(i,1),sigma0(i),i=1,ntyp)
2100 !----------------------- LJK potential --------------------------------
2102 ! 20 read (isidep,*,end=117,err=117)((eps(i,j),j=i,ntyp),i=1,ntyp),&
2103 read (isidep,*,end=117,err=117)((eps(i,j),j=i,ntyp),i=1,ntyp),&
2104 (sigma0(i),i=1,ntyp),(rr0(i),i=1,ntyp)
2106 write (iout,'(/a/)') 'Parameters of the LJK potential:'
2107 write (iout,'(a/)') 'The epsilon array:'
2108 call printmat(ntyp,ntyp,ntyp,iout,restyp,eps)
2109 write (iout,'(/a)') 'One-body parameters:'
2110 write (iout,'(a,4x,2a)') 'residue',' sigma ',' r0 '
2111 write (iout,'(a3,6x,2f10.5)') (restyp(i,1),sigma0(i),rr0(i),&
2115 !---------------------- GB or BP potential -----------------------------
2119 read (isidep,*,end=117,err=117)(eps(i,j),j=i,ntyp)
2121 read (isidep,*,end=117,err=117)(sigma0(i),i=1,ntyp)
2122 read (isidep,*,end=117,err=117)(sigii(i),i=1,ntyp)
2123 read (isidep,*,end=117,err=117)(chip(i),i=1,ntyp)
2124 read (isidep,*,end=117,err=117)(alp(i),i=1,ntyp)
2126 read (isidep,*,end=117,err=117)(epslip(i,j),j=i,ntyp)
2129 ! For the GB potential convert sigma'**2 into chi'
2132 chip(i)=(chip(i)-1.0D0)/(chip(i)+1.0D0)
2136 write (iout,'(/a/)') 'Parameters of the BP potential:'
2137 write (iout,'(a/)') 'The epsilon array:'
2138 call printmat(ntyp,ntyp,ntyp,iout,restyp,eps)
2139 write (iout,'(/a)') 'One-body parameters:'
2140 write (iout,'(a,4x,4a)') 'residue',' sigma ','s||/s_|_^2',&
2142 write (iout,'(a3,6x,4f10.5)') (restyp(i,1),sigma0(i),sigii(i),&
2143 chip(i),alp(i),i=1,ntyp)
2146 !--------------------- GBV potential -----------------------------------
2148 ! 40 read (isidep,*,end=117,err=117)((eps(i,j),j=i,ntyp),i=1,ntyp),&
2149 read (isidep,*,end=117,err=117)((eps(i,j),j=i,ntyp),i=1,ntyp),&
2150 (sigma0(i),i=1,ntyp),(rr0(i),i=1,ntyp),(sigii(i),i=1,ntyp),&
2151 (chip(i),i=1,ntyp),(alp(i),i=1,ntyp)
2153 write (iout,'(/a/)') 'Parameters of the GBV potential:'
2154 write (iout,'(a/)') 'The epsilon array:'
2155 call printmat(ntyp,ntyp,ntyp,iout,restyp,eps)
2156 write (iout,'(/a)') 'One-body parameters:'
2157 write (iout,'(a,4x,5a)') 'residue',' sigma ',' r0 ',&
2158 's||/s_|_^2',' chip ',' alph '
2159 write (iout,'(a3,6x,5f10.5)') (restyp(i,1),sigma0(i),rr0(i),&
2160 sigii(i),chip(i),alp(i),i=1,ntyp)
2163 write(iout,*)"Wrong ipot"
2169 !-----------------------------------------------------------------------
2170 ! Calculate the "working" parameters of SC interactions.
2172 !el from module energy - COMMON.INTERACT-------
2173 allocate(aa_aq(ntyp1,ntyp1),bb_aq(ntyp1,ntyp1),chi(ntyp1,ntyp1)) !(ntyp,ntyp)
2174 allocate(aa_lip(ntyp1,ntyp1),bb_lip(ntyp1,ntyp1)) !(ntyp,ntyp)
2175 allocate(sigma(0:ntyp1,0:ntyp1),r0(ntyp1,ntyp1)) !(0:ntyp1,0:ntyp1)
2176 allocate(acavtub(ntyp1),bcavtub(ntyp1),ccavtub(ntyp1),&
2178 allocate(sc_aa_tube_par(ntyp1),sc_bb_tube_par(ntyp1),&
2191 sc_aa_tube_par(:)=0.0d0
2192 sc_bb_tube_par(:)=0.0d0
2194 !--------------------------------
2199 epslip(i,j)=epslip(j,i)
2204 sigma(i,j)=dsqrt(sigma0(i)**2+sigma0(j)**2)
2205 sigma(j,i)=sigma(i,j)
2206 rs0(i,j)=dwa16*sigma(i,j)
2210 if (lprint) write (iout,'(/a/10x,7a/72(1h-))') &
2211 'Working parameters of the SC interactions:',&
2212 ' a ',' b ',' augm ',' sigma ',' r0 ',&
2217 if (ipot.eq.1 .or. ipot.eq.3 .or. ipot.eq.4) then
2226 sigeps=dsign(1.0D0,epsij)
2228 aa_aq(i,j)=epsij*rrij*rrij
2229 bb_aq(i,j)=-sigeps*epsij*rrij
2230 aa_aq(j,i)=aa_aq(i,j)
2231 bb_aq(j,i)=bb_aq(i,j)
2232 epsijlip=epslip(i,j)
2233 sigeps=dsign(1.0D0,epsijlip)
2234 epsijlip=dabs(epsijlip)
2235 aa_lip(i,j)=epsijlip*rrij*rrij
2236 bb_lip(i,j)=-sigeps*epsijlip*rrij
2237 aa_lip(j,i)=aa_lip(i,j)
2238 bb_lip(j,i)=bb_lip(i,j)
2239 !C write(iout,*) aa_lip
2241 sigt1sq=sigma0(i)**2
2242 sigt2sq=sigma0(j)**2
2245 ratsig1=sigt2sq/sigt1sq
2246 ratsig2=1.0D0/ratsig1
2247 chi(i,j)=(sigii1-1.0D0)/(sigii1+ratsig1)
2248 if (j.gt.i) chi(j,i)=(sigii2-1.0D0)/(sigii2+ratsig2)
2249 rsum_max=dsqrt(sigii1*sigt1sq+sigii2*sigt2sq)
2253 ! if (ipot.eq.1 .or. ipot.eq.3 .or. ipot.eq.4) then
2254 sigmaii(i,j)=rsum_max
2255 sigmaii(j,i)=rsum_max
2257 ! sigmaii(i,j)=r0(i,j)
2258 ! sigmaii(j,i)=r0(i,j)
2260 !d write (iout,*) i,j,r0(i,j),sigma(i,j),rsum_max
2261 if ((ipot.eq.2 .or. ipot.eq.5) .and. r0(i,j).gt.rsum_max) then
2262 r_augm=sigma(i,j)*(rrij-sigma(i,j))/rrij
2263 augm(i,j)=epsij*r_augm**(2*expon)
2264 ! augm(i,j)=0.5D0**(2*expon)*aa(i,j)
2271 write (iout,'(2(a3,2x),3(1pe10.3),5(0pf8.3))') &
2272 restyp(i,1),restyp(j,1),aa_aq(i,j),bb_aq(i,j),augm(i,j),&
2273 sigma(i,j),r0(i,j),chi(i,j),chi(j,i)
2278 allocate(eps_nucl(ntyp_molec(2),ntyp_molec(2)))
2279 allocate(sigma_nucl(ntyp_molec(2),ntyp_molec(2))) !(ntyp_molec(2),ntyp_molec(2))
2280 allocate(elpp6_nucl(ntyp_molec(2),ntyp_molec(2))) !(ntyp_molec(2),ntyp_molec(2))
2281 allocate(elpp3_nucl(ntyp_molec(2),ntyp_molec(2))) !(ntyp,2)
2282 allocate(elpp63_nucl(ntyp_molec(2),ntyp_molec(2))) !(ntyp_molec(2),ntyp_molec(2))
2283 allocate(elpp32_nucl(ntyp_molec(2),ntyp_molec(2))) !(ntyp,2)
2284 allocate(chi_nucl(ntyp_molec(2),ntyp_molec(2)),chip_nucl(ntyp_molec(2),ntyp_molec(2))) !(ntyp_molec(2),ntyp_molec(2))
2285 allocate(ael3_nucl(ntyp_molec(2),ntyp_molec(2))) !(ntyp,2)
2286 allocate(ael6_nucl(ntyp_molec(2),ntyp_molec(2))) !(ntyp,2)
2287 allocate(ael32_nucl(ntyp_molec(2),ntyp_molec(2))) !(ntyp,2)
2288 allocate(ael63_nucl(ntyp_molec(2),ntyp_molec(2))) !(ntyp,2)
2289 allocate(aa_nucl(ntyp_molec(2),ntyp_molec(2))) !(ntyp,2)
2290 allocate(bb_nucl(ntyp_molec(2),ntyp_molec(2))) !(ntyp,2)
2291 allocate(r0_nucl(ntyp_molec(2),ntyp_molec(2))) !(ntyp,2)
2292 allocate(sigmaii_nucl(ntyp_molec(2),ntyp_molec(2))) !(ntyp_molec(2),ntyp_molec(2))
2293 allocate(eps_scp_nucl(ntyp_molec(2)),rscp_nucl(ntyp_molec(2))) !(ntyp,2)
2302 read (isidep_nucl,*) ipot_nucl
2303 ! print *,"TU?!",ipot_nucl
2304 if (ipot_nucl.eq.1) then
2305 do i=1,ntyp_molec(2)
2306 do j=i,ntyp_molec(2)
2307 read (isidep_nucl,*) eps_nucl(i,j),sigma_nucl(i,j),elpp6_nucl(i,j),&
2308 elpp3_nucl(i,j), elpp63_nucl(i,j),elpp32_nucl(i,j)
2312 do i=1,ntyp_molec(2)
2313 do j=i,ntyp_molec(2)
2314 read (isidep_nucl,*) eps_nucl(i,j),sigma_nucl(i,j),chi_nucl(i,j),&
2315 chi_nucl(j,i),chip_nucl(i,j),chip_nucl(j,i),&
2316 elpp6_nucl(i,j),elpp3_nucl(i,j),elpp63_nucl(i,j),elpp32_nucl(i,j)
2320 ! rpp(1,1)=2**(1.0/6.0)*5.16158
2321 do i=1,ntyp_molec(2)
2322 do j=i,ntyp_molec(2)
2323 rrij=sigma_nucl(i,j)
2327 epsij=4*eps_nucl(i,j)
2328 sigeps=dsign(1.0D0,epsij)
2330 aa_nucl(i,j)=epsij*rrij*rrij
2331 bb_nucl(i,j)=-sigeps*epsij*rrij
2332 ael3_nucl(i,j)=elpp3_nucl(i,j)*dsqrt(rrij)
2333 ael6_nucl(i,j)=elpp6_nucl(i,j)*rrij
2334 ael63_nucl(i,j)=elpp63_nucl(i,j)*rrij
2335 ael32_nucl(i,j)=elpp32_nucl(i,j)*rrij
2336 sigmaii_nucl(i,j)=sigma_nucl(i,j)/sqrt(1-(chi_nucl(i,j)+chi_nucl(j,i)- &
2337 2*chi_nucl(i,j)*chi_nucl(j,i))/(1-chi_nucl(i,j)*chi_nucl(j,i)))
2340 aa_nucl(i,j)=aa_nucl(j,i)
2341 bb_nucl(i,j)=bb_nucl(j,i)
2342 ael3_nucl(i,j)=ael3_nucl(j,i)
2343 ael6_nucl(i,j)=ael6_nucl(j,i)
2344 ael63_nucl(i,j)=ael63_nucl(j,i)
2345 ael32_nucl(i,j)=ael32_nucl(j,i)
2346 elpp3_nucl(i,j)=elpp3_nucl(j,i)
2347 elpp6_nucl(i,j)=elpp6_nucl(j,i)
2348 elpp63_nucl(i,j)=elpp63_nucl(j,i)
2349 elpp32_nucl(i,j)=elpp32_nucl(j,i)
2350 eps_nucl(i,j)=eps_nucl(j,i)
2351 sigma_nucl(i,j)=sigma_nucl(j,i)
2352 sigmaii_nucl(i,j)=sigmaii_nucl(j,i)
2356 write(iout,*) "tube param"
2357 read(itube,*) epspeptube,sigmapeptube,acavtubpep,bcavtubpep, &
2358 ccavtubpep,dcavtubpep,tubetranenepep
2359 sigmapeptube=sigmapeptube**6
2360 sigeps=dsign(1.0D0,epspeptube)
2361 epspeptube=dabs(epspeptube)
2362 pep_aa_tube=4.0d0*epspeptube*sigmapeptube**2
2363 pep_bb_tube=-sigeps*4.0d0*epspeptube*sigmapeptube
2364 write(iout,*) pep_aa_tube,pep_bb_tube,tubetranenepep
2366 read(itube,*) epssctube,sigmasctube,acavtub(i),bcavtub(i), &
2367 ccavtub(i),dcavtub(i),tubetranene(i)
2368 sigmasctube=sigmasctube**6
2369 sigeps=dsign(1.0D0,epssctube)
2370 epssctube=dabs(epssctube)
2371 sc_aa_tube_par(i)=4.0d0*epssctube*sigmasctube**2
2372 sc_bb_tube_par(i)=-sigeps*4.0d0*epssctube*sigmasctube
2373 write(iout,*) sc_aa_tube_par(i), sc_bb_tube_par(i),tubetranene(i)
2376 allocate(aad(ntyp,2),bad(ntyp,2)) !(ntyp,2)
2381 ! Define the SC-p interaction constants (hard-coded; old style)
2384 ! "Soft" SC-p repulsion (causes helices to be too flat, but facilitates
2386 ! aad(i,1)=0.3D0*4.0D0**12
2387 ! Following line for constants currently implemented
2388 ! "Hard" SC-p repulsion (gives correct turn spacing in helices)
2389 aad(i,1)=1.5D0*4.0D0**12
2390 ! aad(i,1)=0.17D0*5.6D0**12
2392 ! "Soft" SC-p repulsion
2394 ! Following line for constants currently implemented
2395 ! aad(i,1)=0.3D0*4.0D0**6
2396 ! "Hard" SC-p repulsion
2397 bad(i,1)=3.0D0*4.0D0**6
2398 ! bad(i,1)=-2.0D0*0.17D0*5.6D0**6
2407 ! 8/9/01 Read the SC-p interaction constants from file
2410 read (iscpp,*,end=118,err=118) (eps_scp(i,j),rscp(i,j),j=1,2)
2413 aad(i,1)=dabs(eps_scp(i,1))*rscp(i,1)**12
2414 aad(i,2)=dabs(eps_scp(i,2))*rscp(i,2)**12
2415 bad(i,1)=-2*eps_scp(i,1)*rscp(i,1)**6
2416 bad(i,2)=-2*eps_scp(i,2)*rscp(i,2)**6
2420 write (iout,*) "Parameters of SC-p interactions:"
2422 write (iout,'(4f8.3,4e12.4)') eps_scp(i,1),rscp(i,1),&
2423 eps_scp(i,2),rscp(i,2),aad(i,1),bad(i,1),aad(i,2),bad(i,2)
2428 allocate(aad_nucl(ntyp_molec(2)),bad_nucl(ntyp_molec(2))) !(ntyp,2)
2430 do i=1,ntyp_molec(2)
2431 read (iscpp_nucl,*,end=118,err=118) eps_scp_nucl(i),rscp_nucl(i)
2433 do i=1,ntyp_molec(2)
2434 aad_nucl(i)=dabs(eps_scp_nucl(i))*rscp_nucl(i)**12
2435 bad_nucl(i)=-2*eps_scp_nucl(i)*rscp_nucl(i)**6
2437 r0pp=1.12246204830937298142*5.16158
2443 ! Define the constants of the disulfide bridge
2447 ! Old arbitrary potential - commented out.
2452 ! Constants of the disulfide-bond potential determined based on the RHF/6-31G**
2453 ! energy surface of diethyl disulfide.
2454 ! A. Liwo and U. Kozlowska, 11/24/03
2471 write (iout,'(/a)') "Disulfide bridge parameters:"
2472 write (iout,'(a,f10.2)') 'S-S bridge energy: ',ebr
2473 write (iout,'(2(a,f10.2))') 'd0cm:',d0cm,' akcm:',akcm
2474 write (iout,'(2(a,f10.2))') 'akth:',akth,' akct:',akct
2475 write (iout,'(3(a,f10.2))') 'v1ss:',v1ss,' v2ss:',v2ss,&
2479 111 write (iout,*) "Error reading bending energy parameters."
2481 112 write (iout,*) "Error reading rotamer energy parameters."
2483 113 write (iout,*) "Error reading torsional energy parameters."
2485 114 write (iout,*) "Error reading double torsional energy parameters."
2487 115 write (iout,*) &
2488 "Error reading cumulant (multibody energy) parameters."
2490 116 write (iout,*) "Error reading electrostatic energy parameters."
2492 117 write (iout,*) "Error reading side chain interaction parameters."
2494 118 write (iout,*) "Error reading SCp interaction parameters."
2496 119 write (iout,*) "Error reading SCCOR parameters"
2499 call MPI_Finalize(Ierror)
2503 end subroutine parmread
2505 !-----------------------------------------------------------------------------
2507 !-----------------------------------------------------------------------------
2508 subroutine printmat(ldim,m,n,iout,key,a)
2511 character(len=3),dimension(n) :: key
2512 real(kind=8),dimension(ldim,n) :: a
2514 integer :: i,j,k,m,iout,nlim
2518 write (iout,1000) (key(k),k=i,nlim)
2520 1000 format (/5x,8(6x,a3))
2521 1020 format (/80(1h-)/)
2523 write (iout,1010) key(j),(a(j,k),k=i,nlim)
2526 1010 format (a3,2x,8(f9.4))
2528 end subroutine printmat
2529 !-----------------------------------------------------------------------------
2531 !-----------------------------------------------------------------------------
2533 ! Read the PDB file and convert the peptide geometry into virtual-chain
2536 use energy_data, only: itype,istype
2540 use control, only: rescode,sugarcode
2541 ! implicit real*8 (a-h,o-z)
2542 ! include 'DIMENSIONS'
2543 ! include 'COMMON.LOCAL'
2544 ! include 'COMMON.VAR'
2545 ! include 'COMMON.CHAIN'
2546 ! include 'COMMON.INTERACT'
2547 ! include 'COMMON.IOUNITS'
2548 ! include 'COMMON.GEO'
2549 ! include 'COMMON.NAMES'
2550 ! include 'COMMON.CONTROL'
2551 ! include 'COMMON.DISTFIT'
2552 ! include 'COMMON.SETUP'
2553 integer :: i,j,ibeg,ishift1,ires,iii,ires_old,ishift,k!,ity!,&
2555 logical :: lprn=.true.,fail
2556 real(kind=8),dimension(3) :: e1,e2,e3
2557 real(kind=8) :: dcj,efree_temp
2558 character(len=3) :: seq,res
2559 character(len=5) :: atom
2560 character(len=80) :: card
2561 real(kind=8),dimension(3,20) :: sccor
2562 integer :: kkk,lll,icha,kupa,molecule,counter,seqalingbegin !rescode,
2563 integer :: isugar,molecprev
2564 character*1 :: sugar
2566 real(kind=8),dimension(3) :: ccc
2568 integer,dimension(2,maxres/3) :: hfrag_alloc
2569 integer,dimension(4,maxres/3) :: bfrag_alloc
2570 real(kind=8),dimension(3,maxres2+2,maxperm) :: cref_alloc !(3,maxres2+2,maxperm)
2571 real(kind=8),dimension(:,:), allocatable :: c_temporary
2572 integer,dimension(:,:) , allocatable :: itype_temporary
2573 integer,dimension(:),allocatable :: istype_temp
2580 ! write (2,*) "UNRES_PDB",unres_pdb
2588 !-----------------------------
2589 allocate(hfrag(2,maxres/3)) !(2,maxres/3)
2590 allocate(bfrag(4,maxres/3)) !(4,maxres/3)
2593 read (ipdbin,'(a80)',end=10) card
2594 ! write (iout,'(a)') card
2595 if (card(:5).eq.'HELIX') then
2598 read(card(22:25),*) hfrag(1,nhfrag)
2599 read(card(34:37),*) hfrag(2,nhfrag)
2601 if (card(:5).eq.'SHEET') then
2604 read(card(24:26),*) bfrag(1,nbfrag)
2605 read(card(35:37),*) bfrag(2,nbfrag)
2606 !rc----------------------------------------
2607 !rc to be corrected !!!
2608 bfrag(3,nbfrag)=bfrag(1,nbfrag)
2609 bfrag(4,nbfrag)=bfrag(2,nbfrag)
2610 !rc----------------------------------------
2612 if (card(:3).eq.'END') then
2614 else if (card(:3).eq.'TER') then
2619 itype(ires_old,molecule)=ntyp1_molec(molecule)
2620 itype(ires_old-1,molecule)=ntyp1_molec(molecule)
2621 nres_molec(molecule)=nres_molec(molecule)+2
2623 ! write (iout,*) "Chain ended",ires,ishift,ires_old
2626 dc(j,ires)=sccor(j,iii)
2629 call sccenter(ires,iii,sccor)
2635 if (index(card,"FREE ENERGY").gt.0) read(card(35:),*) efree_temp
2636 ! Fish out the ATOM cards.
2637 ! write(iout,*) 'card',card(1:20)
2638 if (index(card(1:4),'ATOM').gt.0) then
2639 read (card(12:16),*) atom
2640 ! write (iout,*) "! ",atom," !",ires
2641 ! if (atom.eq.'CA' .or. atom.eq.'CH3') then
2642 read (card(23:26),*) ires
2643 read (card(18:20),'(a3)') res
2644 ! write (iout,*) "ires",ires,ires-ishift+ishift1,
2645 ! & " ires_old",ires_old
2646 ! write (iout,*) "ishift",ishift," ishift1",ishift1
2647 ! write (iout,*) "IRES",ires-ishift+ishift1,ires_old
2648 if (ires-ishift+ishift1.ne.ires_old) then
2649 ! Calculate the CM of the preceding residue.
2650 ! if (ibeg.eq.0) call sccenter(ires,iii,sccor)
2652 ! write (iout,*) "Calculating sidechain center iii",iii
2655 dc(j,ires+ishift1-ishift-1)=sccor(j,iii)
2658 call sccenter(ires_old,iii,sccor)
2662 ! Start new residue.
2663 if (res.eq.'Cl-' .or. res.eq.'Na+') then
2666 else if (ibeg.eq.1) then
2667 write (iout,*) "BEG ires",ires
2669 if (res.ne.'GLY' .and. res.ne. 'ACE') then
2672 nres_molec(molecule)=nres_molec(molecule)+1
2674 ires=ires-ishift+ishift1
2676 ! write (iout,*) "ishift",ishift," ires",ires,&
2677 ! " ires_old",ires_old
2679 else if (ibeg.eq.2) then
2681 ishift=-ires_old+ires-1 !!!!!
2682 ishift1=ishift1-1 !!!!!
2683 ! write (iout,*) "New chain started",ires,ishift,ishift1,"!"
2684 ires=ires-ishift+ishift1
2685 ! print *,ires,ishift,ishift1
2689 ishift=ishift-(ires-ishift+ishift1-ires_old-1)
2690 ires=ires-ishift+ishift1
2693 ! print *,'atom',ires,atom
2694 if (res.eq.'ACE' .or. res.eq.'NHE') then
2697 if (atom.eq.'CA '.or.atom.eq.'N ') then
2699 itype(ires,molecule)=rescode(ires,res,0,molecule)
2700 ! nres_molec(molecule)=nres_molec(molecule)+1
2703 itype(ires,molecule)=rescode(ires,res(2:4),0,molecule)
2704 ! nres_molec(molecule)=nres_molec(molecule)+1
2705 read (card(19:19),'(a1)') sugar
2706 isugar=sugarcode(sugar,ires)
2707 ! if (ibeg.eq.1) then
2711 ! print *,"ires=",ires,istype(ires)
2717 ires=ires-ishift+ishift1
2719 ! write (iout,*) "ires_old",ires_old," ires",ires
2720 if (card(27:27).eq."A" .or. card(27:27).eq."B") then
2723 ! write (2,*) "ires",ires," res ",res!," ity"!,ity
2724 if (atom.eq.'CA' .or. atom.eq.'CH3' .or. &
2725 res.eq.'NHE'.and.atom(:2).eq.'HN') then
2726 read(card(31:54),'(3f8.3)') (c(j,ires),j=1,3)
2727 ! print *,ires,ishift,ishift1
2728 ! write (iout,*) "backbone ",atom
2730 write (iout,'(2i3,2x,a,3f8.3)') &
2731 ires,itype(ires,1),res,(c(j,ires),j=1,3)
2734 nres_molec(molecule)=nres_molec(molecule)+1
2736 sccor(j,iii)=c(j,ires)
2738 else if (.not.unres_pdb .and. (atom.eq."C1'" .or. &
2739 atom.eq."C2'" .or. atom.eq."C3'" &
2740 .or. atom.eq."C4'" .or. atom.eq."O4'")) then
2741 read(card(31:54),'(3f8.3)') (ccc(j),j=1,3)
2742 !c write (2,'(i5,3f10.5)') ires,(ccc(j),j=1,3)
2743 ! print *,ires,ishift,ishift1
2747 ! sccor(j,iii)=c(j,ires)
2750 c(j,ires)=c(j,ires)+ccc(j)/5.0
2752 if (counter.eq.5) then
2754 nres_molec(molecule)=nres_molec(molecule)+1
2756 ! sccor(j,iii)=c(j,ires)
2760 ! print *, "ATOM",atom(1:3)
2761 else if (atom.eq."C5'") then
2762 read (card(19:19),'(a1)') sugar
2763 isugar=sugarcode(sugar,ires)
2768 ! print *,ires,istype(ires)
2771 read(card(31:54),'(3f8.3)') (c(j,ires),j=1,3)
2774 read(card(31:54),'(3f8.3)') (sccor(j,iii),j=1,3)
2776 ! write (*,*) card(23:27),ires,itype(ires,1)
2777 else if (atom.ne.'O'.and.atom(1:1).ne.'H' .and. &
2778 atom.ne.'N' .and. atom.ne.'C' .and. &
2779 atom(:2).ne.'1H' .and. atom(:2).ne.'2H' .and. &
2780 atom.ne.'OXT' .and. atom(:2).ne.'3H' &
2781 .and. atom.ne.'P '.and. &
2782 atom(1:1).ne.'H' .and. &
2783 atom.ne.'OP1' .and. atom.ne.'OP2 '.and. atom.ne.'OP3'&
2785 ! write (iout,*) "sidechain ",atom
2786 ! write (iout,*) "sidechain ",atom,molecule,ires,atom(3:3)
2787 if ((molecule.ne.2).or.(atom(3:3).ne."'")) then
2788 ! write (iout,*) "sidechain ",atom,molecule,ires,atom(3:3)
2790 read(card(31:54),'(3f8.3)') (sccor(j,iii),j=1,3)
2793 else if ((ions).and.(card(1:6).eq.'HETATM')) then
2795 read (card(12:16),*) atom
2796 print *,"HETATOM", atom
2797 read (card(18:20),'(a3)') res
2798 if ((atom(1:2).eq.'NA').or.(atom(1:2).eq.'CL').or.&
2799 (atom(1:2).eq.'CA').or.(atom(1:2).eq.'MG') &
2800 .or.(atom(1:2).eq.'K ')) &
2803 if (molecule.ne.5) molecprev=molecule
2805 nres_molec(molecule)=nres_molec(molecule)+1
2806 itype(ires,molecule)=rescode(ires,res(2:4),0,molecule)
2807 read(card(31:54),'(3f8.3)') (c(j,ires),j=1,3)
2811 10 write (iout,'(a,i5)') ' Number of residues found: ',ires
2812 if (ires.eq.0) return
2813 ! Calculate dummy residue coordinates inside the "chain" of a multichain
2816 if (ires_old.ne.ires) nres_molec(molecule)=nres_molec(molecule)-2
2817 ! print *,'I have', nres_molec(:)
2819 do k=1,4 ! ions are without dummy
2820 if (nres_molec(k).eq.0) cycle
2822 ! write (iout,*) i,itype(i,1)
2823 ! if (itype(i,1).eq.ntyp1) then
2824 ! write (iout,*) "dummy",i,itype(i,1)
2826 ! c(j,i)=((c(j,i-1)+c(j,i+1))/2+2*c(j,i-1)-c(j,i-2))/2
2827 ! c(j,i)=(c(j,i-1)+c(j,i+1))/2
2831 if (itype(i,k).eq.ntyp1_molec(k)) then
2832 if (itype(i+1,k).eq.ntyp1_molec(k)) then
2833 if (itype(i+2,k).eq.0) then
2834 ! print *,"masz sieczke"
2836 if (itype(i+2,j).ne.0) then
2838 itype(i+1,j)=ntyp1_molec(j)
2839 nres_molec(k)=nres_molec(k)-1
2840 nres_molec(j)=nres_molec(j)+1
2846 ! 16/01/2014 by Adasko: Adding to dummy atoms in the chain
2847 ! first is connected prevous chain (itype(i+1,1).eq.ntyp1)=true
2848 ! second dummy atom is conected to next chain itype(i+1,1).eq.ntyp1=false
2850 ! 2/15/2013 by Adam: corrected insertion of the last dummy residue
2851 ! print *,i,'tu dochodze'
2852 call refsys(i-3,i-2,i-1,e1,e2,e3,fail)
2860 c(j,i)=c(j,i-1)-1.9d0*e2(j)
2864 dcj=(c(j,i-2)-c(j,i-3))/2.0
2865 if (dcj.eq.0) dcj=1.23591524223
2870 else !itype(i+1,1).eq.ntyp1
2872 ! 2/15/2013 by Adam: corrected insertion of the first dummy residue
2873 call refsys(i+1,i+2,i+3,e1,e2,e3,fail)
2880 c(j,i)=c(j,i+1)-1.9d0*e2(j)
2884 dcj=(c(j,i+3)-c(j,i+2))/2.0
2885 if (dcj.eq.0) dcj=1.23591524223
2890 endif !itype(i+1,1).eq.ntyp1
2891 endif !itype.eq.ntyp1
2895 ! Calculate the CM of the last side chain.
2899 dc(j,ires)=sccor(j,iii)
2902 call sccenter(ires,iii,sccor)
2908 ! print *,"molecule",molecule
2909 if ((itype(nres,1).ne.10)) then
2911 if (molecule.eq.5) molecule=molecprev
2912 itype(nres,molecule)=ntyp1_molec(molecule)
2913 nres_molec(molecule)=nres_molec(molecule)+1
2915 ! 2/15/2013 by Adam: corrected insertion of the last dummy residue
2916 call refsys(nres-3,nres-2,nres-1,e1,e2,e3,fail)
2923 c(j,nres)=c(j,nres-1)-1.9d0*e2(j)
2927 dcj=(c(j,nres-2)-c(j,nres-3))/2.0
2928 c(j,nres)=c(j,nres-1)+dcj
2929 c(j,2*nres)=c(j,nres)
2933 ! print *,'I have',nres, nres_molec(:)
2935 !el kontrola nres w pliku inputowym WHAM-a w porownaniu z wartoscia wczytana z pliku pdb
2937 if (nres.ne.nres0) then
2938 write (iout,*) "Error: wrong parameter value: NRES=",nres,&
2940 stop "Error nres value in WHAM input"
2943 !---------------------------------
2944 !el reallocate tables
2947 ! hfrag_alloc(j,i)=hfrag(j,i)
2950 ! bfrag_alloc(j,i)=bfrag(j,i)
2956 ! allocate(hfrag(2,nres/3)) !(2,maxres/3)
2957 !el allocate(hfrag(2,nhfrag)) !(2,maxres/3)
2958 !el allocate(bfrag(4,nbfrag)) !(4,maxres/3)
2959 ! allocate(bfrag(4,nres/3)) !(4,maxres/3)
2963 ! hfrag(j,i)=hfrag_alloc(j,i)
2968 ! bfrag(j,i)=bfrag_alloc(j,i)
2971 !el end reallocate tables
2972 !---------------------------------
2980 c(j,2*nres)=c(j,nres)
2983 if (itype(1,1).eq.ntyp1) then
2987 ! 2/15/2013 by Adam: corrected insertion of the first dummy residue
2988 call refsys(2,3,4,e1,e2,e3,fail)
2995 c(j,1)=c(j,2)-1.9d0*e2(j)
2999 dcj=(c(j,4)-c(j,3))/2.0
3005 ! First lets assign correct dummy to correct type of chain
3007 if (itype(1,1).eq.ntyp1) then
3008 if (itype(2,1).eq.0) then
3010 if (itype(2,j).ne.0) then
3012 itype(1,j)=ntyp1_molec(j)
3013 nres_molec(1)=nres_molec(1)-1
3014 nres_molec(j)=nres_molec(j)+1
3021 print *,'I have',nres, nres_molec(:)
3023 ! Copy the coordinates to reference coordinates
3029 ! Calculate internal coordinates.
3031 write (iout,'(/a)') &
3032 "Cartesian coordinates of the reference structure"
3033 write (iout,'(a,3(3x,a5),5x,3(3x,a5))') &
3034 "Residue","X(CA)","Y(CA)","Z(CA)","X(SC)","Y(SC)","Z(SC)"
3036 write (iout,'(5(a3,1x),i3,3f8.3,5x,3f8.3)') &
3037 (restyp(itype(ires,j),j),j=1,5),ires,(c(j,ires),j=1,3),&
3038 (c(j,ires+nres),j=1,3)
3041 ! znamy już nres wiec mozna alokowac tablice
3042 ! Calculate internal coordinates.
3043 if(me.eq.king.or..not.out1file)then
3044 write (iout,'(a)') &
3045 "Backbone and SC coordinates as read from the PDB"
3047 write (iout,'(2i3,2x,a,3f8.3,5x,3f8.3)') &
3048 ires,itype(ires,1),restyp(itype(ires,1),1),(c(j,ires),j=1,3),&
3049 (c(j,nres+ires),j=1,3)
3052 ! NOW LETS ROCK! SORTING
3053 allocate(c_temporary(3,2*nres))
3054 allocate(itype_temporary(nres,5))
3055 allocate(molnum(nres))
3056 allocate(istype_temp(nres))
3057 itype_temporary(:,:)=0
3061 if (itype(i,k).ne.0) then
3063 c_temporary(j,seqalingbegin)=c(j,i)
3064 c_temporary(j,seqalingbegin+nres)=c(j,i+nres)
3067 itype_temporary(seqalingbegin,k)=itype(i,k)
3068 istype_temp(seqalingbegin)=istype(i)
3069 molnum(seqalingbegin)=k
3070 seqalingbegin=seqalingbegin+1
3076 c(j,i)=c_temporary(j,i)
3081 itype(i,k)=itype_temporary(i,k)
3082 istype(i)=istype_temp(i)
3085 if (itype(1,1).eq.ntyp1) then
3089 ! 2/15/2013 by Adam: corrected insertion of the first dummy residue
3090 call refsys(2,3,4,e1,e2,e3,fail)
3097 c(j,1)=c(j,2)-1.9d0*e2(j)
3101 dcj=(c(j,4)-c(j,3))/2.0
3109 write (iout,'(/a)') &
3110 "Cartesian coordinates of the reference structure after sorting"
3111 write (iout,'(a,3(3x,a5),5x,3(3x,a5))') &
3112 "Residue","X(CA)","Y(CA)","Z(CA)","X(SC)","Y(SC)","Z(SC)"
3114 write (iout,'(5(a3,1x),i3,3f8.3,5x,3f8.3)') &
3115 (restyp(itype(ires,j),j),j=1,5),ires,(c(j,ires),j=1,3),&
3116 (c(j,ires+nres),j=1,3)
3120 ! print *,seqalingbegin,nres
3121 if(.not.allocated(vbld)) then
3122 allocate(vbld(2*nres))
3127 if(.not.allocated(vbld_inv)) then
3128 allocate(vbld_inv(2*nres))
3134 if(.not.allocated(theta)) then
3135 allocate(theta(nres+2))
3139 if(.not.allocated(phi)) allocate(phi(nres+2))
3140 if(.not.allocated(alph)) allocate(alph(nres+2))
3141 if(.not.allocated(omeg)) allocate(omeg(nres+2))
3142 if(.not.allocated(thetaref)) allocate(thetaref(nres+2))
3143 if(.not.allocated(phiref)) allocate(phiref(nres+2))
3144 if(.not.allocated(costtab)) allocate(costtab(nres))
3145 if(.not.allocated(sinttab)) allocate(sinttab(nres))
3146 if(.not.allocated(cost2tab)) allocate(cost2tab(nres))
3147 if(.not.allocated(sint2tab)) allocate(sint2tab(nres))
3148 if(.not.allocated(xxref)) allocate(xxref(nres))
3149 if(.not.allocated(yyref)) allocate(yyref(nres))
3150 if(.not.allocated(zzref)) allocate(zzref(nres)) !(maxres)
3151 if(.not.allocated(dc_norm)) then
3152 ! if(.not.allocated(dc_norm)) allocate(dc_norm(3,0:2*nres+2))
3153 allocate(dc_norm(3,0:2*nres+2))
3157 call int_from_cart(.true.,.false.)
3158 call sc_loc_geom(.false.)
3160 thetaref(i)=theta(i)
3170 dc(j,i)=c(j,i+1)-c(j,i)
3171 dc_norm(j,i)=dc(j,i)*vbld_inv(i+1)
3176 dc(j,i+nres)=c(j,i+nres)-c(j,i)
3177 dc_norm(j,i+nres)=dc(j,i+nres)*vbld_inv(i+nres)
3179 ! write (iout,*) i,(dc(j,i+nres),j=1,3),(dc_norm(j,i+nres),j=1,3),&
3183 ! Copy the coordinates to reference coordinates
3184 ! Splits to single chain if occurs
3188 ! cref(j,i,cou)=c(j,i)
3192 if(.not.allocated(cref)) allocate(cref(3,2*nres+2,maxperm)) !(3,maxres2+2,maxperm)
3193 if(.not.allocated(chain_rep)) allocate(chain_rep(3,2*nres+2,maxsym)) !(3,maxres2+2,maxsym)
3194 if(.not.allocated(tabperm)) allocate(tabperm(maxperm,maxsym)) !(maxperm,maxsym)
3195 !-----------------------------
3199 write (iout,*) "symetr", symetr
3202 !c write (iout,*) "spraw lancuchy",(c(j,i),j=1,3)
3204 if ((itype(i-1,1).eq.ntyp1).and.(i.gt.2)) then
3207 ! write (iout,*) "spraw lancuchy",(c(j,i),j=1,3)
3212 cref(j,i,cou)=c(j,i)
3213 cref(j,i+nres,cou)=c(j,i+nres)
3215 chain_rep(j,lll,kkk)=c(j,i)
3216 chain_rep(j,lll+nres,kkk)=c(j,i+nres)
3220 write (iout,*) chain_length
3221 if (chain_length.eq.0) chain_length=nres
3223 chain_rep(j,chain_length,symetr)=chain_rep(j,chain_length,1)
3224 chain_rep(j,chain_length+nres,symetr) &
3225 =chain_rep(j,chain_length+nres,1)
3228 ! write (iout,*) "spraw lancuchy",chain_length,symetr
3230 ! do kkk=1,chain_length
3231 ! write (iout,*) itype(kkk),(chain_rep(j,kkk,i), j=1,3)
3235 ! makes copy of chains
3236 write (iout,*) "symetr", symetr
3241 if (symetr.gt.1) then
3248 write(iout,*) (tabperm(i,kkk),kkk=1,4)
3254 ! write (iout,*) i,icha
3255 do lll=1,chain_length
3257 if (cou.le.nres) then
3259 kupa=mod(lll,chain_length)
3260 iprzes=(kkk-1)*chain_length+lll
3261 if (kupa.eq.0) kupa=chain_length
3262 ! write (iout,*) "kupa", kupa
3263 cref(j,iprzes,i)=chain_rep(j,kupa,icha)
3264 cref(j,iprzes+nres,i)=chain_rep(j,kupa+nres,icha)
3271 !-koniec robienia kopii
3274 write (iout,*) "nowa struktura", nperm
3276 write (iout,110) restyp(itype(i,1),1),i,cref(1,i,kkk),&
3278 cref(3,i,kkk),cref(1,nres+i,kkk),&
3279 cref(2,nres+i,kkk),cref(3,nres+i,kkk)
3281 100 format (//' alpha-carbon coordinates ',&
3282 ' centroid coordinates'/ &
3283 ' ', 6X,'X',11X,'Y',11X,'Z', &
3284 10X,'X',11X,'Y',11X,'Z')
3285 110 format (a,'(',i3,')',6f12.5)
3291 bfrag(i,j)=bfrag(i,j)-ishift
3297 hfrag(i,j)=hfrag(i,j)-ishift
3303 end subroutine readpdb
3304 #if .not. defined(WHAM_RUN) && .not. defined(CLUSTER)
3305 !-----------------------------------------------------------------------------
3307 !-----------------------------------------------------------------------------
3308 subroutine read_control
3322 use random, only: random_init
3323 ! implicit real*8 (a-h,o-z)
3324 ! include 'DIMENSIONS'
3326 use prng, only:prng_restart
3328 logical :: OKRandom!, prng_restart
3331 ! include 'COMMON.IOUNITS'
3332 ! include 'COMMON.TIME1'
3333 ! include 'COMMON.THREAD'
3334 ! include 'COMMON.SBRIDGE'
3335 ! include 'COMMON.CONTROL'
3336 ! include 'COMMON.MCM'
3337 ! include 'COMMON.MAP'
3338 ! include 'COMMON.HEADER'
3339 ! include 'COMMON.CSA'
3340 ! include 'COMMON.CHAIN'
3341 ! include 'COMMON.MUCA'
3342 ! include 'COMMON.MD'
3343 ! include 'COMMON.FFIELD'
3344 ! include 'COMMON.INTERACT'
3345 ! include 'COMMON.SETUP'
3346 !el integer :: KDIAG,ICORFL,IXDR
3347 !el COMMON /MACHSW/ KDIAG,ICORFL,IXDR
3348 character(len=8),dimension(0:3) :: diagmeth = reshape((/'Library ',&
3349 'EVVRSP ','Givens ','Jacobi '/),shape(diagmeth))
3350 ! character(len=80) :: ucase
3351 character(len=640) :: controlcard
3353 real(kind=8) :: seed,rmsdbc,rmsdbc1max,rmsdbcm,drms,timem!,&
3359 read (INP,'(a)') titel
3360 call card_concat(controlcard,.true.)
3361 ! out1file=index(controlcard,'OUT1FILE').gt.0 .or. fg_rank.gt.0
3362 ! print *,"Processor",me," fg_rank",fg_rank," out1file",out1file
3363 call reada(controlcard,'SEED',seed,0.0D0)
3364 call random_init(seed)
3365 ! Set up the time limit (caution! The time must be input in minutes!)
3366 read_cart=index(controlcard,'READ_CART').gt.0
3367 call readi(controlcard,'CONSTR_DIST',constr_dist,0)
3368 call readi(controlcard,'SYM',symetr,1)
3369 call reada(controlcard,'TIMLIM',timlim,960.0D0) ! default 16 hours
3370 unres_pdb = index(controlcard,'UNRES_PDB') .gt. 0
3371 call reada(controlcard,'SAFETY',safety,30.0D0) ! default 30 minutes
3372 call reada(controlcard,'RMSDBC',rmsdbc,3.0D0)
3373 call reada(controlcard,'RMSDBC1',rmsdbc1,0.5D0)
3374 call reada(controlcard,'RMSDBC1MAX',rmsdbc1max,1.5D0)
3375 call reada(controlcard,'RMSDBCM',rmsdbcm,3.0D0)
3376 call reada(controlcard,'DRMS',drms,0.1D0)
3377 if(me.eq.king .or. .not. out1file .and. fg_rank.eq.0) then
3378 write (iout,'(a,f10.1)')'RMSDBC = ',rmsdbc
3379 write (iout,'(a,f10.1)')'RMSDBC1 = ',rmsdbc1
3380 write (iout,'(a,f10.1)')'RMSDBC1MAX = ',rmsdbc1max
3381 write (iout,'(a,f10.1)')'DRMS = ',drms
3382 write (iout,'(a,f10.1)')'RMSDBCM = ',rmsdbcm
3383 write (iout,'(a,f10.1)') 'Time limit (min):',timlim
3385 call readi(controlcard,'NZ_START',nz_start,0)
3386 call readi(controlcard,'NZ_END',nz_end,0)
3387 call readi(controlcard,'IZ_SC',iz_sc,0)
3388 timlim=60.0D0*timlim
3389 safety = 60.0d0*safety
3392 call reada(controlcard,"T_BATH",t_bath,300.0d0)
3393 !C SHIELD keyword sets if the shielding effect of side-chains is used
3394 !C 0 denots no shielding is used all peptide are equally despite the
3395 !C solvent accesible area
3396 !C 1 the newly introduced function
3397 !C 2 reseved for further possible developement
3398 call readi(controlcard,'SHIELD',shield_mode,0)
3399 !C if(me.eq.king .or. .not. out1file .and. fg_rank.eq.0) then
3400 write(iout,*) "shield_mode",shield_mode
3401 !C Varibles set size of box
3402 with_theta_constr = index(controlcard,"WITH_THETA_CONSTR").gt.0
3403 protein=index(controlcard,"PROTEIN").gt.0
3404 ions=index(controlcard,"IONS").gt.0
3405 nucleic=index(controlcard,"NUCLEIC").gt.0
3406 write (iout,*) "with_theta_constr ",with_theta_constr
3407 AFMlog=(index(controlcard,'AFM'))
3408 selfguide=(index(controlcard,'SELFGUIDE'))
3409 print *,'AFMlog',AFMlog,selfguide,"KUPA"
3410 call readi(controlcard,'GENCONSTR',genconstr,0)
3411 call reada(controlcard,'BOXX',boxxsize,100.0d0)
3412 call reada(controlcard,'BOXY',boxysize,100.0d0)
3413 call reada(controlcard,'BOXZ',boxzsize,100.0d0)
3414 call readi(controlcard,'TUBEMOD',tubemode,0)
3415 write (iout,*) TUBEmode,"TUBEMODE"
3416 if (TUBEmode.gt.0) then
3417 call reada(controlcard,"XTUBE",tubecenter(1),0.0d0)
3418 call reada(controlcard,"YTUBE",tubecenter(2),0.0d0)
3419 call reada(controlcard,"ZTUBE",tubecenter(3),0.0d0)
3420 call reada(controlcard,"RTUBE",tubeR0,0.0d0)
3421 call reada(controlcard,"TUBETOP",bordtubetop,boxzsize)
3422 call reada(controlcard,"TUBEBOT",bordtubebot,0.0d0)
3423 call reada(controlcard,"TUBEBUF",tubebufthick,1.0d0)
3424 buftubebot=bordtubebot+tubebufthick
3425 buftubetop=bordtubetop-tubebufthick
3428 ! CUTOFFF ON ELECTROSTATICS
3429 call reada(controlcard,"R_CUT_ELE",r_cut_ele,15.0d0)
3430 call reada(controlcard,"LAMBDA_ELE",rlamb_ele,0.3d0)
3431 write(iout,*) "R_CUT_ELE=",r_cut_ele
3432 ! Lipidic parameters
3433 call reada(controlcard,"LIPTHICK",lipthick,0.0d0)
3434 call reada(controlcard,"LIPAQBUF",lipbufthick,0.0d0)
3435 if (lipthick.gt.0.0d0) then
3436 bordliptop=(boxzsize+lipthick)/2.0
3437 bordlipbot=bordliptop-lipthick
3438 if ((bordliptop.gt.boxzsize).or.(bordlipbot.lt.0.0)) &
3439 write(iout,*) "WARNING WRONG SIZE OF LIPIDIC PHASE"
3440 buflipbot=bordlipbot+lipbufthick
3441 bufliptop=bordliptop-lipbufthick
3442 if ((lipbufthick*2.0d0).gt.lipthick) &
3443 write(iout,*) "WARNING WRONG SIZE OF LIP AQ BUF"
3444 endif !lipthick.gt.0
3445 write(iout,*) "bordliptop=",bordliptop
3446 write(iout,*) "bordlipbot=",bordlipbot
3447 write(iout,*) "bufliptop=",bufliptop
3448 write(iout,*) "buflipbot=",buflipbot
3449 write (iout,*) "SHIELD MODE",shield_mode
3451 !C-------------------------
3452 minim=(index(controlcard,'MINIMIZE').gt.0)
3453 dccart=(index(controlcard,'CART').gt.0)
3454 overlapsc=(index(controlcard,'OVERLAP').gt.0)
3455 overlapsc=.not.overlapsc
3456 searchsc=(index(controlcard,'NOSEARCHSC').gt.0)
3457 searchsc=.not.searchsc
3458 sideadd=(index(controlcard,'SIDEADD').gt.0)
3459 energy_dec=(index(controlcard,'ENERGY_DEC').gt.0)
3460 outpdb=(index(controlcard,'PDBOUT').gt.0)
3461 outmol2=(index(controlcard,'MOL2OUT').gt.0)
3462 pdbref=(index(controlcard,'PDBREF').gt.0)
3463 refstr=pdbref .or. (index(controlcard,'REFSTR').gt.0)
3464 indpdb=index(controlcard,'PDBSTART')
3465 extconf=(index(controlcard,'EXTCONF').gt.0)
3466 call readi(controlcard,'IPRINT',iprint,0)
3467 call readi(controlcard,'MAXGEN',maxgen,10000)
3468 call readi(controlcard,'MAXOVERLAP',maxoverlap,1000)
3469 call readi(controlcard,"KDIAG",kdiag,0)
3470 call readi(controlcard,"RESCALE_MODE",rescale_mode,2)
3471 if(me.eq.king .or. .not. out1file .and. fg_rank.eq.0) &
3472 write (iout,*) "RESCALE_MODE",rescale_mode
3473 split_ene=index(controlcard,'SPLIT_ENE').gt.0
3474 if (index(controlcard,'REGULAR').gt.0.0D0) then
3475 call reada(controlcard,'WEIDIS',weidis,0.1D0)
3479 if (index(controlcard,'CHECKGRAD').gt.0) then
3481 if (index(controlcard,'CART').gt.0) then
3483 elseif (index(controlcard,'CARINT').gt.0) then
3488 elseif (index(controlcard,'THREAD').gt.0) then
3490 call readi(controlcard,'THREAD',nthread,0)
3491 if (nthread.gt.0) then
3492 call reada(controlcard,'WEIDIS',weidis,0.1D0)
3495 write (iout,'(a)')'A number has to follow the THREAD keyword.'
3496 stop 'Error termination in Read_Control.'
3498 else if (index(controlcard,'MCMA').gt.0) then
3500 else if (index(controlcard,'MCEE').gt.0) then
3502 else if (index(controlcard,'MULTCONF').gt.0) then
3504 else if (index(controlcard,'MAP').gt.0) then
3506 call readi(controlcard,'MAP',nmap,0)
3507 else if (index(controlcard,'CSA').gt.0) then
3509 !rc else if (index(controlcard,'ZSCORE').gt.0) then
3511 !rc ZSCORE is rm from UNRES, modecalc=9 is available
3514 !fcm else if (index(controlcard,'MCMF').gt.0) then
3516 else if (index(controlcard,'SOFTREG').gt.0) then
3518 else if (index(controlcard,'CHECK_BOND').gt.0) then
3520 else if (index(controlcard,'TEST').gt.0) then
3522 else if (index(controlcard,'MD').gt.0) then
3524 else if (index(controlcard,'RE ').gt.0) then
3528 lmuca=index(controlcard,'MUCA').gt.0
3529 call readi(controlcard,'MUCADYN',mucadyn,0)
3530 call readi(controlcard,'MUCASMOOTH',muca_smooth,0)
3531 if (lmuca .and. (me.eq.king .or. .not.out1file )) &
3533 write (iout,*) 'MUCADYN=',mucadyn
3534 write (iout,*) 'MUCASMOOTH=',muca_smooth
3537 iscode=index(controlcard,'ONE_LETTER')
3538 indphi=index(controlcard,'PHI')
3539 indback=index(controlcard,'BACK')
3540 iranconf=index(controlcard,'RAND_CONF')
3541 i2ndstr=index(controlcard,'USE_SEC_PRED')
3542 gradout=index(controlcard,'GRADOUT').gt.0
3543 gnorm_check=index(controlcard,'GNORM_CHECK').gt.0
3544 call reada(controlcard,'DISTCHAINMAX',distchainmax,5.0d0)
3545 if (me.eq.king .or. .not.out1file ) &
3546 write (iout,*) "DISTCHAINMAX",distchainmax
3548 if(me.eq.king.or..not.out1file) &
3549 write (iout,'(2a)') diagmeth(kdiag),&
3550 ' routine used to diagonalize matrices.'
3551 if (shield_mode.gt.0) then
3553 !C VSolvSphere the volume of solving sphere
3555 !C rpp(1,1) is the energy r0 for peptide group contact and will be used for it
3556 !C there will be no distinction between proline peptide group and normal peptide
3557 !C group in case of shielding parameters
3558 VSolvSphere=4.0/3.0*pi*rpp(1,1)**3
3559 VSolvSphere_div=VSolvSphere-4.0/3.0*pi*(rpp(1,1)/2.0)**3
3560 write (iout,*) VSolvSphere,VSolvSphere_div
3561 !C long axis of side chain
3563 long_r_sidechain(i)=vbldsc0(1,i)
3564 short_r_sidechain(i)=sigma0(i)
3565 write(iout,*) "parame for long and short axis",i,vbldsc0(1,i),&
3571 end subroutine read_control
3572 !-----------------------------------------------------------------------------
3573 subroutine read_REMDpar
3575 ! Read REMD settings
3582 use control_data, only:out1file
3583 ! implicit real*8 (a-h,o-z)
3584 ! include 'DIMENSIONS'
3585 ! include 'COMMON.IOUNITS'
3586 ! include 'COMMON.TIME1'
3587 ! include 'COMMON.MD'
3590 !el include 'COMMON.LANGEVIN'
3592 !el include 'COMMON.LANGEVIN.lang0'
3594 ! include 'COMMON.INTERACT'
3595 ! include 'COMMON.NAMES'
3596 ! include 'COMMON.GEO'
3597 ! include 'COMMON.REMD'
3598 ! include 'COMMON.CONTROL'
3599 ! include 'COMMON.SETUP'
3600 ! character(len=80) :: ucase
3601 character(len=320) :: controlcard
3602 character(len=3200) :: controlcard1
3603 integer :: iremd_m_total
3606 ! real(kind=8) :: var,ene
3608 if(me.eq.king.or..not.out1file) &
3609 write (iout,*) "REMD setup"
3611 call card_concat(controlcard,.true.)
3612 call readi(controlcard,"NREP",nrep,3)
3613 call readi(controlcard,"NSTEX",nstex,1000)
3614 call reada(controlcard,"RETMIN",retmin,10.0d0)
3615 call reada(controlcard,"RETMAX",retmax,1000.0d0)
3616 mremdsync=(index(controlcard,'SYNC').gt.0)
3617 call readi(controlcard,"NSYN",i_sync_step,100)
3618 restart1file=(index(controlcard,'REST1FILE').gt.0)
3619 traj1file=(index(controlcard,'TRAJ1FILE').gt.0)
3620 call readi(controlcard,"TRAJCACHE",max_cache_traj_use,1)
3621 if(max_cache_traj_use.gt.max_cache_traj) &
3622 max_cache_traj_use=max_cache_traj
3623 if(me.eq.king.or..not.out1file) then
3624 !d if (traj1file) then
3625 !rc caching is in testing - NTWX is not ignored
3626 !d write (iout,*) "NTWX value is ignored"
3627 !d write (iout,*) " trajectory is stored to one file by master"
3628 !d write (iout,*) " before exchange at NSTEX intervals"
3630 write (iout,*) "NREP= ",nrep
3631 write (iout,*) "NSTEX= ",nstex
3632 write (iout,*) "SYNC= ",mremdsync
3633 write (iout,*) "NSYN= ",i_sync_step
3634 write (iout,*) "TRAJCACHE= ",max_cache_traj_use
3637 allocate(remd_t(nrep),remd_m(nrep)) !(maxprocs)
3638 if (index(controlcard,'TLIST').gt.0) then
3640 call card_concat(controlcard1,.true.)
3641 read(controlcard1,*) (remd_t(i),i=1,nrep)
3642 if(me.eq.king.or..not.out1file) &
3643 write (iout,*)'tlist',(remd_t(i),i=1,nrep)
3646 if (index(controlcard,'MLIST').gt.0) then
3648 call card_concat(controlcard1,.true.)
3649 read(controlcard1,*) (remd_m(i),i=1,nrep)
3650 if(me.eq.king.or..not.out1file) then
3651 write (iout,*)'mlist',(remd_m(i),i=1,nrep)
3654 iremd_m_total=iremd_m_total+remd_m(i)
3656 write (iout,*) 'Total number of replicas ',iremd_m_total
3659 if(me.eq.king.or..not.out1file) &
3660 write (iout,'(/30(1h=),a,29(1h=)/)') " End of REMD run setup "
3662 end subroutine read_REMDpar
3663 !-----------------------------------------------------------------------------
3664 subroutine read_MDpar
3668 use control_data, only: r_cut,rlamb,out1file
3670 use geometry_data, only: pi
3672 ! implicit real*8 (a-h,o-z)
3673 ! include 'DIMENSIONS'
3674 ! include 'COMMON.IOUNITS'
3675 ! include 'COMMON.TIME1'
3676 ! include 'COMMON.MD'
3679 !el include 'COMMON.LANGEVIN'
3681 !el include 'COMMON.LANGEVIN.lang0'
3683 ! include 'COMMON.INTERACT'
3684 ! include 'COMMON.NAMES'
3685 ! include 'COMMON.GEO'
3686 ! include 'COMMON.SETUP'
3687 ! include 'COMMON.CONTROL'
3688 ! include 'COMMON.SPLITELE'
3689 ! character(len=80) :: ucase
3690 character(len=320) :: controlcard
3695 call card_concat(controlcard,.true.)
3696 call readi(controlcard,"NSTEP",n_timestep,1000000)
3697 call readi(controlcard,"NTWE",ntwe,100)
3698 call readi(controlcard,"NTWX",ntwx,1000)
3699 call reada(controlcard,"DT",d_time,1.0d-1)
3700 call reada(controlcard,"DVMAX",dvmax,2.0d1)
3701 call reada(controlcard,"DAMAX",damax,1.0d1)
3702 call reada(controlcard,"EDRIFTMAX",edriftmax,1.0d+1)
3703 call readi(controlcard,"LANG",lang,0)
3704 RESPA = index(controlcard,"RESPA") .gt. 0
3705 call readi(controlcard,"NTIME_SPLIT",ntime_split,1)
3706 ntime_split0=ntime_split
3707 call readi(controlcard,"MAXTIME_SPLIT",maxtime_split,64)
3708 ntime_split0=ntime_split
3709 call reada(controlcard,"R_CUT",r_cut,2.0d0)
3710 call reada(controlcard,"LAMBDA",rlamb,0.3d0)
3711 rest = index(controlcard,"REST").gt.0
3712 tbf = index(controlcard,"TBF").gt.0
3713 usampl = index(controlcard,"USAMPL").gt.0
3714 mdpdb = index(controlcard,"MDPDB").gt.0
3715 call reada(controlcard,"T_BATH",t_bath,300.0d0)
3716 call reada(controlcard,"TAU_BATH",tau_bath,1.0d-1)
3717 call reada(controlcard,"EQ_TIME",eq_time,1.0d+4)
3718 call readi(controlcard,"RESET_MOMENT",count_reset_moment,1000)
3719 if (count_reset_moment.eq.0) count_reset_moment=1000000000
3720 call readi(controlcard,"RESET_VEL",count_reset_vel,1000)
3721 reset_moment=lang.eq.0 .and. tbf .and. count_reset_moment.gt.0
3722 reset_vel=lang.eq.0 .and. tbf .and. count_reset_vel.gt.0
3723 if (count_reset_vel.eq.0) count_reset_vel=1000000000
3724 large = index(controlcard,"LARGE").gt.0
3725 print_compon = index(controlcard,"PRINT_COMPON").gt.0
3726 rattle = index(controlcard,"RATTLE").gt.0
3727 ! if performing umbrella sampling, fragments constrained are read from the fragment file
3733 if(me.eq.king.or..not.out1file) then
3735 write (iout,'(27(1h=),a26,27(1h=))') " Parameters of the MD run "
3737 write (iout,'(a)') "The units are:"
3738 write (iout,'(a)') "positions: angstrom, time: 48.9 fs"
3739 write (iout,'(2a)') "velocity: angstrom/(48.9 fs),",&
3740 " acceleration: angstrom/(48.9 fs)**2"
3741 write (iout,'(a)') "energy: kcal/mol, temperature: K"
3743 write (iout,'(a60,i10)') "Number of time steps:",n_timestep
3744 write (iout,'(a60,f10.5,a)') &
3745 "Initial time step of numerical integration:",d_time,&
3747 write (iout,'(60x,f10.5,a)') d_time*48.9," fs"
3749 write (iout,'(2a,i4,a)') &
3750 "A-MTS algorithm used; initial time step for fast-varying",&
3751 " short-range forces split into",ntime_split," steps."
3752 write (iout,'(a,f5.2,a,f5.2)') "Short-range force cutoff",&
3753 r_cut," lambda",rlamb
3755 write (iout,'(2a,f10.5)') &
3756 "Maximum acceleration threshold to reduce the time step",&
3757 "/increase split number:",damax
3758 write (iout,'(2a,f10.5)') &
3759 "Maximum predicted energy drift to reduce the timestep",&
3760 "/increase split number:",edriftmax
3761 write (iout,'(a60,f10.5)') &
3762 "Maximum velocity threshold to reduce velocities:",dvmax
3763 write (iout,'(a60,i10)') "Frequency of property output:",ntwe
3764 write (iout,'(a60,i10)') "Frequency of coordinate output:",ntwx
3765 if (rattle) write (iout,'(a60)') &
3766 "Rattle algorithm used to constrain the virtual bonds"
3770 call reada(controlcard,"ETAWAT",etawat,0.8904d0)
3771 call reada(controlcard,"RWAT",rwat,1.4d0)
3772 call reada(controlcard,"SCAL_FRIC",scal_fric,2.0d-2)
3773 surfarea=index(controlcard,"SURFAREA").gt.0
3774 call readi(controlcard,"RESET_FRICMAT",reset_fricmat,1000)
3775 if(me.eq.king.or..not.out1file)then
3776 write (iout,'(/a,$)') "Langevin dynamics calculation"
3778 write (iout,'(a/)') &
3779 " with direct integration of Langevin equations"
3780 else if (lang.eq.2) then
3781 write (iout,'(a/)') " with TINKER stochasic MD integrator"
3782 else if (lang.eq.3) then
3783 write (iout,'(a/)') " with Ciccotti's stochasic MD integrator"
3784 else if (lang.eq.4) then
3785 write (iout,'(a/)') " in overdamped mode"
3787 write (iout,'(//a,i5)') &
3788 "=========== ERROR: Unknown Langevin dynamics mode:",lang
3791 write (iout,'(a60,f10.5)') "Temperature:",t_bath
3792 write (iout,'(a60,f10.5)') "Viscosity of the solvent:",etawat
3793 write (iout,'(a60,f10.5)') "Radius of solvent molecule:",rwat
3794 write (iout,'(a60,f10.5)') &
3795 "Scaling factor of the friction forces:",scal_fric
3796 if (surfarea) write (iout,'(2a,i10,a)') &
3797 "Friction coefficients will be scaled by solvent-accessible",&
3798 " surface area every",reset_fricmat," steps."
3800 ! Calculate friction coefficients and bounds of stochastic forces
3801 eta=6*pi*cPoise*etawat
3802 if(me.eq.king.or..not.out1file) &
3803 write(iout,'(a60,f10.5)')"Eta of the solvent in natural units:",&
3805 gamp=scal_fric*(pstok(i)+rwat)*eta
3806 stdfp=dsqrt(2*Rb*t_bath/d_time)
3807 allocate(gamsc(ntyp1),stdfsc(ntyp1)) !(ntyp1)
3809 gamsc(i)=scal_fric*(restok(i,1)+rwat)*eta
3810 stdfsc(i)=dsqrt(2*Rb*t_bath/d_time)
3812 if(me.eq.king.or..not.out1file)then
3813 write (iout,'(/2a/)') &
3814 "Radii of site types and friction coefficients and std's of",&
3815 " stochastic forces of fully exposed sites"
3816 write (iout,'(a5,f5.2,2f10.5)')'p',pstok,gamp,stdfp*dsqrt(gamp)
3818 write (iout,'(a5,f5.2,2f10.5)') restyp(i,1),restok(i,1),&
3819 gamsc(i),stdfsc(i)*dsqrt(gamsc(i))
3823 if(me.eq.king.or..not.out1file)then
3824 write (iout,'(a)') "Berendsen bath calculation"
3825 write (iout,'(a60,f10.5)') "Temperature:",t_bath
3826 write (iout,'(a60,f10.5)') "Coupling constant (tau):",tau_bath
3828 write (iout,'(a,i10,a)') "Momenta will be reset at zero every",&
3829 count_reset_moment," steps"
3831 write (iout,'(a,i10,a)') &
3832 "Velocities will be reset at random every",count_reset_vel,&
3836 if(me.eq.king.or..not.out1file) &
3837 write (iout,'(a31)') "Microcanonical mode calculation"
3839 if(me.eq.king.or..not.out1file)then
3840 if (rest) write (iout,'(/a/)') "===== Calculation restarted ===="
3842 write(iout,*) "MD running with constraints."
3843 write(iout,*) "Equilibration time ", eq_time, " mtus."
3844 write(iout,*) "Constraining ", nfrag," fragments."
3845 write(iout,*) "Length of each fragment, weight and q0:"
3847 write (iout,*) "Set of restraints #",iset
3849 write(iout,'(2i5,f8.1,f7.4)') ifrag(1,i,iset),&
3850 ifrag(2,i,iset),wfrag(i,iset),qinfrag(i,iset)
3852 write(iout,*) "constraints between ", npair, "fragments."
3853 write(iout,*) "constraint pairs, weights and q0:"
3855 write(iout,'(2i5,f8.1,f7.4)') ipair(1,i,iset),&
3856 ipair(2,i,iset),wpair(i,iset),qinpair(i,iset)
3858 write(iout,*) "angle constraints within ", nfrag_back,&
3859 "backbone fragments."
3860 write(iout,*) "fragment, weights:"
3862 write(iout,'(2i5,3f8.1)') ifrag_back(1,i,iset),&
3863 ifrag_back(2,i,iset),wfrag_back(1,i,iset),&
3864 wfrag_back(2,i,iset),wfrag_back(3,i,iset)
3867 iset=mod(kolor,nset)+1
3870 if(me.eq.king.or..not.out1file) &
3871 write (iout,'(/30(1h=),a,29(1h=)/)') " End of MD run setup "
3873 end subroutine read_MDpar
3874 !-----------------------------------------------------------------------------
3878 ! implicit real*8 (a-h,o-z)
3879 ! include 'DIMENSIONS'
3880 ! include 'COMMON.MAP'
3881 ! include 'COMMON.IOUNITS'
3882 character(len=3) :: angid(4) = (/'THE','PHI','ALP','OME'/)
3883 character(len=80) :: mapcard !,ucase
3886 ! real(kind=8) :: var,ene
3889 read (inp,'(a)') mapcard
3890 mapcard=ucase(mapcard)
3891 if (index(mapcard,'PHI').gt.0) then
3893 else if (index(mapcard,'THE').gt.0) then
3895 else if (index(mapcard,'ALP').gt.0) then
3897 else if (index(mapcard,'OME').gt.0) then
3900 write(iout,'(a)')'Error - illegal variable spec in MAP card.'
3901 stop 'Error - illegal variable spec in MAP card.'
3903 call readi (mapcard,'RES1',res1(imap),0)
3904 call readi (mapcard,'RES2',res2(imap),0)
3905 if (res1(imap).eq.0) then
3906 res1(imap)=res2(imap)
3907 else if (res2(imap).eq.0) then
3908 res2(imap)=res1(imap)
3910 if(res1(imap)*res2(imap).eq.0 .or. res1(imap).gt.res2(imap))then
3911 write (iout,'(a)') &
3912 'Error - illegal definition of variable group in MAP.'
3913 stop 'Error - illegal definition of variable group in MAP.'
3915 call reada(mapcard,'FROM',ang_from(imap),0.0D0)
3916 call reada(mapcard,'TO',ang_to(imap),0.0D0)
3917 call readi(mapcard,'NSTEP',nstep(imap),0)
3918 if (ang_from(imap).eq.ang_to(imap) .or. nstep(imap).eq.0) then
3919 write (iout,'(a)') &
3920 'Illegal boundary and/or step size specification in MAP.'
3921 stop 'Illegal boundary and/or step size specification in MAP.'
3925 end subroutine map_read
3926 !-----------------------------------------------------------------------------
3929 use control_data, only: vdisulf
3931 ! implicit real*8 (a-h,o-z)
3932 ! include 'DIMENSIONS'
3933 ! include 'COMMON.IOUNITS'
3934 ! include 'COMMON.GEO'
3935 ! include 'COMMON.CSA'
3936 ! include 'COMMON.BANK'
3937 ! include 'COMMON.CONTROL'
3938 ! character(len=80) :: ucase
3939 character(len=620) :: mcmcard
3941 ! integer :: ntf,ik,iw_pdb
3942 ! real(kind=8) :: var,ene
3944 call card_concat(mcmcard,.true.)
3946 call readi(mcmcard,'NCONF',nconf,50)
3947 call readi(mcmcard,'NADD',nadd,0)
3948 call readi(mcmcard,'JSTART',jstart,1)
3949 call readi(mcmcard,'JEND',jend,1)
3950 call readi(mcmcard,'NSTMAX',nstmax,500000)
3951 call readi(mcmcard,'N0',n0,1)
3952 call readi(mcmcard,'N1',n1,6)
3953 call readi(mcmcard,'N2',n2,4)
3954 call readi(mcmcard,'N3',n3,0)
3955 call readi(mcmcard,'N4',n4,0)
3956 call readi(mcmcard,'N5',n5,0)
3957 call readi(mcmcard,'N6',n6,10)
3958 call readi(mcmcard,'N7',n7,0)
3959 call readi(mcmcard,'N8',n8,0)
3960 call readi(mcmcard,'N9',n9,0)
3961 call readi(mcmcard,'N14',n14,0)
3962 call readi(mcmcard,'N15',n15,0)
3963 call readi(mcmcard,'N16',n16,0)
3964 call readi(mcmcard,'N17',n17,0)
3965 call readi(mcmcard,'N18',n18,0)
3967 vdisulf=(index(mcmcard,'DYNSS').gt.0)
3969 call readi(mcmcard,'NDIFF',ndiff,2)
3970 call reada(mcmcard,'DIFFCUT',diffcut,0.0d0)
3971 call readi(mcmcard,'IS1',is1,1)
3972 call readi(mcmcard,'IS2',is2,8)
3973 call readi(mcmcard,'NRAN0',nran0,4)
3974 call readi(mcmcard,'NRAN1',nran1,2)
3975 call readi(mcmcard,'IRR',irr,1)
3976 call readi(mcmcard,'NSEED',nseed,20)
3977 call readi(mcmcard,'NTOTAL',ntotal,10000)
3978 call reada(mcmcard,'CUT1',cut1,2.0d0)
3979 call reada(mcmcard,'CUT2',cut2,5.0d0)
3980 call reada(mcmcard,'ESTOP',estop,-3000.0d0)
3981 call readi(mcmcard,'ICMAX',icmax,3)
3982 call readi(mcmcard,'IRESTART',irestart,0)
3983 !!bankt call readi(mcmcard,'NBANKTM',ntbankm,0)
3986 call reada(mcmcard,'DELE',dele,20.0d0)
3987 call reada(mcmcard,'DIFCUT',difcut,720.0d0)
3988 call readi(mcmcard,'IREF',iref,0)
3989 call reada(mcmcard,'RMSCUT',rmscut,4.0d0)
3990 call reada(mcmcard,'PNCCUT',pnccut,0.5d0)
3991 call readi(mcmcard,'NCONF_IN',nconf_in,0)
3992 call reada(mcmcard,'RDIH_BIAS',rdih_bias,0.5d0)
3993 write (iout,*) "NCONF_IN",nconf_in
3995 end subroutine csaread
3996 !-----------------------------------------------------------------------------
4000 use control_data, only: MaxMoveType
4003 ! implicit real*8 (a-h,o-z)
4004 ! include 'DIMENSIONS'
4005 ! include 'COMMON.MCM'
4006 ! include 'COMMON.MCE'
4007 ! include 'COMMON.IOUNITS'
4008 ! character(len=80) :: ucase
4009 character(len=320) :: mcmcard
4012 ! real(kind=8) :: var,ene
4014 call card_concat(mcmcard,.true.)
4015 call readi(mcmcard,'MAXACC',maxacc,100)
4016 call readi(mcmcard,'MAX_MCM_IT',max_mcm_it,10000)
4017 call readi(mcmcard,'MAXTRIAL',maxtrial,100)
4018 call readi(mcmcard,'MAXTRIAL_ITER',maxtrial_iter,1000)
4019 call readi(mcmcard,'MAXREPM',maxrepm,200)
4020 call reada(mcmcard,'RANFRACT',RanFract,0.5D0)
4021 call reada(mcmcard,'POOL_FRACT',pool_fraction,0.01D0)
4022 call reada(mcmcard,'OVERLAP',overlap_cut,1.0D3)
4023 call reada(mcmcard,'E_UP',e_up,5.0D0)
4024 call reada(mcmcard,'DELTE',delte,0.1D0)
4025 call readi(mcmcard,'NSWEEP',nsweep,5)
4026 call readi(mcmcard,'NSTEPH',nsteph,0)
4027 call readi(mcmcard,'NSTEPC',nstepc,0)
4028 call reada(mcmcard,'TMIN',tmin,298.0D0)
4029 call reada(mcmcard,'TMAX',tmax,298.0D0)
4030 call readi(mcmcard,'NWINDOW',nwindow,0)
4031 call readi(mcmcard,'PRINT_MC',print_mc,0)
4032 print_stat=(index(mcmcard,'NO_PRINT_STAT').le.0)
4033 print_int=(index(mcmcard,'NO_PRINT_INT').le.0)
4034 ent_read=(index(mcmcard,'ENT_READ').gt.0)
4035 call readi(mcmcard,'SAVE_FREQ',save_frequency,1000)
4036 call readi(mcmcard,'MESSAGE_FREQ',message_frequency,1000)
4037 call readi(mcmcard,'POOL_READ_FREQ',pool_read_freq,5000)
4038 call readi(mcmcard,'POOL_SAVE_FREQ',pool_save_freq,1000)
4039 call readi(mcmcard,'PRINT_FREQ',print_freq,1000)
4040 if (nwindow.gt.0) then
4041 allocate(winstart(nwindow)) !!el (maxres)
4042 allocate(winend(nwindow)) !!el
4043 allocate(winlen(nwindow)) !!el
4044 read (inp,*) (winstart(i),winend(i),i=1,nwindow)
4046 winlen(i)=winend(i)-winstart(i)+1
4049 if (tmax.lt.tmin) tmax=tmin
4050 if (tmax.eq.tmin) then
4054 if (nstepc.gt.0 .and. nsteph.gt.0) then
4055 tsteph=(tmax/tmin)**(1.0D0/(nsteph+0.0D0))
4056 tstepc=(tmax/tmin)**(1.0D0/(nstepc+0.0D0))
4058 allocate(sumpro_type(0:MaxMoveType)) !(0:MaxMoveType)
4059 ! Probabilities of different move types
4060 sumpro_type(0)=0.0D0
4061 call reada(mcmcard,'MULTI_BOND',sumpro_type(1),1.0d0)
4062 call reada(mcmcard,'ONE_ANGLE' ,sumpro_type(2),2.0d0)
4063 sumpro_type(2)=sumpro_type(1)+sumpro_type(2)
4064 call reada(mcmcard,'THETA' ,sumpro_type(3),0.0d0)
4065 sumpro_type(3)=sumpro_type(2)+sumpro_type(3)
4066 call reada(mcmcard,'SIDE_CHAIN',sumpro_type(4),0.5d0)
4067 sumpro_type(4)=sumpro_type(3)+sumpro_type(4)
4069 print *,'i',i,' sumprotype',sumpro_type(i)
4070 sumpro_type(i)=sumpro_type(i)/sumpro_type(MaxMoveType)
4071 print *,'i',i,' sumprotype',sumpro_type(i)
4074 end subroutine mcmread
4075 !-----------------------------------------------------------------------------
4076 subroutine read_minim
4079 ! implicit real*8 (a-h,o-z)
4080 ! include 'DIMENSIONS'
4081 ! include 'COMMON.MINIM'
4082 ! include 'COMMON.IOUNITS'
4083 ! character(len=80) :: ucase
4084 character(len=320) :: minimcard
4086 ! integer :: ntf,ik,iw_pdb
4087 ! real(kind=8) :: var,ene
4089 call card_concat(minimcard,.true.)
4090 call readi(minimcard,'MAXMIN',maxmin,2000)
4091 call readi(minimcard,'MAXFUN',maxfun,5000)
4092 call readi(minimcard,'MINMIN',minmin,maxmin)
4093 call readi(minimcard,'MINFUN',minfun,maxmin)
4094 call reada(minimcard,'TOLF',tolf,1.0D-2)
4095 call reada(minimcard,'RTOLF',rtolf,1.0D-4)
4096 print_min_stat=min0(index(minimcard,'PRINT_MIN_STAT'),1)
4097 print_min_res=min0(index(minimcard,'PRINT_MIN_RES'),1)
4098 print_min_ini=min0(index(minimcard,'PRINT_MIN_INI'),1)
4099 write (iout,'(/80(1h*)/20x,a/80(1h*))') &
4100 'Options in energy minimization:'
4101 write (iout,'(4(a,i5),a,1pe14.5,a,1pe14.5)') &
4102 'MaxMin:',MaxMin,' MaxFun:',MaxFun,&
4103 'MinMin:',MinMin,' MinFun:',MinFun,&
4104 ' TolF:',TolF,' RTolF:',RTolF
4106 end subroutine read_minim
4107 !-----------------------------------------------------------------------------
4108 subroutine openunits
4110 use MD_data, only: usampl
4113 use control_data, only:out1file
4114 use control, only: getenv_loc
4115 ! implicit real*8 (a-h,o-z)
4116 ! include 'DIMENSIONS'
4119 character(len=16) :: form,nodename
4120 integer :: nodelen,ierror,npos
4122 ! include 'COMMON.SETUP'
4123 ! include 'COMMON.IOUNITS'
4124 ! include 'COMMON.MD'
4125 ! include 'COMMON.CONTROL'
4126 integer :: lenpre,lenpot,lentmp !,ilen
4128 character(len=3) :: out1file_text !,ucase
4129 character(len=3) :: ll
4132 ! integer :: ntf,ik,iw_pdb
4133 ! real(kind=8) :: var,ene
4135 ! print *,"Processor",myrank,"fg_rank",fg_rank," entered openunits"
4136 call getenv_loc("PREFIX",prefix)
4138 call getenv_loc("POT",pot)
4139 call getenv_loc("DIRTMP",tmpdir)
4140 call getenv_loc("CURDIR",curdir)
4141 call getenv_loc("OUT1FILE",out1file_text)
4142 ! print *,"Processor",myrank,"fg_rank",fg_rank," did GETENV"
4143 out1file_text=ucase(out1file_text)
4144 if (out1file_text(1:1).eq."Y") then
4147 out1file=fg_rank.gt.0
4152 if (lentmp.gt.0) then
4153 write (*,'(80(1h!))')
4154 write (*,'(a,19x,a,19x,a)') "!"," A T T E N T I O N ","!"
4155 write (*,'(80(1h!))')
4156 write (*,*)"All output files will be on node /tmp directory."
4158 call MPI_GET_PROCESSOR_NAME( nodename, nodelen, IERROR )
4159 if (me.eq.king) then
4160 write (*,*) "The master node is ",nodename
4161 else if (fg_rank.eq.0) then
4162 write (*,*) "I am the CG slave node ",nodename
4164 write (*,*) "I am the FG slave node ",nodename
4167 PREFIX = tmpdir(:lentmp)//'/'//prefix(:lenpre)
4168 lenpre = lentmp+lenpre+1
4170 entname=prefix(:lenpre)//'_'//pot(:lenpot)//'.entr'
4171 ! Get the names and open the input files
4172 #if defined(WINIFL) || defined(WINPGI)
4173 open(1,file=pref_orig(:ilen(pref_orig))// &
4174 '.inp',status='old',readonly,shared)
4175 open (9,file=prefix(:ilen(prefix))//'.intin',status='unknown')
4176 ! open (18,file=prefix(:ilen(prefix))//'.entin',status='unknown')
4177 ! Get parameter filenames and open the parameter files.
4178 call getenv_loc('BONDPAR',bondname)
4179 open (ibond,file=bondname,status='old',readonly,shared)
4180 call getenv_loc('BONDPAR_NUCL',bondname_nucl)
4181 open (ibond_nucl,file=bondname_nucl,status='old',readonly,shared)
4182 call getenv_loc('THETPAR',thetname)
4183 open (ithep,file=thetname,status='old',readonly,shared)
4184 call getenv_loc('ROTPAR',rotname)
4185 open (irotam,file=rotname,status='old',readonly,shared)
4186 call getenv_loc('TORPAR',torname)
4187 open (itorp,file=torname,status='old',readonly,shared)
4188 call getenv_loc('TORDPAR',tordname)
4189 open (itordp,file=tordname,status='old',readonly,shared)
4190 call getenv_loc('FOURIER',fouriername)
4191 open (ifourier,file=fouriername,status='old',readonly,shared)
4192 call getenv_loc('ELEPAR',elename)
4193 open (ielep,file=elename,status='old',readonly,shared)
4194 call getenv_loc('SIDEPAR',sidename)
4195 open (isidep,file=sidename,status='old',readonly,shared)
4197 call getenv_loc('THETPAR_NUCL',thetname_nucl)
4198 open (ithep_nucl,file=thetname_nucl,status='old',readonly,shared)
4199 call getenv_loc('ROTPAR_NUCL',rotname_nucl)
4200 open (irotam_nucl,file=rotname_nucl,status='old',readonly,shared)
4201 call getenv_loc('TORPAR_NUCL',torname_nucl)
4202 open (itorp_nucl,file=torname_nucl,status='old',readonly,shared)
4203 call getenv_loc('TORDPAR_NUCL',tordname_nucl)
4204 open (itordp_nucl,file=tordname_nucl,status='old',readonly,shared)
4205 call getenv_loc('SIDEPAR_NUCL',sidename_nucl)
4206 open (isidep_nucl,file=sidename_nucl,status='old',readonly,shared)
4209 #elif (defined CRAY) || (defined AIX)
4210 open(1,file=pref_orig(:ilen(pref_orig))//'.inp',status='old',&
4212 ! print *,"Processor",myrank," opened file 1"
4213 open (9,file=prefix(:ilen(prefix))//'.intin',status='unknown')
4214 ! print *,"Processor",myrank," opened file 9"
4215 ! open (18,file=prefix(:ilen(prefix))//'.entin',status='unknown')
4216 ! Get parameter filenames and open the parameter files.
4217 call getenv_loc('BONDPAR',bondname)
4218 open (ibond,file=bondname,status='old',action='read')
4219 call getenv_loc('BONDPAR_NUCL',bondname_nucl)
4220 open (ibond_nucl,file=bondname_nucl,status='old',action='read')
4222 ! print *,"Processor",myrank," opened file IBOND"
4223 call getenv_loc('THETPAR',thetname)
4224 open (ithep,file=thetname,status='old',action='read')
4225 ! print *,"Processor",myrank," opened file ITHEP"
4226 call getenv_loc('ROTPAR',rotname)
4227 open (irotam,file=rotname,status='old',action='read')
4228 ! print *,"Processor",myrank," opened file IROTAM"
4229 call getenv_loc('TORPAR',torname)
4230 open (itorp,file=torname,status='old',action='read')
4231 ! print *,"Processor",myrank," opened file ITORP"
4232 call getenv_loc('TORDPAR',tordname)
4233 open (itordp,file=tordname,status='old',action='read')
4234 ! print *,"Processor",myrank," opened file ITORDP"
4235 call getenv_loc('SCCORPAR',sccorname)
4236 open (isccor,file=sccorname,status='old',action='read')
4237 ! print *,"Processor",myrank," opened file ISCCOR"
4238 call getenv_loc('FOURIER',fouriername)
4239 open (ifourier,file=fouriername,status='old',action='read')
4240 ! print *,"Processor",myrank," opened file IFOURIER"
4241 call getenv_loc('ELEPAR',elename)
4242 open (ielep,file=elename,status='old',action='read')
4243 ! print *,"Processor",myrank," opened file IELEP"
4244 call getenv_loc('SIDEPAR',sidename)
4245 open (isidep,file=sidename,status='old',action='read')
4247 call getenv_loc('THETPAR_NUCL',thetname_nucl)
4248 open (ithep_nucl,file=thetname_nucl,status='old',action='read')
4249 call getenv_loc('ROTPAR_NUCL',rotname_nucl)
4250 open (irotam_nucl,file=rotname_nucl,status='old',action='read')
4251 call getenv_loc('TORPAR_NUCL',torname_nucl)
4252 open (itorp_nucl,file=torname_nucl,status='old',action='read')
4253 call getenv_loc('TORDPAR_NUCL',tordname_nucl)
4254 open (itordp_nucl,file=tordname_nucl,status='old',action='read')
4255 call getenv_loc('SIDEPAR_NUCL',sidename_nucl)
4256 open (isidep_nucl,file=sidename_nucl,status='old',action='read')
4258 call getenv_loc('LIPTRANPAR',liptranname)
4259 open (iliptranpar,file=liptranname,status='old',action='read')
4260 call getenv_loc('TUBEPAR',tubename)
4261 open (itube,file=tubename,status='old',action='read')
4263 ! print *,"Processor",myrank," opened file ISIDEP"
4264 ! print *,"Processor",myrank," opened parameter files"
4266 open(1,file=pref_orig(:ilen(pref_orig))//'.inp',status='old')
4267 open (9,file=prefix(:ilen(prefix))//'.intin',status='unknown')
4268 ! open (18,file=prefix(:ilen(prefix))//'.entin',status='unknown')
4269 ! Get parameter filenames and open the parameter files.
4270 call getenv_loc('BONDPAR',bondname)
4271 open (ibond,file=bondname,status='old')
4272 call getenv_loc('BONDPAR_NUCL',bondname_nucl)
4273 open (ibond_nucl,file=bondname_nucl,status='old')
4275 call getenv_loc('THETPAR',thetname)
4276 open (ithep,file=thetname,status='old')
4277 call getenv_loc('ROTPAR',rotname)
4278 open (irotam,file=rotname,status='old')
4279 call getenv_loc('TORPAR',torname)
4280 open (itorp,file=torname,status='old')
4281 call getenv_loc('TORDPAR',tordname)
4282 open (itordp,file=tordname,status='old')
4283 call getenv_loc('SCCORPAR',sccorname)
4284 open (isccor,file=sccorname,status='old')
4285 call getenv_loc('FOURIER',fouriername)
4286 open (ifourier,file=fouriername,status='old')
4287 call getenv_loc('ELEPAR',elename)
4288 open (ielep,file=elename,status='old')
4289 call getenv_loc('SIDEPAR',sidename)
4290 open (isidep,file=sidename,status='old')
4292 open (ithep_nucl,file=thetname_nucl,status='old')
4293 call getenv_loc('ROTPAR_NUCL',rotname_nucl)
4294 open (irotam_nucl,file=rotname_nucl,status='old')
4295 call getenv_loc('TORPAR_NUCL',torname_nucl)
4296 open (itorp_nucl,file=torname_nucl,status='old')
4297 call getenv_loc('TORDPAR_NUCL',tordname_nucl)
4298 open (itordp_nucl,file=tordname_nucl,status='old')
4299 call getenv_loc('SIDEPAR_NUCL',sidename_nucl)
4300 open (isidep_nucl,file=sidename_nucl,status='old')
4302 call getenv_loc('LIPTRANPAR',liptranname)
4303 open (iliptranpar,file=liptranname,status='old')
4304 call getenv_loc('TUBEPAR',tubename)
4305 open (itube,file=tubename,status='old')
4307 open(1,file=pref_orig(:ilen(pref_orig))//'.inp',status='old',&
4309 open (9,file=prefix(:ilen(prefix))//'.intin',status='unknown')
4310 ! open (18,file=prefix(:ilen(prefix))//'.entin',status='unknown')
4311 ! Get parameter filenames and open the parameter files.
4312 call getenv_loc('BONDPAR',bondname)
4313 open (ibond,file=bondname,status='old',action='read')
4314 call getenv_loc('BONDPAR_NUCL',bondname_nucl)
4315 open (ibond_nucl,file=bondname_nucl,status='old',action='read')
4316 call getenv_loc('THETPAR',thetname)
4317 open (ithep,file=thetname,status='old',action='read')
4318 call getenv_loc('ROTPAR',rotname)
4319 open (irotam,file=rotname,status='old',action='read')
4320 call getenv_loc('TORPAR',torname)
4321 open (itorp,file=torname,status='old',action='read')
4322 call getenv_loc('TORDPAR',tordname)
4323 open (itordp,file=tordname,status='old',action='read')
4324 call getenv_loc('SCCORPAR',sccorname)
4325 open (isccor,file=sccorname,status='old',action='read')
4327 call getenv_loc('THETPARPDB',thetname_pdb)
4328 print *,"thetname_pdb ",thetname_pdb
4329 open (ithep_pdb,file=thetname_pdb,status='old',action='read')
4330 print *,ithep_pdb," opened"
4332 call getenv_loc('FOURIER',fouriername)
4333 open (ifourier,file=fouriername,status='old',readonly)
4334 call getenv_loc('ELEPAR',elename)
4335 open (ielep,file=elename,status='old',readonly)
4336 call getenv_loc('SIDEPAR',sidename)
4337 open (isidep,file=sidename,status='old',readonly)
4339 call getenv_loc('THETPAR_NUCL',thetname_nucl)
4340 open (ithep_nucl,file=thetname_nucl,status='old',action='read')
4341 call getenv_loc('ROTPAR_NUCL',rotname_nucl)
4342 open (irotam_nucl,file=rotname_nucl,status='old',action='read')
4343 call getenv_loc('TORPAR_NUCL',torname_nucl)
4344 open (itorp_nucl,file=torname_nucl,status='old',action='read')
4345 call getenv_loc('TORDPAR_NUCL',tordname_nucl)
4346 open (itordp_nucl,file=tordname_nucl,status='old',action='read')
4347 call getenv_loc('SIDEPAR_NUCL',sidename_nucl)
4348 open (isidep_nucl,file=sidename_nucl,status='old',action='read')
4350 call getenv_loc('LIPTRANPAR',liptranname)
4351 open (iliptranpar,file=liptranname,status='old',action='read')
4352 call getenv_loc('TUBEPAR',tubename)
4353 open (itube,file=tubename,status='old',action='read')
4356 call getenv_loc('ROTPARPDB',rotname_pdb)
4357 open (irotam_pdb,file=rotname_pdb,status='old',action='read')
4360 call getenv_loc('SCPPAR_NUCL',scpname_nucl)
4361 #if defined(WINIFL) || defined(WINPGI)
4362 open (iscpp_nucl,file=scpname_nucl,status='old',readonly,shared)
4363 #elif (defined CRAY) || (defined AIX)
4364 open (iscpp_nucl,file=scpname_nucl,status='old',action='read')
4366 open (iscpp_nucl,file=scpname_nucl,status='old')
4368 open (iscpp_nucl,file=scpname_nucl,status='old',action='read')
4373 ! 8/9/01 In the newest version SCp interaction constants are read from a file
4374 ! Use -DOLDSCP to use hard-coded constants instead.
4376 call getenv_loc('SCPPAR',scpname)
4377 #if defined(WINIFL) || defined(WINPGI)
4378 open (iscpp,file=scpname,status='old',readonly,shared)
4379 #elif (defined CRAY) || (defined AIX)
4380 open (iscpp,file=scpname,status='old',action='read')
4382 open (iscpp,file=scpname,status='old')
4384 open (iscpp,file=scpname,status='old',action='read')
4387 call getenv_loc('PATTERN',patname)
4388 #if defined(WINIFL) || defined(WINPGI)
4389 open (icbase,file=patname,status='old',readonly,shared)
4390 #elif (defined CRAY) || (defined AIX)
4391 open (icbase,file=patname,status='old',action='read')
4393 open (icbase,file=patname,status='old')
4395 open (icbase,file=patname,status='old',action='read')
4398 ! Open output file only for CG processes
4399 ! print *,"Processor",myrank," fg_rank",fg_rank
4400 if (fg_rank.eq.0) then
4402 if (nodes.eq.1) then
4405 npos = dlog10(dfloat(nodes-1))+1
4407 if (npos.lt.3) npos=3
4408 write (liczba,'(i1)') npos
4409 form = '(bz,i'//liczba(:ilen(liczba))//'.'//liczba(:ilen(liczba)) &
4411 write (liczba,form) me
4412 outname=prefix(:lenpre)//'.out_'//pot(:lenpot)// &
4413 liczba(:ilen(liczba))
4414 intname=prefix(:lenpre)//'_'//pot(:lenpot)//liczba(:ilen(liczba)) &
4416 pdbname=prefix(:lenpre)//'_'//pot(:lenpot)//liczba(:ilen(liczba)) &
4418 mol2name=prefix(:lenpre)//'_'//pot(:lenpot)// &
4419 liczba(:ilen(liczba))//'.mol2'
4420 statname=prefix(:lenpre)//'_'//pot(:lenpot)// &
4421 liczba(:ilen(liczba))//'.stat'
4423 call copy_to_tmp(pref_orig(:ilen(pref_orig))//'_'//pot(:lenpot) &
4424 //liczba(:ilen(liczba))//'.stat')
4425 rest2name=prefix(:ilen(prefix))//"_"//liczba(:ilen(liczba)) &
4428 qname=prefix(:lenpre)//'_'//pot(:lenpot)// &
4429 liczba(:ilen(liczba))//'.const'
4434 outname=prefix(:lenpre)//'.out_'//pot(:lenpot)
4435 intname=prefix(:lenpre)//'_'//pot(:lenpot)//'.int'
4436 pdbname=prefix(:lenpre)//'_'//pot(:lenpot)//'.pdb'
4437 mol2name=prefix(:lenpre)//'_'//pot(:lenpot)//'.mol2'
4438 statname=prefix(:lenpre)//'_'//pot(:lenpot)//'.stat'
4440 call copy_to_tmp(pref_orig(:ilen(pref_orig))//'_'//pot(:lenpot)// &
4442 rest2name=prefix(:ilen(prefix))//'.rst'
4444 qname=prefix(:lenpre)//'_'//pot(:lenpot)//'.const'
4447 #if defined(AIX) || defined(PGI)
4448 if (me.eq.king .or. .not. out1file) &
4449 open(iout,file=outname,status='unknown')
4451 if (fg_rank.gt.0) then
4452 write (liczba,'(i3.3)') myrank/nfgtasks
4453 write (ll,'(bz,i3.3)') fg_rank
4454 open(iout,file="debug"//liczba(:ilen(liczba))//"."//ll,&
4459 open(igeom,file=intname,status='unknown',position='append')
4460 open(ipdb,file=pdbname,status='unknown')
4461 open(imol2,file=mol2name,status='unknown')
4462 open(istat,file=statname,status='unknown',position='append')
4464 !1out open(iout,file=outname,status='unknown')
4467 if (me.eq.king .or. .not.out1file) &
4468 open(iout,file=outname,status='unknown')
4470 if (fg_rank.gt.0) then
4471 write (liczba,'(i3.3)') myrank/nfgtasks
4472 write (ll,'(bz,i3.3)') fg_rank
4473 open(iout,file="debug"//liczba(:ilen(liczba))//"."//ll,&
4478 open(igeom,file=intname,status='unknown',access='append')
4479 open(ipdb,file=pdbname,status='unknown')
4480 open(imol2,file=mol2name,status='unknown')
4481 open(istat,file=statname,status='unknown',access='append')
4483 !1out open(iout,file=outname,status='unknown')
4486 csa_rbank=prefix(:lenpre)//'.CSA.rbank'
4487 csa_seed=prefix(:lenpre)//'.CSA.seed'
4488 csa_history=prefix(:lenpre)//'.CSA.history'
4489 csa_bank=prefix(:lenpre)//'.CSA.bank'
4490 csa_bank1=prefix(:lenpre)//'.CSA.bank1'
4491 csa_alpha=prefix(:lenpre)//'.CSA.alpha'
4492 csa_alpha1=prefix(:lenpre)//'.CSA.alpha1'
4493 !!bankt csa_bankt=prefix(:lenpre)//'.CSA.bankt'
4494 csa_int=prefix(:lenpre)//'.int'
4495 csa_bank_reminimized=prefix(:lenpre)//'.CSA.bank_reminimized'
4496 csa_native_int=prefix(:lenpre)//'.CSA.native.int'
4497 csa_in=prefix(:lenpre)//'.CSA.in'
4498 ! print *,"Processor",myrank,"fg_rank",fg_rank," opened files"
4501 write (iout,'(80(1h-))')
4502 write (iout,'(30x,a)') "FILE ASSIGNMENT"
4503 write (iout,'(80(1h-))')
4504 write (iout,*) "Input file : ",&
4505 pref_orig(:ilen(pref_orig))//'.inp'
4506 write (iout,*) "Output file : ",&
4507 outname(:ilen(outname))
4509 write (iout,*) "Sidechain potential file : ",&
4510 sidename(:ilen(sidename))
4512 write (iout,*) "SCp potential file : ",&
4513 scpname(:ilen(scpname))
4515 write (iout,*) "Electrostatic potential file : ",&
4516 elename(:ilen(elename))
4517 write (iout,*) "Cumulant coefficient file : ",&
4518 fouriername(:ilen(fouriername))
4519 write (iout,*) "Torsional parameter file : ",&
4520 torname(:ilen(torname))
4521 write (iout,*) "Double torsional parameter file : ",&
4522 tordname(:ilen(tordname))
4523 write (iout,*) "SCCOR parameter file : ",&
4524 sccorname(:ilen(sccorname))
4525 write (iout,*) "Bond & inertia constant file : ",&
4526 bondname(:ilen(bondname))
4527 write (iout,*) "Bending parameter file : ",&
4528 thetname(:ilen(thetname))
4529 write (iout,*) "Rotamer parameter file : ",&
4530 rotname(:ilen(rotname))
4533 write (iout,*) "Thetpdb parameter file : ",&
4534 thetname_pdb(:ilen(thetname_pdb))
4537 write (iout,*) "Threading database : ",&
4538 patname(:ilen(patname))
4540 write (iout,*)" DIRTMP : ",&
4542 write (iout,'(80(1h-))')
4545 end subroutine openunits
4546 !-----------------------------------------------------------------------------
4549 use geometry_data, only: nres,dc
4551 ! implicit real*8 (a-h,o-z)
4552 ! include 'DIMENSIONS'
4553 ! include 'COMMON.CHAIN'
4554 ! include 'COMMON.IOUNITS'
4555 ! include 'COMMON.MD'
4558 ! real(kind=8) :: var,ene
4560 open(irest2,file=rest2name,status='unknown')
4561 read(irest2,*) totT,EK,potE,totE,t_bath
4564 ! AL 4/17/17: Now reading d_t(0,:) too
4566 read(irest2,'(3e15.5)') (d_t(j,i),j=1,3)
4569 ! AL 4/17/17: Now reading d_c(0,:) too
4571 read(irest2,'(3e15.5)') (dc(j,i),j=1,3)
4574 read (irest2,*) iset
4578 end subroutine readrst
4579 !-----------------------------------------------------------------------------
4580 subroutine read_fragments
4584 use control_data, only:out1file
4587 ! implicit real*8 (a-h,o-z)
4588 ! include 'DIMENSIONS'
4592 ! include 'COMMON.SETUP'
4593 ! include 'COMMON.CHAIN'
4594 ! include 'COMMON.IOUNITS'
4595 ! include 'COMMON.MD'
4596 ! include 'COMMON.CONTROL'
4599 ! real(kind=8) :: var,ene
4601 read(inp,*) nset,nfrag,npair,nfrag_back
4603 !el from module energy
4604 ! if(.not.allocated(mset)) allocate(mset(nset)) !(maxprocs/20)
4605 if(.not.allocated(wfrag_back)) then
4606 allocate(wfrag_back(3,nfrag_back,nset)) !(3,maxfrag_back,maxprocs/20)
4607 allocate(ifrag_back(3,nfrag_back,nset)) !(3,maxfrag_back,maxprocs/20)
4609 allocate(qinfrag(nfrag,nset),wfrag(nfrag,nset)) !(50,maxprocs/20)
4610 allocate(ifrag(2,nfrag,nset)) !(2,50,maxprocs/20)
4612 allocate(qinpair(npair,nset),wpair(npair,nset)) !(100,maxprocs/20)
4613 allocate(ipair(2,npair,nset)) !(2,100,maxprocs/20)
4616 if(me.eq.king.or..not.out1file) &
4617 write(iout,*) "nset",nset," nfrag",nfrag," npair",npair,&
4618 " nfrag_back",nfrag_back
4620 read(inp,*) mset(iset)
4622 read(inp,*) wfrag(i,iset),ifrag(1,i,iset),ifrag(2,i,iset),&
4624 if(me.eq.king.or..not.out1file) &
4625 write(iout,*) "R ",i,wfrag(i,iset),ifrag(1,i,iset),&
4626 ifrag(2,i,iset), qinfrag(i,iset)
4629 read(inp,*) wpair(i,iset),ipair(1,i,iset),ipair(2,i,iset),&
4631 if(me.eq.king.or..not.out1file) &
4632 write(iout,*) "R ",i,wpair(i,iset),ipair(1,i,iset),&
4633 ipair(2,i,iset), qinpair(i,iset)
4636 read(inp,*) wfrag_back(1,i,iset),wfrag_back(2,i,iset),&
4637 wfrag_back(3,i,iset),&
4638 ifrag_back(1,i,iset),ifrag_back(2,i,iset)
4639 if(me.eq.king.or..not.out1file) &
4640 write(iout,*) "A",i,wfrag_back(1,i,iset),wfrag_back(2,i,iset),&
4641 wfrag_back(3,i,iset),ifrag_back(1,i,iset),ifrag_back(2,i,iset)
4645 end subroutine read_fragments
4646 !-----------------------------------------------------------------------------
4648 !-----------------------------------------------------------------------------
4652 ! implicit real*8 (a-h,o-z)
4653 ! include 'DIMENSIONS'
4654 ! include 'COMMON.CSA'
4655 ! include 'COMMON.BANK'
4656 ! include 'COMMON.IOUNITS'
4658 ! integer :: ntf,ik,iw_pdb
4659 ! real(kind=8) :: var,ene
4661 open(icsa_in,file=csa_in,status="old",err=100)
4662 read(icsa_in,*) nconf
4663 read(icsa_in,*) jstart,jend
4664 read(icsa_in,*) nstmax
4665 read(icsa_in,*) n1,n2,n3,n4,n5,n6,n7,n8,is1,is2
4666 read(icsa_in,*) nran0,nran1,irr
4667 read(icsa_in,*) nseed
4668 read(icsa_in,*) ntotal,cut1,cut2
4669 read(icsa_in,*) estop
4670 read(icsa_in,*) icmax,irestart
4671 read(icsa_in,*) ntbankm,dele,difcut
4672 read(icsa_in,*) iref,rmscut,pnccut
4673 read(icsa_in,*) ndiff
4680 end subroutine csa_read
4681 !-----------------------------------------------------------------------------
4682 subroutine initial_write
4685 ! implicit real*8 (a-h,o-z)
4686 ! include 'DIMENSIONS'
4687 ! include 'COMMON.CSA'
4688 ! include 'COMMON.BANK'
4689 ! include 'COMMON.IOUNITS'
4691 ! integer :: ntf,ik,iw_pdb
4692 ! real(kind=8) :: var,ene
4694 open(icsa_seed,file=csa_seed,status="unknown")
4695 write(icsa_seed,*) "seed"
4697 #if defined(AIX) || defined(PGI)
4698 open(icsa_history,file=csa_history,status="unknown",&
4701 open(icsa_history,file=csa_history,status="unknown",&
4704 write(icsa_history,*) nconf
4705 write(icsa_history,*) jstart,jend
4706 write(icsa_history,*) nstmax
4707 write(icsa_history,*) n1,n2,n3,n4,n5,n6,n7,n8,is1,is2
4708 write(icsa_history,*) nran0,nran1,irr
4709 write(icsa_history,*) nseed
4710 write(icsa_history,*) ntotal,cut1,cut2
4711 write(icsa_history,*) estop
4712 write(icsa_history,*) icmax,irestart
4713 write(icsa_history,*) ntbankm,dele,difcut
4714 write(icsa_history,*) iref,rmscut,pnccut
4715 write(icsa_history,*) ndiff
4717 write(icsa_history,*)
4720 open(icsa_bank1,file=csa_bank1,status="unknown")
4721 write(icsa_bank1,*) 0
4725 end subroutine initial_write
4726 !-----------------------------------------------------------------------------
4727 subroutine restart_write
4730 ! implicit real*8 (a-h,o-z)
4731 ! include 'DIMENSIONS'
4732 ! include 'COMMON.IOUNITS'
4733 ! include 'COMMON.CSA'
4734 ! include 'COMMON.BANK'
4736 ! integer :: ntf,ik,iw_pdb
4737 ! real(kind=8) :: var,ene
4739 #if defined(AIX) || defined(PGI)
4740 open(icsa_history,file=csa_history,position="append")
4742 open(icsa_history,file=csa_history,access="append")
4744 write(icsa_history,*)
4745 write(icsa_history,*) "This is restart"
4746 write(icsa_history,*)
4747 write(icsa_history,*) nconf
4748 write(icsa_history,*) jstart,jend
4749 write(icsa_history,*) nstmax
4750 write(icsa_history,*) n1,n2,n3,n4,n5,n6,n7,n8,is1,is2
4751 write(icsa_history,*) nran0,nran1,irr
4752 write(icsa_history,*) nseed
4753 write(icsa_history,*) ntotal,cut1,cut2
4754 write(icsa_history,*) estop
4755 write(icsa_history,*) icmax,irestart
4756 write(icsa_history,*) ntbankm,dele,difcut
4757 write(icsa_history,*) iref,rmscut,pnccut
4758 write(icsa_history,*) ndiff
4759 write(icsa_history,*)
4760 write(icsa_history,*) "irestart is: ", irestart
4762 write(icsa_history,*)
4766 end subroutine restart_write
4767 !-----------------------------------------------------------------------------
4769 !-----------------------------------------------------------------------------
4770 subroutine write_pdb(npdb,titelloc,ee)
4772 ! implicit real*8 (a-h,o-z)
4773 ! include 'DIMENSIONS'
4774 ! include 'COMMON.IOUNITS'
4775 character(len=50) :: titelloc1
4776 character*(*) :: titelloc
4777 character(len=3) :: zahl
4778 character(len=5) :: liczba5
4780 integer :: npdb !,ilen
4784 ! real(kind=8) :: var,ene
4788 if (npdb.lt.1000) then
4789 call numstr(npdb,zahl)
4790 open(ipdb,file=prefix(:lenpre)//'@@'//zahl//'.pdb')
4792 if (npdb.lt.10000) then
4793 write(liczba5,'(i1,i4)') 0,npdb
4795 write(liczba5,'(i5)') npdb
4797 open(ipdb,file=prefix(:lenpre)//'@@'//liczba5//'.pdb')
4799 call pdbout(ee,titelloc1,ipdb)
4802 end subroutine write_pdb
4803 !-----------------------------------------------------------------------------
4805 !-----------------------------------------------------------------------------
4806 subroutine write_thread_summary
4807 ! Thread the sequence through a database of known structures
4808 use control_data, only: refstr
4810 use energy_data, only: n_ene_comp
4812 ! implicit real*8 (a-h,o-z)
4813 ! include 'DIMENSIONS'
4815 use MPI_data !include 'COMMON.INFO'
4818 ! include 'COMMON.CONTROL'
4819 ! include 'COMMON.CHAIN'
4820 ! include 'COMMON.DBASE'
4821 ! include 'COMMON.INTERACT'
4822 ! include 'COMMON.VAR'
4823 ! include 'COMMON.THREAD'
4824 ! include 'COMMON.FFIELD'
4825 ! include 'COMMON.SBRIDGE'
4826 ! include 'COMMON.HEADER'
4827 ! include 'COMMON.NAMES'
4828 ! include 'COMMON.IOUNITS'
4829 ! include 'COMMON.TIME1'
4831 integer,dimension(maxthread) :: ip
4832 real(kind=8),dimension(0:n_ene) :: energia
4834 integer :: i,j,ii,jj,ipj,ik,kk,ist
4835 real(kind=8) :: enet,etot,rmsnat,rms,frac,frac_nn
4837 write (iout,'(30x,a/)') &
4838 ' *********** Summary threading statistics ************'
4839 write (iout,'(a)') 'Initial energies:'
4840 write (iout,'(a4,2x,a12,14a14,3a8)') &
4841 'No','seq',(ename(print_order(i)),i=1,nprint_ene),'ETOT',&
4842 'RMSnat','NatCONT','NNCONT','RMS'
4843 ! Energy sort patterns
4848 enet=ener(n_ene-1,ip(i))
4851 if (ener(n_ene-1,ip(j)).lt.enet) then
4853 enet=ener(n_ene-1,ip(j))
4865 ist=nres_base(2,ii)+ipatt(2,i)
4867 energia(i)=ener0(kk,i)
4869 etot=ener0(n_ene_comp+1,i)
4870 rmsnat=ener0(n_ene_comp+2,i)
4871 rms=ener0(n_ene_comp+3,i)
4872 frac=ener0(n_ene_comp+4,i)
4873 frac_nn=ener0(n_ene_comp+5,i)
4876 write (iout,'(i4,2x,a8,i4,14(1pe14.5),0pf8.3,f8.5,f8.5,f8.3)') &
4877 i,str_nam(ii),ist+1,&
4878 (energia(print_order(kk)),kk=1,nprint_ene),&
4879 etot,rmsnat,frac,frac_nn,rms
4881 write (iout,'(i4,2x,a8,i4,14(1pe14.5),0pf8.3)') &
4882 i,str_nam(ii),ist+1,&
4883 (energia(print_order(kk)),kk=1,nprint_ene),etot
4886 write (iout,'(//a)') 'Final energies:'
4887 write (iout,'(a4,2x,a12,17a14,3a8)') &
4888 'No','seq',(ename(print_order(kk)),kk=1,nprint_ene),'ETOT',&
4889 'RMSnat','NatCONT','NNCONT','RMS'
4893 ist=nres_base(2,ii)+ipatt(2,i)
4895 energia(kk)=ener(kk,ik)
4897 etot=ener(n_ene_comp+1,i)
4898 rmsnat=ener(n_ene_comp+2,i)
4899 rms=ener(n_ene_comp+3,i)
4900 frac=ener(n_ene_comp+4,i)
4901 frac_nn=ener(n_ene_comp+5,i)
4902 write (iout,'(i4,2x,a8,i4,14(1pe14.5),0pf8.3,f8.5,f8.5,f8.3)') &
4903 i,str_nam(ii),ist+1,&
4904 (energia(print_order(kk)),kk=1,nprint_ene),&
4905 etot,rmsnat,frac,frac_nn,rms
4907 write (iout,'(/a/)') 'IEXAM array:'
4908 write (iout,'(i5)') nexcl
4910 write (iout,'(2i5)') iexam(1,i),iexam(2,i)
4912 write (iout,'(/a,1pe14.4/a,1pe14.4/)') &
4913 'Max. time for threading step ',max_time_for_thread,&
4914 'Average time for threading step: ',ave_time_for_thread
4916 end subroutine write_thread_summary
4917 !-----------------------------------------------------------------------------
4918 subroutine write_stat_thread(ithread,ipattern,ist)
4920 use energy_data, only: n_ene_comp
4922 ! implicit real*8 (a-h,o-z)
4923 ! include "DIMENSIONS"
4924 ! include "COMMON.CONTROL"
4925 ! include "COMMON.IOUNITS"
4926 ! include "COMMON.THREAD"
4927 ! include "COMMON.FFIELD"
4928 ! include "COMMON.DBASE"
4929 ! include "COMMON.NAMES"
4930 real(kind=8),dimension(0:n_ene) :: energia
4932 integer :: ithread,ipattern,ist,i
4933 real(kind=8) :: etot,rmsnat,rms,frac,frac_nn
4935 #if defined(AIX) || defined(PGI)
4936 open(istat,file=statname,position='append')
4938 open(istat,file=statname,access='append')
4941 energia(i)=ener(i,ithread)
4943 etot=ener(n_ene_comp+1,ithread)
4944 rmsnat=ener(n_ene_comp+2,ithread)
4945 rms=ener(n_ene_comp+3,ithread)
4946 frac=ener(n_ene_comp+4,ithread)
4947 frac_nn=ener(n_ene_comp+5,ithread)
4948 write (istat,'(i4,2x,a8,i4,14(1pe14.5),0pf8.3,f8.5,f8.5,f8.3)') &
4949 ithread,str_nam(ipattern),ist+1,&
4950 (energia(print_order(i)),i=1,nprint_ene),&
4951 etot,rmsnat,frac,frac_nn,rms
4954 end subroutine write_stat_thread
4955 !-----------------------------------------------------------------------------
4957 !-----------------------------------------------------------------------------
4958 end module io_config