program pchir character*40 f real cm(3) real,allocatable::r(:) integer,allocatable::q(:) write(6,*)'Planar chirality' call getarg(1,f) open(9,file=f) read(9,*) read(9,*)nat allocate(r(3*nat),q(nat)) do 1 ia=1,nat 1 read(9,*)q(ia),(r(ix+3*(ia-1)),ix=1,3) close(9) cm=0. tm=0. do 3 ia=1,nat tm=tm+real(q(ia)) do 3 ix=1,3 3 cm(ix)=cm(ix)+r(ix+3*(ia-1))*q(ia) do 4 ix=1,3 4 cm(ix)=cm(ix)/real(tm) do 5 ia=1,nat do 5 ix=1,3 5 r(ix+3*(ia-1))=r(ix+3*(ia-1))-cm(ix) sx=0. sy=0. sz=0. do 2 ia=1,nat xi=r(1+3*(ia-1)) yi=r(2+3*(ia-1)) zi=r(3+3*(ia-1)) ri=(xi**2+yi**2+zi**2) do 2 ja=1,nat xj=r(1+3*(ja-1)) yj=r(2+3*(ja-1)) zj=r(3+3*(ja-1)) rj=(xj**2+yj**2+zj**2) rij2=(xi-xj)**2+(yi-yj)**2+(zi-zj)**2 if(rj.gt.ri.and.ia.ne.ja)then sx=sx+real(q(ia)*q(ja))*(yi*zj-zi*yj)/rij2 sy=sy+real(q(ia)*q(ja))*(zi*xj-xi*zj)/rij2 sz=sz+real(q(ia)*q(ja))*(xi*yj-yi*xj)/rij2 endif 2 continue sx=sx/tm sy=sy/tm sz=sz/tm write(6,600)tm,sx,sy,sz 600 format(' Total charge:',f8.2,' Sx Sy Sz:',3f10.3) end