diff --git a/src/analyz/ana_groups.F b/src/analyz/ana_groups.F index 84a6a60d92..3a4cfdfe82 100644 --- a/src/analyz/ana_groups.F +++ b/src/analyz/ana_groups.F @@ -1,6 +1,6 @@ subroutine ana_groups(card,sgmnam,imol,isel,wt,x) c -c $Id: ana_groups.F,v 1.13 2003-12-15 20:25:40 d3j191 Exp $ +c $Id: ana_groups.F,v 1.14 2006-11-10 22:01:11 d3j191 Exp $ c implicit none c @@ -26,6 +26,7 @@ c + (rgroups(ngroups,i),i=1,2) 1001 format(4i7,i5,i3,2f12.6) endif + print*,'++++++++++',igroups(ngroups,5) c filgrp=card(68:80) if(filgrp(1:1).ne.' ') then @@ -37,6 +38,8 @@ c + call ana_grpdis(sgmnam,imol,isel,wt,x,ngroups) if(igroups(ngroups,5).eq.4) + call ana_grpcogang(sgmnam,imol,isel,wt,x,ngroups) + if(igroups(ngroups,5).eq.5) + + call ana_grpvectors(sgmnam,imol,isel,wt,x,ngroups) ngroups=ngroups-1 close(unit=lfngrp) endif @@ -45,7 +48,7 @@ c end subroutine ana_group(card,sgmnam,imol,isel,wt,x,iwrk) c -c $Id: ana_groups.F,v 1.13 2003-12-15 20:25:40 d3j191 Exp $ +c $Id: ana_groups.F,v 1.14 2006-11-10 22:01:11 d3j191 Exp $ c implicit none c @@ -137,6 +140,91 @@ c endif 2 continue 1 continue +c + write(lfngrp,1002) 0 + 1002 format(i5) +c + return + end + subroutine ana_grpvectors(sgmnam,imol,isel,wt,x,igr) +c + implicit none +c +#include "ana_common.fh" +#include "global.fh" +#include "mafdecls.fh" +#include "msgids.fh" +c + character*16 sgmnam(nsa) + real*8 wt(nsa) + integer isel(nsa),igr,imol(msa) + real*8 x(nsa,3),vi(3),vj(3) +c + integer igrp,jgrp + integer i,j,jfrom,ia,ja,number + real*8 dist,dx,dy,dz,dot +c + igrp=igroups(igr,1) + jgrp=igroups(igr,2) + print*,'igrp,jgrp=',igrp,jgrp +c + number=0 +c + if(ldef(igrp).lt.0) return +c + write(lfngrp,1000) igr,igroups(igr,5) + 1000 format(2i5) +c + if(igrp.eq.jgrp) + + call md_abort('vectors: single atom list',0) + if(ldef(igrp).ne.ldef(jgrp)) + + call md_abort('vectors: unequal atom lists',0) + ito=ldef(igrp) + do 1 i=1,ito + ia=idef(igrp,i) + ja=idef(jgrp,i) + dx=abs(x(ia,1)-x(ja,1)) + dy=abs(x(ia,2)-x(ja,2)) + dz=abs(x(ia,3)-x(ja,3)) + if(igroups(igr,6).eq.1) then + if(dz.gt.box(3)) dz=dz-box(3) + elseif(igroups(igr,6).eq.2) then + if(dx.gt.box(1)) dx=dx-box(1) + if(dy.gt.box(2)) dy=dy-box(2) + elseif(igroups(igr,6).eq.3) then + if(dx.gt.box(1)) dx=dx-box(1) + if(dy.gt.box(2)) dy=dy-box(2) + if(dz.gt.box(3)) dz=dz-box(3) + endif + dist=sqrt(dx*dx+dy*dy+dz*dz) +c write(lfngrp,1001) +c + imol(ia),sgmnam(ia)(11:16),sgmnam(ia)(1:5),sgmnam(ia)(6:10), +c + imol(ja),sgmnam(ja)(11:16),sgmnam(ja)(1:5),sgmnam(ja)(6:10),dist +c 1001 format(2(i5,a6,' ',a5,':',a5,' '),f12.6) + write(lfngrp,1003) i,(x(ia,j),j=1,3),(x(ja,j)-x(ia,j),j=1,3),dist + 1003 format(i5,7f12.6) + number=number+1 + 1 continue + do 2 i=1,ito + ia=idef(igrp,i) + ja=idef(jgrp,i) + vi(1)=x(ia,1)-x(ja,1) + vi(2)=x(ia,2)-x(ja,2) + vi(3)=x(ia,3)-x(ja,3) + do 3 j=i,ito + ia=idef(igrp,j) + ja=idef(jgrp,j) + vj(1)=x(ia,1)-x(ja,1) + vj(2)=x(ia,2)-x(ja,2) + vj(3)=x(ia,3)-x(ja,3) + dot=(vi(1)*vj(1)+vi(2)*vj(2)+vi(3)*vj(3))/ + + (sqrt(vi(1)**2+vi(2)**2+vi(3)**2)* + + sqrt(vj(1)**2+vj(2)**2+vj(3)**2)) + write(lfngrp,1004) i,j,dot + 1004 format(2i5,f12.6) + 3 continue + 2 continue +c 1 continue c write(lfngrp,1002) 0 1002 format(i5) diff --git a/src/analyz/ana_input.F b/src/analyz/ana_input.F index 24f415b4c6..a50cf5d426 100644 --- a/src/analyz/ana_input.F +++ b/src/analyz/ana_input.F @@ -1,6 +1,6 @@ subroutine ana_input(irtdb) c -c $Id: ana_input.F,v 1.72 2006-03-30 17:55:57 d3j191 Exp $ +c $Id: ana_input.F,v 1.73 2006-11-10 22:01:11 d3j191 Exp $ c implicit none c @@ -422,17 +422,18 @@ c if(inp_compare(.false.,'distances',item)) iopt=2 if(inp_compare(.false.,'zcoordinate',item)) iopt=3 if(inp_compare(.false.,'angle',item)) iopt=4 + if(inp_compare(.false.,'vectors',item)) iopt=5 if(.not.inp_f(rsel)) rsel=0.0d0 if(.not.inp_f(rval)) rval=rsel if(.not.inp_a(item)) item=' ' if(iopt.eq.1.and.jsel.le.0) + call md_abort('Error in groups definition',4) if(iopt.eq.2.and.jsel.le.0) - + call md_abort('Error in groups definition',4) + + call md_abort('Error in groups definition',5) if(iopt.eq.4.and.(jsel.le.0.or.ksel.le.0)) - + call md_abort('Error in groups definition',4) - if(iopt.eq.5.and.(jsel.le.0.or.ksel.le.0.or.lsel.le.0)) - + call md_abort('Error in groups definition',4) + + call md_abort('Error in groups definition',6) +c if(iopt.eq.5.and.(jsel.le.0.or.ksel.le.0.or.lsel.le.0)) +c + call md_abort('Error in groups definition',7) write(lfncmd,1022) isel,jsel,ksel,lsel,iopt,ipbc,rsel,rval, + item(1:index(item,' ')-1) 1022 format('groups ',4i7,i5,i3,2f12.6,a) diff --git a/src/analyz/ana_task.F b/src/analyz/ana_task.F index 3d7328bafe..06b7677a09 100644 --- a/src/analyz/ana_task.F +++ b/src/analyz/ana_task.F @@ -1,6 +1,6 @@ subroutine ana_task c -c $Id: ana_task.F,v 1.106 2006-09-11 21:22:33 d3j191 Exp $ +c $Id: ana_task.F,v 1.107 2006-11-10 22:01:12 d3j191 Exp $ c implicit none c @@ -1099,6 +1099,9 @@ c if(igroups(i,5).eq.4) + call ana_grpcogang(byte_mb(i_snam),int_mb(i_imol),int_mb(i_isel), + dbl_mb(i_wt),dbl_mb(i_xdat),i) + if(igroups(i,5).eq.5) + + call ana_grpvectors(byte_mb(i_snam),int_mb(i_imol), + + int_mb(i_isel),dbl_mb(i_wt),dbl_mb(i_xdat),i) 3301 continue endif c