8 common/binary/ cm(4,mmax),xrel(3,mmax),vrel(3,mmax),
9 & hm(mmax),um(4,mmax),umdot(4,mmax),tmdis(mmax),
10 & namem(mmax),nameg(mmax),kstarm(mmax),iflag(mmax)
11 common/galaxy/ gmg,rg(3),vg(3),fg(3),fgd(3),tg,
12 & omega,disk,a,b,v02,rl2,gmb,ar,gam,zdum(7)
13 common/clouds/ xcl(3,mcl),xdotcl(3,mcl),bodycl(mcl),rcl2(mcl),
14 & clm(mcl),clmdot(mcl),cldot,vcl,sigma,rb2,pcl2,
15 & tcl,stepcl,ncl,newcl
17 REAL*8 x1(3,4),v1(3,4),ui(4),vi(4),xrel2(3),vrel2(3)
18 REAL*4 xs(3,nmax),vs(3,nmax),bodys(nmax),as(20)
19 REAL*4 xj(3,6),vj(3,6),bodyj(6)
20 LOGICAL first,second,third
21 SAVE first,second,third
22 DATA first,second ,third/.true.,.true.,.true./
26 IF (time.GE.tadj.OR.time.LE.0.0d0) go to 10
35 etot = zkin - pot + etide + ebin + esub + emerge + ecoll + emdot
46 de = de/max(zkin,abs(etot))
52 IF (n.GE.20.AND.kz(29).EQ.0)
THEN
68 DO 20 ipair = 1,npairs
69 np = np + list(1,2*ipair-1)
70 semi = -0.5*body(n+ipair)/h(ipair)
71 IF (semi.GT.0.0) amin = min(amin,semi)
72 IF (list(1,2*ipair-1).EQ.0) iunp = iunp + 1
73 IF (name(n+ipair).LT.-2*nzero) mult = mult + 1
78 zmb = cm(1,im) + cm(2,im)
79 semi = -0.5*zmb/hm(im)
92 dti = dti + 1.0/step(i)
93 dtri = dtri + 1.0/stepr(i)
94 cnnb = cnnb + list(1,i)/step(i)
95 rho = list(1,i)/rs(i)**3
98 IF (i.LE.n.AND.body(i).GT.0.0d0) ns = ns + 1
99 sum = sum + body(i)**2
104 cost = cnnb/(float(n - npairs)*dtri)
107 cmax = 2.0*cmax*rscale**3/float(n)
110 nnb = float(nnb)/float(n - npairs)
111 rd = sqrt(rdens(1)**2 + rdens(2)**2 + rdens(3)**2)
115 IF (nprint.GT.nfix.OR.time.LE.0.0d0)
THEN
117 IF (kz(3).GT.0) model = model + 1
121 eb = (ebin + ech)/(zkin - pot)
122 em = emerge/(zkin - pot)
123 IF (kz(21).GT.1)
THEN
132 WRITE (6,40) ttot, n, nnb, npairs, nmerge, mult, ns, nstepi,
133 & nstepb, nstepr, nstepu, error, be(3), zmass
134 40
FORMAT (//,
' T =',f7.0,
' N =',i6,
' <NB> =',i3,
' KS =',i5,
135 &
' NM =',i3,
' MM =',i2,
' NS =',i6,
136 &
' NSTEPS =',i11,i10,2i11,
' DE =',1p,e9.1,
137 &
' E =',0p,f10.6,
' M =',f7.4)
139 IF (kz(21).GT.0)
THEN
141 IF (vc.EQ.0.0d0) vc = rscale/tcr
142 trc = 1.02*float(nc)**2*bodym/(vc**3*log(float(nc)))
143 dmin1 = min(dmin1, dmin2, dmin3, dmin4, dminc)
146 WRITE (6,45) nrun, model, tcomp, trc, dmin1, dmin2, dmin3,
147 & dmin4, amin, rmax, rsmin, neff
148 45
FORMAT (/,
' NRUN =',i3,
' M# =',i3,
' CPU =',f8.1,
' TRC =',
149 & f5.1,
' DMIN =',1p,4e8.1,
' AMIN =',e8.1,
150 &
' RMAX =',e8.1,
' RSMIN =',0p,f6.3,
' NEFF =',i6)
152 vrms = sqrt(2.0*zkin/zmass)*vstar
155 50
FORMAT (/,
' <R> RTIDE RDENS RC NC MC RHOD RHOM',
156 &
' CMAX <Cn> Ir/R UN NP RCM VCM',
157 &
' AZ EB/E EM/E TCR T6 NESC',
160 WRITE (6,55) rscale, rtide, rd, rc, nc, zmc, rhod, rhom, cmax,
161 & cnnb, cost, iunp, np, cmr(4), cmrdot(4), az, eb, em,
162 & tcr, i6, nesc, vrms
163 55
FORMAT (
' #1',f5.2,f6.1,f6.2,f7.4,i5,f7.3,f6.0,f7.0,f6.0,f6.1,
164 & f7.3,i5,i6,f8.3,f8.4,f9.4,2f7.3,f6.2,2i6,f6.1)
167 60
FORMAT (/,7x,
'NNPRED NBCORR NBFULL NBVOID NICONV',
168 &
' NBSMIN NBDIS NBDIS2 NCMDER NBDER NFAST',
169 &
' NBFAST NBLOCK NBLCKR NBPRED NBFLUX',
170 &
' NIRECT NRRECT NURECT NBRECT')
171 WRITE (6,65) nnpred, nbcorr, nbfull, nbvoid, niconv,
172 & nbsmin, nbdis, nbdis2, ncmder, nbder, nfast,
173 & nbfast, nblock, nblckr, nbpred, nbflux, nirect,
174 & nrrect, nurect, nbrect
175 65
FORMAT (
' #2',i10,i10,i8,i9,i9,i8,i7,2i8,2i7,i8,2i10,2i11,4i8)
178 70
FORMAT (/,5x,
'NKSTRY NKSREG NKSHYP NKSPER NPRECT NEWKS ',
179 &
' NKSMOD NTTRY NTRIP NQUAD NCHAIN NMERG',
180 &
' NEWHI NSTEPT NSTEPQ NSTEPC')
181 WRITE (6,75) nkstry, nksreg, nkshyp, nksper, nprect, newks,
182 & nksmod, nttry, ntrip, nquad, nchain, nmerg, newhi,
183 & nstept, nstepq, nstepc
184 75
FORMAT (
' #3',i9,i7,i8,i11,i8,i7,2i9,2i7,i8,2i7,3i8)
187 IF (kz(19).GE.3.OR.kz(27).GT.0)
THEN
197 IF (kz(44).GT.0)
THEN
198 WRITE (56,77) tphys, time+toff, rscale*rbar, zmass*smu, ncoll
199 77
FORMAT (
' ',1p,4e12.4,0p,i5)
204 IF (kz(14).EQ.3)
THEN
205 gz = rg(1)*vg(2) - rg(2)*vg(1)
207 WRITE (6,78) ntail, (rg(k)*sx,k=1,3), (vg(k)*vstar,k=1,3),
209 78
FORMAT (/,5x,
'CLUSTER ORBIT NT RG VG JZ ET ',
210 & i5,3f7.2,2x,3f7.1,1p,e16.8,e10.2)
212 IF (kz(14).EQ.4)
THEN
213 WRITE (6,80) ttot, n, rscale, zmass, mp, detot
214 80
FORMAT (/,5x,
'GAS EXPULSION T N <R> M MP DETOT ',
215 & f7.1,i7,3f7.3,1p,e10.2)
227 IF (nstepi.GT.2000000000.OR.nstepi.LT.0)
THEN
231 IF (nstepr.GT.2000000000.OR.nstepr.LT.0)
THEN
235 IF (nstepu.GT.2000000000.OR.nstepu.LT.0)
THEN
239 IF (nbpred.GT.2000000000.OR.nbpred.LT.0)
THEN
242 IF (nbflux.GT.2000000000.OR.nbflux.LT.0)
THEN
246 IF (nbcorr.GT.2000000000.OR.nbcorr.LT.0)
THEN
249 IF (nblock.GT.2000000000.OR.nblock.LT.0)
THEN
254 IF (abs(error).GT.5.0*qe.AND.time.LT.tadj) go to 100
257 IF (kz(8).GT.0.AND.npairs.GT.0)
THEN
262 IF (kz(33).GT.0)
THEN
267 IF (kz(33).GT.1)
THEN
272 IF (kz(9).GT.0.OR.kz(6).GT.0)
THEN
277 IF (kz(13).GT.0)
THEN
278 WRITE (47,82) tstar*ttot, ns, newcl, detot, e(3),
279 & rbar*sqrt(pcl2), rbar*rscale, rbar*rc
280 82
FORMAT (
' ',f8.1,i7,i6,2f10.6,f6.2,2f7.3)
286 IF (kz(8).GE.2.AND.npairs.GT.0)
THEN
294 IF (kz(12).GT.0.AND.time.GE.tplot)
THEN
299 IF (kz(3).EQ.0.OR.nprint.NE.1) go to 100
300 IF (kz(3).GT.2.AND.kz(3).NE.5) go to 99
303 as(2) = float(npairs)
325 IF (list(1,2*j-1).EQ.0.AND.body(n+j).GT.0.0d0)
THEN
340 DO 95 jpair = 1,npairs
345 IF (name(icm).LT.0.AND.body(icm).GT.0.0)
THEN
347 IF (name(icm).LT.-2*nzero)
THEN
351 IF (namem(k).EQ.name(icm) + 2*nzero) im = k
354 DO 94 k = ifirst,ntot
355 IF (nameg(im).EQ.name(k)) jg = k
358 CALL
findj(j1,jg2,im2)
360 IF (name(j2).LE.nzero)
THEN
363 bodys(j1) = cm(1,im2)
364 bodys(jg2) = cm(2,im2)
367 bodys(2*jp-1) = cm(3,im)
368 bodys(2*jp) = cm(4,im)
369 bodys(jg2) = cm(2,im2)
374 bodys(jg2) = cm(2,im2)
377 bodys(2*jp-1) = cm(3,im2)
378 bodys(2*jp) = cm(4,im2)
389 zmb = cm(1,im) + cm(2,im)
392 x1(k,1) = x(k,j1) + cm(2,im)*xrel(k,im)/zmb
393 x1(k,2) = x(k,j1) - cm(1,im)*xrel(k,im)/zmb
394 v1(k,1) = xdot(k,j1) + cm(2,im)*vrel(k,im)/zmb
395 v1(k,2) = xdot(k,j1) - cm(1,im)*vrel(k,im)/zmb
412 bodys(j) = cm(3,im) + cm(4,im)
416 vi(k) = udot(k,ipair)
419 CALL
ksphys(ui,vi,xrel2,vrel2)
420 zm = cm(3,im) + cm(4,im)
422 vrel2(k) = 4.0*vrel2(k)
423 x1(k,3) = x(k,j2) + cm(4,im)*xrel2(k)/zm
424 x1(k,4) = x(k,j2) - cm(3,im)*xrel2(k)/zm
425 v1(k,3) = xdot(k,j2) + cm(4,im)*vrel2(k)/zm
426 v1(k,4) = xdot(k,j2) - cm(3,im)*vrel2(k)/zm
433 vs(k,icm2) = xdot(k,j2)
455 OPEN (unit=3,
status=
'NEW',form=
'UNFORMATTED',file=
'OUT3')
459 WRITE (3) ntot, model, nrun, nk
460 WRITE (3) (as(k),k=1,nk), (bodys(j),j=1,ntot),
461 & ((xs(k,j),k=1,3),j=1,ntot), ((vs(k,j),k=1,3),j=1,ntot),
466 99
IF (kz(3).LE.3)
THEN
468 OPEN (unit=33,
status=
'NEW',form=
'UNFORMATTED',file=
'OUT33')
472 WRITE (33) ntail, model, nk
475 DO 110 i = itail0,nttot
478 xs(k,i) = x(k,i) - rg(k)
479 vs(k,i) = xdot(k,i) - vg(k)
493 WRITE (33) (as(k),k=1,nk), (bodys(j),j=itail0,nttot),
494 & ((xs(k,j),k=1,3),j=itail0,nttot),
495 & ((vs(k,j),k=1,3),j=itail0,nttot),
496 & (name(j),j=itail0,nttot)
501 IF (kz(3).GT.3.AND.ntail.GT.0)
THEN
503 OPEN (unit=34,
status=
'NEW',form=
'FORMATTED',file=
'OUT34')
508 DO 120 i = ifirst,ntot
509 IF (body(i).LE.0.0d0) go to 120
512 xs(k,np) = (x(k,i) - rdens(k))*rbar
513 vs(k,np) = xdot(k,i)*vstar
515 bodys(np) = body(i)*smu
519 DO 130 i = itail0,nttot
522 xs(k,np) = (x(k,i) - rg(k) - rdens(k))*rbar
523 vs(k,np) = (xdot(k,i) - vg(k))*vstar
525 bodys(np) = body(i)*smu
527 WRITE (34,140) np, n1, (time+toff)*tstar, rbar, vstar,
528 & (rdens(k),k=1,3), (rg(k),k=1,3), (vg(k),k=1,3)
529 140
FORMAT (
' ',2i6,f8.1,2f6.2,3f7.3,1p,6e10.2)
531 WRITE (34,145) (xs(k,i),k=1,3), (vs(k,i),k=1,3), bodys(i)
532 145
FORMAT (
' ',3f10.3,3f8.1,f7.2)
537 100 tnext = tnext + deltat