- Timestamp:
- 09/05/08 11:49:42 (16 years ago)
- Branches:
- master
- Children:
- fafe4d6
- Parents:
- 2ebb8b6
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
enylun.f
r2ebb8b6 rbd2278d 1 c*******************************************************************2 cSMMP version of Anders Irback's force field, to be called the Lund3 cforce field. This file contains the function enylun, which in turn4 ccalls all the terms in the energy function. The terms Bias (ebias),5 cHydrogen bonds (ehbmm and ehbms), Hydrophobicity (ehp) and the6 cExcluded volume (eexvol and eloexv) are also implemented in this7 cfile.8 c 9 cCopyright 2007 Frank Eisenmenger, U.H.E. Hansmann,10 cJan H. Meinke, Sandipan Mohanty11 c 1 ! ******************************************************************* 2 ! SMMP version of Anders Irback's force field, to be called the Lund 3 ! force field. This file contains the function enylun, which in turn 4 ! calls all the terms in the energy function. The terms Bias (ebias), 5 ! Hydrogen bonds (ehbmm and ehbms), Hydrophobicity (ehp) and the 6 ! Excluded volume (eexvol and eloexv) are also implemented in this 7 ! file. 8 ! 9 ! Copyright 2007 Frank Eisenmenger, U.H.E. Hansmann, 10 ! Jan H. Meinke, Sandipan Mohanty 11 ! 12 12 subroutine init_lundff 13 13 include 'INCL.H' … … 17 17 18 18 print *,'initializing Lund forcefield' 19 cSome parameters in the Lund force field.20 cThe correspondence between internal energy scale and kcal/mol19 ! Some parameters in the Lund force field. 20 ! The correspondence between internal energy scale and kcal/mol 21 21 eunit=1.3315 22 cBias22 ! Bias 23 23 kbias=100.0*eunit 24 cprint *,'Bias'25 cHydrogen bonds24 ! print *,'Bias' 25 ! Hydrogen bonds 26 26 epshb1=3.1*eunit 27 27 epshb2=2.0*eunit … … 37 37 cacc=(1.0/1.23)**powb 38 38 csacc=(1.0/1.25)**powb 39 cprint *,'Hydrogen bonds'40 cHydrophobicity41 cprint *,'Hydrophobicity with nhptyp = ',nhptyp39 ! print *,'Hydrogen bonds' 40 ! Hydrophobicity 41 ! print *,'Hydrophobicity with nhptyp = ',nhptyp 42 42 43 43 hpstrg(1)=0.0*eunit … … 61 61 call tolost(mynm) 62 62 if ((mynm.eq.'pro').or.(mynm.eq.'cpro') 63 #.or.(mynm.eq.'cpru').or.(mynm.eq.'prou')64 #.or.(mynm.eq.'pron').or.(mynm.eq.'pro+')) then63 & .or.(mynm.eq.'cpru').or.(mynm.eq.'prou') 64 & .or.(mynm.eq.'pron').or.(mynm.eq.'pro+')) then 65 65 prlvr=.true. ! residue i is a proline variant 66 66 else … … 125 125 endif 126 126 enddo 127 cprint *,'Hydrophobicity'128 129 cExcluded volume and local pair excluded volume terms127 ! print *,'Hydrophobicity' 128 129 ! Excluded volume and local pair excluded volume terms 130 130 exvk=0.1*eunit 131 131 exvcut=4.3 … … 158 158 enddo 159 159 enddo 160 cprint *,'Local pair excluded volume constants'160 ! print *,'Local pair excluded volume constants' 161 161 162 162 exvlam=0.75 … … 171 171 enddo 172 172 enddo 173 cprint *,'General excluded volume constants'174 175 cInitialization of the connections matrix matcon(i,j). The index176 ci runs from -mxconr to +mxconr, and j from 1 to mxat.177 cmatcon(i2-i1,i1) = 0, if the distance between atoms i1 and i2 is fixed178 c= 2, if atoms i1 and i2 are separated by 3 covalent179 cbonds and their distance can change180 c= 1, for all other pairs181 cif abs(i2-i1) > mxconr, the atoms are assumed to be separated by182 cmany bonds, and with no restriction on their distances. On a protein183 cmolecule made of natural amino acids, atoms with indices separated184 cby more than 35 can not be connected by three covalent bonds.173 ! print *,'General excluded volume constants' 174 175 ! Initialization of the connections matrix matcon(i,j). The index 176 ! i runs from -mxconr to +mxconr, and j from 1 to mxat. 177 ! matcon(i2-i1,i1) = 0, if the distance between atoms i1 and i2 is fixed 178 ! = 2, if atoms i1 and i2 are separated by 3 covalent 179 ! bonds and their distance can change 180 ! = 1, for all other pairs 181 ! if abs(i2-i1) > mxconr, the atoms are assumed to be separated by 182 ! many bonds, and with no restriction on their distances. On a protein 183 ! molecule made of natural amino acids, atoms with indices separated 184 ! by more than 35 can not be connected by three covalent bonds. 185 185 186 186 do i=1,mxat … … 190 190 matcon(0,i)=0 191 191 enddo 192 ccontinued...192 ! continued... 193 193 do iml=1,ntlml 194 194 do iat1=iatrs1(irsml1(iml)),iatrs2(irsml2(iml)) … … 224 224 enddo 225 225 226 cprint *,'going to initialize connections for first residue'227 cprint *,'iN,iCa,iC =',iN(irsml1(iml)),228 c# iCa(irsml1(iml)),iC(irsml1(iml))226 ! print *,'going to initialize connections for first residue' 227 ! print *,'iN,iCa,iC =',iN(irsml1(iml)), 228 ! # iCa(irsml1(iml)),iC(irsml1(iml)) 229 229 do iat1=iN(irsml1(iml))+1,iCa(irsml1(iml))-1 230 cprint *,'connections for iat1 = ',iat1230 ! print *,'connections for iat1 = ',iat1 231 231 matcon(iat1-iN(irsml1(iml)),iN(irsml1(iml)))=0 232 232 matcon(iN(irsml1(iml))-iat1,iat1)=0 … … 242 242 enddo 243 243 244 cBelow: for certain residues, some atoms separated by 3 or more bonds245 cdo not change distance. So, the connection matrix term for such pairs246 cshould be zero.244 ! Below: for certain residues, some atoms separated by 3 or more bonds 245 ! do not change distance. So, the connection matrix term for such pairs 246 ! should be zero. 247 247 248 248 do irs=irsml1(iml),irsml2(iml) … … 260 260 call tolost(mynm) 261 261 if ((mynm.eq.'pro').or.(mynm.eq.'cpro') 262 #.or.(mynm.eq.'cpru').or.(mynm.eq.'prou')263 #.or.(mynm.eq.'pron').or.(mynm.eq.'pro+')) then262 & .or.(mynm.eq.'cpru').or.(mynm.eq.'prou') 263 & .or.(mynm.eq.'pron').or.(mynm.eq.'pro+')) then 264 264 prlvr=.true. ! residue i is a proline variant 265 265 else … … 275 275 enddo 276 276 else if ((mynm.eq.'his').or.(mynm.eq.'hise') 277 #.or.(mynm.eq.'hisd').or.(mynm.eq.'his+')) then277 & .or.(mynm.eq.'hisd').or.(mynm.eq.'his+')) then 278 278 do iat1=iatoff+iatrs1(irs)+7,iatrs2(irs)-2-iatmrg 279 279 do iat2=iat1+1,iatrs2(irs)-2-iatmrg … … 306 306 enddo 307 307 else if (prlvr) then 308 cProline. Many more distances are fixed because of the fixed309 cphi angle308 ! Proline. Many more distances are fixed because of the fixed 309 ! phi angle 310 310 do iat1=iatoff+iatrs1(irs),iatrs2(irs)-2-iatmrg 311 311 do iat2=iat1+1,iatrs2(irs)-2-iatmrg … … 314 314 enddo 315 315 enddo 316 cdistances to the C' atom of the previous residue are also fixed316 ! distances to the C' atom of the previous residue are also fixed 317 317 if (irs.ne.irsml1(iml)) then 318 318 iat1=iowat(iatrs1(irs)) … … 325 325 enddo 326 326 enddo 327 cfinished initializing matrix conmat328 cprint *,'Connections matrix'329 330 cLocal pair excluded volume327 ! finished initializing matrix conmat 328 ! print *,'Connections matrix' 329 330 ! Local pair excluded volume 331 331 do i=1,mxml 332 332 ilpst(i)=1 … … 342 342 do iat2=iat1+1,iatrs2(irsml2(iml)) 343 343 if ((iat2-iat1.le.mxconr).and. 344 #matcon(iat2-iat1,iat1).eq.2) then344 & matcon(iat2-iat1,iat1).eq.2) then 345 345 ilp=ilp+1 346 346 lcp1(ilp)=iat1 … … 354 354 ilpst(iml+1)=ilp+1 355 355 endif 356 cprint *,'molecule ',iml,' lc pair range ',ilpst(iml),ilpnd(iml)357 cprint *,'local pair list'356 ! print *,'molecule ',iml,' lc pair range ',ilpst(iml),ilpnd(iml) 357 ! print *,'local pair list' 358 358 do lci=ilpst(iml),ilpnd(iml) 359 359 iat1=lcp1(lci) 360 360 iat2=lcp2(lci) 361 cprint *,lci,iat1,iat2,matcon(iat2-iat1,iat1)361 ! print *,lci,iat1,iat2,matcon(iat2-iat1,iat1) 362 362 enddo 363 363 enddo … … 375 375 ityp=1 376 376 else if ((mynm.eq.'val').or.(mynm.eq.'leu').or.(mynm.eq.'ile') 377 #.or.(mynm.eq.'met').or.(mynm.eq.'pro').or.(mynm.eq.'cpro')378 #.or.(mynm.eq.'cpru').or.(mynm.eq.'prou')379 #.or.(mynm.eq.'pron').or.(mynm.eq.'pro+')) then377 & .or.(mynm.eq.'met').or.(mynm.eq.'pro').or.(mynm.eq.'cpro') 378 & .or.(mynm.eq.'cpru').or.(mynm.eq.'prou') 379 & .or.(mynm.eq.'pron').or.(mynm.eq.'pro+')) then 380 380 ityp=2 381 381 else if ((mynm.eq.'phe').or.(mynm.eq.'tyr').or.(mynm.eq.'trp')) 382 #then382 & then 383 383 ityp=3 384 384 endif … … 408 408 return 409 409 end 410 cEvaluates backbone backbone hydrogen bond strength for residues411 ci and j, taking the donor from residue i and acceptor from residue j410 ! Evaluates backbone backbone hydrogen bond strength for residues 411 ! i and j, taking the donor from residue i and acceptor from residue j 412 412 real*8 function ehbmmrs(i,j) 413 413 include 'INCL.H' … … 424 424 r2=dx*dx+dy*dy+dz*dz 425 425 if (r2.gt.cthb2) then 426 cprint *,'hbmm = 0 ',cthb2,r2,a1,a2,d1,d2427 cprint *,'a1,a2,d1,d2,r2 = ',a1,a2,d1,d2,r2,sighb2,cthb426 ! print *,'hbmm = 0 ',cthb2,r2,a1,a2,d1,d2 427 ! print *,'a1,a2,d1,d2,r2 = ',a1,a2,d1,d2,r2,sighb2,cthb 428 428 ehbmmrs=0 429 429 return … … 432 432 cb=(xat(a2)-xat(a1))*dx+(yat(a2)-yat(a1))*dy+(zat(a2)-zat(a1))*dz 433 433 if (powa.gt.0.and.ca.le.0) then 434 cprint *,'hbmm, returning 0 because of angle a'434 ! print *,'hbmm, returning 0 because of angle a' 435 435 ehbmmrs=0 436 436 return 437 437 endif 438 438 if (powb.gt.0.and.cb.le.0) then 439 cprint *,'hbmm, returning 0 because of angle b'439 ! print *,'hbmm, returning 0 because of angle b' 440 440 ehbmmrs=0 441 441 return … … 446 446 evlu=((ca*ca/r2)**(0.5*powa))*((cb*cb/r2)**(0.5*powb)) 447 447 evlu=evlu*(r6*(5*r6-6*r4)+alhb+blhb*r2) 448 cprint *,'found hbmm contribution ',evlu448 ! print *,'found hbmm contribution ',evlu 449 449 ehbmmrs=epshb1*evlu 450 450 return 451 451 end 452 452 real*8 function enylun(nml) 453 cnml = 1 .. ntlml. No provision exists to handle out of range values454 cfor nml inside this function.453 ! nml = 1 .. ntlml. No provision exists to handle out of range values 454 ! for nml inside this function. 455 455 include 'INCL.H' 456 456 include 'incl_lund.h' … … 462 462 eyvr=0.0 ! Local pair excluded volume, in a sense a variable potential 463 463 eyvw=0.0 ! atom-atom repulsion, excluded volume 464 catom-atom repulsion is calculated on a system wide basis, instead of465 cmolecule by molecule for efficiency. Look into function exvlun.464 ! atom-atom repulsion is calculated on a system wide basis, instead of 465 ! molecule by molecule for efficiency. Look into function exvlun. 466 466 467 467 istres=irsml1(nml) 468 468 indres=irsml2(nml) 469 469 470 cFirst, all terms that can be calculated on a residue by residue basis470 ! First, all terms that can be calculated on a residue by residue basis 471 471 do i=istres,indres 472 472 mynm=seq(i) 473 473 call tolost(mynm) 474 474 if ((mynm.eq.'pro').or.(mynm.eq.'cpro') 475 #.or.(mynm.eq.'cpru').or.(mynm.eq.'prou')476 #.or.(mynm.eq.'pron').or.(mynm.eq.'pro+')) then475 & .or.(mynm.eq.'cpru').or.(mynm.eq.'prou') 476 & .or.(mynm.eq.'pron').or.(mynm.eq.'pro+')) then 477 477 prlvr=.true. ! residue i is a proline variant 478 478 else … … 480 480 endif 481 481 482 cBias, or local electrostatic term. Excluded from the list are483 cresidues at the ends of the chain, glycine and all proline variants482 ! Bias, or local electrostatic term. Excluded from the list are 483 ! residues at the ends of the chain, glycine and all proline variants 484 484 if ((i.ne.istres).and.(i.ne.indres).and. 485 #.not.prlvr.and.mynm.ne.'gly') then485 & .not.prlvr.and.mynm.ne.'gly') then 486 486 eyel=eyel+ebiasrs(i) 487 487 endif 488 cBackbone--backbone hydrogen bonds488 ! Backbone--backbone hydrogen bonds 489 489 shbm1=1.0 490 490 shbm2=1.0 491 491 if ((i.eq.istres).or.(i.eq.indres)) shbm1=0.5 492 cResidue i contributes the donor, and j, the acceptor, so both i and493 cj run over the whole set of amino acids.494 cNo terms for residue i, if it is a proline variant.492 ! Residue i contributes the donor, and j, the acceptor, so both i and 493 ! j run over the whole set of amino acids. 494 ! No terms for residue i, if it is a proline variant. 495 495 if (.not.prlvr) then 496 496 do j=istres,indres … … 500 500 enddo 501 501 endif 502 cHydrophobicity, only if residue i is hydrophobic to start with502 ! Hydrophobicity, only if residue i is hydrophobic to start with 503 503 ihpi=ihptype(i) 504 504 if (ihpi.ge.0) then 505 cUnlike hydrogen bonds, the hydrophobicity potential is symmetric506 cin i and j. So, the loop for j runs from i+1 to the end.505 ! Unlike hydrogen bonds, the hydrophobicity potential is symmetric 506 ! in i and j. So, the loop for j runs from i+1 to the end. 507 507 508 508 do j=i+1,indres … … 518 518 enddo 519 519 520 cTerms that are not calculated residue by residue ...521 522 cLocal pair or third-neighbour excluded volume523 cNumerically this is normally the term with largest positive524 ccontribution to the energy in an equilibrated stystem.520 ! Terms that are not calculated residue by residue ... 521 522 ! Local pair or third-neighbour excluded volume 523 ! Numerically this is normally the term with largest positive 524 ! contribution to the energy in an equilibrated stystem. 525 525 526 526 i1=ilpst(nml) … … 546 546 etmp=etmp+etmp1 547 547 endif 548 cprint *,'pair : ',iat1,iat2,' contribution ',etmp1549 cprint *,exvcut2,r2548 ! print *,'pair : ',iat1,iat2,' contribution ',etmp1 549 ! print *,exvcut2,r2 550 550 enddo 551 551 eyvr=exvk*etmp … … 569 569 b2=20.25 570 570 a2=12.25 571 cihp1=ihptype(i1)572 cihp2=ihptype(i2)571 ! ihp1=ihptype(i1) 572 ! ihp2=ihptype(i2) 573 573 if ((ihp1.le.0).or.(ihp2.le.0)) then 574 574 ehp=0.0 … … 609 609 include 'INCL.H' 610 610 include 'incl_lund.h' 611 cFor multi-chain systems it makes little sense to split the calculation612 cof this term into an 'interaction part' and a contribution from613 cindividual molecules. So, normally this should always be called with614 cargument nml=0. Only for diagnostic reasons, you might want to find615 cthe contribution from one molecule in a multi-chain system assuming616 cthere was no other molecule.611 ! For multi-chain systems it makes little sense to split the calculation 612 ! of this term into an 'interaction part' and a contribution from 613 ! individual molecules. So, normally this should always be called with 614 ! argument nml=0. Only for diagnostic reasons, you might want to find 615 ! the contribution from one molecule in a multi-chain system assuming 616 ! there was no other molecule. 617 617 dimension isort(mxat),ngbr(mxat),locccl(mxat),incell(mxcell) 618 618 dimension icell(mxat) … … 626 626 627 627 eyvw=0.0 628 cThe beginning part of this implementation is very similar to the629 cassignment of cells to the atoms during calculation of solvent630 caccessible surface area. So, much of that part is similar. But631 cunlike the accessible surface calculations, this term is symmetric632 cin any two participating atoms. So, the part after the assignment633 cof cells differs even in the structure of the code.628 ! The beginning part of this implementation is very similar to the 629 ! assignment of cells to the atoms during calculation of solvent 630 ! accessible surface area. So, much of that part is similar. But 631 ! unlike the accessible surface calculations, this term is symmetric 632 ! in any two participating atoms. So, the part after the assignment 633 ! of cells differs even in the structure of the code. 634 634 635 635 do i=1,mxcell 636 636 incell(i)=0 637 637 enddo 638 cprint *,'evaluating general excluded volume :',istat,',',indat639 cFind minimal containing box638 ! print *,'evaluating general excluded volume :',istat,',',indat 639 ! Find minimal containing box 640 640 xmin=xat(istat) 641 641 ymin=yat(istat) … … 666 666 sizey=ymax-ymin 667 667 sizez=zmax-zmin 668 cNumber of cells along each directions that fit into the box.668 ! Number of cells along each directions that fit into the box. 669 669 ndx=int(sizex/exvcutg)+1 670 670 ndy=int(sizey/exvcutg)+1 … … 673 673 nxy=ndx*ndy 674 674 ncell=nxy*ndz 675 cprint *,'Number of cells along x,y,z = ',ndx,',',ndy,',',ndz675 ! print *,'Number of cells along x,y,z = ',ndx,',',ndy,',',ndz 676 676 if (ncell.ge.mxcell) then 677 677 print *,'exvlun> required number of cells',ncell, 678 #' exceeded the limit ',mxcell678 & ' exceeded the limit ',mxcell 679 679 print *,'recompile with a higher mxcell.' 680 680 stop 681 681 endif 682 cExpand box to contain an integral number of cells along each direction682 ! Expand box to contain an integral number of cells along each direction 683 683 shiftx=(dble(ndx)*exvcutg-sizex)/2.0 684 684 shifty=(dble(ndy)*exvcutg-sizey)/2.0 … … 691 691 zmax=zmax+shiftz 692 692 693 cSet occupied cells to zero. Note that the maximum number of occupied694 ccells is the number of atoms in the system.693 ! Set occupied cells to zero. Note that the maximum number of occupied 694 ! cells is the number of atoms in the system. 695 695 nocccl=0 696 696 do i=1,mxat … … 698 698 enddo 699 699 700 cPut atoms in cells700 ! Put atoms in cells 701 701 do j=istat,indat 702 702 mx=min(int(max((xat(j)-xmin)/exvcutg,0.0d0)),ndx-1) … … 710 710 else 711 711 if (incell(icellj).eq.0) then 712 cpreviously unoccupied cell712 ! previously unoccupied cell 713 713 nocccl=nocccl+1 714 714 locccl(nocccl)=icellj … … 717 717 endif 718 718 enddo 719 cprint *,'finished assigning cells. nocccl = ',nocccl720 cCummulative occupancy of i'th cell719 ! print *,'finished assigning cells. nocccl = ',nocccl 720 ! Cummulative occupancy of i'th cell 721 721 do i=1,ncell 722 722 incell(i+1)=incell(i+1)+incell(i) 723 723 enddo 724 cprint *,'finished making cumulative cell sums'725 cSorting atoms by their cell index724 ! print *,'finished making cumulative cell sums' 725 ! Sorting atoms by their cell index 726 726 do i=istat,indat 727 727 j=icell(i) … … 730 730 incell(j)=jj-1 731 731 enddo 732 cprint *,'sorted atoms by cell index'732 ! print *,'sorted atoms by cell index' 733 733 etmp=0.0 734 734 do icl=1,nocccl 735 cloop through occupied cells735 ! loop through occupied cells 736 736 lcell=locccl(icl) 737 737 ix=mod(lcell-1,ndx) 738 738 iy=(mod(lcell-1,nxy)-ix)/ndx 739 739 iz=(lcell-1-ix-ndx*iy)/nxy 740 cprint *,'icl=',icl,'absolute index of cell = ',lcell741 cprint *,'iz,iy,ix = ',iz,iy,ix742 cfind all atoms in current cell and all its forward-going neighbours740 ! print *,'icl=',icl,'absolute index of cell = ',lcell 741 ! print *,'iz,iy,ix = ',iz,iy,ix 742 ! find all atoms in current cell and all its forward-going neighbours 743 743 nex=min(ix+1,ndx-1) 744 744 ney=min(iy+1,ndy-1) … … 751 751 jcl=jx+ndx*jy+nxy*jz+1 752 752 do ii=incell(jcl)+1,incell(jcl+1) 753 ccount the total number of neighbours753 ! count the total number of neighbours 754 754 nngbr=nngbr+1 755 755 if (jx.eq.ix.and.jy.eq.iy.and.jz.eq.iz) then 756 ccount how many neighbours are from the same cell756 ! count how many neighbours are from the same cell 757 757 nsame=nsame+1 758 758 endif … … 762 762 enddo 763 763 enddo 764 cA few more cells need to be searched, so that we cover 13 of the 26765 cneighbouring cells.766 c1764 ! A few more cells need to be searched, so that we cover 13 of the 26 765 ! neighbouring cells. 766 ! 1 767 767 jx=ix+1 768 768 jy=iy … … 773 773 ngbr(nngbr)=isort(ii) 774 774 enddo 775 c2775 ! 2 776 776 jx=ix 777 777 jy=iy-1 … … 782 782 ngbr(nngbr)=isort(ii) 783 783 enddo 784 c3784 ! 3 785 785 jx=ix-1 786 786 jy=iy+1 … … 791 791 ngbr(nngbr)=isort(ii) 792 792 enddo 793 c4793 ! 4 794 794 jx=ix+1 795 795 jy=iy+1 … … 800 800 ngbr(nngbr)=isort(ii) 801 801 enddo 802 c5802 ! 5 803 803 jx=ix+1 804 804 jy=iy-1 … … 809 809 ngbr(nngbr)=isort(ii) 810 810 enddo 811 c6811 ! 6 812 812 jx=ix+1 813 813 jy=iy-1 … … 819 819 enddo 820 820 821 cprint *,'atoms in same cell ',nsame822 cprint *,'atoms in neighbouring cells ',nngbr821 ! print *,'atoms in same cell ',nsame 822 ! print *,'atoms in neighbouring cells ',nngbr 823 823 do i1=1,nsame 824 cOver all atoms from the original cell824 ! Over all atoms from the original cell 825 825 iat1=ngbr(i1) 826 826 do i2=i1,nngbr 827 cOver all atoms in the original+neighbouring cells827 ! Over all atoms in the original+neighbouring cells 828 828 iat2=ngbr(i2) 829 829 xij=xat(iat1)-xat(iat2) … … 834 834 if (r2.le.exvcutg2) then 835 835 if (abs(iat2-iat1).gt.mxconr.or. 836 #matcon(iat2-iat1,iat1).eq.1) then836 & matcon(iat2-iat1,iat1).eq.1) then 837 837 iatt1=ityat(iat1) 838 838 iatt2=ityat(iat2) … … 840 840 r6=r6*r6*r6 841 841 etmp1=r6*r6+asaexv(iatt1,iatt2) 842 #+bsaexv(iatt1,iatt2)*r2842 & +bsaexv(iatt1,iatt2)*r2 843 843 etmp=etmp+etmp1 844 cif (etmp1.ge.2000) then845 cprint *,'contribution ',iat1,iat2,etmp1846 ccall outpdb(1,'EXAMPLES/clash.pdb')847 cstop848 cendif844 ! if (etmp1.ge.2000) then 845 ! print *,'contribution ',iat1,iat2,etmp1 846 ! call outpdb(1,'EXAMPLES/clash.pdb') 847 ! stop 848 ! endif 849 849 endif 850 850 endif … … 852 852 enddo 853 853 enddo 854 cirs=1855 cdo iat=iatrs1(irs),iatrs2(irs)856 cdo j=-mxconr,mxconr857 cprint *,iat,j,':',matcon(j,iat)858 cenddo859 cenddo860 cirs=irsml2(1)861 cdo iat=iatrs1(irs),iatrs2(irs)862 cdo j=-mxconr,mxconr863 cprint *,iat,j,':',matcon(j,iat)864 cenddo865 cenddo854 ! irs=1 855 ! do iat=iatrs1(irs),iatrs2(irs) 856 ! do j=-mxconr,mxconr 857 ! print *,iat,j,':',matcon(j,iat) 858 ! enddo 859 ! enddo 860 ! irs=irsml2(1) 861 ! do iat=iatrs1(irs),iatrs2(irs) 862 ! do j=-mxconr,mxconr 863 ! print *,iat,j,':',matcon(j,iat) 864 ! enddo 865 ! enddo 866 866 867 867 eyvw=exvk*etmp … … 871 871 872 872 real*8 function exvbrfc() 873 cBrute force excluded volume evaluation873 ! Brute force excluded volume evaluation 874 874 include 'INCL.H' 875 875 include 'incl_lund.h' … … 887 887 if (r2.le.exvcutg2) then 888 888 if (abs(iat2-iat1).gt.mxconr.or. 889 #matcon(iat2-iat1,iat1).eq.1) then889 & matcon(iat2-iat1,iat1).eq.1) then 890 890 iatt1=ityat(iat1) 891 891 iatt2=ityat(iat2) … … 893 893 r6=r6*r6*r6 894 894 etmp1=r6*r6+asaexv(iatt1,iatt2) 895 #+bsaexv(iatt1,iatt2)*r2895 & +bsaexv(iatt1,iatt2)*r2 896 896 etmp=etmp+etmp1 897 897 if (iat1.eq.43.and.iat2.eq.785) then … … 903 903 print *,'bsa = ',bsaexv(iatt1,iatt2) 904 904 905 ccall outpdb(1,'EXAMPLES/clash.pdb')906 cstop905 ! call outpdb(1,'EXAMPLES/clash.pdb') 906 ! stop 907 907 endif 908 908 else 909 cprint *,'atoms ', iat1,' and ',iat2,' were close',910 c# 'but matcon is ',matcon(iat2-iat1,iat1)909 ! print *,'atoms ', iat1,' and ',iat2,' were close', 910 ! # 'but matcon is ',matcon(iat2-iat1,iat1) 911 911 endif 912 912 endif
Note:
See TracChangeset
for help on using the changeset viewer.