Skip to content
Merged

Dev #14

Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
41 commits
Select commit Hold shift + click to select a range
ac69f9b
Wien/BadAussee: ET0 mm/d->mm/h fix + per-run thinning to cut RAM
claude Jun 3, 2026
5ddd90e
Eisenstadt 2005 workflows: per-run thinning to cut RAM
claude Jun 3, 2026
971dcdd
Add results landing page vignettes/index.Rmd (excluded from R CMD check)
claude Jun 3, 2026
5302a4d
Tolerate unreadable result HDF5 in get_simulation_results_optim()
claude Jun 3, 2026
a8b4e0d
Sync get_simulation_results_optim.Rd with new lean argument
claude Jun 3, 2026
f08073e
Only use LAI 3.9 for mulde-rigole (Wien/BadAussee)
mrustl Jul 2, 2026
c61fb8c
Add cost-vs-overflow-volume plot and pin Eisenstadt LAI to 3.9
claude Jul 7, 2026
7166211
Update docu + delete unneeded vignette
mrustl Jul 7, 2026
6c45751
Add cost-overflow boxplots, enrich tooltips, fix Eisenstadt costs
mrustl Jul 7, 2026
69872f8
Show valid-scenario share in cost-plot titles
mrustl Jul 7, 2026
adffa3c
Merge pull request #15 from KWB-R/claude/eisenstadt-lai-and-cost-over…
mrustl Jul 8, 2026
264161f
Various improvements
mrustl Jul 9, 2026
e3df668
Improve and complete "brute-force" results
mrustl Jul 9, 2026
c9b4984
Update date on generation
mrustl Jul 9, 2026
fb1a143
Merge pull request #16 from KWB-R/storage-types
mrustl Jul 10, 2026
a1755f5
Add monotoncity_analysis reports
mrustl Jul 10, 2026
b76ab38
First optimsation approach
mrustl Jul 10, 2026
1ae3085
Final tweaks
mrustl Aug 4, 2026
7423796
Add simultaneous all-parameter optimiser as alternative to bisection
claude Aug 5, 2026
a51dc38
Split vignettes and add alternative search methods for comparison
claude Aug 5, 2026
99dd686
Remove accidentally committed testthat run artifact
claude Aug 5, 2026
a87d2da
Fix defects found by adversarial review of the simultaneous optimiser
claude Aug 5, 2026
a9a8fcc
make_swale_runner(): delete scenario files after reading the result
claude Aug 5, 2026
8231342
Simultaneous vignette: live progress, honest runtime, quick-test switch
claude Aug 5, 2026
d079fb3
make_swale_runner(): one-time site master instead of full HDF5 round …
claude Aug 5, 2026
a9a0b21
Lattice polish: boundary-slide and floor-probe candidates
claude Aug 5, 2026
148aadc
Document the cost hierarchy hard-coded in the bisection search order
claude Aug 5, 2026
09bd3a7
Derive the bisection search order from cost_rates (specific-cost proxy)
claude Aug 5, 2026
7572a51
Document the area_tol precision lever
claude Aug 6, 2026
ed9c438
Prepare release 0.1.0 for Zenodo archiving
claude Aug 7, 2026
dba44fe
NEWS: flag the cleanup=TRUE default; tests: expect_equal for floats
claude Aug 7, 2026
2088054
make_swale_runner(): guard curve reads in prepare_master()
claude Aug 7, 2026
6e8625d
Bumped to roxygen2 8.1.0; use onnly Eisenstadt
mrustl Aug 7, 2026
6efe9fc
Merge pull request #18 from KWB-R/claude/simultane-parameteroptimieru…
mrustl Aug 7, 2026
6df5eba
Merge pull request #17 from KWB-R/optimisation
mrustl Aug 7, 2026
ae01c8f
Add project logo to documentation website
mrustl Aug 7, 2026
3c10da1
Merge branch 'dev' of https://github.com/KWB-R/kwb.raindrop into dev
mrustl Aug 7, 2026
bc627db
Remove deploy-only articles from pkgdown site, link results externally
claude Aug 7, 2026
7111313
Merge pull request #19 from KWB-R/claude/vignette-links-dateipfade-x0…
mrustl Aug 7, 2026
909a306
Use English labels for the external-results navbar menu
claude Aug 7, 2026
cd9702b
Merge pull request #20 from KWB-R/claude/vignette-links-dateipfade-x0…
mrustl Aug 7, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions .Rbuildignore
Original file line number Diff line number Diff line change
Expand Up @@ -8,3 +8,9 @@
^codecov\.yml$
^index\.md$
^README\.md$
^vignettes/monotonicity_analysis$
^vignettes/optimiser_vs_bruteforce$
^\.positai$
^\.claude$
^CITATION\.cff$
^\.zenodo\.json$
2 changes: 1 addition & 1 deletion .github/workflows/claude.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -35,4 +35,4 @@ jobs:
uses: anthropics/claude-code-action@v1
with:
claude_code_oauth_token: ${{ secrets.CLAUDE_CODE_OAUTH_TOKEN }}
claude_args: '--model claude-opus-4-7'
claude_args: '--model claude-opus-4-8'
20 changes: 20 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -4,3 +4,23 @@
.Ruserdata
docs
inst/doc
.positai

# Von den Vignetten erzeugte Ergebnisdateien (simulation_results_*).
# Reproduzierbar durch erneutes Rendern -> nicht einchecken. HTML- und
# R-Dateien unter vignettes/ ignoriert bereits vignettes/.gitignore
# (*.html, *.R).
vignettes/*.csv
vignettes/*.pdf
vignettes/figure/
Rplots.pdf

# Deploy-Ordner der Monotonie-Analyse: komplett unversioniert. Achtung:
# Das betrifft auch den handgeschriebenen Ergebnisbericht index.html
# (liegt lokal, als claude.ai-Artefakt und deployt auf dem Server).
vignettes/monotonicity_analysis/

# Deploy-Ordner der Vergleichs-Praesentation Optimierer vs. Brute-Force
# (handgeschriebenes index.html, liegt auch als claude.ai-Artefakt vor)
vignettes/optimiser_vs_bruteforce/
tests/testthat/testthat-problems.rds
31 changes: 31 additions & 0 deletions .zenodo.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
{
"title": "kwb.raindrop: R Package for Optimisation Simulations for Rainwater Management",
"description": "<p>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 &mdash; 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.</p><p>The proprietary calculation engine (&quot;Regenwasserbewirtschaftung&quot;, &copy; Tandler.com GmbH) is <em>not</em> part of this archive; it is downloaded on demand from the companion repository <a href=\"https://github.com/KWB-R/kwb.raindrop.binaries\">kwb.raindrop.binaries</a>.</p>",
"upload_type": "software",
"access_right": "open",
"license": "MIT",
"creators": [
{
"name": "Rustler, Michael",
"orcid": "0000-0003-0647-7726",
"affiliation": "Kompetenzzentrum Wasser Berlin gGmbH (KWB)"
}
],
"keywords": [
"blue-green infrastructure",
"sponge city",
"stormwater management",
"long-term simulation",
"cost optimisation",
"infiltration swale",
"R package"
],
"related_identifiers": [
{
"relation": "isSupplementTo",
"identifier": "https://github.com/KWB-R/kwb.raindrop",
"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."
}
37 changes: 37 additions & 0 deletions CITATION.cff
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
cff-version: 1.2.0
message: "If you use this software, please cite it using the metadata below."
type: software
title: "kwb.raindrop: R Package for Optimisation Simulations for Rainwater Management"
version: 0.1.0
date-released: "2026-08-07"
license: MIT
repository-code: "https://github.com/KWB-R/kwb.raindrop"
url: "https://kwb-r.github.io/kwb.raindrop"
authors:
- family-names: Rustler
given-names: Michael
orcid: "https://orcid.org/0000-0003-0647-7726"
affiliation: "Kompetenzzentrum Wasser Berlin gGmbH (KWB)"
keywords:
- blue-green infrastructure
- sponge city
- stormwater management
- long-term simulation
- cost optimisation
- infiltration swale
- R package
abstract: >-
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",
(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
Optimization, GZ C300428), funded by the Austrian Federal Ministry
of Agriculture, Forestry, Regions and Water Management.
8 changes: 5 additions & 3 deletions DESCRIPTION
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
Package: kwb.raindrop
Title: R Package for Optimisation Simulations for Rainwater Management
Simulations Performed with Calculation Engine Provided by Tandler
Version: 0.0.0.9000
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")),
Expand Down Expand Up @@ -41,12 +41,14 @@ Suggests:
plotly,
readr,
rmarkdown,
testthat (>= 3.0.0),
writexl
VignetteBuilder:
VignetteBuilder:
knitr
Config/testthat/edition: 3
Remotes:
github::kwb-r/kwb.event,
github::kwb-r/kwb.utils
Encoding: UTF-8
Roxygen: list(markdown = TRUE)
RoxygenNote: 7.3.2
Config/roxygen2/version: 8.1.0
183 changes: 115 additions & 68 deletions NAMESPACE
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,14 @@
export("%>%")
export(add_overflow_events_and_waterbalance)
export(compute_costs)
export(cost_rates_caption)
export(default_canonical_wb_variables)
export(default_cost_rates)
export(default_param_labels)
export(default_storage_spec)
export(default_storage_types)
export(download_engine)
export(find_min_feasible)
export(find_single_param_variations)
export(get_simulation_results_all)
export(get_simulation_results_optim)
Expand All @@ -16,91 +21,133 @@ export(h5_read_values)
export(h5_validate_write)
export(h5_write_values)
export(list_h5_datasets)
export(make_swale_runner)
export(optimise_swale_design)
export(optimise_swale_design_simultaneous)
export(plot_cost_overflow_boxplot)
export(plot_cost_vs_evaporation)
export(plot_cost_vs_overflow_volume)
export(plot_hpond_vs_ref)
export(plot_main_effects)
export(plot_valid_design_space)
export(plot_wb_tradeoff_overflows)
export(plotly_add_caption)
export(plotly_split_legend)
export(read_hdf5_connections)
export(read_hdf5_scalars)
export(read_hdf5_timeseries)
export(read_raindrop_errors)
export(read_site_timeseries)
export(run_model)
export(run_scenarios)
importFrom(dplyr,"%>%")
importFrom(dplyr,across)
importFrom(dplyr,all_of)
importFrom(dplyr,arrange)
importFrom(dplyr,bind_cols)
importFrom(dplyr,bind_rows)
importFrom(dplyr,case_when)
importFrom(dplyr,everything)
importFrom(dplyr,filter)
importFrom(dplyr,group_by)
importFrom(dplyr,if_else)
importFrom(dplyr,left_join)
importFrom(dplyr,mutate)
importFrom(dplyr,n)
importFrom(dplyr,n_distinct)
importFrom(dplyr,pull)
importFrom(dplyr,relocate)
importFrom(dplyr,select)
importFrom(dplyr,summarise)
importFrom(dplyr,transmute)
importFrom(dplyr,ungroup)
export(sickerbox_level_presets)
export(stack_levels)
importFrom(dplyr,
"%>%",
across,
all_of,
arrange,
bind_cols,
bind_rows,
case_when,
coalesce,
desc,
everything,
filter,
group_by,
if_else,
left_join,
mutate,
n,
n_distinct,
pull,
relocate,
select,
slice,
summarise,
transmute,
ungroup
)
importFrom(forcats,fct_reorder)
importFrom(fs,dir_create)
importFrom(fs,file_copy)
importFrom(fs,file_exists)
importFrom(fs,path_abs)
importFrom(future,multisession)
importFrom(future,plan)
importFrom(future,sequential)
importFrom(fs,
dir_create,
file_copy,
file_exists,
path_abs
)
importFrom(future,
multisession,
plan,
sequential
)
importFrom(future.apply,future_lapply)
importFrom(ggplot2,aes)
importFrom(ggplot2,coord_cartesian)
importFrom(ggplot2,element_text)
importFrom(ggplot2,facet_wrap)
importFrom(ggplot2,geom_boxplot)
importFrom(ggplot2,geom_jitter)
importFrom(ggplot2,geom_point)
importFrom(ggplot2,geom_violin)
importFrom(ggplot2,ggplot)
importFrom(ggplot2,guide_legend)
importFrom(ggplot2,guides)
importFrom(ggplot2,labs)
importFrom(ggplot2,position_identity)
importFrom(ggplot2,position_jitter)
importFrom(ggplot2,scale_alpha_identity)
importFrom(ggplot2,scale_color_manual)
importFrom(ggplot2,scale_colour_manual)
importFrom(ggplot2,scale_x_continuous)
importFrom(ggplot2,scale_x_discrete)
importFrom(ggplot2,scale_y_continuous)
importFrom(ggplot2,scale_y_discrete)
importFrom(ggplot2,theme)
importFrom(ggplot2,theme_bw)
importFrom(ggplot2,theme_minimal)
importFrom(ggplot2,
aes,
coord_cartesian,
element_text,
facet_grid,
facet_wrap,
geom_boxplot,
geom_jitter,
geom_line,
geom_point,
geom_text,
geom_violin,
ggplot,
guide_legend,
guides,
labs,
position_identity,
position_jitter,
position_nudge,
scale_alpha_identity,
scale_color_manual,
scale_colour_manual,
scale_fill_manual,
scale_shape_manual,
scale_size,
scale_x_continuous,
scale_x_discrete,
scale_y_continuous,
scale_y_discrete,
theme,
theme_bw,
vars
)
importFrom(grDevices,colorRampPalette)
importFrom(hdf5r,H5File)
importFrom(kwb.event,hsEvents)
importFrom(kwb.utils,catAndRun)
importFrom(kwb.utils,resolve)
importFrom(kwb.utils,
catAndRun,
resolve
)
importFrom(lubridate,as_datetime)
importFrom(magrittr,"%>%")
importFrom(parallel,detectCores)
importFrom(progressr,handler_cli)
importFrom(progressr,handler_rstudio)
importFrom(progressr,handler_txtprogressbar)
importFrom(progressr,handlers)
importFrom(progressr,progressor)
importFrom(progressr,with_progress)
importFrom(purrr,map_chr)
importFrom(purrr,map_dfr)
importFrom(progressr,
handler_cli,
handler_rstudio,
handler_txtprogressbar,
handlers,
progressor,
with_progress
)
importFrom(purrr,
map_chr,
map_dfr
)
importFrom(rlang,.data)
importFrom(stats,median)
importFrom(stats,setNames)
importFrom(stats,
median,
setNames
)
importFrom(stringr,str_c)
importFrom(tibble,as_tibble)
importFrom(tibble,tibble)
importFrom(tidyr,pivot_longer)
importFrom(tidyr,pivot_wider)
importFrom(tibble,
as_tibble,
tibble
)
importFrom(tidyr,
pivot_longer,
pivot_wider
)
importFrom(utils,modifyList)
Loading
Loading