Equating Perpendicular Planes is Plain Nonsense

Many people believe you can compare the Geothermal Heat Flux to Insolation, see that it’s pitiful and then exclude Geothermal from the energy budget. I have touched on this subject several times: here, here, and here. Today I will again show that this idea is plain nonsense.

Let’s start with the basics of radiation:

Stefan-Boltzmann’s Law

The radiation emerging out of a plane in the (x,y) dimension is proportional to the fourth power of its temperature. The choice of variable names x,y is arbitrary. Now what about conduction?

Conduction through matter

Geothermal Heat Flux has been globally measured to be ~ 91.6 mW/m²; a very small number. Many people claim that you can convert this figure into a value that tells you what the surface temperature would be in the absence of the sun.

What they do is equate the radiation emerging out of a plane with the internal conductive heat flux. In the language of my previous articles, they equate Cold Side Radiation to Conductive Heat Flux: CSR = CHF. Then they solve for T_cold.

This is kind of funny, because even though we have proof that geothermal will deliver ~273 K, they still think geothermal can only deliver ~36 K.

They believe their argument is reasonable because both CSR and CHF are in units W/m², and therefore they can be equated to one another.

What they don’t understand is that the meters squared (m²) are in completely different dimensions.

In radiative flux, the m² comes from the surface plane. But in conductive flux, the m² comes from multiplying thermal conductivity constant (k) by the depth (L).

The depth is orthogonal (perpendicular) to the surface plane!

How much sense does it make to compare emergent radiation to something based on a 90 degree angle to it? None at all.

I derived the proper relationship between CSR and CHF in my previous articles:

Proper relationship between CSR and CHF

Now I do proper dimensional analysis:

Dimensional Analysis

Yes, their idea doesn’t make any sense at all, but it does make for great rhetorical pseudoscience.

Now for some satire …

Question: How much rain falls on a flat roof top?

Answer: It depends on the building material and height of the building.

Normal Person: Say what?

This is the best analogy I could come up with what their idea represents. Maybe someone else could come up with a better one. Main point: they’re 90 degrees wrong.

I hope to repeat this for the last time: the Geothermal Heat Flux is NOT enough information to say what radiation emerges out of the surface. There are many possibilities with the same heat flux value, as shown here. CHF divided by k (thermal conductivity) yields a temperature gradient. A gradient measure tells you nothing about what’s at the top.

Take care, -Zoe

Zoe’s 35th Birthday

COVID19 in Georgia

Today I analyze COVID19 data for my home state of Georgia. I thought it would be interesting because there is an anomaly. Let’s see the anamoly:

Cases per 100K (Source)
Population Density

You see it? The largest density of cases does not match the largest density of population. We would expect most cases per 100K to be in the 9th largest metropolis in the US (Atlanta), but it’s not!

How could this be? What could cause such an anomaly?

It might have something to do with foreign labor? Georgia is the 2nd largest recipient of temporary agricultural H-2A visas in 2019 (Source). Trend:

There’s no data as to which counties migrant workers go to, but we can take a logical leap: The most agriculturally productive counties probably have the most migrant workers.

We would expect those counties with the largest share of agriculture to be those disproportionately affected by COVID19. Let’s see …

Corn, 2019
Cotton, 2019
Peanuts, 2019
Corn, 2018
Cotton, 2018
Peanuts, 2018

It’s not a perfect match, but I think there’s something to it. Maybe I am wrong, but I haven’t found a better explanation from my local media. In fact, the issue was not even addressed by anyone.

Other states also have low density counties with high COVID19 densities, but they seldom surpass the rates in their major metro areas. Georgia is anomalous in this regard.

Thoughts? Comments?

Peace, -Zoe

CO2 Versus Global COVID19 Response

With the global economic response to the COVID19 epidemic, we would expect global CO2 to be rising much less than other years, if the theory of man-made global warming is indeed true.

I use data from NOAA to see what’s going on.

The estimated daily global seasonal cycle and trend value for CO2 are determined from the daily averaged CO2 data from the four NOAA/ESRL/GMD Baseline observatories. A smoothed seasonal cycle and a smoothed de-seasonalized trend curve are determined for each observatory record at daily intervals. An estimated global seasonal cycle and trend are computed by averaging the four individual observatory seasonal cycle and trend curves at each daily interval.

— ftp://aftp.cmdl.noaa.gov/products/trends/co2/co2_trend_gl.txt

I chose the most official processed data there is, so I can’t be accused of cherrypicking. What I do is compare May 1st to Jan 1st of every year from 2010 to 2020. Results:

2010 1.96 0.90
2011 0.95 0.58
2012 1.50 0.68
2013 2.25 0.98
2014 1.54 0.59
2015 1.87 0.72
2016 2.34 1.20
2017 1.64 0.67
2018 1.93 0.78
2019 1.88 0.86
2020 2.07 0.96

Results are in increased ppm (parts per million). 2nd column is smoothed seasonal cycle. 3rd column is smoothed de-seasonalized trend curve.

As you can see, 2020 was the 3rd largest increasing year, after 2016 and 2013.

We would expect it to come in last. Looks like nature doesn’t respond that quickly … or at all.

Peace, -Zoe

Update 06/05/2020

# For Jan 1 to Jun 4

2010 1.55 1.16
2011 0.56 0.72
2012 0.95 0.90
2013 1.99 1.23
2014 1.43 0.76
2015 1.31 0.95
2016 1.89 1.53
2017 1.33 0.84
2018 1.71 1.00
2019 1.58 1.12
2020 1.53 1.18

Code

co2.sh:

wget -qO co2.txt -c ftp://aftp.cmdl.noaa.gov/products/trends/co2/co2_trend_gl.txt      
awk '!/#/ && $2==1 && $3==1 { print $1" "$4" "$5 }' co2.txt > .start       
# Change $2 and $3 to Month and Day: (Ex: $2==5 && $3==1 for May 1st )
awk '!/#/ && $2==5 && $3==1 { print $4" "$5 }' co2.txt > .end 
paste .start .end | awk '{printf "%s %.2f %.2f\n", $1, $4-$2, $5-$3}'
rm -f .start .end

Run it:

$ bash co2.sh

The Irrelevance of Geothermal Heat Flux

You’ve probably heard it before: the geothermal heat flux is so small (91.6 mW/m²) that it can be effectively ignored in Earth’s energy budget. The first part is true, the heat flux is small, but this fact is completely irrelevant. And what is relevant is popularly denied and masked as something else.

I’ve already explained the problem here and here. Unfortunately not everyone understood the point I was trying to make, so I made a visualization:

Various Profiles with the same Geothermal Heat Flux (CF). Emissivity=1

CF (Conductive Flux) is the Geothermal Heat Flux, EF is the Emergent Geothermal Flux, Th and Tc are the temperatures of the hot side and cold side. d is depth. Compatibility with my previous terminology: CF = CHF and EF = CSR.

As you can see all of these profiles have the same geothermal heat flux (CF), and all of them produce a very different emergent flux (EF) out of the surface. The popularly stated geothermal heat flux is NOT a value that you can compare to insolation. The value itself gives you NO clue as to what can emerge at the top. Anyone telling you otherwise is stupid or lying.

The geothermal heat flux and the thermal conductivity factor determines the temperature gradient. A gradient can never tell you either what kinetic energy is at the bottom or the top. Never.

So what really emerges at the top on Earth? In this visualization, the closest answer is ~5°C or ~340 W/m² – what was calculated and observed here and here. ~340 W/m² is what is claimed for the total greenhouse gas backradiation effect, as shown in the “official” energy budget here. That’s not surprising, because the greenhouse gas effect is secretly just geothermal flipped upside down. It’s the biggest scam in climate science, and you heard it here first.

Geothermal provides a tremendous amount of energy, even more than the sun, but climate scientists ignore it because they are looking at a component of a gradient/slope measure, rather than the temperature (kinetic energy) it delivers to the surface.

I invite everyone to give this some serious thought and not just dismiss it using sophistry.

Love, -Zoe

Extra

  1. Geothermal Heat Flux (CF) is a very useful value for commercial geothermal energy prospectors, but not for atmospheric scientists creating an energy budget. EF is what they need to use. They do use it, but they flip it upside down and call it GHE.
  2. The temperature gradient value used is 27.5 °C/km, which I got from here: “it is about 25–30 °C/km”. This makes k = 0.333 W/(m*K).

The Strange Case of Mimas

Mimas is a small moon of Saturn. It is most famous for being the inspiration for the Death Star in the popular movie Star Wars.

Mimas

But from this day it will be famous for refuting mainstream climate science.

How you ask?

Well … let’s examine its external energy sources:

1) Insolation. The insolaton at Mimas should be approximately the same as that for Saturn.

2) Saturn. Radiation received from Saturn should equal the emission from Saturn diluted by the square of the radius of Saturn divided by distance from Saturn to Mimas and divided by 4.

NASA’s Facts Sheets (Saturn, Saturn Satellites) provides us all the numbers we need.

Apply standard formulas:

1) 14.82 * (1 - 0.6) / 4 = 1.482 W/m²

2) (5.67e-8)*(81)^4 * (54364/185539)^2 / 4 = 0.0524 W/m²

The total is 1.5344 W/m²

Let’s convert that back to a temperature (assuming emissivity = 1, by [Howett 2003]):

(1.5344/5.67e-8)^0.25 = 72.1

According to mainstream climate science, only special gases in the atmosphere can boost the surface temperature beyond what external radiation (the sun) alone can do. On Earth, they claim these gases boost the surface temperature by ~33°K.

Mimas has no greenhouse gases or even an atmosphere, so its average temperature should never exceed 72.1 K.

But in reality …

https://www.nasa.gov/mission_pages/cassini/multimedia/pia12867.html

It looks like PacMan is powering the Death Star and the surface temperature is boosted from 2 to 24 K beyond what external radiation alone can do. There is nothing below 74 K?

Isn’t it obvious that Mimas is geothermally boosted?

Neither the greenhouse effect theory of mainstream climate science or the atmospheric pressure theory of Nikolov & Zeller, et al can explain this!

Nothing else can explain PacMan and the thermal boost other than geothermal.

And if a tiny planetoid like Mimas has its own oddly distributed internal energy, maybe the Earth, which is 158,730 times more massive could as well?

Think!

Love, -Zoe

Lunar Warming

In a previous article, I examined the average moon temperature (AMT). You may have noticed that there’s been about ~3 degree K warming in the last decade.

According to [Vasavada 2012], the mean equatorial temperature between 2009 and 2011 was about 213K, whereas the 2017-2018 data from UCLA and WUSTL shows that to be about 216K.

For AMT, the increase has been from ~197K to ~200K.

Perhaps there is some error in the exactness, but that the moon has warmed is not actually controversial; it is accepted by mainstream scientists. I wanted to share with you today their theory as to the cause. Are you ready?

Google “lunar warming”. Here is what you will get:

Mainstream Nonsense

Livescience reports:

According to the new study, the 12 Apollo astronauts who walked on the moon between 1969 and 1972 kicked aside so much dust that they revealed huge regions of darker, more heat-absorbing soil that may not have seen the light of day in billions of years. Over just six years, this newly exposed soil absorbed enough solar radiation to raise the temperature of the entire moon’s surface by up to 3.6 degrees F (2 degrees C), the study found.

Livescience

You got that? They didn’t just raise the temperature where they walked but the ENTIRE moon!

You buy it? I hope not. Great laugh, right?

What is the ratio of surface area walked to the entire moon? I don’t know, but it’s ultra tiny. Seems like heat capacity calculations were ignored. The walked surface area might have to be millions (if not billions) of degrees to raise the entire surface area of the moon by a single degree – ASSUMING there’s horizontal heat transfer via conduction.

Now why would they say something that absurd?

I’ll tell you. Scientists have known that Total Solar Irradiance has been decreasing since the 1950s, and the moon has virtually no atmosphere. Because there is no atmosphere there can’t be any stupid greenhouse effect at work.

That would leave geothermal (lunathermal, I guess) warming as the only culprit!

And if the surface of the moon can warm up due to more internal energy coming up from beneath the surface, perhaps the same thing can be at work on Earth …

Think about it, Occam’s Razor sharp … (answer)

-Zoe

Do blankets warm you?

Believers of the Greenhouse Effect all use the same analogy to get you to believe in their junk science. The site Skeptical Science sets the standard in this article:

So have climate scientists made an elementary mistake? Of course not! The skeptic is ignoring the fact that the Earth is being warmed by the sun, which makes all the difference.

To see why, consider that blanket that keeps you warm. If your skin feels cold, wrapping yourself in a blanket can make you warmer. Why? Because your body is generating heat, and that heat is escaping from your body into the environment. When you wrap yourself in a blanket, the loss of heat is reduced, some is retained at the surface of your body, and you warm up. You get warmer because the heat that your body is generating cannot escape as fast as before.

Link

And more:

To summarise: Heat from the sun warms the Earth, as heat from your body keeps you warm. The Earth loses heat to space, and your body loses heat to the environment. Greenhouse gases slow down the rate of heat-loss from the surface of the Earth, like a blanket that slows down the rate at which your body loses heat. The result is the same in both cases, the surface of the Earth, or of your body, gets warmer.

Link

NASA reminds us that:

The greenhouse effect is the way in which heat is trapped close to the surface of the Earth by “greenhouse gases.” These heat-trapping gases can be thought of as a blanket wrapped around the Earth, which keeps it toastier than it would be without them.

Link

You got that? Blankets warm you! Their logic is so sound that they couldn’t possibly be wrong, could they?

What empirical evidence do they provide for such an assertion? None!

Do they even attempt to predict what temperature a blanket could force? No!

Any such attempt would be very embarrassing for them, so instead they just leave it to the reader’s imagination.

First a note: there is no doubt that a blanket can make you warmer by blocking convection. The issue at hand is whether there is a warming due to radiative heat transfer, as is claimed for the greenhouse effect by analogy.

Let’s consider the case of a typical cotton blanket, whose emissivity ranges from 0.81 to 0.88 [Bellivieu 2019], depending on humidity. I will choose 0.85 for an average humidity condition; The exactness hardly matters. According to the verified program provided in my article The Dumbest Math Theory Ever, a blanket with an emissivity of 0.85 placed on a human being whose normal temperature is at 37°C, should produce a final skin temperature of …

$ ALB=0 TSI=2090.8 bash gheffect 0.85

Sec | Upwelling |   Temp    | GH Effect |  Trapped  | To Space
  1 | 522.700 W |  36.701 C | 444.295 W | 222.148 W | 300.553 W
  2 | 744.848 W |  65.389 C | 410.973 W |  94.413 W | 428.287 W
  3 | 839.260 W |  75.642 C | 396.811 W |  40.125 W | 482.575 W
  4 | 879.386 W |  79.738 C | 390.792 W |  17.053 W | 505.647 W
  5 | 896.439 W |  81.436 C | 388.234 W |   7.248 W | 515.452 W
  6 | 903.687 W |  82.151 C | 387.147 W |   3.080 W | 519.620 W
  7 | 906.767 W |  82.453 C | 386.685 W |   1.309 W | 521.391 W
  8 | 908.076 W |  82.582 C | 386.489 W |   0.556 W | 522.144 W
  9 | 908.632 W |  82.636 C | 386.405 W |   0.236 W | 522.464 W
 10 | 908.869 W |  82.659 C | 386.370 W |   0.100 W | 522.600 W
 11 | 908.969 W |  82.669 C | 386.355 W |   0.043 W | 522.657 W
 12 | 909.012 W |  82.673 C | 386.348 W |   0.018 W | 522.682 W
 13 | 909.030 W |  82.675 C | 386.345 W |   0.008 W | 522.692 W
 14 | 909.038 W |  82.676 C | 386.344 W |   0.003 W | 522.697 W
 15 | 909.041 W |  82.676 C | 386.344 W |   0.001 W | 522.699 W
 16 | 909.042 W |  82.676 C | 386.344 W |   0.001 W | 522.699 W
 17 | 909.043 W |  82.676 C | 386.344 W |   0.000 W | 522.700 W

82.6°C ! Really hot!

Note that I set the albedo to zero. This is because I figure any scattering of photons between human and blanket will find its path back to the human (and thus “should” cause warming), with very little leakage at the edges of the blanket. But let us be as generous as possible to climate alarmists and say the blanket has an albedo of 0.22 (The highest value found for cotton in scientific literature: Source 1, Source 2). What then?

$ ALB=0.22 TSI=2090.8 bash gheffect 0.85

Sec | Upwelling |   Temp    | GH Effect |  Trapped  | To Space
  1 | 407.706 W |  18.040 C | 346.550 W | 173.275 W | 234.431 W
  2 | 580.981 W |  44.999 C | 320.559 W |  73.642 W | 334.064 W
  3 | 654.623 W |  54.635 C | 309.513 W |  31.298 W | 376.408 W
  4 | 685.921 W |  58.484 C | 304.818 W |  13.302 W | 394.404 W
  5 | 699.222 W |  60.081 C | 302.823 W |   5.653 W | 402.053 W
  6 | 704.875 W |  60.752 C | 301.975 W |   2.403 W | 405.303 W
  7 | 707.278 W |  61.036 C | 301.614 W |   1.021 W | 406.685 W
  8 | 708.299 W |  61.157 C | 301.461 W |   0.434 W | 407.272 W
  9 | 708.733 W |  61.208 C | 301.396 W |   0.184 W | 407.522 W
 10 | 708.918 W |  61.230 C | 301.368 W |   0.078 W | 407.628 W
 11 | 708.996 W |  61.239 C | 301.357 W |   0.033 W | 407.673 W
 12 | 709.029 W |  61.243 C | 301.352 W |   0.014 W | 407.692 W
 13 | 709.043 W |  61.245 C | 301.349 W |   0.006 W | 407.700 W
 14 | 709.049 W |  61.245 C | 301.349 W |   0.003 W | 407.703 W
 15 | 709.052 W |  61.246 C | 301.348 W |   0.001 W | 407.705 W
 16 | 709.053 W |  61.246 C | 301.348 W |   0.000 W | 407.706 W
 17 | 709.054 W |  61.246 C | 301.348 W |   0.000 W | 407.706 W

61.2°C ! Still very hot.

OK, I’m now going to be extremely generous, and use an emissivity value of 0.5, which is not even scientifically justifiable, but let’s give the alarmists a huge advantage. What then?

$ ALB=0.22 TSI=2090.8 bash gheffect 0.5

Sec | Upwelling |   Temp    | GH Effect |  Trapped  | To Space
  1 | 407.706 W |  18.040 C | 203.853 W | 101.927 W | 305.780 W
  2 | 509.633 W |  34.746 C | 152.890 W |  25.482 W | 382.224 W
  3 | 535.114 W |  38.525 C | 140.149 W |   6.370 W | 401.336 W
  4 | 541.485 W |  39.448 C | 136.964 W |   1.593 W | 406.113 W
  5 | 543.077 W |  39.678 C | 136.167 W |   0.398 W | 407.308 W
  6 | 543.475 W |  39.735 C | 135.968 W |   0.100 W | 407.606 W
  7 | 543.575 W |  39.750 C | 135.919 W |   0.025 W | 407.681 W
  8 | 543.600 W |  39.753 C | 135.906 W |   0.006 W | 407.700 W
  9 | 543.606 W |  39.754 C | 135.903 W |   0.002 W | 407.704 W
 10 | 543.607 W |  39.754 C | 135.902 W |   0.000 W | 407.706 W
 11 | 543.608 W |  39.754 C | 135.902 W |   0.000 W | 407.706 W

Now we get only 39.8°C, for a total warm up of 2.8°C – by a blanket that can only be heated by the human, and starts off colder (or same) as the human.

So is there any evidence to support the heating of human skin by a passively heated blanket via backradiation ?

However, if a cotton blanket heated to 90°C is in contact with skin the patient does not experience the same tissue injuries, because the blanket has less than one third the specific heat of skin. In addition, the blanket has less than 1/1000 the density of skin (the density of a blanket is about 1 kg/m³ because it is roughly half cotton and half air.) The blanket can give up all of its heat to the skin yet raise the temperature no more than 1/80th of the 70°C temperature difference, or about 1°C.

[ House 2011 ]

This scientist rightfully does not acknowledge warming by radiative effect. The blanket must be theoretically warmed to 90°C to achieve a rise of about 1°C. A table of empirical results is also provided in [House 2011]:

Body PartUnheated BlanketsBlankets Warmed to 43.3°CBlankets Warmed to 65.6°C
Abdomen0.17°C1.11°C2.39°C
Lower Legs0.33°C0.89°C1.11°C
[ House 2011], Table 2, Converted to Celcius

Though there is obviously a tiny amount of warming due to blocking convection, we don’t see any warming as predicted by GH effect radiative heat transfer theory. We should’ve seen a very generous 2.8°C warming as predicted by such a theory in the column Unheated Blankets. We don’t even see such a high number with blankets externally heated to 65.6°C !

Now we move onto [Kabbara 2002]. In this paper we see how expensive equipment can be used to maintain a patient’s temperature. Figure 6 shows how externally heated air prevents a patient’s temperature from falling. But one may ask: What is the purpose of this expensive equipment when climate “scientists” already know that a non-externally heated blanket should raise skin temperature by at least the very generous 2.8°C?

Would you trust these climate “scientists” with your health? Do you think they really believe what they claim?

And now we move onto: US Patent – US6078026A

The blanket A has a maximum power draw of 6.5 amps. With fully charged batteries, the blanket will reach its target temperature (i.e. 100 degrees Fahrenheit or 38 degrees Celsius) approximately 5 minutes and will remain heated for five to eight hours.

Patent US6078026A

An external power source to raise T to 38°C?

Why need external power or even a patent when a simple blanket ought to do the trick?

Please do not object to this article because I based this off a normal temperature of 37°C. Even a hypothermic temperature of 33°C should be raised by 2.72°C, IF the GH effect blanket analogy held any merit.

A search on google scholar for “hospital blankets temperature” should convince anyone with integrity that blankets don’t raise your skin temperature in accordance to radiative transfer theory. For if they did, most of the discussion and science in that search would be moot: human-only heated blankets would solve the problems and special technology would not be necessary.

Skeptical Science finishes off their article:

So global warming does not violate the second law of thermodynamics. And if someone tells you otherwise, just remember that you’re a warm human being, and certainly nobody’s dummy.

Link

I’ll translate that for you: If you believe their sophistry, you are a dummy!

While using poetic license it is alright to say that blankets warm you, but using actual science, it is not correct. The best a blanket can do is keep you warm, but never make you warmer.

Enjoy 🙂 -Zoe

Addendum

Blanket(s) can suppress your perspiration and make you sick from your own urea, thus causing your temperature to go up. However, this could never be a proper analogy for the greenhouse effect.

Geothermal Animated

Geothermal Emission @ the Surface

This was derived from NCEP Reanalysis data, in the tradition of Measuring Geothermal …

Enjoy 🙂 -Zoe

Addendum

geochg.sh:

# source geochg.sh
# Zoe Phin 2020/03/13
    
F=(0 ulwrf dswrf uswrf lhtfl shtfl)                                                  
O=(0 3201.5 3086.5 3131.5 856.5 2176.5)

require() { sudo apt install nco gnuplot imagemagick; } # Linux Only
    
download() {
    b="ftp://ftp.cdc.noaa.gov/Datasets/ncep.reanalysis2.derived/gaussian_grid"
    for i in ${F[*]}; do wget -O $i.nc -c $b/$i.sfc.mon.mean.nc; done
}

extract() {
    for t in {000..491}; do echo "$t" >&2
        for i in {1..5}; do 
            ncks --trd -HC ${F[$i]}.nc -v ${F[$i]} -d time,$t | sed \$d | awk -F[=\ ] -vO=${O[$i]} '{ 
                printf "%7s %7s %7.3f\n", $4, $6, $8/10+O }' > .f$i
        done
        paste .f1 .f2 .f3 .f4 .f5 | awk '{ 
            printf "%s %s %7.3f\n", $1, $2, $3-($6-$9)+$12+$15 }' > .geo$t
    done
}

annualize() {
    for y in {0..40}; do 
        args=`for m in {0..11}; do printf ".geo%03d " $((12*y+m)); done`
        paste $args | awk '{ a=0; for (i=3;i<=NF;i+=3) a+=$i; print $1" "$2" "a/12 }' > .y$((1979+y))
    done
}

colorize() {
    range=(`sort -nk 3.1 .y* | awk 'NR==1{min=$3} END { print min" "$3 }'`)
    echo ${range[*]}
    for y in {1979..2019}; do awk -vmin=${range[0]} -vmax=${range[1]} 'BEGIN { dlt=max-min }
        {   if ($2 < 191) {$2+=169} else {$2-=191} 
            printf "%s %s %4d\n", $1, $2, 1023*($3-min)/dlt }' .y$y | awk 'BEGIN { n=0
            for (i=255; i>=0; i--) { pal[n] = sprintf("%d 0 255", i); n++ }
            for (i=0; i<=255; i++) { pal[n] = sprintf("0 %d %d", i, 255-i); n++ }
            for (i=0; i<=255; i++) { pal[n] = sprintf("%d 255 0", i); n++ }
            for (i=255; i>=0; i--) { pal[n] = sprintf("255 %d 0", i); n++ }
        } { 
            printf "%s %s %s\n", $2, $1, pal[$3] }
        ' > .c$y
    done
}

scale() {
    rm -f .scale
    range=(`sort -nk 3.1 .y* | awk 'NR==1{min=$3} END { printf "%d %d %d\n", min, $3, $3-min }'`)

    min=${range[0]}; max=${range[1]}; dlt=${range[2]}

    for h in {0..100}; do 
        seq 0 1023 | awk -vh=$h -vmin=$min -vdlt=$dlt 'BEGIN { n=0
                for (i=255; i>=0; i--) { pal[n] = sprintf("%d 0 255", i); n++ }
                for (i=0; i<=255; i++) { pal[n] = sprintf("0 %d %d", i, 255-i); n++ }
                for (i=0; i<=255; i++) { pal[n] = sprintf("%d 255 0", i); n++ }
                for (i=255; i>=0; i--) { pal[n] = sprintf("255 %d 0", i); n++ }
            } { 
            print $1*dlt/1023+min" "h" "pal[$1]
        }' >> .scale 
    done

    echo "set term jpeg size 740,140; set nokey; 
        set title 'Flux (W/m²)
        set xtics 100 out nomirror
        unset ytics; set noborder
        set xrange [$min:$max]; set yrange [0:100]
        rgb(r,g,b) = int(r)*65536 + int(g)*256 + int(b)
        plot '.scale' u 1:2:(rgb(\$3,\$4,\$5)) w dots lc rgb variable lw 1
    " | gnuplot > scale.jpg
}

plot() {
    for y in {1979..2019}; do echo $y >&2; echo "  
        set term jpeg size 740,420; set nokey
        set title '$y'
        set yrange [-180:180]; set xrange [0:720]
        set noborder; unset colorbox 
        unset xtics; unset ytics
        rgb(r,g,b) = int(r)*65536 + int(g)*256 + int(b)
        plot '.c${y}' u (\$1*2):(\$2*2):(rgb(\$3,\$4,\$5)) pt 5 ps 1 lc rgb variable
        " | gnuplot > c$y.jpg
    done
}

animate() {
    convert -loop 0 -delay 50 c*.jpg geoanim.gif
}

clean() { rm -f .geo* .[fyc]* .scale; }

Run it:

$ source geochg.sh
$ require  # Linux Only
$ download
$ extract
$ annualize
$ colorize
$ scale
$ plot
$ animate

Windows users need imagemagick package from Cygwin.

What caused 40 years of global warming?

I’m going to ignore the typical nonsense mainstream narrative, and do this analysis in the tradition of: Measuring Geothermal – A Revolutionary Hypothesis.

I will use 41 years of NCEP Reanalysis Data. Create a new file fluxchange.sh, and paste:

# source fluxchange.sh
# Zoe Phin 2020/03/10
    
F=(0 ulwrf dswrf uswrf lhtfl shtfl)                                                  
O=(0 3201.5 3086.5 3131.5 856.5 2176.5)

require() { sudo apt install nco gnuplot; } # Linux Only
    
download() {
    b="ftp://ftp.cdc.noaa.gov/Datasets/ncep.reanalysis2.derived/gaussian_grid"
    for i in ${F[*]}; do wget -O $i.nc -c $b/$i.sfc.mon.mean.nc; done
}

extract() {
    rm -f .fx*
    for i in {1..5}; do echo $i of 5 >&2
        for t in {000..491}; do
            ncks --trd -HC ${F[$i]}.nc -v ${F[$i]} -d time,$t | sed \$d | awk -F[=\ ] -vO=${O[$i]} -vt=$t '{ 
                W[$4]+=$8/10+O } END { for (L in W) { T += W[L]/192*cos(L*atan2(0,-1)/180) }
                printf "%04d %02d %7.3f\n", t/12+1979, t%12+1, T/60.1647 }'
        done | tee -a .fx$i
    done
}

annualize() {
    for i in {1..5}; do
        awk '{ T[$1]+=$3 } END { for (y in T) printf "%04d %7.3f\n", y, T[y]/12 }' .fx$i > .af$i
    done
}

change() {
    paste .af1 .af2 .af3 .af4 .af5 | awk '{ 
        printf "%s %s %s %s %s %s | %7.3f %7.3f %7.3f\n", 
            $1, $2, $4, $6, $8, $10, $2+$8+$10, $4-$6, $2-($4-$6)+$8+$10 }' | tee fluxchg.csv | awk '
        NR==1 { Ui=$2; Ni=$5+$6; Si=$9; Gi=$10 } END { 
            dU=$2-Ui; dN=$5+$6-Ni; dS=$9-Si; dG=$10-Gi
            printf "Upwelling Change:\t%7.3f W/m^2\n", dU
            printf "NonRadiative Change:\t%7.3f W/m^2\n\n", dN
            printf "Net Solar Change:\t%7.3f W/m^2\n", dS
            printf "Geothermal Change:\t%7.3f W/m^2\n", dG
            
        }'
}

plot() {
    echo "set term png size 740,550 font 'arial,12'; unset key; set grid
    plot 'fluxchg.csv' u 1:9 t 'Net Solar' w lines lw 3 lc rgb 'orange'" | gnuplot > slrchg.png

    echo "set term png size 740,550 font 'arial,12'; unset key; set grid
    plot 'fluxchg.csv' u 1:10 t 'Geothermal' w lines lw 3 lc rgb 'green'" | gnuplot > geochg.png
}

Run it:

$ source fluxchange.sh
$ require                 # linux only
$ download
$ extract
$ annualize
$ change

Upwelling Change:         3.401 W/m^2
NonRadiative Change:      4.784 W/m^2

Net Solar Change:         1.419 W/m^2
Geothermal Change:        6.766 W/m^2

The results are changes for years 1979 to 2019 (inclusive). The upwelling radiation flux and non-radiative flux equivalent has changed 3.401+4.784 = 8.185 W/m², and the attribution is properly divided among

  1. The change in insolation (primarily due to reduced cloud cover) – 1.419 W/m²
  2. Internal geothermal changes within the Earth – 6.766 W/m²

The crackpot mainstream greenhouse gas theory lacks empirical evidence, and yet its followers have the nerve to claim that humans are mostly responsible for recent warming. Nonsense. The cause was always #1 and #2.

Plot results:

$ plot

Two new files created: slrchg.png and geochg.png

Net Solar @ Surface (W/m²)
Geothermal @ Surface (W/m²)

Enjoy 🙂 – Zoe

Addendum

$ cat fluxchg.csv

1979 395.786 186.921 26.919 87.056 7.335 | 490.177 160.002 330.175
1980 396.248 186.179 27.066 88.049 7.452 | 491.749 159.113 332.636
1981 395.826 186.227 26.999 87.365 6.982 | 490.173 159.228 330.945
1982 395.207 187.333 26.994 87.962 7.934 | 491.103 160.339 330.764
1983 396.148 187.429 27.092 87.688 7.736 | 491.572 160.337 331.235
1984 395.186 187.830 26.942 86.853 7.945 | 489.984 160.888 329.096
1985 394.914 187.021 27.373 86.890 7.407 | 489.211 159.648 329.563
1986 395.503 186.138 26.799 88.883 7.567 | 491.953 159.339 332.614
1987 396.042 186.786 27.074 89.541 7.123 | 492.706 159.712 332.994
1988 396.403 185.917 26.844 88.428 7.598 | 492.429 159.073 333.356
1989 395.692 187.332 26.878 88.224 7.659 | 491.575 160.454 331.121
1990 396.751 185.962 26.491 88.830 7.405 | 492.986 159.471 333.515
1991 396.649 186.832 26.841 88.516 7.939 | 493.104 159.991 333.113
1992 395.438 187.175 27.030 89.625 8.814 | 493.877 160.145 333.732
1993 395.298 187.121 26.921 89.680 8.397 | 493.375 160.200 333.175
1994 395.859 187.384 27.092 90.347 8.459 | 494.665 160.292 334.373
1995 396.609 186.948 26.720 90.761 8.292 | 495.662 160.228 335.434
1996 395.938 186.889 27.293 92.229 8.509 | 496.676 159.596 337.080
1997 396.798 187.287 26.950 92.895 7.849 | 497.542 160.337 337.205
1998 397.931 186.646 26.847 92.945 7.873 | 498.749 159.799 338.950
1999 396.517 187.779 26.880 92.037 8.052 | 496.606 160.899 335.707
2000 396.340 187.967 27.053 94.193 7.936 | 498.469 160.914 337.555
2001 397.321 187.681 26.674 94.724 7.890 | 499.935 161.007 338.928
2002 397.710 188.238 26.708 94.694 7.949 | 500.353 161.530 338.823
2003 397.804 188.196 26.783 95.019 7.977 | 500.800 161.413 339.387
2004 397.397 187.912 26.836 95.386 7.933 | 500.716 161.076 339.640
2005 398.228 187.168 26.577 93.679 7.619 | 499.526 160.591 338.935
2006 397.815 187.226 26.505 93.671 6.732 | 498.218 160.721 337.497
2007 397.605 186.780 26.632 93.904 6.247 | 497.756 160.148 337.608
2008 397.106 188.004 27.021 92.936 6.565 | 496.607 160.983 335.624
2009 397.900 187.515 26.678 93.026 7.348 | 498.274 160.837 337.437
2010 398.153 186.115 26.535 94.463 6.238 | 498.854 159.580 339.274
2011 397.179 186.900 26.747 93.863 6.269 | 497.311 160.153 337.158
2012 397.674 187.437 26.768 93.584 6.606 | 497.864 160.669 337.195
2013 397.805 187.167 26.953 93.387 6.382 | 497.574 160.214 337.360
2014 398.137 187.495 26.908 94.028 6.460 | 498.625 160.587 338.038
2015 398.972 187.381 26.727 94.254 6.797 | 500.023 160.654 339.369
2016 399.599 185.911 25.952 93.387 6.276 | 499.262 159.959 339.303
2017 399.039 186.358 26.212 94.697 6.395 | 500.131 160.146 339.985
2018 398.596 187.198 26.528 94.232 6.356 | 499.184 160.670 338.514
2019 399.187 187.909 26.488 93.321 5.854 | 498.362 161.421 336.941
Column 1Year
Column 2Earth Longwave Upwelling
Column 3Solar Shortwave Downwelling
Column 4Solar Shortwave Upwelling
Column 5Latent Heat
Column 6Sensible Heat
Column 7Total Equivalent Received by Atmosphere
Column 8Net Solar (Shortwave Down minus Up)
Column 9Geothermal (Columns: #2 – (#3 – #4) + #5 + #6 )
Columns

Dumbest Math Theory Ever

Mainstream climate scientists believe in the dumbest math theory ever devised to try and explain physical reality. It is called the Greenhouse Effect. It’s so silly an unbelievable that I don’t even want to give it the honor of calling it a scientific theory, because it is nothing but ideological mathematics that has never been empirically validated. In fact it is nothing but a post hoc fallacy: the surface is hotter than what the sun alone can do, therefore greenhouse gases did it!

Today we will play with this silly math theory called the greenhouse effect. Here are two examples of its typical canonical depiction:


Let’s get started. Please create a new file called gheffect, and paste the following into it:

# bash gheffect
# Zoe Phin, 2020/03/03

[ -z $TSI ] && TSI=1361
[ -z $ALB ] && ALB=0.306

echo $1 | awk -vALB=$ALB -vTSI=$TSI 'BEGIN { 
		SIG = 5.67E-8 ; CURR = LAST = SUN = TSI*(1-ALB)/4
		printf "Sec | Upwelling |   Temp    | GH Effect |  Trapped  | To Space\n"
	} {
	for (i=1 ;; i++) {
		printf "%3d | %7.3f W | %7.3f C ", i, CURR, (CURR/SIG)^0.25-273.16

		CURR = SUN + $1*LAST/2 ; GHE = SUN - (LAST*(1-$1))

		printf "| %7.3f W | %7.3f W | %07.3f W\n", GHE, CURR-LAST, CURR-GHE

		if ( sprintf("%.3f", CURR) == sprintf("%.3f", LAST) ) break

		#if ( CURR==LAST ) break

		LAST = CURR
	}
}'

Now run it with atmospheric emissivity = 0.792:

$ bash gheffect 0.792

Sec | Upwelling |   Temp    | GH Effect |  Trapped  | To Space
  1 | 236.133 W | -19.125 C | 187.018 W |  93.509 W | 142.625 W
  2 | 329.642 W |   2.971 C | 167.568 W |  37.030 W | 199.104 W
  3 | 366.672 W |  10.419 C | 159.866 W |  14.664 W | 221.470 W
  4 | 381.336 W |  13.212 C | 156.816 W |   5.807 W | 230.327 W
  5 | 387.142 W |  14.296 C | 155.608 W |   2.300 W | 233.834 W
  6 | 389.442 W |  14.722 C | 155.130 W |   0.911 W | 235.223 W
  7 | 390.352 W |  14.890 C | 154.940 W |   0.361 W | 235.773 W
  8 | 390.713 W |  14.957 C | 154.865 W |   0.143 W | 235.991 W
  9 | 390.856 W |  14.983 C | 154.835 W |   0.057 W | 236.077 W
 10 | 390.912 W |  14.994 C | 154.824 W |   0.022 W | 236.111 W
 11 | 390.935 W |  14.998 C | 154.819 W |   0.009 W | 236.125 W
 12 | 390.944 W |  14.999 C | 154.817 W |   0.004 W | 236.130 W
 13 | 390.947 W |  15.000 C | 154.816 W |   0.001 W | 236.132 W
 14 | 390.949 W |  15.000 C | 154.816 W |   0.001 W | 236.133 W

W is shorthand for W/m². Parameters are taken from NASA Earth Fact Sheet.

As you can see, by delaying outgoing radiation for 14 [¹] seconds [²], we have boosted surface up-welling radiation by an additional ~66% (154.8/236.1 W/m²). Amazing, right? That’s what my program shows, and that’s what is claimed:

This is zero in the absence of any long‐wave absorbers, and around 155 W/m² in the present‐day atmosphere [Kiehl and Trenberth, 1997]. This reduction in outgoing LW flux drives the 33°C greenhouse effect …

Attribution of the present‐day total greenhouse effect

The main prediction of the theory is that as the atmosphere absorbs more infrared radiation, the surface will get warmer. Let’s rerun the program with a higher atmospheric emissivity = 0.8

$ bash gheffect 0.8

Sec | Upwelling |   Temp    | GH Effect |  Trapped  | To Space
  1 | 236.133 W | -19.125 C | 188.907 W |  94.453 W | 141.680 W
  2 | 330.587 W |   3.168 C | 170.016 W |  37.781 W | 198.352 W
  3 | 368.368 W |  10.746 C | 162.460 W |  15.113 W | 221.021 W
  4 | 383.481 W |  13.614 C | 159.437 W |   6.045 W | 230.088 W
  5 | 389.526 W |  14.738 C | 158.228 W |   2.418 W | 233.715 W
  6 | 391.944 W |  15.184 C | 157.745 W |   0.967 W | 235.166 W
  7 | 392.911 W |  15.361 C | 157.551 W |   0.387 W | 235.747 W
  8 | 393.298 W |  15.432 C | 157.474 W |   0.155 W | 235.979 W
  9 | 393.453 W |  15.461 C | 157.443 W |   0.062 W | 236.072 W
 10 | 393.515 W |  15.472 C | 157.431 W |   0.025 W | 236.109 W
 11 | 393.539 W |  15.477 C | 157.426 W |   0.010 W | 236.124 W
 12 | 393.549 W |  15.478 C | 157.424 W |   0.004 W | 236.130 W
 13 | 393.553 W |  15.479 C | 157.423 W |   0.002 W | 236.132 W
 14 | 393.555 W |  15.479 C | 157.423 W |   0.001 W | 236.133 W

A 1% rise in atmospheric emissivity (0.8/0.792) predicts a 0.479 °C rise in surface temperature.

You would think such intelligent and “correct” mathematics would be based on actual experiments, but you would be wrong; it is not based on anything other than its presuppositions, and has been so for more than a century by name, and two centuries by concept.

Let’s outline a very simple experiment to test whether the greenhouse effect is true:

          Solid Surface
               v

1) Person   => |     IR Camera

2) Person   <- | ->  IR Camera

And repeats until "equilibrium"

Radiation leaves the body and strikes a screen. After absorption some radiation will go out to the IR camera, and the rest will go back to the person, thereby warming them up further, according to greenhouse effect theory. Note that we don’t even need absorption, merely reflecting back a person’s radiation should warm them up.

Let’s assume the human body emits 522.7 W/m² (37 °C) (Emissivity: 0.9961, [Sanchez-Marin 2009]). For compatibility with my program, we multiply this figure by 4, and call it TSI. Let’s assume the screen and air in between together has a total emissivity of 0.9. Now run:

$ TSI=2090.8 bash gheffect 0.9
Sec | Upwelling |   Temp    | GH Effect |  Trapped  | To Space
  1 | 362.754 W |   9.658 C | 326.478 W | 163.239 W | 199.515 W
  2 | 525.993 W |  37.188 C | 310.154 W |  73.458 W | 289.296 W
  3 | 599.451 W |  47.498 C | 302.809 W |  33.056 W | 329.698 W
  4 | 632.507 W |  51.830 C | 299.503 W |  14.875 W | 347.879 W
  5 | 647.382 W |  53.725 C | 298.016 W |   6.694 W | 356.060 W
  6 | 654.076 W |  54.566 C | 297.346 W |   3.012 W | 359.742 W
  7 | 657.088 W |  54.943 C | 297.045 W |   1.356 W | 361.398 W
  8 | 658.443 W |  55.112 C | 296.909 W |   0.610 W | 362.144 W
  9 | 659.053 W |  55.188 C | 296.848 W |   0.274 W | 362.479 W
 10 | 659.328 W |  55.222 C | 296.821 W |   0.124 W | 362.630 W
 11 | 659.451 W |  55.238 C | 296.809 W |   0.056 W | 362.698 W
 12 | 659.507 W |  55.244 C | 296.803 W |   0.025 W | 362.729 W
 13 | 659.532 W |  55.248 C | 296.801 W |   0.011 W | 362.743 W
 14 | 659.543 W |  55.249 C | 296.799 W |   0.005 W | 362.749 W
 15 | 659.548 W |  55.250 C | 296.799 W |   0.002 W | 362.752 W
 16 | 659.550 W |  55.250 C | 296.799 W |   0.001 W | 362.753 W
 17 | 659.552 W |  55.250 C | 296.799 W |   0.000 W | 362.753 W

We see that the screen is “trapping” a lot of human radiation from reaching the IR camera, and we expect an extra 296.8 W/m² greenhouse effect, bringing us up to 55°C. Merely placing a screen in front of us should make us feel as if we’re stepping inside a sauna.

https://youtu.be/fpx7hsoYEt4 – Look at all the trapped radiation!
https://youtu.be/Fx49t4sv7f0 – Look at all the trapped radiation!

These people must be really feeling the heat. But they don’t, and for good reason: preventing radiation from reaching a colder place does not cause heating back at the source. Had these people had thermometers strapped to them, they would note the virtually zero temperature rise (due to blocked convection). Look very closely at the videos. Note the seconds the screens are placed in front of their faces and notice the lack of any thermal reading changes. None!

All empirical evidence shows the opposite of the claims of the greenhouse effect.

So the question remains, why is the surface hotter than the sun can make it alone?

Energy Budget

If we look at the energy budget, we can see a dependency loop between surface and atmosphere: Surface -> Atmo = 350 and Atmo -> Surface = 324. So which came first, the chicken or the egg? This is nonsense. You can’t have a dependency loop for heat flow. Let’s try a theory that does not cause mental anguish and lacks empirical evidence. For this, we ignore the climate “scientists”, and go to the geophysicists:

https://www.routledgehandbooks.com/doi/10.1201/9781315371436-4

Here we see that Earth’s geothermal energy is capable of delivering 0 °C to the surface; This is equivalent to 315.7 W/m². We add the sun and subtract latent+sensible heat:

315.7 + 168 – 24 – 78 = 381.7 = Upwelling Radiadtion

Now we get a figure that that’s 390 – 381.7 = 8.3 W/m² off, but that’s OK because latent and sensible heat are not directly measured but estimated with certain physical assumptions, and/or the 0 °C geothermal is an approximation too.

Now we finally realize that the greenhouse effect is a hoax, and nothing but geothermal flipped up-side down. There is no Downwelling Radiation, there is only Upwelling-from-measurement-instrument Radiation (See here). Those who read Why is Venus so hot?, probably already saw where I was going. Now doesn’t it make more sense than backradiation temperature raising? Reality shows abolutely normal geothermal and solar combining to produce what we observe. We see all normal heating, and no ugly backwards zig-zag heating.

Let’s summarize:

     Upwelling
         ^
  |      |       ^        ^
  v      |       |        |
===============================
         |    Latent  Sensible
Solar ---+     Heat      Heat 
         |       ^        ^         
         |       |        |
         +------ Geothermal

Now which explanation does Occam’s Razor favor?

I hope you have enjoyed the return to sanity.

Sincerely, -Zoe

Notes

[¹] We only care about matching 3 decimal places. If we want to extend it to IEEE754 64-bit precision, it takes 40 seconds. Not that this matters much; Most work is accomplished in the first 5 seconds.

[²] I debated with myself whether to use the term seconds or iterations. Real physical calculations would take mass and heat capacity into account, but since greenhouse theorists don’t use these, I won’t either. Their simple model is in seconds.

Instructions for Windows Users

You can run all the code at this blog on Windows, rather than Linux. I will show you how. Preferred Windows is version 10. That’s the only one I’ve set up. Any Windows >7.0 should work in theory.


Run Windows Command Line (<Win>+R; type “cmd” then <enter>)

cd \
mkdir Zoe

Zoe is your variable. Make it whatever you want, remember it, then “exit” <enter>


Download Cygwin Setup Program. [Direct Link to 64-bit Exe]

Run Exe, click <Next>

Choose 1st
Set the root directory
Set to same previous directory
Choose a connection method, I choose 1st
Choose a mirror
Change View to “Full”

You will need 3 packages: wget, lua (5.3), gnuplot.

Type package name in search, then under New, CLICK on the word “Skip”, version number will appear

For lua, keep clicking “Skip/Version #” until version 5.3.x appears. Failure to do so will break gnuplot.

When done click <Next>. Next screen suggests dependencies; Just click <Next>, then wait through download & install process.

First is required, 2nd is your choice

Download Miniconda3. [Direct Link to 64-bit Exe]. Run Exe, click <Next>, click <I Agree>

Your choice. I do recommended.
Place it inside previous Cygwin directory for neatness
I select both. Caution if you are a python developer.

When complete, click <Next>, click <Next>, deselect both “Learn …”, click <Finish>

Double click

A new user home environment will be created.

The Path is “C:\Zoe\home\<Windows Username>”. All code can just go here.

Inside the Terminal:

$ conda config --add channels conda-forge
$ conda install nco numpy

Second command requires your confirmation. Type “y” and <enter>.

When done, exit with “exit” <enter>, and relaunch Cygwin Terminal.


Use any text editor you like (must be able to format Unix-style files), or get Sublime. [Direct Link to 64-bit Exe]

After install, run, and select: File > New File

Make sure to set View > Line Endings > Unix, otherwise script will not run!

Copy and paste the following sample code into the empty new file:

# source map.sh

download() {
	wget -c ftp://ftp.cdc.noaa.gov/Datasets/ncep.reanalysis/surface/land.nc
}

extract() {
	ncks --trd -HC land.nc | awk -F [=\ ] '{
		if ($6 < 191) {$6+=169} else {$6-=191}
		print $6" "$4" "$8
	}' > map.dat
}

plot() {
	echo 'set term png size 362,182; set nokey
		set yrange [-90:90]; set xrange [0:360]
		set noborder; unset colorbox 
		unset xtics; unset ytics
		set palette define (0 "blue", 1 "orange") 
		set margin 0,0,0,0
		plot "map.dat" u 1:2:3 pt 5 ps 1 lc palette' | gnuplot > map.png
}

Save this file to: C:\Zoe\home\<Windows Username>\map.sh

Now execute from Cygwin Terminal:

$ source map.sh
$ download
$ extract
$ plot

* or *

$ . map.sh && download && extract && plot

The result is a file called map.png inside C:\Zoe\home\<Windows Username>. Use Windows Explorer to find it and launch it.

If map.png looks like this … you are done! Most of my blog code will work.


Happy Coding 🙂 -Zoe

Deducing Geothermal

I used to be a fan of Joseph Postma before I realized he’s very stubborn and on the wrong track headed for a dead end. I hope he turns around.

I highly recommend that everyone read his great series … The Fraud of the Greenhouse Effect (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19). You will learn a lot!

Today I will be critiquing Joseph Postma’s paper A Discussion on the Absence of a Measurable Greenhouse Effect in light of what I know about his current view. I take no issue with his central proposition that there is no Greenhouse Effect, but I do take issue with his current personal conclusion that the sun, and the sun alone, is enough to explain the surface temperature. His latent heat doesn’t occur until there’s energy to evaporate water first, and the only energy he has is from the sun. My goal is to show that in fact the sun is not enough, and Postma’s implicit hypothesis is in error, though his paper is still very good and highly recommended reading.

We will use some basic data from NASA:

Solar irradiance (W/m2): 1361

Bond albedo: 0.306

Average temperature: 15°C

Diurnal temperature range: 10°C to 20°C

NASA’s Earth Fact Sheet

See code in the addendum. To run first part of analysis:

> source gmodel.sh && require && download && justsun

Sphere     ... Hard Way: 236.1329 W/m^2 , Easy Way: 236.1335 W/m^2
Hemisphere ... Hard Way: 472.2659 W/m^2 , Easy Way: 472.2659 W/m^2

The hard way performs the actual integration (approximation), while easy way just uses divisor (1/2 for sphere and 1/4 for hemisphere). The hard way is needed to create data of average of insolation across all latitudes as a function of local time. An average location on Earth will see this kind of daily insolation, averaged for the year. Keep in mind that this is an average value for a typical year and therefore my code purposefully disregards the math for Earth’s tilt and resulting seasonal daylight variation. It’s just not necessary. Resulting graph:

Global Average Insolation, using standard Albedo of ~0.3

It should be noted that we can’t use the standard albedo of ~0.3, because this albedo is an average for the entire surface+atmosphere ensemble. We need to know the actual portion of solar radiation that reaches the surface. This is different from the official standard albedo.

> absorbs
Surface Absorption: 0.4874

Flux data from NASA’s ISCCP Project (1983-2004 data here), yields a surface absorption of 0.4874, while NASA’s “official” energy budget [2008] shows: 163.3 / 340.3 = 0.4799. I am just going to choose an “albedo” of 0.52 (1-0.4799). We re-run with an ALB parameter set to 0.52:

> ALB=0.52 justsun
Sphere     ... Hard Way: 163.3196 W/m^2 , Easy Way: 163.3200 W/m^2
Hemisphere ... Hard Way: 326.6392 W/m^2 , Easy Way: 326.6392 W/m^2
Daily Insolation @ Surface for Average Location, Annually Averaged

Now we’re ready to move on to serious analysis. Postma has provided the only formula we will need:

Equation 11 (Page 13)

where C(t) is literally a climate term which could be either positive or negative (adding heat or taking heat away) in total, or composed of several unique contributions depending on if there is an additional heat source such as the “greenhouse effect”, or chemical and geologic sources, etc.

A.d.o.t.A.o.a.M.G.E, Page 13

emis = 1.0; % emissivity, using 1.0 for surface” [ I will use the same ]

— Same, Page 63

The following code snippets (see addendum) summarize this formula (emis = 1):

$1+ADD                          # As in Current Flux += ADD  # ADD = C(t)
T = T + ($1 - SIG*T^4)/TAU      # As in Tnew = Told + (Current Flux - SIG*Told^4)/TAU

We must choose a value for τ (TAU) that will produce a diurnal difference of 10°K (or °C) as shown in NASA’s Earth Fact Sheet above. The needed TAU equals 12940.

> TAU=12940; ADD=0; manydays; lastday

24HR  Sun ... 163.32 W/m2	
Day   Sun ... 326.64 W/m2	
Day   Max ... 236.64 K    -36.52 C	
Night Min ... 226.64 K    -46.52 C	
Max - Min ...  10.00 K     10.00 C	
24HR  Avg ... 231.59 K    -41.57 C	
24HR Flux ... 163.10 W/m2

We start off at T=0, and after 40 days we get to a stable typical day:

Note the result: Max – Min … 10.00 K. We have satisfied one of the criteria, but notice that our 24HR average is : 41.57°C. That’s not the 15°C we need. Obviously the sun is not enough! And the diurnal temperature does not go from a night average of -46.5°C to a day average of -36.5°C. We must satisfy all 4 temperature criteria, not just 1.

Postma spends a part of the paper analyzing a “C(t)” value of 324 W/m² (what is claimed for GHG backradiation) along with arbitrary (though intelligently guessed) τ values. He then dismisses the results for fairly good reasons. However he missed the crucial point: the sun is not enough. I’m going to show you what values he should have used. I have a parameter in my program (ADD) that is equivalent to C(t). I have found the necessary parameters to be TAU=12895, ADD=227.66. ADD is what I believe to be the radiative component of geothermal.

> TAU=12895; ADD=227.66; manydays; lastday

24HR  Sun ... 390.98 W/m2	
Day   Sun ... 781.96 W/m2	
Day   Max ... 293.21 K     20.05 C	
Night Min ... 283.21 K     10.05 C	
Max - Min ...  10.00 K     10.00 C
24HR  Avg ... 288.11 K     14.95 C	
24HR Flux ... 390.67 W/m2	
Geothermal (Green) + Solar (Yellow)
Geothermal (Green) + Solar (Yellow)

Notice that we satisfied all criteria set forth in NASA’s Earth Fact Sheet (with only 0.05°C error):

Day Max … 20.05 C
Night Min … 10.05 C
Max – Min … 10.00 K
24HR Avg … 14.95 C

But we’re not done. ADD is just the radiative component of geothermal. Let’s add Sensible and Latent Heat from NASA’s “official” energy budget [2008]:

227.66 + 18.4 + 86.4 = 332.46 W/m²

This result is not much different than the 335.64 W/m² result I got here: Measuring Geothermal, using NCEP Reanalysis data.

332.46 vs 335.64 ! What’s the significance of this? I was able to approximately get the same geothermal emergent radiative flux from a very simple model! I don’t know about you, but I’m impressed.

How about Postma? Where’s his mind today?

Yah…that’s definitely my Zoe…one of my most attractive stalkers for sure [Zoe: How sweet, TY] . She thinks that the flat Earth theory model is all totally fine [Zoe: strawman; no one presents an actual flat earth model, including those that print maps on flat paper rather than globes]…but backradiation isn’t from the atmosphere “because that’s impossible, but it is from geothermal.”

So…she wants to keep the flat Earth theory [Zoe: Two hemisphere 24hr heat capacity theory, actually] accounting where the Sun can’t heat the Earth or create and sustain the weather/climate, and where there’s some additional energy source which provides twice more energy than the Sun…but instead of it being “backradiation” she wants it to be geothermal….providing twice the energy than the Sun. She went on about this here for months…finally banned her…because the heat from geothermal is known and measured…and flat Earth theory would be the WRONG way to try to incorporate it anyway!

These people are sick, sick demented freaks, and they seem to really want to keep their flat Earth theory no matter what mechanisms need to change to make it work.

Joseph Postma

Stalker means you are criticizing a public scientist for their ideas. I agree with him that there is no Greenhouse Effect, but he goes too far – way too far. As you can see he still thinks the sun, and the sun alone, is enough to explain surface temperatures and their diurnal variation – and everyone who disagrees is a flat earther!

One thing from his publication I found very interesting:

Solar forcing acts directly only on the top few millimeters of surface soil itself (the penetration depth is larger for ocean water and some heating occurs directly in the atmosphere via extinction), and this is where the incoming short wave radiant energy performs work and raises the temperature. This heat energy will then conduct its way down into the subsurface until it merges with the geothermal temperature at a depth of somewhere around, say, 5 to 10 meters and temperature of approximately 5°C to 10°C [Zoe: I found 0 to 10] … and this much larger thermal-mass system will respond much more slowly, in aggregate, to the solar variation. This low-frequency [Zoe: Goes to nil frequency] aggregate response will provide a baseline upon which the daily variations will oscillate at the top

A.d.o.t.A.o.a.M.G.E, Page 16

A baseline you say? Maybe this baseline would exist without the sun? Maybe this baseline is capable of its own thermal action and emission? Too bad he did not pursuit this line of thought. But thanks for reaffirming my intuition at the time.

I hope you’ve enjoyed this article.

Love, -Zoe

Update

Guys I just had several dozen notifications come through of Zoe trying to link to my blog from what is apparently her new blog.

WHAT A FN STALKER! [Zoe: You made yourself a public scientist so stop playing the victim]

“Zoe’s geothermal insights” or some retardation.

“Flat Earth is OK! [Zoe: usual strawman]. We just need to use geothermal to make up the temperature instead!”

Basic bitch. [Zoe: How lovely]

— Joseph E Postma says:2020/02/25 at 8:24 AM

Nice! Joseph, your solar-only theory can’t explain observations. It would be great if you could rejoin reality and continue to make contributions to science, as you did in the past.

Addendum

Code gmodel.sh:

# source gmodel.sh
# Zoe Phin, 2020/02/20

plothead="set term png size 740,550 font 'arial,12'; unset key
	set xtics 360 out nomirror; set mxtics 6; set grid xtics ytics
	set xtics add ('0h' 0,'6h' 360,'12h' 720,'18h' 1080,'24h' 1440)
	set yrange [0 to 800]; set ytics 100,100,800
"

require() { sudo apt-get install gnuplot; }

download() {
	wget -O sdn.bin -c https://isccp.giss.nasa.gov/pub/data/FC/FDAVGANN__SWFLSRFDW
	wget -O sup.bin -c https://isccp.giss.nasa.gov/pub/data/FC/FDAVGANN__SWFLSRFUW
}

absorbs() {
	od='od -An -f -w4 --endian=big'; $od sup.bin > .sup; $od sdn.bin > .sdn
	paste .sdn .sup | awk '{S+=$1-$2} END { 
		printf "Surface Absorption: %.4f\n", (S/NR)/(1361/4) }'
}

justsun() {
	[ -z $ALB ] && ALB=0.306
	seq -89.875 0.25 89.875 | awk -vA=$ALB 'BEGIN {pi = atan2(0,-1); r=pi/180} {
		CONVFMT="%.8f"; if ($1 < 0) $1 = 0 - $1
		a = sin(r*($1+0.125))-sin(r*($1-0.125))
		for (m=0; m<1440; m++) {
			y = cos((m-720)*pi/720)
			print m" "$1" "a/2" "1361*(1-A)*cos($1*pi/180)*((y<0)?0:y)
		}
	}' | awk '{ M[$1]+=$3*$4 } END {
		for (i in M) print M[i]
	}' | tee solar.dat | awk -vA=$ALB '$1>0 { S+=$1 } END { CONVFMT="%.4f"
		HW = S/720; EW = 1361*(1-A)/2
		print "Sphere     ... Hard Way: " HW/2 " W/m^2 , Easy Way: " EW/2 " W/m^2"
		print "Hemisphere ... Hard Way: " HW   " W/m^2 , Easy Way: " HW   " W/m^2" }'

	echo "$plothead set title 'Solar Flux (W/m²)'
	plot 'solar.dat' u (\$1==0?-1:\$1) w filledcu above fc 'yellow',\\
	     513.085*cos((x-720)*pi/720) w lines lc rgb 'orange' lt 8 lw 3
#	     741.835*cos((x-720)*pi/720) w lines lc rgb 'orange' lt 8 lw 3
	" | gnuplot > justsun.png
}

manydays() {
	[ -z $ADD ] && ADD=0; [ -z $DAYS ] && DAYS=15
	for n in `seq $DAYS`; do cat solar.dat | awk -vADD=$ADD '{ 
		printf "%7.3f\n", $1+ADD }'
	done | awk -vTAU=$TAU 'BEGIN { SIG=5.67e-8 } { 
		T=T+($1-SIG*T^4)/TAU
		printf "%10.6f %10.6f %10.6f\n", $0, T, SIG*T^4
	}' > many.dat

	echo "$plothead set key samplen 0; set title '$DAYS Days of Flux (W/m²)'
	set xtics format ''; set xtics 1440 in mirror; unset mxtics
	plot 'many.dat' u (\$1==0?-1:\$1) title '' w filledcurves above y=$ADD fc 'yellow',\\
	$ADD t '' w filledcu above y=0 fc 'dark-green' fs solid 0.8 border lt 2 lw 4,\\
	'' u 3 t 'τ = $TAU' w lines lw 2 lc 8" | gnuplot > many-t${TAU}.png
}

lastday() {
        tail -n 1440 many.dat | nl | tee last.dat | awk 'BEGIN { MIN=999 }
                   $3 > MAX { MAX=$3 }
                   $3 < MIN { MIN=$3 }
                        $2>0 { S+=$2 }
        NR >360 && NR <=1080 { D+=$3 }
        NR<=360 || NR > 1080 { N+=$3 }
        END { SIG=5.67e-8; D24 = (D+N)/1440; C=273.16
                printf "24HR  Sun ... %6.2f W/m2        \n", S/1440
                printf "Day   Sun ... %6.2f W/m2        \n", S/720
                printf "Day   Max ... %6.2f K %9.2f C   \n", MAX, MAX-C
                printf "Night Min ... %6.2f K %9.2f C   \n", MIN, MIN-C
                printf "Max - Min ... %6.2f K %9.2f C   \n", MAX-MIN, MAX-MIN
#               printf "Day   Avg ... %6.2f K %9.2f C   \n", D/720, D/720-C
#               printf "Night Avg ... %6.2f K %9.2f C   \n", N/720, N/720-C
#               printf "D-N Delta ... %6.2f K           \n", (D-N)/720
                printf "24HR  Avg ... %6.2f K %9.2f C   \n", D24, D24-C
                printf "24HR Flux ... %6.2f W/m2        \n", SIG*D24^4
        }'

        echo "$plothead set key samplen 0
        set ylabel 'Flux (W/m²)'; set y2label 'Temperature (K)'
        set ytics out 50 nomirror; set mytics 5; 
        set y2tics 210,10,800; set my2tics 2
        set link y2 via (y/5.67e-8)**0.25 inverse 5.67e-8*(y**4)

        plot $ADD t '' w filledcu above y=0 fc 'dark-green' fs solid 0.8 border lt 2 lw 4,\\
        'last.dat' u 1:2 t '' w filledcu above y=$ADD+1 fc 'yellow' fs solid 1 border lt 5 lw 4,\\
        '' u 1:3 t 'Surface T (τ=$TAU)' w lines lw 3 lc 8 axes x1y2" | gnuplot > last.png
}

Two theories, one ideological, other verified

About a dozen people who have read my article, the case of two different fluxes, have dismissed my central argument by invoking a silly theory. The most famous critic, Willis Eschenbach (of WUWT fame), thus writes:

Zoe, I just took a look at your page. I fear that you’ve made a mathematical mistake. The problem is that you have over-specified the equation. Let me explain by a parallel example:

It is a physical impossibility for there to be more water flowing out of the end of a hose than there is flowing through the hose. Can’t happen. The flow through the hose must be equal to the flow out the end.

In the same way, It is a physical impossibility for there to be more energy flowing out of the end of a block of concrete than there is flowing through the block. It is logically impossible. The flow through the block must be equal to the flow out the end.

— Willis Eschenbach

Willis then went on to resolve my equations using his key “insight” that the radiation emerging out of an object “must” equal its conductive heat flux. In the language of my article, the assertion is: CSR = CHF (Conductive Heat Flux = Cold Side Radiation [radiation at interested end] ).

The emission is at any moment εσT⁴. If the emission is not balanced by absorption or heat flux the temperature and consequently the emission will drop.

— Dirk Visser

This is essentially the same as Willis’ argument.

Other critics write:

If the heat flux is only 92 mW/m², then obviously geothermal can only make the surface about 36 kelvin.

— Unnamed

Again we see the CSR = CHF assumption, then evaluated with Stefan-Boltzmann’s Law.

Geothermal is negligible.

— Joseph Postma

Sun is more than 500 times as powerful as geothermal.

— Unnamed

Both of these comments implicitly assume CSR = CHF.

All other critiques are just variations on the same theme. Only difference is how many implicit logical leaps they are from the core assumption that CSR “must equal” CHF.

In my article I clearly explained that there is a difference between conductive heat flux within a medium and the emergent electromagnetic radiation out of the medium, but it’s been lost on deaf ears for some people. I don’t why (their denial), but I feel the need to shame them a little.

Let’s see what wikipedia says about a black body:

A black body in thermal equilibrium (that is, at a constant temperature) emits electromagnetic radiation called black-body radiation. The radiation is emitted according to Planck’s law, meaning that it has a spectrum that is determined by the temperature alone…

— Wikipedia

What is the conductive heat flux (CHF) of an object at thermal equilibrium (a uniform temperature)?

The conduction formula is:

Conduction Formula

CHF = Q/(A*Δt)

Obviously with a uniform temperature, ΔT equals 0, and thus CHF is also ZERO!

And what did Ludwig Boltzmann and Max Planck discover emitted from their radiation cavities which had a CHF of zero? Was it also zero as my critics assert with their CHF=CSR theory? No, of course not! What comes out of an object with CHS=0 is CSR=εσT⁴ , and not CHF=εσT⁴ [ as my 2nd critic evaluated ]. Nor is this CSR transient and headed for zero, as Willis and Dirk would have you believe.

Just as the wikipedia snippet above implies: ONLY the TEMPERATURE on the edge matters.

a spectrum that is determined by the temperature alone

— Wikipedia

Now wikipedia is not always right about everything, but this is so commonly well known that I don’t need any other source. You can find essentially the same thing in every high school or college textbook. Every experiment since Gustav Kirchoff [1859] has invalidated the CHF=CSR hypothesis, and reaffirmed my hypothesis: CHF and CSR are completely different and their relationship is inverse:

CSR = εσ(T-CHF*L/k)⁴

The greatest external emission is achieved at the lowest internal heat flux, assuming the hot side temperature is the same.

At thermal equilibrium (CHF=0), this formula drops to:

CSR = εσT⁴

Yes, just Stefan-Boltzmann’s Law

If my critics were correct, then all (even one!) experiments since 1859 would show their claim to be true. Yet none of them do, because my critics are … merely engaging in ideological mathematics and not real physics.

Summary:

CHF = CSRCSR = εσ(T-CHF*L/k)⁴
Ideological Mathematics Physics

Geothermal is more than capable of delivering 0°C (CSR=~315 W/m²), despite the fact that its near surface CHF is ~92 mW/m². In fact, assuming same temperature at same depth, a smaller CHF yields a higher CSR. The CHF (~92 mW/m²) alone is not even enough information to determine the final temperature, and hence radiation out of the medium. Quoting CHF and comparing it to insolation is nothing but junk science.

A CHF of 92 mW/m² does not inhibit CSR of 315 W/m²

Sincerely Yours, -Zoe

Update 2020/03/03

This video shows CHF through the water approaching zero. Gets to ~0.01 W/m² at the end.

This video shows CHF through the pan get to zero. See time 01:53.

Measuring Geothermal – A Revolutionary Hypothesis

I’m proposing a brand new hypothesis. Here it is:

  1. The so called greenhouse effect is nothing but an artifact of geothermal, flipped upside down.
  2. We can measure geothermal quite easily:

Geothermal Emission = Upwelling Longwave Radiation – (Downwelling Shortwave Radiation – Upwelling Shortwave) + Latent Heat Flux + Sensible Heat Flux

In the language of NCEP Reanalysis, the formula is:

geo = ulwrf – (dswrf – uswrf) + lhtfl + shtfl

Program: fluxes.sh:

# source flux.sh
# Zoe Phin 2020/02/02
    
F=(0 ulwrf dswrf uswrf lhtfl shtfl)                                                  
O=(0 3201.5 3086.5 3131.5 856.5 2176.5)

require() { sudo apt install nco; }
    
download() {
    b="ftp://ftp.cdc.noaa.gov/Datasets/ncep.reanalysis2.derived/gaussian_grid"
    for i in ${F[*]}; do wget -O $i.nc -c $b/$i.sfc.mon.mean.nc; done
}
 
extract() {
    for i in {1..5}; do echo $i of 5 >&2
        ncks --trd -HC ${F[$i]}.nc -v ${F[$i]} | awk -F[=\ ] -vO=${O[$i]} '  
        NF != 0 { W[$4]+=$8/10+O } END { for (L in W)                              
            printf "%07.3f %07.3f\n", L, W[L]/94464}' | sort -n > .w$i
    done
}
    
geo() {
    paste .w1 .w2 .w3 .w4 .w5 | tr ' ' '\t' | cut -f 1,2,4,6,8,10 | awk '  
        function S(x) { return cos(x*atan2(0,-1)/180) } {
        A+=$2*S($1); B+=$3*S($1); C+=$4*S($1); D+=$5*S($1); E+=$6*S($1);    
        G=$2+$5+$6-($3-$4); F+=G*S($1); print $0" "G } END { X=60.1647         
        printf "\nAverage:%07.3f %07.3f %07.3f %07.3f %07.3f %07.3f\n",     
            A/X, B/X, C/X, D/X, E/X, F/X }'    
}

Run it:

> source fluxes.sh
> require
> download
> extract
> geo

Result:

-88.542	160.572	130.617	109.567	001.947	-52.117  89.352
-86.653	169.731	129.611	107.707	002.169	-52.952  97.044
-84.753	179.068	129.526	106.648	004.162	-53.255 107.097
-82.851	183.643	130.241	108.115	003.545	-49.320 115.742
-80.947	184.386	132.014	110.074	002.310	-44.688 120.068
-79.043	186.170	133.439	111.061	002.894	-43.264 123.422
-77.139	192.359	134.189	106.598	004.336	-39.082 130.022
-75.235	201.453	135.480	107.015	004.942	-37.415 140.515
-73.331	213.577	137.236	107.364	006.520	-36.813 153.412
-71.426	230.078	138.094	105.162	009.339	-37.852 168.633
-69.522	249.329	137.100	092.216	013.147	-29.933 187.659
-67.617	266.633	135.069	077.029	017.929	-21.059 205.463
-65.713	282.318	134.510	068.697	018.535	-10.248 224.792
-63.808	296.958	129.902	042.475	022.244	-00.262 231.513
-61.903	307.732	128.396	029.934	025.698	-00.212 234.756
-59.999	315.924	128.434	021.671	030.174	-00.973 238.362
-58.094	322.948	128.718	014.388	034.865	-01.690 241.793
-56.189	328.903	129.930	010.542	038.852	-04.608 243.759
-54.285	334.101	132.116	009.320	041.700	-08.192 244.813
-52.380	339.183	134.906	009.415	044.105	-10.608 247.189
-50.475	344.712	138.185	009.791	046.719	-11.703 251.334
-48.571	351.177	142.292	010.109	051.982	-10.207 260.769
-46.666	358.411	147.196	010.329	058.012	-07.006 272.550
-44.761	366.359	152.414	010.643	066.823	-03.668 287.743
-42.856	375.462	158.630	011.047	077.603	002.155 307.637
-40.952	384.799	165.580	011.384	090.318	007.026 327.947
-39.047	392.785	173.228	011.964	099.120	009.369 340.010
-37.142	399.903	181.187	013.021	103.336	011.744 346.817
-35.237	405.908	189.572	013.564	105.950	012.320 348.170
-33.333	411.725	196.549	015.631	104.388	016.865 352.060
-31.428	417.538	202.463	017.816	105.123	018.885 356.899
-29.523	422.830	207.009	019.005	109.663	018.734 363.223
-27.619	427.894	210.176	019.605	113.762	018.905 369.990
-25.714	432.643	212.739	019.920	117.687	019.344 376.855
-23.809	436.710	216.051	021.043	121.615	018.673 381.990
-21.904	440.565	219.806	020.820	127.532	018.441 387.552
-20.000	444.026	222.918	019.940	133.700	018.789 393.537
-18.095	446.273	224.950	019.483	139.782	016.592 397.180
-16.190	448.825	225.921	018.564	144.738	016.498 402.704
-14.286	451.648	226.038	017.898	150.638	014.189 408.335
-12.381	454.276	226.553	017.043	151.484	013.125 409.375
-10.476	456.781	226.559	016.880	148.830	012.093 408.025
-08.571	458.403	225.052	016.935	142.993	012.168 405.447
-06.667	459.008	221.504	017.089	136.852	010.468 401.913
-04.762	459.537	216.769	016.681	127.963	009.479 396.891
-02.857	458.436	210.836	016.090	118.484	006.789 388.963
-00.952	458.345	205.033	015.510	108.482	005.658 382.962
000.952	459.718	198.242	015.232	111.546	006.438 394.692
002.857	462.011	191.416	014.820	117.553	007.996 410.964
004.762	462.380	187.711	014.821	119.988	008.598 418.076
006.667	462.323	190.948	015.854	122.820	009.177 419.226
008.571	462.349	199.546	016.969	128.123	009.886 417.781
010.476	462.901	210.785	017.116	130.262	013.019 412.513
012.381	462.791	220.387	018.292	135.495	011.610 407.801
014.286	462.307	225.155	020.657	132.269	016.258 406.336
016.190	459.679	224.369	024.034	126.352	015.114 400.810
018.095	455.597	221.616	027.286	120.399	012.692 394.358
020.000	451.165	218.953	028.889	114.864	012.807 388.772
021.904	447.301	216.573	029.350	110.086	014.447 384.611
023.809	443.590	215.060	029.035	107.981	016.573 382.119
025.714	438.637	213.123	028.970	101.096	020.691 376.271
027.619	430.920	212.546	029.715	093.543	021.592 363.224
029.523	422.402	214.091	030.752	089.999	025.102 354.164
031.428	413.805	214.585	030.174	091.357	027.343 348.094
033.333	405.764	214.814	028.743	095.340	026.950 341.983
035.237	397.747	212.258	028.421	093.293	025.672 332.875
037.142	392.201	206.275	026.668	091.617	027.492 331.703
039.047	386.381	198.060	028.017	087.172	024.349 327.859
040.952	378.644	191.873	027.470	074.502	022.918 311.661
042.856	369.978	186.137	027.338	063.643	017.247 292.069
044.761	362.398	179.232	028.366	058.155	013.394 283.081
046.666	354.823	172.723	031.027	054.427	009.174 276.728
048.571	347.668	166.185	032.164	054.681	004.311 272.639
050.475	342.281	159.203	030.852	055.521	000.441 269.892
052.380	338.019	152.781	029.620	057.063	-04.077 267.844
054.285	334.264	146.661	028.962	056.201	-04.137 268.629
056.189	330.580	141.411	028.965	055.405	-04.194 269.345
058.094	325.893	137.501	030.894	053.379	-03.215 269.450
059.999	318.476	134.071	034.188	048.998	-04.704 262.887
061.903	309.515	130.940	038.740	045.262	-13.202 249.375
063.808	301.891	127.182	041.305	040.833	-15.629 241.218
065.713	294.212	123.862	044.413	034.349	-18.023 231.089
067.617	287.976	121.268	048.410	028.725	-16.735 227.108
069.522	282.844	120.001	052.192	023.153	-09.531 228.657
071.426	278.003	118.977	060.422	021.281	-10.585 230.144
073.331	271.879	117.964	066.545	015.967	-11.538 224.889
075.235	266.203	115.823	069.800	013.482	-10.869 222.793
077.139	259.555	116.130	078.981	008.960	-16.821 214.545
079.043	254.037	115.012	084.006	006.061	-21.808 207.284
080.947	250.528	113.843	087.865	005.230	-24.534 205.246
082.851	247.531	113.681	093.175	002.866	-27.892 201.999
084.753	247.433	112.121	093.849	002.508	-27.153 204.516
086.653	247.837	110.516	092.525	002.951	-27.169 205.628
088.542	247.890	109.704	092.062	002.538	-27.169 205.617

Average:396.983 187.114 026.813 091.591 007.370 335.643

Columns:

Column 1latLatitude
Column 2ulwrf Upwelling Longwave Radiation
Column 3dswrf Downwelling Shortware Radiation
Column 4uswrf Upwelling Shortwave Radiation
Column 5lhtfl Latent Heat Flux
Column 6shtflSensible Heat Flux
Column 7geoGeothermal

The value all the way on the bottom right: 335.643, is our geothermal emission in W/m² (for whole Earth). This means that geothermal supplies a temperature of:

(335.643/5.67e-8)^0.25-273.16 = 4.22°C

Hmm, If only there was some way to reaffirm this via the scientific literature…

Sure looks like geothermal delivers at least 0 degrees celsius. Our calculation is slightly off, but keep in mind that Sensible and Latent Heat is not directly measured by satellite but approximated via satellite data and some physical assumptions. Also, these geotherm diagram have been around for decades and it’s possible they are just sticking to a convention, while the actual measured surface T has changed.

It appears that everyone in geophysics already knows the truth. It’s only climate “scientists” who think greenhouse gases raise temperature, and without them the surface would be ~-18°C. Nope, without GHGs or even the Sun, it would be at least 0°C.

Geothermal and Solar completely explain the surface temperature and the remaining energy that goes into the atmosphere. No silly greenhouse effect necessary.

This is just a teaser to get people thinking. More to follow. Subscribe and stay tuned.

Love, -Zoe

Average Moon Temperature

The Diviner Lunar Radiometer Experiment onboard the Lunar Reconnaissance Orbiter (LRO) has been acquiring moon data since July 2009. A very detailed paper [Williams 2017] was written, yet nowhere does it answer the simple question: what is the average temperature of the moon?

[Nikolov & Zeller 2014] intelligently guessed that the mean moon temperature is 197.3 °K, based on techniques and data from [Vasavada 2012].

Today I will be using derived diviner data to calculate the average temperature on the moon. My data has two sources: UCLA and WUSTL. The first has hourly data, and the other has 15 minute data (although many fields are missing). The final result of the two should not differ highly.

I will be using a moon flattening parameter of 1/581.9 from [Araki 2009].

Paste the following into a new file called moontemp.sh:

# source moontemp.sh
# Zoe Phin, 2020/02/12

download1() {
    for l in {000..345..15}; do                   
        echo http://luna1.diviner.ucla.edu/~jpierre/diviner/level4_raster_data/diviner_tbol_snapshot_${l}E.xyz        
    done | wget -ci -
}

download2() {
    base="https://pds-geosciences.wustl.edu/lro/lro-l-dlre-4-rdr-v1/lrodlr_1001/data/gcp"
    for l in {0..8}; do let m=l+1; wget -c $base/global_cumul_avg_cyl_${l}0n${m}0n_002.tab; done    
    for l in {9..1}; do let m=l-1; wget -c $base/global_cumul_avg_cyl_${l}0s${m}0s_002.tab; done 
}

avg() { 
    awk '{ f=1/581.9; e=2*f-f^2; r=atan2(0,-1)/180
        T[$1]+=$3; N[$1]+=1; A[$1]+=r/2876.71*(1-e)*cos(r*$1)/(1-e*sin(r*$1)^2)^2
    } END { for (L in T) print L" "T[L]/N[L]" "A[L]}' | sort -n | awk '{
        printf "%6.2f %7.3f %.9f\n", $1, $2, $3; T+=$2*$3
    } END {printf "\nMoonT: %7.3f\n", T}'
}

calc_ucla() {
    awk '{T[$2" "$1]+=$3;N[$2" "$1]+=1} END {for (L in T) print L" "T[L]/N[L]}' *.xyz | avg 
}

calc_wustl() {
    awk -F, '$11>0{T[$2" "$1]+=$11;N[$2" "$1]+=1} END {for (L in T) print L" "T[L]/N[L]}' *.tab | avg          
}

Source the file and download all:

> source moontemp.sh
> download1
> download2

Run UCLA data:

> calc_ucla

-89.75 110.538 0.000019126
-89.25 111.747 0.000057376
-88.75 100.500 0.000095622
-88.25  86.845 0.000133861
-87.75  95.390 0.000172088
-87.25  93.020 0.000210302
-86.75 102.408 0.000248500
-86.25 111.180 0.000286677
-85.75 115.274 0.000324832
-85.25 116.388 0.000362962
-84.75 108.500 0.000401062
-84.25 114.433 0.000439131
-83.75 121.392 0.000477164
-83.25 127.846 0.000515160
-82.75 131.893 0.000553116
-82.25 128.598 0.000591027
-81.75 129.399 0.000628891
-81.25 128.545 0.000666706
-80.75 133.838 0.000704468
-80.25 136.010 0.000742174
-79.75 138.313 0.000779822
-79.25 137.705 0.000817407
-78.75 138.701 0.000854928
-78.25 139.370 0.000892381
-77.75 144.802 0.000929764
-77.25 146.782 0.000967073
-76.75 144.926 0.001004310
-76.25 148.518 0.001041460
-75.75 149.069 0.001078530
-75.25 152.516 0.001115520
-74.75 152.217 0.001152410
-74.25 152.631 0.001189220
-73.75 152.798 0.001225930
-73.25 155.469 0.001262550
-72.75 156.950 0.001299060
-72.25 159.616 0.001335480
-71.75 160.702 0.001371780
-71.25 161.436 0.001407980
-70.75 161.486 0.001444070
-70.25 161.645 0.001480050
-69.75 163.806 0.001515910
-69.25 164.137 0.001551640
-68.75 165.462 0.001587260
-68.25 167.220 0.001622750
-67.75 168.373 0.001658120
-67.25 168.937 0.001693350
-66.75 170.094 0.001728450
-66.25 169.680 0.001763410
-65.75 170.751 0.001798240
-65.25 173.129 0.001832920
-64.75 173.381 0.001867460
-64.25 173.632 0.001901860
-63.75 173.722 0.001936100
-63.25 174.360 0.001970190
-62.75 175.614 0.002004130
-62.25 177.573 0.002037910
-61.75 179.016 0.002071530
-61.25 178.989 0.002104990
-60.75 179.494 0.002138290
-60.25 179.960 0.002171410
-59.75 181.011 0.002204370
-59.25 182.461 0.002237150
-58.75 182.690 0.002269760
-58.25 183.011 0.002302190
-57.75 183.615 0.002334440
-57.25 184.528 0.002366510
-56.75 185.143 0.002398400
-56.25 186.270 0.002430100
-55.75 186.498 0.002461600
-55.25 187.116 0.002492920
-54.75 187.195 0.002524040
-54.25 188.222 0.002554970
-53.75 188.844 0.002585690
-53.25 189.003 0.002616220
-52.75 189.486 0.002646540
-52.25 190.722 0.002676650
-51.75 191.521 0.002706560
-51.25 192.018 0.002736260
-50.75 192.537 0.002765740
-50.25 192.778 0.002795010
-49.75 193.104 0.002824070
-49.25 193.643 0.002852900
-48.75 193.701 0.002881510
-48.25 194.512 0.002909900
-47.75 194.982 0.002938070
-47.25 195.687 0.002966010
-46.75 196.402 0.002993710
-46.25 196.603 0.003021190
-45.75 197.278 0.003048430
-45.25 197.688 0.003075440
-44.75 197.725 0.003102210
-44.25 198.564 0.003128740
-43.75 199.242 0.003155030
-43.25 199.568 0.003181080
-42.75 199.526 0.003206880
-42.25 199.664 0.003232430
-41.75 200.097 0.003257730
-41.25 200.912 0.003282790
-40.75 201.339 0.003307590
-40.25 202.002 0.003332140
-39.75 202.196 0.003356430
-39.25 202.276 0.003380460
-38.75 202.741 0.003404230
-38.25 203.329 0.003427750
-37.75 203.479 0.003451000
-37.25 203.857 0.003473980
-36.75 204.337 0.003496700
-36.25 204.448 0.003519150
-35.75 204.869 0.003541330
-35.25 205.275 0.003563240
-34.75 205.667 0.003584880
-34.25 205.934 0.003606240
-33.75 206.271 0.003627330
-33.25 206.483 0.003648140
-32.75 206.833 0.003668680
-32.25 207.007 0.003688930
-31.75 207.205 0.003708900
-31.25 207.485 0.003728590
-30.75 207.829 0.003747990
-30.25 208.459 0.003767110
-29.75 208.617 0.003785940
-29.25 208.895 0.003804480
-28.75 209.002 0.003822740
-28.25 208.976 0.003840700
-27.75 209.538 0.003858370
-27.25 209.768 0.003875750
-26.75 210.352 0.003892830
-26.25 210.413 0.003909620
-25.75 210.867 0.003926110
-25.25 211.035 0.003942300
-24.75 211.327 0.003958190
-24.25 211.227 0.003973790
-23.75 211.620 0.003989080
-23.25 212.096 0.004004070
-22.75 212.105 0.004018760
-22.25 212.073 0.004033140
-21.75 212.344 0.004047210
-21.25 212.649 0.004060980
-20.75 212.928 0.004074450
-20.25 213.122 0.004087600
-19.75 213.306 0.004100450
-19.25 213.395 0.004112980
-18.75 213.606 0.004125210
-18.25 213.724 0.004137120
-17.75 213.809 0.004148720
-17.25 214.029 0.004160010
-16.75 214.091 0.004170990
-16.25 214.020 0.004181650
-15.75 214.188 0.004191990
-15.25 214.468 0.004202020
-14.75 214.733 0.004211730
-14.25 214.766 0.004221120
-13.75 214.743 0.004230200
-13.25 215.075 0.004238950
-12.75 215.175 0.004247390
-12.25 215.205 0.004255510
-11.75 215.291 0.004263300
-11.25 215.631 0.004270780
-10.75 215.731 0.004277940
-10.25 215.824 0.004284770
 -9.75 215.847 0.004291280
 -9.25 216.019 0.004297470
 -8.75 216.254 0.004303330
 -8.25 216.301 0.004308870
 -7.75 216.361 0.004314090
 -7.25 216.454 0.004318980
 -6.75 216.384 0.004323550
 -6.25 216.570 0.004327790
 -5.75 216.539 0.004331710
 -5.25 216.662 0.004335300
 -4.75 216.713 0.004338570
 -4.25 216.684 0.004341510
 -3.75 216.822 0.004344120
 -3.25 217.028 0.004346410
 -2.75 217.014 0.004348370
 -2.25 217.030 0.004350000
 -1.75 217.149 0.004351310
 -1.25 217.148 0.004352290
 -0.75 217.118 0.004352940
 -0.25 217.131 0.004353270
  0.25 217.131 0.004353270
  0.75 217.240 0.004352940
  1.25 217.215 0.004352290
  1.75 217.240 0.004351310
  2.25 217.256 0.004350000
  2.75 217.107 0.004348370
  3.25 217.113 0.004346410
  3.75 217.040 0.004344120
  4.25 216.983 0.004341510
  4.75 216.931 0.004338570
  5.25 216.871 0.004335300
  5.75 216.831 0.004331710
  6.25 216.701 0.004327790
  6.75 216.656 0.004323550
  7.25 216.717 0.004318980
  7.75 216.789 0.004314090
  8.25 216.628 0.004308870
  8.75 216.441 0.004303330
  9.25 216.380 0.004297470
  9.75 216.352 0.004291280
 10.25 216.287 0.004284770
 10.75 216.194 0.004277940
 11.25 216.113 0.004270780
 11.75 215.904 0.004263300
 12.25 215.766 0.004255510
 12.75 215.754 0.004247390
 13.25 215.668 0.004238950
 13.75 215.504 0.004230200
 14.25 215.449 0.004221120
 14.75 215.361 0.004211730
 15.25 215.048 0.004202020
 15.75 214.742 0.004191990
 16.25 214.674 0.004181650
 16.75 214.590 0.004170990
 17.25 214.502 0.004160010
 17.75 214.531 0.004148720
 18.25 214.349 0.004137120
 18.75 214.273 0.004125210
 19.25 214.167 0.004112980
 19.75 213.801 0.004100450
 20.25 213.556 0.004087600
 20.75 213.123 0.004074450
 21.25 213.120 0.004060980
 21.75 212.942 0.004047210
 22.25 212.636 0.004033140
 22.75 212.513 0.004018760
 23.25 212.112 0.004004070
 23.75 211.977 0.003989080
 24.25 211.909 0.003973790
 24.75 211.629 0.003958190
 25.25 211.476 0.003942300
 25.75 211.027 0.003926110
 26.25 210.862 0.003909620
 26.75 210.510 0.003892830
 27.25 210.405 0.003875750
 27.75 210.150 0.003858370
 28.25 209.810 0.003840700
 28.75 209.589 0.003822740
 29.25 209.128 0.003804480
 29.75 209.121 0.003785940
 30.25 208.887 0.003767110
 30.75 208.520 0.003747990
 31.25 208.118 0.003728590
 31.75 207.895 0.003708900
 32.25 207.487 0.003688930
 32.75 207.224 0.003668680
 33.25 206.852 0.003648140
 33.75 206.578 0.003627330
 34.25 206.238 0.003606240
 34.75 205.897 0.003584880
 35.25 205.553 0.003563240
 35.75 205.236 0.003541330
 36.25 204.862 0.003519150
 36.75 204.382 0.003496700
 37.25 204.062 0.003473980
 37.75 203.723 0.003451000
 38.25 203.273 0.003427750
 38.75 202.940 0.003404230
 39.25 202.578 0.003380460
 39.75 201.890 0.003356430
 40.25 201.613 0.003332140
 40.75 201.259 0.003307590
 41.25 200.688 0.003282790
 41.75 200.437 0.003257730
 42.25 200.291 0.003232430
 42.75 199.786 0.003206880
 43.25 199.203 0.003181080
 43.75 198.752 0.003155030
 44.25 198.529 0.003128740
 44.75 198.064 0.003102210
 45.25 197.678 0.003075440
 45.75 196.640 0.003048430
 46.25 196.054 0.003021190
 46.75 195.885 0.002993710
 47.25 195.866 0.002966010
 47.75 195.388 0.002938070
 48.25 194.087 0.002909900
 48.75 193.621 0.002881510
 49.25 193.414 0.002852900
 49.75 193.144 0.002824070
 50.25 192.485 0.002795010
 50.75 191.851 0.002765740
 51.25 191.477 0.002736260
 51.75 190.991 0.002706560
 52.25 190.311 0.002676650
 52.75 189.843 0.002646540
 53.25 189.517 0.002616220
 53.75 188.474 0.002585690
 54.25 187.944 0.002554970
 54.75 187.390 0.002524040
 55.25 187.308 0.002492920
 55.75 186.351 0.002461600
 56.25 185.324 0.002430100
 56.75 185.153 0.002398400
 57.25 184.717 0.002366510
 57.75 184.195 0.002334440
 58.25 183.457 0.002302190
 58.75 182.550 0.002269760
 59.25 181.897 0.002237150
 59.75 180.882 0.002204370
 60.25 180.425 0.002171410
 60.75 179.733 0.002138290
 61.25 178.569 0.002104990
 61.75 177.431 0.002071530
 62.25 177.406 0.002037910
 62.75 176.133 0.002004130
 63.25 174.992 0.001970190
 63.75 174.263 0.001936100
 64.25 174.045 0.001901860
 64.75 173.420 0.001867460
 65.25 172.958 0.001832920
 65.75 171.647 0.001798240
 66.25 170.659 0.001763410
 66.75 168.890 0.001728450
 67.25 168.258 0.001693350
 67.75 167.299 0.001658120
 68.25 166.353 0.001622750
 68.75 165.771 0.001587260
 69.25 164.839 0.001551640
 69.75 164.604 0.001515910
 70.25 163.729 0.001480050
 70.75 162.392 0.001444070
 71.25 160.312 0.001407980
 71.75 159.079 0.001371780
 72.25 158.767 0.001335480
 72.75 158.000 0.001299060
 73.25 155.641 0.001262550
 73.75 154.728 0.001225930
 74.25 152.357 0.001189220
 74.75 152.286 0.001152410
 75.25 152.446 0.001115520
 75.75 151.423 0.001078530
 76.25 149.418 0.001041460
 76.75 147.758 0.001004310
 77.25 145.345 0.000967073
 77.75 145.334 0.000929764
 78.25 143.694 0.000892381
 78.75 143.395 0.000854928
 79.25 141.426 0.000817407
 79.75 139.245 0.000779822
 80.25 134.396 0.000742174
 80.75 134.638 0.000704468
 81.25 132.923 0.000666706
 81.75 131.281 0.000628891
 82.25 128.608 0.000591027
 82.75 125.593 0.000553116
 83.25 124.031 0.000515160
 83.75 122.858 0.000477164
 84.25 117.375 0.000439131
 84.75 110.464 0.000401062
 85.25 111.891 0.000362962
 85.75 113.233 0.000324832
 86.25 109.398 0.000286677
 86.75 113.166 0.000248500
 87.25 109.039 0.000210302
 87.75  98.730 0.000172088
 88.25  95.876 0.000133861
 88.75  86.159 0.000095622
 89.25  89.165 0.000057376
 89.75 109.777 0.000019126

MoonT: 201.082

First column is latitude, 2nd is average temperature for that latitude +/- 0.5 degrees, and 3rd is the surface area proportion of that latitude +/- 0.5 degrees. 3rd column adds up to 1. MoonT is the area-weighted mean of all latitudes.

Now we do the same for WUSTL data:

> calc_wustl

-89.75 111.192 0.000019126
-89.25 111.660 0.000057376
-88.75 100.290 0.000095622
-88.25  86.871 0.000133861
-87.75  95.084 0.000172088
-87.25  92.831 0.000210302
-86.75 102.601 0.000248500
-86.25 111.243 0.000286677
-85.75 115.981 0.000324832
-85.25 116.198 0.000362962
-84.75 108.497 0.000401062
-84.25 115.692 0.000439131
-83.75 123.413 0.000477164
-83.25 130.003 0.000515160
-82.75 133.344 0.000553116
-82.25 129.484 0.000591027
-81.75 129.702 0.000628891
-81.25 128.091 0.000666706
-80.75 133.846 0.000704468
-80.25 136.168 0.000742174
-79.75 138.256 0.000779822
-79.25 137.502 0.000817407
-78.75 138.429 0.000854928
-78.25 138.730 0.000892381
-77.75 143.939 0.000929764
-77.25 145.831 0.000967073
-76.75 144.331 0.001004310
-76.25 147.966 0.001041460
-75.75 148.465 0.001078530
-75.25 152.140 0.001115520
-74.75 151.776 0.001152410
-74.25 152.297 0.001189220
-73.75 152.585 0.001225930
-73.25 155.127 0.001262550
-72.75 156.952 0.001299060
-72.25 159.367 0.001335480
-71.75 160.486 0.001371780
-71.25 161.450 0.001407980
-70.75 161.246 0.001444070
-70.25 161.774 0.001480050
-69.75 163.612 0.001515910
-69.25 163.996 0.001551640
-68.75 165.422 0.001587260
-68.25 167.346 0.001622750
-67.75 168.544 0.001658120
-67.25 169.355 0.001693350
-66.75 170.667 0.001728450
-66.25 170.258 0.001763410
-65.75 171.491 0.001798240
-65.25 174.150 0.001832920
-64.75 174.220 0.001867460
-64.25 174.762 0.001901860
-63.75 174.905 0.001936100
-63.25 175.696 0.001970190
-62.75 177.189 0.002004130
-62.25 179.499 0.002037910
-61.75 180.929 0.002071530
-61.25 181.092 0.002104990
-60.75 181.633 0.002138290
-60.25 182.008 0.002171410
-59.75 183.258 0.002204370
-59.25 184.545 0.002237150
-58.75 184.681 0.002269760
-58.25 184.960 0.002302190
-57.75 185.818 0.002334440
-57.25 187.257 0.002366510
-56.75 187.572 0.002398400
-56.25 188.767 0.002430100
-55.75 188.732 0.002461600
-55.25 189.269 0.002492920
-54.75 189.528 0.002524040
-54.25 190.825 0.002554970
-53.75 191.269 0.002585690
-53.25 191.363 0.002616220
-52.75 191.864 0.002646540
-52.25 193.107 0.002676650
-51.75 194.078 0.002706560
-51.25 194.501 0.002736260
-50.75 194.990 0.002765740
-50.25 195.240 0.002795010
-49.75 195.366 0.002824070
-49.25 196.196 0.002852900
-48.75 196.037 0.002881510
-48.25 196.876 0.002909900
-47.75 197.586 0.002938070
-47.25 198.416 0.002966010
-46.75 199.182 0.002993710
-46.25 199.469 0.003021190
-45.75 199.996 0.003048430
-45.25 200.541 0.003075440
-44.75 200.536 0.003102210
-44.25 201.071 0.003128740
-43.75 201.588 0.003155030
-43.25 201.680 0.003181080
-42.75 201.665 0.003206880
-42.25 201.937 0.003232430
-41.75 202.546 0.003257730
-41.25 203.719 0.003282790
-40.75 204.205 0.003307590
-40.25 204.736 0.003332140
-39.75 204.970 0.003356430
-39.25 204.972 0.003380460
-38.75 205.850 0.003404230
-38.25 206.663 0.003427750
-37.75 206.584 0.003451000
-37.25 207.040 0.003473980
-36.75 207.439 0.003496700
-36.25 207.656 0.003519150
-35.75 208.246 0.003541330
-35.25 208.680 0.003563240
-34.75 209.273 0.003584880
-34.25 209.473 0.003606240
-33.75 209.612 0.003627330
-33.25 209.509 0.003648140
-32.75 209.973 0.003668680
-32.25 209.766 0.003688930
-31.75 210.415 0.003708900
-31.25 211.005 0.003728590
-30.75 211.611 0.003747990
-30.25 212.332 0.003767110
-29.75 212.587 0.003785940
-29.25 212.645 0.003804480
-28.75 212.918 0.003822740
-28.25 213.020 0.003840700
-27.75 213.443 0.003858370
-27.25 213.599 0.003875750
-26.75 214.268 0.003892830
-26.25 214.016 0.003909620
-25.75 214.252 0.003926110
-25.25 214.595 0.003942300
-24.75 215.184 0.003958190
-24.25 214.881 0.003973790
-23.75 215.254 0.003989080
-23.25 215.482 0.004004070
-22.75 214.994 0.004018760
-22.25 215.303 0.004033140
-21.75 215.699 0.004047210
-21.25 215.885 0.004060980
-20.75 216.148 0.004074450
-20.25 216.335 0.004087600
-19.75 215.992 0.004100450
-19.25 216.290 0.004112980
-18.75 216.212 0.004125210
-18.25 216.517 0.004137120
-17.75 216.406 0.004148720
-17.25 216.614 0.004160010
-16.75 216.567 0.004170990
-16.25 216.449 0.004181650
-15.75 216.859 0.004191990
-15.25 217.096 0.004202020
-14.75 217.008 0.004211730
-14.25 216.947 0.004221120
-13.75 216.897 0.004230200
-13.25 216.589 0.004238950
-12.75 216.806 0.004247390
-12.25 216.571 0.004255510
-11.75 216.447 0.004263300
-11.25 216.478 0.004270780
-10.75 216.249 0.004277940
-10.25 216.115 0.004284770
 -9.75 216.419 0.004291280
 -9.25 216.589 0.004297470
 -8.75 216.901 0.004303330
 -8.25 216.549 0.004308870
 -7.75 216.389 0.004314090
 -7.25 216.261 0.004318980
 -6.75 216.297 0.004323550
 -6.25 216.072 0.004327790
 -5.75 216.128 0.004331710
 -5.25 215.923 0.004335300
 -4.75 215.805 0.004338570
 -4.25 215.933 0.004341510
 -3.75 216.061 0.004344120
 -3.25 216.258 0.004346410
 -2.75 216.291 0.004348370
 -2.25 215.959 0.004350000
 -1.75 215.765 0.004351310
 -1.25 215.792 0.004352290
 -0.75 215.759 0.004352940
 -0.25 215.570 0.004353270
  0.25 215.419 0.004353270
  0.75 215.150 0.004352940
  1.25 215.066 0.004352290
  1.75 214.871 0.004351310
  2.25 214.831 0.004350000
  2.75 214.809 0.004348370
  3.25 214.578 0.004346410
  3.75 214.599 0.004344120
  4.25 214.262 0.004341510
  4.75 213.976 0.004338570
  5.25 213.812 0.004335300
  5.75 213.690 0.004331710
  6.25 213.126 0.004327790
  6.75 212.800 0.004323550
  7.25 212.827 0.004318980
  7.75 212.963 0.004314090
  8.25 212.537 0.004308870
  8.75 212.270 0.004303330
  9.25 211.869 0.004297470
  9.75 211.598 0.004291280
 10.25 211.233 0.004284770
 10.75 211.009 0.004277940
 11.25 210.931 0.004270780
 11.75 210.785 0.004263300
 12.25 210.905 0.004255510
 12.75 210.935 0.004247390
 13.25 210.643 0.004238950
 13.75 210.358 0.004230200
 14.25 210.152 0.004221120
 14.75 209.363 0.004211730
 15.25 208.773 0.004202020
 15.75 208.371 0.004191990
 16.25 208.195 0.004181650
 16.75 208.633 0.004170990
 17.25 208.545 0.004160010
 17.75 208.499 0.004148720
 18.25 208.173 0.004137120
 18.75 208.080 0.004125210
 19.25 207.456 0.004112980
 19.75 207.185 0.004100450
 20.25 206.943 0.004087600
 20.75 206.466 0.004074450
 21.25 206.488 0.004060980
 21.75 206.295 0.004047210
 22.25 205.953 0.004033140
 22.75 205.895 0.004018760
 23.25 205.286 0.004004070
 23.75 205.249 0.003989080
 24.25 204.794 0.003973790
 24.75 204.654 0.003958190
 25.25 204.500 0.003942300
 25.75 203.869 0.003926110
 26.25 203.385 0.003909620
 26.75 203.094 0.003892830
 27.25 203.295 0.003875750
 27.75 203.300 0.003858370
 28.25 203.156 0.003840700
 28.75 202.549 0.003822740
 29.25 202.184 0.003804480
 29.75 201.900 0.003785940
 30.25 201.414 0.003767110
 30.75 201.026 0.003747990
 31.25 200.339 0.003728590
 31.75 200.075 0.003708900
 32.25 199.678 0.003688930
 32.75 199.134 0.003668680
 33.25 199.242 0.003648140
 33.75 198.870 0.003627330
 34.25 198.542 0.003606240
 34.75 197.986 0.003584880
 35.25 197.710 0.003563240
 35.75 197.292 0.003541330
 36.25 196.695 0.003519150
 36.75 196.182 0.003496700
 37.25 195.985 0.003473980
 37.75 195.376 0.003451000
 38.25 195.215 0.003427750
 38.75 194.945 0.003404230
 39.25 194.702 0.003380460
 39.75 194.408 0.003356430
 40.25 194.084 0.003332140
 40.75 193.454 0.003307590
 41.25 192.829 0.003282790
 41.75 192.537 0.003257730
 42.25 192.213 0.003232430
 42.75 191.841 0.003206880
 43.25 191.122 0.003181080
 43.75 190.537 0.003155030
 44.25 190.296 0.003128740
 44.75 190.286 0.003102210
 45.25 189.988 0.003075440
 45.75 189.450 0.003048430
 46.25 188.734 0.003021190
 46.75 188.502 0.002993710
 47.25 188.434 0.002966010
 47.75 187.969 0.002938070
 48.25 186.444 0.002909900
 48.75 186.200 0.002881510
 49.25 186.058 0.002852900
 49.75 185.592 0.002824070
 50.25 185.071 0.002795010
 50.75 184.626 0.002765740
 51.25 184.254 0.002736260
 51.75 184.047 0.002706560
 52.25 183.452 0.002676650
 52.75 182.817 0.002646540
 53.25 182.411 0.002616220
 53.75 181.747 0.002585690
 54.25 181.146 0.002554970
 54.75 180.724 0.002524040
 55.25 180.913 0.002492920
 55.75 180.215 0.002461600
 56.25 179.626 0.002430100
 56.75 179.553 0.002398400
 57.25 178.901 0.002366510
 57.75 178.362 0.002334440
 58.25 177.475 0.002302190
 58.75 176.981 0.002269760
 59.25 176.461 0.002237150
 59.75 176.088 0.002204370
 60.25 175.993 0.002171410
 60.75 175.367 0.002138290
 61.25 174.353 0.002104990
 61.75 173.586 0.002071530
 62.25 173.660 0.002037910
 62.75 172.696 0.002004130
 63.25 171.946 0.001970190
 63.75 171.428 0.001936100
 64.25 171.687 0.001901860
 64.75 171.416 0.001867460
 65.25 171.483 0.001832920
 65.75 170.581 0.001798240
 66.25 169.589 0.001763410
 66.75 168.143 0.001728450
 67.25 167.852 0.001693350
 67.75 167.419 0.001658120
 68.25 166.735 0.001622750
 68.75 166.388 0.001587260
 69.25 165.532 0.001551640
 69.75 165.550 0.001515910
 70.25 164.822 0.001480050
 70.75 163.915 0.001444070
 71.25 162.093 0.001407980
 71.75 161.380 0.001371780
 72.25 161.240 0.001335480
 72.75 160.716 0.001299060
 73.25 158.450 0.001262550
 73.75 157.668 0.001225930
 74.25 155.624 0.001189220
 74.75 155.580 0.001152410
 75.25 156.122 0.001115520
 75.75 155.565 0.001078530
 76.25 154.319 0.001041460
 76.75 153.155 0.001004310
 77.25 150.936 0.000967073
 77.75 151.168 0.000929764
 78.25 149.753 0.000892381
 78.75 148.941 0.000854928
 79.25 146.770 0.000817407
 79.75 143.766 0.000779822
 80.25 138.198 0.000742174
 80.75 137.521 0.000704468
 81.25 134.825 0.000666706
 81.75 132.612 0.000628891
 82.25 129.110 0.000591027
 82.75 124.871 0.000553116
 83.25 122.797 0.000515160
 83.75 121.661 0.000477164
 84.25 116.752 0.000439131
 84.75 110.306 0.000401062
 85.25 111.987 0.000362962
 85.75 113.071 0.000324832
 86.25 109.478 0.000286677
 86.75 113.206 0.000248500
 87.25 108.943 0.000210302
 87.75  98.809 0.000172088
 88.25  96.164 0.000133861
 88.75  86.252 0.000095622
 89.25  89.380 0.000057376
 89.75 110.643 0.000019126

MoonT: 199.386

It’s hard to choose which data is better. The first is complete hourly data, while the latter is 15 minute data but with many missing pieces.

The results are 201.086 °K and 199.386 °K.

The average of the two results is 200.2 °K, and I will leave it at that.

Answer = 200.2 °K

Enjoy 🙂 -Zoe

Update

I was curious about Equations 12 and 13 of [Nikolov & Zeller 2014], so I wrote a little bit more code into moontemp.sh above:

eq12_13() {
    seq 0.05 0.1 89.95 | awk '{ R=atan2(0,-1)/180; L=R*$1
        T=216.313+9.919*L-119.814*L^2+307.116*L^3-466.244*L^4+321.317*L^5-84.973*L^6
        AVG+=T*cos(L)*0.1*R
    } END { printf "MoonT: %7.3f\n", AVG }'
}

I used 216.313 °K as my average equatorial temperature, which I got by averaging UCLA & WUSTL data between -0.25 and 0.25 latitude.

> . moontemp.sh; eq12_13

MoonT: 200.777

The result is only off by half a degree from our answer. This formula is pretty good.

Pressure Change and Real Standard Pressure

The standard mean sea level pressure is defined as 101.325 kPa. This is the standard used in US and International Standard Atmosphere. This value is all over the place. In reality this value was agreed upon by committee and at no time represented the true mean sea level pressure. Most certainly it does not represent the true value today. Today I will try to calculate what the real value should be. I will be using data from NOAA’s ESR Lab.

You will need gnuplot:

sudo apt install gnuplot

pres.sh:

# bash pres.sh
# Zoe Phin, 2020/02/05

wget -qO- 'https://www.esrl.noaa.gov/psd/cgi-bin/data/timeseries/timeseries.pl?ntype=1&var=Pressure&level=2000&lat1=-90&lat2=90&lon1=0&lon2=360&iseas=1&mon1=0&mon2=11&iarea=1&typeout=1&Submit=Create+Timeseries' | awk '$1>1947&&$1<2020{print $1" "$2/10}' | sed 1d > surpres.txt

wget -qO- 'https://www.esrl.noaa.gov/psd/cgi-bin/data/timeseries/timeseries.pl?ntype=1&var=Sea+Level+Pressure&level=2000&lat1=-90&lat2=90&lon1=0&lon2=360&iseas=1&mon1=0&mon2=11&iarea=1&typeout=1&Submit=Create+Timeseries' |  awk '$1>1947&&$1<2020{print $1" "$2/10}' | sed 1d > seapres.txt

echo 'set term png size 740,740; set key below
set title "Pressure (kPa)"; set xrange [1947 to 2020]
set yrange [98.58 to 98.46]; set format y "%5.2f"
set y2range [101.24 to 101.12]; set format y2 "%6.2f"
set grid xtics mxtics ytics y2tics mytics my2tics
set xtics 10; set mxtics 2; set ytics 0.02; set y2tics 0.02; set mytics 2; set my2tics 2
plot "surpres.txt" u 1:2 axes x1y1 t "Surface (Left)" w lines lt 1 lw 2 lc rgb "red",\
     "seapres.txt" u 1:2 axes x1y2 t "Sealevel (Right)" w lines lt 1 lw 2 lc rgb "blue"' | gnuplot > pres.png

Run it:

> bash pres.sh

Result is three files: surpres.txt, seapres.txt, and pres.png

Mean Surface & Sealevel Pressure (kPa)

I have trouble believing global data before the 1979 full global satellite era. In any case we see that both surface and sea-level pressure have been decreasing. This is odd considering that temperatures have been going up, but I will not go into that today.

To figure out the real mean sea-level pressure I will simply average the data between 1979 and 2019 (inclusive):

>  awk '$1>=1979 && $1<=2019 { SUM+=$2; NUM+=1 } END {print SUM/NUM}' seapres.txt

101.159

The mean sea-level pressure in the post-satellite era is: 101.159 kPa and NOT 101.325 kPa.

All those using the committee-established value of 101.325 kPa will not be reflecting reality.

The average surface pressure between 1979 & 2019 is 98.4976 kPA.

Enjoy 🙂 -Zoe

North and South Hemisphere

Today I will analyze some differences between the north and south hemisphere. I’ll be using NCEP‘s Long Term Mean Air Surface Temperature for 1979-2017, and NASA’s ISCCP Project Insolation data from 1983-2009. Sure the years don’t overlap, but we are using long term averages anyway and don’t care about the time trend. First we need one tool:

$ apt get install nco

Create a new file called hemi.sh, with the following:

# source hemi.sh
# Zoe Phin, 2020/01/24

download() {             
    wget -O air.nc -c ftp://ftp.cdc.noaa.gov/Datasets/ncep/air.sfc.day.ltm.nc
    wget -O wtr.nc -c http://research.jisao.washington.edu/data_sets/elevation/fractional_land.1-deg.nc
    wget -O ele.nc -c http://research.jisao.washington.edu/data_sets/elevation/elev.1-deg.nc
    wget -O sup.fl -c https://isccp.giss.nasa.gov/pub/data/FC/FDAVGANN__SWFLSRFDW
    wget -O sdn.fl -c https://isccp.giss.nasa.gov/pub/data/FC/FDAVGANN__SWFLSRFUW
}

water() { # Arg: 1 - Min Latitude, 2 - Max Latitude
    ncks --trd -HC wtr.nc -v data | awk -F[=\ ] -vm=$1 -vM=$2 '   
        $4!=NIL && $4>m && $4 <M {
            a = 6378138; b = 6356753; e = 1-(b/a)^2; r = atan2(0,-1)/180
            A = (a*r)^2*(1-e)*cos(r*$4)/(1-e*sin(r*$4)^2)^2/510072e9
            printf "%6.2f %5.1f %.9f %6.2f\n", $4, $6, A, $8/10000
        }' | awk '
            { A+=$3; L+=$3*$4 } END { printf "Water Fraction: %7.4f\n", 1-L/A }'
}

elev() { # Arg: 1 - Min Latitude, 2 - Max Latitude
    ncks --trd -HC ele.nc -v data | awk -F[=\ ] -vm=$1 -vM=$2 '
        $4!=NIL && $4>m && $4 <M {
            a = 6378138; b = 6356753; e = 1-(b/a)^2; r = atan2(0,-1)/180
            A = (a*r)^2*(1-e)*cos(r*$4)/(1-e*sin(r*$4)^2)^2/510072e9
            if ($8 < 0) $8 = 0
            printf "%6.2f %5.1f %.9f %6.2f\n", $4, $6, A, $8
        }' | awk '
            { A+=$3; E+=$3*$4 } END { printf "Avg Elevation: %7.4f\n", E/A }'
}

solar() { # Arg: 1 - N or S, Empty Arg = All
    od -An -w4 -f --endian=big sup.fl > .sup
    od -An -w4 -f --endian=big sdn.fl > .sdn

    H='1,6596p'; D=3298; 
    [[ -z $1 ]] && D=6596
    [[ $1 = "S" ]] && H='1,3298p'
    [[ $1 = "N" ]] && H='3299,$p'

    paste .sup .sdn | sed -n $H | awk '{
        printf "%7.3f %7.3f %7.3f %7.3f\n", $1, $2, $1-$2, 1-$2/$1
    }' | awk -vD=$D '{UP+=$1;DN+=$2;NT+=$3;AB+=$4} END {
        print "Averages:" 
        printf "%7.3f %7.3f %7.3f %7.3f\n", UP/D, DN/D, NT/D, AB/D
    }'
}

temp() {    # Arg: 1 - Min Latitude, 2 - Max Latitude
    for d in `seq 0 364`; do
        ncks --trd -HC air.nc -v air -d time,$d |\
        awk -F[=\ ] -vm=$1 -vM=$2 '$4!=NIL && $4>=m && $4<=M {
            if ($4 < 0) { $4 += 1.25 } else { $4 -= 1.25 }
            a = 6378138; b = 6356753; e = 1-(b/a)^2; r = atan2(0,-1)/180
            A = (a*2.5*r)^2*(1-e)*cos(r*$4)/(1-e*sin(r*$4)^2)^2/510072e9

            printf "%6.2f %5.1f %.9f %6.2f\n", $4, $6, A, $8/100+477.65-273.16
        }' | awk -vd=$d '
            { A+=$3; T+=$3*$4 } END { printf "%03d %7.4f\n", d+1, T/A }'
    done
}       

tempsavg() {    # Not generic
    for f in ans nor sou; do
        cat $f.csv | awk '{S+=$2}END{print S/NR}'
    done
}

tempsplot() {   # Not generic
    echo "set term png size 740,370;set grid;set key below;set xrange [0:365]
    set title 'Long Term Day of the Year Mean (°C)'; set xtics 30
    plot 'ans.csv' u 1:2 t 'Whole' w lines lw 2 lc rgb 'black',\
         'nor.csv' u 1:2 t 'North' w lines lw 2 lc rgb 'orange',\
         'sou.csv' u 1:2 t 'South' w lines lw 2 lc rgb 'blue'" | gnuplot > allhemi.png
}

We will source the code to have its functions run as separate command-line commands:

$ source hemi.sh

First we download the necessary data:

$ download

We extract the necessary data:

$ temp -90 90 > ans.csv  # Whole Earth
$ temp 0 90 > nor.csv    # North hemisphere
$ temp -90 0 > sou.csv   # South hemisphere

We plot the data:

$ tempsplot

A file called allhemi.png will be generated:

Day of the Year Mean (1979-2017), 0 = Jan 1st

We can see that there’s a lot more fluctuation in the north than south hemisphere. This is most likely due to more ocean in the south having a moderating influence. Let’s see what the actual averages are:

$ tempsavg

# Result:
# 14.9809 - Whole
# 15.6322 - North
# 14.3295 - South

The north is actually over a degree warmer than the south. I did not expect that. I would’ve thought that more ocean would have made it warmer. Let’s move on to elevation analysis.

$ elev -90 90    # Whole Earth

# Avg Elevation: 232.8598 (meters)

$ elev 0 90      # North Hemisphere

# Avg Elevation: 273.7237 (meters)

$ elev -90 0     # South hemisphere

# Avg Elevation: 191.9959 (meters)

The nothern hemisphere is on average 81.7 meters higher. From my previous article Air Temperatures and Average Lapse Rate, we learned that the average lapse rate is ~0.0056 °C/m. 81.7 * 0.0056 = 0.458 °C advantage for the south.

Now let’s take a look at the water fraction:

$ water -90 90   # Whole Earth

Water Fraction:  0.7110

$ water 0 90     # North Hemisphere

Water Fraction:  0.6092

$ water -90 0    # South Hemisphere

Water Fraction:  0.8127

The southern hemisphere has 0.8127/0.6092 = 33 % MORE water than the northern hemisphere.

Now we do insolation analysis. I expect that the south will receive more insolation given that perihelion occurs while the sun is in the south, and aphelion occurs while the sun is in the north.

$ solar       # Whole Earth
Averages:
189.141  23.309 165.832   0.854

$ solar N     # North hemisphere
Averages:
187.909  24.750 163.159   0.847

$ solar S     # South hemisphere
Averages:
190.373  21.868 168.504   0.861

The results are best explained in a table:

Downwelling Surface AlbedoNet SolarAbsorption
Whole189.1 W/m²23.3 W/m²165.8 W/m²85.4 %
North187.9 W/m²24.8 W/m²163.2 W/m²84.7 %
South190.4 W/m²21.9 W/m²168.5 W/m²86.1 %
Insolation

The southern hemisphere has a higher absorption fraction, higher net insolation, more water and lower elevation. It has every advantage to be hotter than the northern hemisphere and yet it is not, it is 15.6322 °C (North) – 14.3295 °C (South) = 1.3 °C cooler. How come?

Who can solve this mystery?

Enjoy 🙂 -Zoe

Update 2020/01/31

A 110 views and 2 dozen comments later nobody has solved the mystery. The best answer was the heat capacity difference of land and water, but as pointed out, heat capacity controls both the heating and cooling rate.

Astute readers of this blog may have guessed where I was going: geothermal. Indeed, I do think it is geothermal, and I have thought this for about half a year now.

I have a simple formula for guessing the radiative component of geothermal. It is:

RadGeo = Longwave Upwelling IR - (Shortwave Downwelling - Shortwave Upwelling)

RadGeo = Longwave Upwelling IR - Net Solar

msolver.sh:

# source msolver.sh
# Zoe Phin, 2020/01/31

download() {
    wget -O ldn.fl -c https://isccp.giss.nasa.gov/pub/data/FC/FDAVGANN__LWFLSRFUW
    wget -O sup.fl -c https://isccp.giss.nasa.gov/pub/data/FC/FDAVGANN__SWFLSRFDW
    wget -O sdn.fl -c https://isccp.giss.nasa.gov/pub/data/FC/FDAVGANN__SWFLSRFUW
}

msolver() { # Arg: 1 - N or S, Empty Arg = All
    od -An -w4 -f --endian=big ldn.fl > .ldn
    od -An -w4 -f --endian=big sup.fl > .sup
    od -An -w4 -f --endian=big sdn.fl > .sdn

    H='1,6596p'; D=3298;
    [[ -z $1 ]] && D=6596
    [[ $1 = "S" ]] && H='1,3298p'
    [[ $1 = "N" ]] && H='3299,$p'

    paste .ldn .sup .sdn | sed -n $H | awk '{
        printf "%7.3f %7.3f %7.3f %7.3f %7.3f\n", $1, $2, $3, $2-$3, $1-$2+$3
    }' | awk -vD=$D '{UP+=$1;NT+=$4;GE+=$5} END { 
        printf "%7.3f %7.3f %7.3f\n", GE/D, NT/D, UP/D            
    }'
}

Run it:

$ source msolver.sh
$ download
$ msolver             # Whole Earth - 227.632 165.832 393.463
$ msolver N           # North Hemi. - 236.605 163.159 399.764
$ msolver S           # South Hemi. - 218.659 168.504 387.163

Summary Table

Rad. GeothermalNet SolarUpwelling Result
Whole227.6 W/m²165.8 W/m²393.5 W/m²
North236.6 W/m²163.2 W/m²399.8 W/m²
South218.7 W/m²168.5 W/m²387.2 W/m²

Summary: The North has a geothermal advantage that outweighs all of the South’s non-geothermal advantages.

For those that still believe geothermal is tiny and negligible, please read my other articles to get informed:

https://phzoe.wordpress.com/2019/12/04/the-case-of-two-different-fluxes/

https://phzoe.wordpress.com/2019/12/06/measuring-geothermal-1/

Enjoy 🙂 -Zoe

Precipitable Water as Temperature Proxy

Precipitable water is a measure of how high water would stack up if all the water vapor in the atmosphere would rain down, right now! It typically ranges between 22.4 and 24.2 millimeters. All the water vapor raining down would add up to about 0.9 inches.

Now a little bit of logic: the amount of water vapor in the atmosphere depends on how hot the oceans/lakes/rivers and whatever water is on/in the ground is. The hotter, the more evaporation. Simple. Therefore precipitable water should be a good proxy for surface water temperature. Let’s see what the history of precipitable water looks like. For that we go to NOAA’s ESRL.

We fill out the form, like this:

And this is what we get:

Precipitable Water Column Height, in millimeters

One would think that with constant warming, we should see the precipitable water always going up. But we don’t see that. We clearly see a CYCLE here, an invisible letter U or V. In fact, it reminds me of something we discovered here:

Global Averge Temperature Anomaly after Latitude Drift Adjustment

Let’s combine the two, while shifting temperatures forward 7 years:

Latitude Drift Adjusted Berkeley Temperature vs. Precipitable Water

Now that makes sense. You know what doesn’t make sense? The “consensus” temperature data. Here it is:

Berkeley Global Summary Temperature vs. Precipitable Water

It is clear that Berkeley (and other similar outfits) do not perform proper latitude drift adjustment and so their result does not match what we should expect to happen to precipitable water level.

What we have here is a great confirmation that mainstream climate science has gone off the rails.

Enjoy 🙂 -Zoe

Air Temperatures and Average Lapse Rate

Today we will examine 40 years (1979-2018) of air temperature data and derive the average lapse rate. First we need some tools:

$ sudo apt install nco gmt

We will be using NCEP Reanalysis 2 data. Grab it:

$ wget -c -O air.nc ftp://ftp.cdc.noaa.gov/Datasets/ncep.reanalysis2.derived/pressure/air.mon.mean.nc

Create a new file air.sh with:

#!/usr/bin/bash
# Zoe Phin, 2019/12/17

P=(1000 925 850 700 600 500 400 300 250 200 150 100 70 50 30 20 10) # Size: 17 

aircsv() {
    for t in `seq 0 479`; do
        for p in `seq 0 16`; do
            for l in `seq 0 72 | sed s/36//`; do
                ncks -v air -d time,$t,$t -d lat,$l,$l -d level,$p,$p air.nc |\
                sed -n "/air =/,/^$/p" | egrep -o '[-0-9].*[0-9]' | tr -s ', ' '\n' | awk -v l=$l '
                    function rad(x) { return x*atan2(0,-1)/180 } {
                    lat = l * 2.5 - 90; lon = n * 2.5; n += 1
                    if (lat < 0) { lat += 1.25 } else { lat -= 1.25 }
                    a = 6378137.678; b = 6356752.964; E = 1-b^2/a^2; r = rad(lat)
                    A = (a*rad(2.5))^2*(1-E)*cos(r)/(1-E*sin(r)^2)^2/510065728777854
                    printf "%5.2f %5.1f %6.2f %12.10f\n", lat, lon, $1/100+465.15, A}'
            done | awk -v T=$t -v P=${P[p]} '
                {S+=$3*$4} END {printf "%3d %4d %6.2f\n", T, P, S}'
        done
    done
}

avgair() {
    for p in ${P[*]}; do
        awk -v P=$p '$2==P{S+=$3;N+=1} END {printf "%8.1f %6.2f\n",P*100,S/N}' air.old
    done
}

plotavgair() {
    avgair > avgair.csv
    echo 'set term png size 740,740; unset key; 
    set mxtics 2; set mytics 2; set ytics 10000
    set grid mytics ytics xtics
    set title "Temperature (K) vs. Pressure (Pa)"
    set yrange [101325 to 0]
    plot "avgair.csv" u 2:1 w linespoints ps 1 pt 3 lw 3 lc rgb "red"' | gnuplot
}

slopes() {
    for p in ${P[*]}; do 
        printf "%4d: " $p; sed 's/\... / /' .p$p.dat |\
            awk '{T[$1]+=$2}END{for (i in T) printf "%s %6.2f\n",i,T[i]/12}' |\
            gmt gmtregress -Fp -o5 | awk '{printf "%9.6f\n", $1}'
    done
}

plotair() {
    for p in ${P[*]}; do 
        awk -v P=$p '$2==P{printf "%7.2f %6.2f\n", $1/12+1979+1/24, $3}' air.old > .p$p.dat
    done
    (echo 'set term png size 740,1000; set key below; 
    set mxtics 5; set mytics 5; set grid mytics ytics xtics
    set title "Temperature (K) at Pressure (hPa)"
    set xrange [1978 to 2020]; set yrange [300 to 200]; plot \';
    for p in ${P[*]}; do 
        echo "'.p$p.dat' u 1:2 t '$p' w points,\\"
    done ) | sed '$s/..$//' | gnuplot
}

lapse(){
    avgair > avgair.csv
    I=(`head -1 avgair.csv`)

    awk -v Ps=${I[0]} -v Ts=${I[1]} 'BEGIN{
    #   g  = 9.7977074331       # Based on EGM2008
        g  = 9.7977115          # Account for using Atmosphereless GM constant
        g  = g - 0.16           # Adjust g to middle of the troposphere
        R  = 8.31446261815324   # Gas Constant
        M  = 0.0289644          # from US Standard Atmosphere
    } 
    $1 >= 10000 && $1 < 100000 {
        P = $1; T = $2
        L = (g*M/R)*log(T/Ts)/log(P/Ps)
        printf "%s %10.6f\n", $1, L
    }' avgair.csv |\
        awk '{S+=$2; print} END {printf "\nAVG = %12.10f\n", S/NR}'
}

We source the code, to allow its functions to act like command-line commands we can run in parts.

$ source air.sh

The first thing we must do is generate the data for all the other commands:

$ aircsv > air.csv

This will take several hours to run on an average laptop. Afterwards we are free to run various things quickly. When complete, let’s plot the air data:

$ plotair > p.png

What’s the trend for each pressure?

$ slopes

1000:  0.019277
 925:  0.017171
 850:  0.017911
 700:  0.021696
 600:  0.015600
 500:  0.018723
 400:  0.017133
 300:  0.013247
 250:  0.006388
 200: -0.005289
 150: -0.022488
 100: -0.054646
  70: -0.051159
  50: -0.043313
  30: -0.047701
  20: -0.055906
  10: -0.110508

The above is the trend in °K/year. You’ll notice that the lower atmosphere is getting hotter while the upper atmosphere is getting colder.

This is a signature of reduced insolation with a greater reduction of cloud cover. In simple terms: there is less sun power but even less clouds, allowing MORE of that sun to get through.

This is NOT a signature of greenhouse gas forcing, as the literature has the magical pivot point at either the beginning of the tropopause (P~100 hPa) or in the middle of the troposphere (P~500 hPa) or where T~242°K (P~410 hPa), and certainly not at P~225 hPa as we see here.

What’s the average for the entire 40 years for each pressure? (Now in Pascals)

$ avgair

100000.0 288.28
 92500.0 284.13
 85000.0 280.74
 70000.0 272.96
 60000.0 266.39
 50000.0 257.76
 40000.0 247.02
 30000.0 233.47
 25000.0 226.07
 20000.0 219.35
 15000.0 212.70
 10000.0 206.58
  7000.0 207.84
  5000.0 211.68
  3000.0 217.00
  2000.0 221.34
  1000.0 229.13

What does that look like?

$ plotavgair > a.png

The troposphere is wherever pressure exceeds 10000 pascals. This may not be the exact figure, but our resolution doesn’t allow any better.

Now I want to know the tropospheric lapse rate.

$ lapse

92500.0   0.006245
85000.0   0.005475
70000.0   0.005140
60000.0   0.005190
50000.0   0.005420
40000.0   0.005660
30000.0   0.005881
25000.0   0.005887
20000.0   0.005700
15000.0   0.005381
10000.0   0.004859

AVG = 0.0055307273

Don’t let the precision of the average fool you, but the 99% confident answer is between 0.0055 and 0.0057 °C/meter. This is an average for a mixed wet/dry troposphere, i.e the actual troposphere. It is what is actually observed with the average water vapor level being what it actually is. All those using 0.0065 °C/m as used in the US/International Standard Atmosphere will not be reflecting reality (only an ideal dry atmosphere model), and should abandon doing so.

Enjoy 🙂 -Zoe

Earth Average Surface Gravity

Happy new year, everybody 🙂

It would be interesting to know the average surface gravity of Earth. I looked over at Wikipedia: Standard Gravity and found:

The standard acceleration due to gravity (or standard acceleration of free fall), sometimes abbreviated as standard gravity, usually denoted by ɡ0 or ɡn, is the nominal gravitational acceleration of an object in a vacuum near the surface of the Earth. It is defined by standard as 9.80665 m/s2

If we look at US Standard Atmosphere, we find the same thing. So what’s the problem?

Both sources tell us:

The value of ɡ0 defined above is a nominal midrange value on Earth, originally based on the acceleration of a body in free fall at sea level at a geodetic latitude of 45°.

Nominal midrange? What is that? That’s not an average for the whole Earth. We will have to figure it out by other means.

A National Geospatial Intelligence Agency document tells us how to do it. Appendix B gives us all the math we need. We will however use the latest values for a and b derived from here. Create a new file called efacts.sh with:

#!/usr/bin/bash
# Zoe Phin 2019/12/15

echo '  function __(s, p, n) { printf "%-3s\t%25.*f\n", s, p, n } 
BEGIN { π = atan2(0,-1)

        # Given

    GM = 3.9860046055e14                    # Earth Mass * G
    a  = 6378137.678                        # Semi-major axis
    b  = 6356752.964                        # Semi-minor axis
    ω  = 7.292115e-5                        # Angular Velocity
    G  = 6.67428e-11                        # Gravity "Constant"
    Mₐ = 5.148e18                           # Mass of the Atmosphere    

        # Derived

    Mₑ  = GM / G                            # Mass of the Earth (with Atmosphere)
    Mₒ  = Mₑ − Mₐ                           # Mass of the Earth (w/o Atmosphere)
    GMₒ = G × Mₒ                            # Atmosphere-less Constant

    F  = (a − b) / b                        # Flattening Factor
    f  = 1 / F                              # Inverse Flattening
    e  = √(1 − b²/a²)                       # 1st Eccentricity
    E  = √(a²/b² − 1)                       # 2nd Eccentricity

    Rₚ = a²/b                               # Polar Radius of Curvature
    R₁ = a × (1 − F/3)                      # Mean Radius of the Three Semi-Axes
    R₂ = Rₚ × (1 − (⅔)E² +                 \# Radius of a Sphere of Equal Area 
        (26/45)E⁴ −                         \
        (100/189)E⁶ +                        \
        (7034/14175)E⁸ −                      \
        (220652/467775)E¹⁰ )

    R₃ = ³√(a² × b)                         # Radius of a Sphere of Equal Volume

    t  = tan⁻¹(E)
    q  = ½ × ( (t + 3×t/E²) − 3/E )
    Q  = 3 × ( (1 + 1/E²) × (1 − t/E) )-1

    __( "GM" , 00 , GM )
    GM  = GMₒ               # Warning ! Switching to Atmosphere-less Constant

    m  = (ω² × a ² × b) / GM                # Normal Gravity Formula Constant
    J₂ = (e²/3) × (1−(2×m×E)/(15×q))        # Dynamical  Form  Factor
    U₀ = t*GM/(a×e) + ⅓×ω²×a²               # Normal Gravity Potential
    Gₑ = GM/(a×b) × (1 − m − (m×E×Q)/(6×q)) # Normal Gravity at the Equator
    Gₚ = GM/a² × (1 + m × (E×Q)/(3×q))      # Normal Gravity at the Poles
    k  = (b × Gₚ)/(a × Gₑ) − 1

    Gₘ = Gₑ × (1 + (⅙)e² + (⅓)k +          \# Mean Value of Normal Gravity
        (59/360)e⁴ + (5/18)ke² +            \
        (2371/15120)e⁶ + (259/1080)ke⁴ +     \
        (270229/1814400)e⁸ + (9623/45360)ke⁶) \

    __( "a"  , 03 , a  )
    __( "b"  , 03 , b  )
    __( "ω"  , 11 , ω  )
    __( "G"  , 16 , G  )
    __( "Mₑ" , 00 , Mₑ )
    __( "Mₐ" , 00 , Mₐ )
    __( "Mₒ" , 00 , Mₒ )
    __( "GMₒ", 03 , GMₒ)
    __( "F"  , 16 , F  )
    __( "f"  , 09 , f  )
    __( "e"  , 15 , e  )
    __( "E"  , 15 , E  )
    __( "Rₚ" , 04 , Rₚ )
    __( "R₁" , 04 , R₁ )
    __( "R₂" , 04 , R₂ )
    __( "R₃" , 04 , R₃ )
    __( "q"  , 12 , q  )
    __( "Q"  , 12 , Q  )
    __( "m"  , 14 , m  )
    __( "J₂" , 15 , J₂ )
    __( "U₀" , 04 , U₀ )
    __( "Gₑ" , 10 , Gₑ )
    __( "Gₚ" , 10 , Gₚ )
    __( "k"  , 15 , k  )
    __( "Gₘ" , 10 , Gₘ )
}'| sed 's/#.*//' | sed '/__/s/,/,\\\n/' | sed -r '
        /__/! { y,πωₚₑₐₒₘ₀₁₂₃₄×−,pWpeaom01234*-,;
        s,³√(.*),(\1)^(1/3),g; s,tan⁻¹\(E\),atan2(E\,1),g;
        s,½,1/2,g; s,⅓,1/3,g; s,⅙,1/6,g; s,⅔,2/3,g; s,²,^2,g; 
        s,⁴,^4,g;  s,⁶,^6,g;  s,⁸,^8,g; s,¹⁰,^10,g; s,√,sqrt,g;
        s,\)ke,\)*k*e,g; s,\)([Eke]),\)*\1,g }' | awk -f -

The program is written in unicode to make reading it and following Appendix B much easier. Sorry if your browser doesn’t render the code properly. I just noticed it doesn’t on my smartphone.

Make this file executable and run it:

> chmod +x efacts.sh
> ./efacts.sh

GM 	          398600460550000
a  	              6378137.678
b  	              6356752.964
ω 	            0.00007292115
G  	       0.0000000000667428
Mₑ	5972186671071637111046144
Mₐ	      5148000000000000000
Mₒ	5972181523071637240414208
GMₒ	      398600116958065.625
F  	       0.0033640939204509
f  	            297.256861326
e  	        0.081819240444396
E  	        0.082094488053751
Rₚ	             6399594.3322
R₁	             6370985.4599
R₂	             6371007.8495
R₃	             6371001.4586
q  	           0.000073346392
Q  	           0.002688044572
m  	         0.00344979040432
J₂	        0.001082631230267
U₀	            62636794.1768
Gₑ	             9.7803152684
Gₚ	             9.8321748731
k  	        0.001931854280022
Gₘ	             9.7976331557

Gₘ (mean normal gravity) is the value we’re looking for, and it’s 9.7976331557.

Now if only the actual earth was a model, then we’d already be done. We want the most accurate answer though, and so we need measured data. We will use the EGM2008 standard, as it’s the most popular. We’ll be using this great resource to seek our answer. But first we’ll need to generate a table of latitudes and longitudes:

> for x in `seq -89.5 89.5`; do for y in `seq -179.5 179.5`; do echo $x $y; done; done > latlon.csv

We will upload this file to get the results. Now go there and fill out the form exactly as shown here (note Gm is our atmosphere-less value GMₒ, not GM)

This will take a while …

But Zoe, Why are we interested in Normal Gravity and not Gravity? Because we’re interested in the acceleration towards the surface and not the center of the earth.

To find the average for the whole Earth we will have to go through each latitude,longitude pair and find out their surface area using the formula from here:

dA = a2 cos[ø (1-e2)] dø dl / (1-e2 sin2ø)2

This will generate an error of ~0.00001281 when we add up all the pairs, but that’s alright because we’ll just divide by a surface area 1.00001281 times as large.

Click on “Download results” when the site is finished, and save to EGM2008.csv in the same folder as the following code.

egm.sh:

#!/usr/bin/bash
# Zoe Phin 2019/12/17

sed 1,32d EGM2008.csv | awk '
    function r(x) { return x*atan2(0,-1)/180 } {
    e = 0.081819240444396; printf "%.12f %.12f\n", $5/1e5, \
        (6378137.678*r(1))^2*(1-e^2)*cos(r($3))/(1-e^2*sin(r($3))^2)^2
}' | awk '
    { S += $1*$2; } END { printf "%.10f\n", S/510072261022076.375 }'

Run it

> bash egm.sh

9.7977074331

The best estimate for Earth’s average surface gravity using the most popular reference model is: 9.7977074331

Note how little difference there is between this number and the previous mathematically derived value; It’s only 0.0000742774.

No one should use the “Standard Gravity” value of 9.80655 if they are interested in the whole earth. Such use will lead to a geometric error of ~0.0009025 and an arithmetic error of ~0.0088426.

Now these errors might be small, but why not make them smaller? Use my number. Thank you.

Enjoy 🙂 -Zoe