@@ -2952,11 +2952,11 @@ double BaseStar::CalculateTemperatureKelvinOnPhase(const double p_Luminosity, co
29522952 */
29532953double BaseStar::CalculateOStarRotationalVelocityAnalyticCDF_Static (const double p_Ve) {
29542954
2955- double alpha = 4.82 ;
2956- double beta = 1.0 / 25.0 ;
2957- double mu = 205.0 ;
2958- double sigma = 190.0 ;
2959- double iGamma = 0.43 ;
2955+ constexpr double alpha = 4.82 ;
2956+ constexpr double beta = 1.0 / 25.0 ;
2957+ constexpr double mu = 205.0 ;
2958+ constexpr double sigma = 190.0 ;
2959+ constexpr double iGamma = 0.43 ;
29602960
29612961 boost::math::inverse_gamma_distribution<> gammaComponent (alpha, beta); // (shape, scale) = (alpha, beta)
29622962 boost::math::normal_distribution<> normalComponent (mu, sigma);
@@ -3262,8 +3262,8 @@ DBL_DBL_DBL_DBL BaseStar::CalculateImKnmDynamical(const double p_Omega, const do
32623262
32633263 // Assume that GW dissipation from core boundary is only efficient if the radiative region extends to the surface, i.e. there is no convective envelope.
32643264 if (utils::Compare (coreRadiusAU/radiusAU, TIDES_MINIMUM_FRACTIONAL_EXTENT) > 0 && utils::Compare (coreMass/m_Mass, TIDES_MINIMUM_FRACTIONAL_EXTENT) > 0 && utils::Compare (convectiveEnvRadiusAU/radiusAU, TIDES_MINIMUM_FRACTIONAL_EXTENT) < 0 && utils::Compare (envMass/m_Mass, TIDES_MINIMUM_FRACTIONAL_EXTENT) < 0 ) {
3265- double beta2Dynamical = 1.0 ;
3266- double rhoFactorDynamcial = 0.1 ;
3265+ constexpr double beta2Dynamical = 1.0 ;
3266+ constexpr double rhoFactorDynamcial = 0.1 ;
32673267 double coreRadiusOverRadius = coreRadiusAU / radiusAU;
32683268 double coreRadiusOverRadius_3 = coreRadiusOverRadius * coreRadiusOverRadius * coreRadiusOverRadius;
32693269 double coreRadiusOverRadius_9 = coreRadiusOverRadius_3 * coreRadiusOverRadius_3 * coreRadiusOverRadius_3;
@@ -3274,28 +3274,28 @@ DBL_DBL_DBL_DBL BaseStar::CalculateImKnmDynamical(const double p_Omega, const do
32743274 double s10 = w10 * sqrtR3OverG_M;
32753275 double s10_4_3 = s10 * std::cbrt (s10);
32763276 double s10_8_3 = s10_4_3 * s10_4_3;
3277- k10GravityCore = E2Dynamical * (w10 < 0.0 ? - std::abs (s10_8_3) : s10_8_3 );
3277+ k10GravityCore = E2Dynamical * std::copysign (s10_8_3, w10 );
32783278 if (std::isnan (k10GravityCore)) k10GravityCore = 0.0 ;
32793279
32803280 // (l=2, n=1, m=2), Gravity Wave dissipation from core boundary
32813281 double s12 = w12 * sqrtR3OverG_M;
32823282 double s12_4_3 = s12 * std::cbrt (s12);
32833283 double s12_8_3 = s12_4_3 * s12_4_3;
3284- k12GravityCore = E2Dynamical * (w12 < 0.0 ? - std::abs (s12_8_3) : s12_8_3 );
3284+ k12GravityCore = E2Dynamical * std::copysign (s12_8_3, w12 );
32853285 if (std::isnan (k12GravityCore)) k12GravityCore = 0.0 ;
32863286
32873287 // (l=2, n=2, m=2), Gravity Wave dissipation from core boundary
32883288 double s22 = w22 * sqrtR3OverG_M;
32893289 double s22_4_3 = s22 * std::cbrt (s22);
32903290 double s22_8_3 = s22_4_3 * s22_4_3;
3291- k22GravityCore = E2Dynamical * (w22 < 0.0 ? - std::abs (s22_8_3) : s22_8_3 );
3291+ k22GravityCore = E2Dynamical * std::copysign (s22_8_3, w22 );
32923292 if (std::isnan (k22GravityCore)) k22GravityCore = 0.0 ;
32933293
32943294 // (l=2, n=3, m=2), Gravity Wave dissipation from core boundary
32953295 double s32 = w32 * sqrtR3OverG_M;
32963296 double s32_4_3 = s32 * std::cbrt (s32);
32973297 double s32_8_3 = s32_4_3 * s32_4_3;
3298- k32GravityCore = E2Dynamical * (w32 < 0.0 ? - std::abs (s32_8_3) : s32_8_3 );
3298+ k32GravityCore = E2Dynamical * std::copysign (s32_8_3, w32 );
32993299 if (std::isnan (k32GravityCore)) k32GravityCore = 0.0 ;
33003300 }
33013301
@@ -3306,8 +3306,8 @@ DBL_DBL_DBL_DBL BaseStar::CalculateImKnmDynamical(const double p_Omega, const do
33063306 // There is no GW or IW dissipation from the envelope boundary if no convective envelope
33073307 if ((utils::Compare (convectiveEnvRadiusAU / radiusAU, TIDES_MINIMUM_FRACTIONAL_EXTENT) > 0 ) || (utils::Compare (envMass / m_Mass, TIDES_MINIMUM_FRACTIONAL_EXTENT) > 0 )) {
33083308
3309- double dynPrefactor = 3.207452512782476 ; // 3^(11/3) * Gamma(1/3)^2 / 40 PI
3310- double m_l_factor_22 = 2.0 / ( 2.0 * ( 2.0 + 1.0 )) / std::cbrt ( 2.0 * ( 2.0 + 1.0 )); // m * (l(l+1))^{-4/3}
3309+ constexpr double dynPrefactor = 3.207452512782476 ; // 3^(11/3) * Gamma(1/3)^2 / 40 PI
3310+ constexpr double m_l_factor_22 = 0.183440402716368 ; // m * (l(l+1))^{-4/3}
33113311 double cbrtdNdlnr = std::cbrt (G_AU_Msol_yr * radIntershellMass / radiusIntershellAU / (radiusAU - radiusIntershellAU) / (radiusAU - radiusIntershellAU));
33123312
33133313 double alpha = radiusIntershellAU / radiusAU;
@@ -3336,32 +3336,32 @@ DBL_DBL_DBL_DBL BaseStar::CalculateImKnmDynamical(const double p_Omega, const do
33363336 // (l=2, n=1, m=2), Gravity Wave dissipation from envelope boundary
33373337 double w12_4_3 = w12 * std::cbrt (w12);
33383338 double w12_8_3 = w12_4_3 * w12_4_3;
3339- k12GravityEnv = dynPrefactor * m_l_factor_22 * (w12 < 0.0 ? - std::abs (w12_8_3) : w12_8_3 ) * R3OverG_M * Epsilon / cbrtdNdlnr;
3339+ k12GravityEnv = dynPrefactor * m_l_factor_22 * std::copysign (w12_8_3, w12 ) * R3OverG_M * Epsilon / cbrtdNdlnr;
33403340 if (std::isnan (k12GravityEnv)) k12GravityEnv = 0.0 ;
33413341
33423342 // (l=2, n=2, m=2), Gravity Wave dissipation from envelope boundary
33433343 double w22_4_3 = w22 * std::cbrt (w22);
33443344 double w22_8_3 = w22_4_3 * w22_4_3;
3345- k22GravityEnv = dynPrefactor * m_l_factor_22 * (w22 < 0.0 ? - std::abs (w22_8_3) : w22_8_3) * R3OverG_M * Epsilon / cbrtdNdlnr;
3345+ k22GravityEnv = dynPrefactor * m_l_factor_22 * std::copysign (w22_8_3, w22) * R3OverG_M * Epsilon / cbrtdNdlnr;
33463346 if (std::isnan (k22GravityEnv)) k22GravityEnv = 0.0 ;
33473347
33483348 // (l=2, n=3, m=2), Gravity Wave dissipation from envelope boundary
33493349 double w32_4_3 = w32 * std::cbrt (w32);
33503350 double w32_8_3 = w32_4_3 * w32_4_3;
3351- k32GravityEnv = dynPrefactor * m_l_factor_22 * (w32 < 0.0 ? - std::abs (w32_8_3) : w32_8_3 ) * R3OverG_M * Epsilon / cbrtdNdlnr;
3351+ k32GravityEnv = dynPrefactor * m_l_factor_22 * std::copysign (w32_8_3, w32 ) * R3OverG_M * Epsilon / cbrtdNdlnr;
33523352 if (std::isnan (k32GravityEnv)) k32GravityEnv = 0.0 ;
33533353 }
33543354
33553355 // (l=2, n=2, m=2), Inertial Wave dissipation, convective envelope
33563356 // IW dissipation is only efficient for highly spinning stars, as in Esseldeurs, et al., 2024
33573357 if (utils::Compare (twoOmegaSpin, p_Omega) >= 0 ) {
33583358 double epsilonIW_2 = omegaSpin * omegaSpin * R3OverG_M;
3359- double one_minus_alpha_4 = oneMinusAlpha_2 * oneMinusAlpha_2;
3359+ double oneMinusAlpha_4 = oneMinusAlpha_2 * oneMinusAlpha_2;
33603360 double bracket1 = 1.0 + (2.0 * alpha) + (3.0 * alpha_2) + (3.0 * alpha_3 / 2.0 );
33613361 double bracket2 = 1.0 + (oneMinusGamma / gamma) * alpha_3;
33623362 double bracket3 = 1.0 + (3.0 * gamma / 2.0 ) + (5.0 * alpha_3 / (2.0 * gamma) * (1.0 + (gamma / 2.0 ) - (3.0 * gamma * gamma / 2.0 ))) - (9.0 / 4.0 * oneMinusGamma * alpha_5);
3363- k22InertialEnv = (100.0 * M_PI / 63.0 ) * epsilonIW_2 * (alpha_5 / (1.0 - alpha_5)) * oneMinusGamma_2 * one_minus_alpha_4 * bracket1 * bracket1 * bracket2 / bracket3 / bracket3;
3364- k22InertialEnv = (w22 < 0.0 ? - std::abs (k22InertialEnv) : std::abs (k22InertialEnv) );
3363+ k22InertialEnv = (100.0 * M_PI / 63.0 ) * epsilonIW_2 * (alpha_5 / (1.0 - alpha_5)) * oneMinusGamma_2 * oneMinusAlpha_4 * bracket1 * bracket1 * bracket2 / bracket3 / bracket3;
3364+ k22InertialEnv = std::copysign (k22InertialEnv, w22 );
33653365 if (std::isnan (k22InertialEnv)) k22InertialEnv = 0.0 ;
33663366 }
33673367 }
0 commit comments