Hold van Belle's giant temperatures at 3 134 K from M6, as its table does, and test every piece

giantSurface carried the 64-71.5 fit of van Belle et al. (2021, ApJ 922, 163, table 8) on to
index 73.9, where the table's fourth piece, 72-74, is flat at 3 134 K: M6 III (index 72) came out
3 300 K and M7 III 3 214 K. The paper's own M6 and M7 giants average 3 112 and 3 114 K. The
temperature and the correction at it both feed the drawn radius, so the 29 catalogue giants from
M6 to M7.9 were drawn too small: Rho-2 Ari 57.1 solar radii, now 81.5; 30 Her 88.3, now 126.0;
Eps Oct 64.9, now 92.6. The comment said the scale was held "past M7.75"; it now says from M6.

The giant test only reached the third piece (Aldebaran K5 III, Antares M1). It now checks each
piece against table 8: G8 III 4 797.08 K, K2 III 4 387.58, M5.5 III 3 343.43, and M6 and M7 III at
3 134. Controls, each failing "reads a giant's temperature and correction both off its type"
alone: the third piece carried past M6 again; a G giant indexed as K; the first piece's slope
52.74 -> 45; the second's 199.41 -> 180. Before this, the last three left all 817 tests passing.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-09-30 15:42:15 +02:00
co-authored by Claude Opus 5.5
parent 206e88ae85
commit aafc788352
2 changed files with 12 additions and 3 deletions
+8
View File
@@ -126,6 +126,14 @@ describe('luminositySolar', () => {
// Antares, M1 Ib at B−V 1.87: 3 660 K (Ohnaka et al. 2013), where its colour's dwarf is 3 019. // Antares, M1 Ib at B−V 1.87: 3 660 K (Ohnaka et al. 2013), where its colour's dwarf is 3 019.
const antares = { magnitude: 1.06, distancePc: 169.78, spectralType: 'M1Ib + B2.5V', magnitudeBand: 'V', colorIndex: 1.865, colorSystem: 'B-V' } as const; const antares = { magnitude: 1.06, distancePc: 169.78, spectralType: 'M1Ib + B2.5V', magnitudeBand: 'V', colorIndex: 1.865, colorSystem: 'B-V' } as const;
expect(Math.abs(effectiveTemperatureK(antares)! - 3660)).toBeLessThan(100); expect(Math.abs(effectiveTemperatureK(antares)! - 3660)).toBeLessThan(100);
// Each piece of van Belle et al.'s (2021) table 8, at G0 = 50, K0 = 60, M0 = 66 on its index:
// G8 III 7856 − 52.74 × 58, K2 III 16751 − 199.41 × 62, and flat at 3 134 K from M6 III.
const giant = (spectralType: string) => effectiveTemperatureK({ magnitude: 5, distancePc: 100, spectralType, colorIndex: null });
expect(giant('G8III')).toBeCloseTo(4797.08, 1);
expect(giant('K2III')).toBeCloseTo(4387.58, 1);
expect(giant('M5.5III')).toBeCloseTo(3343.43, 1);
expect(giant('M6III')).toBe(3134);
expect(giant('M7III')).toBe(3134);
// Aldebaran, K5 III, 44.2 R☉ (Richichi & Roccatagliata 2005), to a tenth; Rigel, B8 Ia, 74.1 // Aldebaran, K5 III, 44.2 R☉ (Richichi & Roccatagliata 2005), to a tenth; Rigel, B8 Ia, 74.1
// (Baines et al. 2018), to a fifth. With a correction off the type beside the colour's // (Baines et al. 2018), to a fifth. With a correction off the type beside the colour's
// temperature, Rigel came out 101.6; with K5's own correction at 3 902 K, Aldebaran 52. // temperature, Rigel came out 101.6; with K5's own correction at 3 902 K, Aldebaran 52.
+4 -3
View File
@@ -188,8 +188,9 @@ export function effectiveTemperatureK(star: StellarPhotometry): number | null {
* temperature it was drawn at 95 R☉, and Alp Cam, O9.5 Ia, at 338, where 14 and 21 are published. * temperature it was drawn at 95 R☉, and Alp Cam, O9.5 Ia, at 338, where 14 and 21 are published.
* *
* G to M giants take van Belle et al.'s (2021, ApJ 922, 163, table 8) interferometric scale, fitted * G to M giants take van Belle et al.'s (2021, ApJ 922, 163, table 8) interferometric scale, fitted
* to 191 giants from G1 to M7.75 III: 4 692 K at K0, 3 816 at M0, 3 472 at M4, held at 3 134 past * to 191 giants from G1 to M7.75 III: 4 797 K at G8, 4 388 at K2, 3 816 at M0, 3 472 at M4, and held
* M7.75. O to F giants take the dwarf of their type, which a supergiant of the same type is within * at 3 134 K from M6, where its own M6 and M7 giants average 3 112 and 3 114 K. Carried on to M7.9
* instead, the M6 giants were 3 300 K and drawn 30 % too small. O to F giants take the dwarf of their type, which a supergiant of the same type is within
* a few per cent of from B8 on, and a few thousand kelvin cooler than at B0 (Alnilam, B0 Ia, about * a few per cent of from B8 on, and a few thousand kelvin cooler than at B0 (Alnilam, B0 Ia, about
* 27 000 K against B0 V's 31 400). Carbon and S stars take {@link CARBON_STAR}. * 27 000 K against B0 V's 31 400). Carbon and S stars take {@link CARBON_STAR}.
*/ */
@@ -209,7 +210,7 @@ export function giantSurface(spectralType: string | null | undefined): { tempera
if (spectralClass === 'G' || spectralClass === 'K' || spectralClass === 'M') { if (spectralClass === 'G' || spectralClass === 'K' || spectralClass === 'M') {
// van Belle's index: G0 at 50, K0 at 60, K5 at 65 and M0 at 66, so a K later than K5 falls between. // van Belle's index: G0 at 50, K0 at 60, K5 at 65 and M0 at 66, so a K later than K5 falls between.
const index = spectralClass === 'G' ? 50 + subclass : spectralClass === 'K' ? 60 + Math.min(subclass, 5) + Math.max(subclass - 5, 0) / 5 : 66 + subclass; const index = spectralClass === 'G' ? 50 + subclass : spectralClass === 'K' ? 60 + Math.min(subclass, 5) + Math.max(subclass - 5, 0) / 5 : 66 + subclass;
const temperatureK = index <= 61 ? 7856 - 52.74 * index : index <= 64 ? 16751 - 199.41 * index : Math.max(9491 - 85.98 * index, 3134); const temperatureK = index <= 61 ? 7856 - 52.74 * index : index <= 64 ? 16751 - 199.41 * index : index < 72 ? 9491 - 85.98 * index : 3134;
return { temperatureK, bolometricCorrectionV: dwarfSequenceAtTemperature(temperatureK).bolometricCorrectionV }; return { temperatureK, bolometricCorrectionV: dwarfSequenceAtTemperature(temperatureK).bolometricCorrectionV };
} }
const dwarf = dwarfSequenceAtType(primary)!; const dwarf = dwarfSequenceAtType(primary)!;