Skip to content

Commit 1662b87

Browse files
Modifications to Maltsev prescription (#1423)
* replaced muller mandel remnant masses with pseudo-NS masses for non-direct collapse * simplified kiril model, in compas * added 50% fallback * cosmetic changes * changed extrapolotion of maltsev remnant masses to be nearest neighbor, and added option for fallback fraction * added rlof T and L * added pre and post RLOF values for Teff, L in basebinarystar * cleaned up Maltsev function * fixed fallback setup for Maltsev BH kicks * modified Kiril options * cleanup * fixed bug in upper limit of Maltsev variations * removed print statements * added Klencki linear AM loss prescription, variant of MacLeod linear * fixed bug with klencki gamma * minor fix for one of the Maltsev values * removed code that wasn't specifically relevant to just the Maltsev modifications. These changes will be added to another PR * comment cleanup * typo fix * changelog * documentation * typo * fixed teffX and lumX to temperatureX and luminosityX for X in {1,2} * forgot to update version in changelog * new program options for maltsev model * cleaned up MALTSEV treatment of NS masses, now all are the canonical NS mass * yaml * yaml * teff -> temperature, lum -> luminosity * Update GiantBranch.cpp - formatting * changelog * added constexpr and description of M1, M2, M3 for PR * what's new * what's new, more detail * typo * typo --------- Co-authored-by: jeffriley <jeffrey.riley@monash.edu>
1 parent 44d0562 commit 1662b87

File tree

14 files changed

+360
-73
lines changed

14 files changed

+360
-73
lines changed

compas_python_utils/preprocessing/compasConfigDefault.yaml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
##~!!~## COMPAS option values
2-
##~!!~## File Created Sun Aug 10 13:16:13 2025 by COMPAS v03.23.00
2+
##~!!~## File Created Mon Aug 18 13:37:46 2025 by COMPAS v03.23.02
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
@@ -283,6 +283,8 @@ stringChoices:
283283
# --fryer-supernova-engine: 'DELAYED' # Default: 'DELAYED' # Options: ['DELAYED','RAPID']
284284
# --kick-magnitude-distribution: 'MULLERMANDEL' # Default: 'MULLERMANDEL' # Options: ['LOGNORMAL','MULLERMANDEL','MULLER2016MAXWELLIAN','MULLER2016','BRAYELDRIDGE','MAXWELLIAN','FLAT','FIXED','ZERO']
285285
# --kick-direction-distribution: 'ISOTROPIC' # Default: 'ISOTROPIC' # Options: ['POLES','WEDGE','POWERLAW','PERPENDICULAR','INPLANE','ISOTROPIC']
286+
# --maltsev-fallback: 0.500000 # Default: 0.500000
287+
# --maltsev-mode: 'BALANCED' # Default: 'BALANCED' # Options: ['PESSIMISTIC','BALANCED','OPTIMISTIC']
286288
# --neutron-star-accretion-in-ce: 'ZERO' # Default: 'ZERO' # Options: ['DISK','SURFACE','ZERO']
287289
# --neutron-star-equation-of-state: 'SSE' # Default: 'SSE' # Options: ['ARP3','SSE']
288290
# --neutrino-mass-loss-BH-formation: 'FIXED_MASS' # Default: 'FIXED_MASS' # Options: ['FIXED_MASS','FIXED_FRACTION']

online-docs/pages/User guide/COMPAS output/standard-logfiles-record-specification-binary.rst

Lines changed: 129 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -790,6 +790,38 @@ Binary Properties
790790
* - Header String:
791791
- SemiMajorAxis>MT
792792

793+
.. flat-table::
794+
:widths: 25 75 1 1
795+
:header-rows: 0
796+
:class: aligned-text
797+
798+
* - :cspan:`2` **RLOF_POST_MT_STAR1_LUM**
799+
-
800+
* - Data type:
801+
- DOUBLE
802+
* - COMPAS variable:
803+
- BaseBinaryStar::m_RLOFDetails.propsPostMT→luminosity1
804+
* - Description:
805+
- Luminosity (\ :math:`L_\odot`) of the primary immediately after RLOF.
806+
* - Header String:
807+
- Lum(1)>MT
808+
809+
.. flat-table::
810+
:widths: 25 75 1 1
811+
:header-rows: 0
812+
:class: aligned-text
813+
814+
* - :cspan:`2` **RLOF_POST_MT_STAR2_LUM**
815+
-
816+
* - Data type:
817+
- DOUBLE
818+
* - COMPAS variable:
819+
- BaseBinaryStar::m_RLOFDetails.propsPostMT→luminosity2
820+
* - Description:
821+
- Luminosity (\ :math:`L_\odot`) of the secondary immediately after RLOF.
822+
* - Header String:
823+
- Lum(2)>MT
824+
793825
.. flat-table::
794826
:widths: 25 75 1 1
795827
:header-rows: 0
@@ -854,6 +886,38 @@ Binary Properties
854886
* - Header String:
855887
- Radius(2)>MT
856888

889+
.. flat-table::
890+
:widths: 25 75 1 1
891+
:header-rows: 0
892+
:class: aligned-text
893+
894+
* - :cspan:`2` **RLOF_POST_MT_STAR1_TEFF**
895+
-
896+
* - Data type:
897+
- DOUBLE
898+
* - COMPAS variable:
899+
- BaseBinaryStar::m_RLOFDetails.propsPostMT→temperature1
900+
* - Description:
901+
- Effective temperature (\ :math:`K`) of the primary immediately after RLOF.
902+
* - Header String:
903+
- Teff(1)>MT
904+
905+
.. flat-table::
906+
:widths: 25 75 1 1
907+
:header-rows: 0
908+
:class: aligned-text
909+
910+
* - :cspan:`2` **RLOF_POST_MT_STAR2_TEFF**
911+
-
912+
* - Data type:
913+
- DOUBLE
914+
* - COMPAS variable:
915+
- BaseBinaryStar::m_RLOFDetails.propsPostMT→temperature2
916+
* - Description:
917+
- Effective temperature (\ :math:`K`) of the secondary immediately after RLOF.
918+
* - Header String:
919+
- Teff(2)>MT
920+
857921
.. flat-table::
858922
:widths: 25 75 1 1
859923
:header-rows: 0
@@ -1026,6 +1090,39 @@ but not both. If both are printed then the file will contain two columns with th
10261090
* - Header String:
10271091
- SemiMajorAxis<MT
10281092

1093+
.. flat-table::
1094+
:widths: 25 75 1 1
1095+
:header-rows: 0
1096+
:class: aligned-text
1097+
1098+
* - :cspan:`2` **RLOF_PRE_MT_STAR1_LUM**
1099+
-
1100+
* - Data type:
1101+
- DOUBLE
1102+
* - COMPAS variable:
1103+
- BaseBinaryStar::m_RLOFDetails.propsPreMT→luminosity1
1104+
* - Description:
1105+
- Luminosity (\ :math:`L_\odot`) of the primary at the onset of RLOF.
1106+
* - Header String:
1107+
- Lum(1)<MT
1108+
1109+
.. flat-table::
1110+
:widths: 25 75 1 1
1111+
:header-rows: 0
1112+
:class: aligned-text
1113+
1114+
* - :cspan:`2` **RLOF_PRE_MT_STAR2_LUM**
1115+
-
1116+
* - Data type:
1117+
- DOUBLE
1118+
* - COMPAS variable:
1119+
- BaseBinaryStar::m_RLOFDetails.propsPreMT→luminosity2
1120+
* - Description:
1121+
- Luminosity (\ :math:`L_\odot`) of the secondary at the onset of RLOF.
1122+
* - Header String:
1123+
- Lum(2)<MT
1124+
1125+
10291126
.. flat-table::
10301127
:widths: 25 75 1 1
10311128
:header-rows: 0
@@ -1090,6 +1187,38 @@ but not both. If both are printed then the file will contain two columns with th
10901187
* - Header String:
10911188
- Radius(2)<MT
10921189

1190+
.. flat-table::
1191+
:widths: 25 75 1 1
1192+
:header-rows: 0
1193+
:class: aligned-text
1194+
1195+
* - :cspan:`2` **RLOF_PRE_MT_STAR1_TEFF**
1196+
-
1197+
* - Data type:
1198+
- DOUBLE
1199+
* - COMPAS variable:
1200+
- BaseBinaryStar::m_RLOFDetails.propsPreMT→temperature1
1201+
* - Description:
1202+
- Effective temperature (\ :math:`K`) of the primary at the onset of RLOF.
1203+
* - Header String:
1204+
- Teff(1)<MT
1205+
1206+
.. flat-table::
1207+
:widths: 25 75 1 1
1208+
:header-rows: 0
1209+
:class: aligned-text
1210+
1211+
* - :cspan:`2` **RLOF_PRE_MT_STAR2_TEFF**
1212+
-
1213+
* - Data type:
1214+
- DOUBLE
1215+
* - COMPAS variable:
1216+
- BaseBinaryStar::m_RLOFDetails.propsPreMT→temperature2
1217+
* - Description:
1218+
- Effective temperature (\ :math:`K`) of the secondary at the onset of RLOF.
1219+
* - Header String:
1220+
- Teff(2)<MT
1221+
10931222
.. flat-table::
10941223
:widths: 25 75 1 1
10951224
:header-rows: 0

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

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -818,6 +818,20 @@ Options: {ZERO, MANDEL, BRCEK} |br|
818818
``BRCEK`` : Core mass according to Shikauchi et al. (2024) with added rejuvenation of MS accretors and updated stellar tracks |br|
819819
Default = MANDEL
820820

821+
**--maltsev-fallback** |br|
822+
Fixed fallback fraction when using MALTSEV2024 remnant mass prescription (must be between 0 and 1). |br|
823+
A value of 0.0 means that fallback BHs get no fallback, only the mass of the proto-NS remnant (and will get flagged as NSs). |br|
824+
A value of 1.0 means that fallback BHs get total fallback, taking the mass of the progenitor up to and including the He core (but not the H envelope). |br|
825+
Default = 0.5
826+
827+
**--maltsev-mode** |br|
828+
Choice of which variant for the MALTSEV remnant mass prescription. Variants pertain to the treatment of extrapolation at low metallicities, and are described in detail in Willcox+ 2025. |br|
829+
Options: {OPTIMISTIC, BALANCED, PESSIMISTIC} |br|
830+
``OPTIMISTIC`` : Compactness-peak BHs formed from the lowest CO-mass progenitors for a given metallicity. |br|
831+
``PESSIMISTIC`` : Compactness-peak BHs only formed from the highest CO-mass progenitors for a given metallicity. |br|
832+
``BALANCED`` : Compactness-peak BHs formed from CO-mass progenitors with masses between the two previous extremes for a given metallicity. |br|
833+
Default = BALANCED
834+
821835
**--mass-change-fraction** |br|
822836
Approximate desired fractional change in stellar mass on phase when setting SSE and BSE timesteps (applied before ``--timestep--multiplier``). |br|
823837
Recommended value is 0.005. |br|

online-docs/pages/whats-new.rst

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,12 @@ 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.24.00 August 19, 2025**
7+
8+
* Updated Maltsev remnant mass prescription to include the 3 variants described in Willcox+ 2025 (bimodality paper).
9+
* New related options `--maltsev-fallback` which takes a float between 0 and 1 to specify the fallback fraction, and
10+
`--maltsev-mode` with choices `'OPTIMISTIC','PESSIMISTIC','BALANCED'` for the extrapolation prescription (see Willcox+ 2025b)
11+
612
**03.23.00 August 09, 2025**
713

814
* The following option is now deprecated, and will be removed in 1 year:

src/BaseBinaryStar.cpp

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -572,6 +572,10 @@ COMPAS_VARIABLE BaseBinaryStar::BinaryPropertyValue(const T_ANY_PROPERTY p_Prope
572572
case BINARY_PROPERTY::RLOF_POST_MT_STAR2_MASS: value = RLOFDetails().propsPostMT->mass2; break;
573573
case BINARY_PROPERTY::RLOF_POST_MT_STAR1_RADIUS: value = RLOFDetails().propsPostMT->radius1; break;
574574
case BINARY_PROPERTY::RLOF_POST_MT_STAR2_RADIUS: value = RLOFDetails().propsPostMT->radius2; break;
575+
case BINARY_PROPERTY::RLOF_POST_MT_STAR1_TEFF: value = RLOFDetails().propsPostMT->temperature1; break;
576+
case BINARY_PROPERTY::RLOF_POST_MT_STAR2_TEFF: value = RLOFDetails().propsPostMT->temperature2; break;
577+
case BINARY_PROPERTY::RLOF_POST_MT_STAR1_LUM: value = RLOFDetails().propsPostMT->luminosity1; break;
578+
case BINARY_PROPERTY::RLOF_POST_MT_STAR2_LUM: value = RLOFDetails().propsPostMT->luminosity2; break;
575579
case BINARY_PROPERTY::RLOF_POST_MT_STAR1_RLOF: value = RLOFDetails().propsPostMT->isRLOF1; break;
576580
case BINARY_PROPERTY::RLOF_POST_MT_STAR2_RLOF: value = RLOFDetails().propsPostMT->isRLOF2; break;
577581
case BINARY_PROPERTY::RLOF_POST_MT_STAR1_STELLAR_TYPE: value = RLOFDetails().propsPostMT->stellarType1; break;
@@ -586,6 +590,10 @@ COMPAS_VARIABLE BaseBinaryStar::BinaryPropertyValue(const T_ANY_PROPERTY p_Prope
586590
case BINARY_PROPERTY::RLOF_PRE_MT_STAR2_MASS: value = RLOFDetails().propsPreMT->mass2; break;
587591
case BINARY_PROPERTY::RLOF_PRE_MT_STAR1_RADIUS: value = RLOFDetails().propsPreMT->radius1; break;
588592
case BINARY_PROPERTY::RLOF_PRE_MT_STAR2_RADIUS: value = RLOFDetails().propsPreMT->radius2; break;
593+
case BINARY_PROPERTY::RLOF_PRE_MT_STAR1_TEFF: value = RLOFDetails().propsPreMT->temperature1; break;
594+
case BINARY_PROPERTY::RLOF_PRE_MT_STAR2_TEFF: value = RLOFDetails().propsPreMT->temperature2; break;
595+
case BINARY_PROPERTY::RLOF_PRE_MT_STAR1_LUM: value = RLOFDetails().propsPreMT->luminosity1; break;
596+
case BINARY_PROPERTY::RLOF_PRE_MT_STAR2_LUM: value = RLOFDetails().propsPreMT->luminosity2; break;
589597
case BINARY_PROPERTY::RLOF_PRE_MT_STAR1_RLOF: value = RLOFDetails().propsPreMT->isRLOF1; break;
590598
case BINARY_PROPERTY::RLOF_PRE_MT_STAR2_RLOF: value = RLOFDetails().propsPreMT->isRLOF2; break;
591599
case BINARY_PROPERTY::RLOF_PRE_MT_STAR1_STELLAR_TYPE: value = RLOFDetails().propsPreMT->stellarType1; break;
@@ -906,6 +914,10 @@ void BaseBinaryStar::StashRLOFProperties(const MT_TIMING p_Which) {
906914
rlofPropertiesToReset->massLossRateFromDonor = m_MassLossRateInRLOF;
907915
rlofPropertiesToReset->accretionEfficiency = m_FractionAccreted;
908916
rlofPropertiesToReset->massTransferTimescale = m_MassTransferTimescale;
917+
rlofPropertiesToReset->temperature1 = m_Star1->Temperature();
918+
rlofPropertiesToReset->temperature2 = m_Star2->Temperature();
919+
rlofPropertiesToReset->luminosity1 = m_Star1->Luminosity();
920+
rlofPropertiesToReset->luminosity2 = m_Star2->Luminosity();
909921
}
910922

911923

src/ErrorCatalog.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -166,6 +166,7 @@ enum class ERROR: int {
166166
UNKNOWN_KICK_MAGNITUDE_DISTRIBUTION, // unknown kick magnitude distribution
167167
UNKNOWN_LOGFILE, // unknown log file
168168
UNKNOWN_LBV_MASS_LOSS_PRESCRIPTION, // unknown LBV mass loss prescription
169+
UNKNOWN_MALTSEV_MODE, // unknown maltsev mode
169170
UNKNOWN_MT_ACCRETION_EFFICIENCY_PRESCRIPTION, // unknown mass transfer accretion efficiency prescription
170171
UNKNOWN_MT_ANGULAR_MOMENTUM_LOSS_PRESCRIPTION, // unknown mass transfer angular momentum loss prescription
171172
UNKNOWN_MASS_LOSS_PRESCRIPTION, // unknown mass loss prescription
@@ -342,6 +343,7 @@ const COMPASUnorderedMap<ERROR, std::tuple<ERROR_SCOPE, std::string>> ERROR_CATA
342343
{ ERROR::UNKNOWN_KICK_MAGNITUDE_DISTRIBUTION, { ERROR_SCOPE::ALWAYS, "Unknown kick magnitude distribution" }},
343344
{ ERROR::UNKNOWN_LBV_MASS_LOSS_PRESCRIPTION, { ERROR_SCOPE::ALWAYS, "Unknown LBV mass loss prescription" }},
344345
{ ERROR::UNKNOWN_LOGFILE, { ERROR_SCOPE::ALWAYS, "Unknown log file" }},
346+
{ ERROR::UNKNOWN_MALTSEV_MODE, { ERROR_SCOPE::ALWAYS, "Unknown Maltsev remnant mass mode" }},
345347
{ ERROR::UNKNOWN_MT_CASE, { ERROR_SCOPE::ALWAYS, "Unknown mass transfer case" }},
346348
{ ERROR::UNKNOWN_MT_ACCRETION_EFFICIENCY_PRESCRIPTION, { ERROR_SCOPE::ALWAYS, "Unknown mass transfer accretion efficiency prescription" }},
347349
{ ERROR::UNKNOWN_MT_ANGULAR_MOMENTUM_LOSS_PRESCRIPTION, { ERROR_SCOPE::ALWAYS, "Unknown mass transfer angular momentum loss prescription" }},

0 commit comments

Comments
 (0)