1 C-----------------------------------------------------------------------
2 double precision function sscalelip(r)
3 double precision r,gamm
4 include "COMMON.SPLITELE"
5 C if(r.lt.r_cut-rlamb) then
7 C else if(r.le.r_cut.and.r.ge.r_cut-rlamb) then
8 C gamm=(r-(r_cut-rlamb))/rlamb
9 sscalelip=1.0d0+r*r*(2*r-3.0d0)
15 C-----------------------------------------------------------------------
16 double precision function sscagradlip(r)
17 double precision r,gamm
18 include "COMMON.SPLITELE"
19 C if(r.lt.r_cut-rlamb) then
21 C else if(r.le.r_cut.and.r.ge.r_cut-rlamb) then
22 C gamm=(r-(r_cut-rlamb))/rlamb
23 sscagradlip=r*(6*r-6.0d0)
30 C-----------------------------------------------------------------------
31 double precision function sscale(r)
32 double precision r,gamm
33 include "COMMON.SPLITELE"
34 if(r.lt.r_cut-rlamb) then
36 else if(r.le.r_cut.and.r.ge.r_cut-rlamb) then
37 gamm=(r-(r_cut-rlamb))/rlamb
38 sscale=1.0d0+gamm*gamm*(2*gamm-3.0d0)
44 C-----------------------------------------------------------------------
45 C-----------------------------------------------------------------------
46 double precision function sscagrad(r)
47 double precision r,gamm
48 include "COMMON.SPLITELE"
49 if(r.lt.r_cut-rlamb) then
51 else if(r.le.r_cut.and.r.ge.r_cut-rlamb) then
52 gamm=(r-(r_cut-rlamb))/rlamb
53 sscagrad=gamm*(6*gamm-6.0d0)/rlamb
59 C-----------------------------------------------------------------------
60 subroutine elj_long(evdw)
62 C This subroutine calculates the interaction energy of nonbonded side chains
63 C assuming the LJ potential of interaction.
65 implicit real*8 (a-h,o-z)
67 parameter (accur=1.0d-10)
70 include 'COMMON.LOCAL'
71 include 'COMMON.CHAIN'
72 include 'COMMON.DERIV'
73 include 'COMMON.INTERACT'
74 include 'COMMON.TORSION'
75 include 'COMMON.SBRIDGE'
76 include 'COMMON.NAMES'
77 include 'COMMON.IOUNITS'
78 include 'COMMON.CONTACTS'
80 c write(iout,*)'Entering ELJ nnt=',nnt,' nct=',nct,' expon=',expon
84 if (itypi.eq.ntyp1) cycle
90 C Calculate SC interaction energy.
93 cd write (iout,*) 'i=',i,' iint=',iint,' istart=',istart(i,iint),
94 cd & 'iend=',iend(i,iint)
95 do j=istart(i,iint),iend(i,iint)
97 if (itypj.eq.ntyp1) cycle
101 rij=xj*xj+yj*yj+zj*zj
102 sss=sscale(dsqrt(rij)/sigma(itypi,itypj))
103 if (sss.lt.1.0d0) then
105 eps0ij=eps(itypi,itypj)
110 evdw=evdw+(1.0d0-sss)*evdwij
112 C Calculate the components of the gradient in DC and X
114 fac=-rrij*(e1+evdwij)*(1.0d0-sss)
119 gvdwx(k,i)=gvdwx(k,i)-gg(k)
120 gvdwx(k,j)=gvdwx(k,j)+gg(k)
121 gvdwc(k,i)=gvdwc(k,i)-gg(k)
122 gvdwc(k,j)=gvdwc(k,j)+gg(k)
130 gvdwc(j,i)=expon*gvdwc(j,i)
131 gvdwx(j,i)=expon*gvdwx(j,i)
134 C******************************************************************************
138 C To save time, the factor of EXPON has been extracted from ALL components
139 C of GVDWC and GRADX. Remember to multiply them by this factor before further
142 C******************************************************************************
145 C-----------------------------------------------------------------------
146 subroutine elj_short(evdw)
148 C This subroutine calculates the interaction energy of nonbonded side chains
149 C assuming the LJ potential of interaction.
151 implicit real*8 (a-h,o-z)
153 parameter (accur=1.0d-10)
156 include 'COMMON.LOCAL'
157 include 'COMMON.CHAIN'
158 include 'COMMON.DERIV'
159 include 'COMMON.INTERACT'
160 include 'COMMON.TORSION'
161 include 'COMMON.SBRIDGE'
162 include 'COMMON.NAMES'
163 include 'COMMON.IOUNITS'
164 include 'COMMON.CONTACTS'
166 c write(iout,*)'Entering ELJ nnt=',nnt,' nct=',nct,' expon=',expon
170 if (itypi.eq.ntyp1) cycle
178 C Calculate SC interaction energy.
181 cd write (iout,*) 'i=',i,' iint=',iint,' istart=',istart(i,iint),
182 cd & 'iend=',iend(i,iint)
183 do j=istart(i,iint),iend(i,iint)
185 if (itypj.eq.ntyp1) cycle
189 C Change 12/1/95 to calculate four-body interactions
190 rij=xj*xj+yj*yj+zj*zj
191 sss=sscale(dsqrt(rij)/sigma(itypi,itypj))
192 if (sss.gt.0.0d0) then
194 eps0ij=eps(itypi,itypj)
201 C Calculate the components of the gradient in DC and X
203 fac=-rrij*(e1+evdwij)*sss
208 gvdwx(k,i)=gvdwx(k,i)-gg(k)
209 gvdwx(k,j)=gvdwx(k,j)+gg(k)
210 gvdwc(k,i)=gvdwc(k,i)-gg(k)
211 gvdwc(k,j)=gvdwc(k,j)+gg(k)
219 gvdwc(j,i)=expon*gvdwc(j,i)
220 gvdwx(j,i)=expon*gvdwx(j,i)
223 C******************************************************************************
227 C To save time, the factor of EXPON has been extracted from ALL components
228 C of GVDWC and GRADX. Remember to multiply them by this factor before further
231 C******************************************************************************
234 C-----------------------------------------------------------------------------
235 subroutine eljk_long(evdw)
237 C This subroutine calculates the interaction energy of nonbonded side chains
238 C assuming the LJK potential of interaction.
240 implicit real*8 (a-h,o-z)
244 include 'COMMON.LOCAL'
245 include 'COMMON.CHAIN'
246 include 'COMMON.DERIV'
247 include 'COMMON.INTERACT'
248 include 'COMMON.IOUNITS'
249 include 'COMMON.NAMES'
252 c print *,'Entering ELJK nnt=',nnt,' nct=',nct,' expon=',expon
256 if (itypi.eq.ntyp1) cycle
262 C Calculate SC interaction energy.
265 do j=istart(i,iint),iend(i,iint)
267 if (itypj.eq.ntyp1) cycle
271 rrij=1.0D0/(xj*xj+yj*yj+zj*zj)
273 e_augm=augm(itypi,itypj)*fac_augm
276 sss=sscale(rij/sigma(itypi,itypj))
277 if (sss.lt.1.0d0) then
278 r_shift_inv=1.0D0/(rij+r0(itypi,itypj)-sigma(itypi,itypj))
279 fac=r_shift_inv**expon
283 cd sigm=dabs(aa(itypi,itypj)/bb(itypi,itypj))**(1.0D0/6.0D0)
284 cd epsi=bb(itypi,itypj)**2/aa(itypi,itypj)
285 cd write (iout,'(2(a3,i3,2x),8(1pd12.4)/2(3(1pd12.4),5x)/)')
286 cd & restyp(itypi),i,restyp(itypj),j,aa(itypi,itypj),
287 cd & bb(itypi,itypj),augm(itypi,itypj),epsi,sigm,
288 cd & sigma(itypi,itypj),1.0D0/dsqrt(rrij),evdwij,
289 cd & (c(k,i),k=1,3),(c(k,j),k=1,3)
290 evdw=evdw+(1.0d0-sss)*evdwij
292 C Calculate the components of the gradient in DC and X
294 fac=-2.0D0*rrij*e_augm-r_inv_ij*r_shift_inv*(e1+e1+e2)
300 gvdwx(k,i)=gvdwx(k,i)-gg(k)
301 gvdwx(k,j)=gvdwx(k,j)+gg(k)
302 gvdwc(k,i)=gvdwc(k,i)-gg(k)
303 gvdwc(k,j)=gvdwc(k,j)+gg(k)
311 gvdwc(j,i)=expon*gvdwc(j,i)
312 gvdwx(j,i)=expon*gvdwx(j,i)
317 C-----------------------------------------------------------------------------
318 subroutine eljk_short(evdw)
320 C This subroutine calculates the interaction energy of nonbonded side chains
321 C assuming the LJK potential of interaction.
323 implicit real*8 (a-h,o-z)
327 include 'COMMON.LOCAL'
328 include 'COMMON.CHAIN'
329 include 'COMMON.DERIV'
330 include 'COMMON.INTERACT'
331 include 'COMMON.IOUNITS'
332 include 'COMMON.NAMES'
335 c print *,'Entering ELJK nnt=',nnt,' nct=',nct,' expon=',expon
339 if (itypi.eq.ntyp1) cycle
345 C Calculate SC interaction energy.
348 do j=istart(i,iint),iend(i,iint)
350 if (itypj.eq.ntyp1) cycle
354 rrij=1.0D0/(xj*xj+yj*yj+zj*zj)
356 e_augm=augm(itypi,itypj)*fac_augm
359 sss=sscale(rij/sigma(itypi,itypj))
360 if (sss.gt.0.0d0) then
361 r_shift_inv=1.0D0/(rij+r0(itypi,itypj)-sigma(itypi,itypj))
362 fac=r_shift_inv**expon
366 cd sigm=dabs(aa(itypi,itypj)/bb(itypi,itypj))**(1.0D0/6.0D0)
367 cd epsi=bb(itypi,itypj)**2/aa(itypi,itypj)
368 cd write (iout,'(2(a3,i3,2x),8(1pd12.4)/2(3(1pd12.4),5x)/)')
369 cd & restyp(itypi),i,restyp(itypj),j,aa(itypi,itypj),
370 cd & bb(itypi,itypj),augm(itypi,itypj),epsi,sigm,
371 cd & sigma(itypi,itypj),1.0D0/dsqrt(rrij),evdwij,
372 cd & (c(k,i),k=1,3),(c(k,j),k=1,3)
375 C Calculate the components of the gradient in DC and X
377 fac=-2.0D0*rrij*e_augm-r_inv_ij*r_shift_inv*(e1+e1+e2)
383 gvdwx(k,i)=gvdwx(k,i)-gg(k)
384 gvdwx(k,j)=gvdwx(k,j)+gg(k)
385 gvdwc(k,i)=gvdwc(k,i)-gg(k)
386 gvdwc(k,j)=gvdwc(k,j)+gg(k)
394 gvdwc(j,i)=expon*gvdwc(j,i)
395 gvdwx(j,i)=expon*gvdwx(j,i)
400 C-----------------------------------------------------------------------------
401 subroutine ebp_long(evdw)
403 C This subroutine calculates the interaction energy of nonbonded side chains
404 C assuming the Berne-Pechukas potential of interaction.
406 implicit real*8 (a-h,o-z)
410 include 'COMMON.LOCAL'
411 include 'COMMON.CHAIN'
412 include 'COMMON.DERIV'
413 include 'COMMON.NAMES'
414 include 'COMMON.INTERACT'
415 include 'COMMON.IOUNITS'
416 include 'COMMON.CALC'
418 c double precision rrsave(maxdim)
421 c print *,'Entering EBP nnt=',nnt,' nct=',nct,' expon=',expon
423 c if (icall.eq.0) then
431 if (itypi.eq.ntyp1) cycle
436 dxi=dc_norm(1,nres+i)
437 dyi=dc_norm(2,nres+i)
438 dzi=dc_norm(3,nres+i)
439 c dsci_inv=dsc_inv(itypi)
440 dsci_inv=vbld_inv(i+nres)
442 C Calculate SC interaction energy.
445 do j=istart(i,iint),iend(i,iint)
448 if (itypj.eq.ntyp1) cycle
449 c dscj_inv=dsc_inv(itypj)
450 dscj_inv=vbld_inv(j+nres)
451 chi1=chi(itypi,itypj)
452 chi2=chi(itypj,itypi)
459 alf12=0.5D0*(alf1+alf2)
463 dxj=dc_norm(1,nres+j)
464 dyj=dc_norm(2,nres+j)
465 dzj=dc_norm(3,nres+j)
466 rrij=1.0D0/(xj*xj+yj*yj+zj*zj)
468 sss=sscale(1.0d0/(rij*sigmaii(itypi,itypj)))
470 if (sss.lt.1.0d0) then
472 C Calculate the angle-dependent terms of energy & contributions to derivatives.
474 C Calculate whole angle-dependent part of epsilon and contributions
476 fac=(rrij*sigsq)**expon2
479 evdwij=eps1*eps2rt*eps3rt*(e1+e2)
480 eps2der=evdwij*eps3rt
481 eps3der=evdwij*eps2rt
482 evdwij=evdwij*eps2rt*eps3rt
483 evdw=evdw+evdwij*(1.0d0-sss)
485 sigm=dabs(aa/bb)**(1.0D0/6.0D0)
487 cd write (iout,'(2(a3,i3,2x),15(0pf7.3))')
488 cd & restyp(itypi),i,restyp(itypj),j,
489 cd & epsi,sigm,chi1,chi2,chip1,chip2,
490 cd & eps1,eps2rt**2,eps3rt**2,1.0D0/dsqrt(sigsq),
491 cd & om1,om2,om12,1.0D0/dsqrt(rrij),
494 C Calculate gradient components.
495 e1=e1*eps1*eps2rt**2*eps3rt**2
496 fac=-expon*(e1+evdwij)
499 C Calculate radial part of the gradient
503 C Calculate the angular part of the gradient and sum add the contributions
504 C to the appropriate components of the Cartesian gradient.
505 call sc_grad_scale(1.0d0-sss)
513 C-----------------------------------------------------------------------------
514 subroutine ebp_short(evdw)
516 C This subroutine calculates the interaction energy of nonbonded side chains
517 C assuming the Berne-Pechukas potential of interaction.
519 implicit real*8 (a-h,o-z)
523 include 'COMMON.LOCAL'
524 include 'COMMON.CHAIN'
525 include 'COMMON.DERIV'
526 include 'COMMON.NAMES'
527 include 'COMMON.INTERACT'
528 include 'COMMON.IOUNITS'
529 include 'COMMON.CALC'
531 c double precision rrsave(maxdim)
534 c print *,'Entering EBP nnt=',nnt,' nct=',nct,' expon=',expon
536 c if (icall.eq.0) then
544 if (itypi.eq.ntyp1) cycle
549 dxi=dc_norm(1,nres+i)
550 dyi=dc_norm(2,nres+i)
551 dzi=dc_norm(3,nres+i)
552 c dsci_inv=dsc_inv(itypi)
553 dsci_inv=vbld_inv(i+nres)
555 C Calculate SC interaction energy.
558 do j=istart(i,iint),iend(i,iint)
561 if (itypj.eq.ntyp1) cycle
562 c dscj_inv=dsc_inv(itypj)
563 dscj_inv=vbld_inv(j+nres)
564 chi1=chi(itypi,itypj)
565 chi2=chi(itypj,itypi)
572 alf12=0.5D0*(alf1+alf2)
576 dxj=dc_norm(1,nres+j)
577 dyj=dc_norm(2,nres+j)
578 dzj=dc_norm(3,nres+j)
579 rrij=1.0D0/(xj*xj+yj*yj+zj*zj)
581 sss=sscale(1.0d0/(rij*sigmaii(itypi,itypj)))
583 if (sss.gt.0.0d0) then
585 C Calculate the angle-dependent terms of energy & contributions to derivatives.
587 C Calculate whole angle-dependent part of epsilon and contributions
589 fac=(rrij*sigsq)**expon2
592 evdwij=eps1*eps2rt*eps3rt*(e1+e2)
593 eps2der=evdwij*eps3rt
594 eps3der=evdwij*eps2rt
595 evdwij=evdwij*eps2rt*eps3rt
598 sigm=dabs(aa/bb)**(1.0D0/6.0D0)
600 cd write (iout,'(2(a3,i3,2x),15(0pf7.3))')
601 cd & restyp(itypi),i,restyp(itypj),j,
602 cd & epsi,sigm,chi1,chi2,chip1,chip2,
603 cd & eps1,eps2rt**2,eps3rt**2,1.0D0/dsqrt(sigsq),
604 cd & om1,om2,om12,1.0D0/dsqrt(rrij),
607 C Calculate gradient components.
608 e1=e1*eps1*eps2rt**2*eps3rt**2
609 fac=-expon*(e1+evdwij)
612 C Calculate radial part of the gradient
616 C Calculate the angular part of the gradient and sum add the contributions
617 C to the appropriate components of the Cartesian gradient.
618 call sc_grad_scale(sss)
626 C-----------------------------------------------------------------------------
627 subroutine egb_long(evdw)
629 C This subroutine calculates the interaction energy of nonbonded side chains
630 C assuming the Gay-Berne potential of interaction.
632 implicit real*8 (a-h,o-z)
636 include 'COMMON.LOCAL'
637 include 'COMMON.CHAIN'
638 include 'COMMON.DERIV'
639 include 'COMMON.NAMES'
640 include 'COMMON.INTERACT'
641 include 'COMMON.IOUNITS'
642 include 'COMMON.CALC'
643 include 'COMMON.CONTROL'
646 ccccc energy_dec=.false.
647 c print *,'Entering EGB nnt=',nnt,' nct=',nct,' expon=',expon
650 c if (icall.eq.0) lprn=.false.
654 if (itypi.eq.ntyp1) cycle
660 if (xi.lt.0) xi=xi+boxxsize
662 if (yi.lt.0) yi=yi+boxysize
664 if (zi.lt.0) zi=zi+boxzsize
665 dxi=dc_norm(1,nres+i)
666 dyi=dc_norm(2,nres+i)
667 dzi=dc_norm(3,nres+i)
668 c dsci_inv=dsc_inv(itypi)
669 dsci_inv=vbld_inv(i+nres)
670 c write (iout,*) "i",i,dsc_inv(itypi),dsci_inv,1.0d0/vbld(i+nres)
671 c write (iout,*) "dcnori",dxi*dxi+dyi*dyi+dzi*dzi
673 C Calculate SC interaction energy.
676 do j=istart(i,iint),iend(i,iint)
679 if (itypj.eq.ntyp1) cycle
680 c dscj_inv=dsc_inv(itypj)
681 dscj_inv=vbld_inv(j+nres)
682 c write (iout,*) "j",j,dsc_inv(itypj),dscj_inv,
683 c & 1.0d0/vbld(j+nres)
684 c write (iout,*) "i",i," j", j," itype",itype(i),itype(j)
685 sig0ij=sigma(itypi,itypj)
686 chi1=chi(itypi,itypj)
687 chi2=chi(itypj,itypi)
694 alf12=0.5D0*(alf1+alf2)
699 if (xj.lt.0) xj=xj+boxxsize
701 if (yj.lt.0) yj=yj+boxysize
703 if (zj.lt.0) zj=zj+boxzsize
704 if ((zj.gt.bordlipbot)
705 &.and.(zj.lt.bordliptop)) then
706 C the energy transfer exist
707 if (zj.lt.buflipbot) then
708 C what fraction I am in
710 & ((positi-bordlipbot)/lipbufthick)
711 C lipbufthick is thickenes of lipid buffore
712 sslipj=sscalelip(fracinbuf)
713 ssgradlipj=-sscagradlip(fracinbuf)/lipbufthick
714 elseif (zi.gt.bufliptop) then
715 fracinbuf=1.0d0-((bordliptop-positi)/lipbufthick)
716 sslipj=sscalelip(fracinbuf)
717 ssgradlipj=sscagradlip(fracinbuf)/lipbufthick
726 aa=aa_lip(itypi,itypj)*(sslipi+sslipj)/2.0d0
727 & +aa_aq(itypi,itypj)*(2.0d0-sslipi+sslipj)/2.0d0
728 bb=bb_lip(itypi,itypj)*(sslipi+sslipj)/2.0d0
729 & +bb_aq(itypi,itypj)*(2.0d0-sslipi+sslipj)/2.0d0
731 dist_init=(xj-xi)**2+(yj-yi)**2+(zj-zi)**2
739 xj=xj_safe+xshift*boxxsize
740 yj=yj_safe+yshift*boxysize
741 zj=zj_safe+zshift*boxzsize
742 dist_temp=(xj-xi)**2+(yj-yi)**2+(zj-zi)**2
743 if(dist_temp.lt.dist_init) then
753 if (subchap.eq.1) then
762 dxj=dc_norm(1,nres+j)
763 dyj=dc_norm(2,nres+j)
764 dzj=dc_norm(3,nres+j)
765 rrij=1.0D0/(xj*xj+yj*yj+zj*zj)
767 sss=sscale(1.0d0/(rij*sigmaii(itypi,itypj)))
768 sssgrad=sscagrad((1.0d0/rij)/sigmaii(itypi,itypj))
769 if (sss.lt.1.0d0) then
771 C Calculate angle-dependent terms of energy and contributions to their
775 sig=sig0ij*dsqrt(sigsq)
776 rij_shift=1.0D0/rij-sig+sig0ij
777 c for diagnostics; uncomment
778 c rij_shift=1.2*sig0ij
779 C I hate to put IF's in the loops, but here don't have another choice!!!!
780 if (rij_shift.le.0.0D0) then
782 cd write (iout,'(2(a3,i3,2x),17(0pf7.3))')
783 cd & restyp(itypi),i,restyp(itypj),j,
784 cd & rij_shift,1.0D0/rij,sig,sig0ij,sigsq,1-dsqrt(sigsq)
788 c---------------------------------------------------------------
789 rij_shift=1.0D0/rij_shift
793 evdwij=eps1*eps2rt*eps3rt*(e1+e2)
794 eps2der=evdwij*eps3rt
795 eps3der=evdwij*eps2rt
796 c write (iout,*) "sigsq",sigsq," sig",sig," eps2rt",eps2rt,
797 c & " eps3rt",eps3rt," eps1",eps1," e1",e1," e2",e2
798 evdwij=evdwij*eps2rt*eps3rt
799 evdw=evdw+evdwij*(1.0d0-sss)
801 sigm=dabs(aa/bb)**(1.0D0/6.0D0)
803 write (iout,'(2(a3,i3,2x),17(0pf7.3))')
804 & restyp(itypi),i,restyp(itypj),j,
805 & epsi,sigm,chi1,chi2,chip1,chip2,
806 & eps1,eps2rt**2,eps3rt**2,sig,sig0ij,
807 & om1,om2,om12,1.0D0/rij,1.0D0/rij_shift,
811 if (energy_dec) write (iout,'(a6,2i5,0pf7.3)')
814 C Calculate gradient components.
815 e1=e1*eps1*eps2rt**2*eps3rt**2
816 fac=-expon*(e1+evdwij)*rij_shift
819 fac=fac+evdwij/(1.0-sss)*(-sssgrad)/sigmaii(itypi,itypj)*rij
821 C Calculate the radial part of the gradient
825 gg_lipi(3)=ssgradlipi*evdwij
826 gg_lipj(3)=ssgradlipj*evdwij
827 C Calculate angular part of the gradient.
828 call sc_grad_scale(1.0d0-sss)
833 c write (iout,*) "Number of loop steps in EGB:",ind
834 cccc energy_dec=.false.
837 C-----------------------------------------------------------------------------
838 subroutine egb_short(evdw)
840 C This subroutine calculates the interaction energy of nonbonded side chains
841 C assuming the Gay-Berne potential of interaction.
843 implicit real*8 (a-h,o-z)
847 include 'COMMON.LOCAL'
848 include 'COMMON.CHAIN'
849 include 'COMMON.DERIV'
850 include 'COMMON.NAMES'
851 include 'COMMON.INTERACT'
852 include 'COMMON.IOUNITS'
853 include 'COMMON.CALC'
854 include 'COMMON.CONTROL'
857 ccccc energy_dec=.false.
858 c print *,'Entering EGB nnt=',nnt,' nct=',nct,' expon=',expon
861 c if (icall.eq.0) lprn=.false.
865 if (itypi.eq.ntyp1) cycle
871 if (xi.lt.0) xi=xi+boxxsize
873 if (yi.lt.0) yi=yi+boxysize
875 if (zi.lt.0) zi=zi+boxzsize
876 dxi=dc_norm(1,nres+i)
877 dyi=dc_norm(2,nres+i)
878 dzi=dc_norm(3,nres+i)
879 c dsci_inv=dsc_inv(itypi)
880 dsci_inv=vbld_inv(i+nres)
881 c write (iout,*) "i",i,dsc_inv(itypi),dsci_inv,1.0d0/vbld(i+nres)
882 c write (iout,*) "dcnori",dxi*dxi+dyi*dyi+dzi*dzi
884 C Calculate SC interaction energy.
887 do j=istart(i,iint),iend(i,iint)
890 if (itypj.eq.ntyp1) cycle
891 c dscj_inv=dsc_inv(itypj)
892 dscj_inv=vbld_inv(j+nres)
893 c write (iout,*) "j",j,dsc_inv(itypj),dscj_inv,
894 c & 1.0d0/vbld(j+nres)
895 c write (iout,*) "i",i," j", j," itype",itype(i),itype(j)
896 sig0ij=sigma(itypi,itypj)
897 chi1=chi(itypi,itypj)
898 chi2=chi(itypj,itypi)
905 alf12=0.5D0*(alf1+alf2)
910 if (xj.lt.0) xj=xj+boxxsize
912 if (yj.lt.0) yj=yj+boxysize
914 if (zj.lt.0) zj=zj+boxzsize
915 if ((zj.gt.bordlipbot)
916 &.and.(zj.lt.bordliptop)) then
917 C the energy transfer exist
918 if (zj.lt.buflipbot) then
919 C what fraction I am in
921 & ((positi-bordlipbot)/lipbufthick)
922 C lipbufthick is thickenes of lipid buffore
923 sslipj=sscalelip(fracinbuf)
924 ssgradlipj=-sscagradlip(fracinbuf)/lipbufthick
925 elseif (zi.gt.bufliptop) then
926 fracinbuf=1.0d0-((bordliptop-positi)/lipbufthick)
927 sslipj=sscalelip(fracinbuf)
928 ssgradlipj=sscagradlip(fracinbuf)/lipbufthick
937 aa=aa_lip(itypi,itypj)*(sslipi+sslipj)/2.0d0
938 & +aa_aq(itypi,itypj)*(2.0d0-sslipi+sslipj)/2.0d0
939 bb=bb_lip(itypi,itypj)*(sslipi+sslipj)/2.0d0
940 & +bb_aq(itypi,itypj)*(2.0d0-sslipi+sslipj)/2.0d0
941 dist_init=(xj-xi)**2+(yj-yi)**2+(zj-zi)**2
949 xj=xj_safe+xshift*boxxsize
950 yj=yj_safe+yshift*boxysize
951 zj=zj_safe+zshift*boxzsize
952 dist_temp=(xj-xi)**2+(yj-yi)**2+(zj-zi)**2
953 if(dist_temp.lt.dist_init) then
963 if (subchap.eq.1) then
972 dxj=dc_norm(1,nres+j)
973 dyj=dc_norm(2,nres+j)
974 dzj=dc_norm(3,nres+j)
975 rrij=1.0D0/(xj*xj+yj*yj+zj*zj)
977 sss=sscale(1.0d0/(rij*sigmaii(itypi,itypj)))
978 sssgrad=sscagrad((1.0d0/rij)/sigmaii(itypi,itypj))
979 if (sss.gt.0.0d0) then
981 C Calculate angle-dependent terms of energy and contributions to their
985 sig=sig0ij*dsqrt(sigsq)
986 rij_shift=1.0D0/rij-sig+sig0ij
987 c for diagnostics; uncomment
988 c rij_shift=1.2*sig0ij
989 C I hate to put IF's in the loops, but here don't have another choice!!!!
990 if (rij_shift.le.0.0D0) then
992 cd write (iout,'(2(a3,i3,2x),17(0pf7.3))')
993 cd & restyp(itypi),i,restyp(itypj),j,
994 cd & rij_shift,1.0D0/rij,sig,sig0ij,sigsq,1-dsqrt(sigsq)
998 c---------------------------------------------------------------
999 rij_shift=1.0D0/rij_shift
1000 fac=rij_shift**expon
1003 evdwij=eps1*eps2rt*eps3rt*(e1+e2)
1004 eps2der=evdwij*eps3rt
1005 eps3der=evdwij*eps2rt
1006 c write (iout,*) "sigsq",sigsq," sig",sig," eps2rt",eps2rt,
1007 c & " eps3rt",eps3rt," eps1",eps1," e1",e1," e2",e2
1008 evdwij=evdwij*eps2rt*eps3rt
1009 evdw=evdw+evdwij*sss
1011 sigm=dabs(aa/bb)**(1.0D0/6.0D0)
1013 write (iout,'(2(a3,i3,2x),17(0pf7.3))')
1014 & restyp(itypi),i,restyp(itypj),j,
1015 & epsi,sigm,chi1,chi2,chip1,chip2,
1016 & eps1,eps2rt**2,eps3rt**2,sig,sig0ij,
1017 & om1,om2,om12,1.0D0/rij,1.0D0/rij_shift,
1021 if (energy_dec) write (iout,'(a6,2i5,0pf7.3)')
1024 C Calculate gradient components.
1025 e1=e1*eps1*eps2rt**2*eps3rt**2
1026 fac=-expon*(e1+evdwij)*rij_shift
1029 fac=fac+evdwij/sss*sssgrad/sigmaii(itypi,itypj)*rij
1031 C Calculate the radial part of the gradient
1035 gg_lipi(3)=ssgradlipi*evdwij
1036 gg_lipj(3)=ssgradlipj*evdwij
1037 C Calculate angular part of the gradient.
1038 call sc_grad_scale(sss)
1043 c write (iout,*) "Number of loop steps in EGB:",ind
1044 cccc energy_dec=.false.
1047 C-----------------------------------------------------------------------------
1048 subroutine egbv_long(evdw)
1050 C This subroutine calculates the interaction energy of nonbonded side chains
1051 C assuming the Gay-Berne-Vorobjev potential of interaction.
1053 implicit real*8 (a-h,o-z)
1054 include 'DIMENSIONS'
1055 include 'COMMON.GEO'
1056 include 'COMMON.VAR'
1057 include 'COMMON.LOCAL'
1058 include 'COMMON.CHAIN'
1059 include 'COMMON.DERIV'
1060 include 'COMMON.NAMES'
1061 include 'COMMON.INTERACT'
1062 include 'COMMON.IOUNITS'
1063 include 'COMMON.CALC'
1064 common /srutu/ icall
1067 c print *,'Entering EGB nnt=',nnt,' nct=',nct,' expon=',expon
1070 c if (icall.eq.0) lprn=.true.
1072 do i=iatsc_s,iatsc_e
1074 if (itypi.eq.ntyp1) cycle
1079 dxi=dc_norm(1,nres+i)
1080 dyi=dc_norm(2,nres+i)
1081 dzi=dc_norm(3,nres+i)
1082 c dsci_inv=dsc_inv(itypi)
1083 dsci_inv=vbld_inv(i+nres)
1085 C Calculate SC interaction energy.
1087 do iint=1,nint_gr(i)
1088 do j=istart(i,iint),iend(i,iint)
1091 if (itypj.eq.ntyp1) cycle
1092 c dscj_inv=dsc_inv(itypj)
1093 dscj_inv=vbld_inv(j+nres)
1094 sig0ij=sigma(itypi,itypj)
1095 r0ij=r0(itypi,itypj)
1096 chi1=chi(itypi,itypj)
1097 chi2=chi(itypj,itypi)
1104 alf12=0.5D0*(alf1+alf2)
1108 dxj=dc_norm(1,nres+j)
1109 dyj=dc_norm(2,nres+j)
1110 dzj=dc_norm(3,nres+j)
1111 rrij=1.0D0/(xj*xj+yj*yj+zj*zj)
1114 sss=sscale(1.0d0/(rij*sigmaii(itypi,itypj)))
1116 if (sss.lt.1.0d0) then
1118 C Calculate angle-dependent terms of energy and contributions to their
1122 sig=sig0ij*dsqrt(sigsq)
1123 rij_shift=1.0D0/rij-sig+r0ij
1124 C I hate to put IF's in the loops, but here don't have another choice!!!!
1125 if (rij_shift.le.0.0D0) then
1130 c---------------------------------------------------------------
1131 rij_shift=1.0D0/rij_shift
1132 fac=rij_shift**expon
1135 evdwij=eps1*eps2rt*eps3rt*(e1+e2)
1136 eps2der=evdwij*eps3rt
1137 eps3der=evdwij*eps2rt
1138 fac_augm=rrij**expon
1139 e_augm=augm(itypi,itypj)*fac_augm
1140 evdwij=evdwij*eps2rt*eps3rt
1141 evdw=evdw+(evdwij+e_augm)*(1.0d0-sss)
1143 sigm=dabs(aa/bb)**(1.0D0/6.0D0)
1145 write (iout,'(2(a3,i3,2x),17(0pf7.3))')
1146 & restyp(itypi),i,restyp(itypj),j,
1147 & epsi,sigm,sig,(augm(itypi,itypj)/epsi)**(1.0D0/12.0D0),
1148 & chi1,chi2,chip1,chip2,
1149 & eps1,eps2rt**2,eps3rt**2,
1150 & om1,om2,om12,1.0D0/rij,1.0D0/rij_shift,
1153 C Calculate gradient components.
1154 e1=e1*eps1*eps2rt**2*eps3rt**2
1155 fac=-expon*(e1+evdwij)*rij_shift
1157 fac=rij*fac-2*expon*rrij*e_augm
1158 C Calculate the radial part of the gradient
1162 C Calculate angular part of the gradient.
1163 call sc_grad_scale(1.0d0-sss)
1169 C-----------------------------------------------------------------------------
1170 subroutine egbv_short(evdw)
1172 C This subroutine calculates the interaction energy of nonbonded side chains
1173 C assuming the Gay-Berne-Vorobjev potential of interaction.
1175 implicit real*8 (a-h,o-z)
1176 include 'DIMENSIONS'
1177 include 'COMMON.GEO'
1178 include 'COMMON.VAR'
1179 include 'COMMON.LOCAL'
1180 include 'COMMON.CHAIN'
1181 include 'COMMON.DERIV'
1182 include 'COMMON.NAMES'
1183 include 'COMMON.INTERACT'
1184 include 'COMMON.IOUNITS'
1185 include 'COMMON.CALC'
1186 common /srutu/ icall
1189 c print *,'Entering EGB nnt=',nnt,' nct=',nct,' expon=',expon
1192 c if (icall.eq.0) lprn=.true.
1194 do i=iatsc_s,iatsc_e
1196 if (itypi.eq.ntyp1) cycle
1201 dxi=dc_norm(1,nres+i)
1202 dyi=dc_norm(2,nres+i)
1203 dzi=dc_norm(3,nres+i)
1204 c dsci_inv=dsc_inv(itypi)
1205 dsci_inv=vbld_inv(i+nres)
1207 C Calculate SC interaction energy.
1209 do iint=1,nint_gr(i)
1210 do j=istart(i,iint),iend(i,iint)
1213 if (itypj.eq.ntyp1) cycle
1214 c dscj_inv=dsc_inv(itypj)
1215 dscj_inv=vbld_inv(j+nres)
1216 sig0ij=sigma(itypi,itypj)
1217 r0ij=r0(itypi,itypj)
1218 chi1=chi(itypi,itypj)
1219 chi2=chi(itypj,itypi)
1226 alf12=0.5D0*(alf1+alf2)
1230 dxj=dc_norm(1,nres+j)
1231 dyj=dc_norm(2,nres+j)
1232 dzj=dc_norm(3,nres+j)
1233 rrij=1.0D0/(xj*xj+yj*yj+zj*zj)
1236 sss=sscale(1.0d0/(rij*sigmaii(itypi,itypj)))
1238 if (sss.gt.0.0d0) then
1240 C Calculate angle-dependent terms of energy and contributions to their
1244 sig=sig0ij*dsqrt(sigsq)
1245 rij_shift=1.0D0/rij-sig+r0ij
1246 C I hate to put IF's in the loops, but here don't have another choice!!!!
1247 if (rij_shift.le.0.0D0) then
1252 c---------------------------------------------------------------
1253 rij_shift=1.0D0/rij_shift
1254 fac=rij_shift**expon
1257 evdwij=eps1*eps2rt*eps3rt*(e1+e2)
1258 eps2der=evdwij*eps3rt
1259 eps3der=evdwij*eps2rt
1260 fac_augm=rrij**expon
1261 e_augm=augm(itypi,itypj)*fac_augm
1262 evdwij=evdwij*eps2rt*eps3rt
1263 evdw=evdw+(evdwij+e_augm)*sss
1265 sigm=dabs(aa/bb)**(1.0D0/6.0D0)
1267 write (iout,'(2(a3,i3,2x),17(0pf7.3))')
1268 & restyp(itypi),i,restyp(itypj),j,
1269 & epsi,sigm,sig,(augm(itypi,itypj)/epsi)**(1.0D0/12.0D0),
1270 & chi1,chi2,chip1,chip2,
1271 & eps1,eps2rt**2,eps3rt**2,
1272 & om1,om2,om12,1.0D0/rij,1.0D0/rij_shift,
1275 C Calculate gradient components.
1276 e1=e1*eps1*eps2rt**2*eps3rt**2
1277 fac=-expon*(e1+evdwij)*rij_shift
1279 fac=rij*fac-2*expon*rrij*e_augm
1280 C Calculate the radial part of the gradient
1284 C Calculate angular part of the gradient.
1285 call sc_grad_scale(sss)
1291 C----------------------------------------------------------------------------
1292 subroutine sc_grad_scale(scalfac)
1293 implicit real*8 (a-h,o-z)
1294 include 'DIMENSIONS'
1295 include 'COMMON.CHAIN'
1296 include 'COMMON.DERIV'
1297 include 'COMMON.CALC'
1298 include 'COMMON.IOUNITS'
1299 double precision dcosom1(3),dcosom2(3)
1300 double precision scalfac
1301 eom1=eps2der*eps2rt_om1-2.0D0*alf1*eps3der+sigder*sigsq_om1
1302 eom2=eps2der*eps2rt_om2+2.0D0*alf2*eps3der+sigder*sigsq_om2
1303 eom12=evdwij*eps1_om12+eps2der*eps2rt_om12
1304 & -2.0D0*alf12*eps3der+sigder*sigsq_om12
1308 c eom12=evdwij*eps1_om12
1310 c write (iout,*) "eps2der",eps2der," eps3der",eps3der,
1311 c & " sigder",sigder
1312 c write (iout,*) "eps1_om12",eps1_om12," eps2rt_om12",eps2rt_om12
1313 c write (iout,*) "eom1",eom1," eom2",eom2," eom12",eom12
1315 dcosom1(k)=rij*(dc_norm(k,nres+i)-om1*erij(k))
1316 dcosom2(k)=rij*(dc_norm(k,nres+j)-om2*erij(k))
1319 gg(k)=(gg(k)+eom1*dcosom1(k)+eom2*dcosom2(k))*scalfac
1321 c write (iout,*) "gg",(gg(k),k=1,3)
1323 gvdwx(k,i)=gvdwx(k,i)-gg(k)+gg_lipi(k)
1324 & +(eom12*(dc_norm(k,nres+j)-om12*dc_norm(k,nres+i))
1325 & +eom1*(erij(k)-om1*dc_norm(k,nres+i)))*dsci_inv*scalfac
1326 gvdwx(k,j)=gvdwx(k,j)+gg(k)+gg_lipj(k)
1327 & +(eom12*(dc_norm(k,nres+i)-om12*dc_norm(k,nres+j))
1328 & +eom2*(erij(k)-om2*dc_norm(k,nres+j)))*dscj_inv*scalfac
1329 c write (iout,*)(eom12*(dc_norm(k,nres+j)-om12*dc_norm(k,nres+i))
1330 c & +eom1*(erij(k)-om1*dc_norm(k,nres+i)))*dsci_inv
1331 c write (iout,*)(eom12*(dc_norm(k,nres+i)-om12*dc_norm(k,nres+j))
1332 c & +eom2*(erij(k)-om2*dc_norm(k,nres+j)))*dscj_inv
1335 C Calculate the components of the gradient in DC and X
1338 gvdwc(l,i)=gvdwc(l,i)-gg(l)+gg_lipi(k)
1339 gvdwc(l,j)=gvdwc(l,j)+gg(l)+gg_lipj(k)
1343 C--------------------------------------------------------------------------
1344 subroutine eelec_scale(ees,evdw1,eel_loc,eello_turn3,eello_turn4)
1346 C This subroutine calculates the average interaction energy and its gradient
1347 C in the virtual-bond vectors between non-adjacent peptide groups, based on
1348 C the potential described in Liwo et al., Protein Sci., 1993, 2, 1715.
1349 C The potential depends both on the distance of peptide-group centers and on
1350 C the orientation of the CA-CA virtual bonds.
1352 implicit real*8 (a-h,o-z)
1356 include 'DIMENSIONS'
1357 include 'COMMON.CONTROL'
1358 include 'COMMON.SETUP'
1359 include 'COMMON.IOUNITS'
1360 include 'COMMON.GEO'
1361 include 'COMMON.VAR'
1362 include 'COMMON.LOCAL'
1363 include 'COMMON.CHAIN'
1364 include 'COMMON.DERIV'
1365 include 'COMMON.INTERACT'
1366 include 'COMMON.CONTACTS'
1367 include 'COMMON.TORSION'
1368 include 'COMMON.VECTORS'
1369 include 'COMMON.FFIELD'
1370 include 'COMMON.TIME1'
1371 dimension ggg(3),gggp(3),gggm(3),erij(3),dcosb(3),dcosg(3),
1372 & erder(3,3),uryg(3,3),urzg(3,3),vryg(3,3),vrzg(3,3)
1373 double precision acipa(2,2),agg(3,4),aggi(3,4),aggi1(3,4),
1374 & aggj(3,4),aggj1(3,4),a_temp(2,2),muij(4)
1375 common /locel/ a_temp,agg,aggi,aggi1,aggj,aggj1,a22,a23,a32,a33,
1376 & dxi,dyi,dzi,dx_normi,dy_normi,dz_normi,xmedi,ymedi,zmedi,
1378 c 4/26/02 - AL scaling factor for 1,4 repulsive VDW interactions
1380 double precision scal_el /1.0d0/
1382 double precision scal_el /0.5d0/
1385 C 13-go grudnia roku pamietnego...
1386 double precision unmat(3,3) /1.0d0,0.0d0,0.0d0,
1387 & 0.0d0,1.0d0,0.0d0,
1388 & 0.0d0,0.0d0,1.0d0/
1389 cd write(iout,*) 'In EELEC'
1391 cd write(iout,*) 'Type',i
1392 cd write(iout,*) 'B1',B1(:,i)
1393 cd write(iout,*) 'B2',B2(:,i)
1394 cd write(iout,*) 'CC',CC(:,:,i)
1395 cd write(iout,*) 'DD',DD(:,:,i)
1396 cd write(iout,*) 'EE',EE(:,:,i)
1398 cd call check_vecgrad
1400 C print *,"WCHODZE3"
1401 if (icheckgrad.eq.1) then
1403 fac=1.0d0/dsqrt(scalar(dc(1,i),dc(1,i)))
1405 dc_norm(k,i)=dc(k,i)*fac
1407 c write (iout,*) 'i',i,' fac',fac
1410 if (wel_loc.gt.0.0d0 .or. wcorr4.gt.0.0d0 .or. wcorr5.gt.0.0d0
1411 & .or. wcorr6.gt.0.0d0 .or. wturn3.gt.0.0d0 .or.
1412 & wturn4.gt.0.0d0 .or. wturn6.gt.0.0d0) then
1413 c call vec_and_deriv
1419 time_mat=time_mat+MPI_Wtime()-time01
1423 cd write (iout,*) 'i=',i
1425 cd write (iout,'(i5,2f10.5)') k,uy(k,i),uz(k,i)
1428 cd write (iout,'(f10.5,2x,3f10.5,2x,3f10.5)')
1429 cd & uz(k,i),(uzgrad(k,l,1,i),l=1,3),(uzgrad(k,l,2,i),l=1,3)
1442 cd print '(a)','Enter EELEC'
1443 cd write (iout,*) 'iatel_s=',iatel_s,' iatel_e=',iatel_e
1445 gel_loc_loc(i)=0.0d0
1450 c 9/27/08 AL Split the interaction loop to ensure load balancing of turn terms
1452 C Loop over i,i+2 and i,i+3 pairs of the peptide groups
1454 do i=iturn3_start,iturn3_end
1455 if (itype(i).eq.ntyp1.or. itype(i+1).eq.ntyp1
1456 & .or. itype(i+2).eq.ntyp1 .or. itype(i+3).eq.ntyp1
1457 & .or. itype(i-1).eq.ntyp1
1458 & .or. itype(i+4).eq.ntyp1
1463 dx_normi=dc_norm(1,i)
1464 dy_normi=dc_norm(2,i)
1465 dz_normi=dc_norm(3,i)
1466 xmedi=c(1,i)+0.5d0*dxi
1467 ymedi=c(2,i)+0.5d0*dyi
1468 zmedi=c(3,i)+0.5d0*dzi
1469 xmedi=mod(xmedi,boxxsize)
1470 if (xmedi.lt.0) xmedi=xmedi+boxxsize
1471 ymedi=mod(ymedi,boxysize)
1472 if (ymedi.lt.0) ymedi=ymedi+boxysize
1473 zmedi=mod(zmedi,boxzsize)
1474 if (zmedi.lt.0) zmedi=zmedi+boxzsize
1476 call eelecij_scale(i,i+2,ees,evdw1,eel_loc)
1477 if (wturn3.gt.0.0d0) call eturn3(i,eello_turn3)
1478 num_cont_hb(i)=num_conti
1480 do i=iturn4_start,iturn4_end
1481 if (itype(i).eq.ntyp1 .or. itype(i+1).eq.ntyp1
1482 & .or. itype(i+3).eq.ntyp1
1483 & .or. itype(i+4).eq.ntyp1
1484 & .or. itype(i+5).eq.ntyp1
1485 & .or. itype(i-1).eq.ntyp1
1490 dx_normi=dc_norm(1,i)
1491 dy_normi=dc_norm(2,i)
1492 dz_normi=dc_norm(3,i)
1493 xmedi=c(1,i)+0.5d0*dxi
1494 ymedi=c(2,i)+0.5d0*dyi
1495 zmedi=c(3,i)+0.5d0*dzi
1496 xmedi=mod(xmedi,boxxsize)
1497 if (xmedi.lt.0) xmedi=xmedi+boxxsize
1498 ymedi=mod(ymedi,boxysize)
1499 if (ymedi.lt.0) ymedi=ymedi+boxysize
1500 zmedi=mod(zmedi,boxzsize)
1501 if (zmedi.lt.0) zmedi=zmedi+boxzsize
1502 num_conti=num_cont_hb(i)
1503 call eelecij_scale(i,i+3,ees,evdw1,eel_loc)
1504 if (wturn4.gt.0.0d0 .and. itype(i+2).ne.ntyp1)
1505 & call eturn4(i,eello_turn4)
1506 num_cont_hb(i)=num_conti
1509 c Loop over all pairs of interacting peptide groups except i,i+2 and i,i+3
1511 do i=iatel_s,iatel_e
1512 if (itype(i).eq.ntyp1 .or. itype(i+1).eq.ntyp1
1513 & .or. itype(i+2).eq.ntyp1
1514 & .or. itype(i-1).eq.ntyp1
1519 dx_normi=dc_norm(1,i)
1520 dy_normi=dc_norm(2,i)
1521 dz_normi=dc_norm(3,i)
1522 xmedi=c(1,i)+0.5d0*dxi
1523 ymedi=c(2,i)+0.5d0*dyi
1524 zmedi=c(3,i)+0.5d0*dzi
1525 xmedi=mod(xmedi,boxxsize)
1526 if (xmedi.lt.0) xmedi=xmedi+boxxsize
1527 ymedi=mod(ymedi,boxysize)
1528 if (ymedi.lt.0) ymedi=ymedi+boxysize
1529 zmedi=mod(zmedi,boxzsize)
1530 if (zmedi.lt.0) zmedi=zmedi+boxzsize
1531 c write (iout,*) 'i',i,' ielstart',ielstart(i),' ielend',ielend(i)
1532 num_conti=num_cont_hb(i)
1533 do j=ielstart(i),ielend(i)
1534 if (itype(j).eq.ntyp1 .or. itype(j+1).eq.ntyp1
1535 & .or.itype(j+2).eq.ntyp1
1536 & .or.itype(j-1).eq.ntyp1
1538 call eelecij_scale(i,j,ees,evdw1,eel_loc)
1540 num_cont_hb(i)=num_conti
1542 c write (iout,*) "Number of loop steps in EELEC:",ind
1544 cd write (iout,'(i3,3f10.5,5x,3f10.5)')
1545 cd & i,(gel_loc(k,i),k=1,3),gel_loc_loc(i)
1547 c 12/7/99 Adam eello_turn3 will be considered as a separate energy term
1548 ccc eel_loc=eel_loc+eello_turn3
1549 cd print *,"Processor",fg_rank," t_eelecij",t_eelecij
1552 C-------------------------------------------------------------------------------
1553 subroutine eelecij_scale(i,j,ees,evdw1,eel_loc)
1554 implicit real*8 (a-h,o-z)
1555 include 'DIMENSIONS'
1559 include 'COMMON.CONTROL'
1560 include 'COMMON.IOUNITS'
1561 include 'COMMON.GEO'
1562 include 'COMMON.VAR'
1563 include 'COMMON.LOCAL'
1564 include 'COMMON.CHAIN'
1565 include 'COMMON.DERIV'
1566 include 'COMMON.INTERACT'
1567 include 'COMMON.CONTACTS'
1568 include 'COMMON.TORSION'
1569 include 'COMMON.VECTORS'
1570 include 'COMMON.FFIELD'
1571 include 'COMMON.TIME1'
1572 dimension ggg(3),gggp(3),gggm(3),erij(3),dcosb(3),dcosg(3),
1573 & erder(3,3),uryg(3,3),urzg(3,3),vryg(3,3),vrzg(3,3)
1574 double precision acipa(2,2),agg(3,4),aggi(3,4),aggi1(3,4),
1575 & aggj(3,4),aggj1(3,4),a_temp(2,2),muij(4)
1576 common /locel/ a_temp,agg,aggi,aggi1,aggj,aggj1,a22,a23,a32,a33,
1577 & dxi,dyi,dzi,dx_normi,dy_normi,dz_normi,xmedi,ymedi,zmedi,
1579 c 4/26/02 - AL scaling factor for 1,4 repulsive VDW interactions
1581 double precision scal_el /1.0d0/
1583 double precision scal_el /0.5d0/
1586 C 13-go grudnia roku pamietnego...
1587 double precision unmat(3,3) /1.0d0,0.0d0,0.0d0,
1588 & 0.0d0,1.0d0,0.0d0,
1589 & 0.0d0,0.0d0,1.0d0/
1590 c time00=MPI_Wtime()
1591 cd write (iout,*) "eelecij",i,j
1592 C print *,"WCHODZE2"
1596 if (j.eq.i+2 .and. itelj.eq.2) iteli=2
1597 aaa=app(iteli,itelj)
1598 bbb=bpp(iteli,itelj)
1599 ael6i=ael6(iteli,itelj)
1600 ael3i=ael3(iteli,itelj)
1604 dx_normj=dc_norm(1,j)
1605 dy_normj=dc_norm(2,j)
1606 dz_normj=dc_norm(3,j)
1611 if (xj.lt.0) xj=xj+boxxsize
1613 if (yj.lt.0) yj=yj+boxysize
1615 if (zj.lt.0) zj=zj+boxzsize
1616 dist_init=(xj-xmedi)**2+(yj-ymedi)**2+(zj-zmedi)**2
1624 xj=xj_safe+xshift*boxxsize
1625 yj=yj_safe+yshift*boxysize
1626 zj=zj_safe+zshift*boxzsize
1627 dist_temp=(xj-xmedi)**2+(yj-ymedi)**2+(zj-zmedi)**2
1628 if(dist_temp.lt.dist_init) then
1638 if (isubchap.eq.1) then
1648 rij=xj*xj+yj*yj+zj*zj
1652 c For extracting the short-range part of Evdwpp
1653 sss=sscale(rij/rpp(iteli,itelj))
1654 sssgrad=sscagrad(rij/rpp(iteli,itelj))
1657 cosa=dx_normi*dx_normj+dy_normi*dy_normj+dz_normi*dz_normj
1658 cosb=(xj*dx_normi+yj*dy_normi+zj*dz_normi)*rmij
1659 cosg=(xj*dx_normj+yj*dy_normj+zj*dz_normj)*rmij
1660 fac=cosa-3.0D0*cosb*cosg
1662 c 4/26/02 - AL scaling down 1,4 repulsive VDW interactions
1663 if (j.eq.i+2) ev1=scal_el*ev1
1668 el1=fac3*(4.0D0+fac*fac-3.0D0*(cosb*cosb+cosg*cosg))
1671 C 12/26/95 - for the evaluation of multi-body H-bonding interactions
1672 ees0ij=4.0D0+fac*fac-3.0D0*(cosb*cosb+cosg*cosg)
1674 evdw1=evdw1+evdwij*(1.0d0-sss)
1675 cd write(iout,'(2(2i3,2x),7(1pd12.4)/2(3(1pd12.4),5x)/)')
1676 cd & iteli,i,itelj,j,aaa,bbb,ael6i,ael3i,
1677 cd & 1.0D0/dsqrt(rrmij),evdwij,eesij,
1678 cd & xmedi,ymedi,zmedi,xj,yj,zj
1680 if (energy_dec) then
1681 write (iout,'(a6,2i5,0pf7.3,f7.3)') 'evdw1',i,j,evdwij,sss
1682 write (iout,'(a6,2i5,0pf7.3)') 'ees',i,j,eesij
1686 C Calculate contributions to the Cartesian gradient.
1689 facvdw=-6*rrmij*(ev1+evdwij)*(1.0d0-sss)
1690 facel=-3*rrmij*(el1+eesij)
1696 * Radial derivatives. First process both termini of the fragment (i,j)
1702 c ghalf=0.5D0*ggg(k)
1703 c gelc(k,i)=gelc(k,i)+ghalf
1704 c gelc(k,j)=gelc(k,j)+ghalf
1706 c 9/28/08 AL Gradient compotents will be summed only at the end
1708 gelc_long(k,j)=gelc_long(k,j)+ggg(k)
1709 gelc_long(k,i)=gelc_long(k,i)-ggg(k)
1712 * Loop over residues i+1 thru j-1.
1716 cgrad gelc(l,k)=gelc(l,k)+ggg(l)
1719 ggg(1)=facvdw*xj-sssgrad*rmij*evdwij*xj/rpp(iteli,itelj)
1720 ggg(2)=facvdw*yj-sssgrad*rmij*evdwij*yj/rpp(iteli,itelj)
1721 ggg(3)=facvdw*zj-sssgrad*rmij*evdwij*zj/rpp(iteli,itelj)
1723 c ghalf=0.5D0*ggg(k)
1724 c gvdwpp(k,i)=gvdwpp(k,i)+ghalf
1725 c gvdwpp(k,j)=gvdwpp(k,j)+ghalf
1727 c 9/28/08 AL Gradient compotents will be summed only at the end
1729 gvdwpp(k,j)=gvdwpp(k,j)+ggg(k)
1730 gvdwpp(k,i)=gvdwpp(k,i)-ggg(k)
1733 * Loop over residues i+1 thru j-1.
1737 cgrad gvdwpp(l,k)=gvdwpp(l,k)+ggg(l)
1741 facvdw=ev1+evdwij*(1.0d0-sss)
1744 fac=-3*rrmij*(facvdw+facvdw+facel)
1749 * Radial derivatives. First process both termini of the fragment (i,j)
1755 c ghalf=0.5D0*ggg(k)
1756 c gelc(k,i)=gelc(k,i)+ghalf
1757 c gelc(k,j)=gelc(k,j)+ghalf
1759 c 9/28/08 AL Gradient compotents will be summed only at the end
1761 gelc_long(k,j)=gelc(k,j)+ggg(k)
1762 gelc_long(k,i)=gelc(k,i)-ggg(k)
1765 * Loop over residues i+1 thru j-1.
1769 cgrad gelc(l,k)=gelc(l,k)+ggg(l)
1772 c 9/28/08 AL Gradient compotents will be summed only at the end
1776 ggg(1)=facvdw*xj-sssgrad*rmij*evdwij*xj/rpp(iteli,itelj)
1777 ggg(2)=facvdw*yj-sssgrad*rmij*evdwij*yj/rpp(iteli,itelj)
1778 ggg(3)=facvdw*zj-sssgrad*rmij*evdwij*zj/rpp(iteli,itelj)
1780 gvdwpp(k,j)=gvdwpp(k,j)+ggg(k)
1781 gvdwpp(k,i)=gvdwpp(k,i)-ggg(k)
1787 ecosa=2.0D0*fac3*fac1+fac4
1790 ecosb=(fac3*(fac1*cosg+cosb)+cosg*fac4)
1791 ecosg=(fac3*(fac1*cosb+cosg)+cosb*fac4)
1793 dcosb(k)=rmij*(dc_norm(k,i)-erij(k)*cosb)
1794 dcosg(k)=rmij*(dc_norm(k,j)-erij(k)*cosg)
1796 cd print '(2i3,2(3(1pd14.5),3x))',i,j,(dcosb(k),k=1,3),
1797 cd & (dcosg(k),k=1,3)
1799 ggg(k)=ecosb*dcosb(k)+ecosg*dcosg(k)
1802 c ghalf=0.5D0*ggg(k)
1803 c gelc(k,i)=gelc(k,i)+ghalf
1804 c & +(ecosa*(dc_norm(k,j)-cosa*dc_norm(k,i))
1805 c & + ecosb*(erij(k)-cosb*dc_norm(k,i)))*vbld_inv(i+1)
1806 c gelc(k,j)=gelc(k,j)+ghalf
1807 c & +(ecosa*(dc_norm(k,i)-cosa*dc_norm(k,j))
1808 c & + ecosg*(erij(k)-cosg*dc_norm(k,j)))*vbld_inv(j+1)
1812 cgrad gelc(l,k)=gelc(l,k)+ggg(l)
1817 & +(ecosa*(dc_norm(k,j)-cosa*dc_norm(k,i))
1818 & + ecosb*(erij(k)-cosb*dc_norm(k,i)))*vbld_inv(i+1)
1820 & +(ecosa*(dc_norm(k,i)-cosa*dc_norm(k,j))
1821 & + ecosg*(erij(k)-cosg*dc_norm(k,j)))*vbld_inv(j+1)
1822 gelc_long(k,j)=gelc_long(k,j)+ggg(k)
1823 gelc_long(k,i)=gelc_long(k,i)-ggg(k)
1825 IF (wel_loc.gt.0.0d0 .or. wcorr4.gt.0.0d0 .or. wcorr5.gt.0.0d0
1826 & .or. wcorr6.gt.0.0d0 .or. wturn3.gt.0.0d0
1827 & .or. wturn4.gt.0.0d0 .or. wturn6.gt.0.0d0) THEN
1829 C 9/25/99 Mixed third-order local-electrostatic terms. The local-interaction
1830 C energy of a peptide unit is assumed in the form of a second-order
1831 C Fourier series in the angles lambda1 and lambda2 (see Nishikawa et al.
1832 C Macromolecules, 1974, 7, 797-806 for definition). This correlation terms
1833 C are computed for EVERY pair of non-contiguous peptide groups.
1835 if (j.lt.nres-1) then
1846 muij(kkk)=mu(k,i)*mu(l,j)
1849 cd write (iout,*) 'EELEC: i',i,' j',j
1850 cd write (iout,*) 'j',j,' j1',j1,' j2',j2
1851 cd write(iout,*) 'muij',muij
1852 ury=scalar(uy(1,i),erij)
1853 urz=scalar(uz(1,i),erij)
1854 vry=scalar(uy(1,j),erij)
1855 vrz=scalar(uz(1,j),erij)
1856 a22=scalar(uy(1,i),uy(1,j))-3*ury*vry
1857 a23=scalar(uy(1,i),uz(1,j))-3*ury*vrz
1858 a32=scalar(uz(1,i),uy(1,j))-3*urz*vry
1859 a33=scalar(uz(1,i),uz(1,j))-3*urz*vrz
1860 fac=dsqrt(-ael6i)*r3ij
1865 cd write (iout,'(4i5,4f10.5)')
1866 cd & i,itortyp(itype(i)),j,itortyp(itype(j)),a22,a23,a32,a33
1867 cd write (iout,'(6f10.5)') (muij(k),k=1,4),fac,eel_loc_ij
1868 cd write (iout,'(2(3f10.5,5x)/2(3f10.5,5x))') uy(:,i),uz(:,i),
1869 cd & uy(:,j),uz(:,j)
1870 cd write (iout,'(4f10.5)')
1871 cd & scalar(uy(1,i),uy(1,j)),scalar(uy(1,i),uz(1,j)),
1872 cd & scalar(uz(1,i),uy(1,j)),scalar(uz(1,i),uz(1,j))
1873 cd write (iout,'(4f10.5)') ury,urz,vry,vrz
1874 cd write (iout,'(9f10.5/)')
1875 cd & fac22,a22,fac23,a23,fac32,a32,fac33,a33,eel_loc_ij
1876 C Derivatives of the elements of A in virtual-bond vectors
1877 call unormderiv(erij(1),unmat(1,1),rmij,erder(1,1))
1879 uryg(k,1)=scalar(erder(1,k),uy(1,i))
1880 uryg(k,2)=scalar(uygrad(1,k,1,i),erij(1))
1881 uryg(k,3)=scalar(uygrad(1,k,2,i),erij(1))
1882 urzg(k,1)=scalar(erder(1,k),uz(1,i))
1883 urzg(k,2)=scalar(uzgrad(1,k,1,i),erij(1))
1884 urzg(k,3)=scalar(uzgrad(1,k,2,i),erij(1))
1885 vryg(k,1)=scalar(erder(1,k),uy(1,j))
1886 vryg(k,2)=scalar(uygrad(1,k,1,j),erij(1))
1887 vryg(k,3)=scalar(uygrad(1,k,2,j),erij(1))
1888 vrzg(k,1)=scalar(erder(1,k),uz(1,j))
1889 vrzg(k,2)=scalar(uzgrad(1,k,1,j),erij(1))
1890 vrzg(k,3)=scalar(uzgrad(1,k,2,j),erij(1))
1892 C Compute radial contributions to the gradient
1910 C Add the contributions coming from er
1913 agg(k,1)=agg(k,1)+fac3*(uryg(k,1)*vry+vryg(k,1)*ury)
1914 agg(k,2)=agg(k,2)+fac3*(uryg(k,1)*vrz+vrzg(k,1)*ury)
1915 agg(k,3)=agg(k,3)+fac3*(urzg(k,1)*vry+vryg(k,1)*urz)
1916 agg(k,4)=agg(k,4)+fac3*(urzg(k,1)*vrz+vrzg(k,1)*urz)
1919 C Derivatives in DC(i)
1920 cgrad ghalf1=0.5d0*agg(k,1)
1921 cgrad ghalf2=0.5d0*agg(k,2)
1922 cgrad ghalf3=0.5d0*agg(k,3)
1923 cgrad ghalf4=0.5d0*agg(k,4)
1924 aggi(k,1)=fac*(scalar(uygrad(1,k,1,i),uy(1,j))
1925 & -3.0d0*uryg(k,2)*vry)!+ghalf1
1926 aggi(k,2)=fac*(scalar(uygrad(1,k,1,i),uz(1,j))
1927 & -3.0d0*uryg(k,2)*vrz)!+ghalf2
1928 aggi(k,3)=fac*(scalar(uzgrad(1,k,1,i),uy(1,j))
1929 & -3.0d0*urzg(k,2)*vry)!+ghalf3
1930 aggi(k,4)=fac*(scalar(uzgrad(1,k,1,i),uz(1,j))
1931 & -3.0d0*urzg(k,2)*vrz)!+ghalf4
1932 C Derivatives in DC(i+1)
1933 aggi1(k,1)=fac*(scalar(uygrad(1,k,2,i),uy(1,j))
1934 & -3.0d0*uryg(k,3)*vry)!+agg(k,1)
1935 aggi1(k,2)=fac*(scalar(uygrad(1,k,2,i),uz(1,j))
1936 & -3.0d0*uryg(k,3)*vrz)!+agg(k,2)
1937 aggi1(k,3)=fac*(scalar(uzgrad(1,k,2,i),uy(1,j))
1938 & -3.0d0*urzg(k,3)*vry)!+agg(k,3)
1939 aggi1(k,4)=fac*(scalar(uzgrad(1,k,2,i),uz(1,j))
1940 & -3.0d0*urzg(k,3)*vrz)!+agg(k,4)
1941 C Derivatives in DC(j)
1942 aggj(k,1)=fac*(scalar(uygrad(1,k,1,j),uy(1,i))
1943 & -3.0d0*vryg(k,2)*ury)!+ghalf1
1944 aggj(k,2)=fac*(scalar(uzgrad(1,k,1,j),uy(1,i))
1945 & -3.0d0*vrzg(k,2)*ury)!+ghalf2
1946 aggj(k,3)=fac*(scalar(uygrad(1,k,1,j),uz(1,i))
1947 & -3.0d0*vryg(k,2)*urz)!+ghalf3
1948 aggj(k,4)=fac*(scalar(uzgrad(1,k,1,j),uz(1,i))
1949 & -3.0d0*vrzg(k,2)*urz)!+ghalf4
1950 C Derivatives in DC(j+1) or DC(nres-1)
1951 aggj1(k,1)=fac*(scalar(uygrad(1,k,2,j),uy(1,i))
1952 & -3.0d0*vryg(k,3)*ury)
1953 aggj1(k,2)=fac*(scalar(uzgrad(1,k,2,j),uy(1,i))
1954 & -3.0d0*vrzg(k,3)*ury)
1955 aggj1(k,3)=fac*(scalar(uygrad(1,k,2,j),uz(1,i))
1956 & -3.0d0*vryg(k,3)*urz)
1957 aggj1(k,4)=fac*(scalar(uzgrad(1,k,2,j),uz(1,i))
1958 & -3.0d0*vrzg(k,3)*urz)
1959 cgrad if (j.eq.nres-1 .and. i.lt.j-2) then
1961 cgrad aggj1(k,l)=aggj1(k,l)+agg(k,l)
1974 aggi(k,l)=-aggi(k,l)
1975 aggi1(k,l)=-aggi1(k,l)
1976 aggj(k,l)=-aggj(k,l)
1977 aggj1(k,l)=-aggj1(k,l)
1980 if (j.lt.nres-1) then
1986 aggi(k,l)=-aggi(k,l)
1987 aggi1(k,l)=-aggi1(k,l)
1988 aggj(k,l)=-aggj(k,l)
1989 aggj1(k,l)=-aggj1(k,l)
2000 aggi(k,l)=-aggi(k,l)
2001 aggi1(k,l)=-aggi1(k,l)
2002 aggj(k,l)=-aggj(k,l)
2003 aggj1(k,l)=-aggj1(k,l)
2008 IF (wel_loc.gt.0.0d0) THEN
2009 C Contribution to the local-electrostatic energy coming from the i-j pair
2010 eel_loc_ij=a22*muij(1)+a23*muij(2)+a32*muij(3)
2012 cd write (iout,*) 'i',i,' j',j,' eel_loc_ij',eel_loc_ij
2014 if (energy_dec) write (iout,'(a6,2i5,0pf7.3)')
2015 & 'eelloc',i,j,eel_loc_ij
2017 eel_loc=eel_loc+eel_loc_ij
2018 C Partial derivatives in virtual-bond dihedral angles gamma
2020 & gel_loc_loc(i-1)=gel_loc_loc(i-1)+
2021 & a22*muder(1,i)*mu(1,j)+a23*muder(1,i)*mu(2,j)
2022 & +a32*muder(2,i)*mu(1,j)+a33*muder(2,i)*mu(2,j)
2023 gel_loc_loc(j-1)=gel_loc_loc(j-1)+
2024 & a22*mu(1,i)*muder(1,j)+a23*mu(1,i)*muder(2,j)
2025 & +a32*mu(2,i)*muder(1,j)+a33*mu(2,i)*muder(2,j)
2026 C Derivatives of eello in DC(i+1) thru DC(j-1) or DC(nres-2)
2028 ggg(l)=agg(l,1)*muij(1)+
2029 & agg(l,2)*muij(2)+agg(l,3)*muij(3)+agg(l,4)*muij(4)
2030 gel_loc_long(l,j)=gel_loc_long(l,j)+ggg(l)
2031 gel_loc_long(l,i)=gel_loc_long(l,i)-ggg(l)
2032 cgrad ghalf=0.5d0*ggg(l)
2033 cgrad gel_loc(l,i)=gel_loc(l,i)+ghalf
2034 cgrad gel_loc(l,j)=gel_loc(l,j)+ghalf
2038 cgrad gel_loc(l,k)=gel_loc(l,k)+ggg(l)
2041 C Remaining derivatives of eello
2043 gel_loc(l,i)=gel_loc(l,i)+aggi(l,1)*muij(1)+
2044 & aggi(l,2)*muij(2)+aggi(l,3)*muij(3)+aggi(l,4)*muij(4)
2045 gel_loc(l,i+1)=gel_loc(l,i+1)+aggi1(l,1)*muij(1)+
2046 & aggi1(l,2)*muij(2)+aggi1(l,3)*muij(3)+aggi1(l,4)*muij(4)
2047 gel_loc(l,j)=gel_loc(l,j)+aggj(l,1)*muij(1)+
2048 & aggj(l,2)*muij(2)+aggj(l,3)*muij(3)+aggj(l,4)*muij(4)
2049 gel_loc(l,j1)=gel_loc(l,j1)+aggj1(l,1)*muij(1)+
2050 & aggj1(l,2)*muij(2)+aggj1(l,3)*muij(3)+aggj1(l,4)*muij(4)
2053 C Change 12/26/95 to calculate four-body contributions to H-bonding energy
2054 c if (j.gt.i+1 .and. num_conti.le.maxconts) then
2055 if (wcorr+wcorr4+wcorr5+wcorr6.gt.0.0d0
2056 & .and. num_conti.le.maxconts) then
2057 c write (iout,*) i,j," entered corr"
2059 C Calculate the contact function. The ith column of the array JCONT will
2060 C contain the numbers of atoms that make contacts with the atom I (of numbers
2061 C greater than I). The arrays FACONT and GACONT will contain the values of
2062 C the contact function and its derivative.
2063 c r0ij=1.02D0*rpp(iteli,itelj)
2064 c r0ij=1.11D0*rpp(iteli,itelj)
2065 r0ij=2.20D0*rpp(iteli,itelj)
2066 c r0ij=1.55D0*rpp(iteli,itelj)
2067 call gcont(rij,r0ij,1.0D0,0.2d0*r0ij,fcont,fprimcont)
2068 if (fcont.gt.0.0D0) then
2069 num_conti=num_conti+1
2070 if (num_conti.gt.maxconts) then
2071 write (iout,*) 'WARNING - max. # of contacts exceeded;',
2072 & ' will skip next contacts for this conf.'
2074 jcont_hb(num_conti,i)=j
2075 cd write (iout,*) "i",i," j",j," num_conti",num_conti,
2076 cd & " jcont_hb",jcont_hb(num_conti,i)
2077 IF (wcorr4.gt.0.0d0 .or. wcorr5.gt.0.0d0 .or.
2078 & wcorr6.gt.0.0d0 .or. wturn6.gt.0.0d0) THEN
2079 C 9/30/99 (AL) - store components necessary to evaluate higher-order loc-el
2081 d_cont(num_conti,i)=rij
2082 cd write (2,'(3e15.5)') rij,r0ij+0.2d0*r0ij,rij
2083 C --- Electrostatic-interaction matrix ---
2084 a_chuj(1,1,num_conti,i)=a22
2085 a_chuj(1,2,num_conti,i)=a23
2086 a_chuj(2,1,num_conti,i)=a32
2087 a_chuj(2,2,num_conti,i)=a33
2088 C --- Gradient of rij
2090 grij_hb_cont(kkk,num_conti,i)=erij(kkk)
2097 a_chuj_der(k,l,m,1,num_conti,i)=agg(m,kkll)
2098 a_chuj_der(k,l,m,2,num_conti,i)=aggi(m,kkll)
2099 a_chuj_der(k,l,m,3,num_conti,i)=aggi1(m,kkll)
2100 a_chuj_der(k,l,m,4,num_conti,i)=aggj(m,kkll)
2101 a_chuj_der(k,l,m,5,num_conti,i)=aggj1(m,kkll)
2106 IF (wcorr4.eq.0.0d0 .and. wcorr.gt.0.0d0) THEN
2107 C Calculate contact energies
2109 wij=cosa-3.0D0*cosb*cosg
2112 c fac3=dsqrt(-ael6i)/r0ij**3
2113 fac3=dsqrt(-ael6i)*r3ij
2114 c ees0pij=dsqrt(4.0D0+cosa4+wij*wij-3.0D0*cosbg1*cosbg1)
2115 ees0tmp=4.0D0+cosa4+wij*wij-3.0D0*cosbg1*cosbg1
2116 if (ees0tmp.gt.0) then
2117 ees0pij=dsqrt(ees0tmp)
2121 c ees0mij=dsqrt(4.0D0-cosa4+wij*wij-3.0D0*cosbg2*cosbg2)
2122 ees0tmp=4.0D0-cosa4+wij*wij-3.0D0*cosbg2*cosbg2
2123 if (ees0tmp.gt.0) then
2124 ees0mij=dsqrt(ees0tmp)
2129 ees0p(num_conti,i)=0.5D0*fac3*(ees0pij+ees0mij)
2130 ees0m(num_conti,i)=0.5D0*fac3*(ees0pij-ees0mij)
2131 C Diagnostics. Comment out or remove after debugging!
2132 c ees0p(num_conti,i)=0.5D0*fac3*ees0pij
2133 c ees0m(num_conti,i)=0.5D0*fac3*ees0mij
2134 c ees0m(num_conti,i)=0.0D0
2136 c write (iout,*) 'i=',i,' j=',j,' rij=',rij,' r0ij=',r0ij,
2137 c & ' ees0ij=',ees0p(num_conti,i),ees0m(num_conti,i),' fcont=',fcont
2138 C Angular derivatives of the contact function
2139 ees0pij1=fac3/ees0pij
2140 ees0mij1=fac3/ees0mij
2141 fac3p=-3.0D0*fac3*rrmij
2142 ees0pijp=0.5D0*fac3p*(ees0pij+ees0mij)
2143 ees0mijp=0.5D0*fac3p*(ees0pij-ees0mij)
2145 ecosa1= ees0pij1*( 1.0D0+0.5D0*wij)
2146 ecosb1=-1.5D0*ees0pij1*(wij*cosg+cosbg1)
2147 ecosg1=-1.5D0*ees0pij1*(wij*cosb+cosbg1)
2148 ecosa2= ees0mij1*(-1.0D0+0.5D0*wij)
2149 ecosb2=-1.5D0*ees0mij1*(wij*cosg+cosbg2)
2150 ecosg2=-1.5D0*ees0mij1*(wij*cosb-cosbg2)
2151 ecosap=ecosa1+ecosa2
2152 ecosbp=ecosb1+ecosb2
2153 ecosgp=ecosg1+ecosg2
2154 ecosam=ecosa1-ecosa2
2155 ecosbm=ecosb1-ecosb2
2156 ecosgm=ecosg1-ecosg2
2165 facont_hb(num_conti,i)=fcont
2166 fprimcont=fprimcont/rij
2167 cd facont_hb(num_conti,i)=1.0D0
2168 C Following line is for diagnostics.
2171 dcosb(k)=rmij*(dc_norm(k,i)-erij(k)*cosb)
2172 dcosg(k)=rmij*(dc_norm(k,j)-erij(k)*cosg)
2175 gggp(k)=ecosbp*dcosb(k)+ecosgp*dcosg(k)
2176 gggm(k)=ecosbm*dcosb(k)+ecosgm*dcosg(k)
2178 gggp(1)=gggp(1)+ees0pijp*xj
2179 gggp(2)=gggp(2)+ees0pijp*yj
2180 gggp(3)=gggp(3)+ees0pijp*zj
2181 gggm(1)=gggm(1)+ees0mijp*xj
2182 gggm(2)=gggm(2)+ees0mijp*yj
2183 gggm(3)=gggm(3)+ees0mijp*zj
2184 C Derivatives due to the contact function
2185 gacont_hbr(1,num_conti,i)=fprimcont*xj
2186 gacont_hbr(2,num_conti,i)=fprimcont*yj
2187 gacont_hbr(3,num_conti,i)=fprimcont*zj
2190 c 10/24/08 cgrad and ! comments indicate the parts of the code removed
2191 c following the change of gradient-summation algorithm.
2193 cgrad ghalfp=0.5D0*gggp(k)
2194 cgrad ghalfm=0.5D0*gggm(k)
2195 gacontp_hb1(k,num_conti,i)=!ghalfp
2196 & +(ecosap*(dc_norm(k,j)-cosa*dc_norm(k,i))
2197 & + ecosbp*(erij(k)-cosb*dc_norm(k,i)))*vbld_inv(i+1)
2198 gacontp_hb2(k,num_conti,i)=!ghalfp
2199 & +(ecosap*(dc_norm(k,i)-cosa*dc_norm(k,j))
2200 & + ecosgp*(erij(k)-cosg*dc_norm(k,j)))*vbld_inv(j+1)
2201 gacontp_hb3(k,num_conti,i)=gggp(k)
2202 gacontm_hb1(k,num_conti,i)=!ghalfm
2203 & +(ecosam*(dc_norm(k,j)-cosa*dc_norm(k,i))
2204 & + ecosbm*(erij(k)-cosb*dc_norm(k,i)))*vbld_inv(i+1)
2205 gacontm_hb2(k,num_conti,i)=!ghalfm
2206 & +(ecosam*(dc_norm(k,i)-cosa*dc_norm(k,j))
2207 & + ecosgm*(erij(k)-cosg*dc_norm(k,j)))*vbld_inv(j+1)
2208 gacontm_hb3(k,num_conti,i)=gggm(k)
2211 endif ! num_conti.le.maxconts
2214 if (wturn3.gt.0.0d0 .or. wturn4.gt.0.0d0) then
2217 ghalf=0.5d0*agg(l,k)
2218 aggi(l,k)=aggi(l,k)+ghalf
2219 aggi1(l,k)=aggi1(l,k)+agg(l,k)
2220 aggj(l,k)=aggj(l,k)+ghalf
2223 if (j.eq.nres-1 .and. i.lt.j-2) then
2226 aggj1(l,k)=aggj1(l,k)+agg(l,k)
2231 c t_eelecij=t_eelecij+MPI_Wtime()-time00
2234 C-----------------------------------------------------------------------
2235 subroutine evdwpp_short(evdw1)
2239 implicit real*8 (a-h,o-z)
2240 include 'DIMENSIONS'
2241 include 'COMMON.CONTROL'
2242 include 'COMMON.IOUNITS'
2243 include 'COMMON.GEO'
2244 include 'COMMON.VAR'
2245 include 'COMMON.LOCAL'
2246 include 'COMMON.CHAIN'
2247 include 'COMMON.DERIV'
2248 include 'COMMON.INTERACT'
2249 include 'COMMON.CONTACTS'
2250 include 'COMMON.TORSION'
2251 include 'COMMON.VECTORS'
2252 include 'COMMON.FFIELD'
2254 c 4/26/02 - AL scaling factor for 1,4 repulsive VDW interactions
2256 double precision scal_el /1.0d0/
2258 double precision scal_el /0.5d0/
2262 c write (iout,*) "iatel_s_vdw",iatel_s_vdw,
2263 c & " iatel_e_vdw",iatel_e_vdw
2265 do i=iatel_s_vdw,iatel_e_vdw
2266 if (itype(i).eq.ntyp1.or. itype(i+1).eq.ntyp1) cycle
2270 dx_normi=dc_norm(1,i)
2271 dy_normi=dc_norm(2,i)
2272 dz_normi=dc_norm(3,i)
2273 xmedi=c(1,i)+0.5d0*dxi
2274 ymedi=c(2,i)+0.5d0*dyi
2275 zmedi=c(3,i)+0.5d0*dzi
2276 xmedi=mod(xmedi,boxxsize)
2277 if (xmedi.lt.0) xmedi=xmedi+boxxsize
2278 ymedi=mod(ymedi,boxysize)
2279 if (ymedi.lt.0) ymedi=ymedi+boxysize
2280 zmedi=mod(zmedi,boxzsize)
2281 if (zmedi.lt.0) zmedi=zmedi+boxzsize
2283 c write (iout,*) 'i',i,' ielstart',ielstart_vdw(i),
2284 c & ' ielend',ielend_vdw(i)
2286 do j=ielstart_vdw(i),ielend_vdw(i)
2287 if (itype(j).eq.ntyp1 .or. itype(j+1).eq.ntyp1) cycle
2291 if (j.eq.i+2 .and. itelj.eq.2) iteli=2
2292 aaa=app(iteli,itelj)
2293 bbb=bpp(iteli,itelj)
2297 dx_normj=dc_norm(1,j)
2298 dy_normj=dc_norm(2,j)
2299 dz_normj=dc_norm(3,j)
2304 if (xj.lt.0) xj=xj+boxxsize
2306 if (yj.lt.0) yj=yj+boxysize
2308 if (zj.lt.0) zj=zj+boxzsize
2309 dist_init=(xj-xmedi)**2+(yj-ymedi)**2+(zj-zmedi)**2
2317 xj=xj_safe+xshift*boxxsize
2318 yj=yj_safe+yshift*boxysize
2319 zj=zj_safe+zshift*boxzsize
2320 dist_temp=(xj-xmedi)**2+(yj-ymedi)**2+(zj-zmedi)**2
2321 if(dist_temp.lt.dist_init) then
2331 if (isubchap.eq.1) then
2340 rij=xj*xj+yj*yj+zj*zj
2343 sss=sscale(rij/rpp(iteli,itelj))
2344 sssgrad=sscagrad(rij/rpp(iteli,itelj))
2345 if (sss.gt.0.0d0) then
2350 c 4/26/02 - AL scaling down 1,4 repulsive VDW interactions
2351 if (j.eq.i+2) ev1=scal_el*ev1
2354 if (energy_dec) then
2355 write (iout,'(a6,2i5,0pf7.3,f7.3)') 'evdw1',i,j,evdwij,sss
2357 evdw1=evdw1+evdwij*sss
2359 C Calculate contributions to the Cartesian gradient.
2361 facvdw=-6*rrmij*(ev1+evdwij)*sss
2362 ggg(1)=facvdw*xj+sssgrad*rmij*evdwij*xj/rpp(iteli,itelj)
2363 ggg(2)=facvdw*yj+sssgrad*rmij*evdwij*yj/rpp(iteli,itelj)
2364 ggg(3)=facvdw*zj+sssgrad*rmij*evdwij*zj/rpp(iteli,itelj)
2369 gvdwpp(k,j)=gvdwpp(k,j)+ggg(k)
2370 gvdwpp(k,i)=gvdwpp(k,i)-ggg(k)
2377 C-----------------------------------------------------------------------------
2378 subroutine escp_long(evdw2,evdw2_14)
2380 C This subroutine calculates the excluded-volume interaction energy between
2381 C peptide-group centers and side chains and its gradient in virtual-bond and
2382 C side-chain vectors.
2384 implicit real*8 (a-h,o-z)
2385 include 'DIMENSIONS'
2386 include 'COMMON.GEO'
2387 include 'COMMON.VAR'
2388 include 'COMMON.LOCAL'
2389 include 'COMMON.CHAIN'
2390 include 'COMMON.DERIV'
2391 include 'COMMON.INTERACT'
2392 include 'COMMON.FFIELD'
2393 include 'COMMON.IOUNITS'
2394 include 'COMMON.CONTROL'
2398 CD print '(a)','Enter ESCP KURWA'
2399 cd write (iout,*) 'iatscp_s=',iatscp_s,' iatscp_e=',iatscp_e
2400 do i=iatscp_s,iatscp_e
2401 if (itype(i).eq.ntyp1 .or. itype(i+1).eq.ntyp1) cycle
2403 xi=0.5D0*(c(1,i)+c(1,i+1))
2404 yi=0.5D0*(c(2,i)+c(2,i+1))
2405 zi=0.5D0*(c(3,i)+c(3,i+1))
2407 if (xi.lt.0) xi=xi+boxxsize
2409 if (yi.lt.0) yi=yi+boxysize
2411 if (zi.lt.0) zi=zi+boxzsize
2412 do iint=1,nscp_gr(i)
2414 do j=iscpstart(i,iint),iscpend(i,iint)
2416 if (itypj.eq.ntyp1) cycle
2417 C Uncomment following three lines for SC-p interactions
2421 C Uncomment following three lines for Ca-p interactions
2425 dist_init=(xj-xi)**2+(yj-yi)**2+(zj-zi)**2
2433 xj=xj_safe+xshift*boxxsize
2434 yj=yj_safe+yshift*boxysize
2435 zj=zj_safe+zshift*boxzsize
2436 dist_temp=(xj-xi)**2+(yj-yi)**2+(zj-zi)**2
2437 if(dist_temp.lt.dist_init) then
2447 if (subchap.eq.1) then
2457 rrij=1.0D0/(xj*xj+yj*yj+zj*zj)
2459 sss=sscale(1.0d0/(dsqrt(rrij)*rscp(itypj,iteli)))
2460 sssgrad=sscagrad(1.0d0/(dsqrt(rrij)*rscp(itypj,iteli)))
2461 if (sss.lt.1.0d0) then
2463 e1=fac*fac*aad(itypj,iteli)
2464 e2=fac*bad(itypj,iteli)
2465 if (iabs(j-i) .le. 2) then
2468 evdw2_14=evdw2_14+(e1+e2)*(1.0d0-sss)
2471 evdw2=evdw2+evdwij*(1.0d0-sss)
2472 if (energy_dec) write (iout,'(a6,2i5,2(0pf7.3))')
2473 & 'evdw2',i,j,sss,evdwij
2475 C Calculate contributions to the gradient in the virtual-bond and SC vectors.
2478 fac=-(evdwij+e1)*rrij*(1.0d0-sss)
2479 fac=fac-(evdwij)*sssgrad*dsqrt(rrij)/rscp(itypj,iteli)
2483 C Uncomment following three lines for SC-p interactions
2485 c gradx_scp(k,j)=gradx_scp(k,j)+ggg(k)
2487 C Uncomment following line for SC-p interactions
2488 c gradx_scp(k,j)=gradx_scp(k,j)+ggg(k)
2490 gvdwc_scpp(k,i)=gvdwc_scpp(k,i)-ggg(k)
2491 gvdwc_scp(k,j)=gvdwc_scp(k,j)+ggg(k)
2500 gvdwc_scp(j,i)=expon*gvdwc_scp(j,i)
2501 gvdwc_scpp(j,i)=expon*gvdwc_scpp(j,i)
2502 gradx_scp(j,i)=expon*gradx_scp(j,i)
2505 C******************************************************************************
2509 C To save time the factor EXPON has been extracted from ALL components
2510 C of GVDWC and GRADX. Remember to multiply them by this factor before further
2513 C******************************************************************************
2516 C-----------------------------------------------------------------------------
2517 subroutine escp_short(evdw2,evdw2_14)
2519 C This subroutine calculates the excluded-volume interaction energy between
2520 C peptide-group centers and side chains and its gradient in virtual-bond and
2521 C side-chain vectors.
2523 implicit real*8 (a-h,o-z)
2524 include 'DIMENSIONS'
2525 include 'COMMON.GEO'
2526 include 'COMMON.VAR'
2527 include 'COMMON.LOCAL'
2528 include 'COMMON.CHAIN'
2529 include 'COMMON.DERIV'
2530 include 'COMMON.INTERACT'
2531 include 'COMMON.FFIELD'
2532 include 'COMMON.IOUNITS'
2533 include 'COMMON.CONTROL'
2537 cd print '(a)','Enter ESCP'
2538 cd write (iout,*) 'iatscp_s=',iatscp_s,' iatscp_e=',iatscp_e
2539 do i=iatscp_s,iatscp_e
2540 if (itype(i).eq.ntyp1 .or. itype(i+1).eq.ntyp1) cycle
2542 xi=0.5D0*(c(1,i)+c(1,i+1))
2543 yi=0.5D0*(c(2,i)+c(2,i+1))
2544 zi=0.5D0*(c(3,i)+c(3,i+1))
2546 if (xi.lt.0) xi=xi+boxxsize
2548 if (yi.lt.0) yi=yi+boxysize
2550 if (zi.lt.0) zi=zi+boxzsize
2552 do iint=1,nscp_gr(i)
2554 do j=iscpstart(i,iint),iscpend(i,iint)
2556 if (itypj.eq.ntyp1) cycle
2557 C Uncomment following three lines for SC-p interactions
2561 C Uncomment following three lines for Ca-p interactions
2565 dist_init=(xj-xi)**2+(yj-yi)**2+(zj-zi)**2
2573 xj=xj_safe+xshift*boxxsize
2574 yj=yj_safe+yshift*boxysize
2575 zj=zj_safe+zshift*boxzsize
2576 dist_temp=(xj-xi)**2+(yj-yi)**2+(zj-zi)**2
2577 if(dist_temp.lt.dist_init) then
2587 if (subchap.eq.1) then
2596 rrij=1.0D0/(xj*xj+yj*yj+zj*zj)
2597 sss=sscale(1.0d0/(dsqrt(rrij)*rscp(itypj,iteli)))
2598 sssgrad=sscagrad(1.0d0/(dsqrt(rrij)*rscp(itypj,iteli)))
2599 if (sss.gt.0.0d0) then
2602 e1=fac*fac*aad(itypj,iteli)
2603 e2=fac*bad(itypj,iteli)
2604 if (iabs(j-i) .le. 2) then
2607 evdw2_14=evdw2_14+(e1+e2)*sss
2610 evdw2=evdw2+evdwij*sss
2611 if (energy_dec) write (iout,'(a6,2i5,2(0pf7.3))')
2612 & 'evdw2',i,j,sss,evdwij
2614 C Calculate contributions to the gradient in the virtual-bond and SC vectors.
2616 fac=-(evdwij+e1)*rrij*sss
2617 fac=fac+(evdwij)*sssgrad*dsqrt(rrij)/rscp(itypj,iteli)
2621 C Uncomment following three lines for SC-p interactions
2623 c gradx_scp(k,j)=gradx_scp(k,j)+ggg(k)
2625 C Uncomment following line for SC-p interactions
2626 c gradx_scp(k,j)=gradx_scp(k,j)+ggg(k)
2628 gvdwc_scpp(k,i)=gvdwc_scpp(k,i)-ggg(k)
2629 gvdwc_scp(k,j)=gvdwc_scp(k,j)+ggg(k)
2638 gvdwc_scp(j,i)=expon*gvdwc_scp(j,i)
2639 gvdwc_scpp(j,i)=expon*gvdwc_scpp(j,i)
2640 gradx_scp(j,i)=expon*gradx_scp(j,i)
2643 C******************************************************************************
2647 C To save time the factor EXPON has been extracted from ALL components
2648 C of GVDWC and GRADX. Remember to multiply them by this factor before further
2651 C******************************************************************************