Troy's Scratchpad

September 15, 2011

Ocean Heat Content of Different Layers

Filed under: Uncategorized — troyca @ 7:46 am

As I’m looking more into the Dessler 2011 and the disagreement with Dr. Spencer’s numbers, it’s clear that I’ll need to take a look at the ocean data.  This post should just be a reference that I can link back to.  Climate Explorer only seems to have OHC available for the entire 0-700m, but I’ll need it at different levels, so I whipped up some code that performs the global averaging at each level.  Originally I tried to do this in R, but ultimately I went to Java since it seemed easier, likely because I’m more familiar with the language.  The Java code (it’s pretty ugly), resulting temperature anomaly averages, and R script for the charts are available here.  The “raw” data I use is available from NOAA’s NODC and is the tar ball for all Analyzed Anomalies.

To get the average temperature down to a particular depth, you simply need to perform a weighted average of all layer temperatures (as retrieved from my file)  you are interested in, using the volume weights included in the file.  To do a quick sanity check, I used the full 0-700m temperature and converted it Joules, using a simple calculation for both the total volume (.7 * surface area of earth * 700 meter) and specific heat of salt water (3.99 J/g/K, even though technically this will vary slightly with salinity and temperature).


The resulting plot matches up pretty well with the NOAA graph, and I also compared it against the the Climate Explorer data (which is in GJ/(Wm^2)), getting an r^2 value of around .998 (although mine showed about l.08 for the scaling factor as I recall, which is probably the result of slightly different values for the unit conversions?).  Nonetheless, it should be close enough to answer the lingering issues, provided the 0-100m depths close enough as well.

Anyhow, below are the plots of HadCRUT anomalies, along with two different ocean depths:


The 0-700m anomaly has been scaled so as to show its variations along with the others.  You’ll notice that while the 0-100m fluctuations generally match up well with those of the HadCRUT surface temperatures, the 0-700m has very little relationship (at least at lag 0).  The corresponding regression values for 0-100m vs HadCRUT (r^2 = 0.61) and 0-700m vs HadCRUT (r^2=0.05) attest to this as well.  I would ask that you keep this in mind for my follow-up post.  Those of you familiar with the discrepancies between Dessler and Spencer’s number might see where I’m going with this.


  1. […] Clearly, much depends on the value chosen for C, the heat capacity of the mixed layer.  This is proportional to the depth (since we’re adding more total mass the deeper we include), and so the depth chosen for the mixed layer is crucial.  Since we want to know to what degree surface temperatures are “forced” by energy fluxes from the deeper ocean layers, we need to know down to what depth the ocean temperatures are directly tied to the surface temperatures.  To determine this, I simply find the correlation between the sea surface temperature (Reynolds SST) and the ocean temperature at each depth (calculated in my last post). […]

    Pingback by Thoughts on Dessler 2011 « Troy's Scratchpad — September 16, 2011 @ 11:27 am

    • Really nice to find this resource. But I am confused as to the meaning of the “volume weights” which I have from your NOAA_ocean_temps_troy.txt file. Can you say how they are derived?

      Comment by peter2108 — January 3, 2012 @ 6:35 am

      • Yes, it is calculated from the height of each layer (so, for example, for the measurements at 30 meters it would span from the mid-point between the 20 and 30 meter measurements to the midpoint between 30 m and 50 m, or 40-25 = 15 m) TIMES the area of each layer (basically, the number of grid-points with non-blanks for that layer, weighted based on their area. This area shrinks as we go deeper due to the sea floor).

        The volume weights are to create the weighted average of the ocean temperature. Hope that helps!

        Comment by troyca — January 3, 2012 @ 7:44 am

      • Thanks Troy

        Comment by peter2108 — January 3, 2012 @ 8:34 am

  2. […] recently I had been doing my own OHC calculations from the NOAA/NODC data, I decided I would register for an account at PCMDI, download the gridded […]

    Pingback by GISS-ER and Ocean Heat Content « Troy's Scratchpad — October 6, 2011 @ 1:35 pm

  3. Impressive replication of the NOAA ocean heat content. I would be interested in your take on the heat content of layers 700-2000m depth and the CI associated with that. Is the heat really hiding in the deep ocean?

    Comment by Niels A Nielsen — February 14, 2012 @ 12:03 pm

    • Niels –

      Hmmm, I don’t think I could give any useful information related to the CI of the 700-2000m layers. My replication of the NOAA ocean heat content was was from gridded ocean temperature anomalies by layer, which were calculated for Levitus 2009 (the same as the NOAA OHC chart), so it’s not surprising that I would get a similar chart, but I haven’t worked with any of the raw float measurements or anything like that.

      There seem to be significantly more ARGO measurements in that 700m-2000m layer in recent years, so there could be something there. I am curious about the implications if we find that the 0-700m heat uptake is a poor proxy for total ocean heat uptake, as would seem to be the case in recent years (historically I think ~70% of the uptake was assumed to be in the Upper Ocean), since it may suggest greater uncertainty surrounding the past heat uptake (perhaps with the upper 700m rising faster than below), and the coverage below 1000m was extremely poor in the past.

      Comment by troyca — February 15, 2012 @ 11:52 am

RSS feed for comments on this post. TrackBack URI

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

Blog at

%d bloggers like this: