c******************************************************* c out_juxta_distribution(ntime) c c np600=2 output: 1. output the distribution of juxtapair-distance c each 10,000 steps (fort.(mp+100)) c 2. output (t,dij(t)) if smaller than the juxta_judge(1) c (juxta_judge(1) is served as the main criter) c (fort.mp) c 3. output (t Tnear) when in-and-out (fort.(mp+200)) c in the case njuxta>1 needed to be sorted and separated c by sjuxta_judge(i) subroutine out_juxta_distribution(ntime) implicit double precision(a-h, o-z) parameter(maxpair=100,maxa=500,maxjudge=10,nbucket=100) double precision r_pair(maxpair) common /juxtapair/ npair,npairs(maxpair,2),nflag(maxpair,maxjudge) +,njudge, sjuxta_judge(maxjudge),mp(maxpair) common/matrix/x(maxa,3),bangle(maxa) common/juxta_distribution/d_min,d_max,d_bucket, + npair_bucket(nbucket,maxpair) c 1.1 output the distribution nstep=10000 if (mod(ntime,nstep).eq.0) then do i=1,npair dtmp=d_min mtmp=mp(i)+100 do j=1,nbucket dtmp=dtmp+d_bucket write(mtmp,701) npairs(i,1),npairs(i,2),dtmp, + npair_bucket(j,i) enddo call flush(mtmp) enddo endif c 1.2 save the distribution do i=1,npair rr=0.d0 do j=1,3 rr=rr+(x(npairs(i,1),j)-x(npairs(i,2),j))*(x(npairs(i,1),j) + -x(npairs(i,2),j)) enddo r_pair(i)=dsqrt(rr) i_tmp=(r_pair(i)-d_min)/d_bucket+1 if ((i_tmp.ge.1) .and. (i_tmp.le.nbucket)) then npair_bucket(i_tmp,i)=npair_bucket(i_tmp,i)+1 endif enddo c 2.output (t,r(i1,i2)) if r