Tutorial

These examples are for use on LCRC machines (e.g., Chrysalis). Some parameters must be changed for use on other machines. These include the paths for input, output, www, mapping_file, reference_data_path, obs_ts, streamflow_obs_ts, and dc_obs_climo. Different machines also have different partition names, so partition may need to be changed as well.

Example 1

Let’s say we want to post-process 100 years of an existing simulation.

Copy and paste the following into post.mysimulation.cfg

  1[default]
  2input = <input>
  3input_subdir = archive/atm/hist
  4output = <output>
  5case = 20210122.v2_test01.piControl.ne30pg2_EC30to60E2r2-1900_ICG.chrysalis
  6www = <www>
  7partition = compute
  8campaign = "water_cycle"
  9
 10# Regridded atmosphere climatologies every 20 and 50 years
 11[climo]
 12active = True
 13years = "1:100:20", "1:100:50",
 14# Use default vars
 15
 16  # Monthly climatology
 17  [[ atm_monthly_180x360_aave ]]
 18  mapping_file = /home/ac.zender/data/maps/map_ne30pg2_to_cmip6_180x360_aave.20200201.nc
 19  frequency = "monthly"
 20
 21  # Diurnal climatology (specifically, 3-hour increments of a day averaged over every day of a month)
 22  [[ atm_monthly_diurnal_8xdaily_180x360_aave ]]
 23  input_subdir = "archive/atm/hist"
 24  input_files = "eam.h4"
 25  mapping_file = /home/ac.zender/data/maps/map_ne30pg2_to_cmip6_180x360_aave.20200201.nc
 26  vars = "PRECT"
 27  frequency = "diurnal_8xdaily"
 28
 29# Regridded atmosphere monthly time series files in 10 year chunks
 30[ts]
 31active = True
 32years = "1:100:10",
 33
 34  # Monthly time series
 35  [[ atm_monthly_180x360_aave ]]
 36  input_subdir = "archive/atm/hist"
 37  input_files = "eam.h0"
 38  frequency = "monthly"
 39  mapping_file = /home/ac.zender/data/maps/map_ne30pg2_to_cmip6_180x360_aave.20200201.nc
 40  # Use default vars
 41
 42  # Daily time series
 43  [[ atm_daily_180x360_aave ]]
 44  input_subdir = "archive/atm/hist"
 45  input_files = "eam.h1"
 46  frequency = "daily"
 47  mapping_file = /home/ac.zender/data/maps/map_ne30pg2_to_cmip6_180x360_aave.20200201.nc
 48  vars = "PRECT"
 49
 50  # Monthly global time series
 51  [[ atm_monthly_glb ]]
 52  input_subdir = "archive/atm/hist"
 53  input_files = "eam.h0"
 54  frequency = "monthly"
 55  mapping_file = "glb"
 56  # Use default vars
 57
 58  # Monthly land time series
 59  [[ land_monthly ]]
 60  input_subdir = "archive/lnd/hist"
 61  input_files = "elm.h0"
 62  frequency = "monthly"
 63  mapping_file = /home/ac.zender/data/maps/map_ne30pg2_to_cmip6_180x360_aave.20200201.nc
 64  vars = "FSH,RH2M"
 65
 66  [[ rof_monthly ]]
 67  input_subdir = "archive/rof/hist"
 68  input_files = "mosart.h0"
 69  frequency = "monthly"
 70  mapping_file = ""
 71  vars = "RIVER_DISCHARGE_OVER_LAND_LIQ"
 72  extra_vars = 'areatotal2'
 73
 74[tc_analysis]
 75active = boolean(default=True)
 76years = "1:100:20", "1:100:50",
 77scratch = <scratch directory>
 78
 79# E3SM Diags every 20 and 50 years
 80[e3sm_diags]
 81active = True
 82years = "1:100:20", "1:100:50",
 83ts_num_years = 10
 84
 85  # Monthly diagnostics
 86  [[ atm_monthly_180x360_aave ]]
 87  short_name = '20210122.v2_test01.piControl.ne30pg2_EC30to60E2r2-1900_ICG.chrysalis'
 88  grid = '180x360_aave'
 89  reference_data_path = '/lcrc/soft/climate/e3sm_diags_data/obs_for_e3sm_diags/climatology'
 90  # These two lines need to be included if sets requiring time series files are being run.
 91  obs_ts = '/lcrc/soft/climate/e3sm_diags_data/obs_for_e3sm_diags/time-series'
 92  ref_start_yr = 1979
 93  # This needs to be set for QBO Diags
 94  ref_final_yr = 2016
 95  # This needs to be set for streamflow diags
 96  streamflow_obs_ts = '/lcrc/group/e3sm/public_html/diagnostics/observations/Atm/time-series/'
 97  # These three lines need to be included if diurnal cycle diagnostics are being run.
 98  dc_obs_climo = '/lcrc/group/e3sm/public_html/diagnostics/observations/Atm/climatology'
 99  climo_diurnal_subsection = "atm_monthly_diurnal_8xdaily_180x360_aave"
100  climo_diurnal_frequency = "diurnal_8xdaily"
101  # This is for tropical cyclone diags
102  tc_obs = '/lcrc/group/e3sm/public_html/diagnostics/observations/Atm/tc-analysis/'
103
104# MPAS-Analysis
105[mpas_analysis]
106active = True
107walltime = "24:00:00"
108parallelTaskCount = 6
109ts_years = "1-50", "1-100",
110enso_years = "11-50", "11-100",
111climo_years = "21-50", "51-100",
112mesh = "EC30to60E2r2"
113
114# Global time series plots
115[global_time_series]
116active = True
117years = "1-100",
118ts_num_years = 10
119figstr=coupled_v2_test01
120moc_file=mocTimeSeries_0001-0100.nc
121experiment_name=20210122.v2_test01.piControl.chrysalis
122ts_years = "1-50", "1-100",
123climo_years = "21-50", "51-100",

Now we can run zppy -c post.mysimulation.cfg.

The [climo] subsections ([[ atm_monthly_180x360_aave ]] and [[ atm_monthly_diurnal_8xdaily_180x360_aave ]]), the [ts] subsections ([[ atm_monthly_180x360_aave ]], [[ atm_daily_180x360_aave ]], [[ atm_monthly_glb ]] and [[ land_monthly ]]), and the [mpas_analysis] section will run first because they have no dependencies.

Once the [climo] subsections and the [ts] subsection [[ atm_monthly_180x360_aave ]] finish, [e3sm_diags] will run.

Once the [ts] subsection [[ atm_monthly_glb ]] and the [mpas_analysis] section finish, [global_time_series] will run.

Post-processing results will be located in output and www. Some machines have a web server. www should be pointed to that so that E3SM Diags, MPAS-Analysis, and the global time series plots will be visible online.

Because we have specified campaign = "water_cycle", some parameters will be automatically set. zppy/templates/water_cycle.cfg specifies what [e3sm_diags] > sets, and [mpas_analysis] > generate should be for the water cycle campaign. Users may specify their own values for any of these parameters, allowing for easy configuration changes. For example, a user could set campaign = "water_cycle" but specify their own value for [e3sm_diags] > sets.

Example 2

This is another example of a configuration file, this time using a RRM simulation.

 1[default]
 2input = <input>
 3input_subdir = archive/atm/hist
 4output = <output>
 5case = 20210603.v2rc3c.piControl.northamericax4v1pg2_WC14to60E2r3.chrysalis
 6www = <www>
 7partition = debug
 8campaign = "water_cycle"
 9
10[climo]
11active = True
12years = "1:60:20",
13
14  [[atm_monthly_180x360_aave]]
15  mapping_file = /home/ac.zender/data/maps/map_northamericax4v1pg2_to_cmip6_180x360_aave.20200401.nc
16
17  [[conus_0.23x0.31_aave]]
18  grid = 'conus_0.23x0.31_aave'
19  mapping_file = /home/ac.zender/data/maps/map_northamericax4v1pg2_to_conus_0.23x0.31_nco.20210301.nc
20
21[ts]
22active = True
23years = "1:60:10",
24mapping_file = /home/ac.zender/data/maps/map_northamericax4v1pg2_to_cmip6_180x360_aave.20200401.nc
25
26  [[ atm_monthly_180x360_aave ]]
27  input_subdir = "archive/atm/hist"
28  input_files = "eam.h0"
29  vars = "FSNTOA,FLUT,FSNT,FLNT,FSNS,FLNS,SHFLX,QFLX,TAUX,TAUY,PRECC,PRECL,PRECSC,PRECSL,TS,TREFHT,CLDTOT,CLDHGH,CLDMED,CLDLOW,U"
30
31  [[ atm_monthly_glb ]]
32  input_subdir = "archive/atm/hist"
33  input_files = "eam.h0"
34  mapping_file = "glb"
35  vars = "FSNTOA,FLUT,FSNT,FLNT,FSNS,FLNS,SHFLX,QFLX,TAUX,TAUY,PRECC,PRECL,PRECSC,PRECSL,TS,TREFHT,CLDTOT,CLDHGH,CLDMED,CLDLOW"
36
37  [[ land_monthly ]]
38  input_subdir = "archive/lnd/hist"
39  input_files = "elm.h0"
40  frequency = "monthly"
41  vars = "FSH,RH2M"
42
43[e3sm_diags]
44active = True
45reference_data_path = '/lcrc/soft/climate/e3sm_diags_data/obs_for_e3sm_diags/climatology'
46output_format_subplot = "pdf",
47short_name = '20210603.v2rc3c.piControl.naRRM'
48years = "1:60:20",
49
50  [[atm_monthly_180x360_aave]]
51  grid = '180x360_aave'
52  sets = "lat_lon","zonal_mean_xy","zonal_mean_2d","polar","cosp_histogram","meridional_mean_2d","enso_diags","qbo","area_mean_time_series",
53  ts_num_years = 10
54  obs_ts = '/lcrc/soft/climate/e3sm_diags_data/obs_for_e3sm_diags/time-series'
55  ref_start_yr = 1990
56  ref_end_yr = 1999
57  ref_final_yr = 2016
58
59  [[conus_0.23x0.31_aave]]
60  grid = 'conus_0.23x0.31_aave'
61  sets = 'lat_lon',
62  cfg = "e3sm_diags/lat_lon_conus.cfg"
63
64[mpas_analysis]
65active = False
66walltime = "24:00:00"
67parallelTaskCount = 6
68ts_years = "1-50",
69enso_years = "1-50",
70climo_years ="1-50",
71mesh = "WC14to60E2r3"
72partition = compute
73
74[global_time_series]
75active = False

Debugging failures

$ cd <output directory from cfg>/post/scripts
$ grep -v "OK" *status # See what failed
# Review `.o` files corresponding to failed `.status` files.
# If an error is obvious, make a fix in the bash file and rerun:
$ sbatch <failed job>.bash
# If the error is not obvious, do the following:
$ emacs <failed job>.bash
# In this file, set `debug = True`. This will provide more information.
# Note: another option is to set `debug = True` in your `cfg` and rerun `zppy`.
$ sbatch <failed job>.bash