LAI for GEOS-Chem Based on BNU ------------------------------ Yuan provides significantly reprocessed LAI (1). This data has been downloaded and spatially averaged for use in GEOS-Chem. Yuan's data is named global_30s_YYYY.nc, while GEOS-Chem data has two formats depending on the GEOS-Chem version. * MODIS.LAIv.V5.geos.1x1.YYYY - for v9-01-03 and before * global_15m_YYYY.monthly.nc - for v9-02 and after To use this data, you must edit code and recompile GEOS-Chem. The edits are designed to point GEOS-Chem here for the data. The edits depend on the GEOS-Chem version. In the edits, it is assumed that the BNU data resides in /scratch/lfs/groups/henderson/modis_lai/BNU/. If this data has moved, the edits will need to be moved as well. Edits are shown in the Patch section for v9-02. I have done a preliminary evaluation with v9-02 and updated LAI for 2010. The new isoprene emissions are 8% lower than previous values. At this time the evaluation only includes January. I am still running the rest of the years. The code for simplistic evaluation is in the Evaluation section. References ---------- 1. Yuan, H., Dai, Y., Xiao, Z., Ji, D., Shangguan, W., 2011. Reprocessing the MODIS Leaf Area Index Products for Land Surface and Climate Modelling. Remote Sensing of Environment, 115(5), 1171-1187. doi:10.1016/j.rse.2011.01.001 Evaluation ---------- $ pncload -f bpch,nogroup=True geos-chem-run/ctm.20100101.bnu.bpch geos-chem-run/ctm.20100101.std.bpch (PNCConsole) >>> new = (ISOP_0[:] * AREA_0[:]*1e4).sum(1).sum(1).sum(1) * (3600 * (tau1_0[:] - tau0_0[:]) / 6.022e23 * 12) / 1e12 # TgC/year >>> old = (ISOP_1[:] * AREA_0[:]*1e4).sum(1).sum(1).sum(1) * (3600 * (tau1_1[:] - tau0_1[:]) / 6.022e23 * 12) / 1e12 # TgC/year >>> print(new / old) [ 0.93123012 0.94360672 0.95101694 0.94248699 0.93959757 0.93579947 0.9388672 0.94361889 0.94512837 0.94896869 0.95507556 0.96074186] Patch ----- diff --git a/GeosCore/modis_lai_mod.F90 b/GeosCore/modis_lai_mod.F90 index a3b4927..d51bea4 100644 --- a/GeosCore/modis_lai_mod.F90 +++ b/GeosCore/modis_lai_mod.F90 @@ -549,9 +549,19 @@ CONTAINS !====================================================================== ! Read current month's LAI !====================================================================== - + IF ( yyyy >= 2008 .and. yyyy <= 2012 ) THEN + ! Here, yyyy lies w/in the BNU data timespan + IF ( USE_OLSON_2001 ) THEN + nc_tmpl = 'global_15m_YYYY.monthly.nc' + ELSE + nc_tmpl = 'global_30m_YYYY.monthly.nc' + ENDIF + nc_file = nc_tmpl + nc_dir = '/scratch/lfs/groups/henderson/modis_lai/BNU/' + yyyymmdd = yyyy*10000 + mm*100 + 01 + CALL Expand_Date( nc_file, yyyymmdd, 000000 ) ! Test if yyyy is w/in the valid range of MODIS data - IF ( yyyy >= MODIS_START .and. yyyy <= MODIS_END ) THEN + ELSEIF ( yyyy >= MODIS_START .and. yyyy <= MODIS_END ) THEN ! Here, yyyy lies w/in the MODIS data timespan nc_file = nc_tmpl @@ -624,7 +634,18 @@ CONTAINS ENDIF ! Test if Pyyy is w/in the valid range of MODIS data - IF ( Pyyyy >= MODIS_START .and. Pyyyy <= MODIS_END ) THEN + IF ( Pyyyy >= 2008 .and. Pyyyy <= 2012 ) THEN + ! Here, yyyy lies w/in the BNU data timespan + IF ( USE_OLSON_2001 ) THEN + nc_tmpl = 'global_15m_YYYY.monthly.nc' + ELSE + nc_tmpl = 'global_30m_YYYY.monthly.nc' + ENDIF + nc_file = nc_tmpl + nc_dir = '/scratch/lfs/groups/henderson/modis_lai/BNU/' + yyyymmdd = Pyyyy*10000 + Pmm*100 + 01 + CALL Expand_Date( nc_file, yyyymmdd, 000000 ) + ELSEIF ( Pyyyy >= MODIS_START .and. Pyyyy <= MODIS_END ) THEN ! Here, Pyyyy lies w/in the MODIS data timespan nc_file = nc_tmpl @@ -697,7 +718,19 @@ CONTAINS ENDIF ! Test if Nyyy is w/in the valid range of MODIS data - IF ( Nyyyy >= MODIS_START .and. Nyyyy <= MODIS_END ) THEN + ! Test if Pyyy is w/in the valid range of MODIS data + IF ( Nyyyy >= 2008 .and. Nyyyy <= 2012 ) THEN + ! Here, yyyy lies w/in the BNU data timespan + IF ( USE_OLSON_2001 ) THEN + nc_tmpl = 'global_15m_YYYY.monthly.nc' + ELSE + nc_tmpl = 'global_30m_YYYY.monthly.nc' + ENDIF + nc_file = nc_tmpl + nc_dir = '/scratch/lfs/groups/henderson/modis_lai/BNU/' + yyyymmdd = Nyyyy*10000 + Nmm*100 + 01 + CALL Expand_Date( nc_file, yyyymmdd, 000000 ) + ELSEIF ( Nyyyy >= MODIS_START .and. Nyyyy <= MODIS_END ) THEN ! Here, Nyyyy lies w/in the MODIS data timespan nc_file = nc_tmpl