diff --git a/README.md b/README.md
index 7ffd1756a..b38a2a05c 100644
--- a/README.md
+++ b/README.md
@@ -41,11 +41,11 @@ This diagnostics package is constructed for supporting the diagnostics task of D
- fully integrates the functionality of NCAR's AMWG diagnostics package.
- utilizes most updated observational datasets, including remote sensing, reanalysis and in-situ datasets.
- interfaces with diagnostics developed from different E3SM science groups
-- is flexible for user specified diagnostics and being configured for use by other climate models.
+- is flexible for user specified diagnostics and being configured for use by other climate models (i.e. in CMIP format).
## Current State
-Algorithm and visualization codes for the AMWG Set 5, 7, 4, 3, 13, 1, 14 diagnostics, namely lat-lon contour plots (Figure 1), polar contour plots (Figure 2), zonal mean 2d plots (Figure 3), zonal mean line plots (Figure 4), 2d joint histogram for COSP cloud simulator output (Figure 5), tables (Figure 6) and Taylor Diagrams (Figure 7) summarizing metrics, for climatology seasonal means, are implemented as core sets of this diagnostics package. More diagnostics harvested from E3SM v1 and v2 development are also supported.
+Algorithm and visualization codes for lat-lon contour plots (Figure 1), polar contour plots (Figure 2), zonal mean 2d plots (Figure 3), zonal mean line plots (Figure 4), 2d joint histogram for COSP cloud simulator output (Figure 5), tables (Figure 6) and Taylor Diagrams (Figure 7) summarizing metrics, for climatology seasonal means, are implemented as core sets of this diagnostics package. More diagnostics harvested from E3SM v1 and v2 development are also supported. Example of a complete set of diagnostics can be found [here](https://web.lcrc.anl.gov/public/e3sm/e3sm_diags_test_data/unit_test_complete_run/expected/all_sets/viewer/)
The package features built-in user diagnostics, by specifying user desired diagnostics regions and pressure levels for variables with the vertical dimension.
@@ -72,6 +72,15 @@ In addition to default model versus observation comparison, the package also pro
Figure 7: An example of Taylor diagram summarizing metrics calculated based on lat-lon contour plots diagnostics of several key variables
+## Reference
+
+Zhang, Chengzhu, Jean-Christophe Golaz, Ryan Forsyth, Tom Vo, Shaocheng Xie, Zeshawn Shaheen, Gerald L. Potter et al. "The E3SM Diagnostics Package (E3SM Diags v2): A Python-based Diagnostics Package for Earth System Models Evaluation." Geoscientific Model Development Discussions (2022): 1-35.
+
+
+## Acknowledgement
+
+The work is performed for the [E3SM](https://e3sm.org/) project, which is sponsored by Earth System Model Development ([ESMD](https://climatemodeling.science.energy.gov/program/earth-system-model-development)) program. ESMD is a program area for the Earth and Environmental Systems Sciences Division ([EESSD](https://science.osti.gov/ber/Research/eessd)) in the Office of Biological and Environmental Research ([BER](https://science.osti.gov/ber)) within the [Department of Energy](https://www.energy.gov/)'s [Office of Science](https://science.osti.gov).
+
## License
Copyright (c) 2018-2021, Energy Exascale Earth System Model Project
diff --git a/analysis_data_preprocess/fix_units_1.5hr_time_shift_forTRMM.py b/analysis_data_preprocess/fix_units_1.5hr_time_shift_forTRMM.py
new file mode 100644
index 000000000..3e094a09c
--- /dev/null
+++ b/analysis_data_preprocess/fix_units_1.5hr_time_shift_forTRMM.py
@@ -0,0 +1,49 @@
+import cdms2
+from pathlib import Path
+import MV2
+
+datapath='/p/user_pub/e3sm/e3sm_diags_data/obs_for_e3sm_diags/climatology/TRMM-3B43v-7_3hr/'
+for path in Path(datapath).rglob('*.nc'):
+ print(path.name)
+ print(path)
+ filename = path.name.split("/")[-1]
+ print(filename)
+
+ #filename ='TRMM-3B43v-7_3hr_ANN_199801_201312_climo.nc'
+ f_in = cdms2.open(datapath+filename)
+ var0 = f_in('pr')
+ var = f_in('pr')
+ lat = var0.getLatitude()
+ lon = var0.getLongitude()
+ nlat = len(lat)
+ var.id = 'pr'
+ # Fix units problem for obs4mip
+ #var = var / 3600.0 * 1000 / 1000.0
+
+ # Manually shift time by 1.5 hour to work around an ncclimo problem:
+ # The shift may be due to the assumption that ncclimo makes that times are encoded using the CESM/E3SM convention where times refer to the end of the timestep
+ print('var.time',var.getTime()[:])
+ for ilat in range(nlat):
+ print,'ilat= ',ilat
+ var[0,ilat,:] = var0[7,ilat,:]
+ var[1:8,ilat,:] = var0[0:7,ilat,:]
+ newtime=cdms2.createAxis(MV2.zeros(8))
+ newtime.id="time" #name of dimension
+ newtime.designateTime() # tell cdms to add attributes that make it time
+ newtime.units = var0.getTime().units
+ newtime[:] = [x-0.0625 for x in var0.getTime()[:]]
+ var.setAxis(0,newtime)
+ print(newtime)
+ print(var.getTime())
+
+
+ f_out = cdms2.open(filename,'w')
+ f_out.write(var)
+ att_keys = list(f_in.attributes.keys())
+ att_dic = {}
+ for i in range(len(att_keys)):
+ att_dic[i]=att_keys[i],f_in.attributes[att_keys[i]]
+ to_out = att_dic[i]
+ setattr(f_out,to_out[0],to_out[1])
+ f_in.close()
+ f_out.close()
diff --git a/analysis_data_preprocess/fix_units_TRMM-3B43v-7_3hr.py b/analysis_data_preprocess/fix_units_TRMM-3B43v-7_3hr.py
deleted file mode 100644
index 2f1822a96..000000000
--- a/analysis_data_preprocess/fix_units_TRMM-3B43v-7_3hr.py
+++ /dev/null
@@ -1,30 +0,0 @@
-from pathlib import Path
-
-import cdms2
-
-datapath = (
- "/p/user_pub/e3sm/zhang40/analysis_data_e3sm_diags/TRMM/climatology_diurnal_cycle/"
-)
-for path in Path(datapath).rglob("*.nc"):
- print(path.name)
- print(path)
- filename = path.name.split("/")[-1]
- print(filename)
-
- # filename ='TRMM-3B43v-7_3hr_ANN_199801_201312_climo.nc'
- f_in = cdms2.open(datapath + filename)
- var = f_in("pr")
- var = var / 3600.0 * 1000 / 1000.0
- var.id = "pr"
- f_out = cdms2.open(datapath + "units_fix_" + filename, "w")
- f_out.write(var)
-
- att_keys = list(f_in.attributes.keys())
- att_dic = {}
- for i in range(len(att_keys)):
- att_dic[i] = att_keys[i], f_in.attributes[att_keys[i]]
- to_out = att_dic[i]
- setattr(f_out, to_out[0], to_out[1])
- print(var.mean())
- f_in.close()
- f_out.close()
diff --git a/e3sm_diags/derivations/acme.py b/e3sm_diags/derivations/acme.py
index 02dd47313..60c82abda 100644
--- a/e3sm_diags/derivations/acme.py
+++ b/e3sm_diags/derivations/acme.py
@@ -29,7 +29,7 @@ def aplusb(var1, var2, target_units=None):
return var1 + var2
-def convert_units(var, target_units):
+def convert_units(var, target_units): # noqa: C901
"""Converts units of var to target_units.
var is a cdms.TransientVariable."""
@@ -40,6 +40,17 @@ def convert_units(var, target_units):
var = 100.0 * var
elif not hasattr(var, "units") and var.id == "AODVIS":
var.units = target_units
+ elif not hasattr(var, "units") and var.id == "AODDUST":
+ var.units = target_units
+ elif var.id == "FAREA_BURNED":
+ var = var * 1e9
+ var.units = target_units
+ elif var.units == "gC/m^2":
+ var = var / 1000.0
+ var.units = target_units
+ elif var.id == "FLOODPLAIN_VOLUME" and target_units == "km3":
+ var = var / 1.0e9
+ var.units = target_units
elif var.id == "AOD_550_ann":
var.units = target_units
elif var.id == "AOD_550":
@@ -67,9 +78,12 @@ def convert_units(var, target_units):
elif var.id == "prw" and var.units == "cm":
var = var * 10.0 # convert from 'cm' to 'kg/m2' or 'mm'
var.units = target_units
- elif var.units in ["gN/m^2/s", "gP/m^2/s", "gC/m^2/s"] and target_units == "*/day":
+ elif var.units in ["gC/m^2/s"] and target_units == "g*/m^2/day":
var = var * 24 * 3600
var.units = var.units[0:7] + "day"
+ elif var.units in ["gN/m^2/s", "gP/m^2/s"] and target_units == "mg*/m^2/day":
+ var = var * 24 * 3600 * 1000.0
+ var.units = "m" + var.units[0:7] + "day"
elif var.units in ["gN/m^2/day", "gP/m^2/day", "gC/m^2/day"]:
pass
else:
@@ -180,6 +194,14 @@ def tauxy(taux, tauy):
return var
+def fp_uptake(a, b):
+ """plant uptake of soil mineral N"""
+ var = a / b
+ var.units = "dimensionless"
+ var.long_name = "Plant uptake of soil mineral N"
+ return var
+
+
def albedo(rsdt, rsut):
"""TOA (top-of-atmosphere) albedo, rsut / rsdt, unit is nondimension"""
var = rsut / rsdt
@@ -1344,6 +1366,14 @@ def cosp_histogram_standardize(cld: "FileVariable"):
]
),
"AODABS": OrderedDict([(("abs550aer",), rename)]),
+ "AODDUST": OrderedDict(
+ [
+ (
+ ("AODDUST",),
+ lambda aod: convert_units(rename(aod), target_units="dimensionless"),
+ )
+ ]
+ ),
# Surface temperature: Degrees C
# (Temperature of the surface (land/water) itself, not the air)
"TS": OrderedDict([(("ts",), rename)]),
@@ -1405,18 +1435,17 @@ def cosp_histogram_standardize(cld: "FileVariable"):
"SOILWATER_10CM": OrderedDict([(("mrsos",), rename)]),
"SOILWATER_SUM": OrderedDict([(("mrso",), rename)]),
"SOILICE_SUM": OrderedDict([(("mrfso",), rename)]),
- "QOVER": OrderedDict([(("mrros",), rename)]),
"QRUNOFF": OrderedDict(
[
(("QRUNOFF",), lambda qrunoff: qflxconvert_units(qrunoff)),
- (("mrro",), rename),
+ (("mrro",), lambda qrunoff: qflxconvert_units(qrunoff)),
]
),
"QINTR": OrderedDict([(("prveg",), rename)]),
"QVEGE": OrderedDict(
[
(("QVEGE",), lambda qevge: qflxconvert_units(rename(qevge))),
- (("evspsblveg",), rename),
+ (("evspsblveg",), lambda qevge: qflxconvert_units(rename(qevge))),
]
),
"QVEGT": OrderedDict(
@@ -1427,7 +1456,53 @@ def cosp_histogram_standardize(cld: "FileVariable"):
"QSOIL": OrderedDict(
[
(("QSOIL",), lambda qsoil: qflxconvert_units(rename(qsoil))),
- (("evspsblsoi",), rename),
+ (("evspsblsoi",), lambda qsoil: qflxconvert_units(rename(qsoil))),
+ ]
+ ),
+ "QDRAI": OrderedDict(
+ [
+ (("QDRAI",), lambda q: qflxconvert_units(rename(q))),
+ ]
+ ),
+ "QINFL": OrderedDict(
+ [
+ (("QINFL",), lambda q: qflxconvert_units(rename(q))),
+ ]
+ ),
+ "QIRRIG_GRND": OrderedDict(
+ [
+ (("QIRRIG_GRND",), lambda q: qflxconvert_units(rename(q))),
+ ]
+ ),
+ "QIRRIG_ORIG": OrderedDict(
+ [
+ (("QIRRIG_ORIG",), lambda q: qflxconvert_units(rename(q))),
+ ]
+ ),
+ "QIRRIG_REAL": OrderedDict(
+ [
+ (("QIRRIG_REAL",), lambda q: qflxconvert_units(rename(q))),
+ ]
+ ),
+ "QIRRIG_SURF": OrderedDict(
+ [
+ (("QIRRIG_SURF",), lambda q: qflxconvert_units(rename(q))),
+ ]
+ ),
+ "QIRRIG_WM": OrderedDict(
+ [
+ (("QIRRIG_WM",), lambda q: qflxconvert_units(rename(q))),
+ ]
+ ),
+ "QOVER": OrderedDict(
+ [
+ (("QOVER",), lambda q: qflxconvert_units(rename(q))),
+ (("mrros",), lambda q: qflxconvert_units(rename(q))),
+ ]
+ ),
+ "QRGWL": OrderedDict(
+ [
+ (("QRGWL",), lambda q: qflxconvert_units(rename(q))),
]
),
"RAIN": OrderedDict(
@@ -1435,25 +1510,113 @@ def cosp_histogram_standardize(cld: "FileVariable"):
(("RAIN",), lambda rain: qflxconvert_units(rename(rain))),
]
),
+ "SNOW": OrderedDict(
+ [
+ (("SNOW",), lambda snow: qflxconvert_units(rename(snow))),
+ ]
+ ),
"TRAN": OrderedDict([(("tran",), rename)]),
"TSOI": OrderedDict([(("tsl",), rename)]),
"LAI": OrderedDict([(("lai",), rename)]),
# Additional land variables requested by BGC evaluation
+ "FAREA_BURNED": OrderedDict(
+ [
+ (
+ ("FAREA_BURNED",),
+ lambda v: convert_units(v, target_units="proportionx10^9"),
+ )
+ ]
+ ),
+ "FLOODPLAIN_VOLUME": OrderedDict(
+ [(("FLOODPLAIN_VOLUME",), lambda v: convert_units(v, target_units="km3"))]
+ ),
"TLAI": OrderedDict([(("TLAI",), rename)]),
"EFLX_LH_TOT": OrderedDict([(("EFLX_LH_TOT",), rename)]),
- "GPP": OrderedDict([(("GPP",), lambda v: convert_units(v, target_units="*/day"))]),
- "NBP": OrderedDict([(("NBP",), lambda v: convert_units(v, target_units="*/day"))]),
- "NPP": OrderedDict([(("NPP",), lambda v: convert_units(v, target_units="*/day"))]),
- "TOTVEGC": OrderedDict([(("TOTVEGC",), rename)]),
- "TOTSOMC": OrderedDict([(("TOTSOMC",), rename)]),
+ "GPP": OrderedDict(
+ [(("GPP",), lambda v: convert_units(v, target_units="g*/m^2/day"))]
+ ),
+ "HR": OrderedDict(
+ [(("HR",), lambda v: convert_units(v, target_units="g*/m^2/day"))]
+ ),
+ "NBP": OrderedDict(
+ [(("NBP",), lambda v: convert_units(v, target_units="g*/m^2/day"))]
+ ),
+ "NPP": OrderedDict(
+ [(("NPP",), lambda v: convert_units(v, target_units="g*/m^2/day"))]
+ ),
+ "TOTVEGC": OrderedDict(
+ [(("TOTVEGC",), lambda v: convert_units(v, target_units="kgC/m^2"))]
+ ),
+ "TOTSOMC": OrderedDict(
+ [(("TOTSOMC",), lambda v: convert_units(v, target_units="kgC/m^2"))]
+ ),
"TOTSOMN": OrderedDict([(("TOTSOMN",), rename)]),
"TOTSOMP": OrderedDict([(("TOTSOMP",), rename)]),
"FPG": OrderedDict([(("FPG",), rename)]),
"FPG_P": OrderedDict([(("FPG_P",), rename)]),
"TBOT": OrderedDict([(("TBOT",), rename)]),
- "CPOOL": OrderedDict([(("CPOOL",), rename)]),
- "SR": OrderedDict([(("SR",), rename)]),
+ "CPOOL": OrderedDict(
+ [(("CPOOL",), lambda v: convert_units(v, target_units="kgC/m^2"))]
+ ),
+ "LEAFC": OrderedDict(
+ [(("LEAFC",), lambda v: convert_units(v, target_units="kgC/m^2"))]
+ ),
+ "SR": OrderedDict([(("SR",), lambda v: convert_units(v, target_units="kgC/m^2"))]),
"RH2M": OrderedDict([(("RH2M",), rename)]),
+ "DENIT": OrderedDict(
+ [(("DENIT",), lambda v: convert_units(v, target_units="mg*/m^2/day"))]
+ ),
+ "GROSS_NMIN": OrderedDict(
+ [(("GROSS_NMIN",), lambda v: convert_units(v, target_units="mg*/m^2/day"))]
+ ),
+ "GROSS_PMIN": OrderedDict(
+ [(("GROSS_PMIN",), lambda v: convert_units(v, target_units="mg*/m^2/day"))]
+ ),
+ "NDEP_TO_SMINN": OrderedDict(
+ [(("NDEP_TO_SMINN",), lambda v: convert_units(v, target_units="mg*/m^2/day"))]
+ ),
+ "NFIX_TO_SMINN": OrderedDict(
+ [(("NFIX_TO_SMINN",), lambda v: convert_units(v, target_units="mg*/m^2/day"))]
+ ),
+ "PLANT_NDEMAND_COL": OrderedDict(
+ [
+ (
+ ("PLANT_NDEMAND_COL",),
+ lambda v: convert_units(v, target_units="mg*/m^2/day"),
+ )
+ ]
+ ),
+ "PLANT_PDEMAND_COL": OrderedDict(
+ [
+ (
+ ("PLANT_PDEMAND_COL",),
+ lambda v: convert_units(v, target_units="mg*/m^2/day"),
+ )
+ ]
+ ),
+ "SMINN_TO_PLANT": OrderedDict(
+ [(("SMINN_TO_PLANT",), lambda v: convert_units(v, target_units="mg*/m^2/day"))]
+ ),
+ "SMINP_TO_PLANT": OrderedDict(
+ [(("SMINP_TO_PLANT",), lambda v: convert_units(v, target_units="mg*/m^2/day"))]
+ ),
+ "SMIN_NO3_LEACHED": OrderedDict(
+ [
+ (
+ ("SMIN_NO3_LEACHED",),
+ lambda v: convert_units(v, target_units="mg*/m^2/day"),
+ )
+ ]
+ ),
+ "FP_UPTAKE": OrderedDict(
+ [
+ (("FP_UPTAKE",), rename),
+ (
+ ("SMINN_TO_PLANT", "PLANT_NDEMAND_COL"),
+ lambda a, b: fp_uptake(a, b),
+ ),
+ ]
+ ),
# Ocean variables
"tauuo": OrderedDict([(("tauuo",), rename)]),
"tos": OrderedDict([(("tos",), rename)]),
diff --git a/e3sm_diags/derivations/default_regions.py b/e3sm_diags/derivations/default_regions.py
index 51afc61fa..c3444c3c2 100644
--- a/e3sm_diags/derivations/default_regions.py
+++ b/e3sm_diags/derivations/default_regions.py
@@ -15,6 +15,7 @@
"50N90N": {"domain": cdutil.region.domain(latitude=(50.0, 90, "ccb"))},
"60S90N": {"domain": cdutil.region.domain(latitude=(-60.0, 90, "ccb"))},
"60S60N": {"domain": cdutil.region.domain(latitude=(-60.0, 60, "ccb"))},
+ "75S75N": {"domain": cdutil.region.domain(latitude=(-75.0, 75, "ccb"))},
"ocean": {
"value": 0.65,
},
diff --git a/e3sm_diags/driver/default_diags/annual_cycle_zonal_mean_model_vs_obs.cfg b/e3sm_diags/driver/default_diags/annual_cycle_zonal_mean_model_vs_obs.cfg
index 364799d21..544e2a056 100644
--- a/e3sm_diags/driver/default_diags/annual_cycle_zonal_mean_model_vs_obs.cfg
+++ b/e3sm_diags/driver/default_diags/annual_cycle_zonal_mean_model_vs_obs.cfg
@@ -275,40 +275,40 @@ diff_levels = [-75, -50, -40, -30, -20, -10, -5, 5, 10, 20, 30, 40, 50, 75]
[#]
sets = ["annual_cycle_zonal_mean"]
-case_id = "ERA-Interim"
+case_id = "ERA5"
variables = ["LHFLX"]
-ref_name = "ERA-Interim"
-reference_name = "ERA-Interim Reanalysis"
+ref_name = "ERA5"
+reference_name = "ERA5 Reanalysis"
contour_levels = [0,5, 15, 30, 60, 90, 120, 150, 180, 210, 240, 270, 300]
diff_levels = [-150, -120, -90, -60, -30, -20, -10, -5, 5, 10, 20, 30, 60, 90, 120, 150]
[#]
sets = ["annual_cycle_zonal_mean"]
-case_id = "ERA-Interim"
+case_id = "ERA5"
variables = ["SHFLX"]
-ref_name = "ERA-Interim"
-reference_name = "ERA-Interim Reanalysis"
+ref_name = "ERA5"
+reference_name = "ERA5 Reanalysis"
contour_levels = [-100, -75, -50, -25, -10, 0, 10, 25, 50, 75, 100, 125, 150]
diff_levels = [-100, -80, -60, -40, -20, -10, -5, 5, 10, 20, 40, 60, 80, 100]
[#]
sets = ["annual_cycle_zonal_mean"]
-case_id = "ERA-Interim"
+case_id = "ERA5"
variables = ["PSL"]
-ref_name = "ERA-Interim"
-reference_name = "ERA-Interim Reanalysis"
+ref_name = "ERA5"
+reference_name = "ERA5 Reanalysis"
contour_levels = [955, 965, 975,980, 985, 990, 995, 1000, 1005, 1010, 1015, 1020, 1025, 1035]
diff_levels = [ -16, -12, -8, -4, -2, -1, -0.5, 0.5, 1, 2, 4, 8, 12, 16]
[#]
sets = ["annual_cycle_zonal_mean"]
-case_id = "ERA-Interim"
+case_id = "ERA5"
variables = ["PRECT"]
-ref_name = "ERA-Interim"
-reference_name = "ERA-Interim Reanalysis"
+ref_name = "ERA5"
+reference_name = "ERA5 Reanalysis"
test_colormap = "WhiteBlueGreenYellowRed.rgb"
reference_colormap = "WhiteBlueGreenYellowRed.rgb"
diff_colormap = "BrBG"
@@ -318,10 +318,10 @@ diff_levels = [-5, -4, -3, -2, -1, -0.5, 0.5, 1, 2, 3, 4, 5]
[#]
sets = ["annual_cycle_zonal_mean"]
-case_id = "ERA-Interim"
+case_id = "ERA5"
variables = ["TMQ"]
-ref_name = "ERA-Interim"
-reference_name = "ERA-Interim Reanalysis"
+ref_name = "ERA5"
+reference_name = "ERA5 Reanalysis"
contour_levels = [5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60]
diff_levels = [-12, -9, -6, -4, -3, -2, -1, 1, 2, 3, 4, 6, 9, 12]
@@ -397,10 +397,10 @@ diff_levels = [-0.5, -0.4, -0.3, -0.2, -0.1, -0.05, -0.02, 0.02, 0.05, 0.1, 0.2,
[#]
sets = ["annual_cycle_zonal_mean"]
-case_id = "ERA-Interim"
+case_id = "ERA5"
variables = ["TREFHT"]
-ref_name = "ERA-Interim"
-reference_name = "ERA-Interim Reanalysis"
+ref_name = "ERA5"
+reference_name = "ERA5 Reanalysis"
contour_levels = [-35, -30, -25, -20, -15, -10, -5, 0, 5, 10, 15, 20, 25, 30, 35, 40]
diff_levels = [-15, -10, -5, -2, -1, -0.5, -0.2, 0.2, 0.5, 1, 2, 5, 10, 15]
diff --git a/e3sm_diags/driver/default_diags/lat_lon_land_model_vs_model.cfg b/e3sm_diags/driver/default_diags/lat_lon_land_model_vs_model.cfg
index 81d90ac0e..0a71fd34f 100644
--- a/e3sm_diags/driver/default_diags/lat_lon_land_model_vs_model.cfg
+++ b/e3sm_diags/driver/default_diags/lat_lon_land_model_vs_model.cfg
@@ -1,58 +1,506 @@
[#]
sets = ["lat_lon_land"]
case_id = "model_vs_model"
-variables = ["TLAI"]
+variables = ["BTRAN"]
+seasons = ["ANN", "DJF", "MAM", "JJA", "SON"]
+regions = ["global"]
+test_colormap = "WhiteBlueGreenYellowRed.rgb"
+reference_colormap = "WhiteBlueGreenYellowRed.rgb"
+diff_colormap = "BrBG"
+contour_levels = [0,0.0667,0.133,0.2,0.267,0.333,0.4,0.467,0.533,0.6,0.667,0.733,0.8,0.867,0.933,1.0]
+
+[#]
+sets = ["lat_lon_land"]
+case_id = "model_vs_model"
+variables = ["CPOOL"]
+seasons = ["ANN", "DJF", "MAM", "JJA", "SON"]
+regions = ["global"]
+test_colormap = "WhiteBlueGreenYellowRed.rgb"
+reference_colormap = "WhiteBlueGreenYellowRed.rgb"
+diff_colormap = "BrBG"
+contour_levels = [0,0.189,0.378,0.566,0.755,0.944,1.13,1.32,1.51,1.7,1.89,2.08,2.27,2.45,2.64,2.83]
+
+[#]
+sets = ["lat_lon_land"]
+case_id = "model_vs_model"
+variables = ["DENIT"]
+seasons = ["ANN", "DJF", "MAM", "JJA", "SON"]
+regions = ["global"]
+test_colormap = "WhiteBlueGreenYellowRed.rgb"
+reference_colormap = "WhiteBlueGreenYellowRed.rgb"
+diff_colormap = "BrBG"
+contour_levels = [0,0.695,1.39,2.08,2.78,3.47,4.17,4.86,5.56,6.25,6.95,7.64,8.34,9.03,9.73,10.4]
+
+[#]
+sets = ["lat_lon_land"]
+case_id = "model_vs_model"
+variables = ["EFLX_LH_TOT"]
+seasons = ["ANN", "DJF", "MAM", "JJA", "SON"]
+regions = ["global"]
+test_colormap = "WhiteBlueGreenYellowRed.rgb"
+reference_colormap = "WhiteBlueGreenYellowRed.rgb"
+diff_colormap = "BrBG"
+contour_levels = [-7.56,2.17,11.9,21.6,31.4,41.1,50.9,60.6,70.3,80.1,89.8,99.5,109.0,119.0,129.0,138.0]
+[#]
+sets = ["lat_lon_land"]
+case_id = "model_vs_model"
+variables = ["FAREA_BURNED"]
+seasons = ["ANN", "DJF", "MAM", "JJA", "SON"]
+regions = ["global"]
+test_colormap = "WhiteBlueGreenYellowRed.rgb"
+reference_colormap = "WhiteBlueGreenYellowRed.rgb"
+diff_colormap = "BrBG"
+contour_levels = [0,7.99e-1,1.6,2.4,3.2,4,4.79,5.59,6.39,7.19,7.99,8.79,9.59,10.4,11.2,12]
+[#]
+sets = ["lat_lon_land"]
+case_id = "model_vs_model"
+variables = ["FCEV"]
+seasons = ["ANN", "DJF", "MAM", "JJA", "SON"]
+regions = ["global"]
+test_colormap = "WhiteBlueGreenYellowRed.rgb"
+reference_colormap = "WhiteBlueGreenYellowRed.rgb"
+diff_colormap = "BrBG"
+contour_levels = [-2.345,0.596,3.54,6.48,9.42,12.4,15.3,18.2,21.2,24.1,27.1,30.0,32.9,35.9,38.8,41.8]
+[#]
+sets = ["lat_lon_land"]
+case_id = "model_vs_model"
+variables = ["FCTR"]
+seasons = ["ANN", "DJF", "MAM", "JJA", "SON"]
+regions = ["global"]
+test_colormap = "WhiteBlueGreenYellowRed.rgb"
+reference_colormap = "WhiteBlueGreenYellowRed.rgb"
+diff_colormap = "BrBG"
+contour_levels = [0,5.91,11.8,17.7,23.6,29.5,35.4,41.3,47.2,53.2,59.1,65.0,70.9,76.8,82.7,88.6]
+[#]
+sets = ["lat_lon_land"]
+case_id = "model_vs_model"
+variables = ["FGEV"]
+seasons = ["ANN", "DJF", "MAM", "JJA", "SON"]
+regions = ["global"]
+test_colormap = "WhiteBlueGreenYellowRed.rgb"
+reference_colormap = "WhiteBlueGreenYellowRed.rgb"
+diff_colormap = "BrBG"
+contour_levels = [-7.56,1.36,10.3,19.2,28.1,37.1,46.0,54.9,63.8,72.8,81.7,90.6,99.5,108.0,117.0,126.0]
+[#]
+sets = ["lat_lon_land"]
+case_id = "model_vs_model"
+variables = ["FGR"]
+seasons = ["ANN", "DJF", "MAM", "JJA", "SON"]
+regions = ["global"]
+test_colormap = "WhiteBlueGreenYellowRed.rgb"
+reference_colormap = "WhiteBlueGreenYellowRed.rgb"
+diff_colormap = "BrBG"
+contour_levels = [-46.282,-40.5549,-34.8279,-29.1008,-23.3737,-17.6467,-11.9196,-6.193,-0.47,5.26,11.0,16.7,22.4,28.2,33.9,39.6]
+[#]
+sets = ["lat_lon_land"]
+case_id = "model_vs_model"
+variables = ["FIRA"]
+seasons = ["ANN", "DJF", "MAM", "JJA", "SON"]
+regions = ["global"]
+test_colormap = "WhiteBlueGreenYellowRed.rgb"
+reference_colormap = "WhiteBlueGreenYellowRed.rgb"
+diff_colormap = "BrBG"
+contour_levels = [-1.917,7.78,17.5,27.2,36.9,46.6,56.3,66.0,75.7,85.4,95.1,105.0,114.0,124.0,134.0,144.0]
+[#]
+sets = ["lat_lon_land"]
+case_id = "model_vs_model"
+variables = ["FIRE"]
+seasons = ["ANN", "DJF", "MAM", "JJA", "SON"]
+regions = ["global"]
+test_colormap = "WhiteBlueGreenYellowRed.rgb"
+reference_colormap = "WhiteBlueGreenYellowRed.rgb"
+diff_colormap = "BrBG"
+contour_levels = [97.7,126.0,155.0,183.0,212.0,240.0,269.0,297.0,326.0,355.0,383.0,412.0,440.0,469.0,497.0,526.0]
+[#]
+sets = ["lat_lon_land"]
+case_id = "model_vs_model"
+variables = ["FLDS"]
+seasons = ["ANN", "DJF", "MAM", "JJA", "SON"]
+regions = ["global"]
+test_colormap = "WhiteBlueGreenYellowRed.rgb"
+reference_colormap = "WhiteBlueGreenYellowRed.rgb"
+diff_colormap = "BrBG"
+contour_levels = [75.3,98.4,122.0,145.0,168.0,191.0,214.0,237.0,260.0,283.0,306.0,329.0,353.0,376.0,399.0,422.0]
+[#]
+sets = ["lat_lon_land"]
+case_id = "model_vs_model"
+variables = ["FPG"]
+seasons = ["ANN", "DJF", "MAM", "JJA", "SON"]
+regions = ["global"]
+test_colormap = "WhiteBlueGreenYellowRed.rgb"
+reference_colormap = "WhiteBlueGreenYellowRed.rgb"
+diff_colormap = "BrBG"
+contour_levels = [0.642,0.666,0.689,0.713,0.737,0.761,0.785,0.809,0.833,0.857,0.881,0.904,0.928,0.952,0.976,1.0]
+[#]
+sets = ["lat_lon_land"]
+case_id = "model_vs_model"
+variables = ["FPG_P"]
+seasons = ["ANN", "DJF", "MAM", "JJA", "SON"]
+regions = ["global"]
+test_colormap = "WhiteBlueGreenYellowRed.rgb"
+reference_colormap = "WhiteBlueGreenYellowRed.rgb"
+diff_colormap = "BrBG"
+contour_levels = [0.578,0.606,0.635,0.663,0.691,0.719,0.747,0.775,0.803,0.831,0.859,0.888,0.916,0.944,0.972,1.0]
+[#]
+sets = ["lat_lon_land"]
+case_id = "model_vs_model"
+variables = ["FPI"]
+seasons = ["ANN", "DJF", "MAM", "JJA", "SON"]
+regions = ["global"]
+test_colormap = "WhiteBlueGreenYellowRed.rgb"
+reference_colormap = "WhiteBlueGreenYellowRed.rgb"
+diff_colormap = "BrBG"
+contour_levels = [0.0624,0.125,0.187,0.25,0.312,0.375,0.437,0.5,0.562,0.625,0.687,0.75,0.812,0.875,0.937,1.0]
+[#]
+sets = ["lat_lon_land"]
+case_id = "model_vs_model"
+variables = ["FPI_P_vr"]
+seasons = ["ANN", "DJF", "MAM", "JJA", "SON"]
+regions = ["global"]
+test_colormap = "WhiteBlueGreenYellowRed.rgb"
+reference_colormap = "WhiteBlueGreenYellowRed.rgb"
+diff_colormap = "BrBG"
+contour_levels = [0,0.0667,0.133,0.2,0.267,0.333,0.4,0.467,0.533,0.6,0.667,0.733,0.8,0.867,0.933,1.0]
+[#]
+sets = ["lat_lon_land"]
+case_id = "model_vs_model"
+variables = ["FPI_vr"]
+seasons = ["ANN", "DJF", "MAM", "JJA", "SON"]
+regions = ["global"]
+test_colormap = "WhiteBlueGreenYellowRed.rgb"
+reference_colormap = "WhiteBlueGreenYellowRed.rgb"
+diff_colormap = "BrBG"
+contour_levels = [0,0.0667,0.133,0.2,0.267,0.333,0.4,0.467,0.533,0.6,0.667,0.733,0.8,0.867,0.933,1.0]
+[#]
+sets = ["lat_lon_land"]
+case_id = "model_vs_model"
+variables = ["FSA"]
+seasons = ["ANN", "DJF", "MAM", "JJA", "SON"]
+regions = ["global"]
+test_colormap = "WhiteBlueGreenYellowRed.rgb"
+reference_colormap = "WhiteBlueGreenYellowRed.rgb"
+diff_colormap = "BrBG"
+contour_levels = [0,18.2,36.4,54.6,72.8,91.0,109.0,127.0,146.0,164.0,182.0,200.0,218.0,237.0,255.0,273.0]
+[#]
+sets = ["lat_lon_land"]
+case_id = "model_vs_model"
+variables = ["FSAT"]
+seasons = ["ANN", "DJF", "MAM", "JJA", "SON"]
+regions = ["global"]
+test_colormap = "WhiteBlueGreenYellowRed.rgb"
+reference_colormap = "WhiteBlueGreenYellowRed.rgb"
+diff_colormap = "BrBG"
+contour_levels = [0.000502,0.0231,0.0458,0.0684,0.0911,0.114,0.136,0.159,0.182,0.204,0.227,0.25,0.272,0.295,0.317,0.34]
+[#]
+sets = ["lat_lon_land"]
+case_id = "model_vs_model"
+variables = ["FSDS"]
+seasons = ["ANN", "DJF", "MAM", "JJA", "SON"]
+regions = ["global"]
+test_colormap = "WhiteBlueGreenYellowRed.rgb"
+reference_colormap = "WhiteBlueGreenYellowRed.rgb"
+diff_colormap = "BrBG"
+contour_levels = [0,25.4,50.8,76.2,102.0,127.0,152.0,178.0,203.0,229.0,254.0,279.0,305.0,330.0,356.0,381.0]
+[#]
+sets = ["lat_lon_land"]
+case_id = "model_vs_model"
+variables = ["FSH"]
+seasons = ["ANN", "DJF", "MAM", "JJA", "SON"]
+regions = ["global"]
+test_colormap = "WhiteBlueGreenYellowRed.rgb"
+reference_colormap = "WhiteBlueGreenYellowRed.rgb"
+diff_colormap = "BrBG"
+contour_levels = [-44.4209,-32.942,-21.463,-9.984,1.49,13.0,24.5,35.9,47.4,58.9,70.4,81.8,93.3,105.0,116.0,128.0]
+[#]
+sets = ["lat_lon_land"]
+case_id = "model_vs_model"
+variables = ["FSNO"]
+seasons = ["ANN", "DJF", "MAM", "JJA", "SON"]
+regions = ["global"]
+test_colormap = "WhiteBlueGreenYellowRed.rgb"
+reference_colormap = "WhiteBlueGreenYellowRed.rgb"
+diff_colormap = "BrBG"
+contour_levels = [0,0.0667,0.133,0.2,0.267,0.333,0.4,0.467,0.533,0.6,0.667,0.733,0.8,0.867,0.933,1.0]
+[#]
+sets = ["lat_lon_land"]
+case_id = "model_vs_model"
+variables = ["FSR"]
+seasons = ["ANN", "DJF", "MAM", "JJA", "SON"]
+regions = ["global"]
+test_colormap = "WhiteBlueGreenYellowRed.rgb"
+reference_colormap = "WhiteBlueGreenYellowRed.rgb"
+diff_colormap = "BrBG"
+contour_levels = [0,21.1,42.3,63.4,84.5,106.0,127.0,148.0,169.0,190.0,211.0,233.0,254.0,275.0,296.0,317.0]
+[#]
+sets = ["lat_lon_land"]
+case_id = "model_vs_model"
+variables = ["GPP"]
+seasons = ["ANN", "DJF", "MAM", "JJA", "SON"]
+regions = ["global"]
+test_colormap = "WhiteBlueGreenYellowRed.rgb"
+reference_colormap = "WhiteBlueGreenYellowRed.rgb"
+diff_colormap = "BrBG"
+contour_levels = [0,0.588,1.18,1.76,2.35,2.94,3.53,4.12,4.71,5.29,5.88,6.47,7.06,7.65,8.24,8.82]
+[#]
+sets = ["lat_lon_land"]
+case_id = "model_vs_model"
+variables = ["GROSS_NMIN"]
+seasons = ["ANN", "DJF", "MAM", "JJA", "SON"]
+regions = ["global"]
+test_colormap = "WhiteBlueGreenYellowRed.rgb"
+reference_colormap = "WhiteBlueGreenYellowRed.rgb"
+diff_colormap = "BrBG"
+contour_levels = [0,10.6,21.2,31.8,42.5,53.1,63.7,74.3,84.9,95.5,106.0,117.0,127.0,138.0,149.0,159.0]
+[#]
+sets = ["lat_lon_land"]
+case_id = "model_vs_model"
+variables = ["GROSS_PMIN"]
+seasons = ["ANN", "DJF", "MAM", "JJA", "SON"]
+regions = ["global"]
+test_colormap = "WhiteBlueGreenYellowRed.rgb"
+reference_colormap = "WhiteBlueGreenYellowRed.rgb"
+diff_colormap = "BrBG"
+contour_levels = [0,0.303,0.605,0.908,1.21,1.51,1.82,2.12,2.42,2.72,3.03,3.33,3.63,3.94,4.24,4.54]
+[#]
+sets = ["lat_lon_land"]
+case_id = "model_vs_model"
+variables = ["H2OSNO"]
+seasons = ["ANN", "DJF", "MAM", "JJA", "SON"]
+regions = ["global"]
+test_colormap = "WhiteBlueGreenYellowRed.rgb"
+reference_colormap = "WhiteBlueGreenYellowRed.rgb"
+diff_colormap = "BrBG"
+contour_levels = [0,66.7,133.0,200.0,267.0,334.0,400.0,467.0,534.0,600.0,667.0,734.0,801.0,867.0,934.0,1000.0]
+[#]
+sets = ["lat_lon_land"]
+case_id = "model_vs_model"
+variables = ["H2OSOI"]
+seasons = ["ANN", "DJF", "MAM", "JJA", "SON"]
+regions = ["global"]
+test_colormap = "WhiteBlueGreenYellowRed.rgb"
+reference_colormap = "WhiteBlueGreenYellowRed.rgb"
+diff_colormap = "BrBG"
+contour_levels = [1.44e-06,0.0466,0.0931,0.14,0.186,0.233,0.279,0.326,0.373,0.419,0.466,0.512,0.559,0.605,0.652,0.699]
+[#]
+sets = ["lat_lon_land"]
+case_id = "model_vs_model"
+variables = ["HR"]
+seasons = ["ANN", "DJF", "MAM", "JJA", "SON"]
+regions = ["global"]
+test_colormap = "WhiteBlueGreenYellowRed.rgb"
+reference_colormap = "WhiteBlueGreenYellowRed.rgb"
+diff_colormap = "BrBG"
+contour_levels = [0,0.222,0.444,0.666,0.888,1.11,1.33,1.55,1.78,2.0,2.22,2.44,2.66,2.89,3.11,3.33]
+[#]
+sets = ["lat_lon_land"]
+case_id = "model_vs_model"
+variables = ["HR_vr"]
+seasons = ["ANN", "DJF", "MAM", "JJA", "SON"]
+regions = ["global"]
+test_colormap = "WhiteBlueGreenYellowRed.rgb"
+reference_colormap = "WhiteBlueGreenYellowRed.rgb"
+diff_colormap = "BrBG"
+contour_levels = [0,1.81e-05,3.63e-05,5.44e-05,7.26e-05,9.07e-05,0.000109,0.000127,0.000145,0.000163,0.000181,0.0002,0.000218,0.000236,0.000254,0.000272]
+[#]
+sets = ["lat_lon_land"]
+case_id = "model_vs_model"
+variables = ["LABILEP_vr"]
+seasons = ["ANN", "DJF", "MAM", "JJA", "SON"]
+regions = ["global"]
+test_colormap = "WhiteBlueGreenYellowRed.rgb"
+reference_colormap = "WhiteBlueGreenYellowRed.rgb"
+diff_colormap = "BrBG"
+contour_levels = [0,9.05,18.1,27.2,36.2,45.3,54.3,63.4,72.4,81.5,90.5,99.6,109.0,118.0,127.0,136.0]
+[#]
+sets = ["lat_lon_land"]
+case_id = "model_vs_model"
+variables = ["LEAFC"]
+seasons = ["ANN", "DJF", "MAM", "JJA", "SON"]
+regions = ["global"]
+test_colormap = "WhiteBlueGreenYellowRed.rgb"
+reference_colormap = "WhiteBlueGreenYellowRed.rgb"
+diff_colormap = "BrBG"
+contour_levels = [0,0.0228,0.0456,0.0683,0.0911,0.114,0.137,0.159,0.182,0.205,0.228,0.251,0.273,0.296,0.319,0.342]
+[#]
+sets = ["lat_lon_land"]
+case_id = "model_vs_model"
+variables = ["LEAFN"]
+seasons = ["ANN", "DJF", "MAM", "JJA", "SON"]
+regions = ["global"]
+test_colormap = "WhiteBlueGreenYellowRed.rgb"
+reference_colormap = "WhiteBlueGreenYellowRed.rgb"
+diff_colormap = "BrBG"
+contour_levels = [0,0.774,1.55,2.32,3.1,3.87,4.64,5.42,6.19,6.97,7.74,8.51,9.29,10.1,10.8,11.6]
+[#]
+sets = ["lat_lon_land"]
+case_id = "model_vs_model"
+variables = ["LEAFP"]
+seasons = ["ANN", "DJF", "MAM", "JJA", "SON"]
+regions = ["global"]
+test_colormap = "WhiteBlueGreenYellowRed.rgb"
+reference_colormap = "WhiteBlueGreenYellowRed.rgb"
+diff_colormap = "BrBG"
+contour_levels = [0,0.0486,0.0972,0.146,0.194,0.243,0.292,0.34,0.389,0.438,0.486,0.535,0.583,0.632,0.681,0.729]
+[#]
+sets = ["lat_lon_land"]
+case_id = "model_vs_model"
+variables = ["NBP"]
+seasons = ["ANN", "DJF", "MAM", "JJA", "SON"]
+regions = ["global"]
+test_colormap = "WhiteBlueGreenYellowRed.rgb"
+reference_colormap = "WhiteBlueGreenYellowRed.rgb"
+diff_colormap = "BrBG"
+contour_levels = [-2.873,-2.493,-2.112,-1.732,-1.352,-0.97,-0.59,-0.21,0.169,0.549,0.93,1.31,1.69,2.07,2.45,2.83]
+[#]
+sets = ["lat_lon_land"]
+case_id = "model_vs_model"
+variables = ["NDEP_TO_SMINN"]
+seasons = ["ANN", "DJF", "MAM", "JJA", "SON"]
+regions = ["global"]
+test_colormap = "WhiteBlueGreenYellowRed.rgb"
+reference_colormap = "WhiteBlueGreenYellowRed.rgb"
+diff_colormap = "BrBG"
+contour_levels = [0.00117,0.141,0.281,0.421,0.561,0.7,0.84,0.98,1.12,1.26,1.4,1.54,1.68,1.82,1.96,2.1]
+[#]
+sets = ["lat_lon_land"]
+case_id = "model_vs_model"
+variables = ["NFIX_TO_SMINN"]
+seasons = ["ANN", "DJF", "MAM", "JJA", "SON"]
+regions = ["global"]
+test_colormap = "WhiteBlueGreenYellowRed.rgb"
+reference_colormap = "WhiteBlueGreenYellowRed.rgb"
+diff_colormap = "BrBG"
+contour_levels = [0,0.323,0.646,0.969,1.29,1.61,1.94,2.26,2.58,2.91,3.23,3.55,3.88,4.2,4.52,4.84]
+[#]
+sets = ["lat_lon_land"]
+case_id = "model_vs_model"
+variables = ["NPP"]
+seasons = ["ANN", "DJF", "MAM", "JJA", "SON"]
+regions = ["global"]
+test_colormap = "WhiteBlueGreenYellowRed.rgb"
+reference_colormap = "WhiteBlueGreenYellowRed.rgb"
+diff_colormap = "BrBG"
+contour_levels = [-1.302,-0.92,-0.53,-0.14,0.241,0.627,1.01,1.4,1.78,2.17,2.56,2.94,3.33,3.71,4.1,4.48]
+[#]
+sets = ["lat_lon_land"]
+case_id = "model_vs_model"
+variables = ["PLANT_NDEMAND_COL"]
+seasons = ["ANN", "DJF", "MAM", "JJA", "SON"]
+regions = ["global"]
+test_colormap = "WhiteBlueGreenYellowRed.rgb"
+reference_colormap = "WhiteBlueGreenYellowRed.rgb"
+diff_colormap = "BrBG"
+contour_levels = [0,8.58,17.2,25.7,34.3,42.9,51.5,60.0,68.6,77.2,85.8,94.3,103.0,112.0,120.0,129.0]
+[#]
+sets = ["lat_lon_land"]
+case_id = "model_vs_model"
+variables = ["PLANT_PDEMAND_COL"]
+seasons = ["ANN", "DJF", "MAM", "JJA", "SON"]
+regions = ["global"]
+test_colormap = "WhiteBlueGreenYellowRed.rgb"
+reference_colormap = "WhiteBlueGreenYellowRed.rgb"
+diff_colormap = "BrBG"
+contour_levels = [0,0.477,0.955,1.43,1.91,2.39,2.86,3.34,3.82,4.3,4.77,5.25,5.73,6.2,6.68,7.16]
+[#]
+sets = ["lat_lon_land"]
+case_id = "model_vs_model"
+variables = ["QDRAI"]
+seasons = ["ANN", "DJF", "MAM", "JJA", "SON"]
+regions = ["global"]
+test_colormap = "WhiteBlueGreenYellowRed.rgb"
+reference_colormap = "WhiteBlueGreenYellowRed.rgb"
+diff_colormap = "BrBG"
+contour_levels = [0,0.445,0.891,1.34,1.78,2.23,2.67,3.12,3.56,4.01,4.45,4.9,5.34,5.79,6.23,6.68]
+[#]
+sets = ["lat_lon_land"]
+case_id = "model_vs_model"
+variables = ["QINFL"]
+seasons = ["ANN", "DJF", "MAM", "JJA", "SON"]
+regions = ["global"]
+test_colormap = "WhiteBlueGreenYellowRed.rgb"
+reference_colormap = "WhiteBlueGreenYellowRed.rgb"
+diff_colormap = "BrBG"
+contour_levels = [-0.43,15.4,31.1,46.9,62.7,78.5,94.2,110.0,126.0,142.0,157.0,173.0,189.0,205.0,220.0,236.0]
+[#]
+sets = ["lat_lon_land"]
+case_id = "model_vs_model"
+variables = ["QIRRIG_GRND"]
+seasons = ["ANN", "DJF", "MAM", "JJA", "SON"]
+regions = ["global"]
+test_colormap = "WhiteBlueGreenYellowRed.rgb"
+reference_colormap = "WhiteBlueGreenYellowRed.rgb"
+diff_colormap = "BrBG"
+contour_levels = [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
+[#]
+sets = ["lat_lon_land"]
+case_id = "model_vs_model"
+variables = ["QIRRIG_ORIG"]
+seasons = ["ANN", "DJF", "MAM", "JJA", "SON"]
+regions = ["global"]
+test_colormap = "WhiteBlueGreenYellowRed.rgb"
+reference_colormap = "WhiteBlueGreenYellowRed.rgb"
+diff_colormap = "BrBG"
+contour_levels = [0,0.267,0.534,0.801,1.07,1.33,1.6,1.87,2.14,2.4,2.67,2.94,3.2,3.47,3.74,4.0]
+[#]
+sets = ["lat_lon_land"]
+case_id = "model_vs_model"
+variables = ["QIRRIG_REAL"]
+seasons = ["ANN", "DJF", "MAM", "JJA", "SON"]
+regions = ["global"]
+test_colormap = "WhiteBlueGreenYellowRed.rgb"
+reference_colormap = "WhiteBlueGreenYellowRed.rgb"
+diff_colormap = "BrBG"
+contour_levels = [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
+[#]
+sets = ["lat_lon_land"]
+case_id = "model_vs_model"
+variables = ["QIRRIG_SURF"]
seasons = ["ANN", "DJF", "MAM", "JJA", "SON"]
regions = ["global"]
test_colormap = "WhiteBlueGreenYellowRed.rgb"
reference_colormap = "WhiteBlueGreenYellowRed.rgb"
diff_colormap = "BrBG"
-contour_levels = [0,0.2,0.4,0.8,1.2,1.6,2.0,2.4,3.2,4.0,4.8,5.6,6.4,8.0]
-diff_levels = [-4.0,-3.2,-2.4,-2.0,-1.6,-1.2,-0.8,-0.4,-0.2,0.0,0.2,0.4,0.8,1.2,1.6,2.0,2.4,3.2,4.0]
+contour_levels = [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
[#]
sets = ["lat_lon_land"]
case_id = "model_vs_model"
-variables = ["EFLX_LH_TOT"]
+variables = ["QIRRIG_WM"]
seasons = ["ANN", "DJF", "MAM", "JJA", "SON"]
regions = ["global"]
test_colormap = "WhiteBlueGreenYellowRed.rgb"
reference_colormap = "WhiteBlueGreenYellowRed.rgb"
diff_colormap = "BrBG"
-contour_levels = [-100.0,-75.0,-50.0,-25.0,0,25.0,50.0,75.0,100.0,150.0,200.0,250.0,300.0,400.0,500.0]
-diff_levels = [-250.0,-200.0,-150.0,-125.0,-100.0,-75.0,-50.0,-25.0,-12.5,0.0,12.5,25.0,50.0,75.0,100.0,125.0,150.0,200.0,250.0]
+contour_levels = [-4.004,-3.737,-3.47,-3.203,-2.936,-2.669,-2.402,-2.135,-1.869,-1.602,-1.335,-1.068,-0.8,-0.53,-0.27,0]
[#]
sets = ["lat_lon_land"]
case_id = "model_vs_model"
-variables = ["GPP"]
+variables = ["QOVER"]
seasons = ["ANN", "DJF", "MAM", "JJA", "SON"]
regions = ["global"]
test_colormap = "WhiteBlueGreenYellowRed.rgb"
reference_colormap = "WhiteBlueGreenYellowRed.rgb"
diff_colormap = "BrBG"
-contour_levels = [0,0.30000000000000004,0.6000000000000001,1.2000000000000002,1.7999999999999998,2.4000000000000004,3.0,3.5999999999999996,4.800000000000001,6.0,7.199999999999999,8.399999999999999,9.600000000000001,12.0]
-diff_levels = [-6.0,-4.800000000000001,-3.5999999999999996,-3.0,-2.4000000000000004,-1.7999999999999998,-1.2000000000000002,-0.6000000000000001,-0.30000000000000004,0.0,0.30000000000000004,0.6000000000000001,1.2000000000000002,1.7999999999999998,2.4000000000000004,3.0,3.5999999999999996,4.800000000000001,6.0]
+contour_levels = [0,0.195,0.391,0.586,0.782,0.977,1.17,1.37,1.56,1.76,1.95,2.15,2.35,2.54,2.74,2.93]
[#]
sets = ["lat_lon_land"]
case_id = "model_vs_model"
-variables = ["NBP"]
+variables = ["QRGWL"]
seasons = ["ANN", "DJF", "MAM", "JJA", "SON"]
regions = ["global"]
test_colormap = "WhiteBlueGreenYellowRed.rgb"
reference_colormap = "WhiteBlueGreenYellowRed.rgb"
diff_colormap = "BrBG"
-contour_levels = [-1,-0.8,-0.6,-0.5,-0.4,-0.3,-0.2,-0.1,-0.05,0,0.05,0.1,0.2,0.3,0.4,0.5,0.6,0.8,1.0]
-diff_levels = [-0.5,-0.4,-0.3,-0.25,-0.2,-0.15,-0.1,-0.05,-0.025,0.0,0.025,0.05,0.1,0.15,0.2,0.25,0.3,0.4,0.5]
+contour_levels = [-2.087,-1.719,-1.352,-0.98,-0.62,-0.25,0.118,0.485,0.853,1.22,1.59,1.95,2.32,2.69,3.06,3.42]
[#]
sets = ["lat_lon_land"]
case_id = "model_vs_model"
-variables = ["NPP"]
+variables = ["QRUNOFF"]
seasons = ["ANN", "DJF", "MAM", "JJA", "SON"]
regions = ["global"]
test_colormap = "WhiteBlueGreenYellowRed.rgb"
reference_colormap = "WhiteBlueGreenYellowRed.rgb"
diff_colormap = "BrBG"
-contour_levels = [-1.2000000000000002,-0.8999999999999999,-0.6000000000000001,-0.30000000000000004,0,0.30000000000000004,0.6000000000000001,0.8999999999999999,1.2000000000000002,1.7999999999999998,2.4000000000000004,3.0,3.5999999999999996,4.800000000000001,6.0]
-diff_levels = [-3.0,-2.4000000000000004,-1.7999999999999998,-1.5,-1.2000000000000002,-0.8999999999999999,-0.6000000000000001,-0.30000000000000004,-0.15000000000000002,0.0,0.15000000000000002,0.30000000000000004,0.6000000000000001,0.8999999999999999,1.2000000000000002,1.5,1.7999999999999998,2.4000000000000004,3.0]
+contour_levels = [-2.068,-1.238,-0.41,0.421,1.25,2.08,2.91,3.74,4.57,5.4,6.23,7.06,7.89,8.72,9.55,10.4]
[#]
sets = ["lat_lon_land"]
case_id = "model_vs_model"
@@ -62,8 +510,17 @@ regions = ["global"]
test_colormap = "WhiteBlueGreenYellowRed.rgb"
reference_colormap = "WhiteBlueGreenYellowRed.rgb"
diff_colormap = "BrBG"
-contour_levels = [-2.0,-1.5,-1.0,-0.5,0,0.5,1.0,1.5,2.0,3.0,4.0,5.0,6.0,8.0,10.0]
-diff_levels = [-5.0,-4.0,-3.0,-2.5,-2.0,-1.5,-1.0,-0.5,-0.25,0.0,0.25,0.5,1.0,1.5,2.0,2.5,3.0,4.0,5.0]
+contour_levels = [-0.23,0.0758,0.382,0.688,0.995,1.3,1.61,1.91,2.22,2.53,2.83,3.14,3.44,3.75,4.06,4.36]
+[#]
+sets = ["lat_lon_land"]
+case_id = "model_vs_model"
+variables = ["QVEGE"]
+seasons = ["ANN", "DJF", "MAM", "JJA", "SON"]
+regions = ["global"]
+test_colormap = "WhiteBlueGreenYellowRed.rgb"
+reference_colormap = "WhiteBlueGreenYellowRed.rgb"
+diff_colormap = "BrBG"
+contour_levels = [-0.1,0.0206,0.122,0.224,0.325,0.427,0.529,0.63,0.732,0.833,0.935,1.04,1.14,1.24,1.34,1.44]
[#]
sets = ["lat_lon_land"]
case_id = "model_vs_model"
@@ -73,140 +530,297 @@ regions = ["global"]
test_colormap = "WhiteBlueGreenYellowRed.rgb"
reference_colormap = "WhiteBlueGreenYellowRed.rgb"
diff_colormap = "BrBG"
-contour_levels = [-2.0,-1.5,-1.0,-0.5,0,0.5,1.0,1.5,2.0,3.0,4.0,5.0,6.0,8.0,10.0]
-diff_levels = [-5.0,-4.0,-3.0,-2.5,-2.0,-1.5,-1.0,-0.5,-0.25,0.0,0.25,0.5,1.0,1.5,2.0,2.5,3.0,4.0,5.0]
+contour_levels = [0,0.204,0.408,0.612,0.816,1.02,1.22,1.43,1.63,1.84,2.04,2.24,2.45,2.65,2.86,3.06]
[#]
sets = ["lat_lon_land"]
case_id = "model_vs_model"
-variables = ["QVEGE"]
+variables = ["RAIN"]
seasons = ["ANN", "DJF", "MAM", "JJA", "SON"]
regions = ["global"]
test_colormap = "WhiteBlueGreenYellowRed.rgb"
reference_colormap = "WhiteBlueGreenYellowRed.rgb"
diff_colormap = "BrBG"
-contour_levels = [-2.0,-1.5,-1.0,-0.5,0,0.5,1.0,1.5,2.0,3.0,4.0,5.0,6.0,8.0,10.0]
-diff_levels = [-5.0,-4.0,-3.0,-2.5,-2.0,-1.5,-1.0,-0.5,-0.25,0.0,0.25,0.5,1.0,1.5,2.0,2.5,3.0,4.0,5.0]
+contour_levels = [0,0.96,1.92,2.88,3.84,4.8,5.76,6.72,7.68,8.64,9.6,10.6,11.5,12.5,13.4,14.4]
[#]
sets = ["lat_lon_land"]
case_id = "model_vs_model"
-variables = ["QRUNOFF"]
+variables = ["RH2M"]
seasons = ["ANN", "DJF", "MAM", "JJA", "SON"]
regions = ["global"]
test_colormap = "WhiteBlueGreenYellowRed.rgb"
reference_colormap = "WhiteBlueGreenYellowRed.rgb"
diff_colormap = "BrBG"
-contour_levels = [0,0.25,0.5,1.0,1.5,2.0,2.5,3.0,4.0,5.0,6.0,7.0,8.0,10.0]
-diff_levels = [-5.0,-4.0,-3.0,-2.5,-2.0,-1.5,-1.0,-0.5,-0.25,0.0,0.25,0.5,1.0,1.5,2.0,2.5,3.0,4.0,5.0]
+contour_levels = [15.7,21.3,26.9,32.5,38.2,43.8,49.4,55.0,60.6,66.3,71.9,77.5,83.1,88.7,94.4,100.0]
[#]
sets = ["lat_lon_land"]
case_id = "model_vs_model"
-variables = ["TOTVEGC"]
+variables = ["SMINN"]
seasons = ["ANN", "DJF", "MAM", "JJA", "SON"]
regions = ["global"]
test_colormap = "WhiteBlueGreenYellowRed.rgb"
reference_colormap = "WhiteBlueGreenYellowRed.rgb"
diff_colormap = "BrBG"
-contour_levels = [0,1000.0,2000.0,4000.0,6000.0,8000.0,10000.0,12000.0,16000.0,20000.0,24000.0,28000.0,32000.0,40000.0]
-diff_levels = [-20000.0,-16000.0,-12000.0,-10000.0,-8000.0,-6000.0,-4000.0,-2000.0,-1000.0,0.0,1000.0,2000.0,4000.0,6000.0,8000.0,10000.0,12000.0,16000.0,20000.0]
+contour_levels = [0,4.97,9.94,14.9,19.9,24.9,29.8,34.8,39.8,44.7,49.7,54.7,59.6,64.6,69.6,74.6]
[#]
sets = ["lat_lon_land"]
case_id = "model_vs_model"
-variables = ["TOTSOMC"]
+variables = ["SMINN_TO_PLANT"]
seasons = ["ANN", "DJF", "MAM", "JJA", "SON"]
regions = ["global"]
test_colormap = "WhiteBlueGreenYellowRed.rgb"
reference_colormap = "WhiteBlueGreenYellowRed.rgb"
diff_colormap = "BrBG"
-contour_levels = [0,2500.0,5000.0,10000.0,15000.0,20000.0,25000.0,30000.0,40000.0,50000.0,60000.0,70000.0,80000.0,100000.0]
-diff_levels = [-50000.0,-40000.0,-30000.0,-25000.0,-20000.0,-15000.0,-10000.0,-5000.0,-2500.0,0.0,2500.0,5000.0,10000.0,15000.0,20000.0,25000.0,30000.0,40000.0,50000.0]
+contour_levels = [0,4.75,9.49,14.2,19.0,23.7,28.5,33.2,38.0,42.7,47.5,52.2,57.0,61.7,66.5,71.2]
[#]
sets = ["lat_lon_land"]
case_id = "model_vs_model"
-variables = ["TOTSOMN"]
+variables = ["SMINP"]
seasons = ["ANN", "DJF", "MAM", "JJA", "SON"]
regions = ["global"]
test_colormap = "WhiteBlueGreenYellowRed.rgb"
reference_colormap = "WhiteBlueGreenYellowRed.rgb"
diff_colormap = "BrBG"
-contour_levels = [0,250.0,500.0,1000.0,1500.0,2000.0,2500.0,3000.0,4000.0,5000.0,6000.0,7000.0,8000.0,10000.0]
-diff_levels = [-5000.0,-4000.0,-3000.0,-2500.0,-2000.0,-1500.0,-1000.0,-500.0,-250.0,0.0,250.0,500.0,1000.0,1500.0,2000.0,2500.0,3000.0,4000.0,5000.0]
+contour_levels = [0,421.0,842.0,1260.0,1680.0,2100.0,2520.0,2950.0,3370.0,3790.0,4210.0,4630.0,5050.0,5470.0,5890.0,6310.0]
[#]
sets = ["lat_lon_land"]
case_id = "model_vs_model"
-variables = ["TOTSOMP"]
+variables = ["SMINP_TO_PLANT"]
seasons = ["ANN", "DJF", "MAM", "JJA", "SON"]
regions = ["global"]
test_colormap = "WhiteBlueGreenYellowRed.rgb"
reference_colormap = "WhiteBlueGreenYellowRed.rgb"
diff_colormap = "BrBG"
-contour_levels = [0,50.0,100.0,200.0,300.0,400.0,500.0,600.0,800.0,1000.0,1200.0,1400.0,1600.0,2000.0]
-diff_levels = [-1000.0,-800.0,-600.0,-500.0,-400.0,-300.0,-200.0,-100.0,-50.0,0.0,50.0,100.0,200.0,300.0,400.0,500.0,600.0,800.0,1000.0]
+contour_levels = [0,0.296,0.591,0.887,1.18,1.48,1.77,2.07,2.37,2.66,2.96,3.25,3.55,3.84,4.14,4.43]
[#]
sets = ["lat_lon_land"]
case_id = "model_vs_model"
-variables = ["FPG"]
+variables = ["SMIN_NH4"]
seasons = ["ANN", "DJF", "MAM", "JJA", "SON"]
regions = ["global"]
test_colormap = "WhiteBlueGreenYellowRed.rgb"
reference_colormap = "WhiteBlueGreenYellowRed.rgb"
diff_colormap = "BrBG"
-contour_levels = [0,0.025,0.05,0.1,0.15,0.2,0.25,0.3,0.4,0.5,0.6,0.7,0.8,1.0]
-diff_levels = [-0.5,-0.4,-0.3,-0.25,-0.2,-0.15,-0.1,-0.05,-0.025,0.0,0.025,0.05,0.1,0.15,0.2,0.25,0.3,0.4,0.5]
+contour_levels = [0,0.158,0.316,0.475,0.633,0.791,0.949,1.11,1.27,1.42,1.58,1.74,1.9,2.06,2.21,2.37]
[#]
sets = ["lat_lon_land"]
case_id = "model_vs_model"
-variables = ["FPG_P"]
+variables = ["SMIN_NH4_vr"]
seasons = ["ANN", "DJF", "MAM", "JJA", "SON"]
regions = ["global"]
test_colormap = "WhiteBlueGreenYellowRed.rgb"
reference_colormap = "WhiteBlueGreenYellowRed.rgb"
diff_colormap = "BrBG"
-contour_levels = [0,0.025,0.05,0.1,0.15,0.2,0.25,0.3,0.4,0.5,0.6,0.7,0.8,1.0]
-diff_levels = [-0.5,-0.4,-0.3,-0.25,-0.2,-0.15,-0.1,-0.05,-0.025,0.0,0.025,0.05,0.1,0.15,0.2,0.25,0.3,0.4,0.5]
+contour_levels = [0,0.295,0.591,0.886,1.18,1.48,1.77,2.07,2.36,2.66,2.95,3.25,3.55,3.84,4.14,4.43]
[#]
sets = ["lat_lon_land"]
case_id = "model_vs_model"
-variables = ["TBOT"]
+variables = ["SMIN_NO3"]
seasons = ["ANN", "DJF", "MAM", "JJA", "SON"]
regions = ["global"]
test_colormap = "WhiteBlueGreenYellowRed.rgb"
reference_colormap = "WhiteBlueGreenYellowRed.rgb"
diff_colormap = "BrBG"
-contour_levels = [240,250,255,260,262.5,265,267.5,270,272,274,276,278,280,282,284,286,288,290,292,294,296,298,300,305]
-diff_levels = [-0.5,-0.4,-0.3,-0.25,-0.2,-0.15,-0.1,-0.05,-0.025,0.0,0.025,0.05,0.1,0.15,0.2,0.25,0.3,0.4,0.5]
+contour_levels = [0,4.96,9.92,14.9,19.8,24.8,29.8,34.7,39.7,44.7,49.6,54.6,59.5,64.5,69.5,74.4]
[#]
sets = ["lat_lon_land"]
case_id = "model_vs_model"
-variables = ["FSDS"]
+variables = ["SMIN_NO3_LEACHED"]
seasons = ["ANN", "DJF", "MAM", "JJA", "SON"]
regions = ["global"]
test_colormap = "WhiteBlueGreenYellowRed.rgb"
reference_colormap = "WhiteBlueGreenYellowRed.rgb"
diff_colormap = "BrBG"
-contour_levels = [0,8.75,17.5,35.0,52.5,70.0,87.5,105.0,140.0,175.0,210.0,244.99999999999997,280.0,350.0]
-diff_levels = [-175.0,-140.0,-105.0,-87.5,-70.0,-52.5,-35.0,-17.5,-8.75,0.0,8.75,17.5,35.0,52.5,70.0,87.5,105.0,140.0,175.0]
+contour_levels = [0,0.0362,0.0724,0.109,0.145,0.181,0.217,0.253,0.289,0.326,0.362,0.398,0.434,0.47,0.507,0.543]
[#]
sets = ["lat_lon_land"]
case_id = "model_vs_model"
-variables = ["RAIN"]
+variables = ["SNOW"]
seasons = ["ANN", "DJF", "MAM", "JJA", "SON"]
regions = ["global"]
test_colormap = "WhiteBlueGreenYellowRed.rgb"
reference_colormap = "WhiteBlueGreenYellowRed.rgb"
diff_colormap = "BrBG"
-contour_levels = [0,0.375,0.75,1.5,2.25,3.0,3.75,4.5,6.0,7.5,9.0,10.5,12.0,15.0]
-diff_levels = [-7.5,-6.0,-4.5,-3.75,-3.0,-2.25,-1.5,-0.75,-0.375,0.0,0.375,0.75,1.5,2.25,3.0,3.75,4.5,6.0,7.5]
+contour_levels = [0,0.234,0.468,0.702,0.936,1.17,1.4,1.64,1.87,2.11,2.34,2.57,2.81,3.04,3.28,3.51]
[#]
sets = ["lat_lon_land"]
case_id = "model_vs_model"
-variables = ["CPOOL"]
+variables = ["SNOWDP"]
+seasons = ["ANN", "DJF", "MAM", "JJA", "SON"]
+regions = ["global"]
+test_colormap = "WhiteBlueGreenYellowRed.rgb"
+reference_colormap = "WhiteBlueGreenYellowRed.rgb"
+diff_colormap = "BrBG"
+contour_levels = [0,0.155,0.311,0.466,0.621,0.777,0.932,1.09,1.24,1.4,1.55,1.71,1.86,2.02,2.17,2.33]
+[#]
+sets = ["lat_lon_land"]
+case_id = "model_vs_model"
+variables = ["SNOWICE"]
+seasons = ["ANN", "DJF", "MAM", "JJA", "SON"]
+regions = ["global"]
+test_colormap = "WhiteBlueGreenYellowRed.rgb"
+reference_colormap = "WhiteBlueGreenYellowRed.rgb"
+diff_colormap = "BrBG"
+contour_levels = [0,66.7,133.0,200.0,267.0,334.0,400.0,467.0,534.0,600.0,667.0,734.0,801.0,867.0,934.0,1000.0]
+[#]
+sets = ["lat_lon_land"]
+case_id = "model_vs_model"
+variables = ["SNOWLIQ"]
+seasons = ["ANN", "DJF", "MAM", "JJA", "SON"]
+regions = ["global"]
+test_colormap = "WhiteBlueGreenYellowRed.rgb"
+reference_colormap = "WhiteBlueGreenYellowRed.rgb"
+diff_colormap = "BrBG"
+contour_levels = [0,1.08,2.16,3.24,4.32,5.4,6.48,7.56,8.64,9.72,10.8,11.9,13.0,14.0,15.1,16.2]
+[#]
+sets = ["lat_lon_land"]
+case_id = "model_vs_model"
+variables = ["SNOW_DEPTH"]
+seasons = ["ANN", "DJF", "MAM", "JJA", "SON"]
+regions = ["global"]
+test_colormap = "WhiteBlueGreenYellowRed.rgb"
+reference_colormap = "WhiteBlueGreenYellowRed.rgb"
+diff_colormap = "BrBG"
+contour_levels = [0,0.155,0.311,0.466,0.622,0.777,0.932,1.09,1.24,1.4,1.55,1.71,1.86,2.02,2.18,2.33]
+[#]
+sets = ["lat_lon_land"]
+case_id = "model_vs_model"
+variables = ["SOIL1C_vr"]
+seasons = ["ANN", "DJF", "MAM", "JJA", "SON"]
+regions = ["global"]
+test_colormap = "WhiteBlueGreenYellowRed.rgb"
+reference_colormap = "WhiteBlueGreenYellowRed.rgb"
+diff_colormap = "BrBG"
+contour_levels = [0,12.4,24.8,37.3,49.7,62.1,74.5,86.9,99.3,112.0,124.0,137.0,149.0,161.0,174.0,186.0]
+[#]
+sets = ["lat_lon_land"]
+case_id = "model_vs_model"
+variables = ["SOIL1N_vr"]
+seasons = ["ANN", "DJF", "MAM", "JJA", "SON"]
+regions = ["global"]
+test_colormap = "WhiteBlueGreenYellowRed.rgb"
+reference_colormap = "WhiteBlueGreenYellowRed.rgb"
+diff_colormap = "BrBG"
+contour_levels = [0,1.03,2.07,3.1,4.14,5.17,6.21,7.24,8.28,9.31,10.3,11.4,12.4,13.5,14.5,15.5]
+[#]
+sets = ["lat_lon_land"]
+case_id = "model_vs_model"
+variables = ["SOIL1P_vr"]
+seasons = ["ANN", "DJF", "MAM", "JJA", "SON"]
+regions = ["global"]
+test_colormap = "WhiteBlueGreenYellowRed.rgb"
+reference_colormap = "WhiteBlueGreenYellowRed.rgb"
+diff_colormap = "BrBG"
+contour_levels = [0,0.0345,0.069,0.103,0.138,0.172,0.207,0.241,0.276,0.31,0.345,0.379,0.414,0.448,0.483,0.517]
+[#]
+sets = ["lat_lon_land"]
+case_id = "model_vs_model"
+variables = ["SOIL2C_vr"]
+seasons = ["ANN", "DJF", "MAM", "JJA", "SON"]
+regions = ["global"]
+test_colormap = "WhiteBlueGreenYellowRed.rgb"
+reference_colormap = "WhiteBlueGreenYellowRed.rgb"
+diff_colormap = "BrBG"
+contour_levels = [0,110.0,220.0,330.0,440.0,550.0,660.0,770.0,880.0,990.0,1100.0,1210.0,1320.0,1430.0,1540.0,1650.0]
+[#]
+sets = ["lat_lon_land"]
+case_id = "model_vs_model"
+variables = ["SOIL2N_vr"]
+seasons = ["ANN", "DJF", "MAM", "JJA", "SON"]
+regions = ["global"]
+test_colormap = "WhiteBlueGreenYellowRed.rgb"
+reference_colormap = "WhiteBlueGreenYellowRed.rgb"
+diff_colormap = "BrBG"
+contour_levels = [0,9.17,18.3,27.5,36.7,45.8,55.0,64.2,73.3,82.5,91.7,101.0,110.0,119.0,128.0,137.0]
+[#]
+sets = ["lat_lon_land"]
+case_id = "model_vs_model"
+variables = ["SOIL2P_vr"]
+seasons = ["ANN", "DJF", "MAM", "JJA", "SON"]
+regions = ["global"]
+test_colormap = "WhiteBlueGreenYellowRed.rgb"
+reference_colormap = "WhiteBlueGreenYellowRed.rgb"
+diff_colormap = "BrBG"
+contour_levels = [0,0.306,0.611,0.917,1.22,1.53,1.83,2.14,2.44,2.75,3.06,3.36,3.67,3.97,4.28,4.58]
+[#]
+sets = ["lat_lon_land"]
+case_id = "model_vs_model"
+variables = ["SOIL3C_vr"]
+seasons = ["ANN", "DJF", "MAM", "JJA", "SON"]
+regions = ["global"]
+test_colormap = "WhiteBlueGreenYellowRed.rgb"
+reference_colormap = "WhiteBlueGreenYellowRed.rgb"
+diff_colormap = "BrBG"
+contour_levels = [0,855.0,1710.0,2570.0,3420.0,4280.0,5130.0,5990.0,6840.0,7700.0,8550.0,9410.0,10300.0,11100.0,12000.0,12800.0]
+[#]
+sets = ["lat_lon_land"]
+case_id = "model_vs_model"
+variables = ["SOIL3N_vr"]
+seasons = ["ANN", "DJF", "MAM", "JJA", "SON"]
+regions = ["global"]
+test_colormap = "WhiteBlueGreenYellowRed.rgb"
+reference_colormap = "WhiteBlueGreenYellowRed.rgb"
+diff_colormap = "BrBG"
+contour_levels = [0,85.5,171.0,257.0,342.0,428.0,513.0,599.0,684.0,770.0,855.0,941.0,1030.0,1110.0,1200.0,1280.0]
+[#]
+sets = ["lat_lon_land"]
+case_id = "model_vs_model"
+variables = ["SOIL3P_vr"]
+seasons = ["ANN", "DJF", "MAM", "JJA", "SON"]
+regions = ["global"]
+test_colormap = "WhiteBlueGreenYellowRed.rgb"
+reference_colormap = "WhiteBlueGreenYellowRed.rgb"
+diff_colormap = "BrBG"
+contour_levels = [0,1.71,3.42,5.13,6.84,8.55,10.3,12.0,13.7,15.4,17.1,18.8,20.5,22.2,23.9,25.7]
+[#]
+sets = ["lat_lon_land"]
+case_id = "model_vs_model"
+variables = ["SOIL4C_vr"]
+seasons = ["ANN", "DJF", "MAM", "JJA", "SON"]
+regions = ["global"]
+test_colormap = "WhiteBlueGreenYellowRed.rgb"
+reference_colormap = "WhiteBlueGreenYellowRed.rgb"
+diff_colormap = "BrBG"
+contour_levels = [0,3450.0,6890.0,10300.0,13800.0,17200.0,20700.0,24100.0,27600.0,31000.0,34500.0,37900.0,41400.0,44800.0,48300.0,51700.0]
+[#]
+sets = ["lat_lon_land"]
+case_id = "model_vs_model"
+variables = ["SOIL4N_vr"]
+seasons = ["ANN", "DJF", "MAM", "JJA", "SON"]
+regions = ["global"]
+test_colormap = "WhiteBlueGreenYellowRed.rgb"
+reference_colormap = "WhiteBlueGreenYellowRed.rgb"
+diff_colormap = "BrBG"
+contour_levels = [0,345.0,689.0,1030.0,1380.0,1720.0,2070.0,2410.0,2760.0,3100.0,3450.0,3790.0,4140.0,4480.0,4830.0,5170.0]
+[#]
+sets = ["lat_lon_land"]
+case_id = "model_vs_model"
+variables = ["SOIL4P_vr"]
+seasons = ["ANN", "DJF", "MAM", "JJA", "SON"]
+regions = ["global"]
+test_colormap = "WhiteBlueGreenYellowRed.rgb"
+reference_colormap = "WhiteBlueGreenYellowRed.rgb"
+diff_colormap = "BrBG"
+contour_levels = [0,6.89,13.8,20.7,27.6,34.5,41.3,48.2,55.1,62.0,68.9,75.8,82.7,89.6,96.5,103.0]
+[#]
+sets = ["lat_lon_land"]
+case_id = "model_vs_model"
+variables = ["SOILWATER_10CM"]
+seasons = ["ANN", "DJF", "MAM", "JJA", "SON"]
+regions = ["global"]
+test_colormap = "WhiteBlueGreenYellowRed.rgb"
+reference_colormap = "WhiteBlueGreenYellowRed.rgb"
+diff_colormap = "BrBG"
+contour_levels = [5.32,10.1,14.9,19.6,24.4,29.2,33.9,38.7,43.5,48.2,53.0,57.8,62.5,67.3,72.1,76.8]
+[#]
+sets = ["lat_lon_land"]
+case_id = "model_vs_model"
+variables = ["SOLUTIONP_vr"]
seasons = ["ANN", "DJF", "MAM", "JJA", "SON"]
regions = ["global"]
test_colormap = "WhiteBlueGreenYellowRed.rgb"
reference_colormap = "WhiteBlueGreenYellowRed.rgb"
diff_colormap = "BrBG"
-contour_levels = [0,100.0,200.0,400.0,600.0,800.0,1000.0,1200.0,1600.0,2000.0,2400.0,2800.0,3200.0,4000.0]
-diff_levels = [-2000.0,-1600.0,-1200.0,-1000.0,-800.0,-600.0,-400.0,-200.0,-100.0,0.0,100.0,200.0,400.0,600.0,800.0,1000.0,1200.0,1600.0,2000.0]
+contour_levels = [0,0.0123,0.0247,0.037,0.0493,0.0617,0.074,0.0863,0.0987,0.111,0.123,0.136,0.148,0.16,0.173,0.185]
[#]
sets = ["lat_lon_land"]
case_id = "model_vs_model"
@@ -216,16 +830,114 @@ regions = ["global"]
test_colormap = "WhiteBlueGreenYellowRed.rgb"
reference_colormap = "WhiteBlueGreenYellowRed.rgb"
diff_colormap = "BrBG"
-contour_levels = [0,0.15000000000000002,0.30000000000000004,0.6000000000000001,0.8999999999999999,1.2000000000000002,1.5,1.7999999999999998,2.4000000000000004,3.0,3.5999999999999996,4.199999999999999,4.800000000000001,6.0]
-diff_levels = [-3.0,-2.4000000000000004,-1.7999999999999998,-1.5,-1.2000000000000002,-0.8999999999999999,-0.6000000000000001,-0.30000000000000004,-0.15000000000000002,0.0,0.15000000000000002,0.30000000000000004,0.6000000000000001,0.8999999999999999,1.2000000000000002,1.5,1.7999999999999998,2.4000000000000004,3.0]
+contour_levels = [0,0.37,0.74,1.11,1.48,1.85,2.22,2.59,2.96,3.33,3.7,4.07,4.44,4.81,5.18,5.55]
[#]
sets = ["lat_lon_land"]
case_id = "model_vs_model"
-variables = ["RH2M"]
+variables = ["TBOT"]
+seasons = ["ANN", "DJF", "MAM", "JJA", "SON"]
+regions = ["global"]
+test_colormap = "WhiteBlueGreenYellowRed.rgb"
+reference_colormap = "WhiteBlueGreenYellowRed.rgb"
+diff_colormap = "BrBG"
+contour_levels = [210.0,217.0,223.0,230.0,236.0,243.0,249.0,256.0,262.0,268.0,275.0,281.0,288.0,294.0,301.0,307.0]
+[#]
+sets = ["lat_lon_land"]
+case_id = "model_vs_model"
+variables = ["TLAI"]
+seasons = ["ANN", "DJF", "MAM", "JJA", "SON"]
+regions = ["global"]
+test_colormap = "WhiteBlueGreenYellowRed.rgb"
+reference_colormap = "WhiteBlueGreenYellowRed.rgb"
+diff_colormap = "BrBG"
+contour_levels = [0,0.412,0.823,1.23,1.65,2.06,2.47,2.88,3.29,3.7,4.12,4.53,4.94,5.35,5.76,6.17]
+[#]
+sets = ["lat_lon_land"]
+case_id = "model_vs_model"
+variables = ["TOTSOMC"]
+seasons = ["ANN", "DJF", "MAM", "JJA", "SON"]
+regions = ["global"]
+test_colormap = "WhiteBlueGreenYellowRed.rgb"
+reference_colormap = "WhiteBlueGreenYellowRed.rgb"
+diff_colormap = "BrBG"
+contour_levels = [0,7.38,14.8,22.1,29.5,36.9,44.3,51.6,59.0,66.4,73.8,81.2,88.5,95.9,103.0,111.0]
+[#]
+sets = ["lat_lon_land"]
+case_id = "model_vs_model"
+variables = ["TOTSOMN"]
+seasons = ["ANN", "DJF", "MAM", "JJA", "SON"]
+regions = ["global"]
+test_colormap = "WhiteBlueGreenYellowRed.rgb"
+reference_colormap = "WhiteBlueGreenYellowRed.rgb"
+diff_colormap = "BrBG"
+contour_levels = [0,737.0,1470.0,2210.0,2950.0,3690.0,4420.0,5160.0,5900.0,6640.0,7370.0,8110.0,8850.0,9590.0,10300.0,11100.0]
+[#]
+sets = ["lat_lon_land"]
+case_id = "model_vs_model"
+variables = ["TOTSOMP"]
+seasons = ["ANN", "DJF", "MAM", "JJA", "SON"]
+regions = ["global"]
+test_colormap = "WhiteBlueGreenYellowRed.rgb"
+reference_colormap = "WhiteBlueGreenYellowRed.rgb"
+diff_colormap = "BrBG"
+contour_levels = [0,14.8,29.6,44.3,59.1,73.9,88.7,103.0,118.0,133.0,148.0,163.0,177.0,192.0,207.0,222.0]
+[#]
+sets = ["lat_lon_land"]
+case_id = "model_vs_model"
+variables = ["TOTVEGC"]
+seasons = ["ANN", "DJF", "MAM", "JJA", "SON"]
+regions = ["global"]
+test_colormap = "WhiteBlueGreenYellowRed.rgb"
+reference_colormap = "WhiteBlueGreenYellowRed.rgb"
+diff_colormap = "BrBG"
+contour_levels = [0,2.79,5.58,8.38,11.2,14.0,16.8,19.5,22.3,25.1,27.9,30.7,33.5,36.3,39.1,41.9]
+[#]
+sets = ["lat_lon_land"]
+case_id = "model_vs_model"
+variables = ["TSA"]
+seasons = ["ANN", "DJF", "MAM", "JJA", "SON"]
+regions = ["global"]
+test_colormap = "WhiteBlueGreenYellowRed.rgb"
+reference_colormap = "WhiteBlueGreenYellowRed.rgb"
+diff_colormap = "BrBG"
+contour_levels = [207.0,213.0,220.0,227.0,233.0,240.0,247.0,254.0,260.0,267.0,274.0,281.0,287.0,294.0,301.0,307.0]
+[#]
+sets = ["lat_lon_land"]
+case_id = "model_vs_model"
+variables = ["TSOI"]
+seasons = ["ANN", "DJF", "MAM", "JJA", "SON"]
+regions = ["global"]
+test_colormap = "WhiteBlueGreenYellowRed.rgb"
+reference_colormap = "WhiteBlueGreenYellowRed.rgb"
+diff_colormap = "BrBG"
+contour_levels = [238.0,243.0,248.0,253.0,257.0,262.0,267.0,272.0,276.0,281.0,286.0,291.0,295.0,300.0,305.0,310.0]
+[#]
+sets = ["lat_lon_land"]
+case_id = "model_vs_model"
+variables = ["TWS"]
+seasons = ["ANN", "DJF", "MAM", "JJA", "SON"]
+regions = ["global"]
+test_colormap = "WhiteBlueGreenYellowRed.rgb"
+reference_colormap = "WhiteBlueGreenYellowRed.rgb"
+diff_colormap = "BrBG"
+contour_levels = [1680.0,4470.0,7270.0,10100.0,12900.0,15700.0,18400.0,21200.0,24000.0,26800.0,29600.0,32400.0,35200.0,38000.0,40800.0,43600.0]
+[#]
+sets = ["lat_lon_land"]
+case_id = "model_vs_model"
+variables = ["ZWT"]
+seasons = ["ANN", "DJF", "MAM", "JJA", "SON"]
+regions = ["global"]
+test_colormap = "WhiteBlueGreenYellowRed.rgb"
+reference_colormap = "WhiteBlueGreenYellowRed.rgb"
+diff_colormap = "BrBG"
+contour_levels = [2.35,4.0,5.66,7.31,8.97,10.6,12.3,13.9,15.6,17.2,18.9,20.6,22.2,23.9,25.5,27.2]
+[#]
+sets = ["lat_lon_land"]
+case_id = "model_vs_model"
+variables = ["FP_UPTAKE"]
seasons = ["ANN", "DJF", "MAM", "JJA", "SON"]
regions = ["global"]
test_colormap = "WhiteBlueGreenYellowRed.rgb"
reference_colormap = "WhiteBlueGreenYellowRed.rgb"
diff_colormap = "BrBG"
-contour_levels = [0,2.5,5.0,10.0,15.0,20.0,25.0,30.0,40.0,50.0,60.0,70.0,80.0,100.0]
-diff_levels = [-50.0,-40.0,-30.0,-25.0,-20.0,-15.0,-10.0,-5.0,-2.5,0.0,2.5,5.0,10.0,15.0,20.0,25.0,30.0,40.0,50.0]
+contour_levels = [0,0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1]
diff --git a/e3sm_diags/driver/default_diags/lat_lon_model_vs_obs.cfg b/e3sm_diags/driver/default_diags/lat_lon_model_vs_obs.cfg
index b4c95618c..d113457b4 100644
--- a/e3sm_diags/driver/default_diags/lat_lon_model_vs_obs.cfg
+++ b/e3sm_diags/driver/default_diags/lat_lon_model_vs_obs.cfg
@@ -89,40 +89,6 @@ contour_levels = [-1, 0, 1, 3, 6, 9, 12, 15, 18, 20, 22, 24, 26, 28, 29]
diff_levels = [-5, -4, -3, -2, -1, -0.5, -0.2, 0.2, 0.5, 1, 2, 3, 4, 5]
regrid_method = "bilinear"
-[#]
-sets = ["lat_lon"]
-case_id = "CERES-EBAF-TOA-v4.0"
-variables = ["SWCF"]
-ref_name = "ceres_ebaf_toa_v4.0"
-reference_name = "CERES-EBAF v4.0"
-seasons = ["ANN"]
-regions = ["global"]
-contour_levels = [-120, -110, -100, -90, -80, -70, -60, -50, -40, -30, -20, -10, 0]
-diff_levels = [-60, -50, -40, -30, -20, -10, -5, 5, 10, 20, 30, 40, 50, 60]
-
-
-[#]
-sets = ["lat_lon"]
-case_id = "CERES-EBAF-TOA-v4.0"
-variables = ["SWCF"]
-ref_name = "ceres_ebaf_toa_v4.0"
-reference_name = "CERES-EBAF v4.0"
-seasons = ["DJF", "MAM", "JJA", "SON"]
-regions = ["global"]
-contour_levels = [-180, -160, -140, -120, -100, -80, -60, -40, -20, 0]
-diff_levels = [-60, -50, -40, -30, -20, -10, -5, 5, 10, 20, 30, 40, 50, 60]
-
-
-[#]
-sets = ["lat_lon"]
-case_id = "CERES-EBAF-TOA-v4.0"
-variables = ["LWCF"]
-ref_name = "ceres_ebaf_toa_v4.0"
-reference_name = "CERES-EBAF v4.0"
-seasons = ["ANN", "DJF", "MAM", "JJA", "SON"]
-contour_levels = [0, 10, 20, 30, 40, 50, 60, 70, 80]
-diff_levels = [-35, -30, -25, -20, -15, -10, -5, -2, 2, 5, 10, 15, 20, 25, 30, 35]
-
[#]
sets = ["lat_lon"]
@@ -141,6 +107,7 @@ case_id = "CERES-EBAF-TOA-v4.1"
variables = ["ALBEDO"]
ref_name = "ceres_ebaf_toa_v4.1"
reference_name = "CERES-EBAF v4.1"
+regions = ["75S75N"]
seasons = ["ANN", "DJF", "MAM", "JJA", "SON"]
contour_levels = [0.05, 0.1, 0.15, 0.2, 0.25, 0.3, 0.35, 0.4, 0.45, 0.5, 0.55, 0.6, 0.65, 0.7, 0.75]
diff_levels = [-0.25, -0.2, -0.15, -0.1, -0.07, -0.05, -0.02, 0.02, 0.05, 0.07, 0.1, 0.15, 0.2, 0.25]
@@ -1290,6 +1257,17 @@ diff_colormap = "BrBG_r"
contour_levels = [0., 0.05, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0, 1.1, 1.2]
diff_levels = [-0.5, -0.4, -0.3, -0.2, -0.1, -0.05, -0.02, 0.02, 0.05, 0.1, 0.2, 0.3, 0.4, 0.5]
+[#]
+sets = ["lat_lon"]
+case_id = "AOD_550"
+variables = ["AODDUST"]
+ref_name = "MACv2"
+reference_name = "Max-Planck Aerosol climatology (MACv2)"
+regions = ["global"]
+seasons = ["ANN", "DJF", "MAM", "JJA", "SON"]
+diff_colormap = "BrBG_r"
+contour_levels = [0.,0.01,0.02,0.03,0.04,0.05,0.06,0.07,0.08,0.09,1]
+
[#]
sets = ["lat_lon"]
diff --git a/e3sm_diags/driver/default_diags/lat_lon_river_model_vs_model.cfg b/e3sm_diags/driver/default_diags/lat_lon_river_model_vs_model.cfg
index 11daed149..659336083 100644
--- a/e3sm_diags/driver/default_diags/lat_lon_river_model_vs_model.cfg
+++ b/e3sm_diags/driver/default_diags/lat_lon_river_model_vs_model.cfg
@@ -7,6 +7,7 @@ regions = ["global"]
test_colormap = "WhiteBlueGreenYellowRed.rgb"
reference_colormap = "WhiteBlueGreenYellowRed.rgb"
diff_colormap = "BrBG"
+contour_levels = [1.e+00, 1.e+01, 1.e+02, 1.e+03, 1.e+04, 1.e+05]
[#]
sets = ["lat_lon_river"]
@@ -17,6 +18,7 @@ regions = ["global"]
test_colormap = "WhiteBlueGreenYellowRed.rgb"
reference_colormap = "WhiteBlueGreenYellowRed.rgb"
diff_colormap = "BrBG"
+contour_levels = [0. , 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1. ]
[#]
sets = ["lat_lon_river"]
@@ -38,6 +40,7 @@ regions = ["global"]
test_colormap = "WhiteBlueGreenYellowRed.rgb"
reference_colormap = "WhiteBlueGreenYellowRed.rgb"
diff_colormap = "BrBG"
+contour_levels = [ 0., 5., 10., 15., 20., 25., 30., 35., 40., 45., 50.]
[#]
@@ -49,6 +52,7 @@ regions = ["global"]
test_colormap = "WhiteBlueGreenYellowRed.rgb"
reference_colormap = "WhiteBlueGreenYellowRed.rgb"
diff_colormap = "BrBG"
+contour_levels = [ 0., 5., 10., 15., 20., 25., 30., 35., 40., 45., 50.]
[#]
sets = ["lat_lon_river"]
@@ -59,6 +63,7 @@ regions = ["global"]
test_colormap = "WhiteBlueGreenYellowRed.rgb"
reference_colormap = "WhiteBlueGreenYellowRed.rgb"
diff_colormap = "BrBG"
+contour_levels = [ 0., 5., 10., 15., 20., 25., 30., 35., 40., 45., 50.]
[#]
sets = ["lat_lon_river"]
@@ -69,6 +74,7 @@ regions = ["global"]
test_colormap = "WhiteBlueGreenYellowRed.rgb"
reference_colormap = "WhiteBlueGreenYellowRed.rgb"
diff_colormap = "BrBG"
+contour_levels = [0. , 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1. ]
[#]
@@ -80,3 +86,4 @@ regions = ["global"]
test_colormap = "WhiteBlueGreenYellowRed.rgb"
reference_colormap = "WhiteBlueGreenYellowRed.rgb"
diff_colormap = "BrBG"
+contour_levels = [1.e-6, 1.e-5, 1.e-4, 1.e-03, 1.e-2, 1.e-1, 1.e+0, 1.e+1]
diff --git a/e3sm_diags/driver/default_diags/meridional_mean_2d_model_vs_obs.cfg b/e3sm_diags/driver/default_diags/meridional_mean_2d_model_vs_obs.cfg
index fbf56b9a9..3c9efb417 100644
--- a/e3sm_diags/driver/default_diags/meridional_mean_2d_model_vs_obs.cfg
+++ b/e3sm_diags/driver/default_diags/meridional_mean_2d_model_vs_obs.cfg
@@ -44,20 +44,20 @@ diff_levels = [-20,-15,-10,-8,-6,-4,-2,2,4,6,8,10,15,20]
[#]
sets = ["meridional_mean_2d"]
-case_id = "ERA-Interim"
+case_id = "ERA5"
variables = ["T"]
-ref_name = "ERA-Interim"
-reference_name = "ERA-Interim Reanalysis"
+ref_name = "ERA5"
+reference_name = "ERA5 Reanalysis"
seasons = ["ANN", "DJF", "MAM", "JJA", "SON"]
contour_levels = [180,185,190,200,210,220,230,240,250,260,270,280,290,295,300]
diff_levels = [-7,-6,-5,-4,-3,-2,-1,1,2,3,4,5,6,7]
[#]
sets = ["meridional_mean_2d"]
-case_id = "ERA-Interim"
+case_id = "ERA5"
variables = ["U"]
-ref_name = "ERA-Interim"
-reference_name = "ERA-Interim Reanalysis"
+ref_name = "ERA5"
+reference_name = "ERA5 Reanalysis"
seasons = ["ANN", "DJF", "MAM", "JJA", "SON"]
test_colormap = "PiYG_r"
reference_colormap = "PiYG_r"
@@ -66,10 +66,10 @@ diff_levels = [ -5, -4, -3, -2, -1,-0.5, -0.2, 0.2, 0.5, 1, 2, 3, 4, 5]
[#]
sets = ["meridional_mean_2d"]
-case_id = "ERA-Interim"
+case_id = "ERA5"
variables = ["OMEGA"]
-ref_name = "ERA-Interim"
-reference_name = "ERA-Interim Reanalysis"
+ref_name = "ERA5"
+reference_name = "ERA5 Reanalysis"
seasons = ["ANN", "DJF", "MAM", "JJA", "SON"]
test_colormap = "PiYG_r"
reference_colormap = "PiYG_r"
@@ -78,10 +78,10 @@ diff_levels = [-20,-15,-10,-8,-6,-4,-2,2,4,6,8,10,15,20]
[#]
sets = ["meridional_mean_2d"]
-case_id = "ERA-Interim"
+case_id = "ERA5"
variables = ["RELHUM"]
-ref_name = "ERA-Interim"
-reference_name = "ERA-Interim Reanalysis"
+ref_name = "ERA5"
+reference_name = "ERA5 Reanalysis"
seasons = ["ANN", "DJF", "MAM", "JJA", "SON"]
contour_levels = [5,10,15,20,25,30,40,50,60,70,75,80,85,90,95]
diff_levels = [-15,-12,-9,-6,-3,-1,1,3,6,9,12,15]
diff --git a/e3sm_diags/plot/cartopy/lat_lon_plot.py b/e3sm_diags/plot/cartopy/lat_lon_plot.py
index 82fe86808..1a20ae783 100644
--- a/e3sm_diags/plot/cartopy/lat_lon_plot.py
+++ b/e3sm_diags/plot/cartopy/lat_lon_plot.py
@@ -62,7 +62,9 @@ def determine_tick_step(degrees_covered):
return 1
-def plot_panel(n, fig, proj, var, clevels, cmap, title, parameters, stats=None):
+def plot_panel( # noqa: C901
+ n, fig, proj, var, clevels, cmap, title, parameters, stats=None
+):
var = add_cyclic(var)
lon = var.getLongitude()
@@ -170,7 +172,7 @@ def plot_panel(n, fig, proj, var, clevels, cmap, title, parameters, stats=None):
else:
maxval = np.amax(np.absolute(levels[1:-1]))
- if maxval < 0.5:
+ if maxval < 0.2:
fmt = "%5.3f"
pad = 28
elif maxval < 10.0:
@@ -179,6 +181,9 @@ def plot_panel(n, fig, proj, var, clevels, cmap, title, parameters, stats=None):
elif maxval < 100.0:
fmt = "%5.1f"
pad = 25
+ elif maxval > 9999.0:
+ fmt = "%.0f"
+ pad = 40
else:
fmt = "%6.1f"
pad = 30
@@ -196,10 +201,19 @@ def plot_panel(n, fig, proj, var, clevels, cmap, title, parameters, stats=None):
ha="left",
fontdict=plotSideTitle,
)
+
+ fmt_m = []
+ # printing in scientific notation if value greater than 10^5
+ for i in range(len(stats[0:3])):
+ fs = "1e" if stats[i] > 100000.0 else "2f"
+ fmt_m.append(fs)
+ fmt_metrics = f"%.{fmt_m[0]}\n%.{fmt_m[1]}\n%.{fmt_m[2]}"
+
fig.text(
panel[n][0] + 0.7635,
panel[n][1] + 0.2107,
- "%.2f\n%.2f\n%.2f" % stats[0:3],
+ # "%.2f\n%.2f\n%.2f" % stats[0:3],
+ fmt_metrics % stats[0:3],
ha="right",
fontdict=plotSideTitle,
)
diff --git a/examples/run_v2_7_0_all_sets_E3SM_machines.py b/examples/run_v2_7_0_all_sets_E3SM_machines.py
new file mode 100644
index 000000000..97fdb2d8e
--- /dev/null
+++ b/examples/run_v2_7_0_all_sets_E3SM_machines.py
@@ -0,0 +1,262 @@
+"""
+Make sure to run the machine-specific commands below before
+running this script:
+
+Compy:
+ srun --pty --nodes=1 --time=01:00:00 /bin/bash
+ source /share/apps/E3SM/conda_envs/load_latest_e3sm_unified_compy.sh
+
+LCRC:
+ srun --pty --nodes=1 --time=01:00:00 /bin/bash
+ source /lcrc/soft/climate/e3sm-unified/load_latest_e3sm_unified_chrysalis.sh
+ Or: source /lcrc/soft/climate/e3sm-unified/load_latest_e3sm_unified_anvil.sh
+
+NERSC:
+ salloc --nodes=1 --partition=regular --time=01:00:00 -C haswell
+ source /global/common/software/e3sm/anaconda_envs/load_latest_e3sm_unified_cori-haswell.sh
+"""
+# flake8: noqa E501
+
+import os
+from typing import Tuple, TypedDict
+
+from mache import MachineInfo
+
+from e3sm_diags.parameter.annual_cycle_zonal_mean_parameter import ACzonalmeanParameter
+from e3sm_diags.parameter.area_mean_time_series_parameter import (
+ AreaMeanTimeSeriesParameter,
+)
+from e3sm_diags.parameter.arm_diags_parameter import ARMDiagsParameter
+from e3sm_diags.parameter.core_parameter import CoreParameter
+from e3sm_diags.parameter.diurnal_cycle_parameter import DiurnalCycleParameter
+from e3sm_diags.parameter.enso_diags_parameter import EnsoDiagsParameter
+from e3sm_diags.parameter.qbo_parameter import QboParameter
+from e3sm_diags.parameter.streamflow_parameter import StreamflowParameter
+from e3sm_diags.parameter.tc_analysis_parameter import TCAnalysisParameter
+from e3sm_diags.parameter.zonal_mean_2d_stratosphere_parameter import (
+ ZonalMean2dStratosphereParameter,
+)
+from e3sm_diags.run import runner
+
+
+class MachinePaths(TypedDict):
+ html_path: str
+ obs_climo: str
+ test_climo: str
+ obs_ts: str
+ test_ts: str
+ dc_obs_climo: str
+ dc_test_climo: str
+ arm_obs: str
+ arm_test: str
+ tc_obs: str
+ tc_test: str
+
+
+def run_all_sets():
+ machine_paths: MachinePaths = _get_machine_paths()
+
+ param = CoreParameter()
+
+ param.reference_data_path = machine_paths["obs_climo"]
+ param.test_data_path = machine_paths["test_climo"]
+ param.test_name = "20210528.v2rc3e.piControl.ne30pg2_EC30to60E2r2.chrysalis"
+ param.seasons = [
+ "ANN",
+ "JJA",
+ ] # Default setting: seasons = ["ANN", "DJF", "MAM", "JJA", "SON"]
+
+ param.results_dir = f"{machine_paths['html_path']}/v2_7_0_all_sets"
+ param.multiprocessing = True
+ param.num_workers = 5
+
+ # Set specific parameters for new sets
+ enso_param = EnsoDiagsParameter()
+ enso_param.reference_data_path = machine_paths["obs_ts"]
+ enso_param.test_data_path = machine_paths["test_ts"]
+ enso_param.test_name = "e3sm_v2"
+ enso_param.test_start_yr = "0051"
+ enso_param.test_end_yr = "0060"
+ # Enso obs data range from year 1979 to 2016
+ enso_param.ref_start_yr = "2001"
+ enso_param.ref_end_yr = "2010"
+
+ qbo_param = QboParameter()
+ qbo_param.reference_data_path = machine_paths["obs_ts"]
+ qbo_param.test_data_path = machine_paths["test_ts"]
+ qbo_param.test_name = "e3sm_v2"
+ qbo_param.start_yr = "0051"
+ qbo_param.end_yr = "0060"
+ # Qbo obs data range from year 1979 to 2019
+ # Number of years of test and ref should match
+ qbo_param.ref_start_yr = "2001"
+ qbo_param.ref_end_yr = "2010"
+
+ ts_param = AreaMeanTimeSeriesParameter()
+ ts_param.reference_data_path = machine_paths["obs_ts"]
+ ts_param.test_data_path = machine_paths["test_ts"]
+ ts_param.test_name = "e3sm_v2"
+ ts_param.start_yr = "0051"
+ ts_param.end_yr = "0060"
+
+ dc_param = DiurnalCycleParameter()
+ dc_param.reference_data_path = machine_paths["dc_obs_climo"]
+ dc_param.test_data_path = machine_paths["dc_test_climo"]
+ dc_param.short_test_name = "e3sm_v2"
+ # Plotting diurnal cycle amplitude on different scales. Default is True
+ dc_param.normalize_test_amp = False
+
+ streamflow_param = StreamflowParameter()
+ streamflow_param.reference_data_path = machine_paths["obs_ts"]
+ streamflow_param.test_data_path = machine_paths["test_ts"]
+ streamflow_param.short_test_name = "e3sm_v2"
+ streamflow_param.test_start_yr = "0051"
+ streamflow_param.test_end_yr = "0060"
+ # Streamflow gauge station data range from year 1986 to 1995
+ streamflow_param.ref_start_yr = "1986"
+ streamflow_param.ref_end_yr = "1995"
+
+ arm_param = ARMDiagsParameter()
+ arm_param.reference_data_path = machine_paths["arm_obs"]
+ arm_param.ref_name = "armdiags"
+ arm_param.test_data_path = machine_paths["arm_test"]
+ arm_param.test_name = "e3sm_v2"
+ arm_param.test_start_yr = "1996"
+ arm_param.test_end_yr = "2010"
+ # For model vs obs, the ref start and end year can be any four digit strings.
+ # For now, will use all available years form obs
+ arm_param.ref_start_yr = "0001"
+ arm_param.ref_end_yr = "0001"
+
+ tc_param = TCAnalysisParameter()
+ tc_param.reference_data_path = machine_paths["tc_obs"]
+ tc_param.test_data_path = machine_paths["tc_test"]
+ tc_param.short_test_name = "e3sm_v2"
+ tc_param.test_start_yr = "0051"
+ tc_param.test_end_yr = "0060"
+ # For model vs obs, the ref start and end year can be any four digit strings.
+ # For now, use all available years form obs by default.
+ tc_param.ref_start_yr = "1979"
+ tc_param.ref_end_yr = "2018"
+
+ ac_param = ACzonalmeanParameter()
+ zm_param = ZonalMean2dStratosphereParameter()
+
+ runner.sets_to_run = [
+ "lat_lon",
+ "zonal_mean_xy",
+ "zonal_mean_2d",
+ "zonal_mean_2d_stratosphere",
+ "polar",
+ "cosp_histogram",
+ "meridional_mean_2d",
+ "annual_cycle_zonal_mean",
+ "enso_diags",
+ "qbo",
+ "area_mean_time_series",
+ "diurnal_cycle",
+ "streamflow",
+ "arm_diags",
+ "tc_analysis",
+ "aerosol_aeronet",
+ ]
+
+ runner.run_diags(
+ [
+ param,
+ zm_param,
+ ac_param,
+ enso_param,
+ qbo_param,
+ ts_param,
+ dc_param,
+ streamflow_param,
+ arm_param,
+ tc_param,
+ ]
+ )
+
+ return param.results_dir
+
+
+def _get_machine_paths() -> MachinePaths:
+ """Returns the paths on the machine that are required to run e3sm_diags.
+
+ Returns
+ -------
+ MachinePaths
+ A dictionary of paths on the machine, with the key being the path type
+ and the value being the absolute path string.
+ """
+ # Get the current machine's configuration info.
+ machine_info = MachineInfo()
+ machine = machine_info.machine
+
+ if machine not in ["anvil", "chrysalis", "compy", "cori-haswell", "cori-knl"]:
+ raise ValueError(f"e3sm_diags is not supported on this machine ({machine}).")
+
+ # Path to the HTML outputs for the current user.
+ web_portal_base_path = machine_info.config.get("web_portal", "base_path")
+ html_path = f"{web_portal_base_path}/{machine_info.username}/"
+
+ # Path to the reference data directory.
+ diags_base_path = machine_info.diagnostics_base
+ ref_data_dir = f"{diags_base_path}/observations/Atm"
+
+ # Paths to the test data directories.
+ test_data_dir, test_data_dir2 = _get_test_data_dirs(machine)
+
+ # Construct the paths required by e3sm_diags using the base paths above.
+ machine_paths: MachinePaths = {
+ "html_path": html_path,
+ "obs_climo": f"{ref_data_dir}/climatology",
+ "test_climo": f"{test_data_dir}/climatology/rgr/",
+ "obs_ts": f"{ref_data_dir}/time-series/",
+ "test_ts": f"{test_data_dir}/time-series/rgr/",
+ "dc_obs_climo": f"{ref_data_dir}/climatology",
+ "dc_test_climo": f"{test_data_dir}/diurnal_climatology/rgr",
+ "arm_obs": f"{ref_data_dir}/arm-diags-data/",
+ "arm_test": f"{test_data_dir2}/arm-diags-data/",
+ "tc_obs": f"{ref_data_dir}/tc-analysis/",
+ "tc_test": f"{test_data_dir}/tc-analysis/",
+ }
+
+ return machine_paths
+
+
+def _get_test_data_dirs(machine: str) -> Tuple[str, str]:
+ """Get the directories for test data based on the machine.
+
+ The second path is for using the high frequency grid box output at ARM sites
+ from another simulation when the output is available.
+
+ Parameters
+ ----------
+ machine : str
+ The name of the machine.
+
+ Returns
+ -------
+ Tuple[str, str]
+ A tuple of two strings, each representing a test data directory path.
+ """
+ test_data_dirs = None
+
+ # TODO: Update this function to use `mache` after the directories are updated.
+ if machine in ["chrysalis", "anvil"]:
+ base = "/lcrc/group/e3sm/public_html/e3sm_diags_test_data/postprocessed_e3sm_v2_data_for_e3sm_diags"
+ elif machine in ["compy"]:
+ base = "/compyfs/e3sm_diags_data/postprocessed_e3sm_v2_data_for_e3sm_diags"
+ elif machine in ["cori-haswell", "cori-knl"]:
+ base = "/global/cfs/cdirs/e3sm/e3sm_diags/postprocessed_e3sm_v2_data_for_e3sm_diags"
+
+ test_data_dirs = (
+ f"{base}/20210528.v2rc3e.piControl.ne30pg2_EC30to60E2r2.chrysalis",
+ f"{base}/20210719.PhaseII.F20TR-P3.NGD.ne30pg2.compy",
+ )
+
+ return test_data_dirs # type: ignore
+
+
+if __name__ == "__main__":
+ run_all_sets()