// Program to find earth's temperature if it did and didn't have greenhouse
// gases, atmosphere, etc.
// Tweakable parameters:
// Assume albedo = 0 (perfectly black)?
// Actual earth average albedo is about 0.30 (and varies with time.)
// (This is the Bond albedo, not the geometric albedo.)
albedo = 0.30
// Where earthEta is the emissivity of the earth. For a blackbody this is 1,
// for most materials, around 0.95, but for clouds it's about 0.5.
// The actual effective emissivity of the earth (because of clouds,) is
// measured to be about 0.612.
// Setting the effective emissivity and the albedo to their measured values
// gives a temperature very close to their actual values (average surface
// temperature of the earth is usually given at 59 F) and takes into account
// greenhouse gases and atmospheric effects.
earthEta = .612
// Total power absorbed by the earth is equal to the fraction of the sun's
// radiated power that strikes a circle with the earth's radius:
earthReceivingArea = pi earthradius^2
// At the distance that the earth is from the sun, the sun's whole power is
// spread over a sphere:
sunSphere = 4 pi earthdist^2
// So the earth receives only:
earthPower = sunpower * (earthReceivingArea/sunSphere) * (1-albedo)
println["With an albedo of $albedo"]
println["And an emissivity of $earthEta"]
println["Earth receives " + (earthPower -> "watts")]
// The earth's surface area:
earthArea = 4 pi earthradius^2
// I'll assume that the earth is a blackbody and radiates its energy into
// another blackbody with a temperature of 2.725 K (the latest figure for the
// cosmic background radiation; the effective temperature of our surrounding
// neighborhood might be somewhat higher due to dust clouds, planets, distant
// stars, that radiate back at us a little, but probably not *too* much.)
Tu = 2.725 K
// A body radiates an amount of power equal to:
// sigma eta T^4 area
// Where sigma is the Stefan-Boltzmann constant (Frink knows this) and eta is
// the emissivity (which is 1 for a blackbody). T is, of course, the
// temperature. We'll call the temperature of the earth Te and the temperature
// of the universe Tu.
// The area that we radiate over is the total surface area of the earth:
earthArea = 4 pi earthradius^2
// Thus, we reach equilibrium when the power radiated (out) by the earth is
// equal to (the power radiated (in) by the universe plus the power radiated
// (in) by the sun:)
// sigma earthEta Te^4 earthArea = sigma Tu^4 earthArea + earthPower
// Rearranging to solve for Te,
Te = ((earthPower + sigma earthArea Tu^4)/(sigma earthEta earthArea))^(1/4)
println["Earth's average temperature is " + F[Te] + " F"]