Safety is not the only thing that decides a reuse scheme – someone
has to pay for it. Alongside the health assessment, ambre
estimates what a scenario costs: the up-front
investment and the yearly bill of the barriers it puts in place. This
vignette walks through that costing. It pairs naturally with the risk
side in
vignette("b-initial-vs-new-scenario", package = "ambre") –
the whole point being to weigh what each strategy buys against
what it costs.
run_economic_analysis() takes your scenario plus three
financial parameters and boolean to indicate to calculate cost for
initial situation supplementary process:
membership_fee – annual membership fee
to ASA (Association Syndicale Autorisée).price_per_m3 – a volumetric charge on
the water actually used (€/m3), applied to the scenario’s
computed irrigation need.grant – the share of the investment
covered by a subsidy, as a fraction between 0 and 1. A
grant of 0.5 means public money pays half the capital cost,
so users finance the remaining (1 - grant).Before any cost, run_economic_analysis() calls
irrigation_need_calculation() to work out how much water
each row needs (from its crop and area). It then splits the bill along
two axes:
(1 - grant) x area.The per-barrier unit prices come from
config_ambre$economic$cost, each with a unit
string (€/m3, €/ha, €/ml of
perimeter, €/p per person…):
config_ambre$economic$cost[, c("TreatmentName", "CostType", "value", "unit")] |>
head(8)
#> # A tibble: 8 × 4
#> TreatmentName CostType value unit
#> <chr> <chr> <dbl> <chr>
#> 1 Q.1 - Activated Sludge capex NA €/m3
#> 2 Q.1 - Activated Sludge opex NA €/m3/y
#> 3 Q.2 - Maturation Pond capex 3.5 €/m3
#> 4 Q.2 - Maturation Pond opex 0.07 €/m3/y
#> 5 Q.3 - UV Reactor capex 1.8 €/m3
#> 6 Q.3 - UV Reactor opex 0.21 €/m3/y
#> 7 Q.4 - Sand Filter and UV capex 2.8 €/m3
#> 8 Q.4 - Sand Filter and UV opex 0.28 €/m3/yUse a richer example than the two-row starter – the learning case has six rows:
plots <- run_economic_analysis(
scenario,
membership_fee = 200, # €/ha/year
price_per_m3 = 0.1, # €/m3
grant = 0.5, # half the capital cost is subsidised,
initialSituation = FALSE # calcul the cost of Supplementary process
)It returns two ggplots and the allocation key table.
Annual cost compares the recurring yearly bill of the
situation considered (initial situation or new scenario):
Capex compares their up-front investment:
This graph is display only if initialSituation = FALSE, as the initial situation corresponds to the current situation and therefore does not require any investment.
This allocation key is calculated by default in function
collective_treatment_cost, but it can be customised by the
user using parameter allocation_key, which is set to
NULL by default. This parameter accepts a vector of
percentage values of the same size as the number of simulated crops.
crop <- scenario$CropName
allocation_custom <- data.frame(CropName = crop,
allocation = c(0.5, 0.5))
run_economic_analysis(
scenario,
membership_fee = 200,
price_per_m3 = 0.1,
grant = 0,
initialSituation = FALSE,
allocation_key = allocation_custom # No subvention, collective treatment price 50% for each crop
)
#> $annual#>
#> $total_investement
#>
#> $allocation_key
#> grant CropName allocation
#> 1 0 Tomato 0.5
#> 2 0 Corn seed 0.5
The run_ function returns only plots. To get the figures
behind them, call the costing functions yourself. They expect the
scenario to carry its irrigation need first, so run
irrigation_need_calculation() before them:
scenario_need <- irrigation_need_calculation(scenario)
water_price <- water_price(scenario = scenario_need,
price_per_m3 = 0.01,
membership_fee = 200)
supplementary_cost <- process_cost_calculation(scenario = scenario_need,
membership_fee = 200,
charge = 0.1,
initialSituation = FALSE)Each returns the scenario augmented with cost columns; the added columns are the ones to inspect:
The prices are not hard-coded in the functions – they live in a CSV.
To cost a scheme for your own territory, edit
data-raw/ambre_barriere_cout.csv (keeping the
unit convention), then rebuild the bundled dataset by
sourcing data-raw/config_ambre.R. The next
run_economic_analysis() will use your numbers. The database
and this rebuild step are described in
vignette("h-config-ambre", package = "ambre").