@@ -1093,33 +1093,36 @@ double BaseStar::CalculateLambdaLoveridgeEnergyFormalism(const double p_EnvMass,
10931093 * @return Common envelope lambda parameter
10941094 */
10951095double BaseStar::EvaluateLambdaNanjing () const {
1096+
10961097 double mass = m_MZAMS;
1098+ double lambda = 0.0 ;
10971099 if (OPTIONS->CommonEnvelopeLambdaNanjingUseRejuvenatedMass ()) {mass = m_Mass0;} // Use rejuvenated mass to calculate lambda instead of true birth mass
10981100
10991101 if (OPTIONS->CommonEnvelopeLambdaNanjingEnhanced ()) { // If using enhanced Nanjing lambda's
11001102 if (OPTIONS->CommonEnvelopeLambdaNanjingInterpolateInMass ()) {
11011103 if (OPTIONS->CommonEnvelopeLambdaNanjingInterpolateInMetallicity ()) {
1102- return BaseStar::CalculateMassAndZInterpolatedLambdaNanjing (mass, m_Metallicity);
1104+ lambda = BaseStar::CalculateMassAndZInterpolatedLambdaNanjing (mass, m_Metallicity);
11031105 }
11041106 else {
11051107 int Zind = 0 ;
11061108 if (utils::Compare (m_Metallicity, LAMBDA_NANJING_ZLIMIT) < 0 ) {Zind = 0 ;} else {Zind = 1 ;}
1107- return BaseStar::CalculateMassInterpolatedLambdaNanjing (mass, Zind);
1109+ lambda = BaseStar::CalculateMassInterpolatedLambdaNanjing (mass, Zind);
11081110 }
11091111 }
11101112 else {
11111113 int massInd = BaseStar::FindLambdaNanjingNearestMassIndex (mass); // Do not interpolate in mass, so need to use nearest mass bin
11121114 if (OPTIONS->CommonEnvelopeLambdaNanjingInterpolateInMetallicity ()) {
1113- return BaseStar::CalculateZInterpolatedLambdaNanjing (m_Metallicity, massInd);
1115+ lambda = BaseStar::CalculateZInterpolatedLambdaNanjing (m_Metallicity, massInd);
11141116 }
11151117 else {
11161118 int Zind = 0 ;
11171119 if (utils::Compare (m_Metallicity, LAMBDA_NANJING_ZLIMIT) < 0 ) {Zind = 0 ;} else {Zind = 1 ;}
1118- return BaseStar::CalculateLambdaNanjingEnhanced (massInd, Zind);
1120+ lambda = BaseStar::CalculateLambdaNanjingEnhanced (massInd, Zind);
11191121 }
11201122 }
11211123 }
1122- else { return CalculateLambdaNanjing (mass, m_Metallicity); }
1124+ else { lambda = CalculateLambdaNanjing (mass, m_Metallicity); }
1125+ return lambda
11231126}
11241127
11251128
@@ -1133,18 +1136,20 @@ double BaseStar::EvaluateLambdaNanjing() const {
11331136 */
11341137double BaseStar::CalculateMassAndZInterpolatedLambdaNanjing (const double p_Mass, const double p_Z) const {
11351138
1139+ double lambda = 0.0 ;
11361140 if (utils::Compare (m_Metallicity, LAMBDA_NANJING_POPII_Z) < 0 ) {
1137- return BaseStar::CalculateMassInterpolatedLambdaNanjing (p_Mass, 0 ); // Use lambda for pop. II metallicity
1141+ lambda = BaseStar::CalculateMassInterpolatedLambdaNanjing (p_Mass, 0 ); // Use lambda for pop. II metallicity
11381142 }
11391143 else if (utils::Compare (m_Metallicity, LAMBDA_NANJING_POPI_Z) > 0 ) {
1140- return BaseStar::CalculateMassInterpolatedLambdaNanjing (p_Mass, 1 ); // Use lambda for pop. I metallicity
1144+ lambda = BaseStar::CalculateMassInterpolatedLambdaNanjing (p_Mass, 1 ); // Use lambda for pop. I metallicity
11411145 }
1142- else { // Linear interpolation in logZ between pop. I and pop. II metallicities
1146+ else { // Linear interpolation in logZ between pop. I and pop. II metallicities
11431147 const double logZ = log (m_Metallicity);
11441148 double lambdaLow = BaseStar::CalculateMassInterpolatedLambdaNanjing (p_Mass, 0 );
11451149 double lambdaUp = BaseStar::CalculateMassInterpolatedLambdaNanjing (p_Mass, 1 );
1146- return lambdaLow + (logZ - LAMBDA_NANJING_POPII_LOGZ) / (LAMBDA_NANJING_POPI_LOGZ - LAMBDA_NANJING_POPII_LOGZ) * (lambdaUp - lambdaLow);
1150+ lambda = lambdaLow + (logZ - LAMBDA_NANJING_POPII_LOGZ) / (LAMBDA_NANJING_POPI_LOGZ - LAMBDA_NANJING_POPII_LOGZ) * (lambdaUp - lambdaLow);
11471151 }
1152+ return lambda
11481153}
11491154
11501155
@@ -1160,23 +1165,25 @@ double BaseStar::CalculateMassAndZInterpolatedLambdaNanjing(const double p_Mass,
11601165 */
11611166double BaseStar::CalculateMassInterpolatedLambdaNanjing (const double p_Mass, const int p_Zind) const {
11621167
1168+ double lambda = 0.0 ;
11631169 std::vector<int > ind = utils::binarySearch (NANJING_MASSES, p_Mass);
11641170 int low = ind[0 ];
11651171 int up = ind[1 ];
11661172 if ( (low < 0 ) && (up >= 0 ) ) { // Mass below range calculated by Xu & Li (2010)
1167- return CalculateLambdaNanjingEnhanced (0 , p_Zind); // Use lambda for minimum mass
1173+ lambda = CalculateLambdaNanjingEnhanced (0 , p_Zind); // Use lambda for minimum mass
11681174 }
11691175 else if ( (low >= 0 ) && (up < 0 ) ) { // Mass above range calculated by Xu & Li (2010)
1170- return CalculateLambdaNanjingEnhanced (NANJING_MASSES.size () - 1 , p_Zind); // Use lambda for maximum mass
1176+ lambda = CalculateLambdaNanjingEnhanced (NANJING_MASSES.size () - 1 , p_Zind); // Use lambda for maximum mass
11711177 }
11721178 else if (low == up) { // Mass is exactly equal to the mass of a model evolved by Xu & Li (2010)
1173- return CalculateLambdaNanjingEnhanced (low, p_Zind);
1179+ lambda = CalculateLambdaNanjingEnhanced (low, p_Zind);
11741180 }
11751181 else { // Linear interpolation between upper and lower mass bins
11761182 double lambdaLow = CalculateLambdaNanjingEnhanced (low, p_Zind);
11771183 double lambdaUp = CalculateLambdaNanjingEnhanced (up, p_Zind);
1178- return lambdaLow + (p_Mass - NANJING_MASSES[low]) / (NANJING_MASSES[up] - NANJING_MASSES[low]) * (lambdaUp - lambdaLow);
1184+ lambda = lambdaLow + (p_Mass - NANJING_MASSES[low]) / (NANJING_MASSES[up] - NANJING_MASSES[low]) * (lambdaUp - lambdaLow);
11791185 }
1186+ return lambda
11801187}
11811188
11821189
@@ -1192,18 +1199,20 @@ double BaseStar::CalculateMassInterpolatedLambdaNanjing(const double p_Mass, con
11921199 */
11931200double BaseStar::CalculateZInterpolatedLambdaNanjing (const double p_Z, const int p_MassInd) const {
11941201
1202+ double lambda = 0.0 ;
11951203 if (utils::Compare (m_Metallicity, LAMBDA_NANJING_POPII_Z) < 0 ) {
1196- return CalculateLambdaNanjingEnhanced (p_MassInd, 0 ); // Use lambda for pop. II metallicity
1204+ lambda = CalculateLambdaNanjingEnhanced (p_MassInd, 0 ); // Use lambda for pop. II metallicity
11971205 }
11981206 else if (utils::Compare (m_Metallicity, LAMBDA_NANJING_POPI_Z) > 0 ) {
1199- return CalculateLambdaNanjingEnhanced (p_MassInd, 1 ); // Use lambda for pop. I metallicity
1207+ lambda = CalculateLambdaNanjingEnhanced (p_MassInd, 1 ); // Use lambda for pop. I metallicity
12001208 }
1201- else { // Linear interpolation in logZ between pop. I and pop. II metallicities
1209+ else { // Linear interpolation in logZ between pop. I and pop. II metallicities
12021210 const double logZ = log (m_Metallicity);
12031211 double lambdaLow = CalculateLambdaNanjingEnhanced (p_MassInd, 0 );
12041212 double lambdaUp = CalculateLambdaNanjingEnhanced (p_MassInd, 1 );
1205- return lambdaLow + (logZ - LAMBDA_NANJING_POPII_LOGZ) / (LAMBDA_NANJING_POPI_LOGZ - LAMBDA_NANJING_POPII_LOGZ) * (lambdaUp - lambdaLow);
1213+ lambda = lambdaLow + (logZ - LAMBDA_NANJING_POPII_LOGZ) / (LAMBDA_NANJING_POPI_LOGZ - LAMBDA_NANJING_POPII_LOGZ) * (lambdaUp - lambdaLow);
12061214 }
1215+ return lambda
12071216}
12081217
12091218
0 commit comments