diff --git a/.zenodo.json b/.zenodo.json index cd307a7..d39c12a 100644 --- a/.zenodo.json +++ b/.zenodo.json @@ -1,6 +1,6 @@ { "title": "kwb.raindrop: R Package for Optimisation Simulations for Rainwater Management", - "description": "

R interface and control unit for the RAINDROP hydrodynamic planning tool: long-term simulation of blue-green infrastructure (swale-trench elements) driven by real climate series, plus two cost optimisers that find the cost-minimal design per allowed overflow frequency — a deterministic bisection-based coordinate descent whose search order is derived from the construction cost rates, and an assumption-free simultaneous search (penalised Nelder-Mead, differential evolution and Halton sampling) as cross-check.

The proprietary calculation engine ("Regenwasserbewirtschaftung", © Tandler.com GmbH) is not part of this archive; it is downloaded on demand from the companion repository kwb.raindrop.binaries.

", + "description": "

R interface and control unit for the RainDrop hydrodynamic planning tool: long-term simulation of blue-green infrastructure (swale-trench elements) driven by real climate series, plus two cost optimisers that find the cost-minimal design per allowed overflow frequency — a deterministic bisection-based coordinate descent whose search order is derived from the construction cost rates, and an assumption-free simultaneous search (penalised Nelder-Mead, differential evolution and Halton sampling) as cross-check.

The proprietary calculation engine ("Regenwasserbewirtschaftung", © Tandler.com GmbH) is not part of this archive; it is downloaded on demand from the companion repository kwb.raindrop.binaries.

", "upload_type": "software", "access_right": "open", "license": "MIT", @@ -27,5 +27,5 @@ "scheme": "url" } ], - "notes": "Developed within the project RAINDROP (Rainwater Drainage Optimization, GZ C300428), funded by the Austrian Federal Ministry of Agriculture, Forestry, Regions and Water Management." + "notes": "Developed within the project RainDrop (Rainwater Drainage Optimization, GZ C300428), funded by the Austrian Federal Ministry of Agriculture, Forestry, Regions and Water Management." } diff --git a/CITATION.cff b/CITATION.cff index f906950..cbaac7c 100644 --- a/CITATION.cff +++ b/CITATION.cff @@ -4,6 +4,11 @@ type: software title: "kwb.raindrop: R Package for Optimisation Simulations for Rainwater Management" version: 0.1.0 date-released: "2026-08-07" +# Concept DOI: always resolves to the newest release. Do not replace it with a +# version DOI - Zenodo mints those only after a release has been archived, so +# the DOI of the release being tagged cannot be known when this file is +# written. Version DOIs are listed on the Zenodo record this one resolves to. +doi: "10.5281/zenodo.21839222" license: MIT repository-code: "https://github.com/KWB-R/kwb.raindrop" url: "https://kwb-r.github.io/kwb.raindrop" @@ -21,7 +26,7 @@ keywords: - infiltration swale - R package abstract: >- - R interface and control unit for the RAINDROP hydrodynamic planning + R interface and control unit for the RainDrop hydrodynamic planning tool: long-term simulation of blue-green infrastructure (swale-trench elements) driven by real climate series, plus two cost optimisers that find the cost-minimal design per allowed overflow frequency - a @@ -32,6 +37,6 @@ abstract: >- proprietary calculation engine ("Regenwasserbewirtschaftung", (c) Tandler.com GmbH) is not part of this package; it is downloaded on demand from the companion repository kwb.raindrop.binaries. - Developed within the project RAINDROP (Rainwater Drainage + Developed within the project RainDrop (Rainwater Drainage Optimization, GZ C300428), funded by the Austrian Federal Ministry of Agriculture, Forestry, Regions and Water Management. diff --git a/DESCRIPTION b/DESCRIPTION index e3ce958..ee76d1f 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -5,7 +5,7 @@ Version: 0.1.0 Authors@R: c( person("Michael", "Rustler", , "michael.rustler@kompetenz-wasser.de", role = c("aut", "cre"), comment = c(ORCID = "0000-0003-0647-7726")), - person("RAINDROP", role = "fnd"), + person("RainDrop", role = "fnd"), person("Kompetenzzentrum Wasser Berlin gGmbH (KWB)", role = "cph") ) Description: R Package for Optimisation Simulations for Rainwater diff --git a/R/compute_costs.R b/R/compute_costs.R index 6651673..cfe1015 100644 --- a/R/compute_costs.R +++ b/R/compute_costs.R @@ -2,7 +2,7 @@ #' #' Returns the default Austrian unit-cost rates used by [`compute_costs()`]. #' Rates were provided by Johannes Leimgruber (OeStaP) on 2026-03-27 for the -#' RAINDROP cost-optimisation work. +#' RainDrop cost-optimisation work. #' #' @return A named `list` of rates in EUR per m² or m³: #' `excavation_eur_per_m3`, `profiling_eur_per_m2`, diff --git a/R/find_min_feasible.R b/R/find_min_feasible.R index 0347431..a7e2671 100644 --- a/R/find_min_feasible.R +++ b/R/find_min_feasible.R @@ -3,7 +3,7 @@ #' Core building block of the swale-design optimiser: finds the smallest #' value of one design parameter for which the overflow target is met #' (`n_overflows <= x_max`), assuming quasi-monotone feasibility (larger -#' value = never more overflows; verified for the RAINDROP model in the +#' value = never more overflows; verified for the RainDrop model in the #' monotonicity analysis, #' ). #' Each evaluation halves the search interval, so diff --git a/R/get_simulation_results_all.R b/R/get_simulation_results_all.R index 1087b0a..75ecaa8 100644 --- a/R/get_simulation_results_all.R +++ b/R/get_simulation_results_all.R @@ -1,4 +1,4 @@ -#' Read Raindrop optimisation simulation results (all) from HDF5 +#' Read RainDrop optimisation simulation results (all) from HDF5 #' #' Reads per-run result files (HDF5) for both the *measure element* and the #' *connected area* results and returns a named list (one entry per simulation). diff --git a/R/get_simulation_results_optim.R b/R/get_simulation_results_optim.R index 311315e..8d2d6f4 100644 --- a/R/get_simulation_results_optim.R +++ b/R/get_simulation_results_optim.R @@ -1,4 +1,4 @@ -#' Read Raindrop optimisation simulation results from HDF5 +#' Read RainDrop optimisation simulation results from HDF5 #' #' Reads per-run result files (HDF5) for both the *measure element* and the #' *connected area* results and returns a named list (one entry per simulation). diff --git a/R/get_simulation_results_optim_parallel.R b/R/get_simulation_results_optim_parallel.R index bec32c4..50ef5a6 100644 --- a/R/get_simulation_results_optim_parallel.R +++ b/R/get_simulation_results_optim_parallel.R @@ -1,4 +1,4 @@ -#' Read Raindrop optimisation simulation results from HDF5 +#' Read RainDrop optimisation simulation results from HDF5 #' (parallel via future.apply + progress) #' #' Parallel variant of \code{get_simulation_results_optim()} using diff --git a/R/h5_ensure_dataset.R b/R/h5_ensure_dataset.R index 9623a20..fcd1eeb 100644 --- a/R/h5_ensure_dataset.R +++ b/R/h5_ensure_dataset.R @@ -1,7 +1,7 @@ #' Ensure that an HDF5 dataset exists (create if missing) #' #' Creates missing groups along the path and then creates the dataset. -#' Designed for RAINDROP input files where missing scalar parameters can +#' Designed for RainDrop input files where missing scalar parameters can #' crash the model definition reader. #' #' @param h5 Open \code{hdf5r::H5File} (mode "a" or "r+"). @@ -38,7 +38,7 @@ h5_ensure_dataset <- function(h5, path, value, dtype = NULL, dims = NULL) { infer_dims <- function(v) { if (is.data.frame(v) && ncol(v) == 2L) { - # R Nx2 -> HDF5 2xN (RAINDROP style) + # R Nx2 -> HDF5 2xN (RainDrop style) n <- nrow(v) return(c(2L, as.integer(n))) } diff --git a/R/h5_ensure_datasets_from_values.R b/R/h5_ensure_datasets_from_values.R index 4599358..64554ec 100644 --- a/R/h5_ensure_datasets_from_values.R +++ b/R/h5_ensure_datasets_from_values.R @@ -6,7 +6,7 @@ #' @param h5 Open hdf5r::H5File (mode "a" or "r+"). #' @param values Named list; names are dataset paths (leading // allowed). #' @param ts_cols Character(2). Column names for TS (default time/value). -#' @param ts_layout One of "2xN" or "Nx2". For RAINDROP typically "2xN" in HDF5. +#' @param ts_layout One of "2xN" or "Nx2". For RainDrop typically "2xN" in HDF5. #' @param ts_dtype Either an H5T object or a string ("double","integer","logical","float"). #' @param strict Stop if creation fails. #' @return Invisibly, the character vector of created dataset paths. @@ -50,7 +50,7 @@ h5_ensure_datasets_from_values <- function(h5, values, } .infer_dims <- function(v) { - # TS: 2-col df/tibble -> create as 2xN (RAINDROP) or Nx2 + # TS: 2-col df/tibble -> create as 2xN (RainDrop) or Nx2 if (is.data.frame(v) && ncol(v) == 2L) { n <- nrow(v) if (ts_layout == "2xN") return(c(2L, as.integer(n))) diff --git a/R/hdf5_read-write.R b/R/hdf5_read-write.R index 2f5c140..26cb8ad 100644 --- a/R/hdf5_read-write.R +++ b/R/hdf5_read-write.R @@ -237,7 +237,7 @@ h5_read_values <- function(h5, #' Write (updated) values back into existing HDF5 datasets (robust for your hdf5r build) #' #' - Scalars: write with required `args` (args=list() or args=1L fallback). -#' - 2-col TS (data.frame/tibble): expects Nx2 in R; writes as 2xN in HDF5 (RAINDROP style), +#' - 2-col TS (data.frame/tibble): expects Nx2 in R; writes as 2xN in HDF5 (RainDrop style), #' using explicit hyperslab args=list(1:2, 1:N) to avoid empty selections. #' - If TS length changes and dataset maxdims blocks resize, the dataset is deleted via #' parent$link_delete(name) and recreated with dims=2xN (fixed), then written. @@ -518,7 +518,7 @@ h5_write_values <- function(h5, values, #' #' Notes: #' - 2-column data.frames/tibbles are treated as Nx2 in R and mapped to 2xN in HDF5. -#' - Many RAINDROP files store time series as HDF5 dims 2xN (appearing as Nx2 in R). +#' - Many RainDrop files store time series as HDF5 dims 2xN (appearing as Nx2 in R). #' #' @param h5 An open \code{hdf5r::H5File}. #' @param values Named list of values to write (names are HDF5 paths). diff --git a/R/make_swale_runner.R b/R/make_swale_runner.R index abe4e6a..056f84d 100644 --- a/R/make_swale_runner.R +++ b/R/make_swale_runner.R @@ -15,7 +15,7 @@ psi_s_mm <- function(kf_mmh) { #' #' Factors the `run_one()` function that was duplicated across the three #' workflow vignettes (Eisenstadt 2005, Wien, Bad Aussee) into one -#' package-level closure factory. The returned function runs the RAINDROP +#' package-level closure factory. The returned function runs the RainDrop #' engine for one parameter set and returns the thinned one-row #' optimisation result (overflow events + water balance), augmented with #' the input parameters and the overflow volume in m3. diff --git a/R/read_raindrop_errors.R b/R/read_raindrop_errors.R index 2388660..0ab3da9 100644 --- a/R/read_raindrop_errors.R +++ b/R/read_raindrop_errors.R @@ -1,6 +1,6 @@ -#' Read RAINDROP error logs into a nested tibble +#' Read RainDrop error logs into a nested tibble #' -#' Reads the RAINDROP error protocol HDF5 (typically \code{Fehlerprotokoll.h5}) +#' Reads the RainDrop error protocol HDF5 (typically \code{Fehlerprotokoll.h5}) #' for a set of simulation runs and returns a tibble with one row per run and a #' nested tibble column containing all errors found in the file. #' diff --git a/_pkgdown.yml b/_pkgdown.yml index 016636d..9da8964 100644 --- a/_pkgdown.yml +++ b/_pkgdown.yml @@ -2,10 +2,10 @@ url: https://kwb-r.github.io/kwb.raindrop authors: Michael Rustler: href: https://www.kompetenz-wasser.de/en/ueber-uns/team/michael-rustler - RAINDROP: + RainDrop: href: https://www.kompetenz-wasser.de/en/forschung/projekte/raindrop html: Project RAINDROP + alt='Project RainDrop' width='72' /> Kompetenzzentrum Wasser Berlin gGmbH (KWB): href: http://www.kompetenz-wasser.de html: