Read a star's bolometric correction off its colour, and carry Gaia's G to V first

A star's luminosity was its absolute magnitude plus a bolometric correction read off its spectral
type, with its magnitude taken as V whatever band it was in. Gaia classifies none of its stars, so
all of its 379 000 got the Sun's correction, and their G was read as V: TRAPPIST-1 came out at a
seventh of its luminosity.

The dwarf sequence spectral.ts already reads types off (Pecaut & Mamajek 2013, table 5, online
version 2022.04.16) now carries its effective temperature, bolometric correction to V and Gaia
G-V columns, and dwarfSequenceAtColor interpolates them at a colour, in the colour's own system.
luminositySolar uses it wherever the star's colour is inside the table: the G magnitude is
carried to V, then corrected. Only without such a colour does it fall back to the spectral type,
as before.

Against the archive's own st_lum for the 1 449 hosts that are catalogue stars, the median error
goes from 0.038 to 0.022 dex and the 90th percentile from 0.292 to 0.115 dex; within a factor of
1.5, 84.5 % -> 93.8 %. For the 572 hosts Gaia describes: 90th percentile 0.332 -> 0.073 dex,
81.8 % -> 97.0 % within a factor of 1.5. Barnard's Star with no type now reads 0.0029 L_sun
against 0.0035 published, and TRAPPIST-1 7.3e-4 against 5.5e-4 (Agol et al. 2021).

Across the catalogue, 311 255 of 455 608 stars move by more than 10 % (median ratio 0.90: a
G-type star's G is 0.16 brighter than its V), and so do the hosts of 3 158 planets, whose
equilibrium temperatures follow as the fourth root.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-09-25 00:02:12 +02:00
co-authored by Claude Opus 5.5
parent 81a4ecfcde
commit 3392f06c85
5 changed files with 128 additions and 30 deletions
+16 -3
View File
@@ -1,4 +1,4 @@
import { parseSpectralClass, SpectralClass } from './spectral';
import { dwarfSequenceAtColor, parseSpectralClass, SpectralClass } from './spectral';
/**
* Stellar luminosity, derived from the two things the star catalogue actually measures.
@@ -91,11 +91,15 @@ export function bolometricCorrection(spectralType: string | null | undefined): n
/** Everything about a star that bears on how much light it puts out. */
export interface StellarPhotometry {
/** Apparent visual magnitude, as catalogued. */
/** Apparent magnitude, as catalogued, in `magnitudeBand`. */
magnitude: number;
/** Distance from the Sun in parsecs; `0` identifies the Sun itself. */
distancePc: number;
spectralType?: string;
/** V, or Gaia's G — which for an M5 dwarf reads 1.7 magnitudes brighter. Taken as V if absent. */
magnitudeBand?: 'V' | 'G';
colorIndex?: number | null;
colorSystem?: 'B-V' | 'BP-RP';
}
/**
@@ -118,7 +122,16 @@ export function luminositySolar(star: StellarPhotometry): number | null {
return null;
}
const bolometric = absolute + bolometricCorrection(star.spectralType);
// Where the star has a colour the dwarf sequence covers, its correction is read off that colour,
// and a G magnitude is carried to V first; only otherwise is the spectral type used, and a G
// magnitude taken as V. Gaia classifies none of its stars, so every one of them used to be
// given the Sun's correction, and TRAPPIST-1 came out at a seventh of its luminosity. Against
// the archive's own figure for 1 449 hosts, the worst tenth was off by 0.29 dex or more, and is
// now off by 0.12.
const sequence = star.colorIndex != null ? dwarfSequenceAtColor(star.colorIndex, star.colorSystem) : null;
const absoluteV = absolute - (star.magnitudeBand === 'G' ? (sequence?.gMinusV ?? 0) : 0);
const bolometric = absoluteV + (sequence?.bolometricCorrectionV ?? bolometricCorrection(star.spectralType));
const luminosity = Math.pow(10, (SOLAR_BOLOMETRIC_MAGNITUDE - bolometric) / 2.5);
return Math.min(Math.max(luminosity, MIN_LUMINOSITY_SOLAR), MAX_LUMINOSITY_SOLAR);
}