Skip to content

Commit a249ac2

Browse files
authored
Merge pull request #1404 from TeamCOMPAS/Kicks
Update to Maxwellian kicks; new log normal (Disberg&Mandel 2025) kicks
2 parents bfe7c26 + 0565dee commit a249ac2

File tree

9 files changed

+45
-19
lines changed

9 files changed

+45
-19
lines changed

compas_python_utils/preprocessing/compasConfigDefault.yaml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
##~!!~## COMPAS option values
2-
##~!!~## File Created Sun May 25 00:33:11 2025 by COMPAS v03.20.00
2+
##~!!~## File Created Wed Jun 25 11:07:34 2025 by COMPAS v03.20.06
33
##~!!~##
44
##~!!~## The default COMPAS YAML file (``compasConfigDefault.yaml``), as distributed, has
55
##~!!~## all COMPAS option entries commented so that the COMPAS default value for the
@@ -175,8 +175,8 @@ numericalChoices:
175175
# --fryer-22-fmix: 0.500000 # Default: 0.500000 # parameter describing mixing growth time when using the 'FRYER2022' remnant mass prescription
176176
# --fryer-22-mcrit: 5.750000 # Default: 5.750000 # critical mass for BH formation when using the 'FRYER2022' remnant mass prescription
177177
# --kick-direction-power: 0.000000 # Default: 0.000000
178-
# --kick-magnitude-sigma-CCSN-NS: 265.00 # Default: 265.00 # [km/s]
179-
# --kick-magnitude-sigma-CCSN-BH: 265.00 # Default: 265.00 # [km/s]
178+
# --kick-magnitude-sigma-CCSN-NS: 217.00 # Default: 217.00 # [km/s]
179+
# --kick-magnitude-sigma-CCSN-BH: 217.00 # Default: 217.00 # [km/s]
180180
# --kick-magnitude-max: -1.000000 # Default: -1.000000
181181
# --kick-magnitude-random: 0.000000 # Default: 0.000000 # (SSE) used to draw the kick magnitude for the star should it undergo a supernova event
182182
# --kick-magnitude: 0.000000 # Default: 0.000000 # (SSE) (drawn) kick magnitude for the star should it undergo a supernova event [km/s]
@@ -279,7 +279,7 @@ stringChoices:
279279
### SUPERNOVAE, KICKS AND REMNANTS
280280
# --black-hole-kicks-mode: 'FALLBACK' # Default: 'FALLBACK' # Options: ['FALLBACK','ZERO','REDUCED','FULL']
281281
# --fryer-supernova-engine: 'DELAYED' # Default: 'DELAYED' # Options: ['DELAYED','RAPID']
282-
# --kick-magnitude-distribution: 'MULLERMANDEL' # Default: 'MULLERMANDEL' # Options: ['MULLERMANDEL','MULLER2016MAXWELLIAN','MULLER2016','BRAYELDRIDGE','MAXWELLIAN','FLAT','FIXED','ZERO']
282+
# --kick-magnitude-distribution: 'MULLERMANDEL' # Default: 'MULLERMANDEL' # Options: ['LOGNORMAL','MULLERMANDEL','MULLER2016MAXWELLIAN','MULLER2016','BRAYELDRIDGE','MAXWELLIAN','FLAT','FIXED','ZERO']
283283
# --kick-direction-distribution: 'ISOTROPIC' # Default: 'ISOTROPIC' # Options: ['POLES','WEDGE','POWERLAW','PERPENDICULAR','INPLANE','ISOTROPIC']
284284
# --neutron-star-accretion-in-ce: 'ZERO' # Default: 'ZERO' # Options: ['DISK','SURFACE','ZERO']
285285
# --neutron-star-equation-of-state: 'SSE' # Default: 'SSE' # Options: ['ARP3','SSE']

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

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -586,16 +586,18 @@ Default = 0.0
586586

587587
**--kick-magnitude-distribution** |br|
588588
Natal kick magnitude distribution. |br|
589-
Options: { ZERO, FIXED, FLAT, MAXWELLIAN, BRAYELDRIDGE, MULLER2016, MULLER2016MAXWELLIAN, MULLERMANDEL } |br|
589+
Options: { ZERO, FIXED, FLAT, MAXWELLIAN, BRAYELDRIDGE, MULLER2016, MULLER2016MAXWELLIAN, MULLERMANDEL, LOGNORMAL } |br|
590590
``ZERO`` assigns kick magnitudes of 0.0. |br|
591591
``FIXED`` always sets the magnitude to a fixed value based on supernova type. |br|
592592
``FLAT`` and ``MAXWELLIAN`` draw kicks from uniform or Maxwellian (e.g., Hobbs et al., 2005) distributions, respectively. |br|
593593
``BRAYELDRIDGE`` and ``MULLERMANDEL`` use momentum-preserving kicks from Bray & Eldrigde 2018 and Mandel & Mueller 2020, respectively. |br|
594-
``MULLER2016`` and ``MULLER2016MAXWELLIAN`` use kicks from Mueller 2016 as implemented in Vigna-Gomez et al., 2018 |br|
595-
(reduced by a factor of sqrt(3) in the latter case). |br|
596594
Note that this is independent from ``--remnant-mass-prescription`` to provide flexibility; however, the ``MULLERMANDEL`` |br|
597595
kick prescription is intended to be consistently used with the ``MULLERMANDEL`` remnant mass prescription, |br|
598-
as well as with the ``MALTSEV2024`` remnant mass prescription. |br|
596+
as well as with the ``MALTSEV2024`` remnant mass prescription (e.g., if used with other remnant mass prescriptions,
597+
inconsistent black hole kicks may be applied rescaled by fallback fractions). |br|
598+
``MULLER2016`` and ``MULLER2016MAXWELLIAN`` use kicks from Mueller 2016 as implemented in Vigna-Gomez et al., 2018 |br|
599+
(reduced by a factor of sqrt(3) in the latter case). |br|
600+
``LOGNORMAL`` applies kicks drawn from the Disberg & Mandel 2025 log-normal distribution. |br|
599601
Default = MULLERMANDEL
600602

601603
**--kick-magnitude-max** |br|

online-docs/pages/whats-new.rst

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,11 @@ 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+
**03.20.06 June 25, 2025**
7+
8+
* The MAXWELLIAN NS CCSN kick changed from the Hobbs value of 265 km/s to 217 km/s based on 48 younger than 10 Myr pulsars with proper motions from Disberg & Mandel (2025) sample; corrects Hobbs+ 2005 missing Jacobian
9+
* Implemented a LOGNORMAL NS CCSN kick magnitude distribution based on Disberg & Mandel, 2025
10+
611
**03.20.03 June 18, 2025**
712

813
* Resolved an issue that appeared in 03.10.02 with some TPAGB stars in the ECSN range (but not satisfying ECSN conditions) exploding as core-collapse supernovae

src/BaseStar.cpp

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3902,6 +3902,16 @@ double BaseStar::DrawSNKickMagnitude(const double p_Sigma,
39023902
kickMagnitude = DrawRemnantKickMullerMandel(p_COCoreMass, p_Rand, p_RemnantMass);
39033903
break;
39043904

3905+
case KICK_MAGNITUDE_DISTRIBUTION::LOGNORMAL: { // LOGNORMAL
3906+
// Only draw Disberg & Mandel (2025) kicks for CCSN or PPISN (if they receive a kick)
3907+
// use Maxwellians with sigma set in CalculateSNKickMagnitude() for other SN types
3908+
SN_EVENT thisSNevent = utils::SNEventType(m_SupernovaDetails.events.current); // current SN event
3909+
if (thisSNevent == SN_EVENT::CCSN || (thisSNevent == SN_EVENT::PPISN && OPTIONS->NatalKickForPPISN()))
3910+
kickMagnitude = gsl_cdf_lognormal_Pinv(p_Rand, DISBERG_MANDEL_MU, DISBERG_MANDEL_SIGMA);
3911+
else
3912+
kickMagnitude = DrawKickMagnitudeDistributionMaxwell(p_Sigma, p_Rand);
3913+
} break;
3914+
39053915
default: // unknown prescription
39063916
// the only way this can happen is if someone added a KICK_MAGNITUDE_DISTRIBUTION
39073917
// and it isn't accounted for in this code. We should not default here, with or without a warning.

src/Options.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -316,9 +316,9 @@ void Options::OptionValues::Initialise() {
316316
// Kick options
317317
m_KickMagnitudeDistribution.type = KICK_MAGNITUDE_DISTRIBUTION::MULLERMANDEL;
318318
m_KickMagnitudeDistribution.typeString = KICK_MAGNITUDE_DISTRIBUTION_LABEL.at(m_KickMagnitudeDistribution.type);
319-
m_KickMagnitudeDistributionSigmaCCSN_NS = 265;
320-
m_KickMagnitudeDistributionSigmaCCSN_BH = 265;
321-
m_KickMagnitudeDistributionMaximum = -1.0;
319+
m_KickMagnitudeDistributionSigmaCCSN_NS = HOBBS_CORRECTED_SIGMA; // Best fit Maxwellian sigma for 48 younger than 10 Myr pulsars with proper motions from Disberg & Mandel (2025) sample; corrects Hobbs+ 2005 missing Jacobian
320+
m_KickMagnitudeDistributionSigmaCCSN_BH = HOBBS_CORRECTED_SIGMA;
321+
m_KickMagnitudeDistributionMaximum = -1.0;
322322
m_KickMagnitudeDistributionSigmaForECSN = 30.0;
323323
m_KickMagnitudeDistributionSigmaForUSSN = 30.0;
324324
m_KickScalingFactor = 1.0;

src/Options.h

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -908,11 +908,11 @@ class Options {
908908

909909
// Kick options
910910
ENUM_OPT<KICK_MAGNITUDE_DISTRIBUTION> m_KickMagnitudeDistribution; // Which kick magnitude distribution
911-
double m_KickMagnitudeDistributionSigmaCCSN_NS; // Kick magnitude sigma in km s^-1 for neutron stars (default = "250" )
912-
double m_KickMagnitudeDistributionSigmaCCSN_BH; // Kick magnitude sigma in km s^-1 for black holes (default = "250" )
911+
double m_KickMagnitudeDistributionSigmaCCSN_NS; // Kick magnitude sigma in km s^-1 for neutron stars
912+
double m_KickMagnitudeDistributionSigmaCCSN_BH; // Kick magnitude sigma in km s^-1 for black holes
913913
double m_KickMagnitudeDistributionMaximum; // Maximum kick magnitude to draw. If negative, no maximum
914-
double m_KickMagnitudeDistributionSigmaForECSN; // Kick magnitude sigma for ECSN in km s^-1 (default = "0" )
915-
double m_KickMagnitudeDistributionSigmaForUSSN; // Kick magnitude sigma for USSN in km s^-1 (default = "20" )
914+
double m_KickMagnitudeDistributionSigmaForECSN; // Kick magnitude sigma for ECSN in km s^-1
915+
double m_KickMagnitudeDistributionSigmaForUSSN; // Kick magnitude sigma for USSN in km s^-1
916916
double m_KickScalingFactor; // Arbitrary factor for scaling kicks
917917

918918
// Kick direction options

src/changelog.h

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1588,9 +1588,11 @@
15881588
// mergers and CH stars that spun down
15891589
// 03.20.05 IM - June 24, 2025 - Defect repair:
15901590
// - Fixed typo in implementation of CASE_BB_STABILITY_PRESCRIPTION::ALWAYS_STABLE_ONTO_NSBH (issue #1403)
1591+
// 03.20.06 IM - June 25, 2025 - Enhancements:
1592+
// - The MAXWELLIAN NS CCSN kick changed from the Hobbs value of 265 km/s to 217 km/s based on 48 younger than 10 Myr pulsars with proper motions from Disberg & Mandel (2025) sample; corrects Hobbs+ 2005 missing Jacobian
1593+
// - Implemented a LOGNORMAL NS CCSN kick magnitude distribution based on Disberg & Mandel, 2025
15911594

1592-
1593-
const std::string VERSION_STRING = "03.20.05";
1595+
const std::string VERSION_STRING = "03.20.06";
15941596

15951597

15961598
# endif // __changelog_h__

src/constants.h

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -391,6 +391,12 @@ constexpr double MULLERMANDEL_KICKNS = 520.0;
391391
constexpr double MULLERMANDEL_KICKBH = 200.0;
392392
constexpr double MULLERMANDEL_SIGMAKICK = 0.3;
393393

394+
// Constants for Disberg & Mandel (2025) SN kick prescription
395+
constexpr double DISBERG_MANDEL_MU = 5.60;
396+
constexpr double DISBERG_MANDEL_SIGMA = 0.68;
397+
398+
constexpr double HOBBS_CORRECTED_SIGMA = 217.0; // Best fit Maxwellian sigma for 48 younger than 10 Myr pulsars with proper motions from Disberg & Mandel (2025) sample; corrects Hobbs+ 2005 missing Jacobian
399+
394400
// Constants for the Maltsev+ 2024 SN remnant mass prescription
395401
constexpr double MALTSEV2024_MMIN = 5.62;
396402
constexpr double MALTSEV2024_MMAX = 16.18;

src/typedefs.h

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -536,7 +536,7 @@ const COMPASUnorderedMap<INITIAL_MASS_FUNCTION, std::string> INITIAL_MASS_FUNCTI
536536
};
537537

538538
// kick magnitude distributions
539-
enum class KICK_MAGNITUDE_DISTRIBUTION: int { ZERO, FIXED, FLAT, MAXWELLIAN, BRAYELDRIDGE, MULLER2016, MULLER2016MAXWELLIAN, MULLERMANDEL};
539+
enum class KICK_MAGNITUDE_DISTRIBUTION: int { ZERO, FIXED, FLAT, MAXWELLIAN, BRAYELDRIDGE, MULLER2016, MULLER2016MAXWELLIAN, MULLERMANDEL, LOGNORMAL};
540540
const COMPASUnorderedMap<KICK_MAGNITUDE_DISTRIBUTION, std::string> KICK_MAGNITUDE_DISTRIBUTION_LABEL = {
541541
{ KICK_MAGNITUDE_DISTRIBUTION::ZERO, "ZERO" },
542542
{ KICK_MAGNITUDE_DISTRIBUTION::FIXED, "FIXED" },
@@ -545,7 +545,8 @@ const COMPASUnorderedMap<KICK_MAGNITUDE_DISTRIBUTION, std::string> KICK_MAGNITUD
545545
{ KICK_MAGNITUDE_DISTRIBUTION::BRAYELDRIDGE, "BRAYELDRIDGE" },
546546
{ KICK_MAGNITUDE_DISTRIBUTION::MULLER2016, "MULLER2016" },
547547
{ KICK_MAGNITUDE_DISTRIBUTION::MULLER2016MAXWELLIAN, "MULLER2016MAXWELLIAN" },
548-
{ KICK_MAGNITUDE_DISTRIBUTION::MULLERMANDEL, "MULLERMANDEL" }
548+
{ KICK_MAGNITUDE_DISTRIBUTION::MULLERMANDEL, "MULLERMANDEL" },
549+
{ KICK_MAGNITUDE_DISTRIBUTION::LOGNORMAL, "LOGNORMAL" }
549550
};
550551

551552
// kick direction distributions

0 commit comments

Comments
 (0)