Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions src/HeMS.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -719,13 +719,13 @@ double HeMS::InterpolateGeEtAlQCrit() {
double logRadius = log10(m_Radius);
double qCritLowerMass = (logRadius < lowerLogRadiusLowerMass) ? qLowLow
: (logRadius > upperLogRadiusLowerMass) ? qLowUpp
: qLowLow + (upperLogRadiusLowerMass - logRadius) / (upperLogRadiusLowerMass - lowerLogRadiusLowerMass) * (qLowUpp - qLowLow);
: qLowLow + (logRadius - lowerLogRadiusLowerMass) / (upperLogRadiusLowerMass - lowerLogRadiusLowerMass) * (qLowUpp - qLowLow);
double qCritUpperMass = (logRadius < lowerLogRadiusUpperMass) ? qUppLow
: (logRadius > upperLogRadiusUpperMass) ? qUppUpp
: qUppLow + (upperLogRadiusUpperMass - logRadius) / (upperLogRadiusUpperMass - lowerLogRadiusUpperMass) * (qUppUpp - qUppLow);
: qUppLow + (logRadius - lowerLogRadiusUpperMass) / (upperLogRadiusUpperMass - lowerLogRadiusUpperMass) * (qUppUpp - qUppLow);

double logMass = log10(m_Mass);
return (logMass < logLowerMass) ? qCritLowerMass
: (logMass > logUpperMass) ? qCritUpperMass
: qCritLowerMass + (logUpperMass - logMass) / (logUpperMass - logLowerMass) * (qCritUpperMass - qCritLowerMass);
: qCritLowerMass + (logMass - logLowerMass) / (logUpperMass - logLowerMass) * (qCritUpperMass - qCritLowerMass);
}
18 changes: 10 additions & 8 deletions src/MainSequence.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1305,26 +1305,28 @@ double MainSequence::InterpolateGeEtAlQCrit(const QCRIT_PRESCRIPTION p_qCritPres
double logRadius = log10(m_Radius);
double qCritUpperEffLowerMass = (logRadius < lowerLogRadiusLowerMass) ? qUppLowLow
: (logRadius > upperLogRadiusLowerMass) ? qUppLowUpp
: qUppLowLow + (upperLogRadiusLowerMass - logRadius) / (upperLogRadiusLowerMass - lowerLogRadiusLowerMass) * (qUppLowUpp - qUppLowLow);
: qUppLowLow + (logRadius - lowerLogRadiusLowerMass) / (upperLogRadiusLowerMass - lowerLogRadiusLowerMass) * (qUppLowUpp - qUppLowLow);
double qCritUpperEffUpperMass = (logRadius < lowerLogRadiusUpperMass) ? qUppUppLow
: (logRadius > upperLogRadiusUpperMass) ? qUppUppUpp
: qUppUppLow + (upperLogRadiusUpperMass - logRadius) / (upperLogRadiusUpperMass - lowerLogRadiusUpperMass) * (qUppUppUpp - qUppUppLow);
: qUppUppLow + (logRadius - lowerLogRadiusUpperMass) / (upperLogRadiusUpperMass - lowerLogRadiusUpperMass) * (qUppUppUpp - qUppUppLow);
double qCritLowerEffLowerMass = (logRadius < lowerLogRadiusLowerMass) ? qLowLowLow
: (logRadius > upperLogRadiusLowerMass) ? qLowLowUpp
: qLowLowLow + (upperLogRadiusLowerMass - logRadius) / (upperLogRadiusLowerMass - lowerLogRadiusLowerMass) * (qLowLowUpp - qLowLowLow);
: qLowLowLow + (logRadius - lowerLogRadiusLowerMass) / (upperLogRadiusLowerMass - lowerLogRadiusLowerMass) * (qLowLowUpp - qLowLowLow);
double qCritLowerEffUpperMass = (logRadius < lowerLogRadiusUpperMass) ? qLowUppLow
: (logRadius > upperLogRadiusUpperMass) ? qLowUppUpp
: qLowUppLow + (upperLogRadiusUpperMass - logRadius) / (upperLogRadiusUpperMass - lowerLogRadiusUpperMass) * (qLowUppUpp - qLowUppLow);
: qLowUppLow + (logRadius - lowerLogRadiusUpperMass) / (upperLogRadiusUpperMass - lowerLogRadiusUpperMass) * (qLowUppUpp - qLowUppLow);

double logMass = log10(m_Mass);
double interpolatedQCritUpperEff = (logMass < logLowerMass) ? qCritUpperEffLowerMass
: (logMass > logUpperMass) ? qCritUpperEffUpperMass
: qCritUpperEffLowerMass + (logUpperMass - logMass) / (logUpperMass - logLowerMass) * (qCritUpperEffUpperMass - qCritUpperEffLowerMass);
: qCritUpperEffLowerMass + (logMass - logLowerMass) / (logUpperMass - logLowerMass) * (qCritUpperEffUpperMass - qCritUpperEffLowerMass);
double interpolatedQCritLowerEff = (logMass < logLowerMass) ? qCritLowerEffLowerMass
: (logMass > logUpperMass) ? qCritLowerEffUpperMass
: qCritLowerEffLowerMass + (logUpperMass - logMass) / (logUpperMass - logLowerMass) * (qCritLowerEffUpperMass - qCritLowerEffLowerMass);

double interpolatedQCritForZ = p_massTransferEfficiencyBeta * interpolatedQCritUpperEff + (1.0 - p_massTransferEfficiencyBeta) * interpolatedQCritLowerEff; // Don't need to use nearest neighbor for this, beta is always between 0 and 1
: qCritLowerEffLowerMass + (logMass - logLowerMass) / (logUpperMass - logLowerMass) * (qCritLowerEffUpperMass - qCritLowerEffLowerMass);

double fBeta = (p_massTransferEfficiencyBeta > 0.5) ? (p_massTransferEfficiencyBeta - 0.5) / 0.5 //define a local interpolation factor from 0 to 1 within the selected beta interval
: p_massTransferEfficiencyBeta / 0.5;
double interpolatedQCritForZ = fBeta * interpolatedQCritUpperEff + (1.0 - fBeta) * interpolatedQCritLowerEff; // Don't need to use nearest neighbor for this, beta is always between 0 and 1
qCritPerMetallicity[ii] = interpolatedQCritForZ;
}
double logZlo = -3; // log10(0.001)
Expand Down
4 changes: 3 additions & 1 deletion src/changelog.h
Original file line number Diff line number Diff line change
Expand Up @@ -1705,6 +1705,8 @@
// - Corrected the M&M NS remnant mass prescription to never return a remnant mass larger than the CO core mass (see issue #1468)
// 03.29.05 AG - May 26, 2026 - Defect repair:
// - Fix for generalized issue #1378: reinstate "false" fallback option for SN kick angle options (mistakenly changed to "true" in v03.00.00)
// 03.29.06 DH - September 23, 2026 - Defect repair:
// - Fix for issue #1484: reversed interpolation factors for mass transfer stability with Ge's model q_crit, in MainSequence and HeMS
//
// Version string format is MM.mm.rr, where
//
Expand All @@ -1715,7 +1717,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.29.05";
const std::string VERSION_STRING = "03.29.06";


# endif // __changelog_h__