Command Line Interface#
CrocoDash ships a crocodash command (installed automatically with pip install -e .) that lets you run the full case setup workflow from a YAML config file and inspect or share existing cases — no Python scripting required.
Quick reference#
crocodash create --config mycase.yaml [--override]
crocodash dump --caseroot /path/to/case
crocodash bundle --caseroot /path/to/case --output-dir /path/to/bundle_dir ...
crocodash fork --bundle /path/to/bundle --caseroot ... --inputdir ... --cesmroot ... --machine ... --project ...
crocodash duplicate --source /path/to/case --case /path/to/new_case --inputdir /path/to/new_inputdir
crocodash create#
Creates a new CrocoDash case end-to-end from a YAML config file. Equivalent to calling recipe.create_case_from_yaml().
crocodash create --config mycase.yaml
crocodash create --config mycase.yaml --override # overwrite existing caseroot/inputdir
YAML config schema#
# --- Horizontal grid ---
grid:
lenx: 10.0 # domain width in degrees
leny: 10.0 # domain height in degrees
xstart: -60.0 # western edge longitude
ystart: 30.0 # southern edge latitude
resolution: 1.0 # degrees per cell (or use nx/ny instead)
name: "mygrid"
# --- Bathymetry ---
topo:
min_depth: 10.0 # columns shallower than this are masked
source:
type: "flat" # flat | dataset | from_file
depth: 1000.0 # for type: flat — constant depth in metres
# type: dataset — interpolate from a real bathymetry file (e.g. GEBCO)
# bathymetry_path: "/path/to/gebco.nc"
# longitude_coordinate_name: "lon"
# latitude_coordinate_name: "lat"
# vertical_coordinate_name: "elevation"
# is_input_positive_below_msl: false
# fill_channels: false
# type: from_file — reuse an existing topog.nc
# topo_file_path: "/path/to/ocean_topog.nc"
# --- Vertical grid ---
vgrid:
type: "uniform" # uniform | hyperbolic | from_file
nk: 10 # number of layers
# depth omitted → uses topo.max_depth automatically
name: "myvgrid"
# type: hyperbolic — surface-intensified levels
# nk: 75
# depth: 5000.0
# ratio: 20.0
# type: from_file — reuse an existing vgrid.nc
# filename: "/path/to/ocean_vgrid.nc"
# --- CESM case ---
case:
cesmroot: "/path/to/CROCESM"
caseroot: "/path/to/cases/mycase"
inputdir: "/path/to/croc_input/mycase"
compset: "CR_JRA" # alias or full long name
machine: "derecho"
project: "NCGD0011"
atm_grid_name: "TL319" # optional, default TL319
# --- Forcings (required) ---
forcings:
date_range: ["2020-01-01 00:00:00", "2020-02-01 00:00:00"]
boundaries: ["south", "east", "west"]
product_name: "GLORYS"
function_name: "get_glorys_data_from_rda"
# Any extra kwargs are forwarded directly to configure_forcings:
# tidal_constituents: ["M2", "S2"]
# tpxo_elevation_filepath: "/path/to/TPXO_elevation.nc"
# tpxo_velocity_filepath: "/path/to/TPXO_velocity.nc"
After create completes the caseroot contains a crocodash_state.json recording all construction parameters, and inputdir/extract_forcings/config.json recording the forcing setup. These files are the source of truth for dump, bundle, and fork.
crocodash dump#
Prints a YAML representation of an existing case to stdout. The output can be saved, edited, and passed back to create — making dump the exact inverse of create.
# View the config for an existing case
crocodash dump --caseroot ~/croc_cases/mycase
# Save it to a file and edit before re-creating
crocodash dump --caseroot ~/croc_cases/mycase > mycase_copy.yaml
# ... edit paths, dates, machine, etc. ...
crocodash create --config mycase_copy.yaml --override
The dumped YAML uses supergrid_path/from_file references pointing at the existing grid/topo/vgrid files. To create a fully independent copy, either update those paths or re-generate the grid from parameters.
crocodash bundle, fork, duplicate#
For sharing cases with others, see Shareable Configuration.