From 371444791045846a28309c1984d08c94292d90aa Mon Sep 17 00:00:00 2001 From: Reinhold Willcox Date: Mon, 18 Aug 2025 13:58:43 +0200 Subject: [PATCH 1/7] klencki AM loss --- src/BaseBinaryStar.cpp | 20 +++++++++++++++++--- src/LogTypedefs.h | 12 ++++++------ src/Options.cpp | 22 +++++++++++----------- src/Options.h | 8 ++++---- src/typedefs.h | 3 ++- 5 files changed, 40 insertions(+), 25 deletions(-) diff --git a/src/BaseBinaryStar.cpp b/src/BaseBinaryStar.cpp index 04abbdacd..0f810f99b 100644 --- a/src/BaseBinaryStar.cpp +++ b/src/BaseBinaryStar.cpp @@ -1849,18 +1849,32 @@ double BaseBinaryStar::CalculateGammaAngularMomentumLoss_Static(const double p_D } break; case MT_ANGULAR_MOMENTUM_LOSS_PRESCRIPTION::MACLEOD_LINEAR : { // linear interpolation on separation between accretor and L2 point - // interpolate in separation between a_acc and a_L2, both normalized to units of separation a + // Interpolate linearly in separation between a_acc and a_L2, both normalized to units of separation a double q = p_AccretorMass / p_DonorMass; double qPlus1 = 1.0 + q; double aL2 = std::sqrt(M_SQRT2); // roughly, coincides with CIRCUMBINARY_RING def above double aAcc = 1.0 / qPlus1; double fMacleod = p_IsAccretorDegenerate - ? OPTIONS->MassTransferJlossMacLeodLinearFractionDegen() - : OPTIONS->MassTransferJlossMacLeodLinearFractionNonDegen(); + ? OPTIONS->MassTransferJlossLinearFractionDegen() + : OPTIONS->MassTransferJlossLinearFractionNonDegen(); double aGamma = aAcc + (aL2 - aAcc) * fMacleod; gamma = aGamma * aGamma * qPlus1 * qPlus1 / q; } break; + case MT_ANGULAR_MOMENTUM_LOSS_PRESCRIPTION::KLENCKI_LINEAR : { // linear interpolation on separation between accretor and L2 point + // Interpolate linearly in specific AM loss parameter gamma + double q = p_AccretorMass / p_DonorMass; + double qPlus1 = 1.0 + q; + double qPlus1SquaredByQ = qPlus1 * qPlus1 / q; + double aL2 = std::sqrt(M_SQRT2); // roughly, coincides with CIRCUMBINARY_RING def above + double aAcc = 1.0 / qPlus1; + double gammaL2 = aL2 * aL2 * qPlus1SquaredByQ; + double gammaAcc = aAcc * aAcc * qPlus1SquaredByQ; + double fKlencki = p_IsAccretorDegenerate + ? OPTIONS->MassTransferJlossLinearFractionDegen() + : OPTIONS->MassTransferJlossLinearFractionNonDegen(); + gamma = gammaAcc + (gammaL2 - gammaAcc) * fKlencki; + } break; default: // unknown prescription // the only way this can happen is if someone added an MT_ANGULAR_MOMENTUM_LOSS_PRESCRIPTION // and it isn't accounted for in this code. We should not default here, with or without a warning. diff --git a/src/LogTypedefs.h b/src/LogTypedefs.h index f8f327423..8feb68b7d 100644 --- a/src/LogTypedefs.h +++ b/src/LogTypedefs.h @@ -916,8 +916,8 @@ enum class PROGRAM_OPTION: int { MT_FRACTION_ACCRETED, MT_JLOSS, - MT_JLOSS_MACLEOD_LINEAR_FRACTION_DEGEN, - MT_JLOSS_MACLEOD_LINEAR_FRACTION_NON_DEGEN, + MT_JLOSS_LINEAR_FRACTION_DEGEN, + MT_JLOSS_LINEAR_FRACTION_NON_DEGEN, MT_REJUVENATION_PRESCRIPTION, MT_THERMALLY_LIMITED_VARIATION, @@ -1143,8 +1143,8 @@ const COMPASUnorderedMap PROGRAM_OPTION_LABEL = { { PROGRAM_OPTION::MT_FRACTION_ACCRETED, "MT_FRACTION_ACCRETED" }, { PROGRAM_OPTION::MT_JLOSS, "MT_JLOSS" }, - { PROGRAM_OPTION::MT_JLOSS_MACLEOD_LINEAR_FRACTION_DEGEN, "MT_JLOSS_MACLEOD_LINEAR_FRACTION_DEGEN" }, - { PROGRAM_OPTION::MT_JLOSS_MACLEOD_LINEAR_FRACTION_NON_DEGEN, "MT_JLOSS_MACLEOD_LINEAR_FRACTION_NON_DEGEN" }, + { PROGRAM_OPTION::MT_JLOSS_LINEAR_FRACTION_DEGEN, "MT_JLOSS_LINEAR_FRACTION_DEGEN" }, + { PROGRAM_OPTION::MT_JLOSS_LINEAR_FRACTION_NON_DEGEN, "MT_JLOSS_LINEAR_FRACTION_NON_DEGEN" }, { PROGRAM_OPTION::MT_REJUVENATION_PRESCRIPTION, "MT_REJUVENATION_PRESCRIPTION" }, { PROGRAM_OPTION::MT_THERMALLY_LIMITED_VARIATION, "MT_THERMALLY_LIMITED_VARIATION" }, @@ -1724,8 +1724,8 @@ const std::map PROGRAM_OPTION_DETAIL = { { PROGRAM_OPTION::MT_FRACTION_ACCRETED, { TYPENAME::DOUBLE, "PO_MT_Fraction_Accreted", "-", 24, 15}}, { PROGRAM_OPTION::MT_JLOSS, { TYPENAME::DOUBLE, "PO_MT_JLoss", "-", 24, 15}}, - { PROGRAM_OPTION::MT_JLOSS_MACLEOD_LINEAR_FRACTION_DEGEN, { TYPENAME::DOUBLE, "PO_MT_JLoss_Macleod_Linear_Frac_Degen", "-", 24, 15}}, - { PROGRAM_OPTION::MT_JLOSS_MACLEOD_LINEAR_FRACTION_NON_DEGEN, { TYPENAME::DOUBLE, "PO_MT_JLoss_Macleod_Linear_Frac_Non_Degen", "-", 24, 15}}, + { PROGRAM_OPTION::MT_JLOSS_LINEAR_FRACTION_DEGEN, { TYPENAME::DOUBLE, "PO_MT_JLoss_Linear_Frac_Degen", "-", 24, 15}}, + { PROGRAM_OPTION::MT_JLOSS_LINEAR_FRACTION_NON_DEGEN, { TYPENAME::DOUBLE, "PO_MT_JLoss_Linear_Frac_Non_Degen", "-", 24, 15}}, { PROGRAM_OPTION::MT_REJUVENATION_PRESCRIPTION, { TYPENAME::INT, "PO_MT_Rejuvenation_Prscrptn", "-", 4, 1 }}, { PROGRAM_OPTION::MT_THERMALLY_LIMITED_VARIATION, { TYPENAME::INT, "PO_MT_Thermally_Lmtd_Variation", "-", 4, 1 }}, diff --git a/src/Options.cpp b/src/Options.cpp index da91cff4d..a6db3100b 100644 --- a/src/Options.cpp +++ b/src/Options.cpp @@ -479,8 +479,8 @@ void Options::OptionValues::Initialise() { // Mass transfer angular momentum loss prescription options m_MassTransferJloss = 1.0; - m_MassTransferJlossMacLeodLinearFractionDegen = 0.5; - m_MassTransferJlossMacLeodLinearFractionNonDegen = 0.5; + m_MassTransferJlossLinearFractionDegen = 0.5; + m_MassTransferJlossLinearFractionNonDegen = 0.5; m_MassTransferAngularMomentumLossPrescription.type = MT_ANGULAR_MOMENTUM_LOSS_PRESCRIPTION::ISOTROPIC_RE_EMISSION; m_MassTransferAngularMomentumLossPrescription.typeString = MT_ANGULAR_MOMENTUM_LOSS_PRESCRIPTION_LABEL.at(m_MassTransferAngularMomentumLossPrescription.type); @@ -1481,14 +1481,14 @@ bool Options::AddOptions(OptionValues *p_Options, po::options_description *p_Opt ("Fraction of specific angular momentum which non-accreted matter removes from the system (default = " + std::to_string(p_Options->m_MassTransferJloss) + ")").c_str() ) ( - "mass-transfer-jloss-macleod-linear-fraction-degen", - po::value(&p_Options->m_MassTransferJlossMacLeodLinearFractionDegen)->default_value(p_Options->m_MassTransferJlossMacLeodLinearFractionDegen), - ("Interpolation fraction for jloss prescription for degenerate accretors, requires --mass-transfer-angular-momentum-loss-prescription=MACLEOD_LINEAR. 0 is gamma_acc, 1 is gamma_L2 (default = " + std::to_string(p_Options->m_MassTransferJlossMacLeodLinearFractionDegen) + ")").c_str() + "mass-transfer-jloss-linear-fraction-degen", + po::value(&p_Options->m_MassTransferJlossLinearFractionDegen)->default_value(p_Options->m_MassTransferJlossLinearFractionDegen), + ("Interpolation fraction for jloss prescription for degenerate accretors, requires --mass-transfer-angular-momentum-loss-prescription=MACLEOD_LINEAR or KLENCKI_LINEAR. 0 is gamma_acc, 1 is gamma_L2 (default = " + std::to_string(p_Options->m_MassTransferJlossLinearFractionDegen) + ")").c_str() ) ( - "mass-transfer-jloss-macleod-linear-fraction-non-degen", - po::value(&p_Options->m_MassTransferJlossMacLeodLinearFractionNonDegen)->default_value(p_Options->m_MassTransferJlossMacLeodLinearFractionNonDegen), - ("Interpolation fraction for jloss prescription for non-degenerate accretors, requires --mass-transfer-angular-momentum-loss-prescription=MACLEOD_LINEAR. 0 is gamma_acc, 1 is gamma_L2 (default = " + std::to_string(p_Options->m_MassTransferJlossMacLeodLinearFractionNonDegen) + ")").c_str() + "mass-transfer-jloss-linear-fraction-non-degen", + po::value(&p_Options->m_MassTransferJlossLinearFractionNonDegen)->default_value(p_Options->m_MassTransferJlossLinearFractionNonDegen), + ("Interpolation fraction for jloss prescription for non-degenerate accretors, requires --mass-transfer-angular-momentum-loss-prescription=MACLEOD_LINEAR or KLENCKI_LINEAR. 0 is gamma_acc, 1 is gamma_L2 (default = " + std::to_string(p_Options->m_MassTransferJlossLinearFractionNonDegen) + ")").c_str() ) ( "mass-transfer-thermal-limit-C", @@ -2582,7 +2582,7 @@ std::string Options::OptionValues::CheckAndSetOptions() { COMPLAIN_IF(m_LuminousBlueVariableFactor < 0.0, "LBV multiplier (--luminous-blue-variable-multiplier) < 0"); COMPLAIN_IF(m_MassChangeFraction <= 0.0, "Mass change fraction per timestep (--mass-change-fraction) <= 0"); - + COMPLAIN_IF(m_MassRatio <= 0.0 || m_MassRatio > 1.0, "Mass ratio (--mass-ratio) must be greater than 0 and less than or equal to 1"); COMPLAIN_IF(m_MassRatioDistributionMin <= 0.0 || m_MassRatioDistributionMin > 1.0, "Minimum mass ratio (--mass-ratio-min) must be greater than 0 and less than or equal to 1"); @@ -5019,8 +5019,8 @@ COMPAS_VARIABLE Options::OptionValue(const T_ANY_PROPERTY p_Property) const { case PROGRAM_OPTION::MT_FRACTION_ACCRETED : value = MassTransferFractionAccreted(); break; case PROGRAM_OPTION::MT_JLOSS : value = MassTransferJloss(); break; - case PROGRAM_OPTION::MT_JLOSS_MACLEOD_LINEAR_FRACTION_DEGEN : value = MassTransferJlossMacLeodLinearFractionDegen(); break; - case PROGRAM_OPTION::MT_JLOSS_MACLEOD_LINEAR_FRACTION_NON_DEGEN : value = MassTransferJlossMacLeodLinearFractionNonDegen(); break; + case PROGRAM_OPTION::MT_JLOSS_LINEAR_FRACTION_DEGEN : value = MassTransferJlossLinearFractionDegen(); break; + case PROGRAM_OPTION::MT_JLOSS_LINEAR_FRACTION_NON_DEGEN : value = MassTransferJlossLinearFractionNonDegen(); break; case PROGRAM_OPTION::MT_REJUVENATION_PRESCRIPTION : value = static_cast(MassTransferRejuvenationPrescription()); break; case PROGRAM_OPTION::MT_THERMALLY_LIMITED_VARIATION : value = static_cast(MassTransferThermallyLimitedVariation()); break; diff --git a/src/Options.h b/src/Options.h index 12dd84f86..5094315da 100755 --- a/src/Options.h +++ b/src/Options.h @@ -1056,8 +1056,8 @@ class Options { ENUM_OPT m_MassTransferThermallyLimitedVariation; // Choose how to deal with mass transfer if it is set as thermally limited. double m_MassTransferJloss; // Specific angular momentum of the material leaving the system (not accreted) - double m_MassTransferJlossMacLeodLinearFractionDegen; // Linear interpolation fraction for jloss for degenerate accretors, between accretor and L2 position - double m_MassTransferJlossMacLeodLinearFractionNonDegen; // Linear interpolation fraction for jloss for non-degenerate accretors, between accretor and L2 position + double m_MassTransferJlossLinearFractionDegen; // Linear interpolation fraction for jloss for degenerate accretors, between accretor and L2 position (either Macleod or Klencki linear) + double m_MassTransferJlossLinearFractionNonDegen; // Linear interpolation fraction for jloss for non-degenerate accretors, between accretor and L2 position (either Macleod or Klencki linear) ENUM_OPT m_MassTransferAngularMomentumLossPrescription; // Which mass transfer angular momentum loss prescription // Mass transfer rejuvenation prescription @@ -1613,8 +1613,8 @@ class Options { double MassTransferFractionAccreted() const { return OPT_VALUE("mass-transfer-fa", m_MassTransferFractionAccreted, true); } double MassTransferJloss() const { return OPT_VALUE("mass-transfer-jloss", m_MassTransferJloss, true); } - double MassTransferJlossMacLeodLinearFractionDegen() const { return OPT_VALUE("mass-transfer-jloss-macleod-linear-fraction-degen", m_MassTransferJlossMacLeodLinearFractionDegen, true); } - double MassTransferJlossMacLeodLinearFractionNonDegen() const { return OPT_VALUE("mass-transfer-jloss-macleod-linear-fraction-non-degen", m_MassTransferJlossMacLeodLinearFractionNonDegen, true); } + double MassTransferJlossLinearFractionDegen() const { return OPT_VALUE("mass-transfer-jloss-linear-fraction-degen", m_MassTransferJlossLinearFractionDegen, true); } + double MassTransferJlossLinearFractionNonDegen() const { return OPT_VALUE("mass-transfer-jloss-linear-fraction-non-degen", m_MassTransferJlossLinearFractionNonDegen, true); } MT_REJUVENATION_PRESCRIPTION MassTransferRejuvenationPrescription() const { return OPT_VALUE("mass-transfer-rejuvenation-prescription", m_MassTransferRejuvenationPrescription.type, true); } MT_THERMALLY_LIMITED_VARIATION MassTransferThermallyLimitedVariation() const { return OPT_VALUE("mass-transfer-thermal-limit-accretor-multiplier", m_MassTransferThermallyLimitedVariation.type, true); } double MaxEvolutionTime() const { return OPT_VALUE("maximum-evolution-time", m_MaxEvolutionTime, true); } diff --git a/src/typedefs.h b/src/typedefs.h index 8be1c4c4c..84cd638dd 100755 --- a/src/typedefs.h +++ b/src/typedefs.h @@ -650,12 +650,13 @@ const COMPASUnorderedMap MT_A }; // mass transfer angular momentum loss prescriptions -enum class MT_ANGULAR_MOMENTUM_LOSS_PRESCRIPTION: int { JEANS, ISOTROPIC_RE_EMISSION, CIRCUMBINARY_RING, MACLEOD_LINEAR, ARBITRARY }; +enum class MT_ANGULAR_MOMENTUM_LOSS_PRESCRIPTION: int { JEANS, ISOTROPIC_RE_EMISSION, CIRCUMBINARY_RING, MACLEOD_LINEAR, KLENCKI_LINEAR, ARBITRARY }; const COMPASUnorderedMap MT_ANGULAR_MOMENTUM_LOSS_PRESCRIPTION_LABEL = { { MT_ANGULAR_MOMENTUM_LOSS_PRESCRIPTION::JEANS, "JEANS" }, { MT_ANGULAR_MOMENTUM_LOSS_PRESCRIPTION::ISOTROPIC_RE_EMISSION, "ISOTROPIC" }, { MT_ANGULAR_MOMENTUM_LOSS_PRESCRIPTION::CIRCUMBINARY_RING, "CIRCUMBINARY" }, { MT_ANGULAR_MOMENTUM_LOSS_PRESCRIPTION::MACLEOD_LINEAR, "MACLEOD_LINEAR" }, + { MT_ANGULAR_MOMENTUM_LOSS_PRESCRIPTION::KLENCKI_LINEAR, "KLENCKI_LINEAR" }, { MT_ANGULAR_MOMENTUM_LOSS_PRESCRIPTION::ARBITRARY, "ARBITRARY" } }; From 5dffb4d4c2be7e31484f9fd31aa6794443c0e177 Mon Sep 17 00:00:00 2001 From: Reinhold Willcox Date: Mon, 18 Aug 2025 14:00:05 +0200 Subject: [PATCH 2/7] changelog --- src/changelog.h | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/changelog.h b/src/changelog.h index 3c48f6fb9..0b80e49d7 100644 --- a/src/changelog.h +++ b/src/changelog.h @@ -1650,6 +1650,8 @@ // 03.23.01 IM - August 18, 2025 - Enhancement, defect repair: // - In the MALTSEV SN prescription, treat wind-stripped stars as if they experienced case B mass transfer // - Limit the output of CalculateEtaPTY() [Helium accretion efficiency onto WDs from Piersanti+ 2014, A3] to be in [0,1] +// 03.23.02 RTW - August 18, 2025 - Enhancement: +// - Added KLENCKI_LINEAR AM loss, which is linear in the specific AM gamma instead of the orbital separation (as in MACLEOD_LINEAR) // // // Version string format is MM.mm.rr, where @@ -1661,7 +1663,7 @@ // if MM is incremented, set mm and rr to 00, even if defect repairs and minor enhancements were also made // if mm is incremented, set rr to 00, even if defect repairs were also made -const std::string VERSION_STRING = "03.23.01"; +const std::string VERSION_STRING = "03.23.02"; # endif // __changelog_h__ From 283c35e2c7e694dcd7d6a1e7292a3347f7e9cddb Mon Sep 17 00:00:00 2001 From: Reinhold Willcox Date: Mon, 18 Aug 2025 14:07:41 +0200 Subject: [PATCH 3/7] fixed changelog to have an mm change, since this is technically a breaking change --- .../program-options-list-defaults.rst | 12 ++++++------ src/changelog.h | 4 ++-- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/online-docs/pages/User guide/Program options/program-options-list-defaults.rst b/online-docs/pages/User guide/Program options/program-options-list-defaults.rst index 919044783..96ed62031 100644 --- a/online-docs/pages/User guide/Program options/program-options-list-defaults.rst +++ b/online-docs/pages/User guide/Program options/program-options-list-defaults.rst @@ -878,7 +878,7 @@ Default = THERMAL **--mass-transfer-angular-momentum-loss-prescription** |br| Mass Transfer Angular Momentum Loss prescription. |br| -Options: { JEANS, ISOTROPIC, CIRCUMBINARY, MACLEOD_LINEAR, ARBITRARY } |br| +Options: { JEANS, ISOTROPIC, CIRCUMBINARY, KLENCKI_LINEAR, MACLEOD_LINEAR, ARBITRARY } |br| Default = ISOTROPIC **--mass-transfer-fa** |br| @@ -891,14 +891,14 @@ Specific angular momentum with which the non-accreted system leaves the system. Used when ``--mass-transfer-angular-momentum-loss-prescription = ARBITRARY``, ignored otherwise. |br| Default = 1.0 -**--mass-transfer-jloss-macleod-linear-fraction-degen** |br| +**--mass-transfer-jloss-linear-fraction-degen** |br| Specific angular momentum interpolation fraction for degenerate accretors, linear between 0 and 1 corresponding to the accretor and L2 point. |br| -Used when ``--mass-transfer-angular-momentum-loss-prescription = MACLEOD_LINEAR``, ignored otherwise. |br| +Used when ``--mass-transfer-angular-momentum-loss-prescription = KLENCKI_LINEAR`` or ``MACLEOD_LINEAR``, ignored otherwise. |br| Default = 0.5 -**--mass-transfer-jloss-macleod-linear-fraction-non-degen** |br| +**--mass-transfer-jloss-linear-fraction-non-degen** |br| Specific angular momentum interpolation fraction for non-degenerate accretors, linear between 0 and 1 corresponding to the accretor and L2 point. |br| -Used when ``--mass-transfer-angular-momentum-loss-prescription = MACLEOD_LINEAR``, ignored otherwise. |br| +Used when ``--mass-transfer-angular-momentum-loss-prescription = KLENCKI_LINEAR`` or ``MACLEOD_LINEAR``, ignored otherwise. |br| Default = 0.5 **--mass-transfer-rejuvenation-prescription** |br| @@ -1536,7 +1536,7 @@ Go to :ref:`the top of this page ` for the full alphabetical --critical-mass-ratio-helium-HG-non-degenerate-accretor, --critical-mass-ratio-helium-MS-degenerate-accretor, --critical-mass-ratio-helium-MS-non-degenerate-accretor, --critical-mass-ratio-helium-giant-degenerate-accretor, --critical-mass-ratio-helium-giant-non-degenerate-accretor, --critical-mass-ratio-white-dwarf-degenerate-accretor, --critical-mass-ratio-white-dwarf-non-degenerate-accretor, --eddington-accretion-factor, --mass-transfer, --use-mass-transfer, --mass-transfer-accretion-efficiency-prescription, ---mass-transfer-angular-momentum-loss-prescription, --mass-transfer-fa, --mass-transfer-jloss, --mass-transfer-jloss-macleod-linear-fraction-degen, --mass-transfer-jloss-macleod-linear-fraction-non-degen, +--mass-transfer-angular-momentum-loss-prescription, --mass-transfer-fa, --mass-transfer-jloss, --mass-transfer-jloss-linear-fraction-degen, --mass-transfer-jloss-linear-fraction-non-degen, --mass-transfer-rejuvenation-prescription, --mass-transfer-thermal-limit-accretor, --mass-transfer-thermal-limit-accretor-multiplier, --mass-transfer-thermal-limit-C, --retain-core-mass-during-caseA-mass-transfer, --stellar-zeta-prescription, --zeta-adiabatic-arbitrary, --zeta-main-sequence, --zeta-radiative-giant-star diff --git a/src/changelog.h b/src/changelog.h index 0b80e49d7..71a191912 100644 --- a/src/changelog.h +++ b/src/changelog.h @@ -1650,7 +1650,7 @@ // 03.23.01 IM - August 18, 2025 - Enhancement, defect repair: // - In the MALTSEV SN prescription, treat wind-stripped stars as if they experienced case B mass transfer // - Limit the output of CalculateEtaPTY() [Helium accretion efficiency onto WDs from Piersanti+ 2014, A3] to be in [0,1] -// 03.23.02 RTW - August 18, 2025 - Enhancement: +// 03.24.00 RTW - August 18, 2025 - Enhancement: // - Added KLENCKI_LINEAR AM loss, which is linear in the specific AM gamma instead of the orbital separation (as in MACLEOD_LINEAR) // // @@ -1663,7 +1663,7 @@ // if MM is incremented, set mm and rr to 00, even if defect repairs and minor enhancements were also made // if mm is incremented, set rr to 00, even if defect repairs were also made -const std::string VERSION_STRING = "03.23.02"; +const std::string VERSION_STRING = "03.24.00"; # endif // __changelog_h__ From d4446375f0e2fed12ff371a26ed5afaa737dc496 Mon Sep 17 00:00:00 2001 From: Reinhold Willcox Date: Tue, 19 Aug 2025 09:57:29 +0200 Subject: [PATCH 4/7] added old macleod-linear AM options to depracted list --- src/Options.h | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/Options.h b/src/Options.h index 5094315da..97c25310f 100755 --- a/src/Options.h +++ b/src/Options.h @@ -230,6 +230,8 @@ class Options { { "initial-mass-min", "initial-mass-function-min", false, "20250808" }, { "initial-mass-power", "initial-mass-function-power", false, "20250808" }, { "use-mass-loss", "mass-loss-prescription", false, "20250809" } + { "mass-transfer-jloss-macleod-linear-fraction-degen", "mass-transfer-jloss-linear-fraction-degen", false, "20250819" }, + { "mass-transfer-jloss-macleod-linear-fraction-non-degen", "mass-transfer-jloss-linear-fraction-non-degen", false, "20250819" }, }; std::vector> deprecatedOptionValues = { @@ -521,8 +523,8 @@ class Options { "mass-transfer", "mass-transfer-fa", "mass-transfer-jloss", - "mass-transfer-jloss-macleod-linear-fraction-degen", - "mass-transfer-jloss-macleod-linear-fraction-non-degen", + "mass-transfer-jloss-linear-fraction-degen", + "mass-transfer-jloss-linear-fraction-non-degen", "mass-transfer-accretion-efficiency-prescription", "mass-transfer-angular-momentum-loss-prescription", "mass-transfer-rejuvenation-prescription", From 36d51913f02d26ddc58eff49b66943d252cb7cfe Mon Sep 17 00:00:00 2001 From: Reinhold Willcox Date: Tue, 19 Aug 2025 10:01:45 +0200 Subject: [PATCH 5/7] what's new --- online-docs/pages/whats-new.rst | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/online-docs/pages/whats-new.rst b/online-docs/pages/whats-new.rst index c3a2e8dc4..fe925b3b0 100644 --- a/online-docs/pages/whats-new.rst +++ b/online-docs/pages/whats-new.rst @@ -3,6 +3,18 @@ What's new 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``. +**03.24.00 August 19, 2025** + +* Added KLENCKI_LINEAR AM loss, which is linear in the specific AM gamma instead of the orbital separation (as in MACLEOD_LINEAR). + +This is based on the variations explored in Klencki+ 2025, and is very similar in construction to the MACLEOD_LINEAR option, +with both requiring an interpolation fraction f set by the user. Therefore, the following options are deprecated: + + * ``--mass-transfer-jloss-macleod-linear-fraction-degen`` in favor of ``--mass-transfer-jloss-linear-fraction-degen`` + * ``--mass-transfer-jloss-macleod-linear-fraction-non-degen`` in favor of ``--mass-transfer-jloss-linear-fraction-non-degen`` + +and the replacement options apply for both MACLEOD_LINEAR and KLENCKI_LINEAR. + **03.23.00 August 09, 2025** * The following option is now deprecated, and will be removed in 1 year: From 73194064f8363747084e082b7c51f089806ca0e2 Mon Sep 17 00:00:00 2001 From: Reinhold Willcox Date: Tue, 19 Aug 2025 10:12:43 +0200 Subject: [PATCH 6/7] typos --- src/Options.h | 2 +- src/yaml.h | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/Options.h b/src/Options.h index 97c25310f..4b519a981 100755 --- a/src/Options.h +++ b/src/Options.h @@ -229,7 +229,7 @@ class Options { { "initial-mass-max", "initial-mass-function-max", false, "20250808" }, { "initial-mass-min", "initial-mass-function-min", false, "20250808" }, { "initial-mass-power", "initial-mass-function-power", false, "20250808" }, - { "use-mass-loss", "mass-loss-prescription", false, "20250809" } + { "use-mass-loss", "mass-loss-prescription", false, "20250809" }, { "mass-transfer-jloss-macleod-linear-fraction-degen", "mass-transfer-jloss-linear-fraction-degen", false, "20250819" }, { "mass-transfer-jloss-macleod-linear-fraction-non-degen", "mass-transfer-jloss-linear-fraction-non-degen", false, "20250819" }, }; diff --git a/src/yaml.h b/src/yaml.h index b93d44047..f0412ff2e 100644 --- a/src/yaml.h +++ b/src/yaml.h @@ -215,8 +215,8 @@ namespace yaml { " --critical-mass-ratio-white-dwarf-non-degenerate-accretor", " --mass-transfer-fa # Only if using mass-transfer-accretion-efficiency-prescription = 'FIXED'", " --mass-transfer-jloss # Only if using mass-transfer-angular-momentum-loss-prescription = 'FIXED'", - " --mass-transfer-jloss-macleod-linear-fraction-degen", - " --mass-transfer-jloss-macleod-linear-fraction-non-degen", + " --mass-transfer-jloss-linear-fraction-degen", + " --mass-transfer-jloss-linear-fraction-non-degen", " --mass-transfer-thermal-limit-C", " --zeta-adiabatic-arbitrary", " --zeta-main-sequence", From 93168a38ab15b4d447c5b11cfab8424826fd05c2 Mon Sep 17 00:00:00 2001 From: Reinhold Willcox Date: Tue, 19 Aug 2025 15:40:01 +0200 Subject: [PATCH 7/7] new yaml --- .../preprocessing/compasConfigDefault.yaml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/compas_python_utils/preprocessing/compasConfigDefault.yaml b/compas_python_utils/preprocessing/compasConfigDefault.yaml index e46a0e853..fdc1e7c68 100644 --- a/compas_python_utils/preprocessing/compasConfigDefault.yaml +++ b/compas_python_utils/preprocessing/compasConfigDefault.yaml @@ -1,5 +1,5 @@ ##~!!~## COMPAS option values -##~!!~## File Created Mon Aug 18 13:37:46 2025 by COMPAS v03.23.02 +##~!!~## File Created Tue Aug 19 15:39:23 2025 by COMPAS v03.25.00 ##~!!~## ##~!!~## The default COMPAS YAML file (``compasConfigDefault.yaml``), as distributed, has ##~!!~## all COMPAS option entries commented so that the COMPAS default value for the @@ -149,8 +149,8 @@ numericalChoices: # --critical-mass-ratio-white-dwarf-non-degenerate-accretor: 0.000000 # Default: 0.000000 # --mass-transfer-fa: 0.500000 # Default: 0.500000 # Only if using mass-transfer-accretion-efficiency-prescription = 'FIXED' # --mass-transfer-jloss: 1.000000 # Default: 1.000000 # Only if using mass-transfer-angular-momentum-loss-prescription = 'FIXED' -# --mass-transfer-jloss-macleod-linear-fraction-degen: 0.500000 # Default: 0.500000 -# --mass-transfer-jloss-macleod-linear-fraction-non-degen: 0.500000 # Default: 0.500000 +# --mass-transfer-jloss-linear-fraction-degen: 0.500000 # Default: 0.500000 +# --mass-transfer-jloss-linear-fraction-non-degen: 0.500000 # Default: 0.500000 # --mass-transfer-thermal-limit-C: 10.000000 # Default: 10.000000 # --zeta-adiabatic-arbitrary: 10000.00 # Default: 10000.00 # --zeta-main-sequence: 2.000000 # Default: 2.000000 @@ -263,7 +263,7 @@ stringChoices: # --case-BB-stability-prescription: 'ALWAYS_STABLE' # Default: 'ALWAYS_STABLE' # Options: ['ALWAYS_UNSTABLE','TREAT_AS_OTHER_MT','ALWAYS_STABLE_ONTO_NSBH','ALWAYS_STABLE'] # --critical-mass-ratio-prescription: 'NONE' # Default: 'NONE' # Options: ['HURLEY_HJELLMING_WEBBINK','GE','GE_IC','CLAEYS','NONE'] # --stellar-zeta-prescription: 'SOBERMAN' # Default: 'SOBERMAN' # Options: ['ARBITRARY','HURLEY','SOBERMAN'] -# --mass-transfer-angular-momentum-loss-prescription: 'ISOTROPIC' # Default: 'ISOTROPIC' # Options: ['ARBITRARY','MACLEOD_LINEAR','CIRCUMBINARY','ISOTROPIC','JEANS'] +# --mass-transfer-angular-momentum-loss-prescription: 'ISOTROPIC' # Default: 'ISOTROPIC' # Options: ['ARBITRARY','KLENCKI_LINEAR','MACLEOD_LINEAR','CIRCUMBINARY','ISOTROPIC','JEANS'] # --mass-transfer-accretion-efficiency-prescription: 'THERMAL' # Default: 'THERMAL' # Options: ['FIXED','THERMAL'] # --mass-transfer-rejuvenation-prescription: 'STARTRACK' # Default: 'STARTRACK' # Options: ['STARTRACK','HURLEY'] # --mass-transfer-thermal-limit-accretor-multiplier: 'CFACTOR' # Default: 'CFACTOR' # Options: ['ROCHELOBE','CFACTOR'] @@ -273,7 +273,7 @@ stringChoices: # --common-envelope-formalism: 'ENERGY' # Default: 'ENERGY' # Options: ['TWO_STAGE','ENERGY'] # --common-envelope-lambda-prescription: 'LAMBDA_NANJING' # Default: 'LAMBDA_NANJING' # Options: ['LAMBDA_DEWI','LAMBDA_KRUCKOW','LAMBDA_NANJING','LAMBDA_LOVERIDGE','LAMBDA_FIXED'] # Xu & Li 2010 # --common-envelope-mass-accretion-prescription: 'ZERO' # Default: 'ZERO' # Options: ['CHEVALIER','MACLEOD','UNIFORM','CONSTANT','ZERO'] -# --common-envelope-second-stage-gamma-prescription: 'ISOTROPIC' # Default: 'ISOTROPIC' # Options: ['ARBITRARY','MACLEOD_LINEAR','CIRCUMBINARY','ISOTROPIC','JEANS'] +# --common-envelope-second-stage-gamma-prescription: 'ISOTROPIC' # Default: 'ISOTROPIC' # Options: ['ARBITRARY','KLENCKI_LINEAR','MACLEOD_LINEAR','CIRCUMBINARY','ISOTROPIC','JEANS'] ### TIDES # --tides-prescription: 'NONE' # Default: 'NONE' # Options: ['KAPIL2025','PERFECT','NONE']