Friday, December 29, 2017

Upgrading Moyhu infrastructure

I have spent part of the holidays tinkering with Moyhu's infrastructure. I keep copies of all posts and pages offline, partly for backup, and partly so I can search them and also make universal changes. This was of great value when Blogger required use of https a couple of years ago.

I was trying to revive the graphics gallery page, which never really recovered from that change, since it used copies of posts, which also need fixing. But I got side-tracked into upgrading the interactive topic index. I don't think readers use it much, but I do. Google provides a search for the blog, but it returns a display of complete posts, so needs precise search terms. The interactive search just returns a list of linked titles, so you get a wider sweep (maybe too wide).

The new index looks like this (non-functional image):

I had clicked on the Marcott button, and the list of links (with dates) appears below. The topics have been extended, and groups in to color-coded types. The types are listed on the left. I have extended the topics considerably. They mostly work by a keyword search, so you get some false positives. I added some at the end (housekeeping, debunkings) which don't have natural keywords, and were manually identified. And I have separated out the three series of monthly postings that I do (NCEP/NCAR, TempLS and GISS). It makes them easier to find, but because I exclude he keyword search for them, it reduces the false positives.

The new arrangement should be much easier to update regularly.

I have also added a blog glossary. We're used to tossing around terms like CRUTEM, but not everyone is, so I have given a basic description (with links). I have added it to the bottom page , now called "More pages, and blog glossary". The more pages part is just a few lines of links at the top, and then comes the glossary. I'm sure it will need extending - suggestions welcome.

That was my New Year's resolution for 2017 :)

Saturday, December 23, 2017

Merry Christmas to all

Christmas starts early this year at Moyhu, so I'll take this opportunity to wish readers a Merry Christmas and a Happy New Year. Hopefully bushfire-free. In the spirit of recent examinations of past wildfires (Eli has more), I'll tell the story behind the picture above. The newspaper version is here.

In 2003 and 2006/7, alpine and upland Victoria were swept by long running and very damaging bushfires. The area concerned was rugged terrain and sparsely inhabited. Much was not so far below the snowline, so the trees there were not very tall, and the fuel somewhat less than for our wilder lowland fires. They were in summer, but not exceptionally hot weather, and of course cooler there. Consequently they burnt relatively slowly, with a fair chance of defending critical areas. Some were fought with great energy and danger to crews; this could not be expended everywhere, so they burnt for weeks and did much damage to mountain forests that take a long time to regrow.

In December, 2006, our most popular ski resort, Mt Buller, was surrounded by fires, again burning over long periods. Although as said the conditions did not make for extreme wildfire, any eucalypt fire is dangerous when it runs up a hill slope. The many buildings of Mt Buller sit near the peak at about 1500 m altitude, and there is a single winding road out, which became impassable on 22nd December. So the fire crews who had assembled were on their own. Fortunately, the resort had a large water storage used for snow-making. But there was a long perimeter to defend.

By the 23rd, flames were at that perimeter. I was at Buller the following winter, and saw that it had come right up to a northern edge road, with major buildings just on the other side. And it was pretty close on all sides. Fortunately, some rain came that evening, but still, there were more flareups on Christmas Eve.

At last, later on the Eve, more serious rain came with another change in the weather, and somewhat amazingly for our summer solstice, it turned to snow. That indeed marked the end of the danger to the mountaintop. In the morning, when they awoke to a very welcome white Christmas, this photo was taken.

Again, may your Christmas be as merry. With special hopes for those in the region of the Thomas fire.

Wednesday, December 20, 2017

On Climate sensitivity and nonsense claims about an "IPCC model"

I have been arguing recently in threads where people insist that there is an "IPCC model" that says that the change in temperature is linearly related to change in forcing, on a short term basis. They are of course mangling the definition of equilibrium sensitivity, which defines the parameter ECS as the ratio of the equilibrium change in temperature to a sustained (step-function) rise in forcing. So in this post I would like to explain some of the interesting mathematics involved in ECS, and why you can't just apply its value to relate just any forcing change to any temperature change. And why extra notions like Transient Climate Sensitivity are needed to express century scale changes.

The threads in question are at WUWT. One is actually a series by a Dr Antero Ollila, latest here, "On the ‘IPCC climate model’". The other is by Willis Eschenbach "Delta T and Delta F". Willis has for years been promoting mangled versions of the climate sensitivity definition to claim that climate scientists assume that ∆T = λ∆F on a short term basis, giving no citation. I frequently challenge him to actually quote what they say, but no luck. However, someone there did have better success, and that made it clear that he is misusing the notion of equilibrium sensitivity. He quoted the AR5

"“The assumed relation between a sustained RF and the equilibrium global mean surface temperature response (∆T) is ∆T = λRF where λ is the climate sensitivity parameter.”"

Words matter. It says "sustained RF" and equilibrium T. You can't use it to relate any old RF and T. A clear refutation of this misuse is the use also of transient sensitivity (TCS). This typically is defined as the temperature change after CO₂ increased by 1% per year, compounding over 70 years, by which time it has doubled. CS is normally expressed relative to CO₂ doubling, but it is linked to forcing in W/m² by
∆F = 5.35* ∆log([CO2])
which implies ∆F = 3.7 W/m² for CO₂ doubling. Both ECS and TCS express the same change in forcing. But one is an initial change sustained until equilibrium is reached; the other is temperature after that 70-year ramp. And they are quite different numbers; ECS is usually about twice TCS. So there can't be a simple rule that says that ∆T = λ∆F for any timing.

A much better paradigm is that ∆T is a linear function of the full history of forcing F. This would be expressed as a (convolution) integral

∆T(t)=∫w(t-τ)*F(τ) dτ, where the integral is from initial time to t.

The weight function w is unknown, but tapers to zero as time goes on. I've dropped the ∆ on F, now regarding F as a cumulative change from the initial value, but a similar integral with increments could be used (related by integrating by parts).

This is actually the general linear relation constrained by causality. w is called the impulse response function (IRF). It's the evolution (usually decay) that you expect of temperature following a heat impulse (F dt), in the absence of any other changes. That pulse F*dt at time τ would then have decayed by a factor w(t-τ) by time t, and by linear superposition, the effect of all the pulses of heat that would approximate the continuous F over the period adds to the stated integral.

I gave at WUWT the example of heating a swimming pool. Suppose it sits in a uniform environment, and has been heated at a uniform burn rate, and settles to a stable temperature. Then you increase the heating rate, and maintain it there. The response of the pool might be expected to be something like:

I'm actually using an exponential decay, which means the difference between current and eventual temperature decays exponentially. That is equivalent to the IRF being an exponential decay, and the curve has it convolved with a step function. The result, after a long time, is just the integral of w. This might be called the zeroth order moment. It is what I have marked in blue and called the ECS value. The linearity assumed is that this value varies linearly with the forcing jump. It doesn't mean that T is proportional to F. How could it be, if  F is held constant and T is still warming?

So let's look at that ECS convolution integral graphically:

Red is the forcing, blue the IRF, purple the overlap, which is what is integrated (IOW, all of it).

But suppose we are just interested in shorter periods. We could use a different forcing history, which would give a number relevant to the shorter term part of w. I'll use the linear ramp of TCS, this time just over the range 4-5:

I could have omitted the 0-4 section, since there is zero integrand there. However, I wanted to make a point. The integral now is weighted to the near end of the IRF. Since the IRF conventionally has value 1 at zero, it could be represented over the range of the ramp by a linear function, and the resulting integral would give the slope. That is why I identified TCS with the slope at zero of the response curve. But it isn't quite, because w isn't quite linear.

So this shows up a limitation of TCS. It doesn't tell about the part of w beyond its range. That's fine if we are applying it to a forcing known to be zero before the ramp commences. But usually that isn't true. We could extend the range of the TCS (if T data is available) but then it's utility of giving the derivative w'(0) wuld lessen. That means that it wouldn't be as applicable to ranges of other lengths.

Because of the general noise, both of observation and GCM computation, this method of getting aspects of the IRF w by trial forcings is really the only one available. It gives numbers of some utility, and is good for comparing GCMs or other diagnostics. And in the initial plot I tried to show that if you have the final value of the evolution and the initial slope, you have a fair handle on the whole story. That corresponds to knowing an ECS and a short term TCS.

But it isn't a "model" of T versus forcing. That model is the IRF convolution. The sensitivity definitions are just extracting different numbers that may help.

Burning history - fiery furphies.

This post is about some exaggerated accounts that circulate about past forest fires. The exaggeration had been part of a normal human tendency - no-one cares very much whether accounts of events that caused suffering inthe past may be inflated, and so the more dramatic stories win out. But then maybe it does begin to matter.

I have two topics - the history of wildfire in the US, and a particular fire in Victoria in 1851. When people start to wonder about whether fires are getting worse in the US, as they seem to be, then a graph is trotted out to show how much worse things were in the 1930's. And if there is a bad fire in Australia, the 1851 fire is said to be so much worse. This is all to head off any suggestion that AGW might be a contributor.

I'll start with the US story. The graph that appears is one like this:

This appeared in a post by Larry Kummer a few days ago. He gave some supporting information, which has helped me to write this post. I had seen the plot before, and found it incredible. The peak levels of annual burning, around 1931, are over 50 million acres, or 200,000 sq km. That is about the area of Nebraska, or 2.5% of the area of ConUS. Each year. It seems to be 8% of the total forest area of ConUS. I'm referring to ConUS because it was established that these very large figures for the 1930's did not include Alaska or Hawaii. It seemed to me that any kind of wildfires that burnt an area comparable to Nebraska would be a major disaster, with massive loss of life.

So maybe the old data include something other than wildfires. Or maybe they are exaggerated. I wanted to know. Because it is pushed so much, and looks so dodgy, I think the graph should not be accepted.

Eli has just put up a post on a related matter, and I commented there. He helpfully linked to previous blg discussions at RR and ATTP

Larry K, at JC's, traced the origin of the graph to a 2014 Senate appearance by a Forestry Professor (Emeritus), David South. He is not a fan of global warming notions. Rather bizarrely, he took the opportunity of appearing before the Senate committee to offer a bet on sea level:

"I am willing to bet $1,000 that the mean value (e.g. the 3.10 number for year 2012 in Figure 16) will not be greater than 7.0 mm/yr for the year 2024. I wonder, is anyone really convinced the sea will rise by four feet, and if so, will they take me up on my offer?"

Prof South's graph did not come from his (or anyone's) published paper; he has not published on fire matters. But it was based on real data, of a sort. That is found in a document on the census site: Historical Statistics of the United States p537. That is a huge compendium of data about all sorts of matters. Here is an extract from the table:

As you can see, the big numbers from the 30's are in "unprotected areas". And of these, the source says:

"The source publication also presents information by regions and States on areas needing protection, areas protected and unprotected, and areas burned on both protected and unprotected forest land by type of ownership, and size of fires on protected areas. No field organizations are available to report fires on unprotected areas and the statistics for these areas are generally the best estimates available."

IOW, an unattributed guess. That that is for the dominant component. Federal land fires then are basically less than modern.

The plot mostly in circulation now, and shown by Larry K above, is due to a Lomborg facebook post.

The organisation currently responsible for presenting US fire history statistics is the National Interagency Fire Center. And their equivalent table lists data back to 1960, which pretty much agrees where it overlaps with the old census data to 1970. But they rather pointedly go back no further. And at the bottom of the table, they say (my bold):

"Prior to 1983, sources of these figures are not known, or cannot be confirmed, and were not derived from the current situation reporting process. As a result the figures above prior to 1983 shouldn't be compared to later data."

So not only do they not show data before 1960; they advise against comparison with data before 1983.

Interestingly, ATTP noted that a somewhat similar graph appeared on a USDA Forest Service at this link. It now seems to have disappeared.

I think these graphs should be rejected as totally unreliable.

The Victorian Bushfires of 1851.

First some background. Victoria was first settled in 1834, mainly around Melbourne/Geelong (Port Phillip District), with a smaller area around Portland in the West. In Feb 1851, the time of the fires, the region was still part of the colony of New South Wales. Two big events to come later in the year were acquiring separate colony status, and the discovery of gold, which created a gold rush. But in Feb, the future colony had about 77,000 people, mainly around Melbourne/Geelong. There were no railways or telegraphs, and no real roads outside that region.

There undoubtedly was a very hot day on Thursday Feb 6, 1851, and the populated area was beset with many fires. It may well have been the first such day in the seventeen years of the region, and it made a deep impression. This site gathers some reports. But the main furphy concerns claims of statewide devastation. Wiki has swallowed it:

"They are considered the largest Australian bushfires in a populous region in recorded history, with approximately five million hectares (twelve million acres), or a quarter of Victoria, being burnt."

A quarter of Victoria! But how would anyone know? Nothing like a quarter of Victoria had been settled. Again, virtually no roads. No communications. Certainly no satellites or aerial surveys. Where does this stuff come from?

It is certainly widespread. The ABS, (our census org) says
" The 'Black Thursday' fires of 6 February 1851 in Victoria, burnt the largest area (approximately 5 million ha) in European-recorded history and killed more than one million sheep and thousands of cattle as well as taking the lives of 12 people (CFA 2003a; DSE 2003b)"
It is echoed on the site of the Forest Fire Management (state gov) .The 1 million sheep (who counted them?) and 12 people are echod in most reports. But the ratio is odd. People had very limited means of escape from fire then, and there were no fire-fighting organisations. No cars, no roads, small wooden dwellings, often in the bush. Only 12, for a fire that burnt a quarter of Victoria?

The ABS cites the CFA, our firefighting organisation. I don't know what they said in 2003, but what they currently list is the 12 people killed, and 1000000 livestock, but not the area burnt.

By way of background, here is a survey map of Victoria in 1849. The rectangles are the survey regions (counties and parishes). It is only within these areas that the Crown would issue title to land. That doesn't mean that the areas were yet extensively settled; the dark grey areas are currently purchased. I think even that may be areas in which there are purchases, rather than the area actually sold.

There are a few small locations beyond - around Horsham in the Wimmera, Port Albert, in Gippsland, Portland, Kyneton and Kilmore. This is a tiny fraction of the state. So even if a quarter of the state had burnt, who would be in a position to assess it?

So what are the original sources? Almost entirely a few newspaper articles. Here is one from the Melbourne Argus, on Monday 10th Feb, four days after the fire. They explain why they judiciously waited:

"In our Saturday's issue we briefly alluded to the extensive and destructive bush fires that prevailed throughout the country, more particularly on the Thursday preceding. Rumours had reached us of conflagrations on every side, but as we did not wish to appear alarmists, we refrained from noticing any but those that were well authenticated, knowing how exceedingly prone report is to magnify and distort particulars. Since then, however, we learn with regret that little only of the ill news had reached us, and that what we thought magnified, is unhappily very far from the fearful extent of the truth."

And they give an exceedingly detailed listing of damages and losses, but all pretty much within that surveyed area. A large part of the report quotes from the Geelong Advertiser. There is a report from Portland, but of a fire some days earlier. Many of the fires described are attributed to some local originating incident.

There is an interesting 1924 account here by someone who was there, at the age of 12 (so now about 85). It gives an idea of how exaggerated notions of area might have arisen. He says that the conflagration extended from Gippsland northward as far as the Goulburn river. But even now, a lot of that country is not much inhabited. It's pretty clear that he means that fires were observed in Gippsland (a few settlements) and the Goulburn (probably Seymour).

So again, where does this notion of 5 million hectares come from? I haven't been able to track down an original source for that number, but I think I know. Here (from here) is a common summary of the regions affected "'Fires covered a quarter of what is now Victoria (approximately 5 million hectares). Areas affected include Portland, Plenty Ranges, Westernport, the Wimmera and Dandenong districts. Approximately 12 lives, one million sheep and thousands of cattle were lost'"

Those are all localities, except for the Wimmera, which is a very large area. But the only report from Wimmera is of a fire at Horsham, virtually the only settled area. Another formulation is from the CFA:

"Wimmera, Portland, Gippsland, Plenty Ranges, Westernport, Dandenong districts, Heidelberg."

Apart from the western town Portland, and "Wimmera", the other regions are now within the Melbourne suburbs (so they left out Geelong and the Barrabool ranges, which seems to have been seriously burnt). So where could 5 million hectares come from? I think from the reference to Wimmera. Some reports also list Dandenong as Gippsland, which is a large area too. I think someone put together the Wimmera, which has no clear definition, but Wiki puts it at 4.193 million hectares. With a generous interpretation of Westernport and Portland, that might then stretch to 5 million hectares. But again, Wimmera has only one settled location, Horsham, where there was indeed a report of a fire.

Tuesday, December 19, 2017

GISS November global down 0.03°C from October, now 0.87°C.

GISS cooled slightly, going from 0.90°C in October to 0.87°C in November (GISS report here). That is very similar to the decrease (now 0.064°C with ERSST V5) in TempLS mesh. It was the third warmest November on record, after 2015 and 2016. It makes it almost certain that 2017 will be the second warmest in the record (after 2016): December would have to average 0.51°C for 2015 to catch up, and December has been warmer than November so far.

The overall pattern was similar to that in TempLS. Cool in Canada and far East Siberia. Warm in W Siberia, and very warm in the Arctic. A cool La Nina plume.

As usual here, I will compare the GISS and previous TempLS plots below the jump.

Saturday, December 16, 2017

New version of monthly webGL surface temperature map page.

Moyhu has a maintained page here showing monthly surface temperature anomalies in an interactive webGL spherical shaded plot. The anomalies are based on the TempLS analysis, using unadjusted GHCN V3 and ERSST V5. TempLS provides the triangular mesh and normals (base 1961-90), and the anomalies are just the station monthly averages with these subtracted. The shading is set to give correct color at the nodes (stations). It is updated daily, so also provides a detailed picture from early in the month (which means the first few days are sparse).

The page had used its own webGL program, with a month selection mechanism (using XMLHTTPrequest to dowload data). I have been developing a general webGL facility (described here), and I wanted to make a nw page that conforms with that. This makes extra facilities available and is easier for me to maintain.

To do this I had to extend the WebGL facility, to a version I am currently calling V2.2. It is a considerable restructure, which will probably become V3. It enables me to replace the constructors of various parts of the page within the user files that go with each application, rather than writing it into the core facility. There were issues with making variables (and functions) visible to functions defines in separate files. I'm also now rather extensively using the MoyJS library.

The functionality of older MoyGL versions is preserved, and so, I hope, is the functionality of the page. One novelty of the version is a reintroduction of the flat globe pointing mechanism, which I used before WebGL. In the top right corner is a world map; you can click on any place to make the globe turn to show this point in he centre, with the longitude vertical (oriented). Otherwise, it's pretty much as in V2.1 as used previously.

The month selector is different. It is the box in the top right corner:


The three colored bars let you select decade (1900-2010), year (0-9) and month(1-12). The black squares show the current selection. As you click on the bars, these move, and the date in the red box below changes accordingly. When you have the date you want, click "Fetch and Show" and the data will be retrieved and a new plot will appear.

Since I am using unadjusted anomalies (1961-90), some exceptions will show out. I discussed here a method for remedying this, and of course adjusted data would also help. I am not currently using that method, which makes extrapolated current expected value the anomaly base. It is good for recent years, but gets troublesome in earlier years. I may offer it as an alternative some time.

Friday, December 8, 2017

November global surface temperature down 0.04°C

TempLS mesh anomaly (1961-90 base) was down from 0.724°C in October to 0.683°C in November. This compares with the larger reduction of 0.12°C in the NCEP/NCAR index, and a much greater fall (0.27) in the UAH LT satellite index. The TEmpLS average for 2017 so far is 0.720°C, which would put it behind 2016, and just behind 2015 (0.729°C). It's unlikely that December will be warm enough to change that order, or cool enough to lose third place (0.594°C in 2014).

Update 10 Dec: As Olof noted in comments, although I had tested and enabled use of ERSST 5 (instead of 4) earlier this year, it wasn't actually implemented (failure to correctly set a switch). It doesn't make much difference on a month to month basis. The fall in November was 0.064°C instead of 0.04°C, and the spatial pattern is very similar. But as he astutely noted, it does make a difference to 2017 versus 2015. The means for the last three years are 0.729, 0.835, and 0.758. That puts 2017 0.029°C clear of 2015, which means 2017 will be in second place if December exceeds 0.41°C, which seems likely.

The anomaly pattern showed two marked warm spots in W Siberia and N of Bering Strait, and less pronounced in SW US. Cool in Canada and E Siberia, fairly warm near the poles. Theer was a weak La Nina pattern; much less than with the NCEP/NCAR index.

Here is the temperature map:

Monday, December 4, 2017

November NCEP/NCAR global anomaly down 0.12°C from October

In the Moyhu NCEP/NCAR index, the monthly reanalysis anomaly average fell from 0.372°C in October to 0.253°C in November, 2017, making it the coolest month since June. The month started warm, with a cold period mid-month, and ended warm.

The main cold spots were China and E Siberia, and Canada. Arctic was warm, as were SW USA and European Russia. The Pacific showed a rather La Nina like pattern; cold in the SE and a band at the Equator. Warm around New Zealand/Tasmania.

Sunday, November 19, 2017

Pat Frank and Error Propagation in GCMs

This post reviews recent controversy over some strange theories of Pat Frank. It reviews his WUWT posts, blog discussion, some obvious errors, and more substantively, how error propagation really works in solution of numerical partial differential equations (pde, as GCM climate models are), why it is important, and why it is well understood. It's a bit long so I'll start with a TOC.


Friday, November 17, 2017

GISS October global up 0.1°C from September, now 0.9°C.

GISS warmed, going from 0.80°C in September to 0.90°C in October (GISS report here). That is very similar to the increase (now 0.105°C) in TempLS mesh. It was the second warmest October on record, after 2015. It is interesting to reflect on that month two years ago, which at 1.04°C was at the time by some margin the warmest month ever.

The overall pattern was similar to that in TempLS. Even warmer in Antarctica, cool in W US, and E Mediterranean, but the band of cool through to China is less continuous.

As usual here, I will compare the GISS and previous TempLS plots below the jump.

Wednesday, November 8, 2017

October TempLS global surface temperature up 0.11°C

TempLS mesh anomaly (1961-90 base) was up from 0.618°C in September to 0.73°C in October. This compares with the smaller rise of 0.055°C in the NCEP/NCAR index, and a similar rise (0.09) in the UAH LT satellite index.

The anomaly pattern was similar to the NCEP/NCAR picture. No great heat, except in Antarctica, but warm almost everywhere. A band of cool between the Sahara and Far East Russia, cool in the SE Pacific, and some cool in the western US. The change toward warmth at the poles will again lead to varying results in the major indices, with GISS likely to rise strongly compared with NOAA and HADCRUT. In fact, TempLS grid, which also has less coverage at the poles, fell slightly to October. Overall, sea temperatures rose a little, after dropping last month.

Roy Spencer noted the recent marked rise in the satellite records, which are now relatively a lot higher than the surface. I'll show (from here) the graph of the last four years on a common 1981-2010 base. Even UAH, which had been a low outlier for most of the time, is now well above the surface measures, and is not far below the 1998 peak.

Here is the temperature map: :

Friday, November 3, 2017

October NCEP/NCAR global anomaly up 0.055°C from September

In the Moyhu NCEP/NCAR index, the monthly reanalysis average rose from 0.317°C in September to 0.372°C in October, 2017, making it the warmest month since May It was again a very varied month; starting cool, them a warm spike, and cool again at the end.

The main feature was a big cool band from the Sahara through Siberia to China. Also cold in the SE Pacific, with some La Nina like pattern. Mixed at the poles, but more warm than cold. Since Antarctica was cold last month, this suggests the warming will be reflected more strongly in GISS/TempLS rather than NOAA/HADCRUT.

Wednesday, November 1, 2017

Penguins - more fantasy about a Time cover

There was a really crazy article at WUWT by Leo Goldstein on fact checkers and allegations of fakery. Leo G regularly publishes really paranoid stuff on Google conspiracies etc. But this one was a doozy, titled "How Google and MSM Use “Fact Checkers” to Flood Us with Fake Claims". Here is an extract:
An example is a global cooling scare of the 70s. In 1977, Time magazine published an issue under the following cover:

That cover is a seriously inconvenient truth for climate alarmists and their media accessories. So, Time attempted to re-write a history. It published a forged version of its own cover, the left one on the following picture (the “Time-2013-version-of-1977”):

…and then easily debunked it as a photoshopped version of its April 2007 cover (3). As I will explain below, Time magazine knew it was launching a hoax. The rest of the liberal media popularized it, although it could have easily recognized it. Snopes adopted it (4), invented additional details that were not present in the Time article, and angrily condemned “climate deniers.”
And there is lots more about how "notorious Greg Laden" exposed the hoax etc
The “original source” of the fake cover is hard to trace. It is almost certainly somebody in the climate alarmism camp: the real cover from 1977 was very clearly making a point against climate alarmism. But the point of entry of the forgery into mass circulation was Time magazine, June 6 of 2013. Good job, motherf*ckers.
My initial commentary was a bit confused, mainly because we have recently had NBN (a new optic fibre system, much complained about) installed, and it kept disconnecting from the internet. However, I loooked into it a bit more and found quite a lot of history.

Firstly, some links.

Goldstein is of course talking nonsense about the forgery being a plant designed to pick up on the 1977 Big Freeze cover. That cover wasn't about global cooling at all. It was a straight forward factual article about a very snowy winter in 1976/7 in North America. There was in fact a 1974 Time article on global cooling that people might have wanted to look up, as the Time link describes. But there was no cover associated with that, although the contrary is widely believed.

But I did some more searching. First some notable occurrences of the hoax, which is actually ten years old:
  • As mentioned, it apparently got to President Trump via K.T.MacFarland
  • David Rose at Daily Mail, "Great Green Con". See the blue box which says "In the Seventies, scientists and policymakers were just as concerned about a looming ‘ice age’ as they have been lately about global warming – as the Time magazine cover pictured here illustrates. The picture has now been removed without explanation, which doesn't help the clarity of the text.
  • WUWT, 2017
  • Roy Spencer, 2013

There clearly was more history, since most of these don't have the 1977 pasted over as in the Time/Kirtley versions. So I did a bit more searching.

Steven Goddard, 2011 is an old reliable. This predates 2013, so clearly debunks the Goldstein fantasy about Time forging its own cover in 2013.

Neocon Exresss is the earliest nominal date, at Feb 12, 2007. But that predates the real cover, so I presume the image was added later. Of interest is a Jan 2011 comment, drawing attention to the fakery.

But the most interesting early occurrence was in August 2007, in Free Republic. That was soon after the genuine cover in April 2007. But this one is an animated GIF, and shows alternately the fake and the real. I'm not sure what the point is, but it must be getting close to the source, where it was somehow, I suppose, seen as parody. The url links to this site, which seems to be for prank pictures, but I couldn't find an original there. Update: The picture numbering on the StrangePolitics site isn't entirely consistent, but seems to place the original in April 2007, the month of the genuine cover. <

Here is Goldstein's summary:
In this example, multiple entities are involved: Google, Snopes, Time magazine, and ScienceBlogs. They are independent entities, but each of them knowingly plays its own well-defined role in the chain of injection, amplification, propagation, and utilization of a lie. Thus, they might be referred to as a single body.

Sunday, October 22, 2017

Averaging and error propagation - random walk - math

I have been arguing again at WUWT. There is a persistent belief there which crops up over and over, that averages of large numbers of temperatures must have error estimates comparable to those for their individual components. The usual statement is that you can't make a bad measure good just by repeating over and over. I try to point out that the usually criticised climate averages are not reached by repeating one measure many times, and have invited people to identify the occurrence of such a problem that concerns them, without success.

I dealt with a rather similar occurrence of this issue last year. There I showed an example where Melbourne daily maxima given to 1 decimal (dp) were averaged over a month, for several months, and then averaged again after rounding to nearest integer. As expected, the errors in averaging were much less than 1°C. The theoretical is the standard deviation of the unit uniform distribution (sqrt(1/12) approx 0.29, divided by the sqrt of the number in the average, and the results were close. This time I did a more elaborate averaging with a century of data for each month. As expected this reduced the error (discrepancy between the 1dp mean and the 0dp mean) by a factor of 10.

I also showed here that for the whole process of averaging over time and globally over space, adding white noise to all monthly averages of amplitude 1°C made almost no difference to the global anomaly time series.

The general response that there is something special about the measurement errors which would make them behave differently to the rounding change. And there are usually arguments about whether the original data was really as accurate as claimed. But if one could somehow have perfect data, it would just be a set of rather similar numbers distributed over a similar range, and there is no reason to expect rounding to have a different effect. Nor is there any kind of variation that could be expected to have different effect to rounding, as long as there is no bias; that is, as long as the errors are equally likely to be up or down. If there is bias, then it will be propagated. That is why bias should be the focus.

Here is a table of contents for what is below the fold:

Wednesday, October 18, 2017

GISS September down 0.04°C from August.

GISS showed a small decrease, going from 0.84°C in August to 0.80°C in September (GISS report here). It was the fourth warmest September in the record. That decrease is very similar to the 0.06°C fall in TempLS mesh.

The overall pattern was similar to that in TempLS. Warm almost everywhere, especially across N America, and S America and Middle/near East. Cool spots in W Europe and N central Siberia.

As usual here, I will compare the GISS and previous TempLS plots below the jump.

Sunday, October 8, 2017

September global surface temperature down 0.06°C

TempLS mesh anomaly (1961-90 base) was down from 0.673°C in August to 0.613°C in September. This compares with the smaller drop of 0.02°C in the NCEP/NCAR index, and a substantial rise (0.12) in the UAH LT satellite index. UAH is up a lot in the last two months.

Despite the fall, most of the world looked pretty warm. Warmth in Canada, S America, near East, China. A cool spot in Siberia, but warmth in Antarctica, which contrasts with the earlier NCEP/NCAR report, which showed predominant cold. Here is the temperature map: :

Tuesday, October 3, 2017

September NCEP/NCAR global anomaly down 0.02°C from August

In the Moyhu NCEP/NCAR index, the monthly reanalysis average declined from 0.337°C in August to 0.317°C in September, 2017. It was again a very varied month; it looked as if it would come out quite warm until a steep dip about the 23rd; that cool spell then lasted until the end of the month.

The main feature was cold in Antarctica, so again we can expect this to be strongly reflected in GISS and TempLS, and less in NOAA and HADCRUT. Elsewhere, cold in Central Russia, but warm in the west; fairly warm around the Arctic.

Friday, September 29, 2017

Nested gridding, Hadcrut, and Cowtan/Way .

Update I had made an error in coding for the HADCRUT/C&W example - see below. The agreement with C&W is now much improved.

In my previous post, I introduced the idea of hierarchical, or nested gridding. In earlier posts, eg here and here, I had described using platonic solids as a basis for grids on the sphere that were reasonably uniform, and free of the pole singularities of latitude/longitude. I gave data files for icosahedral hexagon meshes of various degrees of resolution, usually proceeding by a factor of two in cell number or length scale. And in that previous post, I emphasised the simplicity of a scheme for working out which cell a point belonged by finding the nearest centre point. I foreshadowed the idea of embedding each such grid in a coarser parent, with grid averaging proceeding downward, and using the progressive information to supply estimates for empty cells.

The following graph from HADCRUT illustrates the problem. It shows July 2017 temperature anomalies on a 5°x5° grid, with colors for cells that have data, and white otherwise. They average the area colored, and omit the rest from the average. As I often argue, as a global estimate, this effectively replaces the rest by the average value. HADCRUT is aware of this, because they actually average by hemispheres, which means the infilling is done with the hemisphere average rather than global. As they point out, this has an important benefit in earlier years when the majority of missing cells were in the SH, which was also behaving differently, so the hemisphere average is more eappropriate than global. On the right, I show the same figure, but this time with my crude coloring in (with Paint) of that hemisphere average. You can assess how appropriate the infill is:

A much-discussed paper by Cowtan and Way 2013 noted that this process led to bias in that the areas thus infilled tended not to have the behaviour of the average, but were warming faster, and this was underestimated particularly since 2000 because of the Arctic. They described a number of remedies, and I'll concentrate on the use of kriging. This is a fairly elaborate geostatistical interpolation method. When applied, HADCRUT data-based trends increased to be more in line with other indices which did some degree of interpolation.

I think the right way to look at this is getting infilling right. HADCRUT was on the right track in using hemisphere averages, but it should be much more local. Every missing cell should be assigned the best estimate based on local data. This is in the spirit of spatial averaging. The cells are chosen as regions of proximity to a finite number of measurement points, and are assigned an average from those points because of the proximity. Proximity does not end at an artificial cell boundary.

In the previous post, I set up a grid averaging based on an inventory of about 11000 stations (including GHCN and ERSST) but integrated not temperature but a simple function sin(latitude)^2, which should give 1/3. I used averaging omitting empty cells, and showed that at coarse resolution the correct value was closely approximated, but this degraded with refinement, because of the accession of empty cells. I'll now complete that table using nested integration with hexagonal grid. At each successive level, if a cell is empty, it is assigned the average value of the smallest cell from a previous integration that includes it. (I have fixed the which.min error here too; it made little difference).

levelNumcellsSimple averageNested average

The simple average shows that there is an optimum; a grid fine enough to resolve the (small) variation, but coarse enough to have data in most cells. The function is smooth, so there is little penalty for too coarse, but a larger one for too fine, since the areas of empty cells coincides with the function peak at the poles. The merit of the nested average is that it removes this downside. Further refinement may not help very much, but it does no harm, because a near local value is always used.

The actual coding for nested averaging is quite simple, and I'll give a more complete example below.

HADCRUT and Cowtan/Way

Cowtan and Way thankfully released a very complete data set with their paper, so I'll redo their calculation (with kriging) with nested gridding and compare results. They used HADCRUT, data ending at end 2012. Here is a plot of results from 1980, with nested integration of the HADCRUT gridded data at centres (but on a hex grid). I'm showing every even step as hier1-4, with hier4 being the highest resolution at 7682 cells. All anomalies relative to 1961-90..

UpdateI had made an error in coding for the HADCRUT/C&W example - see code. I had used which.min instead of which.max. This almost worked, because it placed locations in the cells on the opposite side of the globe, consistently. However, the result is now much more consistent with C&W. With refining, the integrals now approach from below, and also converge much more tightly.

The HADCRUT 4 published monthly average (V4.1.1.0) is given in red, and the Cowtan and Way Version 1 kriging in black. The nested integration makes even more difference than C&W, mainly in the time from 1995 to early 2000's. Otherwise, a As with C&W, it adheres closely to HADCRUT in earlier years, when presumably there isn't much bias associated with the missing data. C&W focussed on the effect on OLS trends, particularly since 1/1997. Here is a table, in °C/Century:

Trend 1997-2012Trend 1980-2012
HAD 40.4621.57
C&W krig0.971.689

Convergence is very good to the C&W trend I calculate. In their paper, for 1997-2012 C&W give a trend of 1.08 °C/Cen (table III) which would agree very well with the nested results. C&W used ARMA(1,1) rather than OLS, but the discrepancy seems too large for that.Update: Kevin Cowtan has explained the difference in a comment below.

Method and Code

This is the code for the integration of the monthly sequence. I'll omit the reading of the initial files and the graphics, and assume that we start with the HADCRUT gridded 1980-2012 data reorganised into an array had[72,36,12,33] (lon,lat,month,year). The hexmin[[]] lists are as described and posted previously. The 4 columns of $cells are the cell centres and areas (on sphere). The first section is just making pointer lists from the anomaly data into the grids, and from each grid into its parent. If you were doing this regularly, you would store the pointers and just re-use as needed, since it only has location data. The result is the gridpointer and datapointer lists. The code takes a few seconds.
monthave=array(NA,c(12,33,8)) #array for monthly averages 
datapointer=gridpointer=cellarea=list(); g=0;
for(i in 1:8){ # making pointer lists for each grid level
 g0=g;  # previous g
 g=as.matrix(hexmin[[i]]$cells); ng=nrow(g);
 if(i>1){ # pointers to coarser grid i-1
  for(j in 1:ng)gp[j]=which.max(g0[,1:3]%*%g[j,1:3])
 y=inv; ny=nrow(y); dp=rep(0,ny) #  y is list of HAD grid centres in 3D cartesian
 for(j in 1:ny) dp[j]=which.max(g[,1:3]%*%y[j,])
 datapointer[[i]]=dp  # datapointers into grid i
Update: Note the use of which.max here, which is the key instruction locating points in cells. I had originally used which.min, which actually almost worked, because it places ponts on the opposite side of the globe, and symmetry nearly makes that OK. But not quite. Although the idea is to minimise the distance, that is implemented as maximising the scalar product.

The main data loop just loops over months, counting and adding the data in each cell (using datapointer); forming a cell average. It then inherits from the parent grid values (for empty cells) from the parent average vector using gridpointer to find the match, so at each ave is complete. There is an assumption that the coarsest level has no empty cells. It is then combined with area weighting (cellarea, from hexmin) for the monthly average. Then on to the next month. The result is the array monthave[month, year, level] of global averages.
for(I in 1:33)for(J in 1:12){ # looping over months in data from 1980
 ave=rep(NA,8)  # initialising
 for(K in 1:8){ # over resolution levels
  integrand=c(had[,,J,I+130])  # Set integrand to HAD 4 for the month 
  cellsum=cellnum=rep(0,length(area))  # initialising
  for(i in 1:n){  # loop over "stations"
   if(  # no data in cell
  j=which(cellnum==0) # cells without data
  if(K>1)for(i in j){cellnum[i]=1;cellsum[i]=ave0[gp[i]]}
  ave=cellsum/cellnum # cell averages
  Ave=sum(ave*area)/sum(area) # global average (area-weighted)
  if("A cell inherits no data")
  monthave[J,I,K] = round(Ave,4) # weighted average
}# end I,J


Moyhuhexmin has the hex cell data and was given in the earlier post. I have put a new zipped ascii version here

Thursday, September 28, 2017

Simple use of a complex grid - Earth temperature.

This is a follow-up to my last post, which refined ideas from an earlier post on using platonic solids as a basis for grids on the sphere that were reasonably uniform, and free of the pole singularities of latitude/longitude. I gave data files for use, as I did with an earlier post on a special case, the cubed sphere.

The geometry involved can be complicated, but a point I made in that last post was that users need never deal with the complexity. I gave a minimal set of data for grids of varying resolution, which basically recorded the mid-points of the cells, and their area. That is all you need to make use of them.

I should add that I don't think the hexagon method I recommend is a critical improvement over, say, the cubed sphere method. Both work well. But since this method of application is the same for any variant, just using cell centres and areas in the same way, there is no cost in using the optimal.

In this post, I'd like to demonstrate that with an example, with R code for definiteness. I'd also like to expand on the basic idea, which is that near-regular grids of any complexity have he Voronoi property, which is that cells are the domain of points closest to the mid-points. That is why mid-point location is sufficient information. I can extend that to embedding grids in grids of lower resolution; I will recommend a method of hierarchical integration in which empty cells inherit estimates from the most refined grid that has information for their area. I think this is the most logical answer to the empty cell problem.

In the demonstration, I will take the inventory of stations that I use for TempLS. It has all GHCN V3 stations together with a selection of ERSST cells, treated as stations located at grid centres. It has 10997 locations. I will show how to bin these, and use the result to do a single integration of data on those points.

I start with calling the data for the inventory ("invo.sav") (posted in the dataset for cubed sphere above). Then I call the Moyhuhexmin data that I posted in the last post. I am going to do the integration over all 8 resolution levels, so I loop over variable K, collecting results in ave[]:
ave=rep(NA,8) # initialising
for(K in 1:8){
 h=hexmin[[K]]  # dataframe for level K
 g=as.matrix(h$cells) # 3D coords of centres, and areas
 y=invo$z; n=nrow(y);  # invo$z are stations; 
This is just gathering the information. g and y are the two sets of 3D cartesian coordinates on the sphere to work with. Next I locate y in the cells which have centre g:
 for(i in 1:n) pointer[i]=which.min(g[,1:3]%*%y[i,]) # finding closest g to y 
If this were a standalone calculation, I wouldn't have done this as a separate loop. But the idea is that, once I have found the pointers, I would  store them as a property of the stations, and never have to do this again. Not that it is such a pain; although I discussed last time a multi-stage process, first identifying the face and then searching that subset, in fact with near 11000 nodes and 7682 cells (highest resolution), the time taken is still negligible - maybe 2 seconds on my PC.

Now to do an actual integration. I'll use a simple known function, where one would normally use temperature anomalies assigned to a subset of stations y. I'll use the y-coord in my 3D, which is sin(latitude),, and sunce that has zero integral, I'll integrate the square. The answer should be 1/3.
cellsum=cellnum=rep(0,nrow(g))  # initialising
for(i in 1:n){
area[] is just the fourth column of data from hexmin; it is the area of each cell on the sphere. cellsum[] with be the sum of integrand values in the cell, and cellnum[] the count (for averaging). This is where the pointers are used. The final stage is the weighted summation:
o=cellnum>0 # cells with data
ave[K] = sum(cellsum[o]*area[o]/cellnum[o])/sum(area[o]) # weighted average
} # end of K loop
This is, I hope, fairly obvious R stuff. o[] marks cells with data which are the only ones included in the sum. area[o] are the weights, and to get the averages I divide by the sum of weights. This is just conventional grid averaging.

Integration results

Here are the results of grid integration of sin^2(lat) at various resolution levels:

levelNumber of cellsaverage
The exact answer is 1/3. This was reached at fairly coarse resolution, which is adequate for this very smooth function. At finer resolution, empty cells are an increasing problem. Simple averaging ignoring empty cells effectively assigns to those eells the average of the rest. Because the integrand has peak value 1 at the poles, where many cells are empty, those cells are assigned a value of about 1/3, when they really should be 1. That is why the integral diminishes with increasing resolution. It is also why the shrinkage tapers off, because once most cells in the region are empty, further refinement can't make much difference.

Empty cells and HADCRUT

This is the problem that Cowtan and Way 2013 studied with HADCRUT. HADCRUT averages hemispheres separately, so they effectively infill empty cells with hemisphere averages. But Arctic areas especially are warming faster than average, and HADCRUT tends to miss this. C&W tried various methods of interplating, particularly polar values, and got what many thought was an improvement, more in line with other indices. I showed at the time that just averaging by latitude bands went a fair way in the same direction.

With the new grid methods here, that can be done more systematically. The Voronoi based matching can be used to embed grids in grids of lower resolution, but fewer empty cells. Integrtaion can be done starting with a coarse grid, and then going to higher resolution. Infilling of an empty cell can be done with the best value from the heirarchy.

I use an alternative diffusion based interpolation as one of the four methods for TempLS. It works very well, and gives results similar to the other two of the three best (node-nased triangular mesh and spherical harmonics). I have tried variants of the heirarchical method, with similar effect.


In the next post, I will check out the hierarchical method applied to this simple example, and also to HADCRUT4 gridded version. I'm hoping from a better match with Cowtan and Way.

Tuesday, September 26, 2017

The best grid for Earth temperature calculation.

Earlier this month, I wrote about the general ideas of gridding, and how the conventional latitude/longitude grids were much inferior to grids that could be derived from various platonic solids. The uses of gridding in calculating temperature (or other field variables) on a sphere are
  1. To gather like information into cells of known area
  2. To form an area weighted sum or average, representative of the whole sphere
  3. a necessary requirement is that it is feasible to work out in which cell an arbitrary location belongs
So a good grid must have cells small enough that variation within them has little effect on the result ("like"), but large enough that they do significant gathering. It is not much use having a grid where most cells are empty of data. This leads to two criteria for cells that balance these needs:
  • The cells should be of approximately equal area.
  • The cells should be compact, so that cells of a given area can maximise "likeness".
Lat/lon fails because:
  • cells near poles are much smaller
  • the cells become long and thin, with poor compactness
I showed platonic solid meshes with triangles and squares that are much less distorted, and with more even area distribution, Clive Best, too, has been looking at icosahedra. I have also been looking at ways of improving area uniformity. But I haven't been thinking much about compactness. The ideal there is a circle. Triangles deviate most; rectangles are better, if nearly square. But better still are regular hexagons, and that is my topic here.

With possibly complex grids, practical usability is important. You don't want to keep having to deal with complicated geometry. With the cubed sphere, I posted  here a set of data which enables routine use with just lookup. It includes a set of meshes with resolution increasing by factors of 2. The nodes have been remapped to optimise area uniformity. There is a lookup process so that arbitrary points can be celled. But there is also a list showing in which cell the stations of the inventory that I use are found. So although the stations that report vary each month, there is a simple geometry-free grid average process
  • For each month, sort the stations by cell label
  • Work out cell averages, then look up cell areas for weighted sum.
I want to do that here for what I think is an optimal grid.

The optimal grid is derived from the triangle grid for icosahedra, although it can also be derived from the dual dodecahedron. If the division allows, the triangles can be gathered into hexagons, except near vertices of the icosahedron, where pentagons will emerge. This works provided the triangles faces are initially trisected, and then further divided. There will be 12 pentagons, and the rest hexagons. I'll describe the mapping for uniform sphere surface area in an appendix.


I have realised that the cell finding process can be done simply and generally. Most regular or near-regular meshes are also Voronoi nets relative to their centres. Thatis, a cell includes the points closest to its centre, and not those closer to any other centre. So you can find the cell for a point by simply looking for the closest cell center. For a sphere that is even easier; it is the centre for which the scalar product (cos angle) of 3D coordinates is greatest.

If you have a lot of points to locate, this can still be time-consuming, if mechanical. But it can be sped up. You can look first for the closest face centre (of the icosahedron). Then you can just check the cells within that face. That reduces the time by a factor of about 20.

The grids

Here is a WebGL depiction of the results. I'm using the WebGL facility, V2.1. The sphere is a trackball. You can choose the degree of resolution with the radio buttons on the right; hex122, for example, means a total of 122 cells. They progress with factors of approx 2. The checkboxes at the top let you hide various objects. There are separate objects for red, yellow and green, but if you hide them all, you see just the mesh. The colors are designed to help see the icosahedral pattern. Pentagons are red, surrounded by a ring of yellow.

The grid imperfections now are just a bit of distortion near the pentagons. This is partly because I have forced them to expand to have simiar area to the hexagons. For grid use, the penalty is just a small loss of compactness.


The data is in the form of a R save file, for which I use the suffix .sav. There are two. One here is a minimal set for use. It includes the cell centre locations, areas, and a listing of the cells within each face, for faster search. That is all you need for routine use. There is a data-frame with this information for each of about 8 levels of resolution, with maximum 7682 cells (hex7682). There is a doc string.

The longer data set is here. This has the same levels, but for each there are dataframes for cells, nodes, and the underlying triangular mesh. A dataframe is just R for a matrix that can have columns of various types, suitably labelled. It gives all the nodes of the triangular mesh, with various details. There are pointers from one set to another. there is also a doc string with details.

Appendix - equalising area

As I've occasionally mentioned, I've spent a lot of time on this interesting math problem. The basic mapping from platonic solid to sphere is radial projection. But that distorts areas that were uniform on the solid. Areas near the face centres are projected further (thinking of the solid as within the sphere) and grow. There is also, near the edges, an effect due to the face plane slanting differently to the sphere (like your shadow gets smaller when the sun is high). These distortions get worse when the solid is further from spherical.

I counter this with a mapping which moves the mesh on the face towards the face centre. I initially used various polynomials. But now I find it best to group the nodes by symmetry - subsets that have to move in step. Each has one (if on edge) or two degrees of freedom. Then the areas are also constrained by symmetry, and can be grouped. I use a Newton-Raphson method (actually secant) to move the nodes so that the triangles have area closest to the ideal, which is the appropriate fraction of the sphere. There are fewer degrees of freedom than areas, so it is a kind of regression calculation. It is best least squares, not exact. You can check the variation in areas; it gets down to a few percent.

Tuesday, September 19, 2017

GISS August up 0.01°C from July.

GISS showed a very small rise, going from 0.84°C in July to 0.85°C in August (GISS report here). TempLS mesh showed a very slight fall, which I posted at 0.013°C, although with further data is is now almost no change at all. I see that GISS is now using ERSST V5, as TempLS does.

The overall pattern was similar to that in TempLS. Warm almost everywhere, with a big band across mid-latitude Eurasia and N Africa. Cool in Eastern US and high Arctic, which may be responsible for the slowdown in ice melting..

As usual here, I will compare the GISS and previous TempLS plots below the jump.

Monday, September 18, 2017

Grids, Platonic solids, and surface temperature (and GCMs)

This follows a series, predecessor here, in which I am looking at ways of dealing with surface variation of Earth's temperature, particularly global averaging. I have written a few posts on the cubed sphere, eg here. I have also shown some examples of using an icosahedron, as here. Clive Best has been looking at similar matters, including use of icosahedron. For the moment, I'd like to write rather generally about grids and ways of mapping the sphere.

Why grids?

For surface temperature, grids are commonly used to form local averages from data, which can then be combined with area weighting to average globally. I have described the general considerations here. All that is really required is any subdivision of reasonable (compact) shapes. They should be small enough that the effect of variation within is minimal, but large enough that there is enough data for a reasonable estimate. So they should be of reasonably equal area.

The other requirement, important later for some, is that any point on the sphere can be associated with the cell that contains it. For a regular grid like lat/lon, this is easy, and just involves conversion to integers. So if each data point is located, and each cell area is known, that is all that is needed. As a practical matter, once the cell locations are known for an inventory of stations, the task of integrating the subset for a given month is just a look-up, whatever the geometry.

I described way back a fairly simple subdivision scheme that works for this. Equal latitude bands are selected. Then each band is divided as nearly as possible into square elements (on the sphere). The formula for this division can then be used to locate arbitrary points within the cells. I think this is all that is required for surface averaging.

However, for anything involving partial differentiation, such as finite element or GCM modelling, more is required. Fluxes between cells need to be measured, so hey have to line up. Nodes have to be related to each cell they abut. This suggests regular grids. In my case, I sometimes want to use a kind of diffusive process to estimate what is happening in empty cells. Again, regular is better.

Platonic solids

Something that looks a bit like a sphere and is easy to fit with a regular grid is a Platonic solid. There are five of them - I'll show the Wiki diagram:

Regular means that each side has the same length, and each face is a congruent regular polygon. The reason why there are only five is seen if you analyse what has to happen at vertices (Wiki):

Friday, September 8, 2017

August global surface temperature down 0.013°C

TempLS mesh anomaly (1961-90 base) was down from 0.69°C in July to 0.677°C in August. This very small drop compares with the small rise of 0.038°C in the NCEP/NCAR index, and a bigger rise (0.12) in the UAH LT satellite index. The August value is less than August 2015 or 2016, but higher than 2014.

There was a moderate fall in Antarctica, which as usual affects TempLS mesh and GISS more than others. I'd expect NOAA and HADCRUT to show increases for August. Regionally, the Old World was mostly warm; US was cold cental and East, but N Canada was warm. S America mostly warm (still awaiting a few countries). :

Thursday, September 7, 2017

August NCEP/NCAR global anomaly up 0.038°C

In the Moyhu NCEP/NCAR index, the monthly reanalysis average rose from 0.299°C in July to 0.337°C in August, 2017. The results were late this month; for a few days NCEP/NCAR was not posting new results. It was a very up and down month; a dip at at the start, then quite a long warm period, and then a steep dip at the end. Now that a few days in September are also available, there is some recovery from that late dip. August 2017 was a bit cooler than Aug 2016, but warmer than 2015.

It was cool in Eastern US, but warm in the west and further north. Cool in Atlantic Europe, but warm further east. Mostly cool in Antarctica.

Wednesday, August 30, 2017

Gulf SST - warm before Harvey, cool after.

I maintain a page showing high resolution (1/4degree) AVHRR SST data from NOAA - in detail: "NOAA High Resolution SST data provided by the NOAA/OAR/ESRL PSD, Boulder, Colorado, USA, from their Web site at". It renders it in WebGL and goes back with daily maps for a decade or so, then les frequently. It shows anomalies relative to 1971-2000. I have been tracking the effect of Hurricane Harvey. It was said to have grown rapidly because of warm Gulf waters; they were warm, but not exceptionally, as this extract from 15 August shows:

It remained much the same to 24th August, when Harvey grew rapidly, and gained Hurricane status late in the day (). But by 25th, there is some sign of cooling. 26th (not shown) was about the same. But by 27th, There was marked cooling, and by 28th more so. The cooling seems to show up rather belatedly alomg the path of the hurricane.

Here's is the latest day at higher resolution:

A few years ago, I developed a set of movies based on recent hurricanes of the time, showing their locations and SST at the time. Some showed a big effect, some not so much. Harvey was interesting in that it covered a fairly confined area of ocean, and moved slowly.

Thursday, August 24, 2017

Surface temperature sparsity error modes

This post follows last week's on temperature integration methods. I described a general method of regression fitting of classes of integrable functions, of which the most used to date is spherical harmonics (SH). I noted that the regression involved inverting a matrix HH consisting of all the scalar product integrals of the functions in the class. With perfect integration this matrix would be a unit matrix, but as the SH functions become more oscillatory, the integration method loses resolution, and the representation degrades with the condition number of the matrix HH. The condition number is the ratio of largest eigenvalue to smallest, so what is happening is that some eigenvectors become small, and the matrix is near singular. That means that the corresponding eigenvector might have a large multiplier in the representation.

I also use fitted SH for plotting each month's temperature. I described some of the practicalities here (using different functions). Increasing the number of functions improves resolution, but when HH becomes too ill-conditioned, artefacts intrude, which are multiples of these near null eigenvectors.

In the previous post, I discussed how the condition of HH depends on the scalar product integral. Since the SH are ideally orthogonal, better integration improves HH. I have been taking advantage of that in recent TempLS to increase the order of SH to 16, which implies 289 functions, using mesh integration. That might be overdoing it - I'm checking.

In this post, I will display those troublesome eigen modes. They are of interest because they are associated with regions of sparse coverage, and give a quantification of how much they matter. Another thing quantified is how much the integration method affects the condition number for a given order of SH. I'll develop that further in another post.

I took N=12 (169 functions), and looked at TempLS stations (GHCN+ERSST) which reported in May 2017. Considerations on choice of N are that if too low, the condition number is good, and the minimum modes don't show features emphasising sparsity. If the number is too high, each region like Antarctica can have several split modes, which confuses the issue.

The integration methods I chose were mostly described here
  • OLS - just the ordinary scalar product of the values
  • grid - integration by summing on a 5x5° latitude/longitude grid. This was the earliest TempLS method, and is used by HADCRUT.
  • infill - empty cells are infilled with an average of nearby values. Now the grid is a cubed sphere with 1536 cells
  • mesh - my generally preferred method using an irregular triangular grid (complex hull of stations) with linear interpolation.
OLS sounds bad, but works quite well at moderate resolution, and was used in TempLS until very recently.

I'll show the plots of the modes as an active lat/lon plot below, and then the OLS versions in WebGL, which gives a much better idea of the shapes. But first I'll show a table of the tapering eigenvalues, numbering from smallest up. They are scaled so that the maximum is 1, so reciprocal of the lowest is the condition number.
OLS grid infilled mesh
And here is a graph of the whole sequence, now largest first:

The hierarchy of condition numbers is interesting. I had expected that it would go in the order of the columns, and so it does until near the end. Then mesh drops below infilled grid, and OLS below grid, for the smallest eigenvalues. I think what determines this is the weighting of the nodes in the sparse areas. For grid, this is not high, because each just gets the area of its cell. For both infilled and mesh, the weight rises with the area, and apparently with infilled, more so.

Thursday, August 17, 2017

Temperature averaging and integration - the basics

I write a lot about spatial integration, which is at the heart of global temperature averaging. I'll write more here about the principles involved. But I'm also writing to place in context methods I use in TempLS, which I think are an advance on what is currently usual. I last wrote a comparison of methods in 2015 here, which I plan to update in a sequel. Some issues here arose in a discussion at Climate Audit.

It's a long post, so I'll include a table of contents. I want to start from first principles and make some math connections. I'll use paler colors for the bits that are more mathy or that are just to make the logic connect, but which could be skipped.

Wednesday, August 16, 2017

GISS July up 0.15°C from June.

GISS was up from 0.68°C in June to 0.83°C in July. It was the warmest July in the record, though the GISS report says it "statistically tied" with 2016 (0.82). The increase was similar to the 0.12°C rise in TempLS.

The overall pattern was similar to that in TempLS. Warm almost everywhere, with a big band across mid-latitude Eurasia and N Africa. Cool in parts of the Arctic, which may save some ice.

I'll show the plot of recent months on the same 1981-2010 base, mainly because they are currently unusually unanimous. The group HADCRUT/NOAA/TempLS_grid tend to be less sensitive to the Antarctic variations that have dominated recent months, and I'd expect them to be not much changed in July also, which would leave them also in much the same place.

Recently, August reanalysis has been unusually warm. As usual here, I will compare the GISS and previous TempLS plots below the jump.

Tuesday, August 8, 2017

July global surface temperature up 0.11°C

TempLS mesh anomaly (1961-90 base) was up from 0.568°C in June to 0.679°C in July. This follows the smaller rise of 0.06°C in the NCEP/NCAR index, and a similar rise (0.07) in the UAH LT satellite index. The July value is just a whisker short of July 2016, which was a record warm month. With results for Mexico and Peru still to come, that could change..

Again the dominant change was in Antarctica, from very cold in June to just above average in July. On this basis, I'd expect GISS to also rise; NOAA and HADCRUT not so much. Otherwise as with the reanalysis, Middle East and around Mongolia were warm, also Australia and Western USA. Nowhere very hot or cold. Here is the map:

Thursday, August 3, 2017

July NCEP/NCAR up 0.058°C

In the Moyhu NCEP/NCAR index, the monthly reanalysis average rose from 0.241°C in June to 0.299°C in July, 2017. This is lower than July 2016 but considerably higher than July 2015. The interesting point was a sudden rise on about July 24, which is responsible for all the increase since June. It may be tapering off now.

It was generally warm in temperate Asia and the Middle East, and even Australia. Antarctica was mixed, not as cold as June. The Arctic has been fairly cool.

Saturday, July 22, 2017

NOAA's new ERSST V5 Sea surface temperature and TempLS

The paper describing the new version V5 of ERSST has been published in the Journal of Climate. The data is posted, and there is a NOAA descriptive page here. From the abstract of the (paywalled) paper, by Huang et al:
This update incorporates a new release of ICOADS R3.0, a decade of near-surface data from Argo floats, and a new estimate of centennial sea-ice from HadISST2. A number of choices in aspects of quality control, bias adjustment and interpolation have been substantively revised. The resulting ERSST estimates have more realistic spatio-temporal variations, better representation of high latitude SSTs, and ship SST biases are now calculated relative to more accurate buoy measurements, while the global long-term trend remains about the same.
A lot of people have asked about including ARGO data, but it may be less significant than it seems. ARGO floats only come to the surface once every ten days, while the more numerous drifter buoys are returning data all the time. There was a clamor for the biases to be calculated relative to the more accurate buoys, but as I frequently argued, as a matter of simple arithmetic it makes absolutely no difference to the anomaly result. And sure enough, they report that it just reduces all readings by 0.077°C. That can't affect trends, spatial patterns etc.

The new data was not used for the June NOAA global index, nor for any other indices that I know of. But I'm sure it will be soon. So I have downloaded it and tried it out in TempLS. I have incorporated it in place of the old V3b. So how much difference does it make? The abstract says
Furthermore, high latitude SSTs are decreased by 0.1°–0.2°C by using sea-ice concentration from HadISST2 over HadISST1. Changes arising from remaining innovations are mostly important at small space and time scales, primarily having an impact where and when input observations are sparse. Cross-validations and verifications with independent modern observations show that the updates incorporated in ERSSTv5 have improved the representation of spatial variability over the global oceans, the magnitude of El Niño and La Niña events, and the decadal nature of SST changes over 1930s–40s when observation instruments changed rapidly. Both long (1900–2015) and short (2000–2015) term SST trends in ERSSTv5 remain significant as in ERSSTv4.
The sea ice difference may matter most - this is a long standing problem area in incorporating SST in global measures. On the NOAA page, they show a comparison graph:

There are no obvious systematic trend differences. The most noticeable change is around WWII, which is a bit of a black spot for SST data. A marked and often suspected peak around 1944 has diminished, with a deeper dip around 1942.

TempLS would be expected to reflect this, since most of its data is SST. Here is the corresponding series for TempLS mesh plotted:

Global trends (in °C/century) are barely affected. Reduced slightly in recent decades, increased slightly since 1900:

start yearend yearTempLS with V4TempLS with V5

Almost identical behaviour is seen with TempLS grid.

Thursday, July 20, 2017

NOAA global surface temperature down just 0.01°C

Down from 0.83°C in May to 0.82C in June (report here). I don't normally post separately about NOAA, but here I think the striking difference from GISS/TempLS mesh is significant. GISS went down 0.19°C, and TempLS mesh by 0.12°C. But TempLS grid actually rose, very slightly. I have often noted the close correspondence between NOAA and TempLS grid (and the looser one between TempLS mesh and GISS) and attributed the difference to GISS etc better coverage of the poles.

This month, the cause of that difference is clear, as is the relative coolness of June in GISS. With TempLS reports, I post a breakdown of the regional contributions. These are actual contributions, not just average temperature. So in the following:

you see that the total dropped by about 0.12°C, while Antarctica dropped from conributing 0.07C to -0.07C, a difference that slightly exceeded the global total drop of 0.12C.

That doesn't mean that, but for Antarctica, there would have been no cooling. May had been held up by the relative Antarctic warmth. But it is a further illustration of the difference between the interpolative procedures of GISS and TempLS and the cruder grid-based processes of NOAA and TempLS grid. I would probably have abandoned TempLS grid, or at least replaced it with a more interpolative version (post coming soon), if it were not for the correspondence with NOAA and HADCRUT.

Update: I see that the paper for ERSST V5 has just been published in J Climate. I'll post about that very soon, and also, maybe separately, give an analysis of its effect in TempLS. I see also that NOAA was still using V4 for June; I assume they will use V5 for July, as I expect I will. The NOAA ERSST V5 page is here.

Here is the NOAA map for the month. You can see how the poles are missing.