Skip to content

Commit 561e8c6

Browse files
authored
Implementing Eddington limit for BHs based on spinup/ISCO (#570)
* changed BH eddington accretion to Bardeen 1970 prescription that adjusts the accretion based on the BH ISCO due to spinup since BH formation * added one more BH eddington calculation for the newly added dme calculation * fixed small typo in Marchant eddlim calc * removed write statements I accidentally left in * removed tb in a couple of the dme calls * removed testing write statement * removed dummy counter for marking when BH formed
1 parent 37a19db commit 561e8c6

File tree

3 files changed

+68
-6
lines changed

3 files changed

+68
-6
lines changed

cosmic/src/const_bse.h

+2-2
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,8 @@
1414
& qcflag,eddlimflag,bhspinflag,aic,rejuvflag,
1515
& htpmb,ST_cr,ST_tide,bdecayfac,grflag,
1616
& bhms_coll_flag
17-
REAL*8 don_lim,acc_lim
18-
COMMON /MTVARS/ don_lim,acc_lim
17+
REAL*8 don_lim,acc_lim,Mbh_initial
18+
COMMON /MTVARS/ don_lim,acc_lim,Mbh_initial
1919
INTEGER ceflag,cekickflag,cemergeflag,cehestarflag,ussn
2020
COMMON /CEFLAGS/ ceflag,cekickflag,cemergeflag,cehestarflag,ussn
2121
INTEGER pisn_track(2)

cosmic/src/evolv2.f

+54-3
Original file line numberDiff line numberDiff line change
@@ -185,6 +185,7 @@ SUBROUTINE evolv2(kstar,mass,tb,ecc,z,tphysf,
185185
REAL*8 bhspin(2)
186186
REAL*8 delet,delet1,dspint(2),djspint(2),djtx(2)
187187
REAL*8 dtj,djorb,djgr,djmb,djt,djtt,rmin,rdisk
188+
REAL*8 etaBH,maxspinBH
188189
*
189190
INTEGER pulsar
190191
INTEGER mergemsp,merge_mem,notamerger,binstate,mergertype
@@ -270,6 +271,8 @@ SUBROUTINE evolv2(kstar,mass,tb,ecc,z,tphysf,
270271
ngtv2 = -2.d0
271272
twopi = 2.d0*ACOS(-1.d0)
272273

274+
Mbh_initial = 0.d0
275+
273276

274277
* disrupt tracks if system get disrupted by a SN during the common
275278
* envelope
@@ -523,6 +526,18 @@ SUBROUTINE evolv2(kstar,mass,tb,ecc,z,tphysf,
523526
* Just in case the wind mass loss rates are *very* high
524527
*
525528
dme = 2.08d-03*eddfac*(1.d0/(1.d0 + zpars(11)))*rad(3-k)
529+
* For BHs, follow Marchant et al. 2017
530+
if(kstar(3-k).eq.14)then
531+
maxspinBH = 6.d0**(1.d0/2.d0) * Mbh_initial
532+
if(mass(3-k).lt.maxspinBH)then
533+
etaBH = 1.d0 -
534+
& (1.d0 - (mass(3-k)/(3.d0*Mbh_initial))**(2.d0))**(1.d0/2.d0)
535+
else
536+
etaBH = 0.42
537+
endif
538+
dme = 1.04e-3*eddfac*(1.d0/(1.d0 + zpars(11)))
539+
& *(1.d0/etaBH)*rad(3-k)
540+
endif
526541
527542
*
528543
* Calculate wind mass loss from the previous timestep.
@@ -1402,10 +1417,22 @@ SUBROUTINE evolv2(kstar,mass,tb,ecc,z,tphysf,
14021417
*
14031418
*
14041419
* Force new NS or BH to have a birth spin peirod and magnetic field.
1405-
*
1420+
*
14061421
if(kstar(k).eq.13.or.kstar(k).eq.14)then
14071422
* re-calculate the Eddington limit of the newly formed CO
1408-
dme = 2.08d-03*eddfac*(1.d0/(1.d0 + zpars(11)))*rad(k)
1423+
dme = 2.08d-03*eddfac*(1.d0/(1.d0 + zpars(11)))*rad(k)
1424+
* For BHs, follow Marchant et al. 2017
1425+
if(kstar(k).eq.14)then
1426+
maxspinBH = 6.d0**(1.d0/2.d0) * Mbh_initial
1427+
if(mass(k).lt.maxspinBH)then
1428+
etaBH = 1.d0 -
1429+
& (1.d0 - (mass(k)/(3.d0*Mbh_initial))**(2.d0))**(1.d0/2.d0)
1430+
else
1431+
etaBH = 0.42
1432+
endif
1433+
dme = 1.04e-3*eddfac*(1.d0/(1.d0 + zpars(11)))
1434+
& *(1.d0/etaBH)*rad(k)
1435+
endif
14091436
if(tphys-epoch(k).lt.tiny)then
14101437
if(kstar(k).eq.13.and.pulsar.gt.0)then
14111438
* write(93,*)'birth start: ',tphys,k,B_0(k),ospin(k)
@@ -1906,7 +1933,19 @@ SUBROUTINE evolv2(kstar,mass,tb,ecc,z,tphysf,
19061933
* Eddington limit for accretion on to the secondary in one orbit.
19071934
*
19081935
8 dme = 2.08d-03*eddfac*(1.d0/(1.d0 + zpars(11)))*rad(j2)*tb
1909-
1936+
* For BHs, follow Marchant et al. 2017
1937+
if(kstar(j2).eq.14)then
1938+
maxspinBH = 6.d0**(1.d0/2.d0) * Mbh_initial
1939+
if(mass(j2).lt.maxspinBH)then
1940+
etaBH = 1.d0 -
1941+
& (1.d0 - (mass(j2)/(3.d0*Mbh_initial))**(2.d0))**(1.d0/2.d0)
1942+
else
1943+
etaBH = 0.42
1944+
endif
1945+
dme = 1.04e-3*eddfac*(1.d0/(1.d0 + zpars(11)))
1946+
& *(1.d0/etaBH)*rad(j2)*tb
1947+
endif
1948+
19101949
supedd = .false.
19111950
novae = .false.
19121951
disk = .false.
@@ -2612,6 +2651,18 @@ SUBROUTINE evolv2(kstar,mass,tb,ecc,z,tphysf,
26122651
* Just in case the wind mass loss rates are *very* high
26132652
*
26142653
dme = 2.08d-03*eddfac*(1.d0/(1.d0 + zpars(11)))*rad(3-k)*tb
2654+
* For BHs, follow Marchant et al. 2017
2655+
if(kstar(3-k).eq.14)then
2656+
maxspinBH = 6.d0**(1.d0/2.d0) * Mbh_initial
2657+
if(mass(3-k).lt.maxspinBH)then
2658+
etaBH = 1.d0 -
2659+
& (1.d0 - (mass(3-k)/(3.d0*Mbh_initial))**(2.d0))**(1.d0/2.d0)
2660+
else
2661+
etaBH = 0.42
2662+
endif
2663+
dme = 1.04e-3*eddfac*(1.d0/(1.d0 + zpars(11)))
2664+
& *(1.d0/etaBH)*rad(3-k)*tb
2665+
endif
26152666

26162667
if(neta.gt.tiny)then
26172668
if(beta.lt.0.d0)then !PK. following startrack

cosmic/src/hrdiag.f

+12-1
Original file line numberDiff line numberDiff line change
@@ -800,6 +800,10 @@ SUBROUTINE hrdiag(mass,aj,mt,tm,tn,tscls,lums,GB,zpars,
800800
endif
801801
endif
802802
mt = mrem
803+
* Store the initial BH mass for calculating the ISCO later
804+
if(Mbh_initial.eq.0)then
805+
Mbh_initial = mt
806+
endif
803807
endif
804808
endif
805809
endif
@@ -1176,7 +1180,10 @@ SUBROUTINE hrdiag(mass,aj,mt,tm,tn,tscls,lums,GB,zpars,
11761180
endif
11771181
endif
11781182
mt = mrem
1179-
1183+
* Store the initial BH mass for calculating the ISCO later
1184+
if(Mbh_initial.eq.0)then
1185+
Mbh_initial = mt
1186+
endif
11801187
endif
11811188
endif
11821189
endif
@@ -1271,6 +1278,10 @@ SUBROUTINE hrdiag(mass,aj,mt,tm,tn,tscls,lums,GB,zpars,
12711278
* Black hole
12721279
*
12731280
mc = mt
1281+
* Store the initial BH mass for calculating the ISCO later
1282+
if(Mbh_initial.eq.0)then
1283+
Mbh_initial = mt
1284+
endif
12741285
lum = 1.0d-10
12751286
r = 4.24d-06*mt
12761287
endif

0 commit comments

Comments
 (0)