AMIP (SST & Sea Ice) Forcing Specifications¶
The AMIP (Atmospheric Model Intercomparison Project) forcing pipeline ingests observed sea surface temperature (SST) and sea-ice concentration fields from PCMDI to generate monthly boundary condition ancillary files (.anc) for prescribed-ocean experiments in ACCESS-ESM1.6.
Physical Domain & Scientific Scope¶
- Boundary Variables Generated:
- Sea Surface Temperature (
sst): Monthly mean sea surface skin temperature. Target STASH item:m01s00i024(SURFACE TEMPERATURE AFTER TIMESTEP). - Sea Ice Concentration (
seaice): Fractional area of grid cell covered by sea ice. Target STASH items:m01s00i031/m01s00i032(SEA ICE FRACTION). - Source Dataset: PCMDI AMIP observational boundary dataset (
PCMDI-AMIP-1-1-10,v20250807) spanning 1870 to 2022. - UKESM Intermediate Processing:
Utilizes the UK Met Office AMIP toolchain (
ancillary-file-scienceon branch1-port-cmip7-amip-code-for-esm16-site-nci) to regrid PCMDI observations to the N96 atmospheric grid while applying area-preserving Taylor regridding and land-sea mask consistency adjustments. - Preservation of Ocean Cells:
Unlike land ancillaries which fill missing values with 0.0, AMIP ancillaries maintain strict ocean masks (
fill=Falseinfix_cmip7_ukesm) to avoid corrupting coastal marine boundary temperatures.
Provenance & Dataflow Architecture¶
The AMIP pipeline follows the W3C PROV framework, integrating upstream UKESM spatial regridding, Taylor temporal interpolation, and in-house Mule packaging with strict ocean mask preservation:
flowchart TD
%% Custom Styles for W3C PROV Semantics
classDef inputStyle fill:#e1f5fe,stroke:#0288d1,stroke-width:1.5px,color:#01579b
classDef activityStyle fill:#e8f5e9,stroke:#2e7d32,stroke-width:1.5px,color:#1b5e20
classDef outputStyle fill:#fff3e0,stroke:#e65100,stroke-width:1.5px,color:#bf360c
classDef agentStyle fill:#f3e5f5,stroke:#7b1fa2,stroke-width:1.5px,color:#4a148c
classDef targetStyle fill:#ede7f6,stroke:#4527a0,stroke-width:2px,color:#311b92
%% Top Level: Inputs and Agents
subgraph S_TOP["1. Source Inputs and Agents"]
direction LR
subgraph Inputs["Input Entities (prov:Entity)"]
direction TB
E_TOS[("PCMDI tos (SST) NetCDF<br><code>PCMDI-AMIP-1-1-10 (1870-2022)</code>")]:::inputStyle
E_SIC[("PCMDI siconc (Sea Ice) NetCDF<br><code>PCMDI-AMIP-1-1-10 (1870-2022)</code>")]:::inputStyle
E_Mask[("Reference Grid Mask<br><code>qrparm.mask (N96)</code>")]:::inputStyle
end
subgraph Agents["Agents (prov:Agent)"]
direction TB
AgCylc{{"Cylc 8 Suite Scheduler"}}:::agentStyle
AgUK{{"UKESM AMIP Scripts<br><i>cloned via git</i>"}}:::agentStyle
AgPy{{"esm1p6_ancil.amip (Iris and Mule)"}}:::agentStyle
end
end
%% Middle Level: Transformation Pipeline
subgraph Activities["2. Multi-Stage Pipeline (prov:Activity)"]
direction TB
A_Regrid["Stage 1: UKESM Regridding<br><i>AM_ukesm_regrid (N96 spatial regrid)</i>"]:::activityStyle
A_Taylor["Stage 2: Taylor Interpolation<br><i>AM_ukesm_taylor (daily -> monthly)</i>"]:::activityStyle
A_Ancil["Stage 3: Intermediate Extraction<br><i>AM_ukesm_ancil</i>"]:::activityStyle
A_Fix["Stage 4: Coordinate Alignment<br><i>fix_cmip7_ukesm (fill=False to preserve ocean mask)</i>"]:::activityStyle
A_Mule["Stage 5: Mule Packaging<br><i>save_ancil (gregorian=False)</i>"]:::activityStyle
A_Regrid --> A_Taylor --> A_Ancil --> A_Fix --> A_Mule
end
%% Lower Level: Output Entities
subgraph Outputs["3. Output Entities (prov:Entity)"]
direction TB
E_TOS_Anc[("Time-Series SST Ancillary<br><code>tos.anc (STASH m01s00i024)</code>")]:::outputStyle
E_SIC_Anc[("Time-Series Sea Ice Ancillary<br><code>siconc.anc (STASH m01s00i031)</code>")]:::outputStyle
end
%% Bottom Level: Model Target
subgraph S_DEPLOY["4. Downstream Deployment"]
E_Model[["ACCESS-ESM1.6 Configs<br><code>ACCESS-NRI/access-esm1.6-configs</code>"]]:::targetStyle
end
%% Relationships
E_TOS & E_SIC -->|prov:used| A_Regrid
E_Mask -->|prov:used| A_Fix
A_Mule -->|prov:wasGeneratedBy| E_TOS_Anc & E_SIC_Anc
E_TOS_Anc & E_SIC_Anc -->|staged for model execution| E_Model
%% Agent Associations
AgUK -.->|prov:wasAssociatedWith| A_Regrid
AgUK -.->|prov:wasAssociatedWith| A_Taylor
AgPy -.->|prov:wasAssociatedWith| A_Fix
AgPy -.->|prov:wasAssociatedWith| A_Mule
AgCylc -.->|orchestrates| Activities
Controlling Suite Switches¶
The execution, experiment inclusion, and script branches for the AMIP pipeline are controlled by parameters in rose-suite.conf:
- Master Activation Switch:
ANCIL_CREATE_AMIP = true
When set tofalse, all AMIP regridding and ancillary generation tasks are excluded from the Cylc task graph. - Experiment Activation: Governed by
USE_EXP['AM'] = True. - Variables Processed:
AMIP_VARS = ['seaice', 'sst']. - Upstream Scripts Branching: Clones the AMIP regridding toolchain from
${GIT_ORG_URL}/${GIT_AMIP_SCRIPTS_REPO}.giton branch${GIT_AMIP_SCRIPTS_BRANCH}(1-port-cmip7-amip-code-for-esm16-site-nci). - Reference: See Suite Configuration & Parameters Reference for full object declarations.
1. AMIP Infrastructure Tasks¶
git_clone_amip_scripts¶
- 1. Description & Purpose: Clones the AMIP processing repository from GitHub (
${GIT_ORG_URL}/${GIT_AMIP_SCRIPTS_REPO}on branch${GIT_AMIP_SCRIPTS_BRANCH}) into${CYLC_WORKFLOW_SHARE_DIR}/${GIT_AMIP_SCRIPTS_REPO}-amip. - 2. Execution:
git clone --depth 1 -b ${GIT_AMIP_SCRIPTS_BRANCH} ${GIT_ORG_URL}/${GIT_AMIP_SCRIPTS_REPO}.git. - 7 & 8. Output: Cloned directory in workflow share directory.
install_amip¶
- 1. Description & Purpose: Installs the cloned AMIP scripts and Python dependencies into the suite's environment.
- 2. Execution:
pip install --no-deps -e ${CYLC_WORKFLOW_SHARE_DIR}/${GIT_AMIP_SCRIPTS_REPO}-amip.
2. Upstream UKESM Regridding Tasks¶
AM_ukesm_regrid¶
- 1. Description & Purpose: Regrids raw monthly PCMDI SST and sea ice NetCDF files to the target N96 resolution using conservative interpolation.
- 3. Input4MIPs Version:
${CMIP7_AMIP_VERSION}(PCMDI-AMIP-1-1-10),${CMIP7_AMIP_VDATE}(v20250807), Range:${CMIP7_AMIP_DATE_RANGE}(187001-202212). - 4. Input4MIPs Path:
${VAR.CMIP7_SOURCE_PATH}/AMIP/PCMDI/${CMIP7_AMIP_VERSION}/ocean/mon/{var}/gn/${CMIP7_AMIP_VDATE}/
(Evaluated:/g/data/qv56/replicas/input4MIPs/CMIP7/AMIP/PCMDI/PCMDI-AMIP-1-1-10/ocean/mon/{var}/gn/v20250807/)
AM_ukesm_taylor¶
- 1. Description & Purpose: Applies Taylor diagram verification and conservative flux-conserving smoothing to the regridded SST and sea-ice fields.
AM_ukesm_ancil¶
- 1. Description & Purpose: Packages the regridded fields into standardized UKESM intermediate NetCDF files:
${UKESM_AMIP_NETCDF_FILENAME['seaice']}(seaice_amip_n96_gregorian.nc) and${UKESM_AMIP_NETCDF_FILENAME['sst']}(sst_amip_n96_gregorian.nc).
3. UM Binary Ancillary Generation Tasks¶
AM_seaice_ancil_amip¶
- 1. Description & Purpose: Reads the intermediate
${UKESM_AMIP_NETCDF_FILENAME['seaice']}file, aligns coordinate definitions with the ACCESS-ESM1.6 N96 grid mask without zero-filling ocean points, and produces${ESM_AMIP_SAVE_FILENAME['seaice']}(seaice_amip_n96_gregorian.anc). - 2. CLI Arguments Passed:
python -m esm1p6_ancil.amip.cmip7_AM_amip_generate \ --ancil-target-dirname "${VAR.ANCIL_TARGET_PATH}" \ # Current: "/g/data/${PROJECT}/${USER}/CMIP7/esm1p6_ancil/$(isodatetime -f CCYY.MM.DD)" --cmip7-source-data-dirname "${VAR.CMIP7_SOURCE_PATH}" \ # Current: "/g/data/qv56/replicas/input4MIPs/CMIP7" --esm15-inputs-dirname "${VAR.ESM15_INPUTS_PATH}" \ # Current: "/g/data/vk83/configurations/inputs/access-esm1p5" --esm-grid-rel-dirname "${ESM_GRID_DIRNAME}" \ # Current: "global.N96" --esm15-grid-version "${ESM15_GRID_VERSION}" \ # Current: "2020.05.19" --ukesm-ancil-dirpath "${CYLC_WORKFLOW_SHARE_DIR}/" \ --ukesm-netcdf-filename "${UKESM_AMIP_NETCDF_FILENAME['seaice']}" \ # Current: "seaice_amip_n96_gregorian.nc" --save-filename "${ESM_AMIP_SAVE_FILENAME['seaice']}" # Current: "seaice_amip_n96_gregorian.anc" - 5. Scripts & Functions:
esm1p6_ancil.amip.cmip7_AM_amip_generate,load_cmip7_ukesm,fix_cmip7_ukesm,save_cmip7_am_amip,save_ancil. - 6. Cube Transformations:
- Loads 3D sea-ice cube
(time, lat, lon)spanning 1870–2022. - Adjusts latitude and longitude coordinate metadata via
fix_cmip7_ukesm(args, ukesm_cube, fill=False). - Passes cube to
save_ancilwithgregorian=Falseto preserve standard 360-day or Proleptic Gregorian time headers.
- Loads 3D sea-ice cube
- 7. Produced Ancillary:
${ESM_AMIP_SAVE_FILENAME['seaice']}(seaice_amip_n96_gregorian.anc, 1836 monthly slices, 1870–2022). - 8. Destination Path:
${VAR.ANCIL_TARGET_PATH}/modern/amip/atmosphere/boundary_conditions/${ESM_GRID_DIRNAME}/<DATE>/${ESM_AMIP_SAVE_FILENAME['seaice']}. - 9. Namelist Updates:
None (Generates binary ancillary .anc file).
AM_sst_ancil_amip¶
- 1. Description & Purpose: Reads
${UKESM_AMIP_NETCDF_FILENAME['sst']}, validates SST Kelvin units, aligns coordinates without zero-filling ocean cells, and produces${ESM_AMIP_SAVE_FILENAME['sst']}(sst_amip_n96_gregorian.anc). - 2. CLI Arguments Passed:
python -m esm1p6_ancil.amip.cmip7_AM_amip_generate \ --ancil-target-dirname "${VAR.ANCIL_TARGET_PATH}" \ # Current: "/g/data/${PROJECT}/${USER}/CMIP7/esm1p6_ancil/$(isodatetime -f CCYY.MM.DD)" --cmip7-source-data-dirname "${VAR.CMIP7_SOURCE_PATH}" \ # Current: "/g/data/qv56/replicas/input4MIPs/CMIP7" --esm15-inputs-dirname "${VAR.ESM15_INPUTS_PATH}" \ # Current: "/g/data/vk83/configurations/inputs/access-esm1p5" --esm-grid-rel-dirname "${ESM_GRID_DIRNAME}" \ # Current: "global.N96" --esm15-grid-version "${ESM15_GRID_VERSION}" \ # Current: "2020.05.19" --ukesm-ancil-dirpath "${CYLC_WORKFLOW_SHARE_DIR}/" \ --ukesm-netcdf-filename "${UKESM_AMIP_NETCDF_FILENAME['sst']}" \ # Current: "sst_amip_n96_gregorian.nc" --save-filename "${ESM_AMIP_SAVE_FILENAME['sst']}" # Current: "sst_amip_n96_gregorian.anc" - 7. Produced Ancillary:
${ESM_AMIP_SAVE_FILENAME['sst']}(sst_amip_n96_gregorian.anc, 1836 monthly slices, 1870–2022). - 8. Destination Path:
${VAR.ANCIL_TARGET_PATH}/modern/amip/atmosphere/boundary_conditions/${ESM_GRID_DIRNAME}/<DATE>/${ESM_AMIP_SAVE_FILENAME['sst']}. - 9. Namelist Updates:
None (Generates binary ancillary .anc file).