ANUGA

Runs ANUGA 2D shallow-water flood simulations and extracts stage, discharge, and inundation outputs.

155|6|Updated Mar 31, 2026
One-click install
npx skills add https://github.com/lzwei196/KISS-Knowledge-Infrastructure-for-Scientific-Simulation --skill anuga-lzwei196
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: ANUGA
Source: https://github.com/lzwei196/KISS-Knowledge-Infrastructure-for-Scientific-Simulation/tree/main/models/ANUGA
Command: npx skills add https://github.com/lzwei196/KISS-Knowledge-Infrastructure-for-Scientific-Simulation --skill anuga-lzwei196

SYSTEM DOCUMENTATION & REQUIREMENTS

💡 This Skill requires anuga, numpy, scipy, rasterio, and includes scripts (resource) and references (resource) components.

What problem does it solve? Running the ANUGA shallow-water model correctly requires operational expertise: converting rainfall forcing to m/s rates, aligning vertical datums between DEMs and gauges, building inflow hydrographs, and diagnosing silent failures like wrong-signed discharge or unrealistic flooding. This Skill packages that expertise so an AI agent can execute, verify, and debug real ANUGA simulations without substituting approximations. ## Core Features & Use Cases - End-to-end simulation pipeline: Five tools cover forcing conversion (CMFD/MSWX/NASA POWER), HYDAT gauge extraction, inflow hydrograph construction, ANUGA execution, and SWW output parsing. - Diagnostic recovery: 25 symptom-to-remedy triplets in diagnostics/triplets.yaml map known failure modes (unit errors, datum mismatches, mesh instability) to validated fixes. - Validation against cited standards: Outputs are graded against literature-cited thresholds (CSI, NSE, KGE) and analytical benchmarks like dam-break and Carrier-Greenspan runup. - Use Case: Simulate a Fraser River flood event by driving ANUGA with observed HYDAT discharge at an upstream station, then extract and score stage at a downstream gauge 31 km away. ## Quick Start Run python preflight_check.py in this directory to verify the ANUGA environment, then ask the agent to run a dam-break benchmark or a rainfall-driven flood simulation for your location.

Frequently Asked Questions about ANUGA

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I run an ANUGA flood simulation with rainfall forcing?

Convert CMFD, MSWX, or NASA POWER precipitation to an m/s rainfall CSV with convert_forcing_to_anuga.py, then pass it to run_anuga.py with a latitude, longitude, extent, and finaltime. ANUGA applies the rainfall through its Rate_operator and writes results to an SWW file.

How do I extract discharge and inundation extent from ANUGA SWW output?

Use parse_anuga_output.py with the SWW file path. Provide a cross-section polyline for discharge via get_flow_through_cross_section, or gauge coordinates for stage time series; inundation extent is derived by thresholding depth over the mesh.

Why does my ANUGA simulation flood the entire domain unrealistically?

The rainfall rate was likely passed in mm/hr or kg/m2/s instead of m/s, causing 1000x to 3600x overflooding. Check diagnostic dt_anuga_001 and regenerate the forcing with convert_forcing_to_anuga.py, which handles the unit conversion.

Can ANUGA compare model stage against HYDAT gauge observations?

Yes, but only when the gauge uses a geodetic vertical datum, since ANUGA has no datum awareness. load_hydat_series.py writes datum metadata; stations on an assumed datum need published conversion offsets before comparison.

What are the limitations of ANUGA for flood modeling?

ANUGA solves depth-averaged shallow-water equations, so it cannot resolve vertical convection, breaking waves, or 3D turbulence. Domains are limited to roughly 1.5 UTM zones, and validation relies on analytical benchmarks rather than gauge NSE as the primary mode.

Why is my extracted gauge stage flat with zero depth in ANUGA?

The nearest mesh vertex to the gauge coordinates is likely a dry bank or bridge point that never wets. Use the --snap_to_channel_m option in parse_anuga_output.py to snap extraction to the channel low point, per diagnostic dt_anuga_024.