Nbody6
 All Files Functions Variables
instar.f
Go to the documentation of this file.
1  SUBROUTINE instar
2 *
3 *
4 * Initialization of stars.
5 * ------------------------
6 *
7  include 'common6.h'
8  REAL*8 tscls(20),lums(10),gb(10),tm,tn
9  REAL*8 m0,m1,rm,lum,age,mc,rcc
10  REAL*8 menv,renv,k2,k3
11  parameter(k3=0.21d0)
12  REAL*8 jspin,ospin
13  REAL*8 vrotf
14  EXTERNAL vrotf
15 *
16 *
17 * Initialize mass loss variables & counters.
18  tphys = 0.d0
19  zmrg = 0.d0
20  zmhe = 0.d0
21  zmrs = 0.d0
22  zmwd = 0.d0
23  zmsn = 0.d0
24  zmdot = 0.d0
25  nmdot = 0
26  nrg = 0
27  nhe = 0
28  nrs = 0
29  nwd = 0
30  nsn = 0
31  nbh = 0
32  ntz = 0
33  nbs = 0
34  nkick = 0
35  nbkick = 0
36 *
37 *NB4 NEW
38  zmnh = 0.d0
39  zmbh = 0.d0
40  zmsy = 0.d0
41  nroche = 0
42  nchaos = 0
43  iqcoll = 0
44  iblue = 0
45  ncha = 0
46  nsp = 0
47  nhg = 0
48  nnh = 0
49  nbr = 0
50  nas = 0
51  nro = 0
52  ndd = 0
53  nspir = 0
54  ncirc = 0
55  nslp = 0
56  ncont = 0
57  ncoal = 0
58  nce = 0
59  instab = 0
60  neint = 0
61  nemod = 0
62  nhyp = 0
63  nhypc = 0.0
64  ngb = 0
65  nms = n
66 *
67  tmdot = 1.0d+10
68 *NB6 IF (KZ(27).EQ.0) THEN
69 * TSTAR = TSCALE
70 * END IF
71 *
72  WRITE (6,9) zpars(11), zpars(12), zmet
73  9 FORMAT(//,12x,'ABUNDANCES: X =',f6.3,' Y =',f6.3,' Z =',f6.3)
74 *NB6 zpars(11)=xhyd
75 * zpars(12)=yhel
76 *
77 * Calculate scale factor for spin angular momentum.
78  spnfac = zmbar*su**2/(1.0d+06*tstar)
79 *
80  epoch1 = epoch0
81  DO 10 i = 1,n
82 *
83 * Obtain stellar parameters at current epoch.
84  IF(kz(12).EQ.2)THEN
85  READ(12,*)m1,kw,m0,epoch1,ospin
86  ELSE
87  m1 = body(i)*zmbar
88  m0 = m1
89  IF(kstar(i).GT.1)THEN
90  kw = kstar(i)
91  ELSE
92 * Include optional pre-mainsequence evolution.
93  IF (m1.LT.8.0.AND.kz(41).GT.0) THEN
94  kw = -1
95  ELSE
96  kw = 1
97  END IF
98 * IF(M0.LE.0.01D0) KW = 10
99 * IF(M0.GE.100.D0) KW = 14
100  IF (kz(45).GT.0.AND.m0.GT.10.0.AND.i.LE.kz(24)) kw = 14
101  ENDIF
102  ENDIF
103  mc = 0.d0
104  age = time*tstar - epoch1
105  CALL star(kw,m0,m1,tm,tn,tscls,lums,gb,zpars)
106 * Define preMS EPOCH & AGE if relevant.
107  IF (kw.EQ.-1) THEN
108  epoch(i) = tscls(15)
109  age = time*tstar - epoch(i)
110  END IF
111  CALL hrdiag(m0,age,m1,tm,tn,tscls,lums,gb,zpars,
112  & rm,lum,kw,mc,rcc,menv,renv,k2)
113 *
114 * Assign initial spin angular momentum.
115  IF(kz(22).EQ.3)THEN
116  jspin = (k2*(m1-mc)*rm**2 + k3*mc*rcc**2)*ospin
117  ELSE
118  ospin = 45.35d0*vrotf(m1)/rm
119  jspin = k2*m1*rm**2*ospin
120  IF(kw.GT.1) jspin = 0.d0
121  ENDIF
122 *
123 * Convert from solar radii to scaled units (assume Sun = 1/215 AU).
124  IF (kz(27).EQ.-2) THEN
125  radius(i) = 0.d0
126  zlmsty(i) = 0.d0
127  spin(i) = 0.d0
128  ELSE
129  radius(i) = rm/su
130  zlmsty(i) = lum
131  spin(i) = jspin/spnfac
132  END IF
133 *
134 * Check neutron star option for GR capture (avoid large masses).
135  IF (kz(27).EQ.3.AND.kz(28).EQ.4) THEN
136  radius(i) = 1.0d-12/(3.0*rbar)
137  kw = 13
138  tev(i) = 1000.0
139  m0 = 25.0
140  epoch(i) = -15.0/tstar
141  IF (i.EQ.1) WRITE (6,5) m1, kw, radius(i)*su
142  5 FORMAT (/,12x,'FIRST STAR: M K* R/SU ',f7.2,i4,1p,e9.1)
143  END IF
144 *
145 * Initialize the stellar classification type (KW = 0 - 15).
146  kstar(i) = kw
147 *
148 * Save the initial mass of all the stars in sequential order.
149  body(i) = m1/zmbar
150  body0(i) = m0/zmbar
151 *
152 * Set initial look-up time.
153  epoch(i) = time*tstar - age
154  tev0(i) = time
155  CALL trdot(i,dtm,m1)
156  tev(i) = dtm
157  IF (kw.GE.13) tev(i) = 0.0
158 *
159 * Determine the time for next stellar evolution check.
160  IF (tev(i).LT.tmdot) THEN
161  tmdot = tev(i)
162  END IF
163  IF (i.EQ.1.AND.kz(41).GT.0) THEN
164  WRITE (6,8) m1, tev(i), radius(i)*su
165  8 FORMAT (/,12x,'BEGIN STAR #1 M TEV r* ',
166  & f7.2,1p,2e10.2)
167  END IF
168 *
169  10 CONTINUE
170 *
171 * Define first quantized step < 1000 yrs (minimum interval for MDOT).
172 * (changed to 100 yr to be consistent with trdot: 2/8/02)
173  dt = 1.0d-04/tscale
174  CALL stepk(dt,dtn)
175  IF(dtn*tscale.LT.100.0) dtn = 2.d0*dtn
176  stepx = dtn
177 *
178 * Ensure binary components will be updated at the same time.
179  DO 15 i = 1,nbin0
180  i1 = 2*i - 1
181  i2 = i1 + 1
182  tev(i1) = min(tev(i1),tev(i2))
183  tev(i1) = min(tev(i1),10.d0*stepx)
184  tmdot = min(tmdot,tev(i1))
185  tev(i2) = tev(i1)
186  15 CONTINUE
187 *
188 * Initialize stellar collision matrix.
189 *
190  ktype(0,0) = 1
191  do 20 j = 1,6
192  ktype(0,j) = j
193  ktype(1,j) = j
194  20 continue
195  ktype(0,7) = 4
196  ktype(1,7) = 4
197  do 25 j = 8,12
198  if(j.ne.10)then
199  ktype(0,j) = 6
200  else
201  ktype(0,j) = 3
202  endif
203  ktype(1,j) = ktype(0,j)
204  25 continue
205  ktype(2,2) = 3
206  do 30 i = 3,14
207  ktype(i,i) = i
208  30 continue
209  ktype(5,5) = 4
210  ktype(7,7) = 1
211  ktype(10,10) = 15
212 * Change for CO+CO owing to Tout theory (21/11/08).
213  ktype(11,11) = 12
214  ktype(13,13) = 14
215  do 35 i = 2,5
216  do 40 j = i+1,12
217  ktype(i,j) = 4
218  40 continue
219  35 continue
220  ktype(2,3) = 3
221  ktype(2,6) = 5
222  ktype(2,10) = 3
223  ktype(2,11) = 5
224  ktype(2,12) = 5
225  ktype(3,6) = 5
226  ktype(3,10) = 3
227  ktype(3,11) = 5
228  ktype(3,12) = 5
229  ktype(6,7) = 4
230  ktype(6,8) = 6
231  ktype(6,9) = 6
232  ktype(6,10) = 5
233  ktype(6,11) = 6
234  ktype(6,12) = 6
235  ktype(7,8) = 8
236  ktype(7,9) = 9
237  ktype(7,10) = 7
238  ktype(7,11) = 9
239  ktype(7,12) = 9
240  ktype(8,9) = 9
241  ktype(8,10) = 7
242  ktype(8,11) = 9
243  ktype(8,12) = 9
244  ktype(9,10) = 7
245  ktype(9,11) = 9
246  ktype(9,12) = 9
247  ktype(10,11) = 9
248  ktype(10,12) = 9
249  ktype(11,12) = 12
250  do 45 i = 0,12
251  ktype(i,13) = 13
252  ktype(i,14) = 14
253  45 continue
254  ktype(13,14) = 14
255 *
256 * Increase common-envelope cases by 100.
257  do 50 i = 0,9
258  do 55 j = i,14
259  if(i.le.1.or.i.eq.7)then
260  if(j.ge.2.and.j.le.9.and.j.ne.7)then
261  ktype(i,j) = ktype(i,j) + 100
262  endif
263  else
264  ktype(i,j) = ktype(i,j) + 100
265  endif
266  55 continue
267  50 continue
268 *
269 * Assign the remaining values by symmetry.
270  do 60 i = 1,14
271  do 65 j = 0,i-1
272  ktype(i,j) = ktype(j,i)
273  65 continue
274  60 continue
275 *
276  WRITE (6,75) ktype
277  75 FORMAT (/,11x,' KTYPE: ',15i4,14(/,19x,15i4))
278 *
279  RETURN
280  END