X-Git-Url: http://mmka.chem.univ.gda.pl/gitweb/?a=blobdiff_plain;f=source%2Funres%2Fsrc_MD%2Fintcartderiv.F;h=b9cb9675aebfdf706422fc0b328d540c9ab74888;hb=024c09f85d96670bfddf91ec2305f8a5e2532adc;hp=20680315789a1560a42431f8abfbc812f323ee33;hpb=ba3b4257f01c3857bbae7927ed7815ab7f5419d6;p=unres.git diff --git a/source/unres/src_MD/intcartderiv.F b/source/unres/src_MD/intcartderiv.F index 2068031..b9cb967 100644 --- a/source/unres/src_MD/intcartderiv.F +++ b/source/unres/src_MD/intcartderiv.F @@ -109,7 +109,7 @@ c the conventional case c Obtaining the gamma derivatives from sine derivative if (phi(i).gt.-pi4.and.phi(i).le.pi4.or. & phi(i).gt.pi34.and.phi(i).le.pi.or. - & phi(i).gt.-pi.and.phi(i).le.-pi34) then + & phi(i).ge.-pi.and.phi(i).le.-pi34) then call vecpr(dc_norm(1,i-1),dc_norm(1,i-2),vp1) call vecpr(dc_norm(1,i-3),dc_norm(1,i-1),vp2) call vecpr(dc_norm(1,i-3),dc_norm(1,i-2),vp3) @@ -149,9 +149,14 @@ c Obtaining the gamma derivatives from cosine derivative endif enddo + do i=1,nres-1 + do j=1,3 + dc_norm2(j,i+nres)=-dc_norm(j,i+nres) + enddo + enddo Calculate derivative of Tauangle #ifdef PARINTDER - do i=iphi1_start-1,iphi1_end + do i=itau_start,itau_end #else do i=3,nres #endif @@ -165,10 +170,10 @@ c the conventional case cost=dcos(theta(i)) cost1=dcos(omicron(2,i-1)) cosg=dcos(tauangle(1,i)) - do j=1,3 - dc_norm2(j,i-2+nres)=-dc_norm(j,i-2+nres) +C do j=1,3 +C dc_norm2(j,i-2+nres)=-dc_norm(j,i-2+nres) cc write(iout,*) dc_norm2(j,i-2+nres),"dcnorm" - enddo +C enddo scalp=scalar(dc_norm2(1,i-2+nres),dc_norm(1,i-1)) fac0=1.0d0/(sint1*sint) fac1=cost*fac0 @@ -194,7 +199,7 @@ c Obtaining the gamma derivatives from sine derivative dsintau(j,1,2,i)= & -sing*(ctgt1*domicron(j,2,1,i-1)+ctgt*dtheta(j,1,i)) & -(fac0*vp2(j)+sing*dc_norm(j,i-2))*vbld_inv(i-1) -c write(iout,*) "dsintau", dsintau(j,1,2,i) +c write(iout,*) "dsintau", dsintau(j,1,1,i),dsintau(j,1,2,i) dtauangle(j,1,2,i)=cosg_inv*dsintau(j,1,2,i) c Bug fixed 3/24/05 (AL) dsintau(j,1,3,i)=-sing*ctgt*dtheta(j,2,i) @@ -221,12 +226,14 @@ c write (iout,*) "else",i enddo endif c do k=1,3 -c write(iout,*) "tu",i,k,(dtauangle(j,1,k,i),j=1,3) +c write(iout,*) "tu",1,i,k,(dtauangle(j,1,k,i),j=1,3) +c write(iout,*) "tu",2,i,k,(dtauangle(j,2,k,i),j=1,3) +c write(iout,*) "tu",3,i,k,(dtauangle(j,3,k,i),j=1,3) c enddo enddo CC Second case Ca...Ca...Ca...SC #ifdef PARINTDER - do i=iphi1_start,iphi1_end + do i=itau_start,itau_end #else do i=4,nres #endif @@ -291,7 +298,7 @@ c Obtaining the gamma derivatives from cosine derivative & dcosomicron(j,1,2,i)-fac0*(dc_norm(j,i-3)-scalp* & dc_norm(j,i-1+nres))/vbld(i-1+nres) dtauangle(j,2,3,i)=-1/sing*dcostau(j,2,3,i) - write(iout,*) i,j,"else", dtauangle(j,2,3,i) +c write(iout,*) i,j,"else", dtauangle(j,2,3,i) enddo endif enddo @@ -300,7 +307,7 @@ c Obtaining the gamma derivatives from cosine derivative CCC third case SC...Ca...Ca...SC #ifdef PARINTDER - do i=iphi1_start-1,iphi1_end + do i=itau_start,itau_end #else do i=3,nres #endif @@ -313,10 +320,10 @@ c the conventional case cost=dcos(omicron(1,i)) cost1=dcos(omicron(2,i-1)) cosg=dcos(tauangle(3,i)) - do j=1,3 - dc_norm2(j,i-2+nres)=-dc_norm(j,i-2+nres) +C do j=1,3 +C dc_norm2(j,i-2+nres)=-dc_norm(j,i-2+nres) c dc_norm2(j,i-1+nres)=-dc_norm(j,i-1+nres) - enddo +C enddo scalp=scalar(dc_norm2(1,i-2+nres),dc_norm(1,i-1+nres)) fac0=1.0d0/(sint1*sint) fac1=cost*fac0 @@ -334,13 +341,13 @@ c Obtaining the gamma derivatives from sine derivative ctgt=cost/sint ctgt1=cost1/sint1 cosg_inv=1.0d0/cosg - dsintau(j,3,1,i)=-sing*ctgt1*domicron(j,2,1,i-1) - & -(fac0*vp1(j)+sing*dc_norm2(j,i-2+nres)) + dsintau(j,3,1,i)=-sing*ctgt1*domicron(j,2,2,i-1) + & -(fac0*vp1(j)-sing*dc_norm(j,i-2+nres)) & *vbld_inv(i-2+nres) dtauangle(j,3,1,i)=cosg_inv*dsintau(j,3,1,i) dsintau(j,3,2,i)= - & -sing*(ctgt1*domicron(j,2,2,i-1)+ctgt*domicron(j,1,1,i)) - & -(fac0*vp2(j)+sing*dc_norm(j,i-2))*vbld_inv(i-1+nres) + & -sing*(ctgt1*domicron(j,2,1,i-1)+ctgt*domicron(j,1,1,i)) + & -(fac0*vp2(j)+sing*dc_norm(j,i-2))*vbld_inv(i-1) dtauangle(j,3,2,i)=cosg_inv*dsintau(j,3,2,i) c Bug fixed 3/24/05 (AL) dsintau(j,3,3,i)=-sing*ctgt*domicron(j,1,2,i) @@ -352,18 +359,19 @@ c & +(fac0*vp3(j)-sing*dc_norm(j,i-1))*vbld_inv(i-1) c Obtaining the gamma derivatives from cosine derivative else do j=1,3 - dcostau(j,3,1,i)=fac1*dcosomicron(j,2,1,i-1)+fac3* - & dcostheta(j,1,i-1)-fac0*(dc_norm(j,i-1+nres)-scalp* + dcostau(j,3,1,i)=fac1*dcosomicron(j,2,2,i-1)+fac3* + & dcosomicron(j,2,2,i-1)-fac0*(dc_norm(j,i-1+nres)-scalp* & dc_norm2(j,i-2+nres))/vbld(i-2+nres) dtauangle(j,3,1,i)=-1/sing*dcostau(j,3,1,i) - dcostau(j,3,2,i)=fac1*dcosomicron(j,2,2,i-1)+fac2* - & dcosomicron(j,1,1,i)+fac3*dcosomicron(j,2,2,i-1)+fac4* + dcostau(j,3,2,i)=fac1*dcosomicron(j,2,1,i-1)+fac2* + & dcosomicron(j,1,1,i)+fac3*dcosomicron(j,2,1,i-1)+fac4* & dcosomicron(j,1,1,i) dtauangle(j,3,2,i)=-1/sing*dcostau(j,3,2,i) dcostau(j,3,3,i)=fac2*dcosomicron(j,1,2,i)+fac4* - & dcostau(j,3,2,i)-fac0*(dc_norm2(j,i-2+nres)-scalp* + & dcosomicron(j,1,2,i)-fac0*(dc_norm2(j,i-2+nres)-scalp* & dc_norm(j,i-1+nres))/vbld(i-1+nres) dtauangle(j,3,3,i)=-1/sing*dcostau(j,3,3,i) +c write(iout,*) "else",i enddo endif enddo @@ -457,12 +465,12 @@ c obtaining the derivatives of omega from cosines #if defined(MPI) && defined(PARINTDER) if (nfgtasks.gt.1) then #ifdef DEBUG -cd write (iout,*) "Gather dtheta" + write (iout,*) "Gather dtheta" cd call flush(iout) - write (iout,*) "dtheta before gather" - do i=1,nres - write (iout,'(i3,3(3f8.5,3x))') i,((dtheta(j,k,i),k=1,3),j=1,2) - enddo +c write (iout,*) "dtheta before gather" +c do i=1,nres +c write (iout,'(i3,3(3f8.5,3x))') i,((dtheta(j,k,i),k=1,3),j=1,2) +c enddo #endif call MPI_Gatherv(dtheta(1,1,ithet_start),ithet_count(fg_rank), & MPI_THET,dtheta(1,1,1),ithet_count(0),ithet_displ(0),MPI_THET,