Nbody6
 All Files Functions Variables
cstab3.f
Go to the documentation of this file.
1  SUBROUTINE cstab3(ITERM)
2 *
3 *
4 * Perturbed triple chain stability test.
5 * --------------------------------------
6 *
7  include 'commonc.h'
8  include 'common2.h'
9  common/chreg/ timec,tmax,rmaxc,cm(10),namec(6),nstep1,kz27,kz30
10  REAL*8 m,mb,mb1,r2(nmx,nmx),xcm(3),vcm(3),xx(3,3),vv(3,3)
11  INTEGER ij(nmx)
12 *
13 *
14 * Sort particle separations (I1 & I2 form closest pair).
15  CALL r2sort(ij,r2)
16  i1 = ij(1)
17  i2 = ij(2)
18  i3 = ij(3)
19  i4 = ij(4)
20  mb = m(i1) + m(i2)
21  mb1 = mb + m(i3)
22  mb4 = mb1 + m(i4)
23 *
24 * Form output diagnostics.
25  vrel2 = 0.0d0
26  vrel21 = 0.0d0
27  rdot = 0.0d0
28  rdot3 = 0.0d0
29  ri2 = 0.0d0
30  r4 = 0.0d0
31  v4 = 0.0
32  rdot4 = 0.0d0
33  DO 10 k = 1,3
34  j1 = 3*(i1-1) + k
35  j2 = 3*(i2-1) + k
36  j3 = 3*(i3-1) + k
37  j4 = 3*(i4-1) + k
38  vrel2 = vrel2 + (v(j1) - v(j2))**2
39  rdot = rdot + (x(j1) - x(j2))*(v(j1) - v(j2))
40  xcm(k) = (m(i1)*x(j1) + m(i2)*x(j2))/mb
41  vcm(k) = (m(i1)*v(j1) + m(i2)*v(j2))/mb
42  ri2 = ri2 + (x(j3) - xcm(k))**2
43  vrel21 = vrel21 + (v(j3) - vcm(k))**2
44  rdot3 = rdot3 + (x(j3) - xcm(k))*(v(j3) - vcm(k))
45  xc3 = (m(i3)*x(j3) + mb*xcm(k))/mb1
46  vc3 = (m(i3)*v(j3) + mb*vcm(k))/mb1
47  r4 = r4 + (x(j4) - xc3)**2
48  v4 = v4 + (v(j4) - vc3)**2
49  rdot4 = rdot4 + (x(j4) - xc3)*(v(j4) - vc3)
50  xx(k,1) = x(j1)
51  xx(k,2) = x(j2)
52  xx(k,3) = x(j3)
53  vv(k,1) = v(j1)
54  vv(k,2) = v(j2)
55  vv(k,3) = v(j3)
56  10 CONTINUE
57 *
58 * Evaluate orbital elements for inner and outer motion.
59  rb = sqrt(r2(i1,i2))
60  r3 = sqrt(ri2)
61  semi = 2.0d0/rb - vrel2/mb
62  semi = 1.0/semi
63  ecc = sqrt((1.0d0 - rb/semi)**2 + rdot**2/(semi*mb))
64  semi1 = 2.0/r3 - vrel21/mb1
65  semi1 = 1.0/semi1
66  ecc1 = sqrt((1.0d0 - r3/semi1)**2 + rdot3**2/(semi1*mb1))
67  r4 = sqrt(r4)
68  semi4 = 2.0/r4 - v4/mb4
69  semi4 = 1.0/semi4
70  ecc4 = sqrt((1.0 - r4/semi4)**2 + rdot4**2/(semi4*mb4))
71 *
72 * Form hierarchical stability ratio (Eggleton & Kiseleva 1995).
73  ql = mb/m(i3)
74  q1 = max(m(i2)/m(i1),m(i1)/m(i2))
75  q3 = ql**0.33333
76  q13 = q1**0.33333
77  ar = 1.0 + 3.7/q3 - 2.2/(1.0 + q3) + 1.4/q13*(q3 - 1.0)/(q3 + 1.0)
78 *
79  ek = ar*semi*(1.0d0 + ecc)
80  pmin = semi1*(1.0d0 - ecc1)
81 *
82 * Replace the EK criterion by the MA analytical stability formula.
83  q0 = m(i3)/mb
84  IF (ecc1.LT.1.0) THEN
85  xfac = (1.0 + q0)*(1.0 + ecc1)/sqrt(1.0 - ecc1)
86  ELSE
87  xfac = 40.0*(1.0 + q0)
88  END IF
89  fe = 1.0
90  pcrit = 2.8*fe*xfac**0.4*semi
91 *
92 * Obtain the inclination.
93  CALL inclin(xx,vv,xcm,vcm,alpha)
94 *
95 * Include fudge factor for inclination effect.
96  yfac = 1.0 - 0.3*alpha/3.14
97  pcrit = yfac*pcrit
98 *
99 * Check hierarchical stability condition for 3 + 1 configuration.
100  iterm = 0
101  IF (pmin.GT.pcrit.AND.semi1.GT.0.0.AND.semi4.GT.0.0.AND.
102  & rb.GT.semi) THEN
103  g4 = 2.0*m(i4)/mb4*(r3/r4)**3
104  pmin4 = semi4*(1.0 - ecc4)
105  zfac = (1.0 + m(i4)/mb1)*(1.0 + ecc4)/sqrt(1.0 - ecc4)
106  zcrit = 2.8*fe*zfac**0.4*semi4
107  pz = pmin4/zcrit
108 *
109 * Ignore outermost body for perturbation test of inner triple.
110  IF (n.EQ.5) THEN
111  g4 = 2.0*m(i4)/mb1*(r3/pmin4)**3
112  IF (g4.LT.0.1) THEN
113  WRITE (6,19) nstep1, ecc4, semi, pcrit, pmin4, g4
114  19 FORMAT (' CSTAB3 # E4 A PCR PM4 G4 ',
115  & i6,f8.4,1p,4e10.2)
116  iterm = -1
117  END IF
118  go to 40
119  END IF
120 *
121 * Continue chain integration if outer orbit unstable or large pert.
122  IF (pmin4.LT.zcrit.OR.g4.GT.0.2) go to 40
123 *
124  iterm = -1
125  WRITE (6,20) ecc, ecc1, semi, semi1, pmin, pcrit, ek, pz
126  20 FORMAT (' CSTAB3 E =',f6.3,' E1 =',f6.3,' A =',1p,e8.1,
127  & ' A1 =',e8.1,' PM =',e9.2,' PC =',e9.2,
128  & ' EK =',e9.2,' P/Z =',0p,f5.2)
129  ri = sqrt(cm(1)**2 + cm(2)**2 + cm(3)**2)
130  emax = 0.0
131  WRITE (81,30) timec, ri, namec(i3), ql, q1, ecc, ecc1,
132  & semi, semi1, pcrit/pmin, 180.*alpha/3.14, emax
133  30 FORMAT (f9.5,f5.1,i6,2f6.2,2f6.3,1p,2e10.2,0p,f5.2,f6.1,f6.3)
134  CALL flush(81)
135  END IF
136 *
137  40 RETURN
138 *
139  END