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>
7e3sm_unified = latest
8partition = compute
9campaign = "water_cycle"
10
11# Regridded atmosphere climatologies every 20 and 50 years
12[climo]
13active = True
14years = "1:100:20", "1:100:50",
15# Use default vars
16
17 # Monthly climatology
18 [[ atm_monthly_180x360_aave ]]
19 mapping_file = /home/ac.zender/data/maps/map_ne30pg2_to_cmip6_180x360_aave.20200201.nc
20 frequency = "monthly"
21
22 # Diurnal climatology (specifically, 3-hour increments of a day averaged over every day of a month)
23 [[ atm_monthly_diurnal_8xdaily_180x360_aave ]]
24 input_subdir = "archive/atm/hist"
25 input_files = "eam.h4"
26 mapping_file = /home/ac.zender/data/maps/map_ne30pg2_to_cmip6_180x360_aave.20200201.nc
27 vars = "PRECT"
28 frequency = "monthly_diurnal_8xdaily"
29
30# Regridded atmosphere monthly time series files in 10 year chunks
31[ts]
32active = True
33years = "1:100:10",
34
35 # Monthly time series
36 [[ atm_monthly_180x360_aave ]]
37 input_subdir = "archive/atm/hist"
38 input_files = "eam.h0"
39 frequency = "monthly"
40 mapping_file = /home/ac.zender/data/maps/map_ne30pg2_to_cmip6_180x360_aave.20200201.nc
41 # Use default vars
42
43 # Daily time series
44 [[ atm_daily_180x360_aave ]]
45 input_subdir = "archive/atm/hist"
46 input_files = "eam.h1"
47 frequency = "daily"
48 mapping_file = /home/ac.zender/data/maps/map_ne30pg2_to_cmip6_180x360_aave.20200201.nc
49 vars = "PRECT"
50
51 # Monthly global time series
52 [[ atm_monthly_glb ]]
53 input_subdir = "archive/atm/hist"
54 input_files = "eam.h0"
55 frequency = "monthly"
56 mapping_file = "glb"
57 # Use default vars
58
59 # Monthly land time series
60 [[ land_monthly ]]
61 input_subdir = "archive/lnd/hist"
62 input_files = "elm.h0"
63 frequency = "monthly"
64 mapping_file = /home/ac.zender/data/maps/map_ne30pg2_to_cmip6_180x360_aave.20200201.nc
65 vars = "FSH,RH2M"
66
67 [[ rof_monthly ]]
68 input_subdir = "archive/rof/hist"
69 input_files = "mosart.h0"
70 frequency = "monthly"
71 mapping_file = ""
72 vars = "RIVER_DISCHARGE_OVER_LAND_LIQ"
73 extra_vars = 'areatotal2'
74
75# E3SM Diags every 20 and 50 years
76[e3sm_diags]
77active = True
78years = "1:100:20", "1:100:50",
79ts_num_years = 10
80
81 # Monthly diagnostics
82 [[ atm_monthly_180x360_aave ]]
83 short_name = '20210122.v2_test01.piControl.ne30pg2_EC30to60E2r2-1900_ICG.chrysalis'
84 grid = '180x360_aave'
85 reference_data_path = '/lcrc/soft/climate/e3sm_diags_data/obs_for_e3sm_diags/climatology'
86 # These two lines need to be included if sets requiring time series files are being run.
87 obs_ts = '/lcrc/soft/climate/e3sm_diags_data/obs_for_e3sm_diags/time-series'
88 ref_start_yr = 1979
89 # This needs to be set for QBO Diags
90 ref_final_yr = 2016
91 # This needs to be set for streamflow diags
92 streamflow_obs_ts = '/lcrc/group/e3sm/public_html/e3sm_diags_test_data/unit_test_complete_run/obs/time-series/'
93 # These two lines need to be included if diurnal cycle diagnostics are being run.
94 dc_obs_climo = '/lcrc/group/e3sm/public_html/e3sm_diags_test_data/unit_test_complete_run/obs/climatology'
95 climo_diurnal_subsection = "atm_monthly_diurnal_8xdaily_180x360_aave"
96
97[e3sm_diags_vs_model]
98active = False
99
100[amwg]
101active = False
102
103# MPAS-Analysis
104[mpas_analysis]
105active = True
106walltime = "24:00:00"
107parallelTaskCount = 6
108ts_years = "1-50", "1-100",
109enso_years = "11-50", "11-100",
110climo_years = "21-50", "51-100",
111mesh = "EC30to60E2r2"
112
113# Global time series plots
114[global_time_series]
115active = True
116years = "1-100",
117ts_num_years = 10
118figstr=coupled_v2_test01
119moc_file=mocTimeSeries_0001-0100.nc
120experiment_name=20210122.v2_test01.piControl.chrysalis
121ts_years = "1-50", "1-100",
122climo_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
, [e3sm_diags_vs_model] > 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>
7e3sm_unified = latest
8partition = debug
9campaign = "water_cycle"
10
11[climo]
12active = True
13years = "1:60:20",
14
15 [[atm_monthly_180x360_aave]]
16 mapping_file = /home/ac.zender/data/maps/map_northamericax4v1pg2_to_cmip6_180x360_aave.20200401.nc
17
18 [[conus_0.23x0.31_aave]]
19 grid = 'conus_0.23x0.31_aave'
20 mapping_file = /home/ac.zender/data/maps/map_northamericax4v1pg2_to_conus_0.23x0.31_nco.20210301.nc
21
22[ts]
23active = True
24years = "1:60:10",
25mapping_file = /home/ac.zender/data/maps/map_northamericax4v1pg2_to_cmip6_180x360_aave.20200401.nc
26
27 [[ atm_monthly_180x360_aave ]]
28 input_subdir = "archive/atm/hist"
29 input_files = "eam.h0"
30 vars = "FSNTOA,FLUT,FSNT,FLNT,FSNS,FLNS,SHFLX,QFLX,TAUX,TAUY,PRECC,PRECL,PRECSC,PRECSL,TS,TREFHT,CLDTOT,CLDHGH,CLDMED,CLDLOW,U"
31
32 [[ atm_monthly_glb ]]
33 input_subdir = "archive/atm/hist"
34 input_files = "eam.h0"
35 mapping_file = "glb"
36 vars = "FSNTOA,FLUT,FSNT,FLNT,FSNS,FLNS,SHFLX,QFLX,TAUX,TAUY,PRECC,PRECL,PRECSC,PRECSL,TS,TREFHT,CLDTOT,CLDHGH,CLDMED,CLDLOW"
37
38 [[ land_monthly ]]
39 input_subdir = "archive/lnd/hist"
40 input_files = "elm.h0"
41 frequency = "monthly"
42 vars = "FSH,RH2M"
43
44[e3sm_diags]
45active = True
46reference_data_path = '/lcrc/soft/climate/e3sm_diags_data/obs_for_e3sm_diags/climatology'
47output_format_subplot = "pdf",
48short_name = '20210603.v2rc3c.piControl.naRRM'
49years = "1:60:20",
50
51 [[atm_monthly_180x360_aave]]
52 grid = '180x360_aave'
53 sets = "lat_lon","zonal_mean_xy","zonal_mean_2d","polar","cosp_histogram","meridional_mean_2d","enso_diags","qbo","area_mean_time_series",
54 ts_num_years = 10
55 obs_ts = '/lcrc/soft/climate/e3sm_diags_data/obs_for_e3sm_diags/time-series'
56 ref_start_yr = 1990
57 ref_end_yr = 1999
58 ref_final_yr = 2016
59
60 [[conus_0.23x0.31_aave]]
61 grid = 'conus_0.23x0.31_aave'
62 sets = 'lat_lon',
63 cfg = "e3sm_diags/lat_lon_conus.cfg"
64
65[e3sm_diags_vs_model]
66active = False
67
68[mpas_analysis]
69active = False
70walltime = "24:00:00"
71parallelTaskCount = 6
72ts_years = "1-50",
73enso_years = "1-50",
74climo_years ="1-50",
75mesh = "WC14to60E2r3"
76partition = compute
77
78[amwg]
79active = False
80
81[global_time_series]
82active = False