MIKE+ Rain
MIKE+ rainfall boundaries read a .dfs0 of Rainfall Intensity, mm/h,
mean-step-backward: exactly the shape of DHI's own example rain files
(Sirius_IDF_1year_rainfall.dfs0). This skill produces that file from a CSV.
Tool
mike_rain_to_dfs0 — {csv, out_dfs0, time_col?, value_col?, unit?, item_name?}
unit: 'mm/h' (intensity, default) or 'mm' (depth per step, converted with each step's own duration; the conversion is reported).
- Returns
{dfs0, item, n_steps, start, end, timestep_s, uniform_step, total_depth_mm, peak_intensity_mm_h, peak_time, conversion} after reading the file back.
Conventions
- Time column first, value column second by default; name them if the CSV differs.
- Rejects negative values, non-numeric cells, unsorted duplicates, fewer than two steps: fix the CSV, do not silently clean it.
- Report
total_depth_mm and peak_intensity_mm_h; if uniform_step is false say so (MIKE 1D accepts irregular steps, but the user should know).
- The tool never touches the model. To make a MIKE 1D model use the new rain, edit its rainfall boundary with
mike-params on a COPY. The boundary lives in table msm_BBoundary (the rainfall row has TypeNo = 1; in Sirius_RTC its MUID is Rainfall) with columns
TSConnection = dfs0 path relative to the model folder (DHI's example: Sirius_IDF_1year_rainfall.dfs0), so write the new file into the model copy folder,
TimeseriesName = the dfs0 item name (must match: pass item_name to mike_rain_to_dfs0, or set this column to Rainfall),
DataTypeName = Rainfall Intensity.
mike_get_values {table: msm_BBoundary, columns: [TypeNo, TSConnection, TimeseriesName, DataTypeName]} first, then mike_set_values on that MUID, then run and check mike_results_summary.
- The same
.dfs0 is what mike_plot_rain_flow / mike_plot_compare take as rain_dfs0, so use it for the figure of the run it drove.
Orchestration
mike_rain_to_dfs0 {csv, out_dfs0: runs/<case>/00_model/storm.dfs0, item_name: <existing TimeseriesName or 'Rainfall'>}
mike_get_values {sqlite: <copy>, table: msm_BBoundary, columns: [TypeNo, TSConnection, TimeseriesName]}
mike_set_values {sqlite: <copy>, table: msm_BBoundary, muids: [<rain row>], values: {TSConnection: storm.dfs0, TimeseriesName: ...}}
mike_run -> mike_results_summary (skip_hours) -> mike_plot_rain_flow {rain_dfs0: storm.dfs0}
mike_manifest_write {inputs: [csv, storm.dfs0], ...}
1---2name: mike-rain3description: Turn a timestamped rainfall CSV (design storm, gauge record, climate-scenario series) into a MIKE+ rainfall .dfs0 via the mike-plus MCP server, verified by read-back, ready to drive a model's rainfall boundary or to sit on top of a hydrograph figure. Use when the user brings rain as CSV or asks to run a model with a different storm. No license required (writing the file); wiring it into the model needs one.4---56# MIKE+ Rain78MIKE+ rainfall boundaries read a `.dfs0` of **Rainfall Intensity, mm/h,9mean-step-backward**: exactly the shape of DHI's own example rain files10(`Sirius_IDF_1year_rainfall.dfs0`). This skill produces that file from a CSV.1112## Tool1314- **`mike_rain_to_dfs0`** — `{csv, out_dfs0, time_col?, value_col?, unit?, item_name?}`15 - `unit`: `'mm/h'` (intensity, default) or `'mm'` (depth per step, converted with each step's own duration; the conversion is reported).16 - Returns `{dfs0, item, n_steps, start, end, timestep_s, uniform_step, total_depth_mm, peak_intensity_mm_h, peak_time, conversion}` after reading the file back.1718## Conventions1920- Time column first, value column second by default; name them if the CSV differs.21- Rejects negative values, non-numeric cells, unsorted duplicates, fewer than two steps: fix the CSV, do not silently clean it.22- Report `total_depth_mm` and `peak_intensity_mm_h`; if `uniform_step` is false say so (MIKE 1D accepts irregular steps, but the user should know).23- The tool never touches the model. To make a MIKE 1D model use the new rain, edit its rainfall boundary with `mike-params` on a COPY. The boundary lives in table **`msm_BBoundary`** (the rainfall row has `TypeNo = 1`; in Sirius_RTC its MUID is `Rainfall`) with columns24 - `TSConnection` = dfs0 path **relative to the model folder** (DHI's example: `Sirius_IDF_1year_rainfall.dfs0`), so write the new file into the model copy folder,25 - `TimeseriesName` = the dfs0 **item name** (must match: pass `item_name` to `mike_rain_to_dfs0`, or set this column to `Rainfall`),26 - `DataTypeName` = `Rainfall Intensity`.27 `mike_get_values {table: msm_BBoundary, columns: [TypeNo, TSConnection, TimeseriesName, DataTypeName]}` first, then `mike_set_values` on that MUID, then run and check `mike_results_summary`.28- The same `.dfs0` is what `mike_plot_rain_flow` / `mike_plot_compare` take as `rain_dfs0`, so use it for the figure of the run it drove.2930## Orchestration3132```33mike_rain_to_dfs0 {csv, out_dfs0: runs/<case>/00_model/storm.dfs0, item_name: <existing TimeseriesName or 'Rainfall'>}34mike_get_values {sqlite: <copy>, table: msm_BBoundary, columns: [TypeNo, TSConnection, TimeseriesName]}35mike_set_values {sqlite: <copy>, table: msm_BBoundary, muids: [<rain row>], values: {TSConnection: storm.dfs0, TimeseriesName: ...}}36mike_run -> mike_results_summary (skip_hours) -> mike_plot_rain_flow {rain_dfs0: storm.dfs0}37mike_manifest_write {inputs: [csv, storm.dfs0], ...}38```