Skip to content

Commit 364241f

Browse files
author
Ilya Mandel
committed
Corrected the M&M NS remnant mass prescription to never return a remnant mass larger than the CO core mass (see issue #1468)
1 parent 69dcd13 commit 364241f

2 files changed

Lines changed: 9 additions & 7 deletions

File tree

src/GiantBranch.cpp

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1471,31 +1471,31 @@ double GiantBranch::CalculateRemnantNSMassMullerMandel(const double p_COCoreMass
14711471
while (iterations++ < MULLERMANDEL_REMNANT_MASS_MAX_ITERATIONS &&
14721472
(utils::Compare(remnantMass, MULLERMANDEL_MINNS) < 0 ||
14731473
utils::Compare(remnantMass, OPTIONS->MaximumNeutronStarMass()) > 0 ||
1474-
utils::Compare(remnantMass, p_HeCoreMass) > 0)) {
1474+
utils::Compare(remnantMass, p_COCoreMass) > 0)) {
14751475
remnantMass = MULLERMANDEL_MU1 + RAND->RandomGaussian(MULLERMANDEL_SIGMA1);
14761476
}
14771477
if (iterations >= MULLERMANDEL_REMNANT_MASS_MAX_ITERATIONS) // failure to find a solution implies a narrow range; just pick a midpoint in this case
1478-
remnantMass = (std::min(OPTIONS->MaximumNeutronStarMass(), p_HeCoreMass) + MULLERMANDEL_MINNS) / 2.0;
1478+
remnantMass = (std::min(OPTIONS->MaximumNeutronStarMass(), p_COCoreMass) + MULLERMANDEL_MINNS) / 2.0;
14791479
}
14801480
else if (utils::Compare(p_COCoreMass, MULLERMANDEL_M2) < 0) {
14811481
while (iterations++ < MULLERMANDEL_REMNANT_MASS_MAX_ITERATIONS &&
14821482
(utils::Compare(remnantMass, MULLERMANDEL_MINNS) < 0 ||
14831483
utils::Compare(remnantMass, OPTIONS->MaximumNeutronStarMass()) > 0 ||
1484-
utils::Compare(remnantMass, p_HeCoreMass) > 0)) {
1484+
utils::Compare(remnantMass, p_COCoreMass) > 0)) {
14851485
remnantMass = MULLERMANDEL_MU2A + MULLERMANDEL_MU2B / (MULLERMANDEL_M2 - MULLERMANDEL_M1) * (p_COCoreMass - MULLERMANDEL_M1) + RAND->RandomGaussian(MULLERMANDEL_SIGMA2);
14861486
}
14871487
if (iterations >= MULLERMANDEL_REMNANT_MASS_MAX_ITERATIONS) // failure to find a solution implies a narrow range; just pick a midpoint in this case
1488-
remnantMass = (std::min(OPTIONS->MaximumNeutronStarMass(), p_HeCoreMass) + MULLERMANDEL_MINNS) / 2.0;
1488+
remnantMass = (std::min(OPTIONS->MaximumNeutronStarMass(), p_COCoreMass) + MULLERMANDEL_MINNS) / 2.0;
14891489
}
14901490
else {
14911491
while (iterations++ < MULLERMANDEL_REMNANT_MASS_MAX_ITERATIONS &&
14921492
(utils::Compare(remnantMass, MULLERMANDEL_MINNS) < 0 ||
14931493
utils::Compare(remnantMass, OPTIONS->MaximumNeutronStarMass()) > 0 ||
1494-
utils::Compare(remnantMass, p_HeCoreMass) > 0)) {
1494+
utils::Compare(remnantMass, p_COCoreMass) > 0)) {
14951495
remnantMass = MULLERMANDEL_MU3A + MULLERMANDEL_MU3B / (MULLERMANDEL_M3 - MULLERMANDEL_M2) * (p_COCoreMass - MULLERMANDEL_M2) + RAND->RandomGaussian(MULLERMANDEL_SIGMA3);
14961496
}
14971497
if (iterations >= MULLERMANDEL_REMNANT_MASS_MAX_ITERATIONS) // failure to find a solution implies a narrow range; just pick a midpoint in this case
1498-
remnantMass = (std::min(OPTIONS->MaximumNeutronStarMass(), p_HeCoreMass) + MULLERMANDEL_MINNS) / 2.0;
1498+
remnantMass = (std::min(OPTIONS->MaximumNeutronStarMass(), p_COCoreMass) + MULLERMANDEL_MINNS) / 2.0;
14991499
}
15001500
return remnantMass;
15011501
}

src/changelog.h

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1701,6 +1701,8 @@
17011701
// - Fix for issue 1463: sign error in the Claeys+2014 common-envelope lambda prescription
17021702
// 03.29.03 NRS - April 3, 2026 - Defect repair:
17031703
// - Fixed HeSDs not being recorded in the Supernovae logs (mentioned in issue 1350).
1704+
// 03.29.04 IM - April 19, 2026 - Enhancement:
1705+
// - Corrected the M&M NS remnant mass prescription to never return a remnant mass larger than the CO core mass (see issue #1468)
17041706
//
17051707
//
17061708
// Version string format is MM.mm.rr, where
@@ -1712,7 +1714,7 @@
17121714
// if MM is incremented, set mm and rr to 00, even if defect repairs and minor enhancements were also made
17131715
// if mm is incremented, set rr to 00, even if defect repairs were also made
17141716

1715-
const std::string VERSION_STRING = "03.29.03";
1717+
const std::string VERSION_STRING = "03.29.04";
17161718

17171719

17181720
# endif // __changelog_h__

0 commit comments

Comments
 (0)