Warm every body by the microwave background too, so none reads colder than space

The derived equilibrium temperature balanced starlight alone. For the widest orbits that is less
than the 2.7 K every body in space is held at by the cosmic microwave background. The planet 7 493
AU from 2MASS J21252752-8138278 read "Equilibrium temp. 1 K", and the one 19 000 AU out from UCAC4
328-061594 would have read 0 K.

equilibriumTemperatureK now adds the background as a second source in the same balance, T^4 =
T_star^4 + (2.7255 K)^4 (Fixsen 2009). Inside a few hundred AU of any star it changes nothing that
shows: Earth, Mars, Jupiter and Neptune reproduce their published values as before. Across the
6 354 exoplanets, the rounded temperature changes for 11, all on orbits of 350 AU or more. Ten go
from 0, 1 or 2 K to 3 K, from VHS J125601.92-125723.9 b at 350 AU to UCAC4 328-061594 b at 19 000
AU, and 2MASS J22501512+2325342 b at 518 AU goes from 4 to 5 K. On the dev server, the detail
pages of the 7 493 AU planet and of GJ 900 b read "Equilibrium temp. 3 K".

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-09-24 23:47:15 +02:00
co-authored by Claude Opus 5.5
parent 1e3ac57229
commit b46c840369
2 changed files with 16 additions and 1 deletions
@@ -66,6 +66,13 @@ describe('equilibriumTemperatureK', () => {
expect(equilibriumTemperatureK(1, 1, 0.8)!).toBeLessThan(equilibriumTemperatureK(1, 1, 0)!); expect(equilibriumTemperatureK(1, 1, 0.8)!).toBeLessThan(equilibriumTemperatureK(1, 1, 0)!);
}); });
it('never falls below the microwave background, however far the star', () => {
// 2MASS J21252752-8138278 b is 7 493 AU out; around a star of a fiftieth of the Sun's output,
// starlight alone would hold it at 1.1 K.
expect(equilibriumTemperatureK(0.02, 7493)!).toBeGreaterThan(2.7255);
expect(equilibriumTemperatureK(0.02, 7493)!).toBeLessThan(3);
});
it('has no answer without a star or an orbit', () => { it('has no answer without a star or an orbit', () => {
expect(equilibriumTemperatureK(null, 1)).toBeNull(); expect(equilibriumTemperatureK(null, 1)).toBeNull();
expect(equilibriumTemperatureK(1, undefined)).toBeNull(); expect(equilibriumTemperatureK(1, undefined)).toBeNull();
+9 -1
View File
@@ -88,6 +88,9 @@ export function bulkDensityGramsPerCm3(massEarth: number | undefined, radiusEart
return EARTH_DENSITY_G_PER_CM3 * (massEarth / Math.pow(radiusEarth, 3)); return EARTH_DENSITY_G_PER_CM3 * (massEarth / Math.pow(radiusEarth, 3));
} }
/** The cosmic microwave background's temperature today (Fixsen 2009, ApJ 707, 916). */
const CMB_TEMPERATURE_K = 2.7255;
/** /**
* Equilibrium temperature in kelvin: the temperature at which a body re-radiates exactly the * Equilibrium temperature in kelvin: the temperature at which a body re-radiates exactly the
* starlight it absorbs. * starlight it absorbs.
@@ -97,6 +100,10 @@ export function bulkDensityGramsPerCm3(massEarth: number | undefined, radiusEart
* push the real surface warmer — Venus's surface is 737 K against an equilibrium 232 K. It is * push the real surface warmer — Venus's surface is 737 K against an equilibrium 232 K. It is
* nonetheless the right quantity here, because it is what decides the *state* of the material a * nonetheless the right quantity here, because it is what decides the *state* of the material a
* world is made of, which is what its surface looks like. * world is made of, which is what its surface looks like.
*
* The body also absorbs the cosmic microwave background, added as a second source in the same
* balance. It is nothing beside any star inside a few hundred AU, and it is why nothing in space is
* colder than 2.7 K: by starlight alone, the planet 7 493 AU from 2MASS J21252752-8138278 read 1 K.
*/ */
export function equilibriumTemperatureK( export function equilibriumTemperatureK(
luminositySolar: number | null | undefined, luminositySolar: number | null | undefined,
@@ -106,7 +113,8 @@ export function equilibriumTemperatureK(
if (!luminositySolar || !semiMajorAxisAu || luminositySolar <= 0 || semiMajorAxisAu <= 0) { if (!luminositySolar || !semiMajorAxisAu || luminositySolar <= 0 || semiMajorAxisAu <= 0) {
return null; return null;
} }
return SOLAR_EQUILIBRIUM_TEMPERATURE_K * Math.pow(luminositySolar, 0.25) * Math.pow(semiMajorAxisAu, -0.5) * Math.pow(1 - bondAlbedo, 0.25); const starlit = SOLAR_EQUILIBRIUM_TEMPERATURE_K * Math.pow(luminositySolar, 0.25) * Math.pow(semiMajorAxisAu, -0.5) * Math.pow(1 - bondAlbedo, 0.25);
return Math.pow(starlit ** 4 + CMB_TEMPERATURE_K ** 4, 0.25);
} }
/** /**