Skip to content

Instantly share code, notes, and snippets.

@kenwebb
Last active October 1, 2015 23:18
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save kenwebb/2113518 to your computer and use it in GitHub Desktop.
Save kenwebb/2113518 to your computer and use it in GitHub Desktop.
How much extra energy are we adding to the earth system?
<?xml version="1.0" encoding="UTF-8"?>
<!--Xholon Workbook http://www.primordion.com/Xholon/wb/ (C) Ken Webb Wed Oct 30 2013 10:53:45 GMT-0400 (EDT)-->
<XholonWorkbook>
<Notes><![CDATA[
Xholon
------
Title: How much extra energy are we adding to the earth system?
Description: how much energy are we currently adding to the earth system due to all those greenhouse gases we’ve added to the atmosphere?
Url: http://www.easterbrook.ca/steve/?p=2814
InternalName:
YoutubeId:
Keywords:
My Notes
--------
Steve Easterbrook (Department of Computer Science, University of Toronto, Canada) writes the Serendipity blog, focusing on "What has Software Engineering got to do with Climate Change?". For one of his courses he calculated how much energy has been added to the earth system from anthropogenic sources. In this workbook, I'll try to reproduce his calculations.
Steve gets his basic numbers from::
http://www.ipcc.ch/publications_and_data/ar4/syr/en/figure-2-4.html
supplemented by::
http://en.wikipedia.org/wiki/Earth
http://en.wikipedia.org/wiki/Orders_of_magnitude_(power)
The IPCC report and figure are a bit confusing. It's not stated anywhere explicitly what to do with the Natural Solar irradiance value, which they provide as a positive number. It seems I have to subtract this from the Anthropogenic values to derive the Total net anthropogenic.
The result I get is::
Total net anthropogenic radiative forcing: 1.6W/m^2
To run this workbook inside your browser page::
Press the Run button above.
Press the Step button in the overlay.
Some of my own thoughts on this
-------------------------------
The sum of the man-made radiative forcings is about 1.6 W/m^2, while the Sun provides about 1361 W/m^2 (http://en.wikipedia.org/wiki/Solar_constant). At first glance it would seem that the 1.6 is an insignificant amount compared to 1361. But it reminds me of what Charles Dickens wrote in David Copperfield::
Annual income twenty pounds, annual expenditure nineteen nineteen and six, result happiness. Annual income twenty pounds, annual expenditure twenty pounds ought and six, result misery.
A possible paraphrase::
Annual energy inflow 1361 Watts per square meter, annual outflow 1361 Watts per square meter, result happiness. Annual energy inflow 1362.6 Watts per square meter, annual outflow 1361 Watts per square meter, result misery.
The extra 1.6 causes an imbalance. This suggests that in some way balancing the Earth's energy budget is similar to balancing a person's or nation's financial budget. I'll try to follow up this thought in a later workbook.
]]></Notes>
<script implName="lang:python:inline:"><![CDATA[
]]></script>
<script implName="lang:javascript:inline:"><![CDATA[
]]></script>
<_-.XholonClass>
<!-- domain objects -->
<PhysicalSystem/>
<RadiativeForcing superClass="Quantity">
<TotalRadiativeForcing/>
</RadiativeForcing>
<RadiativeForcings>
<AnthropogenicForcings/>
<NaturalForcings/>
</RadiativeForcings>
</_-.XholonClass>
<xholonClassDetails>
</xholonClassDetails>
<PhysicalSystem>
<TotalRadiativeForcing>0.0 W/m^2</TotalRadiativeForcing>
<AnthropogenicForcings>
<RadiativeForcing roleName="Long-lived greenhouse gases, CO2">1.66 W/m^2</RadiativeForcing>
<RadiativeForcing roleName="Long-lived greenhouse gases, CH4">0.48 W/m^2</RadiativeForcing>
<RadiativeForcing roleName="Long-lived greenhouse gases, N2O">0.16 W/m^2</RadiativeForcing>
<RadiativeForcing roleName="Long-lived greenhouse gases, Halocarbons">0.34 W/m^2</RadiativeForcing>
<RadiativeForcing roleName="Ozone, Stratospheric">-0.05 W/m^2</RadiativeForcing>
<RadiativeForcing roleName="Ozone, Tropospheric">0.35 W/m^2</RadiativeForcing>
<RadiativeForcing roleName="Stratospheric water vapour from CH4">0.07 W/m^2</RadiativeForcing>
<RadiativeForcing roleName="Surface albedo, Land use">-0.2 W/m^2</RadiativeForcing>
<RadiativeForcing roleName="Surface albedo, Black carbon on snow">0.1 W/m^2</RadiativeForcing>
<RadiativeForcing roleName="Total Aerosol, Direct effect">-0.5 W/m^2</RadiativeForcing>
<RadiativeForcing roleName="Total Aerosol, Cloud albedo effect">-0.7 W/m^2</RadiativeForcing>
<RadiativeForcing roleName="Linear contrails">0.01 W/m^2</RadiativeForcing>
</AnthropogenicForcings>
<NaturalForcings>
<!-- This has to be subtracted rather than added, so I'm making it a negative number. -->
<RadiativeForcing roleName="Solar irradiance">-0.12 W/m^2</RadiativeForcing>
</NaturalForcings>
</PhysicalSystem>
<Blockbehavior implName="lang:python:inline:"><![CDATA[
]]></Blockbehavior>
<Blockbehavior implName="lang:javascript:inline:"><![CDATA[
]]></Blockbehavior>
<TotalRadiativeForcingbehavior implName="lang:webEditionjs:inline:"><![CDATA[
// This script will be automatically inserted as a child of the TotalRadiativeForcing node.
// The code is written in JavaScript, and the jQuery JavaScript library.
var totalRf = 0.0;
var rfNodes = this.parent().siblings().children('.RadiativeForcing');
rfNodes.each( function() {
println($(this).attr('val') + " " + $(this).attr('unit'));
totalRf = totalRf + ($(this).attr('val') - 0.0);
});
println("Total net anthropogenic radiative forcing: " + totalRf.toPrecision(2) + " W/m^2");
var svg = $($('div#mySVGDiv > object')[0].contentDocument.getElementsByTagNameNS(svgns, 'svg')[0]);
var textSVG = svg.children().children('text');
textSVG.text(totalRf.toPrecision(2));
]]></TotalRadiativeForcingbehavior>
<TotalRadiativeForcingbehavior implName="org.primordion.xholon.base.Behavior_gwtjs"><![CDATA[
// This script will be automatically inserted as a child of the TotalRadiativeForcing node.
// The code is written in JavaScript, and the Xholon GWT API.
var trf, totalRf;
var beh = {
act: function() {
trf = this.cnode.parent();
totalRf = 0.0;
this.sumForcings(trf.next().first());
this.sumForcings(trf.next().next().first());
trf.val(totalRf);
trf.println("Total net anthropogenic radiative forcing: " + totalRf.toPrecision(2) + " W/m^2");
// SVG - this is a test of several ways to update the SVG
if ($wnd.Snap) {
// update SVG using Snap.svg
$wnd.Snap("#xhsvg svg text").node.textContent = totalRf.toPrecision(2);
}
else if ($wnd.d3) {
// update SVG using d3
$wnd.d3.select("#xhsvg svg text").node().textContent = totalRf.toPrecision(2);
}
else {
// update SVG using DOM attributes and methods
var svg = $doc.getElementById("xhsvg").firstElementChild.firstElementChild;
var text = svg.firstElementChild.firstElementChild.nextElementSibling.nextElementSibling;
text.textContent = totalRf.toPrecision(2);
}
},
sumForcings: function(node) {
while (node != null) {
trf.println(node.val() + " " + node.attr("unit"));
totalRf = totalRf + node.val();
node = node.next();
}
}
}
]]></TotalRadiativeForcingbehavior>
<Blockbehavior implName="lang:bsh:inline:"><![CDATA[
]]></Blockbehavior>
<Blockbehavior implName="lang:jruby:inline:"><![CDATA[
]]></Blockbehavior>
<Blockbehavior implName="lang:groovy:inline:"><![CDATA[
]]></Blockbehavior>
<SvgClient><Attribute_String roleName="svgUri"><![CDATA[data:image/svg+xml,
<svg width="100" height="50" xmlns="http://www.w3.org/2000/svg">
<g>
<title>TotalRadiativeForcing</title>
<rect id="PhysicalSystem/TotalRadiativeForcing" fill="#98FB98" height="50" width="50" x="25" y="0"/>
<text x="35" y="30">?</text>
</g>
</svg>
]]></Attribute_String><Attribute_String roleName="setup">${MODELNAME_DEFAULT},${SVGURI_DEFAULT}</Attribute_String></SvgClient>
</XholonWorkbook>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment