E3SM-Project / zppy

E3SM post-processing toolchain
BSD 3-Clause "New" or "Revised" License
6 stars 15 forks source link

[Bug]: ILAMB will end up in a different directory if a different short_name is used #594

Open forsyth2 opened 6 months ago

forsyth2 commented 6 months ago

What happened?

https://portal.nersc.gov/cfs/e3sm/forsyth/E3SM-tutorial-v3/extendedOutput.v3.LR.historical_0101/ contained visual output for e3sm_diags, global_time_series, mpas_analysis, but ILAMB was not found despite completing successfully. It turns out the output was in https://portal.nersc.gov/cfs/e3sm/forsyth/E3SM-tutorial-v3/v3.LR.historical_0101/. This appears to be because short_name = "v3.LR.historical_0101".

Indeed, in https://github.com/E3SM-Project/zppy/blob/main/zppy/templates/ilamb.bash:

case="{{ case }}"
short="{{ short_name }}"
if [ $short != "" ]; then
    case=${short}
fi
web_dir=${www}/${case}/ilamb/{{ sub }}_${Y1}-${Y2}

That second block doesn't seem necessary.

What machine were you running on?

Perlmutter

Environment

zppy v2.5.0, E3SM Unified 1.10.0

What command did you run?

zppy -c extendedOutput.v3.LR.historical_0101.cfg

Copy your cfg file

# To view all possible parameters in zppy, view:
# https://docs.e3sm.org/zppy/_build/html/main/parameters.html > parameter defaults
# That brings you to the latest released default.ini file, which defines all
# the default values for the parameters.

# The cfg is hierarchical.
# E.g., parameters applied at the `[default]` level also apply at the `[climo]` level.
# Subtask values override task values, which override [default] values in the cfg, which override values defined in default.ini.

# WARNING: to run this yourself:
# 1. Change any paths with "forsyth" in them to your own path.
# 2. Uncomment the `account` and `reservation` parameters under `[default]`

[default]
# The account for the E3SM tutorial.
#account = "ntrain6"

# The case name of the simulation
case = "extendedOutput.v3.LR.historical_0101"
# Perlmutter has a couple possible constraints. We'll use "cpu".
constraint = "cpu"
# This is the input to zppy -- so, it's the *output* from the simulation!
input = "/global/cfs/cdirs/e3sm/www/Tutorials/2024/simulations/extendedOutput.v3.LR.historical_0101/"
# This is where zppy's output will go
# Importantly, you can easily post-process someone else's simulation without needing write permissions to their directory.
# Include the case here.
output = "/global/cfs/cdirs/e3sm/forsyth/E3SM-tutorial-v3/extendedOutput.v3.LR.historical_0101"

# NERSC's "Quality of Service". Options include "regular" and "debug".
# zppy chooses "regular" by default, 
# but you may wish to use "debug" if you're submitting 5 or fewer jobs that run in under 30 minutes.
# For more info, see https://docs.nersc.gov/jobs/policy/#selecting-a-queue
# qos = "debug"

# The reservation for the E3SM tutorial.
#reservation = "e3sm_day3"

# (Overrides walltime "02:00:00" set in default.ini)
walltime = "00:30:00"
# This is the path for the visual output.
# This should be the machine's web server path.
# Don't include case here; zppy will add it.
www = "/global/cfs/cdirs/e3sm/www/forsyth/E3SM-tutorial-v3"

# This section defines what climatologies we want to generate.
# It uses the NCO package.
[climo]
# This tells zppy to actually run the [climo] task.
# This makes it easy to turn on/off tasks or subtasks without deleting blocks.
# (Overrides False in default.ini)
active = True
# For each subtask,
# this will produce 3 climatologies:
# 2000-2001
# 2002-2003
# We have 3 subtasks, so 6 climo jobs will launch.
years = "2000:2004:2",

  [[ atm_monthly_180x360_aave ]]
  # (Overrides "" set in default.ini)
  mapping_file = map_ne30pg2_to_cmip6_180x360_aave.20200201.nc
  # These are the variables we should process.
  # When vars = "", NCO will generate climatologies for ALL available variables.
  vars = ""

  [[ atm_monthly_diurnal_8xdaily_180x360_aave ]]
  # This is the frequency of the data.
  # (Overrides frequency "monthly" set in default.ini)
  frequency = "diurnal_8xdaily"
  # These are the files we should use as input.
  # (Overrides input_files "eam.h0" set in default.ini)
  input_files = "eam.h3" # input files for atmospheric (eam) daily (h4) data
  mapping_file = map_ne30pg2_to_cmip6_180x360_aave.20200201.nc
  # (Overrdes vars "" set in default.ini's [climo] task)
  vars = "PRECT" # Here, we're only interested in diurnal climatologies for PRECT.

  [[ land_monthly_climo ]]
  input_files = "elm.h0" # input files for land (elm) monthly (h0) data
  # (Overrides input_subdir "archive/atm/hist" set in default.ini)
  input_subdir = "archive/lnd/hist"
  vars = ""

# This section defines what time series we want to generate.
# It uses the NCO package (and for some subtasks, also the e3sm_to_cmip package)
[ts]
active = True
# For each non-overridding subtask,
# this will produce 2 time series:
# 2000-2001
# 2002-2003
# We have 3 non-overriding subtasks, so 6 time series jobs will launch.
# We have 2 overriding subtask, which also produce 2 time series each.
# So, in total, this section will produce 10 jobs.
years = "2000:2004:2",

  [[ atm_monthly_180x360_aave ]]
  mapping_file = map_ne30pg2_to_cmip6_180x360_aave.20200201.nc
  # This tells zppy what format the time series should be generated in.
  # (Overrides ts_fmt "ts_only" set in default.ini's [ts] task)
  ts_fmt = "cmip" # This setting is what tells zppy to use the e3sm_to_cmip package.

  [[ atm_daily_180x360_aave ]]
  frequency = "daily"
  input_files = "eam.h3"
  mapping_file = map_ne30pg2_to_cmip6_180x360_aave.20200201.nc
  vars = "PRECT"

  [[ atm_monthly_glb ]]
  # Note global average won't work for 3D variables.
  # Here, we override `mapping_file`
  # (Overrides mapping_file set in this cfg's [default] section)
  mapping_file = "glb"
  # (Overrides years set in this cfg's [ts] task)
  years = "2000:2010:5",

  [[ land_monthly ]]
  # Any extra variables that should be processed
  # (Overrides extra_vars "" set in default.ini's [ts] section)
  extra_vars = "landfrac" # This extra variable is needed to process the land variables we actually want.
  input_files = "elm.h0"
  input_subdir = "archive/lnd/hist"
  mapping_file = map_r05_to_cmip6_180x360_aave.20231110.nc
  # Don't include spaces in your variable lists.
  vars = "LAISHA,LAISUN"
  ts_fmt = "cmip"

  [[ land_monthly_glb ]]
  input_files = "elm.h0"
  input_subdir = "archive/lnd/hist"
  mapping_file = "glb"
  vars = "LAISHA,LAISUN"
  years = "2000:2010:5",

# This section defines what e3sm_diags results we want to generate.
# It uses the e3sm_diags package.
[e3sm_diags]
active = True
# The grid to use
# (Overrides grid "" set in default.ini)
grid = '180x360_aave'
# These are the specific sets from e3sm_diags that you want to run.
# (Overrides default list of sets set in default.ini's [e3sm_diags] task)
sets = "lat_lon","zonal_mean_xy","zonal_mean_2d","polar","cosp_histogram","meridional_mean_2d","enso_diags","qbo","diurnal_cycle","annual_cycle_zonal_mean","zonal_mean_2d_stratosphere",
# The name e3sm_diags uses for plot titles
short_name = "v3.LR.historical_0101"
# This is the number of years in the time series files.
# It should correspond to the lowest increment amount in the `[ts]` task.
# (Overrides ts_num_years "5" set in default.ini's [e3sm_diags] task)
ts_num_years = 2
# (Overrides walltime set in this cfg's [default] section)
walltime = "2:00:00"
years = "2000:2004:2",

  # Model-vs-obs
  [[ atm_monthly_180x360_aave ]]
  # Name of the frequency from `[climo]` to use for "diurnal_cycle" runs
  # This is important for accessing the correct files.
  # (Overrides climo_diurnal_frequency "" set in default.ini's [e3sm_diags] task)
  climo_diurnal_frequency = "diurnal_8xdaily"
  # Name of the subsection of `[climo]` to use for "diurnal_cycle" runs
  # This is important for setting the correct job dependency chain.
  # Since subtask names are customizable, zppy needs some way of knowing which
  # subtask it should use to generate the e3sm_diags results here.
  # Other such subsection parameters for e3sm_diags are:
  # ts_, ts_daily_, climo_
  # (Overrides climo_diurnal_subsection "" set in default.ini's [e3sm_diags task])
  climo_diurnal_subsection = "atm_monthly_diurnal_8xdaily_180x360_aave"
  # These are the reference years for the reference data (in this case, observations)
  ref_final_yr = 2004
  ref_start_yr = 2000

# This section defines what mpas_analysis results we want to generate.
# It uses the MPAS-Analysis package.
# This configuration produces 2 `mpas_analysis` jobs.
# ts_2000-2004_climo_2000-2004
# ts_2000-2010_climo_2005-2010
[mpas_analysis]
active = True
anomalyRefYear = 2000
climo_years ="2000-2004",
enso_years = "2000-2004",
mesh = "IcoswISC30E3r5"
parallelTaskCount = 6
ts_years = "2000-2004",
# (Overrides walltime "06:00:00" set in this cfg's [mpas_analysis] section)
walltime = "02:00:00"

# This section defines what global_time_series results we want to generate.
# There are 8 standard plots to display,
# but you can customize which plots to display.
[global_time_series]
active = True
# These need to match the `mpas_analysis` task
climo_years ="2000-2004",
experiment_name = "extendedOutput.v3.LR.historical_0101"
figstr = "v3.LR.historical_0101"
# These need to match the final ts_years range from the `mpas_analysis` task
moc_file=mocTimeSeries_2000-2004.nc
ts_num_years = 5
# These need to match the mpas_analysis task
ts_years = "2000-2004",
years = "2000-2004",

# This section defines what mpas_analysis results we want to generate.
# It uses the ILAMB package.
[ilamb]
active = True
grid = "180x360_aave"
nodes = 8
short_name = "v3.LR.historical_0101"
ts_num_years = 2
years = "2000:2004:2",

What jobs are failing?

No response

What stack trace are you encountering?

No response