Big Changes in Ocean Salinity Intensifying Water Cycle
<?xml version="1.0" encoding="UTF-8"?>
<!--Xholon Workbook http://www.primordion.com/Xholon/wb/ (C) Ken Webb Sat Apr 28 2012 09:24:49 GMT-0400 (EDT)-->
<XholonWorkbook>
<Notes><![CDATA[
Xholon
------
Title: Big Changes in Ocean Salinity Intensifying Water Cycle
Description:
Url: http://www.motherjones.com/blue-marble/2012/04/warming-climate-driving-huge-salinity-and-water-cycle-changes-ocean
InternalName:
YoutubeId:
Keywords:
My Notes
--------
How to run the app that's part of this Xholon workbook ::
Click the Run button above.
Click the Step button in the overlay.
The code checks the numbers in the graphic from the Science paper, and shows the results.
The Reservoir percentages check out OK.
Julia Whitty, the environmental correspondent for Mother Jones, reports on a paper just published in Science magazine. Activity in the global water cycle increased by 4 percent between 1950 and 2000, as a result of a warming atmosphere.
Paul J. Durack, Susan E. Wijffels and Richard J. Matear are the authors of the Science paper. The abstract is at ::
http://www.sciencemag.org/content/336/6080/455.abstract
In this workbook I briefly explore the global water cycle, using the graphic that appeared in the Science paper and is included in the Mother Jones summary. For more details on the paper, refer to the Mother Jones article. All of the code for this workbook is in the various editors on this page, and can be edited.
It's not clear how the value for the Rivers flux fits in with the other numbers. Rivers move water from the Land to the Oceans. The diagram does not include movements (flux) of water between Ice and Ocean, and between Ice and Land. Glaciers and icecaps melt, and they also accumulate new ice and snow.
The paper emphasizes the importance of rainfall and evaporation as the major components of the global water cycle. At any moment in time, only 0.001% of the Earth's water is contained within the Atmosphere, as water vapour, sometimes visible as clouds. But, on average, every second about 2.7 million cubic meters of water evaporate from the Land, and 13.0 cubic meters from the Oceans. In the same average second, some 3.5 million cubic meters of water fall to the Land as rain and snow, while 12.2 million cubic meters precipitate over the Oceans.
What percentage of the total water in the Oceans, Land and Ice cycles through the Atmosphere every year, as part of the global water cycle? There are 365 * 24 * 60 * 60 = 31536000.0 seconds in one year.
The Wikipedia article on the water cycle states that "Total annual evapotranspiration amounts to approximately 505,000 km3 (121,000 cu mi) of water, 434,000 km3 (104,000 cu mi) of which evaporates from the oceans." ::
http://en.wikipedia.org/wiki/Water_cycle
The quantity my app calculates is 495 * 1000km^3 = 495,000 km3 . This is a small fraction of the amount in the Oceans, Land and Ice reservoirs, but much more than the 12.7 1000km^3 resident in the Atmosphere at any given time.
The Wikipedia article includes a table of average reservoir residence times. A residence time for a reservoir "is a measure of the average age of the water in that reservoir". The residence time for water in the atmosphere is 9 days.
]]></Notes>
<script implName="lang:python:inline:"><![CDATA[
print "The global water cycle includes reservoirs and fluxes."
]]></script>
<script implName="lang:javascript:inline:"><![CDATA[
print("The oceans, land and ice are the main water reservoirs on the Earth.\n");
print("Precipitation and evaporation are the main fluxes.\n");
]]></script>
<_-.XholonClass>
<!-- types of domain objects -->
<PhysicalSystem/>
<GlobalWaterCycle/>
<Reservoir/> <!-- a volume of water, in units of 1000 cubic kilometers -->
<Flux/> <!-- movement of water, in units of Sverdrup (Sv) = million cubic meters per second -->
<!-- collections -->
<Reservoirs/>
<Fluxes/>
<SecondsPerYear/>
<CubicMetersPerCubicKilometer/>
</_-.XholonClass>
<xholonClassDetails>
</xholonClassDetails>
<PhysicalSystem>
<GlobalWaterCycle>
<Reservoirs>
<Reservoir roleName="Land">15662 1000km^3</Reservoir>
<Reservoir roleName="Oceans">1335040 1000km^3</Reservoir>
<Reservoir roleName="Ice">25540 1000km^3</Reservoir>
<Reservoir roleName="Atmosphere">12.7 1000km^3</Reservoir>
</Reservoirs>
<Fluxes>
<!-- these values are approximations -->
<Flux roleName="LndAtm_ev">2.7 Sv</Flux> <!-- evaporation from the Land to the Atmosphere -->
<Flux roleName="AtmLnd_pr">3.5 Sv</Flux> <!-- precipitation from the Atmosphere to the Land -->
<Flux roleName="OcnAtm_ev">13.0 Sv</Flux> <!-- evaporation from the Ocean to the Atmosphere ±1.3 -->
<Flux roleName="AtmOcn_pr">12.2 Sv</Flux> <!-- precipitation from the Atmosphere to the Ocean ±1.2 -->
<Flux roleName="LndOcn_rv">1.25 Sv</Flux> <!-- rivers ±0.1 -->
</Fluxes>
</GlobalWaterCycle>
<SecondsPerYear>31536000.0</SecondsPerYear> <!-- 365*24*60*60 -->
<CubicMetersPerCubicKilometer>1e9</CubicMetersPerCubicKilometer> <!-- 1000*1000*1000 = 10^9 -->
<Flux2ReservoirMultiplier>1e-6</Flux2ReservoirMultiplier> <!-- million cubic meters / 1000 cubic kilometers = 1e6 / (1e3 * 1e9) -->
</PhysicalSystem>
<Blockbehavior implName="lang:python:inline:"><![CDATA[
]]></Blockbehavior>
<Blockbehavior implName="lang:javascript:inline:"><![CDATA[
]]></Blockbehavior>
<PhysicalSystembehavior implName="lang:webEditionjs:inline:"><![CDATA[
function postConfigure() {
$("textarea#btstrp_console").css("font-size", "12px");
$("textarea#btstrp_console").attr("rows", "5");
$("textarea#btstrp_console").attr("cols", "50");
}
]]></PhysicalSystembehavior>
<Reservoirsbehavior implName="lang:webEditionjs:inline:"><![CDATA[
function postConfigure() {
// store the total volume of all reservoirs, so each reservoir can then report its percentage
var total = 0.0;
this.siblings(".Reservoir").each( function() {
total += $(this).attr("val") - 0;
});
this.parent().attr("val", total);
this.parent().attr("unit", "1000km^3");
print("\nTotal volume of all reservoirs (1000km^3): " + this.parent().attr("val") + "\n");
}
]]></Reservoirsbehavior>
<Reservoirbehavior implName="lang:webEditionjs:inline:"><![CDATA[
function act() {
// double check the percentages by printing them out
if (this.application('getTimeStep') == 0) {
var pct = this.parent().attr("val") / this.parent().parent().attr("val") * 100;
if (pct < 1.0) {
pct = pct.toFixed(3);
}
else {
pct = pct.toFixed();
}
print("\n" + pct + "% of the Earth's water is in the " + this.parent().attr("roleName") + ".");
// What percentage of the total water in the Oceans, Land and Ice cycles through the Atmosphere every year?
if (this.parent().attr("roleName") == "Atmosphere") {
// get the number of seconds per year
var secondsPerYear = this.closest(".PhysicalSystem").children(".SecondsPerYear").attr("val");
var flux2ReservoirMultiplier = this.closest(".PhysicalSystem").children(".Flux2ReservoirMultiplier").attr("val");
// calculate the total evaporation per second; evaporation and respiration balance each other so no need to calculate respiration
var totalEvPerSecond = 0.0;
$(".Fluxes > .Flux[roleName$='_ev']", this.closest(".GlobalWaterCycle")).each( function() {
totalEvPerSecond += $(this).attr("val") - 0;
});
var totalEvPerYear = totalEvPerSecond * secondsPerYear;
var totalEvAsReservoir = totalEvPerYear * flux2ReservoirMultiplier;
print("\n\nTotal evaporation per year (1000km^3): " + totalEvAsReservoir.toFixed());
}
}
}
]]></Reservoirbehavior>
<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>Global Water Cycle</title>
<rect id="PhysicalSystem/GlobalWaterCycle" fill="#98FB98" height="50" width="50" x="25" y="0"/>
</g>
</svg>
]]></Attribute_String><Attribute_String roleName="setup">${MODELNAME_DEFAULT},${SVGURI_DEFAULT}</Attribute_String></SvgClient>
</XholonWorkbook>