Skip to content

Files and folders

wrfkit separates things you edit from things programs generate.

The short version

flake.nix              reproducible project software environment
~/.config/wrfkit/
  bootstrap.conf       machine/site policy
cases/                 tracked scientific case configuration
.wrfkit/work/          generated working files and model products
.wrfkit/logs/          run-by-run provenance and archived native logs
.wrfkit/data/          reusable downloaded input data (default)
.wrfkit/install/       built WRF/WPS programs

These layers have different jobs. See How wrfkit works for the design model.

A case

cases/my-case/
├── case.toml
├── namelist.wps
├── namelist.input
└── README.md

case.toml is the wrfkit-facing case configuration. The two native namelists remain the exact WPS/WRF configuration files. Whether wrfkit may modify TOML-owned namelist values is controlled by namelist.managed.

A workspace

.wrfkit/work/my-case/
├── namelist.wps -> cases/my-case/namelist.wps
├── namelist.input -> cases/my-case/namelist.input
├── geo_em.*
├── FILE:*
├── met_em.*
├── wrfinput_d01
├── wrfbdy_d01
├── wrfout_d01_*
├── rsl.out.*
└── rsl.error.*

The exact set changes as the workflow progresses.

Run logs

.wrfkit/logs/my-case/
└── YYYYMMDD_HHMMSS_wrf/
    ├── command.txt
    ├── run.env
    ├── run.started
    └── native-logs.tar

The native WPS/WRF log files remain in the workspace and a run-specific snapshot is stored in native-logs.tar.

Reusable data

Examples:

.wrfkit/data/geog/
.wrfkit/data/gfs/

These are separate from the tracked case so multiple runs can reuse downloaded input data.

Sapelo2 and /lscratch

The Sapelo2 profile currently uses node-local /lscratch/$USER/.nix for the rootless Nix store.

Although the profile also declares a scratch_root, current WRF/WPS execution workspaces still live under:

<repository>/.wrfkit/work/<case>

Do not assume scientific outputs are automatically staged to /lscratch.

Reuse downloaded data across projects

The default data location is project-local:

<repository>/.wrfkit/data/

For large or repeatedly reused inputs, a machine can instead define:

data_root=/path/to/shared/wrfkit-data

in ~/.config/wrfkit/bootstrap.conf. Static geography and GFS downloads then use that shared root, while case workspaces, logs, builds, and model output stay with the repository.

This split is intentional: geography and forcing can be reusable inputs, while geo_em.*, met_em.*, wrfinput*, and wrfout* depend on a specific case.

External geography

A case may also reference geography that wrfkit does not manage:

[geography]
dataset = "external"
path = "/work/my-lab/shared/WPS_GEOG"
resolution = "default"

Absolute paths are used as written, so they may point to a different filesystem. Relative paths are resolved under:

<data_root>/geog/<path>

The case workspace still uses the stable geog link expected by namelist.wps; wrfkit points that link at the resolved external directory.