X-Git-Url: http://mmka.chem.univ.gda.pl/gitweb/?a=blobdiff_plain;f=source%2Funres%2Fsrc_MD%2Fintcartderiv.F;h=c4bf31c43be2cf401c4fecc5b390d6707b63b04c;hb=ffd0e6dcc64b1ef30773e02b4ef72c1b2455fea5;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..c4bf31c 100644 --- a/source/unres/src_MD/intcartderiv.F +++ b/source/unres/src_MD/intcartderiv.F @@ -52,7 +52,7 @@ c We need dtheta(:,:,i-1) to compute dphi(:,:,i) #else do i=3,nres #endif - if ((itype(i-1).ne.10).and.(itype(i-1).ne.21)) then + if ((itype(i-1).ne.10).and.(itype(i-1).ne.ntyp1)) then cost1=dcos(omicron(1,i)) sint1=sqrt(1-cost1*cost1) cost2=dcos(omicron(2,i)) @@ -61,11 +61,11 @@ c We need dtheta(:,:,i-1) to compute dphi(:,:,i) CC Calculate derivative over first omicron (Cai-2,Cai-1,SCi-1) dcosomicron(j,1,1,i)=-(dc_norm(j,i-1+nres)+ & cost1*dc_norm(j,i-2))/ - & vbld(i-1) - domicron(j,1,1,i)=-1/sint1*dcosomicron(j,1,1,i) + & vbld(i-1) + domicron(j,1,1,i)=-1.0/sint1*dcosomicron(j,1,1,i) dcosomicron(j,1,2,i)=-(dc_norm(j,i-2) & +cost1*(dc_norm(j,i-1+nres)))/ - & vbld(i-1+nres) + & vbld(i-1+nres) domicron(j,1,2,i)=-1/sint1*dcosomicron(j,1,2,i) CC Calculate derivative over second omicron Sci-1,Cai-1 Cai CC Looks messy but better than if in loop @@ -151,11 +151,11 @@ c Obtaining the gamma derivatives from cosine derivative 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 - if ((itype(i-2).eq.21).or.(itype(i-2).eq.10)) cycle + if ((itype(i-2).eq.ntyp1).or.(itype(i-2).eq.10)) cycle cc dtauangle(j,intertyp,dervityp,residue number) cc INTERTYP=1 SC...Ca...Ca..Ca c the conventional case @@ -226,11 +226,11 @@ 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 - if ((itype(i-1).eq.21).or.(itype(i-1).eq.10)) cycle + if ((itype(i-1).eq.ntyp1).or.(itype(i-1).eq.10)) cycle c the conventional case sint=dsin(omicron(1,i)) sint1=dsin(theta(i-1)) @@ -291,7 +291,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,13 +300,13 @@ 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 c the conventional case - if ((itype(i-1).eq.21).or.(itype(i-1).eq.10).or. - &(itype(i-2).eq.21).or.(itype(i-2).eq.10)) cycle + if ((itype(i-1).eq.ntyp1).or.(itype(i-1).eq.10).or. + &(itype(i-2).eq.ntyp1).or.(itype(i-2).eq.10)) cycle sint=dsin(omicron(1,i)) sint1=dsin(omicron(2,i-1)) sing=dsin(tauangle(3,i)) @@ -334,13 +334,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 +352,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 +458,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,