def bound_lower(m1, m2, pressure1, ofmaxmass): pressure2 = 100 #trivial parameter pressure_trans = pressure1 gamma1 = np.log(pressure1 / pressure0) / np.log( baryon_density1 / baryon_density0) pressure_s = pressure1 * (baryon_density_s / baryon_density1)**gamma1 pressure_trans = pressure_s det_density = 0 eos_args = [ baryon_density0, pressure1, baryon_density1, pressure2, baryon_density2, pressure3, baryon_density3, pressure_trans ] cs2 = cs2_ofmaxmass(ofmaxmass, 0.25, 1., Maxmass, Preset_Pressure_final, Preset_rtol, eos_args) args = [ baryon_density0, pressure1, baryon_density1, pressure2, baryon_density2, pressure3, baryon_density3, pressure_trans, det_density, cs2 ] a = EOS_BPSwithPolyCSS(args) tidal1 = Properity_ofmass( m1, pressure_trans + 1, Maxmass(Preset_Pressure_final, Preset_rtol, a)[1], MassRadius_transition, Preset_Pressure_final, Preset_rtol, 1, a)[7] tidal2 = Properity_ofmass( m2, pressure_trans + 1, Maxmass(Preset_Pressure_final, Preset_rtol, a)[1], MassRadius_transition, Preset_Pressure_final, Preset_rtol, 1, a)[7] return tidal1, tidal2, args
def bound_lower_with_args(m1, m2, pressure1, args): gamma1 = np.log(pressure1 / pressure0) / np.log( baryon_density1 / baryon_density0) pressure_s = pressure1 * (baryon_density_s / baryon_density1)**gamma1 pressure_trans = pressure_s a = EOS_BPSwithPolyCSS(args) tidal1 = Properity_ofmass( m1, pressure_trans + 1, Maxmass(Preset_Pressure_final, Preset_rtol, a)[1], MassRadius_transition, Preset_Pressure_final, Preset_rtol, 1, a)[7] tidal2 = Properity_ofmass( m2, pressure_trans + 1, Maxmass(Preset_Pressure_final, Preset_rtol, a)[1], MassRadius_transition, Preset_Pressure_final, Preset_rtol, 1, a)[7] return tidal1, tidal2, args
def bound_upper(m1, m2, pressure1, ofmaxmass): cs2 = 1. pressure_trans, tidal2, pressure2 = np.array( Properity_ofmass_at_transition(m2, 1, 1000, MassRadius, Preset_Pressure_final, Preset_rtol, 1))[[0, 7, 8]] eos_args = [ baryon_density0, pressure1, baryon_density1, pressure2, baryon_density2, pressure3, baryon_density3, pressure_trans ] det_density = det_density_ofmaxmass(ofmaxmass, 0, 1000, Maxmass, Preset_Pressure_final, Preset_rtol, eos_args) args = [ baryon_density0, pressure1, baryon_density1, pressure2, baryon_density2, pressure3, baryon_density3, pressure_trans, det_density, cs2 ] a = EOS_BPSwithPolyCSS(args) tidal1 = Properity_ofmass( m1, pressure_trans + 1, Maxmass(Preset_Pressure_final, Preset_rtol, a)[1], MassRadius_transition, Preset_Pressure_final, Preset_rtol, 1, a)[7] return tidal1, tidal2, args
0.059259259259259255, 3.0, 0.29600000000000004, 100, 0.5984, 1000000, 1.1840000000000002, 1.1618097293530305, 0, 0.3129165056475563 ]) args.append([ 5.92592593e-02, 3.00000000e+00, 2.96000000e-01, 1.00000000e+02, 5.98400000e-01, 1.00000000e+06, 1.18400000e+00, 1.16180973e+00, 0.00000000e+00, 1.00000000e+00 ]) N = 500 pressure_eos = np.linspace(0.1, 200, N * 100) pressure_center = np.linspace(10, 1000, N) mass_radius = [] for i in range(len(args)): a = EOS_BPSwithPolyCSS(args[i]) mass_radius.append( calculate_mass_radius(pressure_center, a, MassRadius_transition)) maxmass_min = 2.0 maxmass_max = 2.4 label_text = [] label_text.append('$%.1f M_\odot<M_{max}<%.1f M_\odot$ upper bound' % (maxmass_min, maxmass_max)) label_text.append('$%.1f M_\odot<M_{max}<%.1f M_\odot$ lower bound' % (maxmass_min, maxmass_max)) label_text.append('$%.1f M_\odot<M_{max}< \infty$ lower bound' % (maxmass_min)) f, axs = plt.subplots(1, 2, sharex=False, figsize=(15, 7.5)) for i in range(len(args)):
def Ofmaxmass(det_density, ofmaxmass, Maxmass_function, Preset_Pressure_final, Preset_rtol, args): eos = EOS_BPSwithPolyCSS(args + [det_density, cs2]) return -ofmaxmass + Maxmass_function(Preset_Pressure_final, Preset_rtol, eos)[2]