<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Biospherica &#187; ecosystem model</title>
	<atom:link href="http://joewheatley.net/category/ecosystem-model/feed/" rel="self" type="application/rss+xml" />
	<link>http://joewheatley.net</link>
	<description>Earth Vegetation</description>
	<lastBuildDate>Thu, 29 Jul 2010 15:16:55 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Large-scale vegetation-rainfall correlations in Africa</title>
		<link>http://joewheatley.net/response-of-african-vegetation-to-drought/</link>
		<comments>http://joewheatley.net/response-of-african-vegetation-to-drought/#comments</comments>
		<pubDate>Wed, 12 May 2010 16:35:59 +0000</pubDate>
		<dc:creator>joe</dc:creator>
				<category><![CDATA[Climate]]></category>
		<category><![CDATA[ecosystem model]]></category>
		<category><![CDATA[Africa]]></category>
		<category><![CDATA[Drought]]></category>
		<category><![CDATA[NDVI]]></category>

		<guid isPermaLink="false">http://joewheatley.net/?p=2012</guid>
		<description><![CDATA[Weather and climatic variability affect vegetation on continental scales. Intuitively, healthy vegetation is greener. A quantitative index of &#8220;greenness&#8221; called Normalised Difference Vegetation Index (NDVI) was developed by NASA.  The index takes values between 0 and 1. NDVI is related to the fraction of photosynthetically active radiation absorbed by the vegetation canopy. It is a [...]]]></description>
			<content:encoded><![CDATA[<p>Weather and climatic variability affect vegetation on continental scales. Intuitively, healthy vegetation is greener. A quantitative index of &#8220;greenness&#8221; called <em>Normalised Difference Vegetation Index</em> (<strong><a href="http://www.nasa.gov/topics/earth/features/obscure_data.html">NDVI</a></strong>) was developed by NASA.  The index takes values between 0 and 1. NDVI is related to the fraction of photosynthetically active radiation absorbed by the vegetation canopy. It is a powerful tool in vegetation monitoring.</p>
<p>Quantifying the relationship between weather and vegetation on a regional scale is a statistical problem which requires long time-series of NDVI. <strong><a href="http://glcf.umd.edu/data/gimms/" target="_blank">GIMMS</a></strong> is a  25 year (1981-2006) NDVI dataset based on inputs from a sequence of NOAA weather satellites carrying <strong><a href="http://noaasis.noaa.gov/NOAASIS/ml/avhrr.html">AVHRR</a></strong> radiometers. The GIMMS team removed satellite drift, calibration  effects <em>etc.</em>[1] Of course NDVI has a complex spatial variation which is related to variations in  vegetation cover type, not to weather variations. To isolate the impact of weather variations, it makes sense to &#8220;standardize&#8221; NDVI. <em>Vegetation Condition Index</em> (VCI) is:</p>
<p style="text-align: center;"><img src='http://s.wordpress.com/latex.php?latex=VCI%3D%5Cfrac%7BNDVI%20%5C%3B%20%5C%3A-%5C%3B%20%5C%3ANDVI_%7Bmin%7D%7D%7BNDVI_%7Bmax%7D-NDVI_%7Bmin%7D%7D&#038;bg=ffffff&#038;fg=000000&#038;s=0' alt='VCI=\frac{NDVI \; \:-\; \:NDVI_{min}}{NDVI_{max}-NDVI_{min}}' title='VCI=\frac{NDVI \; \:-\; \:NDVI_{min}}{NDVI_{max}-NDVI_{min}}' class='latex' /></p>
<p>For example, NDVI<sub>min</sub> might refer to the minimum local May NDVI value observed during 1981-2006. A tropical rainforest and a semi-arid region have very different NDVI, but both may have VCI close to  1 during a favourable period.</p>
<p>The maps below show the correlation between VCI and 3-month <a href="http://joewheatley.net/visualizing-drought/" target="_blank">Standardized Precipitation Index</a> (SPI3) computed for Africa by calendar month. GIMMS 8km NDVI was upscaled to 200km to match the scale of gridded monthly climate datasets for precipitation (<a href="http://lwf.ncdc.noaa.gov/oa/wmo/wdcamet-ncdc.html">GPCP</a>).[2] The red areas correspond to areas of high correlation between VCI and SPI3. Vegetation in these areas responsive to rainfall variations on a 3-month timescale. A striking feature  is the line high correlation in the Sahel   region. Vegetation in the Sahel is highly sensitive to drought. Southern Africa is also highly rainfall sensitive during Dec-May. It is impressive that the combination of datasets of very different origins (GPCP and GIMMS) produces spatially and temporally consistent information.</p>
<h2 style="text-align: center;">Sensitivity of Vegetation to Precipitation 1981-2006</h2>
<p><a href="http://joewheatley.net/wp-content/uploads/2010/05/AF_VCI_SPI3Hyrbid_correl1.png"><img class="aligncenter size-large wp-image-2230" title="AF_VCI_SPI3Hyrbid_correl" src="http://joewheatley.net/wp-content/uploads/2010/05/AF_VCI_SPI3Hyrbid_correl1-1024x754.png" alt="AF_VCI_SPI3Hyrbid_correl" width="1024" height="754" /></a></p>
<h3>R code snippets</h3>
<p>Most of the effort is in pre-processing the climate and NDVI data so that they share the same projection, grid, time coordinate etc. GDAL and the interp() function from the akima package were used for this purpose. Eventually we end up with SPI3 and VCI data represented by N × T matrices where N = Nx ×Ny is the dimension of the spatial maps and T is the number of observations. From there,  SPI3 and VCI maps were organized by calendar month,</p>
<p><code>vci.m   &lt;- lapply(seq(1:12),function(m) vci[,seq(from=m, to=T, by=12)])<br />
spi3.m &lt;- lapply(seq(1:12), function(m) spi3[,seq(from=m, to=T, by=12)])</code></p>
<p>Correlation maps between VCI and SPI3  for each calendar month are obtained from,</p>
<p><code>corr.maps &lt;- lapply(seq(1:12),function(m) sapply(seq(1:N), function(i) cor( vci.m[[m]][i,],spi3.m[[m]][i,]) ))</code></p>
<p>Finally the above map table was produced using spplot() from the sp package with overlays from the maps package.</p>
<p style="text-align: left;">
<p style="text-align: left;">
<p style="text-align: left;">[1] <span style="color: #888888;"> Tucker, C.J., J.E. Pinzon, and M.E. Brown (2004),  Global Inventory Modeling and Mapping Studies, NA94apr15b.n11-VIg, 2.0,  Global  Land Cover Facility, University of Maryland, College Park, Maryland,  04/15/1994.</span></p>
<p style="text-align: left;">[2]<span style="color: #888888;"> SG: Adler, R.F., G.J. Huffman, A. Chang, R.  Ferraro, P. Xie,     J. Janowiak, B. Rudolf, U. Schneider, S. Curtis, D. Bolvin, A.  Gruber, J. Susskind, P.     Arkin, 2003: The Version 2 Global Precipitation Climatology Project  (GPCP) Monthly     Precipitation Analysis (1979-Present). J. Hydrometeor., 4,1147-1167. </span></p>
]]></content:encoded>
			<wfw:commentRss>http://joewheatley.net/response-of-african-vegetation-to-drought/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mapping Biomes</title>
		<link>http://joewheatley.net/mapping-biomes/</link>
		<comments>http://joewheatley.net/mapping-biomes/#comments</comments>
		<pubDate>Fri, 20 Nov 2009 22:00:15 +0000</pubDate>
		<dc:creator>joe</dc:creator>
				<category><![CDATA[Agriculture]]></category>
		<category><![CDATA[Land Cover Maps]]></category>
		<category><![CDATA[ecosystem model]]></category>
		<category><![CDATA[R]]></category>

		<guid isPermaLink="false">http://joewheatley.net/?p=915</guid>
		<description><![CDATA[Recently (2008) the European Space Agency produced GlobCover (ESA GlobCover Project, led by MEDIAS-France), the highest resolution (300m) global land cover map to date. GlobCover uses 21 primary land cover classes and many more sub-classes. Land cover classification (LCC) schemes divide the earth into biomes. Biomes are the simplest way to classify vegetation which can [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: left;">Recently (2008) the <em>European Space Agency</em> produced <strong><a href="http://ionia1.esrin.esa.int/" target="_blank">GlobCover</a></strong> (<span style="word-spacing: 1.5px; line-height: 1.5;"><span><em>ESA GlobCover Project</em>, led by MEDIAS-France</span></span>), the highest resolution (300m) global land cover map to date. GlobCover uses 21 primary land cover classes and many more sub-classes. Land cover classification (LCC) schemes divide the earth into <em>biomes</em>. Biomes are the simplest way to classify vegetation which can be applied globally. LCC makes sense because the boundaries between different ecosystems (<em>ecotones</em>) are sharp. However, definitions vary and there is no agreed standard set of biomes.<sup>[1]</sup></p>
<p style="text-align: left;">
<h3 style="text-align: left;">GlobCover Example</h3>
<p>Puntarenas is a province on the pacific coast of Costa Rica.  The province has a typical mix of tropical land cover. This includes some spectacular examples of Pacific Rainforest, notably on the Osa Peninsula. Puntarenas has an area of ≈ 11,000 sq. km or about 120,000 GlobCover pixels.</p>
<p style="text-align: center;">
<p>13 land cover types are present in the GlobCover map below. The barplot on the right shows the total amounts present in each class.</p>
<p style="text-align: center;"><a href="http://joewheatley.net/wp-content/uploads/2009/11/puntarenas.png"><img class="aligncenter size-large wp-image-1330" title="puntarenas" src="http://joewheatley.net/wp-content/uploads/2009/11/puntarenas-1024x825.png" alt="puntarenas" width="922" height="743" /></a></p>
<p style="text-align: center;">
<p style="text-align: center;"><a href="http://joewheatley.net/wp-content/uploads/2009/11/legend1.png"><img class="aligncenter size-large wp-image-1212" title="legend" src="http://joewheatley.net/wp-content/uploads/2009/11/legend1-1023x362.png" alt="legend" width="716" height="253" /></a></p>
<p>The GlobCover legend (above) has mixed land cover classes, where more than one biome occurs  inside a map pixel. This is especially true in the man-made biomes (agriculture) . For example, there are three cropland land cover types depending on the relative amounts of other vegetation present.</p>
<h3 style="text-align: left;">GlobCover map making in <em>R</em></h3>
<p><em>R</em> is a programming language, not a specialised geographic information system (GIS) such as GRASS or commercial packages. However applications of <em>R</em> to spatial problems is a growth industry.<sup>[2]</sup> <a href="http://blog.revolution-computing.com/2009/10/geographic-maps-in-r.html" target="_blank"><br />
</a></p>
<p>A GlobCover map similar to the above can be produced for any area of interest. The <em>Geospatial Data Abstraction Library</em> (GDAL) should be installed on your system. <strong><a href="http://fwtools.maptools.org/" target="_blank">FWTools</a></strong> is the place to go. You also need <em>R</em> packages <em>sp</em> and <em>rgdal</em> installed. The regional GLOBCOVER map for Central America can be downloaded from ESA <strong><a href="ftp://us-ext-nas.eo.esa.int/regional/" target="_blank">here</a></strong>. GlobCover is in GeoTiff format i.e. a Tiff image file which contains georeferencing information. The following GDAL command (from command line, or run from R using <em>shell</em>) creates a 4° x 4° submap centred on Costa Rica.<br />
<code><br />
gdalwarp GLOBCOVER_200412_200606_V2.2_CentralAmerica_Reg.tif -te -86 8 -82 12 costaRica.tif<br />
</code></p>
<p style="text-align: left;"><em>costaRica.tif</em> is read into <em>R</em> using the <em>rgdal</em> package:</p>
<p><code>library(rgdal)<br />
costa &lt;- readGDAL("costaRica.tif")</code></p>
<p style="text-align: left;"><em>costa</em> has class <em>SpatialGridDataFrame</em>, which is a class defined in the package <em>sp</em> (loaded when <em>rgdal</em> is loaded).</p>
<p style="text-align: left;">Administative boundaries for Costa Rica were obtained from Global Administrative Areas <a href="http://www.gadm.org/" target="_blank">www.gadm.org</a> (see <strong><a href="http://blog.revolution-computing.com/2009/10/geographic-maps-in-r.html" target="_blank">Revolution R blog post</a></strong>)</p>
<p><code>con &lt;- url("http://gadm.org/data/rda/CRI_adm1.RData")<br />
load(con)<br />
close(con)</code></p>
<p style="text-align: left;">Costa Rican provinces are now contained in the object <em>gadm</em> of class <em>SpatialPolygonsDataFrame</em>. The boundaries of Puntarenas province (excluding Cocos Island) are extracted as follows:</p>
<p><code>Polygons(list(Polygon(gadm@polygons[[6]]@Polygons[[27]]@coords),Polygon(gadm@polygons[[6]]@Polygons[[25]]@coords)),"puntarenas")<br />
temp &lt;- SpatialPolygons(list(temp),proj4string=CRS(proj4string(gadm)))<br />
punt.sp &lt;- SpatialPolygonsDataFrame(temp, data.frame(cbind(2,2), row.names=c("puntarenas")))  # puntarenas<br />
</code></p>
<p style="text-align: left;">The <em>overlay()</em> method  is used to extract the land cover map <em>puntarenas</em> from <em>costa:</em><em> </em></p>
<p style="text-align: left;"><code>puntarenas &lt;- costa<br />
puntarenas.overlay &lt;- overlay(costa,punt.sp)  # 1 in interior of puntarenas polygons, 0 outside<br />
puntarenas$band1 &lt;- costa$band1*puntarenas.overlay</code></p>
<p style="text-align: left;">
<p style="text-align: left;">
<p style="text-align: left;">Unfortunately <em>overlay() </em>is rather slow, because it applies <em>point.in.polygon()</em> to the entire raster. Eventually <em>puntarenas<em> </em></em>appears as a<em> SpatialGridDataFrame</em><em> </em>which can be plotted using standard <em>R</em> tools such as <em>image()</em>.</p>
<p style="text-align: left;">The code needed to generate the above plot is <strong><a href="http://joewheatley.net/wp-content/uploads/2009/11/costa.R" target="_blank">here</a></strong>.</p>
<h3 style="text-align: left;">footnotes</h3>
<p style="text-align: left;">
<p style="text-align: left;">
<p style="text-align: left;">[1] For example, the International Biosphere-Geosphere Programme (<strong><a href="http://www.igbp.net/">IGBP</a></strong>) land cover legend used 17 biomes. The University of Maryland map used 14 biomes. At much lower resolution, numerical weather forecasting models such as US National Center for Climate Prediction Global Forecasting System (NCEP-GFS) also use alternative schemes.</p>
<p style="text-align: left;">
<p style="text-align: center;"><a href="../wp-content/uploads/2009/11/LCTable.png"><img title="LCTable" src="../wp-content/uploads/2009/11/LCTable.png" alt="LCTable" width="526" height="306" /></a></p>
<p style="text-align: center;">
<p style="text-align: left;">[2] Roger S. Bivand, Edzer J. Pebesma, and Virgilio Gómez-Rubio.  <em>Applied Spatial Data Analysis with R</em>.  Springer, New York, 2008</p>
<p style="text-align: left;">
<p style="text-align: left;">
<p style="text-align: left;">
<p style="text-align: left;">
]]></content:encoded>
			<wfw:commentRss>http://joewheatley.net/mapping-biomes/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Flux Towers: Part II</title>
		<link>http://joewheatley.net/flux-towers-part-ii/</link>
		<comments>http://joewheatley.net/flux-towers-part-ii/#comments</comments>
		<pubDate>Mon, 12 Oct 2009 19:57:08 +0000</pubDate>
		<dc:creator>joe</dc:creator>
				<category><![CDATA[Carbon]]></category>
		<category><![CDATA[Climate]]></category>
		<category><![CDATA[Forests]]></category>
		<category><![CDATA[ecosystem model]]></category>
		<category><![CDATA[eddy covariance]]></category>
		<category><![CDATA[Terrestrial Carbon]]></category>
		<category><![CDATA[water stress]]></category>

		<guid isPermaLink="false">http://joewheatley.net/?p=742</guid>
		<description><![CDATA[Flux tower eddy covariance instruments measure CO2 flux between an ecosystem and the atmosphere. Observed CO2 fluxes (also called NEE, Net Ecosystem Exchange) can be correlated with locally measured solar intensity, temperature, humidity etc. With enough data, a detailed picture of the local response of the ecosystem to environmental variables to be built up. Flux [...]]]></description>
			<content:encoded><![CDATA[<div id="attachment_1075" class="wp-caption aligncenter" style="width: 800px"><a href="http://joewheatley.net/wp-content/uploads/2009/10/forestimage.png"><img class="size-large wp-image-1075  " title="forestimage" src="http://joewheatley.net/wp-content/uploads/2009/10/forestimage-1024x112.png" alt="forestimage" width="790" height="112" /></a><p class="wp-caption-text">West of Ireland oak woodland - October 11 </p></div>
<p>Flux tower <strong><a href="http://joewheatley.net/flux-towers-part-i/" target="_blank">eddy covariance instruments</a></strong> measure CO2 flux between an ecosystem and the atmosphere. Observed CO2 fluxes (also called NEE, <em>Net Ecosystem Exchange</em>) can be correlated with locally measured solar intensity, temperature, humidity etc. With enough data, a detailed picture of the local response of the ecosystem to environmental variables to be built up. Flux towers are one of the important tools for quantitative understanding the sensitivity of vegetation to climatic variability.</p>
<p>CO2 flux data  are noisy, to say the least. If you want to understand ecosystem reponse, you need a statistical model.  This post gives some simple ideas and R code showing how such a model can be developed. The example used is <strong><a href="http://atmos.seas.harvard.edu/lab/hf/CO2exchange.html" target="_blank">Harvard Forest</a></strong> [1], Massachussetts, a temperate deciduous broadleaf forest for which a large amount of flux tower data (collected by Munger &amp; Wofsy) is available. It could equally be applied to tropical forest, grassland, cropland etc at one of the 200+ fluxnet sites worldwide. The model falls short of the full scientific rigour given in the references, but it can easily be developed into a more complete tool.</p>
<p>The main interest here is ecosystem response to sunlight i.e. photosynthesis. The light dependent part of the NEE is GEP (Gross Ecosystem Production), while the light independent part is RE (ecosystem respiration).</p>
<h3>Pre-processing</h3>
<p>As always, the first steps are about getting the data into the right form. We use half-hourly data for 1991-2007  for Harvard Forest  i.e <a href="http://public.ornl.gov/ameriflux/dataproducts.shtml" target="_blank">Ameriflux</a> Level 2, site code <em>USHa-1</em>. This raw data has not been subject to any gap-filling statistical treatment. Here are the pre-processing steps:</p>
<ol>
<li>download the annual data files and create a dataframe harvard using the rbind() combining all of the data</li>
<li>replace missing data (e.g. -9999) with &#8220;NA&#8221;</li>
<li>add a new fornight index, indicating to which fortnight of the year each row of data belongs</li>
<li>select a subset of the Ameriflux variables of interest. e.g. column headings c(&#8221;YEAR&#8221;,&#8221;DTIME&#8221;,&#8221;FN&#8221;,&#8221;TA&#8221;,&#8221;NEE&#8221;,&#8221;TS1&#8243;,&#8221;VPD&#8221;,&#8221;PAR_in&#8221;)</li>
<li>drop rows of data when one or more variables are undefined</li>
<li>group the data according to fortnights index i.e. create a list of 26 elements where each element is a dataframe containing all data sharing the same fortnight index.</li>
<li>drop &#8220;dark&#8221; data i.e. rows of data where PAR &lt; 30.</li>
</ol>
<p>The environmental variables retained at step 4 are TA (atmospheric temperature), TS1  (soil temperature), VPD (vapour pressure deficit) and PAR (photosynthetically active radiation). PAR is solar radiation in the range 0.4-0.7 microns which is energetic enough to contribute to photosynthesis. It has units μ mols s<sup>-1</sup> m<sup>-2</sup>. (1 μ mole = 6 x 10<sup>17</sup>.)</p>
<p>Here is what the R code looks like: <code><br />
<span style="color: #ff6600;">#download the annual data files and create a dataframe harvard</span><br />
loc=file.path("ftp://cdiac.ornl.gov/pub/ameriflux/data/Level2/Sites_ByID/US-Ha1/with_gaps/usmaharv_1991_L2.csv"); # Ameriflux US_Ha1 download.file(loc,"temp.dat");<br />
ha_1991=read.csv("temp.dat", header=FALSE,skip=20); .........................<br />
loc=file.path("ftp://cdiac.ornl.gov/pub/ameriflux/data/Level2/Sites_ByID/US-Ha1/with_gaps/usmaharv_2007_L2.csv"); # Ameriflux US_Ha1 download.file(loc,"temp.dat");<br />
ha_2007=read.csv("temp.dat", header=FALSE,skip=20); harvard &lt;- rbind(ha_1991,ha_1992,ha_....._2006,ha_2007); # merged dataframes<br />
<span style="color: #ff6600;">#replace missing data with "NA"</span><br />
temp &lt;- (harvard[,] == -9999 | harvard[,] == -6999); #replace -9999 or -6999 with NAs<br />
harvard[temp]=NA;<br />
<span style="color: #ff6600;">#add a new fortnight index</span><br />
lims &lt;- seq(from=1,to=365,by=14); # fortnightly data<br />
lims[27] &lt;- 367; # bound adjust, last fortnight has extra days fortnight<br />
&lt;- function(d) {sum(ifelse(d&lt;lims,0,1))}  # convert from DOY to fortnights<br />
harvard &lt;- data.frame( "FN" = sapply(harvard$DOY,fortnight),harvard)  # add fortnight labels 1..26 column<br />
#select a subset of the Ameriflux variables of interest<br />
sub&lt;- c("YEAR","DTIME","FN","TA","NEE","TS1","VPD","PAR_in")<br />
harvardS &lt;- harvard[,colnames(harvard) %in% sub, drop=FALSE] # subset dataframe<br />
<span style="color: #ff6600;">#  drop data when U* &lt; 0.2 m/s</span><br />
u_cut &lt;- (harvard$UST &lt; 0.2|is.na(harvard$UST));<br />
<span style="color: #ff6600;">#drop every row of data when one or more variables are undefined</span><br />
x &lt;- is.na(harvardS$TA);<br />
y &lt;- is.na(harvardS$NEE);<br />
z &lt;- is.na(harvardS$TS1);<br />
u &lt;- is.na(harvardS$VPD);<br />
v &lt;- is.na(harvardS$PAR_in);<br />
w &lt;- !(x|y|z|u|v|u_cut);  #boolean. w is true when all variables are defined and U* &gt; 0.2 m/s<br />
harvardS &lt;- data.frame("YEAR"=harvard$YEAR[w],"FN"=harvard$FN[w],"TA"=harvard$TA[w],"NEE" = harvard$NEE[w], "TS1" = harvard$TS1[w], "VPD" = harvard$VPD[w],"PAR" = harvard$PAR_in[w])<br />
<span style="color: #ff6600;">#group the data according to fortnights index</span><br />
getF &lt;- function(i) {subset(harvardS,FN==i)}<br />
# list of dataframes according to fortnight index<br />
harvardF &lt;- lapply(seq(1:26),getF) # generate list<br />
<span style="color: #ff6600;">#drop "dark" data i.e. rows of data where PAR &lt; 30.</span><br />
harvardS.light &lt;- subset(harvardS,PAR&gt;30)#day only<br />
getF.light &lt;- function(i) {subset(harvardS.light,FN==i)}<br />
<span style="color: #ff6600;"># list of dataframes according to fortnight value</span><br />
harvardF.light &lt;- lapply(seq(1:26),getF.light) # generate list</code></p>
<p><em>harvardF.light</em> contains the required clean daytime half-hourly data grouped by fortnight index.</p>
<h3>Model-Building</h3>
<p>The plots below show NEE versus PAR. Fortnights 8 &amp; 22 (mid April &amp; late October) are winter months with positive NEE and little evidence of photosynthetic response. Fortnights 14 &amp; 18 (early July and late August) show photosynthesis (-ve NEE) and a strong response to PAR.</p>
<p style="text-align: center;"><a href="http://joewheatley.net/wp-content/uploads/2009/10/gep.png"><img class="size-large wp-image-1005  aligncenter" title="gep" src="http://joewheatley.net/wp-content/uploads/2009/10/gep-1024x958.png" alt="gep" width="717" height="671" /></a></p>
<p>The NEE-PAR curves during summer months saturate at high light levels. This is not too surprising. Photosynthesis is limited by water and CO2 availability and so cannot increase indefinitely with increasing PAR. A simple light saturation model is [2]</p>
<p style="text-align: center;"><img src='http://s.wordpress.com/latex.php?latex=%5Cmathrm%7BNEE%7D%20%3D%20%5Cmathrm%7BR_E%7D%20-%7B%7B%5Calpha%20%5Cbeta%20%5Cmathrm%7BPAR%7D%7D%20%5Cover%20%7B%5Cbeta%20%2B%20%5Calpha%20%5Cmathrm%7BPAR%7D%7D%7D&#038;bg=ffffff&#038;fg=000000&#038;s=0' alt='\mathrm{NEE} = \mathrm{R_E} -{{\alpha \beta \mathrm{PAR}} \over {\beta + \alpha \mathrm{PAR}}}' title='\mathrm{NEE} = \mathrm{R_E} -{{\alpha \beta \mathrm{PAR}} \over {\beta + \alpha \mathrm{PAR}}}' class='latex' /></p>
<p>The second term on the right-hand-side represents GEP.  At low light levels GEP ≈ αPAR. The parameter α is called the &#8220;photosynthetic efficiency&#8221;. At high light levels,  GEP ≈ β and so β is the light saturation GEP.</p>
<p>This 3-parameter simple light saturation model can be fit to extract parameters for each fortnightly period. However, a better model recognises that photosynthesis responds to changes in moisture availability and temperature. This effect can be introduced by replacing <img src='http://s.wordpress.com/latex.php?latex=%5Calpha%20%5Crightarrow%20%5Calpha%20%5Cepsilon&#038;bg=ffffff&#038;fg=000000&#038;s=0' alt='\alpha \rightarrow \alpha \epsilon' title='\alpha \rightarrow \alpha \epsilon' class='latex' /> in the numerator of GEP, where ε depends on atmospheric temperature TA and vapour pressure deficit VPD. ε=1 under optimal temperature and humidity conditions, otherwise ε&lt;1. We need to input a reasonable model for how quickly GEP falls away about the optimal values of TA (at about 25C) and VPD (at zero  kPa). After some experimenting, the following model was found to be reasonable[3]</p>
<p style="text-align: center;"><img src='http://s.wordpress.com/latex.php?latex=%5Cepsilon%20%3D%20%7B%5Clambda%5E2%20%5Cover%20%7B%5Cmathrm%7B%5Cleft%28TA-25%20%5Cright%29%7D%5E2%20%2B%20%5Clambda%5E2%7D%20%7D%20%7B%5Cmu%5E2%20%5Cover%20%7B%5Cmathrm%7BVPD%7D%5E2%20%2B%20%5Cmu%5E2%7D%7D&#038;bg=ffffff&#038;fg=000000&#038;s=0' alt='\epsilon = {\lambda^2 \over {\mathrm{\left(TA-25 \right)}^2 + \lambda^2} } {\mu^2 \over {\mathrm{VPD}^2 + \mu^2}}' title='\epsilon = {\lambda^2 \over {\mathrm{\left(TA-25 \right)}^2 + \lambda^2} } {\mu^2 \over {\mathrm{VPD}^2 + \mu^2}}' class='latex' /></p>
<p><img src='http://s.wordpress.com/latex.php?latex=%5Clambda&#038;bg=ffffff&#038;fg=000000&#038;s=0' alt='\lambda' title='\lambda' class='latex' /> and <img src='http://s.wordpress.com/latex.php?latex=%5Cmu&#038;bg=ffffff&#038;fg=000000&#038;s=0' alt='\mu' title='\mu' class='latex' /> are two additional parameters which must be determined. This 5-parameter model can be fit for each of the photosynthetically active periods 11-20.</p>
<p>The nls() function in R carries out a numerical maximum likelihood fit using least squares. Unlike ordinary linear least squares, it is not guaranteed to converge. The model and initial parameter values have to be chosen carefully. A good approach is to use parameters from the simple light saturation model as initial values in nls(). Here is the code needed to do the 5-parameter model fits</p>
<p><code><br />
#fits.mid is a list of fitted R objects<br />
for(i in start_period:end_period) {<br />
fits.mid[[i]] &lt;- nls(NEE~ gamma - alpha*beta*(lambda^2/((TA-25)^2+lambda^2))*mu^2/(VPD^2+mu^2)*PAR/(beta+alpha*PAR), data = harvardF.light[[i]], start=list(gamma=1,alpha=0.02,beta=40,lambda=40,mu=1),trace=F); </code></p>
<p>In fact, λ and μ are not expected to vary much during the summer period, since they depend on leaf properties at the cellular level.  Indeed they turn out to be roughly constant for fortnight periods 11-20. It is reasonable to replace them by their average values μ<sub>av</sub> = 2.1kPa and λ<sub>av</sub>=34 μ mols s<sup>-1</sup> m<sup>-2</sup>. With ε determined in this way, a final 3-parameter model fit is carried out. Once again the three parameters are RE, α and β but this time the model takes better account of temperature and moisture sensitivity, via ε.</p>
<h3>Results</h3>
<p>The model suggests that VPD is an important factor limiting GEP. e.g. vapour pressure deficit of 1kPa reduces GEP by 20% when <img src='http://s.wordpress.com/latex.php?latex=%5Cmu%20%3D%202&#038;bg=ffffff&#038;fg=000000&#038;s=0' alt='\mu = 2' title='\mu = 2' class='latex' />kPa. This effect is seen in the plots below.</p>
<p style="text-align: center;"><a href="http://joewheatley.net/wp-content/uploads/2009/10/nee.png"><img class="size-large wp-image-1015  aligncenter" title="nee" src="http://joewheatley.net/wp-content/uploads/2009/10/nee-1024x813.png" alt="nee" width="819" height="650" /></a></p>
<p>The implication of this is that about 30% of the apparent &#8220;light saturation&#8221; of the NEE PAR response is due to water stress (VPD). The remainder is due to CO2 availability and possibly other constraints.</p>
<p>The plot below shows the variation of parameters R_E , β and α with fortnight index. Only β shows a strong variation during the summer months, with a peak in early June</p>
<p style="text-align: center;"><a href="http://joewheatley.net/wp-content/uploads/2009/10/params.png"><img class="size-large wp-image-1024  aligncenter" title="params" src="http://joewheatley.net/wp-content/uploads/2009/10/params-1024x481.png" alt="params" width="1024" height="481" /></a></p>
<p><img src='http://s.wordpress.com/latex.php?latex=%5Calpha%5E%7B-1%7D&#038;bg=ffffff&#038;fg=000000&#038;s=0' alt='\alpha^{-1}' title='\alpha^{-1}' class='latex' /> corresponds to the number of  photosynthetically active photons  arriving at the forest canopy for every CO2 molecule trapped by photosynthesis. This number is about 14.</p>
<p>A common feature of future climate scenarios is competition between increased CO2 availability and increased water stress layed out on a global scale. Clearly flux tower data are good place to look for these effects.</p>
<p>The R script for the model and plots can be found <strong><a href="http://joewheatley.net/wp-content/uploads/2009/10/harvardforestlevel2.txt" target="_blank">here</a></strong>.</p>
<h3>References</h3>
<p>[1] <em>Factors controlling CO<sub>2</sub> exchange on timescales from hourly to decadal at Harvard Forest, </em>Urbanski, S., C. Barford, S. Wofsy, C. Kucharik, E. Pyle, J. Budney, K.</p>
<p>McKain, D. Fitzjarrald, M. Czikowsky, J. W. Munger<a href="http://www.agu.org/pubs/crossref/2007.../2006JG000293.shtml" target="_blank"> http://www.agu.org/pubs/crossref/2007&#8230;/2006JG000293.shtml</a></p>
<p>[2] See for example, <em>An evaluation of models for partitioning eddy covariance-measured<br />
net ecosystem exchange into photosynthesis and respiration</em> P. Stoy <em>et al</em>, <a href="http://www.geos.ed.ac.uk/homes/pstoy/Stoy_06b.pdf" target="_blank">http://www.geos.ed.ac.uk/homes/pstoy/Stoy_06b.pdf</a></p>
<p>[3] More detailed models are give in <em><span class="pb_article_title">An empirical model simulating diurnal and seasonal CO<sub>2</sub> flux for diverse vegetation types and climate conditions</span></em><span class="pb_authors">, M. Saito, S. Maksyutov, R. Hirata, and A. D. Richardson. </span><a href="http //www.biogeosciences.net/6/585/2009/bg-6-585-2009.html" target="_blank">http //www.biogeosciences.net/6/585/2009/bg-6-585-2009.html</a> &amp; references.</p>
]]></content:encoded>
			<wfw:commentRss>http://joewheatley.net/flux-towers-part-ii/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

<!-- Dynamic Page Served (once) in 1.604 seconds -->
