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 Figure7
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()