Wednesday, April 18, 2018

GISS March global up 0.1°C from February.

GISS rose 0.1°C. March anomaly average was 0.89°C, up from February 0.79°C January (GISS report here). That is a greater rise than TempLS mesh, which rose by 0.04°C, as did the NCEP/NCAR index. But GISS did not rise the previous month, so the change over two months is about the same. Mar 2018 is about the same as Mar 2015, but below 2016 and 2017.

The overall pattern was similar to that in TempLS. A cold band across N Eurasia, and a warm band below across mid-latitudes. Warm in N Canada and Alaska, but cool around the Great Lakes. As with last month, both show an interesting pattern of mostly warm patches in the roaring Forties.

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

Saturday, April 7, 2018

March global surface TempLS up 0.021 °C from February.

The TempLS mesh anomaly (1961-90 base) rose a little, from 0.683°C in February to 0.704°C in March. This is similar 0.046°C rise in the NCEP/NCAR index, while the satellite TLT indices rose by a similar amount (UAH 0.04°C).

There were two major bands of weather, one cold, one warm. The warm belt spread from N China to the Sahara, being very warm from Mongolia to Egypt. The cold band went from N Siberia to Britain, being very cold in NW Russia. Both poles were moderately warm. For the Arctic, this is a big reduction since last month, so indices like NOAA and HADCRUT might rise more than GISS. TempLS grid, which also undercounts poles, rose 0.07°C.

Another noticeable pattern, similar to last month, was a band of SST warmth extending right around the 35-45° S latitudes.

Here is the temperature map. As always, there is a more detailed active sphere map here.

Tuesday, April 3, 2018

March NCEP/NCAR global surface anomaly up by 0.046°C from February

In the Moyhu NCEP/NCAR index, the monthly reanalysis anomaly average rose from 0.285°C in February to 0.331°C in March, 2018, mainly due to a spike at the end of the month.

Unusually, the Arctic was mostly cool. Cold in N Russia, extending through Europe to Spain. To the south of that cold, a warm band from China to the Sahara, which was probably responsible for the net warmth. US was patchy, but more cool than warm. Interactive map here.

On prospects, the BoM says that ENSO is neutral, with neutral prospects. Currently SOI looks Nina-ish, but BoM says that is due to cyclones and will pass.

Friday, March 16, 2018

GISS February global temperature unchanged from January.

GISS cooled, February anomaly average was 0.78°C, same as January (GISS report here). That differs from TempLS mesh, which rose by 0.06°C, as did the NCEP/NCAR index.

The overall pattern was similar to that in TempLS. Warm in the Arctic (very) and Siberia, Eastern USA, and also a band from Nigeria through to W India, bit warmest around the E Mediterranean. There was a band of cold in Canada below the Arctic extending into the US upper mid-west, and in Europe. Both show an interesting pattern of mostly warm patches in the roaring Forties.

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

Tuesday, March 13, 2018

Buffers and ocean acidification.

This is an ongoing topic of blog discussion - recently here. I have written a few posts about it (eg here), and there is an interactive gadget for seawater buffering here. One of my themes is to reduce the emphasis on pH. The argument is that it is present in very small quantity; the buffering inhibits change, and so it is not a significant reagent. Because of its sparsity, it was until recently hard to measure. So both with measurement and conceptually, it is better to concentrate on the main reagents. These are CO₂, bicarb HCO₃⁻ and carbonate CO₃⁻². Carbonate is also involved in a solubility equilibrium with CaCO₃.

There is resistance to defocussing on H⁺, based on older notions that it is the basis of acidity. But for 95 years we have had the concept of Lewis acidity, in which a proton is just one of many entities that can accept an electron pair. CO₂ is another such Lewis acid. And to it makes possible the description of the overall reaction of CO₂ absorption

CO₃⁻² + CO₂ + H₂O ⇌ 2HCO₃⁻

as a Lewis acid/base reaction, in which carbonate donates an electron pair to CO₂. I propound that, but meet resistance from people who think Lewis acidity is an exotic modern concept.

I've realised now that that isn't necessary, because the notion of buffering isn't tied to any notion of acidity. So I can set up buffer equations just involving those three major reagents.

pH Buffer

A buffer is normally described as an equilibrium

A + H ⇌ HA

where HA is a weak acid, A the conjugate base and H a proton. I have dropped the charge markings. The system operates as a buffer as long as substantial concentrations of both A and HA are present. I'll denote concentrations as h, a and ha.

The maths of the buffer system comes from the equations

h*a/ha = K(M)
ha + h = cH(H)
ha + a = cA(A)
Eq (M) is the Law of Mass Action. Eq (H) is mass balance of H, and (A) of A. As the reactions of the equilibrium proceed, the numbers on the right are invariant within the reactions. The equilibrium will shift if one of them changes from outside effect.

The equations are a mixture of multiplicative and linear, and in the buffer calculator I used a Newton-Raphson method to solve the coupled systems. But for one buffer there is a simple way which illustrates the buffering principle. The iteration for given K, cH and CA goes: starting with h=0
1 solve (H) and (A) for a and ha
2 solve (M) for h and repeat (if really necessary)

Under buffer conditions K is small, and so is H, and so changing h will not make much relative change to ha and a, and so in turn will not affect the next iteration of h that emerges from solving (M). The process converges quickly and ensures h stays small. The buffer is perturbed by changing cH or cA, either by adding reagents or by perturbing other equilibria in which reagents are involved. Eq (M) ensures that h not only remains small, but is fixed by the slowly changing ratios of the major species.

Here is a worked example. A litre of 1M A, 1M HA, pKa=8 (so pH=8).
Add 0.1M HCl, sufficient to reduce pH of water to 1.
Then, ignoring volume change:
ha=1.1 (eq H, total H) and ha+a=2 (eq A) so a=0.9.
Then from (M), h=1e-8*1.1/0.9=1.222e-8
On iteration, the corrections to (H) and (A) would be negligible. The pH has gone from 8 to 7.91

Now there is no mention of any kind of acidity in this math. The only requirement is that there is a ternary equilibrium in which one component H is in much lower concentration than the others. H could be anything So I didn't need to talk about Lewis acids (it helps understanding but not the buffer math).

Bjerrum plot

The classic way of graphing buffer relations is with a Bjerrum plot. This takes advantage of the fact that you can divide a and ha by cA, and eq (M) is not changed. Eq H would be, but you can let it go if h is specified as the x-axis variable. Then M is solved to show a/cA and ba/cA (which add to 1) as functions of h, or usually, -log10(h). Actually, Bjerrum plots are really only interesting for coupled equilibria. Here is a Wiki example:

Generalised buffer - sea water

Sea water buffering is complicated, in normal description, by the interaction of two pH buffers (numbers from Zeebe)
HCO₃⁻+H⁺ ⇌ CO₂ + H₂OK1: pKa=5.94
CO₃⁻²+H⁺ ⇌ HCO₃⁻K2: pKa=9.13

The pKa for a H,A,HA buffer is the pH at which ha=a. K1, K2 are the equilibrium constants, as in Eq (M). So it is a complicated calculation. But the two can be combined, eliminating the sparse component H⁺, as before

CO₃⁻² + CO₂ + H₂O ⇌ 2HCO₃⁻

Now we still have an essentially ternary equilibrium, since the concentration of water does not change. And [CO₂] is still small. It is essentially a buffer equation, but buffering [CO₂]. The equations now are, with A=CO₃⁻², HA=HCO₃⁻ and H=CO₂:

h*a/ah² = K(M')
ha + a + h = cC(C)
ha + 2*a = cE(E)

The additive equations are different; I've renamed them as (C) (total carbon, or dissolved inorganic carbon cC=DIC) and (E) (cE = total charge, or total alkalinity TA). K can be derived from the component buffers above, K=K2/K1, so -Log10(K) = 9.13-5.94 = 3.19

Summarising for the moment:
  • I have replaced two coupled acid/base buffers with a single equilibrium with buffering properties, eliminating H⁺.
  • The components are the main carbonate reagents, which we can solve for directly.
  • The additive equations conserve the measurement parameters DIC and TA.
  • CO₂ replaces H⁺ as the sparse variable, and also the measure of (Lewis) acidity.

Bjerrum plot for generalised buffer

This uses the same idea of choosing a x-axis variable, and using the equation that results from eliminating it from the additive equations as the constraint, scaling wrt its rhs. The x-axis here uses the scarce species H=CO₂, and the eq (E) for total alkalinity is suitable for normalising, since cE=TA does not change as h varies. So the new plot variables are
  • x = -log10(h/cE)
  • y = 2*a/cE
  • y'=1-y=ha/cE
Here is the plot, using standard concentrations a=260, ha=1770 μM, K=K2/K1=6.46e-04, so TA=2290 μM

For the simple pH buffer, the curves would be tanh functions; here they are similar but not symmetric. More acid solutions are to the left; the green line represents equilibrium h for those conditions; adding CO₂ does not change the normalising TA and moves the green line to the left.

Perturbing an equilibrium by forcing concentration

Again a natural iteration can be used for the equations, based on the small component. However, in the real OA problem, we don't add a finite amount of reagent, but force an new change in the buffered quantity [CO₂] by air change. Then the buffering effect works in reverse; a small change forces big changes elsewhere.

Suppose we have a pond of seawater, with standard concentrations a=260, ha=1770, h=[CO₂]=10 μM. Suppose the pCO₂ in air rises by fraction f. We don't actually need to know what pCO₂ is, just use Henry's law to say [CO₂] will increase in the same ratio. We can't use eq (C), because change in cC is unknown, but eq (E) says Δha = -Δa. Letting x be the fractional change in a, and m=2*a/ha=0.294, so the fractional change in ha is -m*x so from (M') we have,
(1+f)*(1+x)/(1-m*x)² = 1 (ratio change)
or f+x*(1+f+2*m) = (m*x)² (ratio change)

We could solve this as quadratic, but it is instructive to iterate, solving
x<- -="" br="" f-="" f="" m="" starting="" with="" x="2"> With f=0.1 (10%) the iterates are -0.07175, -0.07166737, -0.07166755

The first term is good enough. The key result is that a 10% change in atmospheric CO2 makes a 7% change, at equilibrium, with [CO₃⁻²], even though its concentration remains very small. Note that there is no reference to pH in this calculation. pH can be recovered from eq (M).

Repeating that main result; if m=[CO₃⁻²]/[HCO₃⁻] and the fractional change in gas phase pCO₂ is f, then the fractional change x in [CO₃⁻²] is given to very good approximation by
x = f/(1+f+2*m)
Estimates of m vary, but are usually around 0.1. So the fractional reduction in [CO₃⁻²] is comparable to the fractional increase in pCO₂.

Of course that is an equilibrium calculation, and the mixing time of the whole ocean is very long, so it could only apply to surface layers. It also omits the key question of CaCO₃ dissolution, which could restore [CO₃⁻²]. That dissolution is seen as the penalty, and this quantifies it.

Summarising again the virtues of this approach:
  • It eliminates H⁺ and deals with the reagents directly
  • The natural measures are the Dissolved Inorganic Carbon (DIC) and Total Alkalinity, both easily lab-measured and with data available
  • It gives a useful approximation to the natural forcing condition, which is change in pCO₂ in the air
  • The concept is that [CO₂] is buffered rather than pH. That leads directly to the consequence that trying to force a change in [CO₂] passes directly to a change in carbonate instead.

Wednesday, March 7, 2018

February global surface TempLS up 0.05 °C from January.

The TempLS mesh global anomaly (1961-90 base) rose from 0.603°C in January to 0.655°C in February. This is almost the same as the 0.054°C rise in the NCEP/NCAR index, while the satellite TLT indices fell by a similar amount.

The main warmth was in the Arctic and Siberia, Eastern USA, and also a band from Nigeria through to W India, bit warmest around the E Mediterranean. There was a band of cold in Canada below the Arctic extending into the US upper mid-west, and in Europe.

Because of the warmth in the Arctic, it is likely that indices will diverge according to the extent to which they represent it. TempLS grid, which is weaker there, showed a drop of about 0.04°C. As often, I would expect GISS to show a rise like TempLS mesh, while NOAA and HADCRUT may fall.

Here is the temperature map. As always, there is a more detailed active sphere map here.

Saturday, March 3, 2018

February NCEP/NCAR global anomaly up by 0.054°C from January

In the Moyhu NCEP/NCAR index, the monthly reanalysis anomaly average rose from 0.231°C in January to 0.285°C in February, 2018. The big dip in January continued in to the earlier part of February, then a considerable peak, and a modest dip and recovery at the end.

It was cold in the northern prairies and N Canada, but surprisingly, warm on average in E USA. Cold in Europe, extending through Morocco to Senegal. As much noted, very warm in the Arctic, and warm in a band from E Mediterranean to N India. Mixed in Antarctica, probably on average cool. Interactive map here.

I expect that Arctic-sensitive indices like GISS, Cowtan and Way, and TempLS mesh will show more warming than the others. Here is a temperature map looking down on the N Pole

Friday, February 16, 2018

GISS January global down 0.11°C from December.

GISS cooled, going from 0.89°C in December to 0.78°C in January (GISS report here). That is a smaller drop than TempLS mesh; I originally reported a 0.2°C fall, but later data changed that to a 0.16°C fall. GISS says that January 2018 was the fifth warmest in the record, and was cooler due to La Niña.
Update. I wrote this post based on the GISS report, as the data file was not posted for some time. It is now there, and I see that the December average has been adjusted up from 0.89&deg;C to 0.91&deg;C. That means the drop Dec-Jan is now 0.13&deg;C. This brings it close to the TempLS change of 0.16&deg;C. TempLS also incrased in December due to later data, so in both months GISS and TempLS now track well. 

The overall pattern was similar to that in TempLS. Cool in east N America and cold in far East Siberia. Very warm in west of Russia, and in the Arctic. A cool La Nina-ish plume, but warm in the Tasman sea and nearby land. The W US was warm, more so than TempLS showed. Also the W Russia hotspot extended well into central Europe.

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

Wednesday, February 7, 2018

January global surface tempLS down 0.2 °C from December.

TempLS mesh anomaly (1961-90 base) fell from 0.762°C in December to 0.565°C in January. This compares with the fall of 0.097°C in the NCEP/NCAR index, and a similar fall (0.16) in the RSS LT satellite index.
According to the reanalysis, the cause was a deep dip late in the month, which seems to be extending into February.

The main cool areas were central asia into Mongolia , and Eastern N America. Also Central Africa. Warm were NW Russia, extending into Europe, and N Canada/Alaska. Also a band right across temperate SH, but still very warm Tasman Sea and around.

Here is the temperature map:

Tuesday, February 6, 2018

Weirdness from Armstrong/Green and conservative media.

This was new to me when it popped up at WUWT. But apparently is has already been around for a week or so, at Fox News and The Australian. Economists Scott Armstrong and Kesten Green, who regard themselves (pompously) as authorities on forecasting, made a splash ten years ago when they made a challenge of a bet with Al Gore that their forecast of global temperature, based on no change, would be better over the next ten years than his. They even set up a website, to track his response, and presumably track the bet. And they got a good run in the conservative media at the time.

Gore never showed any interest - he just said that he doesn't bet. So it was empty noise. However, for some strange reason, there is now a volley of fantasy articles, attributing a bet to Gore (in which he had no say) and declaring him the loser. The terms of the bet are exceedingly arcane. Since they have to make up some warming forecast, they picked an "IPCC" forecast of 0.3°C warming for the decade.

The first thing to say is that the IPCC made no such forecast. They did, in the AR4 SPM that came out at abaout that time, say this:
For the next two decades, a warming of about 0.2°C per decade is projected for a range of SRES emission scenarios.
And it was for surface temperature, not the troposphere measure that Armstrong/Green decided on.

But that itself turns out oddly. They nominate UAH as a measure, which actually has a slightly higher trend over the period than surface measures. Here is the plot

And they are betting with zero trend (blue). The actual was more than double the "IPCC trend". They lose by a mile. But in the WUWT article, at least, they say the OLS trend for the period is 1.53°C/Century. But they prefer a measure they make up called Least Absolute Deviation (LAD).

Well, they would, wouldn't they, because they say that comes out to 1.14°C/Century, and on that basis they declare themselves the winner (since they have pinned Gore with the "IPCC" 3 C/century. Of course it is 2, not 3, so even on that basis they lose. But since they seem to have miscalculated the OLS trend by a factor of 3, I have no faith in their LAD calculation.

On the plot, I've marked a line with slope 1.14°C/century in green, and the Armstrong/Green zero forecast in blue. They all, as fitted lines should, pass through the mean of x and y. See if you think the "LAD" line (1.14) is a better fit. Or whether the no trend forecast is the winner.

Scott Armstrong is a professor of marketing. Kesten Green is a lecturer in Commerce. Neither seems to know much about what the IPCC actually says. And they seem pretty weak in statistics.

Saturday, February 3, 2018

January NCEP/NCAR global anomaly down by 0.097°C from December

In the Moyhu NCEP/NCAR index, the monthly reanalysis anomaly average dropped from 0.328°C in December to 0.231°C in January, 2018. There was a big dip late in the month; there are some signs that it is ending. The month was close to November and June, 2017, but a little lower than both. You have to go back to July 2015 (0.164°C) to find a colder month.

AS we have heard quite a lot, it was cold in eastern N America (but warm in W). Also central Asia and Sahara/Sahel. Warm in Arctic and a lot of Europe, and still warm sea around New Zealand. Cool in tropical E Pacific (ENSO).

Housekeeping post.

A couple of housekeeping issues. One is an apparent problem with Blogger. I have posted the January results for NCEP/NCAR, but they don't show on the actual blog page, or in the archive. The post does have a place on the web here">, but you can't get to it in the normal way, and it hasn't generated the usual RSS notifications. It may be that Blogger is working on this, because for some time I could see and edit the post on the dashboard where all posts are listed, but now it has disappeared.

I'm posting this partly as an experiment, to see if it suffers the same fate.
Update - it worked. I'll try reposting the earlier post.

The other happening, which I have been spending a bit of time on recently, is the HiREs SST page, and it's consequent movie page. This stopped updating at end 2017. End year glitches in my automated system are not uncommon, but this turned out to be at source. NOAA has reorganised its system, using NetCDF 4 and different directories. They also have a new data set which I'll look at. But anyway, the program is over five years old now, and a bit slow, so I tried to improve. That is never smooth, but I think it is OK now.

Friday, January 26, 2018

A new gallery of interactive graphics at Moyhu.

There was an old page, linked to right, on interactive graphics at Moyhu. I have replaced it with a new gallery, which is much more comprehensive. Maybe too comprehensive - I have tried to include every instance to end 2017. It is a tableau of images, and I have placed at the top what I think is a representative selection. These are marked with red borders. Each cell has a passive image, a date, a link which will take you to the original post or page containing the graphic, and a button imploring you to Try it!. This takes you to a rearranged version of the original post with the graphic at the head; it is an active version of what you see in the image.

The radio buttons on the left allow you to choose categories, generally based on the technology used. They are explained below the tableau, and I will expand on them here.

In this post, I want to review the overall progress of interactive graphics here. Interactive requires at least the use of JavaScript, so that pressing buttons, dragging with the mouse etc will modify what you see. This can be augmented with two main technologies - the drawing canvas, which was formally introduced with HTML 5 in 2014, but usable earlier, and WebGL, which is based on the old Silicon Graphics GL of about thirty years ago, which became OpenGL and is now built into browsers as WebGL.

It is important sometimes to remember that Javascript activity is embedded in the HTML scripts that a browser downloads, and is entirely implemented on the users machine. There is no Moyhu server support. This means all the data is downloaded too. There are some security restrictions on this privilege, which adds to the interest of Javascript programming. An underlying technology is the programming language R. I typically sort out the data for plotting or whatever at this level, and the output is a Javascript file often defining masses of data. Javasript itself does not have i/o; you have to express input as code.

Much of my experimenting with graphics has been motivated by a wish to present data plotted on a sphere, to avoid projection distortion. JS makes it possible to do this and allow the user to view the sphere from various directions.

I have recently revamped the Moyhu topic index, and some of the toipics give a more comprehensive list of links.

Javascript and interactivity

My first active graphic was part of a discussion on how to make spaghetti graphs more readable. My first idea was an animated GIF, which overlaid black outlines of each strand in sequence. But a reader TheFordPrefect recommended Javascript and sent me an example made by Dreamweaver.So I learnt some JS, and made a plot of proxy reconstructions here. There was a legend where you could roll the cursor over a name in the legend, and a black overlay of the strand would appear. This is the basic idea that I have set as a separate category - active viewers - described further below.

A common use of JS and buttons was simply to compress information. A lot of images could be accessed at one location in the page, with a choosing mechanism. Alternatively a huge number of links can be sorted into manageable pages with button clicks.

JS Globe

That set me up for the first presentation of a globe plot, as here. In R I made 2D projections from a number of viewpoints of a shaded plot of some variable, usually temperature. The viewpoints were usually from either the 8 corners of a cube containing the sphere, or the 6 face centres. There was a panel of squares you could click to switch views. A lot of my JS graphics involves locating a click point and responding in some way. Dragging is a variant of this.

Google Earth and KML/KMZ

This was rather a dead end, but I did quite a lot of things. KML is a control language for Google Earth. Here is a typical application. I haven't shown the graphics here because, well, they aren't really mine. GE is good for detailed location, which is relevant to individual stations, but not to temperature plots etc. I found that the control capabilities, based on folders were rather limited, so I switched to Google Maps, which offers JS control.

Google Maps

The general idea and working environment is described here. GM provides an app which allows you to embed a GM in your page, but gives ample facilities to control it with JS. Again the main use is for showing land stations, where the lat/lon are fairly precisely known. I typically select subsets of the stations colored according to some criterion. Clicking on them brings up information including the name and often links and history. The selection table is on the right, and can allow quite complex logic. Recent cases show the total in each color. There is, for example, a maintained page which is described here.

Active viewers

This is just a subset of JS-active graphics, in which a spaghetti plot is shown, with a large range of strands, usually proxies. More use of JS is made in that when a strand is marked, a table of information os shown, and also a marker shows where it is on a map. A typical example is here.

Trend viewers

This is another JS subset. A colorful triangle (prepared in R)is shown in which each dot represents the trend over some period of months. There is a coupled time series graph on the right, with two markers representing beginning and end of trend. You can choose a period either by clicking on the triangle or by moving the markers directly. For each chosen period, numerical data is displayed. Buttons allow you to choose the overall display period, the dataset (from one of many), and possibly a different kind of display which says something about the significance or confidence intervals. There is a maintained page here.


Normally with JS you have to load the data in advance, which is a nuisance if you want to accommodate a range of user wishes. XMLHTTPrequest is a workaround that lets you download JS files when asked by user. There are security restrictions. But it vastly increases the amount of data that can be supplied. It isn't itself graphics technology, but it enables some of my larger apps


HTML 5, when it came out, included a lot of new elements, but the one particularly useful to me was the canvas element. All the graphics described so far had to be pre-drawn using R and supplied as images. With the canvas, we can draw from numerical data, in response to user input. Further, there is a clunky but not bad capability for shading triangles in response to vertex values.

One liberation is that graphs don't any longer have to have a fixed range of x or y. The user can zoom or extend, if the numerical information is there. My first big use of this was in the climate plotter. This is still kept as a page, although the information update has been spotty. You can choose from a large number of annual sets of climate data. Combinations can be displayed and regressions (including polynomial) performed. Various kinds of arithmetic can be done, But most importantly, the axes are under user control. You can translate curves independently, stretch in the x or y directions (with axes adapting).

A similar application is to superimposing on an image. I rather frequently review the progress of Hansen's 1988 predictions, eg here in 2016. This makes a canvas image from his paper, and the user can choose various datasets to superimpose, and even vary offsets if desired.

Another liberation was in viewing Earth plots. No longer need there be fixed views pre-calculated. The canvas can show shading in response to arbitrary control (there is maths involved). An early version is here. The use of shading improved over time.

Drag plots

This is an extension, using HTML 5, of plotting with variable axes. You can translate just by dragging, or by dragging just behinds each axis, you can shrink or expand it. And there can be the usual selection facilities etc. I maintain such a graph for surface indices in the latest data page.


Most recent graphics has been done with WebGL, the origins of which are described above. WebGL is the staple of gaming, and so ample resources are provided. For fast-moving graphics on screen, it provides access to the GPU, for highly parallel operation. It is fully 3D, so keeps track of what is obscuring what. The shading is excellent. It has elaborate capabilities for lighting and perspective, but I don't use those much. And of course it is under full JS and mouse control. In my applications there is a fixed centre point about which everything can be revolved, and a fixed viewpoint at infinity.

A great thing about WebGL is that it deals in objects. In HTML5, you can't unravel a 2D canvas, and it is hard to selectively erase. But in WebGL you can just ask for an object to disappear, or move it, and you see what is underneath.

My first effort is here. But it got better. One that is still one of my favourites is the maintained high resolution SST page. At max resolution of 1/4°, that is a lot of triangles (2073600). But WebGL handles it fairly well, and it really can tell you more if you zoom. The app draws together a lot of technology, as interactive downloads are essential, and since that are about 25 years of data, a lot of it daily, just organising this is a stretch. Like all maintained pages, it downloads data and processes (in R) every night.

But the recent outpouring of WebGL graphics which dominates the gallery is due to the Moyhu WebGL facility. This hides all the parallel programming etc and just allows as input as numeric data. Usually a vector of nodes, linkages (for triangles etc) and values which will become shading. Mass production. A non-spherical example is the Lorenz butterfly..


This isn't a single technology; in fact I started out with animated GIFs. I tend to use it now where video compression is used, as with MPEG. I typically use FFmpeg with R to string together sequences of PNG or JPEG images. The classic example is a maintained page which is an offshoot of the HiRes SST page. It shows daily or 4-day sequences for regions like the ENSO Pacific plumes or the poles (where it is good for tracking sea ice). Another interesting experiment was the 2012 hurricane season, where I show the hurricanes moving against a SST background. In many cases it clearly shows the tracks of cooling.

An aspiration is to provide a 3D movie, so you can rotate a world as it goes through a temperature or whatever sequence. The problem is that you lose video compression, so it is hard to maintain speed. Here I went back to the JS globe idea above, using stored projections of 6-hour relative humidity plots. It's interesting, but hard work.

Another kind of animation is just zipping through WebGL plots. It's fast enough. Here is a movie display of the various spherical harmonics which I use a lot for Fourier-like representation on the sphere, with various controls. Fun version here.

Wednesday, January 24, 2018

Satellite temperatures are adjusted much more than surface.

I continually come across claims that surface temperatures should be ignored in favour of satellite troposphere temperatures, because the surface temperatures are adjusted. It's an odd argument to conduct, because while at least there is a recognised surface temperature reading that can be adjusted, satellite temperatures are the product of a long and complex calculation sequence, in the course of which many judgement calls are made. Here, for example, is Roy Spencer's (+Christy + Braswell) explanation of the changes that were made in going to UAH version 6. He describes the need for it thus:
One might ask, Why do the satellite data have to be adjusted at all? If we had satellite instruments that (1) had rock-stable calibration, (2) lasted for many decades without any channel failures, and (3) were carried on satellites whose orbits did not change over time, then the satellite data could be processed without adjustment. But none of these things are true.
After 25 years of producing the UAH datasets, the reasons for reprocessing are many. For example, years ago we could use certain AMSU-carrying satellites which minimized the effect of diurnal drift, which we did not explicitly correct for. That is no longer possible, and an explicit correction for diurnal drift is now necessary. The correction for diurnal drift is difficult to do well, and we have been committed to it being empirically–based, partly to provide an alternative to the RSS satellite dataset which uses a climate model for the diurnal drift adjustment.
So instead of continually making small adjustments, as in the surface dataset, they produce new versions in which these decisions are revisited and often radically revised. The changes are much larger in overall effect than the changes to individual surface station averages.

Two years ago, I wrote a post about the changes that happened when Version 5.6 of the UAH index went to version 6. This decreased trends a lot, and so was popular with contrarians. I was prompted to write by Roy Spencer's claim:
"Of course, everyone has their opinions regarding how good the thermometer temperature trends are, with periodic adjustments that almost always make the present warmer or the past colder."
So I compared the change in TLT (lower troposphere) going from V5.6 to 6.0, to the cumulative effect of changes in GISS from archived time series of 2005 and 2011, with the then current 2015 GISS. GISS was far more stable than UAH, even though the period of changes was much longer.

Meanwhile, RSS also updated their troposphere data, going from V 3.3 to V4. RSS had been a favourite of contrarians, because it had a much lower trend than UAH. Roy spencer noted this, saying:
"But, until the discrepancy [in trend with UAH higher]] is resolved to everyone’s satisfaction, those of you who REALLY REALLY need the global temperature record to show as little warming as possible might want to consider jumping ship, and switch from the UAH to RSS dataset."
They needed little persuasion. Lord Monckton wrote a monthly series at WUWT about the length of the "Pause", which he defined as the maximal period of zero gradient of RSS TLT, starting about 1997. He scorned UAH then, as it was similar to the surface data. But RSS V4 turned that around too, showing much greater trends historically, and severely damaging the "Pause". I commented on some of this here, before any of the new versions.

Lord Monckton did not like it. His tamper tantrum is here. Any change which increases the trend is "tampering". Why going from V3.3 to V4 is tampering, but going from 3.2 to 3.3 or the earlier steps is not, was never explained.

Anyway, I thought it would be worth updating my graphs of Dec 2015 to include the changes to RSS. In fact, the two indices neatly changes places, so that RSS V4 is close to UAH V5.6, and UAH V6 is close to RSS V3.3. So in both cases the change is large.

An amusing sideshow of the more satisfactory UAH V6 is that surface datasets were being accused of fraud for differing from it - eg NOAA’s Fake SST’s Not Supported By Atmospheric Data. But the reviled discrepancies were not there with V5.6, which was far closer to the surface data than to V6. So was V5.6 also "fake"?

Anyway, here are the plots. I'm using the same old versions of GISS as in the previous post and sourced there. They can be got at the Wayback Machine. I convert everything to the same anomaly base, which this time is 1979-2008. I chose that because there isn't quite a 30 year span common to GISS2005 and the sat sets, but this reduces the gap to three years. So I set the other sets to zero average on this span; then I make the GISS2005 match the rebased GISS_current on its range.

First, as before, I just plot the time series. I use reddish colors for RSS versions, bluish for UAH, and greenish for GISS. Because the curves are tangled, there are four different color views of the same plot, which you can access with the buttons below. The text and content are the same for each, but transparency is used so that only one group stands out. Here is the plot:

This plot is good for a general appreciation of the deviations. The GISS variants bunch together, and the upper sat variants, UAH V5,6 and RSS V4.0, tend to follow them. The other pairing, RSS V3.3 and UAH V6, is the outlier, deviating rather markedly below from about 2008 onwards.

The values relative to each other are easier to see if they are expressed as differences from a common value, and for this I chose current GISS. In principle any value will do, but because the satellites respond with big spikes for El Niño, this would be inverted into a negative spike for GISS, which would be confusing. So I'm using the same colors, and choice of variants - GISS shows as the zero line:

Next I plot the difference from one version to the next - ie the "adjustment". In each case, it is new minus old. Again you can use the buttons to cycle through different colors.

This shows most clearly what happened in the recent changes. The trend of UAH went way down, and the trend of RSS went way up. These changes dwarf the minor and fairly trend-free changes to GISS. Interestingly, especially for RSS, most of the change happens post-2000.

Of course, GISS has more changes going further back. But satellites do not have an advantage there. They have no data at all.

Tuesday, January 23, 2018

Prospects for 2018.

Each year now when results for the previous year are in, I post some graphs (2017 here), and invite discussion about the coming year, which can be maintained on that thread. Reader Uli follows the prospects for GISS; readers JCH and WHUT remind us about ocean periodicities, and there are many other interests. I don't have strong prognoses myself; I just expect it to get warmer, with variations.

I think 2017 predictions worked out fairly well, mainly because the chief unexpected event, the strong warmth in Feb/March, came early. It created some possibility that 2017 might exceed 2016, but by August that was starting to look unlikely. That left the question of whether it would beat 2015, and that was close in most indices, with those that gave proper weighting to the polar temperatures putting 2017 ahead.

On the prospects for ENSO, Australia's BoM expects a weak La Niña in the short term. The NOAA has been silenced by the shutdown, but the IRI forecasts tend to see this going away fairly soon, with a fair chance of El Niño conditions later in the year.

For the moment, January has already been through two peaks and two dips, but overall, not much different to the last nine months.

So I'll leave the thread there open for comments through the year. Thanks, Uli and all.

Friday, January 19, 2018

Graphs of 2017 global temperatures among record years for major indices

A few days ago, I posted some graphs in an updated style which shows 2017, as seen by TempLS mesh in its place among records years (2017 came second) in a progressive record style. I also showed a detailed graph of the sequence of months from 2014 to 2017, showing how the warming introduced by the El Niño seems to be lasting. I said I would do a similar set of plots for the major indices when they appeared, as I have done in previous years. By now NOAA, HADCRUT and GISS have reported, as well as the satellite indices. So here is the set of progressive record plots. We have so far:
  • GISSlo - Gistemp land/ocean
  • HADCRUT 4 land/ocean
  • NOAAlo - NOAA land/ocean
  • UAH V6.0 - lower troposphere (TLT satellite)
  • RSS V4.0 - lower troposphere (TLT satellite)
  • CRUTEM 4 - land only
  • TempLS mesh
I'll add more as they arrive. You can find more information about the indices, with source links, here. The Glossary may help too. You can flick through the 7 images using the buttons below the plot.

GISS and TempLS had 2017 in second place, as did RSS V4.0. HADCRUT, CRUTEM and NOAAlo put it behind 2015 in third place. UAH V6 had things in a very different order, with 1988 in second place, and 2017 a distant third. The grouping of the surface indices is commonly observed. TempLS mesh and GISS interpolate, giving more (and IMO cdue) weight to polar regions. NOAA and HADCRUT do so much less. So insofar as the warmth of 2017 was accentuated at the poles, the less interpolated indices tend to miss that.

Here is the set of monthly averages for each of those indices, with as before the annual averages shown as horizontal lines in the appropriate color. Almost all months of 2017 were well above the 2014 average, even though 2014 was a record year in its time.

GISS December global up 0.02°C; 2017 was second warmest.

GISS warmed slightly, going from 0.87°C in November to 0.89°C in December (GISS report here). That is very similar to TempLS mesh; I originally reported no change, but later data pushed that up to a 0.04°C rise. For GISS, that makes 2017 the second warmest year in their record; behind 2016 but ahead of 2015. Their report, with the annual summary too, is here. I showed some aspects of 2017 annual in context here, and I'll do that for GISS and other indices in an upcoming post.

The overall pattern was similar to that in TempLS. Cold in east N America and Mediterranean and far East Siberia. Very warm in most of Russia, and in the Arctic. A cool La Nina-ish plume, but warm in the Tasman sea.

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

Wednesday, January 10, 2018

Review of 2017, heat records, and recent warm years.

Yesterday I posted the December global anomaly (base 1961-90) results for TempLS mesh, and noted that it made 2017 the second warmest year, after 2016. I'd like to put that in a bit more context. For the last three years (eg here) I have posted a progressive plot showing in steps the advance of the hottest year to date. Since 2014, 2015 and 2016 were each the hottest years to date, there was something new to show each year, and the plot showed the rapidity of those rises. This year, with 2017 in second place, it doesn't add new information to that style of plot. So I tried a way of adding information. I superimposed on the steps plot a column plot of each year's temperature. This measn that you can follow the max outline, or focus on the columns, which also show how far the years following a record were cooler. It emphasises the warmth of 2017 relative to earlier years. Here is the plot:

The legend shows the color codes for the record years. I'll probably make an active plot of all the indices when they become available. But I was also curious about how 2017 came to be warmer than the near Niño year of 2015. So I drew a column plot by month of the last four years, shown by color
I've also marked each year's average in the appropriate colour. 2017 is almost a mirror image of 2015, and the main contribution to its warmth came from the first three months, a somewhat separate peak from the El Niño. But what is clear is that the apparent level of later 2016 and 2017 is a good deal higher than 2014, a record year in its day. Even the coolest month of 2016/7 (June 17) was at about the 2014 average.

In my previous post, I reported December 2017 as virtually unchanged from November. Further data has made it a little warmer. In other news, the Australia BoM 2017 climate statement is out, and here 2017 was the third warmest year, after 2013 and 2005.

Tuesday, January 9, 2018

December global surface temperature unchanged; 2017 was second warmest year.

TempLS mesh anomaly (1961-90 base) was virtually unchanged, from 0.716°C in November to 0.721°C in December. This compares with the rise of 0.075°C in the NCEP/NCAR index, and a similar rise (0.05) in the UAH LT satellite index.

The TempLS average for 2017 was thus 0.757°C, which puts it behind 2016 (0.836°C), and ahead of 2015 (0.729°C), and so was the second warmest year in the record. I expect this will be a common finding, although 2015 is close. I'll post a graph showing the history of records.

The breakdown is interesting. The main cooling effect came from SST, well down on November. The balancing rises came from the Arctic and Siberia. Since TempLS, like GISS, is sensitive to Arctic temperature, indices like NOAA/HADCRUT may well show a fall. Otherwise the map shows those effects, along with much-discussed cold around the Great Lakes region and also W Sahara.

Here is the temperature map:

Thursday, January 4, 2018

December NCEP/NCAR global anomaly up 0.075°C from November

In the Moyhu NCEP/NCAR index, the monthly reanalysis anomaly average rose from 0.253°C in November to 0.328°C in December, 2017, making it a mid-range month for 2017. The temperature did not oscillate as much as in some recent months.

The main cool spots were Canada and E Siberia, NW Africa (Algeria) and Antarctica. East Europe and NW Russia were warm, and also Alaska and a band through the Rockies, S Calif. There was a notable warm spot in the seas around New Zealand.

The annual averfage for 2017 was 0.376°C. This puts it behind 2016 (0.531) but ahead of 2015 (0.330) and 2014 (0.190).