diff --git a/diagnostics/diagnostics/lnd/model_vs_model.py b/diagnostics/diagnostics/lnd/model_vs_model.py index 14d322ea..d2eda8c4 100644 --- a/diagnostics/diagnostics/lnd/model_vs_model.py +++ b/diagnostics/diagnostics/lnd/model_vs_model.py @@ -204,6 +204,14 @@ def run_diagnostics(self, env, scomm): shutil.copy2(env['POSTPROCESS_PATH']+'/lnd_diag/inputFiles/'+env['VAR_MASTER'],web_dir+'/variable_master.ncl') if n == '9': + # copy the set9_*_statsOut.txt files to the set9 subdir + glob_string = web_dir+'/set9'+'_*'+'.txt' + imgs = glob.glob(glob_string) + if len(imgs) > 0: + for img in imgs: + new_fn = set_dir + '/' + os.path.basename(img) + os.rename(img,new_fn) + web_script = env['POSTPROCESS_PATH']+'/lnd_diag/shared/lnd_statTable.pl' rc2, err_msg = cesmEnvLib.checkFile(web_script,'read') if rc2: diff --git a/lnd_diag/inputFiles/set1_clm.txt b/lnd_diag/inputFiles/set1_clm.txt index 6bc1d3a0..58287089 100755 --- a/lnd_diag/inputFiles/set1_clm.txt +++ b/lnd_diag/inputFiles/set1_clm.txt @@ -12,6 +12,7 @@ globalMeanNat LAISHA globalMeanNat BTRAN globalMeanDay QINFL globalMeanDay QOVER +globalMeanDay QIRRIG globalMeanDay QRGWL globalMeanDay QDRAI globalMeanDay QINTR @@ -22,6 +23,8 @@ globalMeanNat SOILICE globalMeanNat SOILPSI globalMeanNat SNOWLIQ globalMeanNat SNOWICE +globalMeanNat FSNO +globalMeanNat H2OSNO globalMeanNat TOTSOILLIQ globalMeanNat TOTSOILICE globalMeanNat WA diff --git a/lnd_diag/inputFiles/set1_cn.txt b/lnd_diag/inputFiles/set1_cn.txt index 68a8b42e..8dc5ee90 100755 --- a/lnd_diag/inputFiles/set1_cn.txt +++ b/lnd_diag/inputFiles/set1_cn.txt @@ -1,6 +1,9 @@ globalTotlAnn NEE globalTotlAnn NEP +globalTotlAnn NBP globalTotlAnn GPP +globalMeanNat CUE +globalMeanNat BTRAN2 globalTotlAnn PSNSUN_TO_CPOOL globalTotlAnn PSNSHADE_TO_CPOOL globalTotlAnn NPP @@ -58,6 +61,8 @@ globalMeanNat FPG globalMeanNat FPI globalTotlNat TOTECOSYSN globalTotlAnn NDEP_TO_SMINN +globalTotlAnn FERT +globalTotlAnn FERT_TO_SMINN globalTotlAnn NFIX_TO_SMINN globalTotlAnn NACTIVE globalTotlAnn NAM @@ -108,3 +113,16 @@ globalTotlAnn SOILC_LOSS globalTotlNat WOODC globalTotlAnn WOODC_ALLOC globalTotlAnn WOODC_LOSS +globalTotlAnn WOOD_HARVESTC +globalTotlAnn WOOD_HARVESTN +globalTotlAnn TOT_WOODPRODC_LOSS +globalTotlAnn TOT_WOODPRODN_LOSS +globalTotlAnn PROD10C_LOSS +globalTotlAnn PROD10N_LOSS +globalTotlAnn PROD100C_LOSS +globalTotlAnn PROD100N_LOSS +globalTotlAnn DWT_PROD10C_GAIN +globalTotlAnn DWT_PROD10N_GAIN +globalTotlAnn DWT_PROD100C_GAIN +globalTotlAnn DWT_PROD100N_GAIN +globalTotlAnn DWT_CONV_CFLUX diff --git a/lnd_diag/inputFiles/set2_cn.txt b/lnd_diag/inputFiles/set2_cn.txt index 957ea916..af717957 100755 --- a/lnd_diag/inputFiles/set2_cn.txt +++ b/lnd_diag/inputFiles/set2_cn.txt @@ -1,6 +1,9 @@ globalMeanDay0 NEE globalMeanDay0 NEP +globalMeanDay0 NBP globalMeanDay0 GPP +globalMeanNat0 CUE +globalMeanNat0 BTRAN2 globalMeanDay0 PSNSUN_TO_CPOOL globalMeanDay0 PSNSHADE_TO_CPOOL globalMeanDay0 NPP @@ -55,6 +58,8 @@ globalMeanNat0 TOTCOLC globalMeanNat0 FPG globalMeanNat0 FPI globalMeanAnn0 NDEP_TO_SMINN +globalMeanAnn0 FERT +globalMeanAnn0 FERT_TO_SMINN globalMeanAnn0 POTENTIAL_IMMOB globalMeanAnn0 ACTUAL_IMMOB globalMeanAnn0 GROSS_NMIN diff --git a/lnd_diag/inputFiles/set5_clm.txt b/lnd_diag/inputFiles/set5_clm.txt index e3b47e7a..e9c3e185 100755 --- a/lnd_diag/inputFiles/set5_clm.txt +++ b/lnd_diag/inputFiles/set5_clm.txt @@ -25,8 +25,10 @@ globalMeanNat TLAI globalMeanNat TSAI globalMeanNat LAISUN globalMeanNat LAISHA +globalTotlAnn FPSN globalMeanDay ET globalMeanDay QOVER +globalMeanDay QIRRIG globalMeanDay QDRAI globalMeanDay QRGWL globalMeanNat WA diff --git a/lnd_diag/inputFiles/set5_cn.txt b/lnd_diag/inputFiles/set5_cn.txt index 554e62b4..8a1e7fcb 100755 --- a/lnd_diag/inputFiles/set5_cn.txt +++ b/lnd_diag/inputFiles/set5_cn.txt @@ -1,6 +1,8 @@ globalTotlAnn NEE globalTotlAnn NEP +globalTotlAnn NBP globalTotlAnn GPP +globalMeanNat CUE globalTotlAnn PSNSUN_TO_CPOOL globalTotlAnn PSNSHADE_TO_CPOOL globalTotlAnn NPP @@ -51,6 +53,8 @@ globalTotlNat TOTCOLC globalMeanNat FPG globalMeanNat FPI globalTotlAnn NDEP_TO_SMINN +globalTotlAnn FERT +globalTotlAnn FERT_TO_SMINN globalTotlAnn POTENTIAL_IMMOB globalTotlAnn ACTUAL_IMMOB globalTotlAnn GROSS_NMIN diff --git a/lnd_diag/inputFiles/set6_cnFlx.txt b/lnd_diag/inputFiles/set6_cnFlx.txt index 1bbcb9fd..b95e8739 100755 --- a/lnd_diag/inputFiles/set6_cnFlx.txt +++ b/lnd_diag/inputFiles/set6_cnFlx.txt @@ -5,6 +5,6 @@ globalMeanDay AR globalMeanDay HR globalMeanDay ER globalMeanDay FCH4 -globalMeanDay SMINN_LEACHED +globalMeanNat CUE globalMeanDay SMIN_NO3_LEACHED globalMeanDay SMIN_NO3_RUNOFF diff --git a/lnd_diag/inputFiles/set6_radFlx.txt b/lnd_diag/inputFiles/set6_radFlx.txt index 8bcabddb..d619a49f 100755 --- a/lnd_diag/inputFiles/set6_radFlx.txt +++ b/lnd_diag/inputFiles/set6_radFlx.txt @@ -5,3 +5,4 @@ globalMeanNat FLDS globalMeanNat FIRE globalMeanNat FIRA globalMeanNat RNET +globalMeanNat FSNO diff --git a/lnd_diag/inputFiles/variable_master4.3.ncl b/lnd_diag/inputFiles/variable_master4.3.ncl index 2ad2ab7e..c45207a8 100644 --- a/lnd_diag/inputFiles/variable_master4.3.ncl +++ b/lnd_diag/inputFiles/variable_master4.3.ncl @@ -105,6 +105,34 @@ begin info@cn_LevelsDiff = (/-1.0, -0.8, -0.6, -0.4, -0.2, 0, 0.2, 0.4, 0.6, 0.8, 1/) return(info) end if + if (varName .eq. "NBP") then + info@flux=True + info@longName="net biome production, includes fire, landuse and harvest flux" + info@nativeUnits = "gC/m^2/s" + ; -- global Total + info@globalTotal__units = "NA" + info@globalTotal__SF = -999. + info@globalTotal_Annual__units = "PgC/y" + info@globalTotal_Annual__SF = secondsInYear * grams2Pgrams + ; -- global Mean + info@globalMean__units = "gC/m^2/s" + info@globalMean__SF = 1.0 + info@globalMean_Annual__units = "gC/m^2/y" + info@globalMean_Annual__SF = secondsInYear + info@globalMean_Daily__units = "gC/m^2/d" + info@globalMean_Daily__SF = secondsInDay + ; -- Origin + info@model = "CN" + info@derivedVariable = False + info@clampVariable = False + ; -- contour intervals + info@cn_Explicit = True + info@cn_Min = -999 + info@cn_Max = -999 + info@cn_Levels = (/-1.0, -0.75, -0.5, -0.25, 0, 0.25, 0.5, 0.75, 1/) + info@cn_LevelsDiff = (/-1.0, -0.8, -0.6, -0.4, -0.2, 0, 0.2, 0.4, 0.6, 0.8, 1/) + return(info) + end if if (varName .eq. "GPP") then info@flux=True @@ -135,6 +163,35 @@ begin return(info) end if + if (varName .eq. "CUE") then + info@flux=True + info@longName="carbon use efficiency" + info@nativeUnits = "NPP/GPP" + ; -- global Total + info@globalTotal__units = "NA" + info@globalTotal__SF = -999. + info@globalTotal_Annual__units = "NA" + info@globalTotal_Annual__SF = -999. + ; -- global Mean + info@globalMean__units = "NPP/GPP" + info@globalMean__SF = 1.0 + info@globalMean_Annual__units = "NPP/GPP" + info@globalMean_Annual__SF = 1.0 + info@globalMean_Daily__units = "NPP/GPP" + info@globalMean_Daily__SF = 1.0 + ; -- Origin + info@model = "CN" + info@derivedVariable = True + info@clampVariable = False + ; -- contour intervals + info@cn_Explicit = True + info@cn_Min = -999 + info@cn_Max = -999 + info@cn_Levels = (/.5, 1.0, 1.5, 2.0, 4.0, 6., 8., 10., 12./) + info@cn_LevelsDiff = (/-5.0, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5/) + return(info) + end if + if (varName .eq. "LAND_USE_FLUX") then info@flux=True info@longName="total C emitted from land cover conversion and wood product pools" @@ -282,7 +339,7 @@ begin if (varName .eq. "PCT_CROP_PFT") then info@flux=False - info@longName="Percent Crop on Natural Veg Landunit" + info@longName="Percent Crop on Natural Veg Landunit or Gridcell (CropModel)" info@nativeUnits = "%" ; -- global Total info@globalTotal__units = "NA" @@ -664,73 +721,450 @@ begin info@globalTotal_Annual__units = "PgC/y" info@globalTotal_Annual__SF = secondsInYear * grams2Pgrams ; -- global Mean - info@globalMean__units = "gC/m^2/s" + info@globalMean__units = "gC/m^2/s" + info@globalMean__SF = 1.0 + info@globalMean_Annual__units = "gC/m^2/y" + info@globalMean_Annual__SF = secondsInYear + info@globalMean_Daily__units = "gC/m^2/d" + info@globalMean_Daily__SF = secondsInDay + ; -- Origin + info@model = "CN" + info@derivedVariable = False + info@clampVariable = False + ; -- contour intervals + info@cn_Explicit = True + info@cn_Min = -999 + info@cn_Max = -999 + info@cn_Levels = (/.25, 0.5, 1.0, 2.0, 3., 4., 5., 6., 7./) + info@cn_LevelsDiff = (/-2.50, -2, -1.5, -1, -0.5, 0, 0.5, 1, 1.5, 2, 2.5/) + return(info) + end if + + if (varName .eq. "LITHR") then + info@flux=True + info@longName="litter hetereotrophic respiration" + info@nativeUnits = "gC/m^2/s" + ; -- global Total + info@globalTotal__units = "NA" + info@globalTotal__SF = -999. + info@globalTotal_Annual__units = "PgC/y" + info@globalTotal_Annual__SF = secondsInYear * grams2Pgrams + ; -- global Mean + info@globalMean__units = "gC/m^2/s" + info@globalMean__SF = 1.0 + info@globalMean_Annual__units = "gC/m^2/y" + info@globalMean_Annual__SF = secondsInYear + info@globalMean_Daily__units = "gC/m^2/d" + info@globalMean_Daily__SF = secondsInDay + ; -- Origin + info@model = "CN" + info@derivedVariable = False + info@clampVariable = False + ; -- contour intervals + info@cn_Explicit = True + info@cn_Min = -999 + info@cn_Max = -999 + info@cn_Levels = (/.12, 0.25, 0.5, 0.75, 1.0, 1.25, 1.5, 1.75, 2./) + info@cn_LevelsDiff = (/-1.0, -0.8, -0.6, -0.4, -0.2, 0, 0.2, 0.4, 0.6, 0.8, 1/) + return(info) + end if + + if (varName .eq. "SOILC_HR") then + info@flux=True + info@longName="Soil C hetereotrophic respiration" + info@nativeUnits = "gC/m2s" + ; -- global Total + info@globalTotal__units = "NA" + info@globalTotal__SF = -999. + info@globalTotal_Annual__units = "PgC/y" + info@globalTotal_Annual__SF = secondsInYear * grams2Pgrams + ; -- global Mean + info@globalMean__units = "gC/m^2/s" + info@globalMean__SF = 1.0 + info@globalMean_Annual__units = "gC/m^2/y" + info@globalMean_Annual__SF = secondsInYear + info@globalMean_Daily__units = "gC/m^2/d" + info@globalMean_Daily__SF = secondsInDay + ; -- Origin + info@model = "CN" + info@derivedVariable = False + info@clampVariable = True + ; -- contour intervals + info@cn_Explicit = True + info@cn_Min = -999 + info@cn_Max = -999 + info@cn_Levels = (/0.0, 0.25, 0.5, 0.75, 1, 1.25, 1.5, 1.75, 2/) + info@cn_LevelsDiff = (/-1.0, -0.8, -0.6, -0.4, -0.2, 0., 0.2, 0.4, 0.6, 0.8, 1/) + return(info) + end if + + if (varName .eq. "SOILC_LOSS") then + info@flux=True + info@longName="Soil C Loss" + info@nativeUnits = "gC/m2s" + ; -- global Total + info@globalTotal__units = "NA" + info@globalTotal__SF = -999. + info@globalTotal_Annual__units = "PgC/y" + info@globalTotal_Annual__SF = secondsInYear * grams2Pgrams + ; -- global Mean + info@globalMean__units = "gC/m^2/s" + info@globalMean__SF = 1.0 + info@globalMean_Annual__units = "gC/m^2/y" + info@globalMean_Annual__SF = secondsInYear + info@globalMean_Daily__units = "gC/m^2/d" + info@globalMean_Daily__SF = secondsInDay + ; -- Origin + info@model = "CN" + info@derivedVariable = False + info@clampVariable = True + ; -- contour intervals + info@cn_Explicit = True + info@cn_Min = -999 + info@cn_Max = -999 + info@cn_Levels = (/0.0, 0.25, 0.5, 0.75, 1, 1.25, 1.5, 1.75, 2/) + info@cn_LevelsDiff = (/-1.0, -0.8, -0.6, -0.4, -0.2, 0., 0.2, 0.4, 0.6, 0.8, 1/) + return(info) + end if + + if (varName .eq. "SOMHR") then + info@flux=True + info@longName="SOM hetereotrophic respiration" + info@nativeUnits = "gC/m^2/s" + ; -- global Total + info@globalTotal__units = "NA" + info@globalTotal__SF = -999. + info@globalTotal_Annual__units = "PgC/y" + info@globalTotal_Annual__SF = secondsInYear * grams2Pgrams + ; -- global Mean + info@globalMean__units = "gC/m^2/s" + info@globalMean__SF = 1.0 + info@globalMean_Annual__units = "gC/m^2/y" + info@globalMean_Annual__SF = secondsInYear + info@globalMean_Daily__units = "gC/m^2/d" + info@globalMean_Daily__SF = secondsInDay + ; -- Origin + info@model = "CN" + info@derivedVariable = False + info@clampVariable = False + ; -- contour intervals + info@cn_Explicit = True + info@cn_Min = -999 + info@cn_Max = -999 + info@cn_Levels = (/0.0, 0.25, 0.5, 0.75, 1, 1.25, 1.5, 1.75, 2/) + info@cn_LevelsDiff = (/-1.0, -0.8, -0.6, -0.4, -0.2, 0., 0.2, 0.4, 0.6, 0.8, 1/) + return(info) + end if + + if (varName .eq. "WOODC_ALLOC") then + info@flux=True + info@longName="Wood C Allocation" + info@nativeUnits = "gC/m2s" + ; -- global Total + info@globalTotal__units = "NA" + info@globalTotal__SF = -999. + info@globalTotal_Annual__units = "PgC/y" + info@globalTotal_Annual__SF = secondsInYear * grams2Pgrams + ; -- global Mean + info@globalMean__units = "gC/m2s" + info@globalMean__SF = 1.0 + info@globalMean_Annual__units = "gC/m2y" + info@globalMean_Annual__SF = secondsInYear + info@globalMean_Daily__units = "gC/m2d" + info@globalMean_Daily__SF = secondsInDay + ; -- Origin + info@model = "CN" + info@derivedVariable = False + info@clampVariable = True + ; -- contour intervals + info@cn_Explicit = True + info@cn_Min = -999 + info@cn_Max = -999 + info@cn_Levels = (/0.0, 0.25, 0.5, 0.75, 1, 1.25, 1.5, 1.75, 2/) + info@cn_LevelsDiff = (/-1.0, -0.8, -0.6, -0.4, -0.2, 0., 0.2, 0.4, 0.6, 0.8, 1/) + return(info) + end if + + if (varName .eq. "WOODC_LOSS") then + info@flux=True + info@longName="Wood C Loss" + info@nativeUnits = "gC/m2s" + ; -- global Total + info@globalTotal__units = "NA" + info@globalTotal__SF = -999. + info@globalTotal_Annual__units = "PgC/y" + info@globalTotal_Annual__SF = secondsInYear * grams2Pgrams + ; -- global Mean + info@globalMean__units = "gC/m2s" + info@globalMean__SF = 1.0 + info@globalMean_Annual__units = "gC/m2y" + info@globalMean_Annual__SF = secondsInYear + info@globalMean_Daily__units = "gC/m2d" + info@globalMean_Daily__SF = secondsInDay + ; -- Origin + info@model = "CN" + info@derivedVariable = False + info@clampVariable = True + ; -- contour intervals + info@cn_Explicit = True + info@cn_Min = -999 + info@cn_Max = -999 + info@cn_Levels = (/0.0, 0.25, 0.5, 0.75, 1, 1.25, 1.5, 1.75, 2/) + info@cn_LevelsDiff = (/-1.0, -0.8, -0.6, -0.4, -0.2, 0., 0.2, 0.4, 0.6, 0.8, 1/) + return(info) + end if + + if (varName .eq. "WOOD_HARVESTC") then + info@flux=True + info@longName="Wood Harvest C (to prod pools)" + info@nativeUnits = "gC/m2s" + ; -- global Total + info@globalTotal__units = "NA" + info@globalTotal__SF = -999. + info@globalTotal_Annual__units = "PgC/y" + info@globalTotal_Annual__SF = secondsInYear * grams2Pgrams + ; -- global Mean + info@globalMean__units = "gC/m2s" + info@globalMean__SF = 1.0 + info@globalMean_Annual__units = "gC/m2y" + info@globalMean_Annual__SF = secondsInYear + info@globalMean_Daily__units = "gC/m2d" + info@globalMean_Daily__SF = secondsInDay + ; -- Origin + info@model = "CN" + info@derivedVariable = False + info@clampVariable = True + ; -- contour intervals + info@cn_Explicit = True + info@cn_Min = -999 + info@cn_Max = -999 + info@cn_Levels = (/0.0, 0.25, 0.5, 0.75, 1, 1.25, 1.5, 1.75, 2/) + info@cn_LevelsDiff = (/-1.0, -0.8, -0.6, -0.4, -0.2, 0., 0.2, 0.4, 0.6, 0.8, 1/) + return(info) + end if + + if (varName .eq. "WOOD_HARVESTN") then + info@flux=True + info@longName="Wood Harvest N (to prod pools)" + info@nativeUnits = "gN/m2s" + ; -- global Total + info@globalTotal__units = "NA" + info@globalTotal__SF = -999. + info@globalTotal_Annual__units = "PgN/y" + info@globalTotal_Annual__SF = secondsInYear * grams2Pgrams + ; -- global Mean + info@globalMean__units = "gN/m2s" + info@globalMean__SF = 1.0 + info@globalMean_Annual__units = "gN/m2y" + info@globalMean_Annual__SF = secondsInYear + info@globalMean_Daily__units = "gN/m2d" + info@globalMean_Daily__SF = secondsInDay + ; -- Origin + info@model = "CN" + info@derivedVariable = False + info@clampVariable = True + ; -- contour intervals + info@cn_Explicit = True + info@cn_Min = -999 + info@cn_Max = -999 + info@cn_Levels = (/0.0, 0.25, 0.5, 0.75, 1, 1.25, 1.5, 1.75, 2/) + info@cn_LevelsDiff = (/-1.0, -0.8, -0.6, -0.4, -0.2, 0., 0.2, 0.4, 0.6, 0.8, 1/) + return(info) + end if + + if (varName .eq. "TOT_WOODPRODC_LOSS") then + info@flux=True + info@longName="Total C loss from wood prod pools" + info@nativeUnits = "gC/m2s" + ; -- global Total + info@globalTotal__units = "NA" + info@globalTotal__SF = -999. + info@globalTotal_Annual__units = "PgC/y" + info@globalTotal_Annual__SF = secondsInYear * grams2Pgrams + ; -- global Mean + info@globalMean__units = "gC/m2s" + info@globalMean__SF = 1.0 + info@globalMean_Annual__units = "gC/m2y" + info@globalMean_Annual__SF = secondsInYear + info@globalMean_Daily__units = "gC/m2d" + info@globalMean_Daily__SF = secondsInDay + ; -- Origin + info@model = "CN" + info@derivedVariable = False + info@clampVariable = True + ; -- contour intervals + info@cn_Explicit = True + info@cn_Min = -999 + info@cn_Max = -999 + info@cn_Levels = (/0.0, 0.25, 0.5, 0.75, 1, 1.25, 1.5, 1.75, 2/) + info@cn_LevelsDiff = (/-1.0, -0.8, -0.6, -0.4, -0.2, 0., 0.2, 0.4, 0.6, 0.8, 1/) + return(info) + end if + + if (varName .eq. "TOT_WOODPRODN_LOSS") then + info@flux=True + info@longName="Total N loss from wood prod pools" + info@nativeUnits = "gN/m2s" + ; -- global Total + info@globalTotal__units = "NA" + info@globalTotal__SF = -999. + info@globalTotal_Annual__units = "PgN/y" + info@globalTotal_Annual__SF = secondsInYear * grams2Pgrams + ; -- global Mean + info@globalMean__units = "gN/m2s" + info@globalMean__SF = 1.0 + info@globalMean_Annual__units = "gN/m2y" + info@globalMean_Annual__SF = secondsInYear + info@globalMean_Daily__units = "gN/m2d" + info@globalMean_Daily__SF = secondsInDay + ; -- Origin + info@model = "CN" + info@derivedVariable = False + info@clampVariable = True + ; -- contour intervals + info@cn_Explicit = True + info@cn_Min = -999 + info@cn_Max = -999 + info@cn_Levels = (/0.0, 0.25, 0.5, 0.75, 1, 1.25, 1.5, 1.75, 2/) + info@cn_LevelsDiff = (/-1.0, -0.8, -0.6, -0.4, -0.2, 0., 0.2, 0.4, 0.6, 0.8, 1/) + return(info) + end if + + if (varName .eq. "PROD10C_LOSS") then + info@flux=True + info@longName="C loss from 10-yr wood prod pool" + info@nativeUnits = "gC/m2s" + ; -- global Total + info@globalTotal__units = "NA" + info@globalTotal__SF = -999. + info@globalTotal_Annual__units = "PgC/y" + info@globalTotal_Annual__SF = secondsInYear * grams2Pgrams + ; -- global Mean + info@globalMean__units = "gC/m2s" + info@globalMean__SF = 1.0 + info@globalMean_Annual__units = "gC/m2y" + info@globalMean_Annual__SF = secondsInYear + info@globalMean_Daily__units = "gC/m2d" + info@globalMean_Daily__SF = secondsInDay + ; -- Origin + info@model = "CN" + info@derivedVariable = False + info@clampVariable = True + ; -- contour intervals + info@cn_Explicit = True + info@cn_Min = -999 + info@cn_Max = -999 + info@cn_Levels = (/0.0, 0.25, 0.5, 0.75, 1, 1.25, 1.5, 1.75, 2/) + info@cn_LevelsDiff = (/-1.0, -0.8, -0.6, -0.4, -0.2, 0., 0.2, 0.4, 0.6, 0.8, 1/) + return(info) + end if + + if (varName .eq. "PROD10N_LOSS") then + info@flux=True + info@longName="N loss from 10-yr wood prod pool" + info@nativeUnits = "gN/m2s" + ; -- global Total + info@globalTotal__units = "NA" + info@globalTotal__SF = -999. + info@globalTotal_Annual__units = "PgN/y" + info@globalTotal_Annual__SF = secondsInYear * grams2Pgrams + ; -- global Mean + info@globalMean__units = "gN/m2s" + info@globalMean__SF = 1.0 + info@globalMean_Annual__units = "gN/m2y" + info@globalMean_Annual__SF = secondsInYear + info@globalMean_Daily__units = "gN/m2d" + info@globalMean_Daily__SF = secondsInDay + ; -- Origin + info@model = "CN" + info@derivedVariable = False + info@clampVariable = True + ; -- contour intervals + info@cn_Explicit = True + info@cn_Min = -999 + info@cn_Max = -999 + info@cn_Levels = (/0.0, 0.25, 0.5, 0.75, 1, 1.25, 1.5, 1.75, 2/) + info@cn_LevelsDiff = (/-1.0, -0.8, -0.6, -0.4, -0.2, 0., 0.2, 0.4, 0.6, 0.8, 1/) + return(info) + end if + + if (varName .eq. "PROD100C_LOSS") then + info@flux=True + info@longName="C loss from 100-yr wood prod pool" + info@nativeUnits = "gC/m2s" + ; -- global Total + info@globalTotal__units = "NA" + info@globalTotal__SF = -999. + info@globalTotal_Annual__units = "PgC/y" + info@globalTotal_Annual__SF = secondsInYear * grams2Pgrams + ; -- global Mean + info@globalMean__units = "gC/m2s" info@globalMean__SF = 1.0 - info@globalMean_Annual__units = "gC/m^2/y" + info@globalMean_Annual__units = "gC/m2y" info@globalMean_Annual__SF = secondsInYear - info@globalMean_Daily__units = "gC/m^2/d" + info@globalMean_Daily__units = "gC/m2d" info@globalMean_Daily__SF = secondsInDay ; -- Origin info@model = "CN" info@derivedVariable = False - info@clampVariable = False + info@clampVariable = True ; -- contour intervals info@cn_Explicit = True info@cn_Min = -999 info@cn_Max = -999 - info@cn_Levels = (/.25, 0.5, 1.0, 2.0, 3., 4., 5., 6., 7./) - info@cn_LevelsDiff = (/-2.50, -2, -1.5, -1, -0.5, 0, 0.5, 1, 1.5, 2, 2.5/) + info@cn_Levels = (/0.0, 0.25, 0.5, 0.75, 1, 1.25, 1.5, 1.75, 2/) + info@cn_LevelsDiff = (/-1.0, -0.8, -0.6, -0.4, -0.2, 0., 0.2, 0.4, 0.6, 0.8, 1/) return(info) end if - if (varName .eq. "LITHR") then + if (varName .eq. "PROD100N_LOSS") then info@flux=True - info@longName="litter hetereotrophic respiration" - info@nativeUnits = "gC/m^2/s" + info@longName="N loss from 100-yr wood prod pool" + info@nativeUnits = "gN/m2s" ; -- global Total info@globalTotal__units = "NA" info@globalTotal__SF = -999. - info@globalTotal_Annual__units = "PgC/y" + info@globalTotal_Annual__units = "PgN/y" info@globalTotal_Annual__SF = secondsInYear * grams2Pgrams ; -- global Mean - info@globalMean__units = "gC/m^2/s" + info@globalMean__units = "gN/m2s" info@globalMean__SF = 1.0 - info@globalMean_Annual__units = "gC/m^2/y" + info@globalMean_Annual__units = "gN/m2y" info@globalMean_Annual__SF = secondsInYear - info@globalMean_Daily__units = "gC/m^2/d" + info@globalMean_Daily__units = "gN/m2d" info@globalMean_Daily__SF = secondsInDay ; -- Origin info@model = "CN" info@derivedVariable = False - info@clampVariable = False + info@clampVariable = True ; -- contour intervals info@cn_Explicit = True info@cn_Min = -999 info@cn_Max = -999 - info@cn_Levels = (/.12, 0.25, 0.5, 0.75, 1.0, 1.25, 1.5, 1.75, 2./) - info@cn_LevelsDiff = (/-1.0, -0.8, -0.6, -0.4, -0.2, 0, 0.2, 0.4, 0.6, 0.8, 1/) + info@cn_Levels = (/0.0, 0.25, 0.5, 0.75, 1, 1.25, 1.5, 1.75, 2/) + info@cn_LevelsDiff = (/-1.0, -0.8, -0.6, -0.4, -0.2, 0., 0.2, 0.4, 0.6, 0.8, 1/) return(info) end if - - if (varName .eq. "SOILC_HR") then + + if (varName .eq. "DWT_PROD10C_GAIN") then info@flux=True - info@longName="Soil C hetereotrophic respiration" - info@nativeUnits = "gC/m2s" + info@longName="LCC-driven addition to 10-yr wood prod pool" + info@nativeUnits = "gC/m2s" ; -- global Total info@globalTotal__units = "NA" info@globalTotal__SF = -999. info@globalTotal_Annual__units = "PgC/y" - info@globalTotal_Annual__SF = secondsInYear * grams2Pgrams + info@globalTotal_Annual__SF = secondsInYear * grams2Pgrams ; -- global Mean - info@globalMean__units = "gC/m^2/s" + info@globalMean__units = "gC/m2s" info@globalMean__SF = 1.0 - info@globalMean_Annual__units = "gC/m^2/y" - info@globalMean_Annual__SF = secondsInYear - info@globalMean_Daily__units = "gC/m^2/d" - info@globalMean_Daily__SF = secondsInDay - ; -- Origin - info@model = "CN" - info@derivedVariable = False + info@globalMean_Annual__units = "gC/m2y" + info@globalMean_Annual__SF = secondsInYear + info@globalMean_Daily__units = "gC/m2d" + info@globalMean_Daily__SF = secondsInDay + ; -- Origin + info@model = "CN" + info@derivedVariable = False info@clampVariable = True ; -- contour intervals info@cn_Explicit = True @@ -741,25 +1175,25 @@ begin return(info) end if - if (varName .eq. "SOILC_LOSS") then + if (varName .eq. "DWT_PROD10N_GAIN") then info@flux=True - info@longName="Soil C Loss" - info@nativeUnits = "gC/m2s" + info@longName="LCC-driven addition to 10-yr wood prod pool" + info@nativeUnits = "gN/m2s" ; -- global Total info@globalTotal__units = "NA" info@globalTotal__SF = -999. - info@globalTotal_Annual__units = "PgC/y" - info@globalTotal_Annual__SF = secondsInYear * grams2Pgrams + info@globalTotal_Annual__units = "PgN/y" + info@globalTotal_Annual__SF = secondsInYear * grams2Pgrams ; -- global Mean - info@globalMean__units = "gC/m^2/s" + info@globalMean__units = "gN/m2s" info@globalMean__SF = 1.0 - info@globalMean_Annual__units = "gC/m^2/y" - info@globalMean_Annual__SF = secondsInYear - info@globalMean_Daily__units = "gC/m^2/d" - info@globalMean_Daily__SF = secondsInDay - ; -- Origin - info@model = "CN" - info@derivedVariable = False + info@globalMean_Annual__units = "gN/m2y" + info@globalMean_Annual__SF = secondsInYear + info@globalMean_Daily__units = "gN/m2d" + info@globalMean_Daily__SF = secondsInDay + ; -- Origin + info@model = "CN" + info@derivedVariable = False info@clampVariable = True ; -- contour intervals info@cn_Explicit = True @@ -770,26 +1204,26 @@ begin return(info) end if - if (varName .eq. "SOMHR") then + if (varName .eq. "DWT_PROD100C_GAIN") then info@flux=True - info@longName="SOM hetereotrophic respiration" - info@nativeUnits = "gC/m^2/s" + info@longName="LCC-driven addition to 100-yr wood prod pool" + info@nativeUnits = "gC/m2s" ; -- global Total info@globalTotal__units = "NA" info@globalTotal__SF = -999. info@globalTotal_Annual__units = "PgC/y" - info@globalTotal_Annual__SF = secondsInYear * grams2Pgrams + info@globalTotal_Annual__SF = secondsInYear * grams2Pgrams ; -- global Mean - info@globalMean__units = "gC/m^2/s" + info@globalMean__units = "gC/m2s" info@globalMean__SF = 1.0 - info@globalMean_Annual__units = "gC/m^2/y" - info@globalMean_Annual__SF = secondsInYear - info@globalMean_Daily__units = "gC/m^2/d" - info@globalMean_Daily__SF = secondsInDay + info@globalMean_Annual__units = "gC/m2y" + info@globalMean_Annual__SF = secondsInYear + info@globalMean_Daily__units = "gC/m2d" + info@globalMean_Daily__SF = secondsInDay ; -- Origin info@model = "CN" info@derivedVariable = False - info@clampVariable = False + info@clampVariable = True ; -- contour intervals info@cn_Explicit = True info@cn_Min = -999 @@ -799,25 +1233,25 @@ begin return(info) end if - if (varName .eq. "WOODC_ALLOC") then + if (varName .eq. "DWT_PROD100N_GAIN") then info@flux=True - info@longName="Wood C Allocation" - info@nativeUnits = "gC/m2s" + info@longName="LCC-driven addition to 100-yr wood prod pool" + info@nativeUnits = "gN/m2s" ; -- global Total info@globalTotal__units = "NA" info@globalTotal__SF = -999. - info@globalTotal_Annual__units = "PgC/y" - info@globalTotal_Annual__SF = secondsInYear * grams2Pgrams + info@globalTotal_Annual__units = "PgN/y" + info@globalTotal_Annual__SF = secondsInYear * grams2Pgrams ; -- global Mean - info@globalMean__units = "gC/m2s" + info@globalMean__units = "gN/m2s" info@globalMean__SF = 1.0 - info@globalMean_Annual__units = "gC/m2y" - info@globalMean_Annual__SF = secondsInYear - info@globalMean_Daily__units = "gC/m2d" - info@globalMean_Daily__SF = secondsInDay - ; -- Origin - info@model = "CN" - info@derivedVariable = False + info@globalMean_Annual__units = "gN/m2y" + info@globalMean_Annual__SF = secondsInYear + info@globalMean_Daily__units = "gN/m2d" + info@globalMean_Daily__SF = secondsInDay + ; -- Origin + info@model = "CN" + info@derivedVariable = False info@clampVariable = True ; -- contour intervals info@cn_Explicit = True @@ -828,9 +1262,9 @@ begin return(info) end if - if (varName .eq. "WOODC_LOSS") then + if (varName .eq. "DWT_CONV_CFLUX") then info@flux=True - info@longName="Wood C Loss" + info@longName="conversion C flux (immediate loss to atm)" info@nativeUnits = "gC/m2s" ; -- global Total info@globalTotal__units = "NA" @@ -2702,6 +3136,64 @@ if (varName .eq. "LITTERC_HR") then return(info) end if + if (varName .eq. "FERT") then + info@flux=True + info@longName="fertilizer added" + info@nativeUnits = "gN/m^2/s" + ; -- global Total + info@globalTotal__units = "NA" + info@globalTotal__SF = -999. + info@globalTotal_Annual__units = "TgN/y" + info@globalTotal_Annual__SF = grams2Tgrams * secondsInYear + ; -- global Mean + info@globalMean__units = "gN/m^2/s" + info@globalMean__SF = 1.0 + info@globalMean_Annual__units = "gN/m^2/y" + info@globalMean_Annual__SF = secondsInYear + info@globalMean_Daily__units = "gN/m^2/d" + info@globalMean_Daily__SF = secondsInDay + ; -- Origin + info@model = "CN" + info@derivedVariable = False + info@clampVariable = False + ; -- contour intervals + info@cn_Explicit = True + info@cn_Min = -999 + info@cn_Max = -999 + info@cn_Levels = (/.01, 0.03, 0.05, 0.08, 0.10, 0.13, 0.15, 0.18, 0.2/) + info@cn_LevelsDiff = (/-.01, -0.008, -0.006, -0.004, -0.002, 0, 0.002, 0.004, 0.006, 0.008, 0.01/) + return(info) + end if + + if (varName .eq. "FERT_TO_SMINN") then + info@flux=True + info@longName="fertilizer to soil mineral N" + info@nativeUnits = "gN/m^2/s" + ; -- global Total + info@globalTotal__units = "NA" + info@globalTotal__SF = -999. + info@globalTotal_Annual__units = "TgN/y" + info@globalTotal_Annual__SF = grams2Tgrams * secondsInYear + ; -- global Mean + info@globalMean__units = "gN/m^2/s" + info@globalMean__SF = 1.0 + info@globalMean_Annual__units = "gN/m^2/y" + info@globalMean_Annual__SF = secondsInYear + info@globalMean_Daily__units = "gN/m^2/d" + info@globalMean_Daily__SF = secondsInDay + ; -- Origin + info@model = "CN" + info@derivedVariable = False + info@clampVariable = False + ; -- contour intervals + info@cn_Explicit = True + info@cn_Min = -999 + info@cn_Max = -999 + info@cn_Levels = (/.01, 0.03, 0.05, 0.08, 0.10, 0.13, 0.15, 0.18, 0.2/) + info@cn_LevelsDiff = (/-.01, -0.008, -0.006, -0.004, -0.002, 0, 0.002, 0.004, 0.006, 0.008, 0.01/) + return(info) + end if + if (varName .eq. "RETRANSN_TO_NPOOL") then info@flux=True info@longName="Retranslocated N to NPool" @@ -5878,6 +6370,64 @@ if (varName .eq. "LITTERC_HR") then info@globalMean_Daily__SF = -999. ; -- Origin info@model = "CLM" + info@derivedVariable = True + info@clampVariable = True + ; -- contour intervals + info@cn_Explicit = True + info@cn_Min = -999 + info@cn_Max = -999 + info@cn_Levels = (/0.,0.15,0.3,0.45,0.6,0.75,0.9,1.05,1.2/) + info@cn_LevelsDiff = (/-.5,-.4,-.3,-.2,-.1,0.,.1,.2,.3,.4,.5/) + return(info) + end if + + if (varName .eq. "BTRAN2") then + info@flux=False + info@longName="root zone soil moisture factor" + info@nativeUnits = "unitless" + ; -- global Total + info@globalTotal__units = "unitless" + info@globalTotal__SF = 1.0 + info@globalTotal_Annual__units = "NA" + info@globalTotal_Annual__SF = -999. + ; -- global Mean + info@globalMean__units = "unitless" + info@globalMean__SF = 1.0 + info@globalMean_Annual__units = "NA" + info@globalMean_Annual__SF = -999. + info@globalMean_Daily__units = "NA" + info@globalMean_Daily__SF = -999. + ; -- Origin + info@model = "CLM" + info@derivedVariable = False + info@clampVariable = True + ; -- contour intervals + info@cn_Explicit = True + info@cn_Min = -999 + info@cn_Max = -999 + info@cn_Levels = (/0.,0.15,0.3,0.45,0.6,0.75,0.9,1.05,1.2/) + info@cn_LevelsDiff = (/-.5,-.4,-.3,-.2,-.1,0.,.1,.2,.3,.4,.5/) + return(info) + end if + + if (varName .eq. "BTRANMN") then + info@flux=False + info@longName="daily minimum of transpiration beta factor" + info@nativeUnits = "unitless" + ; -- global Total + info@globalTotal__units = "unitless" + info@globalTotal__SF = 1.0 + info@globalTotal_Annual__units = "NA" + info@globalTotal_Annual__SF = -999. + ; -- global Mean + info@globalMean__units = "unitless" + info@globalMean__SF = 1.0 + info@globalMean_Annual__units = "NA" + info@globalMean_Annual__SF = -999. + info@globalMean_Daily__units = "NA" + info@globalMean_Daily__SF = -999. + ; -- Origin + info@model = "CLM" info@derivedVariable = False info@clampVariable = True ; -- contour intervals @@ -6697,6 +7247,35 @@ if (varName .eq. "LITTERC_HR") then return(info) end if + if (varName .eq. "QIRRIG") then + info@flux=True + info@longName="water added through irrig" + info@nativeUnits = "mm/s" + ; -- global Total + info@globalTotal__units = "NA" + info@globalTotal__SF = -999. + info@globalTotal_Annual__units = "mm/y" + info@globalTotal_Annual__SF = secondsInYear + ; -- global Mean + info@globalMean__units = "mm/s" + info@globalMean__SF = 1.0 + info@globalMean_Annual__units = "mm/y" + info@globalMean_Annual__SF = secondsInYear + info@globalMean_Daily__units = "mm/d" + info@globalMean_Daily__SF = secondsInDay + ; -- Origin + info@model = "CN" + info@derivedVariable = False + info@clampVariable = False + ; -- contour intervals + info@cn_Explicit = True + info@cn_Min = -999 + info@cn_Max = -999 + info@cn_Levels = (/0.,.5,1.,1.5,2.,2.5,3.,3.5,4./) + info@cn_LevelsDiff = (/-5.,-2.5,-1.,-.5,-.1,0.,.1,.5,1.,2.5,5./) + return(info) + end if + if (varName .eq. "QRGWL") then info@flux=True info@longName="surface runoff at glaciers, wetlands, lakes" diff --git a/lnd_diag/model-obs/set_1.ncl b/lnd_diag/model-obs/set_1.ncl index 37950e4b..840ac09a 100755 --- a/lnd_diag/model-obs/set_1.ncl +++ b/lnd_diag/model-obs/set_1.ncl @@ -116,7 +116,8 @@ begin ;; print ("DEBUG 1 cases(0) = "+cases(0)) cases(1) = " No Obs" filevar = vars(i) - if(isfilevar(in,filevar))then + info = var_init(vars(i)) + if(isfilevar(in,filevar) .and. info@derivedVariable .eq. False)then if (c13Flag(i) .eq. "C13_") then x = derive_del13C(vars(i),in,scale_type(i),nyrs,1) else diff --git a/lnd_diag/model-obs/set_2.ncl b/lnd_diag/model-obs/set_2.ncl index a0620618..be4ff994 100755 --- a/lnd_diag/model-obs/set_2.ncl +++ b/lnd_diag/model-obs/set_2.ncl @@ -219,7 +219,7 @@ begin delete(x1) end if - if (filevar .ne. "")then + if (filevar .ne. "" .and. info@derivedVariable .eq. False)then if (c13Flag(i) .eq. "C13_") then x1 = derive_del13C(vars(i),in1,scale_type(i),0,2) else diff --git a/lnd_diag/model-obs/set_3.ncl b/lnd_diag/model-obs/set_3.ncl index aeb72277..84ce97c7 100755 --- a/lnd_diag/model-obs/set_3.ncl +++ b/lnd_diag/model-obs/set_3.ncl @@ -109,7 +109,7 @@ do p=0,nplots-1 titstr(4) = "Canopy Evaporation" titstr(5) = "Ground Evaporation" titstr(6) = "Ground Heat + Snow Melt" - titstr(7) = "Soil moisture factor (BTRAN)" + titstr(7) = "Soil moisture factor (BTRAN or BTRANMN)" titstr(8) = "Evaporative Fraction" titstr(9) = "Total LAI" end if @@ -488,7 +488,7 @@ do p=0,nplots-1 ; check for variables in case 1 vcheck1(i) = True info = var_init(vars(i)) - if(isfilevar(in1,vars(i)))then + if(isfilevar(in1,vars(i)) .and. info@derivedVariable .eq. False)then x1 = in1->$vars(i)$ plot_check = True else @@ -1041,7 +1041,7 @@ if(plot_check.eq.True)then end if x1 = array1(i,:,:,:) compare = "model" - if (vars(i) .eq. "ALBEDO" .or. aFlag(i) .eq. 0) then ; any albedo variable + if (vars(i) .eq. "ALBEDO" .or. aFlag(i) .eq. 1) then ; any albedo variable var_plot1 = regional_albedo(x1,region,area1,fland1,scale_type(i),\ regions_file,nmons,compare) else diff --git a/lnd_diag/model-obs/set_5.ncl b/lnd_diag/model-obs/set_5.ncl index 317fedbf..a6db0bc8 100755 --- a/lnd_diag/model-obs/set_5.ncl +++ b/lnd_diag/model-obs/set_5.ncl @@ -165,7 +165,7 @@ do p=0,nplots-1 landmask3 = new((/nvars,nlat3,nlon3/),"double") area3 = new((/nvars,nlat3,nlon3/),"double") - ptr_alb = addfile(obsdata+"/T42_MODIS_ALLMONS_climo.070523.nc","r") ; precip + ptr_alb = addfile(obsdata+"/T42_MODIS_ALLMONS_climo.070523.nc","r") ; VBSA, NBSA, VWSA, NWSA lat4 = ptr_alb->lat lon4 = ptr_alb->lon nlat4 = dimsizes(lat4) @@ -173,6 +173,29 @@ do p=0,nplots-1 landmask4 = new((/nvars,nlat4,nlon4/),"double") area4 = new((/nvars,nlat4,nlon4/),"double") + ptr_lai = addfile(obsdata+"/MODIS_LAI_ANN_climo.nc","r") ; TLAI + lat5 = ptr_lai->lat + lon5 = ptr_lai->lon + nlat5 = dimsizes(lat5) + nlon5 = dimsizes(lon5) + landmask5 = new((/nvars,nlat5,nlon5/),"double") + area5 = new((/nvars,nlat5,nlon5/),"double") + + ptr_gpp = addfile(obsdata+"/MR_GPP_0.9x1.25_ANN_climo.nc","r") ; FPSN or GPP + lat6 = ptr_gpp->lat + lon6 = ptr_gpp->lon + nlat6 = dimsizes(lat6) + nlon6 = dimsizes(lon6) + landmask6 = new((/nvars,nlat6,nlon6/),"double") + area6 = new((/nvars,nlat6,nlon6/),"double") + + ptr_lhf = addfile(obsdata+"/MR_LHF_0.9x1.25_ANN_climo.nc","r") ; LHEAT + lat7 = ptr_lhf->lat + lon7 = ptr_lhf->lon + nlat7 = dimsizes(lat7) + nlon7 = dimsizes(lon7) + landmask7 = new((/nvars,nlat7,nlon7/),"double") + area7 = new((/nvars,nlat7,nlon7/),"double") months = 12 mm = ispan(0,months-1,1) @@ -186,6 +209,9 @@ do p=0,nplots-1 array2 = new((/nvars, nlat2, nlon2/),"double") array3 = new((/nvars, nlat3, nlon3/),"double") array4 = new((/nvars, nlat4, nlon4/),"double") + array5 = new((/nvars, nlat5, nlon5/),"double") + array6 = new((/nvars, nlat6, nlon6/),"double") + array7 = new((/nvars, nlat7, nlon7/),"double") array13c1 = new((/nvars/),"double") array13c2 = new((/nvars/),"double") @@ -206,7 +232,7 @@ do p=0,nplots-1 ; check for variables in case 1 info = var_init(vars(i)) filevar = vars(i) - if(isfilevar(in1,filevar))then + if(isfilevar(in1,filevar) .and. info@derivedVariable .eq. False)then if (c13Flag(i) .eq. "C13_") then x1 = derive_del13C(vars(i),in1,scale_type(i),nyrs,5) if(all(ismissing(x1)))then @@ -242,6 +268,15 @@ do p=0,nplots-1 if (isvar("x4")) then delete(x4) end if + if (isvar("x5")) then + delete(x5) + end if + if (isvar("x6")) then + delete(x6) + end if + if (isvar("x7")) then + delete(x7) + end if if (vars(i) .eq. "TSA" ) then tmp = ptr_wm->$vars(i)$ x2 = dim_avg(tmp(lat|:,lon|:,month|:)) @@ -348,8 +383,41 @@ do p=0,nplots-1 resoln(i) = 4 delete(tmp) else - obsFlag(i) = 0; - resoln(i) = 1; + if (vars(i) .eq. "TLAI") then + x5 = ptr_lai->TLAI + l5 = ptr_lai->landmask + a5 = ptr_lai->area + x5@_FillValue = 1e36 + obsFlag(i) = 1; + resoln(i) = 5 + else + if ((vars(i) .eq. "FPSN" .and. cn .eq. 0) .or. vars(i) .eq. "GPP") then + x6 = ptr_gpp->GPP ; gC/m2/day + x6@_FillValue = -9999. + grams2Pgrams = 1e-15 + x6 = x6 * daysInYear * grams2Pgrams + l6 = ptr_gpp->datamask + a6 = ptr_gpp->area + km2tom2 = 1.e6 + a6 = a6 * km2tom2 + obsFlag(i) = 1; + resoln(i) = 6 + else + if (vars(i) .eq. "LHEAT") then + x7 = ptr_lhf->LHF + l7 = ptr_lhf->datamask + a7 = ptr_lhf->area + x7@_FillValue = -9999. + km2tom2 = 1.e6 + a7 = a7 * km2tom2 + obsFlag(i) = 1; + resoln(i) = 7 + else + obsFlag(i) = 0; + resoln(i) = 1; + end if + end if + end if end if end if end if @@ -448,6 +516,84 @@ do p=0,nplots-1 delete(a4) delete(x4) end if + if (isvar("x5")) then + x5 = catchNaN(x5) + x5!0 = "lat" + x5&lat = lat5 + x5!1 = "lon" + x5&lon = lon5 + a5!0 = "lat" + a5!1 = "lon" + l5!0 = "lat" + l5!1 = "lon" + a5&lat = lat5 + a5&lon = lon5 + l5&lat = lat5 + l5&lon = lon5 + if (min(x5&lon) .ge. 0) then + x5 = lonFlip(x5) + a5 = lonFlip(a5) + l5 = lonFlip(l5) + end if + array5(i,:,:) = x5 ; Wrapper fcn that copies coord Vars + landmask5(i,:,:) = l5 + area5(i,:,:) = a5 + delete(l5) + delete(a5) + delete(x5) + end if + if (isvar("x6")) then + x6 = catchNaN(x6) + x6!0 = "lat" + x6&lat = lat6 + x6!1 = "lon" + x6&lon = lon6 + a6!0 = "lat" + a6!1 = "lon" + l6!0 = "lat" + l6!1 = "lon" + a6&lat = lat6 + a6&lon = lon6 + l6&lat = lat6 + l6&lon = lon6 + if (min(x6&lon) .ge. 0) then + x6 = lonFlip(x6) + a6 = lonFlip(a6) + l6 = lonFlip(l6) + end if + array6(i,:,:) = x6 ; Wrapper fcn that copies coord Vars + landmask6(i,:,:) = l6 + area6(i,:,:) = a6 + delete(l6) + delete(a6) + delete(x6) + end if + if (isvar("x7")) then + x7 = catchNaN(x7) + x7!0 = "lat" + x7&lat = lat7 + x7!1 = "lon" + x7&lon = lon7 + a7!0 = "lat" + a7!1 = "lon" + l7!0 = "lat" + l7!1 = "lon" + a7&lat = lat7 + a7&lon = lon7 + l7&lat = lat7 + l7&lon = lon7 + if (min(x7&lon) .ge. 0) then + x7 = lonFlip(x7) + a7 = lonFlip(a7) + l7 = lonFlip(l7) + end if + array7(i,:,:) = x7 ; Wrapper fcn that copies coord Vars + landmask7(i,:,:) = l7 + area7(i,:,:) = a7 + delete(l7) + delete(a7) + delete(x7) + end if end if ; catch NaNs @@ -524,7 +670,25 @@ do region=startNumber,nreg-1 regions_file,time1,nTime,compare) delete(x4) end if - ; print("processing Variable " + vars(i) + " value = " + value2) + if (resoln(i) .eq. 5) then + x5 = array5(i,:,:) + value2 = regional_values(x5,region,area5(i,:,:),landmask5(i,:,:),scale_type(i),\ + regions_file,time1,nTime,compare) + delete(x5) + end if + if (resoln(i) .eq. 6) then + x6 = array6(i,:,:) + value2 = regional_values(x6,region,area6(i,:,:),landmask6(i,:,:),scale_type(i),\ + regions_file,time1,nTime,compare) + delete(x6) + end if + if (resoln(i) .eq. 7) then + x7 = array7(i,:,:) + value2 = regional_values(x7,region,area7(i,:,:),landmask7(i,:,:),scale_type(i),\ + regions_file,time1,nTime,compare) + delete(x7) + end if + ; print("processing Variable " + vars(i) + " value = " + value2) else value2 = -999. end if @@ -583,9 +747,15 @@ do region=startNumber,nreg-1 delete(area2) delete(area3) delete(area4) + delete(area5) + delete(area6) + delete(area7) delete(landmask2) delete(landmask3) delete(landmask4) + delete(landmask5) + delete(landmask6) + delete(landmask7) delete(vv) delete(vars) delete(c13Flag) @@ -597,6 +767,9 @@ do region=startNumber,nreg-1 delete(array2) delete(array3) delete(array4) + delete(array5) + delete(array6) + delete(array7) delete(array13c1) delete(array13c2) delete(scale_type) diff --git a/lnd_diag/model-obs/set_6.ncl b/lnd_diag/model-obs/set_6.ncl index a7a09cbf..5372875d 100755 --- a/lnd_diag/model-obs/set_6.ncl +++ b/lnd_diag/model-obs/set_6.ncl @@ -78,7 +78,7 @@ print("Now printing plot #" + p) if (p .eq. 1) then fileName = "set6_radFlx.txt" plot_name = "radf" - titstr = new(7,"string") + titstr = new(8,"string") titstr(0) = "Incoming Solar" titstr(1) = "Albedo" titstr(2) = "Absorbed Solar" @@ -86,6 +86,7 @@ print("Now printing plot #" + p) titstr(4) = "Emitted Longwave" titstr(5) = "Net Longwave" titstr(6) = "Net Radiation" + titstr(7) = "Ground Snow Covered Fraction" end if if (p .eq. 2) then fileName = "set6_turbFlx.txt" @@ -98,7 +99,7 @@ print("Now printing plot #" + p) titstr(4) = "Canopy Evaporation" titstr(5) = "Ground Evaporation" titstr(6) = "Ground Heat + Snow Melt" - titstr(7) = "Soil moisture factor (BTRAN)" + titstr(7) = "Soil moisture factor (BTRAN or BTRANMN)" titstr(8) = "Total LAI" end if if (p .eq. 3) then @@ -124,7 +125,7 @@ print("Now printing plot #" + p) titstr(4) = "Heterotrophic Respiration" titstr(5) = "Ecosystem Respiration" titstr(6) = "Gridcell Surface CH4 Flux" - titstr(7) = "Leached Mineral Nitrogen" + titstr(7) = "Carbon Use Efficiency (NPP/GPP)" titstr(8) = "Soil NO3 Pool Loss to Leaching" titstr(9) = "Soil NO3 Pool Loss to Runoff" else @@ -344,7 +345,7 @@ print("processing " + vars(i) + " for plot " + p) ; check for variables in case 1 info = var_init(vars(i)) vcheck1(i) = True - if(isfilevar(in1,vars(i)))then + if(isfilevar(in1,vars(i)) .and. info@derivedVariable .eq. False)then x1 = in1->$vars(i)$ rank = dimsizes(dimsizes(x1)) plot_check = True diff --git a/lnd_diag/model1-model2/set_2_seas.ncl b/lnd_diag/model1-model2/set_2_seas.ncl index 9a1dcdd0..6072008e 100755 --- a/lnd_diag/model1-model2/set_2_seas.ncl +++ b/lnd_diag/model1-model2/set_2_seas.ncl @@ -241,7 +241,7 @@ begin ; not found in the file, then filevar will be "" plot_check = True - if (filevar .ne. "")then + if (filevar .ne. "" .and. info@derivedVariable .eq. False)then if (isvar("x1")) then delete(x1) end if @@ -277,7 +277,7 @@ begin ; not found in the file, then filevar will be "" plot_check = True - if (filevar .ne. "")then + if (filevar .ne. "" .and. info@derivedVariable .eq. False)then if (isvar("x2")) then delete(x2) end if diff --git a/lnd_diag/model1-model2/set_3.ncl b/lnd_diag/model1-model2/set_3.ncl index 5c43155a..55f0427d 100755 --- a/lnd_diag/model1-model2/set_3.ncl +++ b/lnd_diag/model1-model2/set_3.ncl @@ -106,7 +106,7 @@ print("Now printing plot #" + p) titstr(4) = "Canopy Evaporation" titstr(5) = "Ground Evaporation" titstr(6) = "Ground Heat + Snow Melt" - titstr(7) = "Soil moisture factor (BTRAN)" + titstr(7) = "Soil moisture factor (BTRAN or BTRANMN)" titstr(8) = "Evaporative Fraction" titstr(9) = "Total LAI" end if @@ -516,7 +516,7 @@ print(" p = " + p + " nvars = " + nvars) vcheck1(i) = True vcheck2(i) = True info = var_init(vars(i)) - if(isfilevar(in1,vars(i)))then + if(isfilevar(in1,vars(i)) .and. info@derivedVariable .eq. False)then x1 = in1->$vars(i)$ plot_check = True else @@ -529,7 +529,8 @@ print(" p = " + p + " nvars = " + nvars) end if end if ; check for variables in case 2 - if(isfilevar(in2,vars(i)))then + if(isfilevar(in2,vars(i)) .and. info@derivedVariable .eq. False)then + x2 = in2->$vars(i)$ plot_check = True else diff --git a/lnd_diag/model1-model2/set_9.ncl b/lnd_diag/model1-model2/set_9.ncl index f7ad698b..50d1d557 100755 --- a/lnd_diag/model1-model2/set_9.ncl +++ b/lnd_diag/model1-model2/set_9.ncl @@ -60,7 +60,7 @@ begin if (cn .eq. 1) then vars = (/"TSA","PREC","ASA","LHEAT","GPP","TLAI"/) ; prec = rain+snow else - vars = (/"TSA","PREC","ASA","LHEAT","FPSN"/) ; prec = rain+snow + vars = (/"TSA","PREC","ASA","LHEAT","FPSN","TLAI"/) ; prec = rain+snow end if seasons = (/"ANN","DJF","MAM","JJA","SON"/) nvars = dimsizes(vars) diff --git a/lnd_diag/shared/lnd_create_webpage.pl b/lnd_diag/shared/lnd_create_webpage.pl index 84819862..51aedf1b 100755 --- a/lnd_diag/shared/lnd_create_webpage.pl +++ b/lnd_diag/shared/lnd_create_webpage.pl @@ -457,7 +457,7 @@ sub set2Page printf fp_wp "
\n"; $snF = 0; @vSP = ("TSA","PREC","TOTRUNOFF","SNOWDP","SNOWDP","H2OSNO","FSNO", - "VBSA","NBSA","VWSA","NWSA","ASA","LHEAT","FPSN"); + "VBSA","NBSA","VWSA","NWSA","ASA","LHEAT","FPSN","TLAI"); @vCN = ("TSA","PREC","TOTRUNOFF","SNOWDP","SNOWDP","H2OSNO","FSNO", "VBSA","NBSA","VWSA","NWSA","ASA","LHEAT","GPP","TLAI"); if ($cn) { @VarArray = @vCN } @@ -1127,7 +1127,7 @@ sub set9Page { # set-specific header @time = ("DJF","MAM","JJA","SON","ANN"); - @vSP = ("TSA","PREC","ASA","LHEAT","FPSN"); + @vSP = ("TSA","PREC","ASA","LHEAT","FPSN","TLAI"); @vCN = ("TSA","PREC","ASA","LHEAT","GPP","TLAI"); if ($cn) { @vars = @vCN } else { @vars = @vSP } diff --git a/lnd_diag/shared/lnd_func.ncl b/lnd_diag/shared/lnd_func.ncl index 61a91377..6e01c0de 100755 --- a/lnd_diag/shared/lnd_func.ncl +++ b/lnd_diag/shared/lnd_func.ncl @@ -308,9 +308,11 @@ begin qvege = ptr ->QVEGE qvegt = ptr ->QVEGT qsoil = ptr ->QSOIL + rain = ptr ->RAIN + snow = ptr ->SNOW var = qvege ; trick to retain meta data - var = qvege+qvegt+qsoil + var = (rain+snow)-(qvege+qvegt+qsoil) return(var) end if @@ -329,9 +331,10 @@ begin if(var_name.eq."PCT_BSOIL_PFT") then var = ptr ->FSR var = var@_FillValue - if(isfilevar(ptr,"PCT_NAT_PFT"))then - pct_nat_pft = ptr ->PCT_NAT_PFT - var = pct_nat_pft(:,0,:,:) + if(isfilevar(ptr,"PCT_NAT_PFT") .and. isfilevar(ptr,"PCT_LANDUNIT"))then + pct_nat_pft = ptr ->PCT_NAT_PFT + pct_landunit = ptr ->PCT_LANDUNIT + var = pct_nat_pft(:,0,:,:) * (pct_landunit(:,0,:,:)/100.) ; Natural Veg Landunit end if return(var) end if @@ -339,10 +342,12 @@ begin if(var_name.eq."PCT_TREE_PFT") then var = ptr ->FSR var = var@_FillValue - if(isfilevar(ptr,"PCT_NAT_PFT"))then - pct_nat_pft = ptr ->PCT_NAT_PFT - var = pct_nat_pft(:,1,:,:)+pct_nat_pft(:,2,:,:)+pct_nat_pft(:,3,:,:)+pct_nat_pft(:,4,:,:)+ \ - pct_nat_pft(:,5,:,:)+pct_nat_pft(:,6,:,:)+pct_nat_pft(:,7,:,:)+pct_nat_pft(:,8,:,:) + if(isfilevar(ptr,"PCT_NAT_PFT") .and. isfilevar(ptr,"PCT_LANDUNIT"))then + pct_nat_pft = ptr ->PCT_NAT_PFT + pct_landunit = ptr ->PCT_LANDUNIT + var = (pct_nat_pft(:,1,:,:)+pct_nat_pft(:,2,:,:)+pct_nat_pft(:,3,:,:)+pct_nat_pft(:,4,:,:)+ \ + pct_nat_pft(:,5,:,:)+pct_nat_pft(:,6,:,:)+pct_nat_pft(:,7,:,:)+pct_nat_pft(:,8,:,:)) * \ + (pct_landunit(:,0,:,:)/100.) ; Natural Veg Landunit end if return(var) end if @@ -350,9 +355,11 @@ begin if(var_name.eq."PCT_GRASS_PFT") then var = ptr ->FSR var = var@_FillValue - if(isfilevar(ptr,"PCT_NAT_PFT"))then - pct_nat_pft = ptr ->PCT_NAT_PFT - var = pct_nat_pft(:,12,:,:)+pct_nat_pft(:,13,:,:)+pct_nat_pft(:,14,:,:) + if(isfilevar(ptr,"PCT_NAT_PFT") .and. isfilevar(ptr,"PCT_LANDUNIT"))then + pct_nat_pft = ptr ->PCT_NAT_PFT + pct_landunit = ptr ->PCT_LANDUNIT + var = (pct_nat_pft(:,12,:,:)+pct_nat_pft(:,13,:,:)+pct_nat_pft(:,14,:,:)) * \ + (pct_landunit(:,0,:,:)/100.) ; Natural Veg Landunit end if return(var) end if @@ -360,9 +367,11 @@ begin if(var_name.eq."PCT_SHRUB_PFT") then var = ptr ->FSR var = var@_FillValue - if(isfilevar(ptr,"PCT_NAT_PFT"))then - pct_nat_pft = ptr ->PCT_NAT_PFT - var = pct_nat_pft(:,9,:,:)+pct_nat_pft(:,10,:,:)+pct_nat_pft(:,11,:,:) + if(isfilevar(ptr,"PCT_NAT_PFT") .and. isfilevar(ptr,"PCT_LANDUNIT"))then + pct_nat_pft = ptr ->PCT_NAT_PFT + pct_landunit = ptr ->PCT_LANDUNIT + var = (pct_nat_pft(:,9,:,:)+pct_nat_pft(:,10,:,:)+pct_nat_pft(:,11,:,:)) * \ + (pct_landunit(:,0,:,:)/100.) ; Natural Veg Landunit end if return(var) end if @@ -370,10 +379,19 @@ begin if(var_name.eq."PCT_CROP_PFT") then var = ptr ->FSR var = var@_FillValue - if(isfilevar(ptr,"PCT_NAT_PFT"))then - pct_nat_pft = ptr ->PCT_NAT_PFT + if(isfilevar(ptr,"PCT_NAT_PFT") .and. isfilevar(ptr,"PCT_LANDUNIT"))then + pct_nat_pft = ptr ->PCT_NAT_PFT + pct_landunit = ptr ->PCT_LANDUNIT if (dimsizes(pct_nat_pft(0,:,0,0)) .gt. 15) then - var = pct_nat_pft(:,15,:,:)+pct_nat_pft(:,16,:,:) + var = (pct_nat_pft(:,15,:,:)+pct_nat_pft(:,16,:,:)) * \ + (pct_landunit(:,0,:,:)/100.) ; Natural Veg Landunit + var@longName = "Percent Crop on Natural Veg Landunit" + else + if (isfilevar(ptr,"PCT_CFT")) then + pct_cft = ptr ->PCT_CFT + var = dim_sum_n(pct_cft(:,:,:,:),1) * (pct_landunit(:,1,:,:)/100.) ; Crop Landunit + var@longName = "Percent Crop on Gridcell" + end if end if end if return(var) @@ -475,6 +493,29 @@ begin return(var) end if + if(var_name.eq."CUE")then + npp = ptr ->NPP + gpp = ptr ->GPP + + var = npp ; trick to retain meta data + if (any(gpp .eq. 0)) then ; set zeros to _FillValue + gpp = mask(gpp,(gpp .eq. 0),False) + end if + npp = where(npp .lt. 0,0.,npp) ; set negative npp to 0 + var = npp/gpp + var = where(var .gt. 1.,var@_FillValue,var) ; screen out CUE above 1.0 + return(var) + end if + + if(var_name.eq."BTRAN")then + if (isfilevar(ptr,"BTRANMN")) then + var = ptr ->BTRANMN + else + var = ptr ->BTRAN + end if + return(var) + end if + if(var_name.eq."TOTVEGCN")then totvegc = ptr ->TOTVEGC totvegn = ptr ->TOTVEGN @@ -960,6 +1001,12 @@ do t = 0,endTime end if ; end .all. loop end if + ; calculate area total + if(type .eq. "Totl")then ; set 5 (some) + weights_1n ({box_s(ar):box_n(ar)},{box_w(ar):box_e(ar)}) = \ + (area1({box_s(ar):box_n(ar)},{box_w(ar):box_e(ar)})* \ + fland1({box_s(ar):box_n(ar)},{box_w(ar):box_e(ar)})) + end if end if diff --git a/lnd_diag/shared/variable_master4.3.ncl b/lnd_diag/shared/variable_master4.3.ncl index f2fad744..a1b2dba4 100644 --- a/lnd_diag/shared/variable_master4.3.ncl +++ b/lnd_diag/shared/variable_master4.3.ncl @@ -105,6 +105,34 @@ begin info@cn_LevelsDiff = (/-1.0, -0.8, -0.6, -0.4, -0.2, 0, 0.2, 0.4, 0.6, 0.8, 1/) return(info) end if + if (varName .eq. "NBP") then + info@flux=True + info@longName="net biome production, includes fire, landuse and harvest flux" + info@nativeUnits = "gC/m^2/s" + ; -- global Total + info@globalTotal__units = "NA" + info@globalTotal__SF = -999. + info@globalTotal_Annual__units = "PgC/y" + info@globalTotal_Annual__SF = secondsInYear * grams2Pgrams + ; -- global Mean + info@globalMean__units = "gC/m^2/s" + info@globalMean__SF = 1.0 + info@globalMean_Annual__units = "gC/m^2/y" + info@globalMean_Annual__SF = secondsInYear + info@globalMean_Daily__units = "gC/m^2/d" + info@globalMean_Daily__SF = secondsInDay + ; -- Origin + info@model = "CN" + info@derivedVariable = False + info@clampVariable = False + ; -- contour intervals + info@cn_Explicit = True + info@cn_Min = -999 + info@cn_Max = -999 + info@cn_Levels = (/-1.0, -0.75, -0.5, -0.25, 0, 0.25, 0.5, 0.75, 1/) + info@cn_LevelsDiff = (/-1.0, -0.8, -0.6, -0.4, -0.2, 0, 0.2, 0.4, 0.6, 0.8, 1/) + return(info) + end if if (varName .eq. "GPP") then info@flux=True @@ -135,6 +163,35 @@ begin return(info) end if + if (varName .eq. "CUE") then + info@flux=True + info@longName="carbon use efficiency" + info@nativeUnits = "NPP/GPP" + ; -- global Total + info@globalTotal__units = "NA" + info@globalTotal__SF = -999. + info@globalTotal_Annual__units = "NA" + info@globalTotal_Annual__SF = -999. + ; -- global Mean + info@globalMean__units = "NPP/GPP" + info@globalMean__SF = 1.0 + info@globalMean_Annual__units = "NPP/GPP" + info@globalMean_Annual__SF = 1.0 + info@globalMean_Daily__units = "NPP/GPP" + info@globalMean_Daily__SF = 1.0 + ; -- Origin + info@model = "CN" + info@derivedVariable = True + info@clampVariable = False + ; -- contour intervals + info@cn_Explicit = True + info@cn_Min = -999 + info@cn_Max = -999 + info@cn_Levels = (/.5, 1.0, 1.5, 2.0, 4.0, 6., 8., 10., 12./) + info@cn_LevelsDiff = (/-5.0, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5/) + return(info) + end if + if (varName .eq. "LAND_USE_FLUX") then info@flux=True info@longName="total C emitted from land cover conversion and wood product pools" @@ -282,7 +339,7 @@ begin if (varName .eq. "PCT_CROP_PFT") then info@flux=False - info@longName="Percent Crop on Natural Veg Landunit" + info@longName="Percent Crop on Natural Veg Landunit or Gridcell (CropModel)" info@nativeUnits = "%" ; -- global Total info@globalTotal__units = "NA" @@ -664,73 +721,450 @@ begin info@globalTotal_Annual__units = "PgC/y" info@globalTotal_Annual__SF = secondsInYear * grams2Pgrams ; -- global Mean - info@globalMean__units = "gC/m^2/s" + info@globalMean__units = "gC/m^2/s" + info@globalMean__SF = 1.0 + info@globalMean_Annual__units = "gC/m^2/y" + info@globalMean_Annual__SF = secondsInYear + info@globalMean_Daily__units = "gC/m^2/d" + info@globalMean_Daily__SF = secondsInDay + ; -- Origin + info@model = "CN" + info@derivedVariable = False + info@clampVariable = False + ; -- contour intervals + info@cn_Explicit = True + info@cn_Min = -999 + info@cn_Max = -999 + info@cn_Levels = (/.25, 0.5, 1.0, 2.0, 3., 4., 5., 6., 7./) + info@cn_LevelsDiff = (/-2.50, -2, -1.5, -1, -0.5, 0, 0.5, 1, 1.5, 2, 2.5/) + return(info) + end if + + if (varName .eq. "LITHR") then + info@flux=True + info@longName="litter hetereotrophic respiration" + info@nativeUnits = "gC/m^2/s" + ; -- global Total + info@globalTotal__units = "NA" + info@globalTotal__SF = -999. + info@globalTotal_Annual__units = "PgC/y" + info@globalTotal_Annual__SF = secondsInYear * grams2Pgrams + ; -- global Mean + info@globalMean__units = "gC/m^2/s" + info@globalMean__SF = 1.0 + info@globalMean_Annual__units = "gC/m^2/y" + info@globalMean_Annual__SF = secondsInYear + info@globalMean_Daily__units = "gC/m^2/d" + info@globalMean_Daily__SF = secondsInDay + ; -- Origin + info@model = "CN" + info@derivedVariable = False + info@clampVariable = False + ; -- contour intervals + info@cn_Explicit = True + info@cn_Min = -999 + info@cn_Max = -999 + info@cn_Levels = (/.12, 0.25, 0.5, 0.75, 1.0, 1.25, 1.5, 1.75, 2./) + info@cn_LevelsDiff = (/-1.0, -0.8, -0.6, -0.4, -0.2, 0, 0.2, 0.4, 0.6, 0.8, 1/) + return(info) + end if + + if (varName .eq. "SOILC_HR") then + info@flux=True + info@longName="Soil C hetereotrophic respiration" + info@nativeUnits = "gC/m2s" + ; -- global Total + info@globalTotal__units = "NA" + info@globalTotal__SF = -999. + info@globalTotal_Annual__units = "PgC/y" + info@globalTotal_Annual__SF = secondsInYear * grams2Pgrams + ; -- global Mean + info@globalMean__units = "gC/m^2/s" + info@globalMean__SF = 1.0 + info@globalMean_Annual__units = "gC/m^2/y" + info@globalMean_Annual__SF = secondsInYear + info@globalMean_Daily__units = "gC/m^2/d" + info@globalMean_Daily__SF = secondsInDay + ; -- Origin + info@model = "CN" + info@derivedVariable = False + info@clampVariable = True + ; -- contour intervals + info@cn_Explicit = True + info@cn_Min = -999 + info@cn_Max = -999 + info@cn_Levels = (/0.0, 0.25, 0.5, 0.75, 1, 1.25, 1.5, 1.75, 2/) + info@cn_LevelsDiff = (/-1.0, -0.8, -0.6, -0.4, -0.2, 0., 0.2, 0.4, 0.6, 0.8, 1/) + return(info) + end if + + if (varName .eq. "SOILC_LOSS") then + info@flux=True + info@longName="Soil C Loss" + info@nativeUnits = "gC/m2s" + ; -- global Total + info@globalTotal__units = "NA" + info@globalTotal__SF = -999. + info@globalTotal_Annual__units = "PgC/y" + info@globalTotal_Annual__SF = secondsInYear * grams2Pgrams + ; -- global Mean + info@globalMean__units = "gC/m^2/s" + info@globalMean__SF = 1.0 + info@globalMean_Annual__units = "gC/m^2/y" + info@globalMean_Annual__SF = secondsInYear + info@globalMean_Daily__units = "gC/m^2/d" + info@globalMean_Daily__SF = secondsInDay + ; -- Origin + info@model = "CN" + info@derivedVariable = False + info@clampVariable = True + ; -- contour intervals + info@cn_Explicit = True + info@cn_Min = -999 + info@cn_Max = -999 + info@cn_Levels = (/0.0, 0.25, 0.5, 0.75, 1, 1.25, 1.5, 1.75, 2/) + info@cn_LevelsDiff = (/-1.0, -0.8, -0.6, -0.4, -0.2, 0., 0.2, 0.4, 0.6, 0.8, 1/) + return(info) + end if + + if (varName .eq. "SOMHR") then + info@flux=True + info@longName="SOM hetereotrophic respiration" + info@nativeUnits = "gC/m^2/s" + ; -- global Total + info@globalTotal__units = "NA" + info@globalTotal__SF = -999. + info@globalTotal_Annual__units = "PgC/y" + info@globalTotal_Annual__SF = secondsInYear * grams2Pgrams + ; -- global Mean + info@globalMean__units = "gC/m^2/s" + info@globalMean__SF = 1.0 + info@globalMean_Annual__units = "gC/m^2/y" + info@globalMean_Annual__SF = secondsInYear + info@globalMean_Daily__units = "gC/m^2/d" + info@globalMean_Daily__SF = secondsInDay + ; -- Origin + info@model = "CN" + info@derivedVariable = False + info@clampVariable = False + ; -- contour intervals + info@cn_Explicit = True + info@cn_Min = -999 + info@cn_Max = -999 + info@cn_Levels = (/0.0, 0.25, 0.5, 0.75, 1, 1.25, 1.5, 1.75, 2/) + info@cn_LevelsDiff = (/-1.0, -0.8, -0.6, -0.4, -0.2, 0., 0.2, 0.4, 0.6, 0.8, 1/) + return(info) + end if + + if (varName .eq. "WOODC_ALLOC") then + info@flux=True + info@longName="Wood C Allocation" + info@nativeUnits = "gC/m2s" + ; -- global Total + info@globalTotal__units = "NA" + info@globalTotal__SF = -999. + info@globalTotal_Annual__units = "PgC/y" + info@globalTotal_Annual__SF = secondsInYear * grams2Pgrams + ; -- global Mean + info@globalMean__units = "gC/m2s" + info@globalMean__SF = 1.0 + info@globalMean_Annual__units = "gC/m2y" + info@globalMean_Annual__SF = secondsInYear + info@globalMean_Daily__units = "gC/m2d" + info@globalMean_Daily__SF = secondsInDay + ; -- Origin + info@model = "CN" + info@derivedVariable = False + info@clampVariable = True + ; -- contour intervals + info@cn_Explicit = True + info@cn_Min = -999 + info@cn_Max = -999 + info@cn_Levels = (/0.0, 0.25, 0.5, 0.75, 1, 1.25, 1.5, 1.75, 2/) + info@cn_LevelsDiff = (/-1.0, -0.8, -0.6, -0.4, -0.2, 0., 0.2, 0.4, 0.6, 0.8, 1/) + return(info) + end if + + if (varName .eq. "WOODC_LOSS") then + info@flux=True + info@longName="Wood C Loss" + info@nativeUnits = "gC/m2s" + ; -- global Total + info@globalTotal__units = "NA" + info@globalTotal__SF = -999. + info@globalTotal_Annual__units = "PgC/y" + info@globalTotal_Annual__SF = secondsInYear * grams2Pgrams + ; -- global Mean + info@globalMean__units = "gC/m2s" + info@globalMean__SF = 1.0 + info@globalMean_Annual__units = "gC/m2y" + info@globalMean_Annual__SF = secondsInYear + info@globalMean_Daily__units = "gC/m2d" + info@globalMean_Daily__SF = secondsInDay + ; -- Origin + info@model = "CN" + info@derivedVariable = False + info@clampVariable = True + ; -- contour intervals + info@cn_Explicit = True + info@cn_Min = -999 + info@cn_Max = -999 + info@cn_Levels = (/0.0, 0.25, 0.5, 0.75, 1, 1.25, 1.5, 1.75, 2/) + info@cn_LevelsDiff = (/-1.0, -0.8, -0.6, -0.4, -0.2, 0., 0.2, 0.4, 0.6, 0.8, 1/) + return(info) + end if + + if (varName .eq. "WOOD_HARVESTC") then + info@flux=True + info@longName="Wood Harvest C (to prod pools)" + info@nativeUnits = "gC/m2s" + ; -- global Total + info@globalTotal__units = "NA" + info@globalTotal__SF = -999. + info@globalTotal_Annual__units = "PgC/y" + info@globalTotal_Annual__SF = secondsInYear * grams2Pgrams + ; -- global Mean + info@globalMean__units = "gC/m2s" + info@globalMean__SF = 1.0 + info@globalMean_Annual__units = "gC/m2y" + info@globalMean_Annual__SF = secondsInYear + info@globalMean_Daily__units = "gC/m2d" + info@globalMean_Daily__SF = secondsInDay + ; -- Origin + info@model = "CN" + info@derivedVariable = False + info@clampVariable = True + ; -- contour intervals + info@cn_Explicit = True + info@cn_Min = -999 + info@cn_Max = -999 + info@cn_Levels = (/0.0, 0.25, 0.5, 0.75, 1, 1.25, 1.5, 1.75, 2/) + info@cn_LevelsDiff = (/-1.0, -0.8, -0.6, -0.4, -0.2, 0., 0.2, 0.4, 0.6, 0.8, 1/) + return(info) + end if + + if (varName .eq. "WOOD_HARVESTN") then + info@flux=True + info@longName="Wood Harvest N (to prod pools)" + info@nativeUnits = "gN/m2s" + ; -- global Total + info@globalTotal__units = "NA" + info@globalTotal__SF = -999. + info@globalTotal_Annual__units = "PgN/y" + info@globalTotal_Annual__SF = secondsInYear * grams2Pgrams + ; -- global Mean + info@globalMean__units = "gN/m2s" + info@globalMean__SF = 1.0 + info@globalMean_Annual__units = "gN/m2y" + info@globalMean_Annual__SF = secondsInYear + info@globalMean_Daily__units = "gN/m2d" + info@globalMean_Daily__SF = secondsInDay + ; -- Origin + info@model = "CN" + info@derivedVariable = False + info@clampVariable = True + ; -- contour intervals + info@cn_Explicit = True + info@cn_Min = -999 + info@cn_Max = -999 + info@cn_Levels = (/0.0, 0.25, 0.5, 0.75, 1, 1.25, 1.5, 1.75, 2/) + info@cn_LevelsDiff = (/-1.0, -0.8, -0.6, -0.4, -0.2, 0., 0.2, 0.4, 0.6, 0.8, 1/) + return(info) + end if + + if (varName .eq. "TOT_WOODPRODC_LOSS") then + info@flux=True + info@longName="Total C loss from wood prod pools" + info@nativeUnits = "gC/m2s" + ; -- global Total + info@globalTotal__units = "NA" + info@globalTotal__SF = -999. + info@globalTotal_Annual__units = "PgC/y" + info@globalTotal_Annual__SF = secondsInYear * grams2Pgrams + ; -- global Mean + info@globalMean__units = "gC/m2s" + info@globalMean__SF = 1.0 + info@globalMean_Annual__units = "gC/m2y" + info@globalMean_Annual__SF = secondsInYear + info@globalMean_Daily__units = "gC/m2d" + info@globalMean_Daily__SF = secondsInDay + ; -- Origin + info@model = "CN" + info@derivedVariable = False + info@clampVariable = True + ; -- contour intervals + info@cn_Explicit = True + info@cn_Min = -999 + info@cn_Max = -999 + info@cn_Levels = (/0.0, 0.25, 0.5, 0.75, 1, 1.25, 1.5, 1.75, 2/) + info@cn_LevelsDiff = (/-1.0, -0.8, -0.6, -0.4, -0.2, 0., 0.2, 0.4, 0.6, 0.8, 1/) + return(info) + end if + + if (varName .eq. "TOT_WOODPRODN_LOSS") then + info@flux=True + info@longName="Total N loss from wood prod pools" + info@nativeUnits = "gN/m2s" + ; -- global Total + info@globalTotal__units = "NA" + info@globalTotal__SF = -999. + info@globalTotal_Annual__units = "PgN/y" + info@globalTotal_Annual__SF = secondsInYear * grams2Pgrams + ; -- global Mean + info@globalMean__units = "gN/m2s" + info@globalMean__SF = 1.0 + info@globalMean_Annual__units = "gN/m2y" + info@globalMean_Annual__SF = secondsInYear + info@globalMean_Daily__units = "gN/m2d" + info@globalMean_Daily__SF = secondsInDay + ; -- Origin + info@model = "CN" + info@derivedVariable = False + info@clampVariable = True + ; -- contour intervals + info@cn_Explicit = True + info@cn_Min = -999 + info@cn_Max = -999 + info@cn_Levels = (/0.0, 0.25, 0.5, 0.75, 1, 1.25, 1.5, 1.75, 2/) + info@cn_LevelsDiff = (/-1.0, -0.8, -0.6, -0.4, -0.2, 0., 0.2, 0.4, 0.6, 0.8, 1/) + return(info) + end if + + if (varName .eq. "PROD10C_LOSS") then + info@flux=True + info@longName="C loss from 10-yr wood prod pool" + info@nativeUnits = "gC/m2s" + ; -- global Total + info@globalTotal__units = "NA" + info@globalTotal__SF = -999. + info@globalTotal_Annual__units = "PgC/y" + info@globalTotal_Annual__SF = secondsInYear * grams2Pgrams + ; -- global Mean + info@globalMean__units = "gC/m2s" + info@globalMean__SF = 1.0 + info@globalMean_Annual__units = "gC/m2y" + info@globalMean_Annual__SF = secondsInYear + info@globalMean_Daily__units = "gC/m2d" + info@globalMean_Daily__SF = secondsInDay + ; -- Origin + info@model = "CN" + info@derivedVariable = False + info@clampVariable = True + ; -- contour intervals + info@cn_Explicit = True + info@cn_Min = -999 + info@cn_Max = -999 + info@cn_Levels = (/0.0, 0.25, 0.5, 0.75, 1, 1.25, 1.5, 1.75, 2/) + info@cn_LevelsDiff = (/-1.0, -0.8, -0.6, -0.4, -0.2, 0., 0.2, 0.4, 0.6, 0.8, 1/) + return(info) + end if + + if (varName .eq. "PROD10N_LOSS") then + info@flux=True + info@longName="N loss from 10-yr wood prod pool" + info@nativeUnits = "gN/m2s" + ; -- global Total + info@globalTotal__units = "NA" + info@globalTotal__SF = -999. + info@globalTotal_Annual__units = "PgN/y" + info@globalTotal_Annual__SF = secondsInYear * grams2Pgrams + ; -- global Mean + info@globalMean__units = "gN/m2s" + info@globalMean__SF = 1.0 + info@globalMean_Annual__units = "gN/m2y" + info@globalMean_Annual__SF = secondsInYear + info@globalMean_Daily__units = "gN/m2d" + info@globalMean_Daily__SF = secondsInDay + ; -- Origin + info@model = "CN" + info@derivedVariable = False + info@clampVariable = True + ; -- contour intervals + info@cn_Explicit = True + info@cn_Min = -999 + info@cn_Max = -999 + info@cn_Levels = (/0.0, 0.25, 0.5, 0.75, 1, 1.25, 1.5, 1.75, 2/) + info@cn_LevelsDiff = (/-1.0, -0.8, -0.6, -0.4, -0.2, 0., 0.2, 0.4, 0.6, 0.8, 1/) + return(info) + end if + + if (varName .eq. "PROD100C_LOSS") then + info@flux=True + info@longName="C loss from 100-yr wood prod pool" + info@nativeUnits = "gC/m2s" + ; -- global Total + info@globalTotal__units = "NA" + info@globalTotal__SF = -999. + info@globalTotal_Annual__units = "PgC/y" + info@globalTotal_Annual__SF = secondsInYear * grams2Pgrams + ; -- global Mean + info@globalMean__units = "gC/m2s" info@globalMean__SF = 1.0 - info@globalMean_Annual__units = "gC/m^2/y" + info@globalMean_Annual__units = "gC/m2y" info@globalMean_Annual__SF = secondsInYear - info@globalMean_Daily__units = "gC/m^2/d" + info@globalMean_Daily__units = "gC/m2d" info@globalMean_Daily__SF = secondsInDay ; -- Origin info@model = "CN" info@derivedVariable = False - info@clampVariable = False + info@clampVariable = True ; -- contour intervals info@cn_Explicit = True info@cn_Min = -999 info@cn_Max = -999 - info@cn_Levels = (/.25, 0.5, 1.0, 2.0, 3., 4., 5., 6., 7./) - info@cn_LevelsDiff = (/-2.50, -2, -1.5, -1, -0.5, 0, 0.5, 1, 1.5, 2, 2.5/) + info@cn_Levels = (/0.0, 0.25, 0.5, 0.75, 1, 1.25, 1.5, 1.75, 2/) + info@cn_LevelsDiff = (/-1.0, -0.8, -0.6, -0.4, -0.2, 0., 0.2, 0.4, 0.6, 0.8, 1/) return(info) end if - if (varName .eq. "LITHR") then + if (varName .eq. "PROD100N_LOSS") then info@flux=True - info@longName="litter hetereotrophic respiration" - info@nativeUnits = "gC/m^2/s" + info@longName="N loss from 100-yr wood prod pool" + info@nativeUnits = "gN/m2s" ; -- global Total info@globalTotal__units = "NA" info@globalTotal__SF = -999. - info@globalTotal_Annual__units = "PgC/y" + info@globalTotal_Annual__units = "PgN/y" info@globalTotal_Annual__SF = secondsInYear * grams2Pgrams ; -- global Mean - info@globalMean__units = "gC/m^2/s" + info@globalMean__units = "gN/m2s" info@globalMean__SF = 1.0 - info@globalMean_Annual__units = "gC/m^2/y" + info@globalMean_Annual__units = "gN/m2y" info@globalMean_Annual__SF = secondsInYear - info@globalMean_Daily__units = "gC/m^2/d" + info@globalMean_Daily__units = "gN/m2d" info@globalMean_Daily__SF = secondsInDay ; -- Origin info@model = "CN" info@derivedVariable = False - info@clampVariable = False + info@clampVariable = True ; -- contour intervals info@cn_Explicit = True info@cn_Min = -999 info@cn_Max = -999 - info@cn_Levels = (/.12, 0.25, 0.5, 0.75, 1.0, 1.25, 1.5, 1.75, 2./) - info@cn_LevelsDiff = (/-1.0, -0.8, -0.6, -0.4, -0.2, 0, 0.2, 0.4, 0.6, 0.8, 1/) + info@cn_Levels = (/0.0, 0.25, 0.5, 0.75, 1, 1.25, 1.5, 1.75, 2/) + info@cn_LevelsDiff = (/-1.0, -0.8, -0.6, -0.4, -0.2, 0., 0.2, 0.4, 0.6, 0.8, 1/) return(info) end if - - if (varName .eq. "SOILC_HR") then + + if (varName .eq. "DWT_PROD10C_GAIN") then info@flux=True - info@longName="Soil C hetereotrophic respiration" - info@nativeUnits = "gC/m2s" + info@longName="LCC-driven addition to 10-yr wood prod pool" + info@nativeUnits = "gC/m2s" ; -- global Total info@globalTotal__units = "NA" info@globalTotal__SF = -999. info@globalTotal_Annual__units = "PgC/y" - info@globalTotal_Annual__SF = secondsInYear * grams2Pgrams + info@globalTotal_Annual__SF = secondsInYear * grams2Pgrams ; -- global Mean - info@globalMean__units = "gC/m^2/s" + info@globalMean__units = "gC/m2s" info@globalMean__SF = 1.0 - info@globalMean_Annual__units = "gC/m^2/y" - info@globalMean_Annual__SF = secondsInYear - info@globalMean_Daily__units = "gC/m^2/d" - info@globalMean_Daily__SF = secondsInDay - ; -- Origin - info@model = "CN" - info@derivedVariable = False + info@globalMean_Annual__units = "gC/m2y" + info@globalMean_Annual__SF = secondsInYear + info@globalMean_Daily__units = "gC/m2d" + info@globalMean_Daily__SF = secondsInDay + ; -- Origin + info@model = "CN" + info@derivedVariable = False info@clampVariable = True ; -- contour intervals info@cn_Explicit = True @@ -741,25 +1175,25 @@ begin return(info) end if - if (varName .eq. "SOILC_LOSS") then + if (varName .eq. "DWT_PROD10N_GAIN") then info@flux=True - info@longName="Soil C Loss" - info@nativeUnits = "gC/m2s" + info@longName="LCC-driven addition to 10-yr wood prod pool" + info@nativeUnits = "gN/m2s" ; -- global Total info@globalTotal__units = "NA" info@globalTotal__SF = -999. - info@globalTotal_Annual__units = "PgC/y" - info@globalTotal_Annual__SF = secondsInYear * grams2Pgrams + info@globalTotal_Annual__units = "PgN/y" + info@globalTotal_Annual__SF = secondsInYear * grams2Pgrams ; -- global Mean - info@globalMean__units = "gC/m^2/s" + info@globalMean__units = "gN/m2s" info@globalMean__SF = 1.0 - info@globalMean_Annual__units = "gC/m^2/y" - info@globalMean_Annual__SF = secondsInYear - info@globalMean_Daily__units = "gC/m^2/d" - info@globalMean_Daily__SF = secondsInDay - ; -- Origin - info@model = "CN" - info@derivedVariable = False + info@globalMean_Annual__units = "gN/m2y" + info@globalMean_Annual__SF = secondsInYear + info@globalMean_Daily__units = "gN/m2d" + info@globalMean_Daily__SF = secondsInDay + ; -- Origin + info@model = "CN" + info@derivedVariable = False info@clampVariable = True ; -- contour intervals info@cn_Explicit = True @@ -770,26 +1204,26 @@ begin return(info) end if - if (varName .eq. "SOMHR") then + if (varName .eq. "DWT_PROD100C_GAIN") then info@flux=True - info@longName="SOM hetereotrophic respiration" - info@nativeUnits = "gC/m^2/s" + info@longName="LCC-driven addition to 100-yr wood prod pool" + info@nativeUnits = "gC/m2s" ; -- global Total info@globalTotal__units = "NA" info@globalTotal__SF = -999. info@globalTotal_Annual__units = "PgC/y" - info@globalTotal_Annual__SF = secondsInYear * grams2Pgrams + info@globalTotal_Annual__SF = secondsInYear * grams2Pgrams ; -- global Mean - info@globalMean__units = "gC/m^2/s" + info@globalMean__units = "gC/m2s" info@globalMean__SF = 1.0 - info@globalMean_Annual__units = "gC/m^2/y" - info@globalMean_Annual__SF = secondsInYear - info@globalMean_Daily__units = "gC/m^2/d" - info@globalMean_Daily__SF = secondsInDay + info@globalMean_Annual__units = "gC/m2y" + info@globalMean_Annual__SF = secondsInYear + info@globalMean_Daily__units = "gC/m2d" + info@globalMean_Daily__SF = secondsInDay ; -- Origin info@model = "CN" info@derivedVariable = False - info@clampVariable = False + info@clampVariable = True ; -- contour intervals info@cn_Explicit = True info@cn_Min = -999 @@ -799,25 +1233,25 @@ begin return(info) end if - if (varName .eq. "WOODC_ALLOC") then + if (varName .eq. "DWT_PROD100N_GAIN") then info@flux=True - info@longName="Wood C Allocation" - info@nativeUnits = "gC/m2s" + info@longName="LCC-driven addition to 100-yr wood prod pool" + info@nativeUnits = "gN/m2s" ; -- global Total info@globalTotal__units = "NA" info@globalTotal__SF = -999. - info@globalTotal_Annual__units = "PgC/y" - info@globalTotal_Annual__SF = secondsInYear * grams2Pgrams + info@globalTotal_Annual__units = "PgN/y" + info@globalTotal_Annual__SF = secondsInYear * grams2Pgrams ; -- global Mean - info@globalMean__units = "gC/m2s" + info@globalMean__units = "gN/m2s" info@globalMean__SF = 1.0 - info@globalMean_Annual__units = "gC/m2y" - info@globalMean_Annual__SF = secondsInYear - info@globalMean_Daily__units = "gC/m2d" - info@globalMean_Daily__SF = secondsInDay - ; -- Origin - info@model = "CN" - info@derivedVariable = False + info@globalMean_Annual__units = "gN/m2y" + info@globalMean_Annual__SF = secondsInYear + info@globalMean_Daily__units = "gN/m2d" + info@globalMean_Daily__SF = secondsInDay + ; -- Origin + info@model = "CN" + info@derivedVariable = False info@clampVariable = True ; -- contour intervals info@cn_Explicit = True @@ -828,9 +1262,9 @@ begin return(info) end if - if (varName .eq. "WOODC_LOSS") then + if (varName .eq. "DWT_CONV_CFLUX") then info@flux=True - info@longName="Wood C Loss" + info@longName="conversion C flux (immediate loss to atm)" info@nativeUnits = "gC/m2s" ; -- global Total info@globalTotal__units = "NA" @@ -2702,6 +3136,64 @@ if (varName .eq. "LITTERC_HR") then return(info) end if + if (varName .eq. "FERT") then + info@flux=True + info@longName="fertilizer added" + info@nativeUnits = "gN/m^2/s" + ; -- global Total + info@globalTotal__units = "NA" + info@globalTotal__SF = -999. + info@globalTotal_Annual__units = "TgN/y" + info@globalTotal_Annual__SF = grams2Tgrams * secondsInYear + ; -- global Mean + info@globalMean__units = "gN/m^2/s" + info@globalMean__SF = 1.0 + info@globalMean_Annual__units = "gN/m^2/y" + info@globalMean_Annual__SF = secondsInYear + info@globalMean_Daily__units = "gN/m^2/d" + info@globalMean_Daily__SF = secondsInDay + ; -- Origin + info@model = "CN" + info@derivedVariable = False + info@clampVariable = False + ; -- contour intervals + info@cn_Explicit = True + info@cn_Min = -999 + info@cn_Max = -999 + info@cn_Levels = (/.01, 0.03, 0.05, 0.08, 0.10, 0.13, 0.15, 0.18, 0.2/) + info@cn_LevelsDiff = (/-.01, -0.008, -0.006, -0.004, -0.002, 0, 0.002, 0.004, 0.006, 0.008, 0.01/) + return(info) + end if + + if (varName .eq. "FERT_TO_SMINN") then + info@flux=True + info@longName="fertilizer to soil mineral N" + info@nativeUnits = "gN/m^2/s" + ; -- global Total + info@globalTotal__units = "NA" + info@globalTotal__SF = -999. + info@globalTotal_Annual__units = "TgN/y" + info@globalTotal_Annual__SF = grams2Tgrams * secondsInYear + ; -- global Mean + info@globalMean__units = "gN/m^2/s" + info@globalMean__SF = 1.0 + info@globalMean_Annual__units = "gN/m^2/y" + info@globalMean_Annual__SF = secondsInYear + info@globalMean_Daily__units = "gN/m^2/d" + info@globalMean_Daily__SF = secondsInDay + ; -- Origin + info@model = "CN" + info@derivedVariable = False + info@clampVariable = False + ; -- contour intervals + info@cn_Explicit = True + info@cn_Min = -999 + info@cn_Max = -999 + info@cn_Levels = (/.01, 0.03, 0.05, 0.08, 0.10, 0.13, 0.15, 0.18, 0.2/) + info@cn_LevelsDiff = (/-.01, -0.008, -0.006, -0.004, -0.002, 0, 0.002, 0.004, 0.006, 0.008, 0.01/) + return(info) + end if + if (varName .eq. "RETRANSN_TO_NPOOL") then info@flux=True info@longName="Retranslocated N to NPool" @@ -5878,6 +6370,64 @@ if (varName .eq. "LITTERC_HR") then info@globalMean_Daily__SF = -999. ; -- Origin info@model = "CLM" + info@derivedVariable = True + info@clampVariable = True + ; -- contour intervals + info@cn_Explicit = True + info@cn_Min = -999 + info@cn_Max = -999 + info@cn_Levels = (/0.,0.15,0.3,0.45,0.6,0.75,0.9,1.05,1.2/) + info@cn_LevelsDiff = (/-.5,-.4,-.3,-.2,-.1,0.,.1,.2,.3,.4,.5/) + return(info) + end if + + if (varName .eq. "BTRAN2") then + info@flux=False + info@longName="root zone soil moisture factor" + info@nativeUnits = "unitless" + ; -- global Total + info@globalTotal__units = "unitless" + info@globalTotal__SF = 1.0 + info@globalTotal_Annual__units = "NA" + info@globalTotal_Annual__SF = -999. + ; -- global Mean + info@globalMean__units = "unitless" + info@globalMean__SF = 1.0 + info@globalMean_Annual__units = "NA" + info@globalMean_Annual__SF = -999. + info@globalMean_Daily__units = "NA" + info@globalMean_Daily__SF = -999. + ; -- Origin + info@model = "CLM" + info@derivedVariable = False + info@clampVariable = True + ; -- contour intervals + info@cn_Explicit = True + info@cn_Min = -999 + info@cn_Max = -999 + info@cn_Levels = (/0.,0.15,0.3,0.45,0.6,0.75,0.9,1.05,1.2/) + info@cn_LevelsDiff = (/-.5,-.4,-.3,-.2,-.1,0.,.1,.2,.3,.4,.5/) + return(info) + end if + + if (varName .eq. "BTRANMN") then + info@flux=False + info@longName="daily minimum of transpiration beta factor" + info@nativeUnits = "unitless" + ; -- global Total + info@globalTotal__units = "unitless" + info@globalTotal__SF = 1.0 + info@globalTotal_Annual__units = "NA" + info@globalTotal_Annual__SF = -999. + ; -- global Mean + info@globalMean__units = "unitless" + info@globalMean__SF = 1.0 + info@globalMean_Annual__units = "NA" + info@globalMean_Annual__SF = -999. + info@globalMean_Daily__units = "NA" + info@globalMean_Daily__SF = -999. + ; -- Origin + info@model = "CLM" info@derivedVariable = False info@clampVariable = True ; -- contour intervals @@ -6667,6 +7217,35 @@ if (varName .eq. "LITTERC_HR") then return(info) end if + if (varName .eq. "QIRRIG") then + info@flux=True + info@longName="water added through irrig" + info@nativeUnits = "mm/s" + ; -- global Total + info@globalTotal__units = "NA" + info@globalTotal__SF = -999. + info@globalTotal_Annual__units = "mm/y" + info@globalTotal_Annual__SF = secondsInYear + ; -- global Mean + info@globalMean__units = "mm/s" + info@globalMean__SF = 1.0 + info@globalMean_Annual__units = "mm/y" + info@globalMean_Annual__SF = secondsInYear + info@globalMean_Daily__units = "mm/d" + info@globalMean_Daily__SF = secondsInDay + ; -- Origin + info@model = "CN" + info@derivedVariable = False + info@clampVariable = False + ; -- contour intervals + info@cn_Explicit = True + info@cn_Min = -999 + info@cn_Max = -999 + info@cn_Levels = (/0.,.5,1.,1.5,2.,2.5,3.,3.5,4./) + info@cn_LevelsDiff = (/-5.,-2.5,-1.,-.5,-.1,0.,.1,.5,1.,2.5,5./) + return(info) + end if + if (varName .eq. "QRGWL") then info@flux=True info@longName="surface runoff at glaciers, wetlands, lakes"