aboutsummaryrefslogtreecommitdiff
path: root/tests/testthat/test_exposit.R
blob: 44337bdafb790f4445144b1a1ec9a27abf99a158 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
library(pfm)
library(units)
library(dplyr)

context("Exposit calculations")
# Expected results are from the Exposit 3.02, downloaded 2019-02-15

test_that("Runoff PECsw are as in Exposit 3.02", {
  # 100 g/ha, Koc = 1000 L/kg, DT50 = 1000 days
  res_exposit_1 <- data.frame(
    runoff = c(183.62, 110.17, 73.45, 36.72),
    erosion = c(19.96, 11.98, 2.99, 1.00),
    PEC_dissolved = c(0.71, 0.61, 0.52, 0.37),
    PEC_total = c(0.78, 0.68, 0.55, 0.38)) |> 
    mutate(across(c(runoff, erosion), ~ set_units(., "mg"))) |> 
    mutate(across(starts_with("PEC_"), ~ set_units(., "\u00B5g/L")))

  res_1 <- PEC_sw_exposit_runoff(100, Koc = 1000, DT50 = 1000)
  res_pfm_1 <- data.frame(
    runoff = round(set_units(res_1$runoff[["dissolved"]], "mg"), 2),
    erosion = round(set_units(res_1$runoff[["bound"]], "mg"), 2),
    PEC_dissolved = round(res_1$PEC_sw_runoff, 2)["dissolved"],
    PEC_total = round(res_1$PEC_sw_runoff["dissolved"] + res_1$PEC_sw_runoff["bound"], 2))
  expect_equivalent(res_exposit_1, res_pfm_1)

  # 10 g/ha, Koc = 300000 L/kg, DT50 = 10 days
  res_exposit_2 <- data.frame(
    runoff = c(0.08, 0.05, 0.03, 0.02),
    erosion = c(36.63, 21.98, 5.49, 1.83),
    PEC_dissolved = c(0, 0, 0, 0),
    PEC_total = c(0.14, 0.12, 0.04, 0.02)) |> 
    mutate(across(c(runoff, erosion), ~ set_units(., "mg"))) |> 
    mutate(across(starts_with("PEC_"), ~ set_units(., "\u00B5g/L")))

  res_2 <- PEC_sw_exposit_runoff(10, Koc = 300000, DT50 = 10)
  res_pfm_2 <- data.frame(
    runoff = round(set_units(res_2$runoff[["dissolved"]], "mg"), 2),
    erosion = round(set_units(res_2$runoff[["bound"]], "mg"), 2),
    PEC_dissolved = round(res_2$PEC_sw_runoff, 2)["dissolved"],
    PEC_total = round(res_2$PEC_sw_runoff["dissolved"] + res_2$PEC_sw_runoff["bound"], 2))

  expect_equivalent(res_exposit_2, res_pfm_2)

  # 200 g/ha, Koc = 30 L/kg, DT50 = 100 days
  res_exposit_3 <- data.frame(
    runoff = c(295.78, 177.47, 118.31, 59.16),
    erosion = rep(0.00, 4),
    PEC_dissolved = c(1.14, 0.99, 0.85, 0.59),
    PEC_total = c(1.14, 0.99, 0.85, 0.59)) |> 
    mutate(across(c(runoff, erosion), ~ set_units(., "mg"))) |> 
    mutate(across(starts_with("PEC_"), ~ set_units(., "\u00B5g/L")))

  res_3 <- PEC_sw_exposit_runoff(200, Koc = 30, DT50 = 100)
  res_pfm_3 <- data.frame(
    runoff = round(set_units(res_3$runoff[["dissolved"]], "mg"), 2),
    erosion = round(set_units(res_3$runoff[["bound"]], "mg"), 2),
    PEC_dissolved = round(res_3$PEC_sw_runoff, 2)["dissolved"],
    PEC_total = round(res_3$PEC_sw_runoff["dissolved"] + res_3$PEC_sw_runoff["bound"], 2))

  expect_equivalent(res_exposit_3, res_pfm_3)
})

test_that("Drainage PECsw are as in Exposit 3.02", {
  # 100 g/ha, Koc = 1000 L/kg, DT50 = 1000 days
  res_exposit_1 <- c(spring = 0.02, autumn = 0.05)

  res_1 <- PEC_sw_exposit_drainage(100, Koc = 1000, DT50 = 1000)
  res_pfm_1 <- round(res_1$PEC_sw_drainage, 2)
  expect_equivalent(res_exposit_1, res_pfm_1)

  # 10 g/ha, Koc = 300000 L/kg, DT50 = 10 days
  res_exposit_2 <- c(spring = 0.00, autumn = 0.00)

  res_2 <- PEC_sw_exposit_drainage(10, Koc = 300000, DT50 = 10)
  res_pfm_2 <- round(res_2$PEC_sw_drainage, 2)
  expect_equivalent(res_exposit_2, res_pfm_2)

  # 200 g/ha, Koc = 30 L/kg, DT50 = 100 days
  res_exposit_3 <- c(spring = 0.61, autumn = 1.88)

  res_3 <- PEC_sw_exposit_drainage(200, Koc = 30, DT50 = 100)
  res_pfm_3 <- round(res_3$PEC_sw_drainage, 2)
  expect_equivalent(res_exposit_3, res_pfm_3)

  # 1000 g/ha, Koc = 545 L/kg, group = 1, DT50 = 20 days, 25% interception
  res_exposit_4 <- c(spring = 0.11, autumn = 0.32)

  res_4 <- PEC_sw_exposit_drainage(1000, interception = 0.25, Koc = 545, DT50 =
                                   20, mobility = "low")
  res_pfm_4 <- round(res_4$PEC_sw_drainage, 2)
  expect_equivalent(res_exposit_4, res_pfm_4)
})

Contact - Imprint