Atmosphere — EAM and EAMxx

E3SM has two atmosphere models:

  • EAM (E3SM Atmosphere Model) — the standard atmosphere model used in most E3SM configurations.

  • EAMxx (E3SM Atmosphere Model, next generation) — uses a different vertical grid (L128) and a different file format.

Relevant zppy tasks

The following zppy tasks are commonly used for atmosphere post-processing:

EAM configuration

For EAM (standard resolution), typical history streams are:

  • eam.h0 — monthly averages (most common for diagnostics)

  • eam.h1 — daily averages

  • eam.h2 — high-frequency output (used for TC analysis)

Typical [climo] and [ts] subsection configuration for EAM:

[climo]
active = True

  [[atm_monthly_180x360_aave]]
  input_files = eam.h0
  input_subdir = archive/atm/hist
  mapping_file = /path/to/map_ne30pg2_to_cmip6_180x360_aave.20200201.nc
  grid = 180x360_aave
  years = 1:100:20

[ts]
active = True

  [[atm_monthly_180x360_aave]]
  input_files = eam.h0
  input_subdir = archive/atm/hist
  mapping_file = /path/to/map_ne30pg2_to_cmip6_180x360_aave.20200201.nc
  grid = 180x360_aave
  years = 1:100:10

  [[atm_daily_180x360_aave]]
  input_files = eam.h1
  input_subdir = archive/atm/hist
  mapping_file = /path/to/map_ne30pg2_to_cmip6_180x360_aave.20200201.nc
  grid = 180x360_aave
  frequency = daily
  years = 1:100:10

  [[atm_monthly_glb]]
  input_files = eam.h0
  input_subdir = archive/atm/hist
  years = 1:100:10

EAMxx configuration

EAMxx uses a fine vertical grid (L128 in v3 and v4, though the grid itself changed between them) and stores output differently from EAM. Key differences when configuring zppy for EAMxx:

  • Set input_component = eamxx in [climo] and [ts] sections.

  • Vertical remapping needs the source vertical grid (the hybrid coefficients hyai, hybi, hyam, hybm). ncremap reads it from the input file only when the vertical variables carry it with the CF formula_terms convention, which older EAMxx output does not. zppy therefore derives an explicit source vertical grid file at run time from the run’s own output, so any EAMxx vertical grid works; set vrt_in_file to use a file of your own instead.

  • Vertical remapping (vrt_remap_vars) is often needed to produce pressure-level data for diagnostics.

Example EAMxx configuration:

[ts]
active = True

  [[eamxx_monthly_180x360_aave]]
  input_component = eamxx
  input_files = eamxx.h0
  input_subdir = archive/atm/hist
  mapping_file = /path/to/map_ne30pg2_to_cmip6_180x360_aave.nc
  grid = 180x360_aave
  vrt_remap_vars = T,Q,U,V,Z3,OMEGA
  years = 1:50:10

Mapping files

Mapping files remap EAM/EAMxx output from the native spectral-element grid (e.g., ne30pg2) to a regular latitude-longitude grid (e.g., 180x360_aave). These files are typically pre-computed and available on supported machines under the diagnostics_base_path.

Machine-specific mapping file locations:

  • Chrysalis/Anvil (LCRC): typically under /home/ac.zender/data/maps/

  • Perlmutter (NERSC): typically under /global/homes/z/zender/data/maps/

  • Compy: typically under /compyfs/zender/maps/

Diurnal cycle

For diurnal cycle diagnostics in e3sm_diags, high-frequency (8× daily) climatologies are needed. Configure an additional [climo] subsection:

[climo]
  [[atm_monthly_diurnal_8xdaily_180x360_aave]]
  input_files = eam.h3
  input_subdir = archive/atm/hist
  frequency = diurnal_8xdaily
  mapping_file = /path/to/map_ne30pg2_to_cmip6_180x360_aave.nc
  grid = 180x360_aave
  years = 1:100:20

[e3sm_diags]
  [[atm_monthly_180x360_aave]]
  sets = diurnal_cycle,...
  climo_diurnal_subsection = atm_monthly_diurnal_8xdaily_180x360_aave
  climo_diurnal_frequency = diurnal_8xdaily
  dc_obs_climo = /path/to/obs/climatology