TeamCOMPAS / COMPAS

COMPAS rapid binary population synthesis code
http://compas.science
MIT License
64 stars 66 forks source link

Secondary NS mass repeating frequently. #659

Closed AstrophysicsAndPython closed 2 years ago

AstrophysicsAndPython commented 2 years ago

For the configuration below

mode = 'BSE'                                                # evolving single stars (SSE) or binaries (BSE)?

grid_filename = None                                        # grid file name (e.g. 'mygrid.txt')

if grid_filename != None:
    if compas_input_path_override == None:
        grid_filename = os.getcwd() + '/' + grid_filename
    else:
        grid_filename = compas_input_path_override + '/' + grid_filename

logfile_definitions = None                                  # logfile record definitions file name (e.g. 'logdefs.txt')

if logfile_definitions != None:
    if compas_input_path_override == None:
        logfile_definitions = os.getcwd() + '/' + logfile_definitions
    else:
        logfile_definitions = compas_input_path_override + '/' + logfile_definitions

initial_mass    = None                                      # initial mass for SSE
initial_mass_1  = None                                      # primary initial mass for BSE
initial_mass_2  = None                                      # secondary initial mass for BSE

mass_ratio      = None

eccentricity    = None                                      # eccentricity for BSE
semi_major_axis = None                                      # semi-major axis for BSE
orbital_period  = None                                      # orbital period for BSE

use_mass_loss = True
mass_transfer = True
detailed_output = True                                      # WARNING: this creates a data heavy file
RLOFPrinting = True
evolve_unbound_systems = False
quiet = False

metallicity = None                                        # metallicity for both SSE and BSE - Solar metallicity Asplund+2010

allow_rlof_at_birth = True                                  # allow binaries that have one or both stars in RLOF at birth to evolve?
allow_touching_at_birth = False                             # record binaries that have stars touching at birth in output files?

chemically_homogeneous_evolution = 'PESSIMISTIC'            # chemically homogeneous evolution.  Options are 'NONE', 'OPTIMISTIC' and 'PESSIMISTIC'

switch_log = True

common_envelope_alpha = 1.0
common_envelope_lambda = 0.1                                # Only if using 'LAMBDA_FIXED'
common_envelope_lambda_prescription = 'LAMBDA_NANJING'      # Xu & Li 2010
common_envelope_slope_Kruckow = -5.0/6.0
stellar_zeta_prescription = 'SOBERMAN'
common_envelope_revised_energy_formalism = False
common_envelope_maximum_donor_mass_revised_energy_formalism = 2.0
common_envelope_recombination_energy_density = 1.5E13
common_envelope_alpha_thermal = 1.0                         # lambda = alpha_th*lambda_b + (1-alpha_th)*lambda_g
common_envelope_lambda_multiplier = 1.0                     # Multiply common envelope lambda by some constant
common_envelope_allow_main_sequence_survive = True          # Allow main sequence stars to survive CE. Was previously False by default
common_envelope_mass_accretion_prescription = 'ZERO'
common_envelope_mass_accretion_min = 0.04                   # For 'MACLEOD+2014' [Msol]
common_envelope_mass_accretion_max = 0.10                   # For 'MACLEOD+2014' [Msol]
envelope_state_prescription = 'LEGACY'

mass_loss_prescription = 'VINK'
luminous_blue_variable_prescription = 'HURLEY_ADD'
luminous_blue_variable_multiplier = 1.5
overall_wind_mass_loss_multiplier = 1.0
wolf_rayet_multiplier = 1.0
cool_wind_mass_loss_multiplier = 1.0
check_photon_tiring_limit = False

circularise_binary_during_mass_transfer = True
angular_momentum_conservation_during_circularisation = False
mass_transfer_angular_momentum_loss_prescription = 'ISOTROPIC'
mass_transfer_accretion_efficiency_prescription = 'THERMAL'
mass_transfer_fa = 0.5                                      # Only if using mass_transfer_accretion_efficiency_prescription = 'FIXED'
mass_transfer_jloss = 1.0                                   # Only if using mass_transfer_angular_momentum_loss_prescription = 'FIXED'
mass_transfer_rejuvenation_prescription = 'STARTRACK'
mass_transfer_thermal_limit_accretor= 'CFACTOR'
mass_transfer_thermal_limit_C= 10.0
eddington_accretion_factor = 1                              # multiplication Factor for eddington accretion onto NS&BH

case_BB_stability_prescription = 'ALWAYS_STABLE'
zeta_Main_Sequence = 2.0
zeta_Radiative_Envelope_Giant = 6.5

maximum_evolution_time = 13700.0                            # Maximum physical time a system can be evolved [Myrs]
maximum_number_timesteps = 99999
timestep_multiplier = 1.0                                   # Optional multiplier relative to default time step duration

initial_mass_function = 'KROUPA'
initial_mass_min = 5.0                                      # Use 1.0 for LRNe, 5.0 for DCOs  [Msol]
initial_mass_max = 150.0                                    # Stellar tracks extrapolated above 50 Msol (Hurley+2000) [Msol]

initial_mass_power = 0.0

semi_major_axis_distribution = 'FLATINLOG'
semi_major_axis_min = 0.01                                  # [AU]
semi_major_axis_max = 1000.0                                # [AU]

orbital_period_distribution = 'FLATINLOG'
orbital_period_min = 1.1                                    # [days]
orbital_period_max = 1000                                   # [days]

mass_ratio_distribution = 'FLAT'
mass_ratio_min = 0.01
mass_ratio_max = 1.0

minimum_secondary_mass = 0.1                                # Brown dwarf limit  [Msol]

eccentricity_distribution = 'FLAT'
eccentricity_min = 0.0
eccentricity_max = 1.0

metallicity_distribution = 'LOGUNIFORM'
metallicity_min = 0.0001
metallicity_max = 0.03

pulsar_birth_magnetic_field_distribution = 'ZERO'
pulsar_birth_magnetic_field_min = 11.0                      # [log10(B/G)]
pulsar_birth_magnetic_field_max = 13.0                      # [log10(B/G)]

pulsar_birth_spin_period_distribution = "ZERO"
pulsar_birth_spin_period_min = 10.0                         # [ms]
pulsar_birth_spin_period_max = 100.0                        # [ms]

pulsar_magnetic_field_decay_timescale = 1000.0              # [Myr]
pulsar_magnetic_field_decay_massscale = 0.025               # [Msol]
pulsar_minimum_magnetic_field = 8.0                         # [log10(B/G)]

evolvePulsars = True

rotational_velocity_distribution = 'ZERO'

neutron_star_equation_of_state = 'SSE'

neutrino_mass_loss_BH_formation = "FIXED_MASS"              # "FIXED_FRACTION"
neutrino_mass_loss_BH_formation_value = 0.1                 # Either fraction or mass (Msol) to lose

remnant_mass_prescription   = 'FRYER2012'
fryer_supernova_engine      = 'DELAYED'
black_hole_kicks            = 'FALLBACK'
kick_magnitude_distribution = 'MAXWELLIAN'

kick_magnitude_sigma_CCSN_NS = 265.0                        #  [km/s]
kick_magnitude_sigma_CCSN_BH = 265.0                        #  [km/s]
kick_magnitude_sigma_ECSN    = 30.0                         #  [km/s]
kick_magnitude_sigma_USSN    = 30.0                         #  [km/s]

fix_dimensionless_kick_magnitude = -1
kick_direction = 'ISOTROPIC'
kick_direction_power = 0.0
kick_scaling_factor = 1.0
kick_magnitude_maximum = -1.0

kick_magnitude_random   = None                              # (SSE) used to draw the kick magnitude for the star should it undergo a supernova event
kick_magnitude          = None                              # (SSE) (drawn) kick magnitude for the star should it undergo a supernova event [km/s]

kick_magnitude_random_1 = None                              # (BSE) used to draw the kick magnitude for the primary star should it undergo a supernova event
kick_magnitude_1        = None                              # (BSE) (drawn) kick magnitude for the primary star should it undergo a supernova event [km/s]
kick_theta_1            = None                              # (BSE) angle between the orbital plane and the 'z' axis of the supernova vector for the primary star should it undergo a supernova event [radians]
kick_phi_1              = None                              # (BSE) angle between 'x' and 'y', both in the orbital plane of the supernova vector, for the primary star should it undergo a supernova event [radians]
kick_mean_anomaly_1     = None                              # (BSE) mean anomaly at the instant of the supernova for the primary star should it undergo a supernova event - should be uniform in [0, 2pi) [radians]

kick_magnitude_random_2 = None                              # (BSE) used to draw the kick velocity for the secondary star should it undergo a supernova event
kick_magnitude_2        = None                              # (BSE) (drawn) kick magnitude for the secondary star should it undergo a supernova event [km/s]
kick_theta_2            = None                              # (BSE) angle between the orbital plane and the 'z' axis of the supernova vector for the secondary star should it undergo a supernova event [radians]
kick_phi_2              = None                              # (BSE) angle between 'x' and 'y', both in the orbital plane of the supernova vector, for the secondary star should it undergo a supernova event [radians]
kick_mean_anomaly_2     = None                              # (BSE) mean anomaly at the instant of the supernova for the secondary star should it undergo a supernova event - should be uniform in [0, 2pi) [radians]

muller_mandel_kick_multiplier_BH = 200.0                    # scaling prefactor for BH kicks when using the 'MULLERMANDEL' kick magnitude distribution
muller_mandel_kick_multiplier_NS = 400.0                    # scaling prefactor for NS kicks when using the 'MULLERMANDEL' kick magnitude distribution

pair_instability_supernovae = True
PISN_lower_limit = 60.0                                     # Minimum core mass for PISN [Msol]
PISN_upper_limit = 135.0                                    # Maximum core mass for PISN [Msol]

pulsation_pair_instability = True
PPI_lower_limit = 35.0                                      # Minimum core mass for PPI [Msol]
PPI_upper_limit = 60.0                                      # Maximum core mass for PPI [Msol]

pulsational_pair_instability_prescription = 'MARCHANT'

maximum_neutron_star_mass = 2.5  #  [Msol]

log_level           = 0
log_classes         = []

debug_level         = 0
debug_classes       = []

logfile_name_prefix = None
logfile_type        = 'HDF5'

hdf5_chunk_size     = 100000
hdf5_buffer_size    = 1

The random seeds 2135516081, 2135519043, 2135521747, 2135435955, and several others produce the same mass secondary NS after the evolution which is 1.2775835252086558 Msol. A few of the progenitor star masses lie close to one another but at large separations, however, some large mass stars are also found to have the same end value for the secondary NS produced.

Is this supposed to happen? 29/43 NS binaries (Evolution stopped tag) are at the same secondary NS mass of 1.2775835252086558 Msol.

reinhold-willcox commented 2 years ago

Hi @noonuu, yes this is a feature of the Fryer2012 Delayed supernova prescription for remnant mass (See Fryer et al. 2012, section 4.3). In their prescription, all stars with CO cores < 2.5 Msol at the time of supernova have a final gravitational mass of 1.27758 as you've found, so this value is expected to be repeated.

ilyamandel commented 2 years ago

Consider using MULLERMANDEL instead of FRYER2012 for the remnant mass prescription -- this is a stochastic remnant mass model and will generally yield a more smooth distribution (though you may still find a peak corresponding to ECSN remnant masses).