[Mesa-users] Obtaining information inside __extras.f90 to use for a custom hook
james.munday98 at gmail.com
Fri Feb 4 14:18:23 UTC 2022
I'm struggling to obtain the information I want when setting a custom hook
(setting use_other_jdot_ml = .true. in the binary controls).
For what I want to set it to, I need the mass transfer rate (b%
mtransfer_rate or similar), the masses of the stars at every step and the
orbital angular momentum, Jorb, at every step. When accessing it, the value
of b% mtransfer_rate is of the order of ~10^17 for a transfer of 10^-9
solar masses in pgplot/terminal.
Trying b% m1 and b% m2 just gives what the masses were initialised to be in
solar masses in inlist_project, and their units and magnitude are not
consistent with this mtransfer_rate value - I would like the current m1 m2.
To get Jorb, it is printed in the terminal and log, but I'm not sure how to
access that live either. I can get b% jdot_gr or b% jdot_ml fine, which are
identical values to those output in the terminal.
So the options are:
- Obtain all values in units that are consistent with b% mtransfer_rate
and compute jdot_ml
- Obtain all values in the format of those output in terminal and compute
Would someone please give me a point in the right direction for how to do
either of these options? My subroutine is attached below with comments for
the desired steps.
Ultimately, I'm trying to get
jdot_ml_term = Jorb * SQRT(rh*(1.0+mass1/mass2)) * mdot/mass1 ; with rh a
function of mass1 and mass2 only.
Many thanks in advance for any help,
subroutine jdot_extra_jdot_routine(binary_id, ierr)
integer, intent(in) :: binary_id
integer, intent(out) :: ierr
double precision :: mass1, mass2, jdot_ml_term, rh, mdot
type (binary_info), pointer :: b
ierr = 0
call binary_ptr(binary_id, b, ierr)
if (ierr /= 0) then
write(*,*) 'failed in binary_ptr'
mass1 = b% m1 !* m1 here is the donor
mass2 = b% m2
!masses above only get the initial mass (in solar masses) set in
inlist_project, not the current mass from star. think I want to access
something in s%
rh = 0.0883 + 0.04858*LOG10(mass2 / mass1) + 0.11489*LOG10(mass2 /
mass1)*LOG10(mass2 / mass1) - 0.020475*LOG10(mass2 / mass1)*LOG10(mass2 /
mass1)*LOG10(mass2 / mass1)
mdot = b% mtransfer_rate
jdot_ml_term = SQRT(rh*(1.0+mass1/mass2)) * mdot/mass1 ! * Jorb <-
this is needed
! WANT Jdot_ml_term = Jorb * SQRT((1+mass1/mass2) * rh ) * mdot
! to do this, want the value of M1 and M2 at each step
! and the current Jorb
Overall for a run, values have (from reading terminal, mass
binary_step M1+M2 separ Porb e M2/M1
pm_i donor_i dot_Mmt eff Jorb dot_J dot_Jmb
lg_dt M1 R1 P1 dot_e vorb1
RL1 Rl_gap1 dot_M1 dot_Medd spin1 dot_Jgr dot_Jls
age_yr M2 R2 P2 Eorb vorb2
RL2 Rl_gap2 dot_M2 L_acc spin2 dot_Jml rlo_iters
bin 540 0.891000 0.093317 0.003498 0.000E+00 3.665089
2 1 -1.667E-09 0.942808 2.614E+50 -1.082E+37 0.000E+00
2.125646 0.190993 0.025569 0.000000 0.000E+001060.298005
0.025568 3.888E-05 -1.667E-09 2.702E-08 0.000E+00 -1.082E+37 0.000E+00
1.0624E+07 0.700007 0.000000 0.000000 -2.717E+48 289.296627
0.046074 -1.000E+00 1.572E-09 5.399E+36 0.000E+00 -2.419E+32 5
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the Mesa-users