Skip to content

Commit d63a489

Browse files
author
Ilya Mandel
committed
Split --muller-mandel-sigma-kick into --muller-mandel-sigma-kick-NS and --muller-mandel-sigma-kick-BH
1 parent f62596e commit d63a489

File tree

10 files changed

+48
-32
lines changed

10 files changed

+48
-32
lines changed

compas_python_utils/preprocessing/compasConfigDefault.yaml

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,5 @@
11
##~!!~## COMPAS option values
2-
<<<<<<< HEAD
3-
##~!!~## File Created Sun Jul 6 16:42:54 2025 by COMPAS v03.21.00
4-
=======
5-
##~!!~## File Created Thu Jul 17 09:38:18 2025 by COMPAS v03.21.00
6-
>>>>>>> dev
2+
##~!!~## File Created Fri Jul 18 08:19:00 2025 by COMPAS v03.21.00
73
##~!!~##
84
##~!!~## The default COMPAS YAML file (``compasConfigDefault.yaml``), as distributed, has
95
##~!!~## all COMPAS option entries commented so that the COMPAS default value for the
@@ -202,7 +198,8 @@ numericalChoices:
202198
# --mcbur1: 1.600000 # Default: 1.600000
203199
# --muller-mandel-kick-multiplier-BH: 200.00 # Default: 200.00 # scaling prefactor for BH kicks when using the 'MULLERMANDEL' kick magnitude distribution
204200
# --muller-mandel-kick-multiplier-NS: 520.00 # Default: 520.00 # scaling prefactor for NS kicks when using the 'MULLERMANDEL' kick magnitude distribution
205-
# --muller-mandel-sigma-kick: 0.300000 # Default: 0.300000 # kick scatter when using the 'MULLERMANDEL' kick magnitude distribution
201+
# --muller-mandel-sigma-kick-BH: 0.300000 # Default: 0.300000 # BH kick scatter when using the 'MULLERMANDEL' kick magnitude distribution
202+
# --muller-mandel-sigma-kick-NS: 0.300000 # Default: 0.300000 # NS kick scatter when using the 'MULLERMANDEL' kick magnitude distribution
206203
# --neutrino-mass-loss-BH-formation-value: 0.100000 # Default: 0.100000
207204
# --pisn-lower-limit: 60.000000 # Default: 60.000000 # Minimum core mass for PISN [Msol]
208205
# --pisn-upper-limit: 135.00 # Default: 135.00 # Maximum core mass for PISN [Msol]

online-docs/pages/User guide/Program options/program-options-list-defaults.rst

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -967,8 +967,12 @@ Default = 200.0
967967
Scaling prefactor for NS kicks when using the `MULLERMANDEL` kick magnitude distribution |br|
968968
Default = 520.0
969969

970-
**--muller-mandel-sigma-kick** |br|
971-
Scatter width for NS and BH kicks when using the `MULLERMANDEL` kick magnitude distribution |br|
970+
**--muller-mandel-sigma-kick-BH** |br|
971+
Scatter width for BH kicks when using the `MULLERMANDEL` kick magnitude distribution |br|
972+
Default = 0.3
973+
974+
**--muller-mandel-sigma-kick-NS** |br|
975+
Scatter width for NS kicks when using the `MULLERMANDEL` kick magnitude distribution |br|
972976
Default = 0.3
973977

974978
.. _options-props-N:
@@ -1564,9 +1568,8 @@ Go to :ref:`the top of this page <options-props-top>` for the full alphabetical
15641568
--kick-magnitude-distribution, --kick-magnitude-sigma-CCSN-BH, --kick-magnitude-sigma-CCSN-NS, --kick-magnitude-sigma-ECSN, --kick-magnitude-sigma-USSN,
15651569
--black-hole-kicks, --black-hole-kicks-mode, --fix-dimensionless-kick-magnitude, --kick-magnitude, --kick-magnitude-1, --kick-magnitude-2, --kick-magnitude-min, --kick-magnitude-max,
15661570
--kick-magnitude-random, --kick-magnitude-random-1, --kick-magnitude-random-2, --kick-scaling-factor, -muller-mandel-kick-multiplier-BH,
1567-
--muller-mandel-kick-multiplier-NS, --muller-mandel-sigma-kick
1568-
1569-
--kick-direction, --kick-direction-distribution, --kick-direction-power, --kick-mean-anomaly-1, --kick-mean-anomaly-2, --kick-phi-1, --kick-phi-2, --kick-theta-1, --kick-theta-2
1571+
--muller-mandel-kick-multiplier-NS, --muller-mandel-sigma-kick-BH, --muller-mandel-sigma-kick-NS, --kick-direction,
1572+
--kick-direction-distribution, --kick-direction-power, --kick-mean-anomaly-1, --kick-mean-anomaly-2, --kick-phi-1, --kick-phi-2, --kick-theta-1, --kick-theta-2
15701573

15711574
:ref:`Back to Top <options-props-top>`
15721575

online-docs/pages/whats-new.rst

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,17 +3,16 @@ What's new
33

44
Following is a brief list of important updates to the COMPAS code. A complete record of changes can be found in the file ``changelog.h``.
55

6-
<<<<<<< HEAD
7-
**03.21.00 July 6, 2025**
6+
**03.22.00 July 18, 2025**
87
* Changed default values of --enhance-CHE-lifetimes-luminosities and --scale-CHE-mass-loss-with-surface-helium-abundance to true
98
* Added options to set beta and gamma prescription for second stage of 2-stage CE (``--common-envelope-second-stage-beta``, ``--common-envelope-second-stage-gamma-prescription``)
109
* Fixed a bug in the calculation of zeta_equilibrium, which impacts when mass transfer is declared to proceed on a nuclear timescale (and hence how conservative it is)
11-
=======
12-
**03.20=1.00 July 17, 2025**
10+
* Fixed the calculation of Mandel & Muller kicks; split ``--muller-mandel-sigma-kick`` into ``--muller-mandel-sigma-kick-NS`` and ``--muller-mandel-sigma-kick-BH``
11+
12+
**03.21.00 July 17, 2025**
1313

1414
* Deprecated mass loss prescription MERRITT2024 in favour of MERRITT2025
1515
* Added version strings for gsl, boost, and HDF5 to COMPAS splashscreen
16-
>>>>>>> dev
1716

1817
**03.20.06 June 25, 2025**
1918

src/BaseStar.cpp

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3826,17 +3826,20 @@ double BaseStar::DrawRemnantKickMullerMandel(const double p_COCoreMass,
38263826
const double p_RemnantMass) const {
38273827
double remnantKick;
38283828
double muKick = 0.0;
3829+
double sigmaKick = 0.0;
38293830

38303831
if (utils::Compare(p_RemnantMass, OPTIONS->MaximumNeutronStarMass()) < 0) {
38313832
muKick = max(OPTIONS->MullerMandelKickMultiplierNS() * (p_COCoreMass - p_RemnantMass) / p_RemnantMass, 0.0);
3833+
sigmaKick = OPTIONS->MullerMandelSigmaKickNS();
38323834
}
38333835
else {
38343836
muKick = max(OPTIONS->MullerMandelKickMultiplierBH() * (p_COCoreMass - p_RemnantMass) / p_RemnantMass, 0.0);
3837+
sigmaKick = OPTIONS->MullerMandelSigmaKickBH();
38353838
}
38363839

3837-
double quantile0 = gsl_cdf_gaussian_P(0.0, sigma); //quantile of 0 in the Gaussian CDF; the goal is to draw from the cut-off Gaussian since the kick must exceed 0
3840+
double quantile0 = gsl_cdf_gaussian_P(0.0, sigmaKick); //quantile of 0 in the Gaussian CDF; the goal is to draw from the cut-off Gaussian since the kick must exceed 0
38383841
double rand = quantile0 + p_Rand * (1.0 - quantile0);
3839-
remnantKick = muKick * (1.0 + gsl_cdf_gaussian_Pinv(rand, OPTIONS->MullerMandelSigmaKick()));
3842+
remnantKick = muKick * (1.0 + gsl_cdf_gaussian_Pinv(rand, sigmaKick));
38403843

38413844
return remnantKick;
38423845
}

src/LogTypedefs.h

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -923,7 +923,8 @@ enum class PROGRAM_OPTION: int {
923923

924924
MULLER_MANDEL_KICK_MULTIPLIER_BH,
925925
MULLER_MANDEL_KICK_MULTIPLIER_NS,
926-
MULLER_MANDEL_SIGMA_KICK,
926+
MULLER_MANDEL_SIGMA_KICK_BH,
927+
MULLER_MANDEL_SIGMA_KICK_NS,
927928

928929
NEUTRINO_MASS_LOSS_ASSUMPTION_BH,
929930
NEUTRINO_MASS_LOSS_VALUE_BH,
@@ -1149,7 +1150,8 @@ const COMPASUnorderedMap<PROGRAM_OPTION, std::string> PROGRAM_OPTION_LABEL = {
11491150

11501151
{ PROGRAM_OPTION::MULLER_MANDEL_KICK_MULTIPLIER_BH, "MULLER_MANDEL_KICK_MULTIPLIER_BH" },
11511152
{ PROGRAM_OPTION::MULLER_MANDEL_KICK_MULTIPLIER_NS, "MULLER_MANDEL_KICK_MULTIPLIER_NS" },
1152-
{ PROGRAM_OPTION::MULLER_MANDEL_SIGMA_KICK, "MULLER_MANDEL_SIGMA_KICK" },
1153+
{ PROGRAM_OPTION::MULLER_MANDEL_SIGMA_KICK_BH, "MULLER_MANDEL_SIGMA_KICK_BH" },
1154+
{ PROGRAM_OPTION::MULLER_MANDEL_SIGMA_KICK_NS, "MULLER_MANDEL_SIGMA_KICK_NS" },
11531155

11541156
{ PROGRAM_OPTION::NEUTRINO_MASS_LOSS_ASSUMPTION_BH, "NEUTRINO_MASS_LOSS_ASSUMPTION_BH" },
11551157
{ PROGRAM_OPTION::NEUTRINO_MASS_LOSS_VALUE_BH, "NEUTRINO_MASS_LOSS_VALUE_BH" },
@@ -1729,7 +1731,8 @@ const std::map<PROGRAM_OPTION, PROPERTY_DETAILS> PROGRAM_OPTION_DETAIL = {
17291731

17301732
{ PROGRAM_OPTION::MULLER_MANDEL_KICK_MULTIPLIER_BH, { TYPENAME::DOUBLE, "PO_MM_Kick_Multiplier_BH", "-", 24, 15}},
17311733
{ PROGRAM_OPTION::MULLER_MANDEL_KICK_MULTIPLIER_NS, { TYPENAME::DOUBLE, "PO_MM_Kick_Multiplier_NS", "-", 24, 15}},
1732-
{ PROGRAM_OPTION::MULLER_MANDEL_SIGMA_KICK, { TYPENAME::DOUBLE, "PO_MM_Sigma_Kick", "-", 24, 15}},
1734+
{ PROGRAM_OPTION::MULLER_MANDEL_SIGMA_KICK_BH, { TYPENAME::DOUBLE, "PO_MM_Sigma_Kick_BH", "-", 24, 15}},
1735+
{ PROGRAM_OPTION::MULLER_MANDEL_SIGMA_KICK_NS, { TYPENAME::DOUBLE, "PO_MM_Sigma_Kick_NS", "-", 24, 15}},
17331736

17341737
{ PROGRAM_OPTION::NEUTRINO_MASS_LOSS_ASSUMPTION_BH, { TYPENAME::INT, "PO_Neutrino_Mass_Loss_Assmptn", "-", 4, 1 }},
17351738
{ PROGRAM_OPTION::NEUTRINO_MASS_LOSS_VALUE_BH, { TYPENAME::DOUBLE, "PO_Neutrino_Mass_Loss_Value", "-", 24, 15}},

src/Options.cpp

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -335,7 +335,8 @@ void Options::OptionValues::Initialise() {
335335

336336
m_MullerMandelKickBH = MULLERMANDEL_KICKBH;
337337
m_MullerMandelKickNS = MULLERMANDEL_KICKNS;
338-
m_MullerMandelSigmaKick = MULLERMANDEL_SIGMAKICK;
338+
m_MullerMandelSigmaKickNS = MULLERMANDEL_SIGMAKICKNS;
339+
m_MullerMandelSigmaKickBH = MULLERMANDEL_SIGMAKICKBH;
339340

340341
// Kick magnitude random number (used to draw kick magnitude if necessary)
341342
m_KickMagnitudeRandom = 0.0; // actual value set later
@@ -1551,9 +1552,14 @@ bool Options::AddOptions(OptionValues *p_Options, po::options_description *p_Opt
15511552
("Scaling prefactor for NS kicks when using the 'MULLERMANDEL' kick magnitude distribution (default = " + std::to_string(p_Options->m_MullerMandelKickNS) + ")").c_str()
15521553
)
15531554
(
1554-
"muller-mandel-sigma-kick",
1555-
po::value<double>(&p_Options->m_MullerMandelSigmaKick)->default_value(p_Options->m_MullerMandelSigmaKick),
1556-
("Kick scatter when using the 'MULLERMANDEL' kick magnitude distribution (default = " + std::to_string(p_Options->m_MullerMandelSigmaKick) + ")").c_str()
1555+
"muller-mandel-sigma-kick-NS",
1556+
po::value<double>(&p_Options->m_MullerMandelSigmaKickNS)->default_value(p_Options->m_MullerMandelSigmaKickNS),
1557+
("NS kick scatter when using the 'MULLERMANDEL' kick magnitude distribution (default = " + std::to_string(p_Options->m_MullerMandelSigmaKickNS) + ")").c_str()
1558+
)
1559+
(
1560+
"muller-mandel-sigma-kick-BH",
1561+
po::value<double>(&p_Options->m_MullerMandelSigmaKickBH)->default_value(p_Options->m_MullerMandelSigmaKickBH),
1562+
("BH kick scatter when using the 'MULLERMANDEL' kick magnitude distribution (default = " + std::to_string(p_Options->m_MullerMandelSigmaKickBH) + ")").c_str()
15571563
)
15581564

15591565
(
@@ -5030,7 +5036,8 @@ COMPAS_VARIABLE Options::OptionValue(const T_ANY_PROPERTY p_Property) const {
50305036

50315037
case PROGRAM_OPTION::MULLER_MANDEL_KICK_MULTIPLIER_BH : value = MullerMandelKickMultiplierBH(); break;
50325038
case PROGRAM_OPTION::MULLER_MANDEL_KICK_MULTIPLIER_NS : value = MullerMandelKickMultiplierNS(); break;
5033-
case PROGRAM_OPTION::MULLER_MANDEL_SIGMA_KICK : value = MullerMandelSigmaKick(); break;
5039+
case PROGRAM_OPTION::MULLER_MANDEL_SIGMA_KICK_BH : value = MullerMandelSigmaKickBH(); break;
5040+
case PROGRAM_OPTION::MULLER_MANDEL_SIGMA_KICK_NS : value = MullerMandelSigmaKickNS(); break;
50345041

50355042
case PROGRAM_OPTION::NEUTRINO_MASS_LOSS_ASSUMPTION_BH : value = static_cast<int>(NeutrinoMassLossAssumptionBH()); break;
50365043
case PROGRAM_OPTION::NEUTRINO_MASS_LOSS_VALUE_BH : value = NeutrinoMassLossValueBH(); break;

src/Options.h

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -944,7 +944,8 @@ class Options {
944944

945945
double m_MullerMandelKickBH; // Multiplier for BH kicks per Mandel and Mueller, 2020
946946
double m_MullerMandelKickNS; // Multiplier for NS kicks per Mandel and Mueller, 2020
947-
double m_MullerMandelSigmaKick; // Scatter for kicks per Mandel and Mueller, 2020
947+
double m_MullerMandelSigmaKickBH; // Scatter for BH kicks per Mandel and Mueller, 2020
948+
double m_MullerMandelSigmaKickNS; // Scatter for NS kicks per Mandel and Mueller, 2020
948949

949950
// Black hole kicks
950951
ENUM_OPT<BLACK_HOLE_KICKS_MODE> m_BlackHoleKicksMode; // Which black hole kicks mode
@@ -1619,7 +1620,8 @@ class Options {
16191620

16201621
double MullerMandelKickMultiplierBH() const { return OPT_VALUE("muller-mandel-kick-multiplier-BH", m_MullerMandelKickBH, true); }
16211622
double MullerMandelKickMultiplierNS() const { return OPT_VALUE("muller-mandel-kick-multiplier-NS", m_MullerMandelKickNS, true); }
1622-
double MullerMandelSigmaKick() const { return OPT_VALUE("muller-mandel-sigma-kick", m_MullerMandelSigmaKick, true); }
1623+
double MullerMandelSigmaKickBH() const { return OPT_VALUE("muller-mandel-sigma-kick-BH", m_MullerMandelSigmaKickBH, true); }
1624+
double MullerMandelSigmaKickNS() const { return OPT_VALUE("muller-mandel-sigma-kick-NS", m_MullerMandelSigmaKickNS, true); }
16231625

16241626
bool NatalKickForPPISN() const { return OPT_VALUE("natal-kick-for-PPISN", m_NatalKickForPPISN, false); }
16251627
NEUTRINO_MASS_LOSS_PRESCRIPTION NeutrinoMassLossAssumptionBH() const { return OPT_VALUE("neutrino-mass-loss-BH-formation", m_NeutrinoMassLossAssumptionBH.type, true); }

src/changelog.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1610,7 +1610,7 @@
16101610
// - Added missing virtual declaration to ShouldEnvelopeBeExpelledByPulsations
16111611
// - Now calculate mass accretion rate for nuclear timescale mass transfer on the fly to match with donor mass loss rate set by donor mass loss (required to fit into Roche lobe) divided by time step
16121612
// - Fixed random draws of SN kicks to avoid artificial pile-up at boundaries of distribution
1613-
1613+
// - Split --muller-mandel-sigma-kick into --muller-mandel-sigma-kick-NS and --muller-mandel-sigma-kick-BH
16141614

16151615
// Version string format is MM.mm.rr, where
16161616
//
@@ -1621,7 +1621,7 @@
16211621
// if MM is incremented, set mm and rr to 00, even if defect repairs and minor enhancements were also made
16221622
// if mm is incremented, set rr to 00, even if defect repairs were also made
16231623

1624-
const std::string VERSION_STRING = "03.21.00";
1624+
const std::string VERSION_STRING = "03.22.00";
16251625

16261626

16271627
# endif // __changelog_h__

src/constants.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -392,7 +392,8 @@ constexpr double MULLERMANDEL_SIGMABH = 0.5;
392392
constexpr double MULLERMANDEL_MINNS = 1.13;
393393
constexpr double MULLERMANDEL_KICKNS = 520.0; // As calibrated by Kapil+ 2023
394394
constexpr double MULLERMANDEL_KICKBH = 200.0;
395-
constexpr double MULLERMANDEL_SIGMAKICK = 0.3;
395+
constexpr double MULLERMANDEL_SIGMAKICKBH = 0.3;
396+
constexpr double MULLERMANDEL_SIGMAKICKNS = 0.3;
396397

397398
// Constants for Disberg & Mandel (2025) SN kick prescription
398399
constexpr double DISBERG_MANDEL_MU = 5.60;

src/yaml.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -264,7 +264,8 @@ namespace yaml {
264264
" --mcbur1",
265265
" --muller-mandel-kick-multiplier-BH # scaling prefactor for BH kicks when using the 'MULLERMANDEL' kick magnitude distribution",
266266
" --muller-mandel-kick-multiplier-NS # scaling prefactor for NS kicks when using the 'MULLERMANDEL' kick magnitude distribution",
267-
" --muller-mandel-sigma-kick # kick scatter when using the 'MULLERMANDEL' kick magnitude distribution",
267+
" --muller-mandel-sigma-kick-BH # BH kick scatter when using the 'MULLERMANDEL' kick magnitude distribution",
268+
" --muller-mandel-sigma-kick-NS # NS kick scatter when using the 'MULLERMANDEL' kick magnitude distribution",
268269
" --neutrino-mass-loss-BH-formation-value",
269270
" --pisn-lower-limit # Minimum core mass for PISN [Msol]",
270271
" --pisn-upper-limit # Maximum core mass for PISN [Msol]",

0 commit comments

Comments
 (0)