From 03f945f08803ac33d94abb35d001684a49080647 Mon Sep 17 00:00:00 2001 From: Bartlomiej Zaborowski Date: Tue, 2 Oct 2012 17:44:12 +0200 Subject: [PATCH] zmiana do DiL --- source/unres/src_CSA_DiL/COMMON.TORSION | 6 ++--- source/unres/src_CSA_DiL/energy_p_new_barrier.F | 20 ++++++++++----- source/unres/src_CSA_DiL/initialize_p.F | 4 +-- source/unres/src_CSA_DiL/parmread.F | 31 +++++++++++++++-------- 4 files changed, 39 insertions(+), 22 deletions(-) diff --git a/source/unres/src_CSA_DiL/COMMON.TORSION b/source/unres/src_CSA_DiL/COMMON.TORSION index c42ea1d..a51c1a9 100644 --- a/source/unres/src_CSA_DiL/COMMON.TORSION +++ b/source/unres/src_CSA_DiL/COMMON.TORSION @@ -1,9 +1,9 @@ C Torsional constants of the rotation about virtual-bond dihedral angles double precision v1,v2,vlor1,vlor2,vlor3,v0 integer itortyp,ntortyp,nterm,nlor,nterm_old - common/torsion/v0(-maxtor:maxtor,-maxtor:maxtor), - & v1(maxterm,-maxtor:maxtor,-maxtor:maxtor), - & v2(maxterm,-maxtor:maxtor,-maxtor:maxtor), + common/torsion/v0(-maxtor:maxtor,-maxtor:maxtor,2), + & v1(maxterm,-maxtor:maxtor,-maxtor:maxtor,2), + & v2(maxterm,-maxtor:maxtor,-maxtor:maxtor,2), & vlor1(maxlor,maxtor,maxtor), & vlor2(maxlor,maxtor,maxtor),vlor3(maxlor,maxtor,maxtor), & itortyp(-ntyp:ntyp),ntortyp, diff --git a/source/unres/src_CSA_DiL/energy_p_new_barrier.F b/source/unres/src_CSA_DiL/energy_p_new_barrier.F index bb1c8a1..7495d94 100644 --- a/source/unres/src_CSA_DiL/energy_p_new_barrier.F +++ b/source/unres/src_CSA_DiL/energy_p_new_barrier.F @@ -5609,6 +5609,11 @@ c lprn=.true. etors_ii=0.0D0 itori=itortyp(itype(i-2)) itori1=itortyp(itype(i-1)) + if (iabs(itype(i)).eq.20) then + iblock=2 + else + iblock=1 + endif phii=phi(i) gloci=0.0D0 C Proline-Proline pair is a special case... @@ -5708,9 +5713,9 @@ c lprn=.true. phii=phi(i) gloci=0.0D0 C Regular cosine and sine terms - do j=1,nterm(itori,itori1) - v1ij=v1(j,itori,itori1) - v2ij=v2(j,itori,itori1) + do j=1,nterm(itori,itori1,iblock) + v1ij=v1(j,itori,itori1,iblock) + v2ij=v2(j,itori,itori1,iblock) cosphi=dcos(j*phii) sinphi=dsin(j*phii) etors=etors+v1ij*cosphi+v2ij*sinphi @@ -5725,7 +5730,7 @@ C [v2 cos(phi/2)+v3 sin(phi/2)]^2 + 1 C cosphi=dcos(0.5d0*phii) sinphi=dsin(0.5d0*phii) - do j=1,nlor(itori,itori1) + do j=1,nlor(itori,itori1,iblock) vl1ij=vlor1(j,itori,itori1) vl2ij=vlor2(j,itori,itori1) vl3ij=vlor3(j,itori,itori1) @@ -5738,13 +5743,14 @@ C gloci=gloci+vl1ij*(vl3ij*cosphi-vl2ij*sinphi)*pom enddo C Subtract the constant term - etors=etors-v0(itori,itori1) + etors=etors-v0(itori,itori1,iblock) if (energy_dec) write (iout,'(a6,i5,0pf7.3)') - & 'etor',i,etors_ii-v0(itori,itori1) + & 'etor',i,etors_ii-v0(itori,itori1,iblock) if (lprn) & write (iout,'(2(a3,2x,i3,2x),2i3,6f8.3/26x,6f8.3/)') & restyp(itype(i-2)),i-2,restyp(itype(i-1)),i-1,itori,itori1, - & (v1(j,itori,itori1),j=1,6),(v2(j,itori,itori1),j=1,6) + & (v1(j,itori,itori1,iblock),j=1,6), + & (v2(j,itori,itori1,iblock),j=1,6) gloc(i-3,icg)=gloc(i-3,icg)+wtor*gloci c write (iout,*) 'i=',i,' gloc=',gloc(i-3,icg) enddo diff --git a/source/unres/src_CSA_DiL/initialize_p.F b/source/unres/src_CSA_DiL/initialize_p.F index bc9b520..f9b654d 100644 --- a/source/unres/src_CSA_DiL/initialize_p.F +++ b/source/unres/src_CSA_DiL/initialize_p.F @@ -196,8 +196,8 @@ c call memmon_print_usage() do iblock=1,2 do j=-maxtor,maxtor do k=1,maxterm - v1(k,j,i)=0.0D0 - v2(k,j,i)=0.0D0 + v1(k,j,i,iblock)=0.0D0 + v2(k,j,i,iblock)=0.0D0 enddo enddo enddo diff --git a/source/unres/src_CSA_DiL/parmread.F b/source/unres/src_CSA_DiL/parmread.F index d419945..08126c6 100644 --- a/source/unres/src_CSA_DiL/parmread.F +++ b/source/unres/src_CSA_DiL/parmread.F @@ -451,18 +451,28 @@ C Read torsional parameters C read (itorp,*,end=113,err=113) ntortyp read (itorp,*,end=113,err=113) (itortyp(i),i=1,ntyp) + do iblock=1,2 + do i=-ntyp,-1 + itortyp(i)=-itortyp(-1) + enddo c write (iout,*) 'ntortyp',ntortyp - do i=1,ntortyp - do j=1,ntortyp - read (itorp,*,end=113,err=113) nterm(i,j),nlor(i,j) + do i=0,ntortyp,ntortyp-1 + do j=-ntortyp,ntortyp + read (itorp,*,end=113,err=113) nterm(i,j,iblock), + & nlor(i,j,iblock) + nterm(-i,-j,iblock)=nterm(i,j,iblock) + nlor(-i,-j,iblock)=nlor(i,j,iblock) v0ij=0.0d0 si=-1.0d0 - do k=1,nterm(i,j) - read (itorp,*,end=113,err=113) kk,v1(k,i,j),v2(k,i,j) - v0ij=v0ij+si*v1(k,i,j) + do k=1,nterm(i,j,iblock) + read (itorp,*,end=113,err=113) kk,v1(k,i,j,iblock), + & v2(k,i,j,iblock) + v1(k,-i,-j,iblock)=v1(k,i,j,iblock) + v2(k,-i,-j,iblock)=-v2(k,i,j,iblock) + v0ij=v0ij+si*v1(k,i,j,iblock) si=-si enddo - do k=1,nlor(i,j) + do k=1,nlor(i,j,iblock) read (itorp,*,end=113,err=113) kk,vlor1(k,i,j), & vlor2(k,i,j),vlor3(k,i,j) v0ij=v0ij+vlor1(k,i,j)/(1+vlor3(k,i,j)**2) @@ -477,11 +487,12 @@ c write (iout,*) 'ntortyp',ntortyp do j=1,ntortyp write (iout,*) 'ityp',i,' jtyp',j write (iout,*) 'Fourier constants' - do k=1,nterm(i,j) - write (iout,'(2(1pe15.5))') v1(k,i,j),v2(k,i,j) + do k=1,nterm(i,j,iblock) + write (iout,'(2(1pe15.5))') v1(k,i,j,iblock), + & v2(k,i,j,iblock) enddo write (iout,*) 'Lorenz constants' - do k=1,nlor(i,j) + do k=1,nlor(i,j,iblock) write (iout,'(3(1pe15.5))') & vlor1(k,i,j),vlor2(k,i,j),vlor3(k,i,j) enddo -- 1.7.9.5