3b. Process Forcings (case.process_forcings)#
The final part of the CrocoDash workflow is extracting and processing all the forcing data your simulation needs. This includes initial conditions, boundary conditions, tidal forcings, biogeochemistry data, and more. You process all of this data through the case.process_forcings call. case.process_forcings wraps a submodule of CrocoDash called extract_forcings. Extract_forcings is a set of scripts to process each forcing, like initial/boundary conditions, tides, etc… You trigger this from Python via case.process_forcings(), or from the shell via crocodash process.
Workflow Overview#
case.configure_forcings(...)— writesinputdir/extract_forcings/config.jsonwith your case-specific forcing setupcase.process_forcings(...)— reads that config and runs the extraction pipelineOutputs land in
inputdir/ocnice/
The key insight: you don’t have to run this from a Jupyter notebook. After configure_forcings completes you can submit the extraction as a batch job using the CLI:
crocodash process --caseroot ~/croc_cases/mycase --all
Directory Structure#
inputdir/
├── extract_forcings/
│ └── config.json # Written by case.configure_forcings
└── ocnice/ # Output goes here
├── init_eta_filled.nc
├── init_vel_filled.nc
├── init_tracers_filled.nc
├── forcing_obc_segment_001.nc
└── ...
Command-Line Interface#
See CLI reference for full flag documentation.
# Run all forcing extractions
crocodash process --caseroot ~/croc_cases/mycase --all
# Run only specific forcings
crocodash process --tides
crocodash process --runoff
crocodash process --bgc
# Run multiple forcings
crocodash process --tides --runoff --bgc
# Run all except certain forcings
crocodash process --all --skip bgcic
crocodash process --all --skip conditions bgcic
# Skip entire processing phases
crocodash process --all --skip conditions
This flexibility lets you:
Test individual components without running everything
Re-run one forcing type if your source data changed
Submit to a batch queue and re-run from the CLI after a failure
Resume a partially-completed run
Python API#
You can also call the driver directly from Python:
from CrocoDash.extract_forcings.driver import run_workflow
run_workflow(
config_path="~/scratch/croc_input/mycase/extract_forcings/config.json",
ic=True,
bc=True,
tides=True,
)
The Processing Pipeline#
config.json + _crocodash_state.json
↓
get_dataset_piecewise (download raw OBC/IC data in time-stepped chunks)
↓
regrid_dataset_piecewise (regrid to model grid, fill missing data)
↓
merge_piecewise_dataset (concatenate chunks into final OBC files)
↓
[tides / bgc / runoff / chl modules run independently]
↓
inputdir/ocnice/
Design Philosophy#
CrocoDash delegates heavy lifting to specialist packages:
Task |
Tool |
Module |
|---|---|---|
OBC regridding |
|
|
Initial condition regridding |
|
|
IC land-fill |
|
|
Chlorophyll, fill, mapping |
Various modules |
|
Data formatting |
|
Throughout |
For more detail on OBC regridding, see the regional-mom6 documentation.
See also#
3a. Configure Forcings — the step that writes the
config.jsonthis driver consumesDatasets — the raw data sources the driver downloads from
Architecture — where
extract_forcingslives in the code and how to extend itSubmodule API Usage — exact
regional-mom6/mom6_forgefunctions called during processing