Drinking water chlorination efficiency: Difference between revisions

From Opasnet
Jump to navigation Jump to search
 
(34 intermediate revisions by 3 users not shown)
Line 7: Line 7:


== Answer ==
== Answer ==
{{argument|relat1=attack|id=arg2071|type=truth|content=Sapovirus missing|sign=--[[User:Päivi Meriläinen|Päivi Meriläinen]] ([[User talk:Päivi Meriläinen|talk]]) 14:14, 23 March 2020 (UTC)}}


{| {{prettytable}}
{| {{prettytable}}
Line 15: Line 17:
| 8.837981871
| 8.837981871
|----
|----
| E.coli O157:H7
| ''E.coli'' O157:H7
| 7.182699561
| 7.182699561
|----
|----
Line 44: Line 46:
The rows tell which pathogen the ct-values on that row are for.
The rows tell which pathogen the ct-values on that row are for.


The columns tell the ct-value required to decrease the amount of each pathogen in the drinking water to a certain level on the log-scale. Column 1 means pathogen concentration will drop to 10<sup>-1</sup> of the original, column 2 means the concentration will drop to 10<sup>-2 and so on.
The columns tell the ct-value required to decrease the amount of each pathogen in the drinking water to a certain level on the log-scale. Column 1 means pathogen concentration will drop to 10<sup>-1</sup> of the original, column 2 means the concentration will drop to 10<sup>-2</sup> and so on.  


<t2b index="Pathogen,Log decrease" Locations="1,2,3,4,5" unit="(mg/l)*min">
<t2b index="Pathogen,Logdecrease" Locations="0,1,2,3,4,5,6" unit="(mg/l)*min">
Campylobacter| 0.152| 0.294| 0.436| 0| 0
campylobacter|0| 0.154| 0.294| 0.436| NA| NA| NA
E.coli O157:H7| 0.17| 0.34| 0.52| 1.06| 0
E.coli O157:H7|0| 0.17| 0.34| 0.52| 1.06| 2.06| NA
Rotavirus| 0.12| 0.16| 0.2| 0.3| 0
rotavirus|0| 0.12| 0.16| 0.2| 0.3| NA| NA
Norovirus| 0.09| 0.18| 0.245| 0.314| 0
norovirus|0| 0.09| 0.18| 0.245| 0.314| NA| NA
Cryptosporidium| 0| 0| 0| 0| 0
sapovirus|0| 0.09| 0.18| 0.245| 0.314| NA| NA
Giardia| 75| 150| 216| 0| 0
cryptosporidium|0| NA| NA| NA| NA| NA| NA
giardia|0| 75| 150| 216| NA| NA| NA
</t2b>
</t2b>


Line 60: Line 63:
|----
|----
| Campylobacter
| Campylobacter
| <ref>Blaser, M. J., Smith, P. F., Wang, W.‐L. L. and Hoff, J. C. (1986). "Inactivation of Campylobacter jejuni by Chlorine and Monochloramine." Applied and Environmental Microbiology 51(2): 307‐311.</ref>; <ref>Lund, V. (1996). "Evaluation of E. coli as an indicator for the presence of Campylobacter jejuni and Yersinia enterocolitica in chlorinated and untreated oligotrophic lake water." Water Research 30(6): 1528‐ 1534.</ref>
| <ref name="blaser">Blaser, M. J., Smith, P. F., Wang, W.‐L. L. and Hoff, J. C. (1986). "Inactivation of Campylobacter jejuni by Chlorine and Monochloramine." Applied and Environmental Microbiology 51(2): 307‐311.</ref>; <ref>Lund, V. (1996). "Evaluation of ''E. coli'' as an indicator for the presence of Campylobacter jejuni and Yersinia enterocolitica in chlorinated and untreated oligotrophic lake water." Water Research 30(6): 1528‐ 1534.</ref>
|----
|----
| E.coli O157:H7
| ''E.coli'' O157:H7
| <ref>Blaser, M. J., Smith, P. F., Wang, W.‐L. L. and Hoff, J. C. (1986). "Inactivation of Campylobacter jejuni by Chlorine and Monochloramine." Applied and Environmental Microbiology 51(2): 307‐311.</ref>; <ref>Lund, V. (1996). "Evaluation of E. coli as an indicator for the presence of Campylobacter jejuni and Yersinia enterocolitica in chlorinated and untreated oligotrophic lake water." Water Research 30(6): 1528‐ 1534.</ref>
| <ref name="blaser"/>, <ref name="petterson"> S. R. Petterson & T. A. Stenström 2015. Quantification of pathogen inactivation efficacy by free chlorine disinfection of drinking water for QMRA. J Water Health (2015) 13 (3): 625-644. [https://doi.org/10.2166/wh.2015.193]
</ref>
|----
|----
| Rotavirus
| Rotavirus
| <ref>Rice, E. W., Hoff, J. C. and III, F. W. S. (1982). "Inactivation of Giardia cysts by chlorine." Applied and Environmental Microbiology 43(1): 250‐251</ref>
| <ref name="rice">Rice, E. W., Hoff, J. C. and III, F. W. S. (1982). "Inactivation of Giardia cysts by chlorine." Applied and Environmental Microbiology 43(1): 250‐251</ref>
|----
|----
| Norovirus
| Norovirus
| <ref>Keswick, B. H., Satterwhite, T. K., Johnson, P. C., DuPont, H. L., Secor, S. L., Bitsura, J. A., Gary, G. W. and Hoff, J. C. (1985). Inactivation of norwalk virus in drinking water by chlorine. Applied and Environmental  Microbiology 50(2): 261-264.</ref>
|----
| Sapovirus
| <ref>Keswick, B. H., Satterwhite, T. K., Johnson, P. C., DuPont, H. L., Secor, S. L., Bitsura, J. A., Gary, G. W. and Hoff, J. C. (1985). Inactivation of norwalk virus in drinking water by chlorine. Applied and Environmental  Microbiology 50(2): 261-264.</ref>
| <ref>Keswick, B. H., Satterwhite, T. K., Johnson, P. C., DuPont, H. L., Secor, S. L., Bitsura, J. A., Gary, G. W. and Hoff, J. C. (1985). Inactivation of norwalk virus in drinking water by chlorine. Applied and Environmental  Microbiology 50(2): 261-264.</ref>
|----
|----
Line 75: Line 82:
|----
|----
| Giardia
| Giardia
| <ref>Rice, E. W., Hoff, J. C. and III, F. W. S. (1982). "Inactivation of Giardia cysts by chlorine." Applied and Environmental Microbiology 43(1): 250‐251</ref>
| <ref name="rice"/>
|----
|----
|}
|}
Line 92: Line 99:


<rcode
<rcode
name="dose"
name="dose"
label="Initialize chlorine dose"
label="Initialize chlorine dose"
>
  #This is code "Op_en7956/dose" on page [[Drinking water chlorination efficiency]]
  library(OpasnetUtils)
 
ChlorineDose = data.frame(ChlorineDoseResult = 0.5)
 
ChlorineDose = Ovariable("ChlorineDose", data = ChlorineDose)
 
objects.store(ChlorineDose)
 
cat("Ovariable ChlorineDose saved.\n")
 
oprint(ChlorineDose)
</rcode>
 
<rcode
name="sensitivity"
label="Initialize chlorine sensitivity"
>
>
#This is code "Op_en7956/dose" on page [[Drinking water chlorination efficiency]]
#This is code "Op_en7956/sensitivity" on page [[Drinking water chlorination efficiency]]
library(OpasnetUtils)
library(OpasnetUtils)


ChlorineDose = data.frame(ChlorineDosesResult = 1.5)
ClSensitivity <- Ovariable("ClSensitivity", ddata = "Op_en7956", save=TRUE)
 
objects.store(ClSensitivity)
 
cat("Ovariable ClSensitivity saved.\n")
 
oprint(ClSensitivity)
</rcode>
 
<rcode
name="constants"
label="Initialize cstr, mrt and k"
>
 
  #This is code "Op_en7956/constants" on page [[Drinking water chlorination efficiency]]
  library(OpasnetUtils)
 
Ncstr <- 6 # the number of continuously stirred tank reactors
mrt <- 2 # mean residence time, the time water on average spends in each cstr
k <- Ovariable("k", data = data.frame(kResult = 0.13)) # the rate at which chlorine concentration decreases


ChlorineDose = Ovariable("ChlorineDose", data = ChlorineDose, save = TRUE)
objects.store(Ncstr, mrt, k)
 
cat("Constants Ncstr, mrt and ovariable k saved.\n")


oprint(ChlorineDose)
</rcode>
</rcode>


<rcode
<rcode
name="efficiency"
name="CT"
label="Initialize chlorinazion efficiency"
label="Initialize CT"
>
>
# This is code "Op_en7956/efficiency" on page [[Drinking water chlorination efficiency]]
# This is code "Op_en7956/CT" on page [[Drinking water chlorination efficiency]]
library(OpasnetUtils)
library(OpasnetUtils)
library(reshape2)
library(reshape2)


riippuvuudet = data.frame(
CT <- Ovariable(
Name = c("ChlorineDose", "CLMysteeri", "CLsensitivity", "ChlorineEfficiencyF"),
  "CT",
Ident = c("Op_fi2667/dose")
  dependencies = data.frame(
)
    Name = c("ChlorineDose", "mrt", "Ncstr", "k"),
    Ident = c("Op_en7956/dose", "Op_en7956/constants", "Op_en7956/constants", "Op_en7956/constants")),
  formula = function(...){
 
# Produces a distribution of total time water spends in the contactor
# from an exponential probability distribution with lambda = 1/mrt
# 1000 iterations
Times <- data.frame(Iter= 1:openv$N, Result = 0)
for(i in 1:(Ncstr)) {
  Times$Result <- Times$Result + rexp(n=openv$N, rate= 1/mrt)
}
 
Times <- Ovariable(name="Times", output=Times)
 
# Integral of concentration along Times:
# Int(ChlorineDose*exp(-k*Times)) = ChlorineDose*(-1/k)*exp(-k*Times)
# Definite integral from 0 to Times = ChlorineDose*(-1/k)*exp(-k*Times) - ChlorineDose(-1/k) = ChlorineDose/k (1-exp(-k*Times))
 
CT <- ChlorineDose/k * (1-exp(-1 * k * Times))
 
return(CT)


CLMysteeri <- function(ct, sens) { # jotakin mysteeristä
out <- NA
if (sum(sens) == 0) out <- 0
if (ct < sens[1] & sens[1] > 0) {out <- ct * (1 / sens[1])}
if (ct >= sens[1] & sens[1] > 0) {out <- 1 + (ct - sens[1]) * (1 / (sens[2] - sens[1]))}
if (ct >= sens[2] & sens[2] > 0) {out <- 2 + (ct - sens[2]) * (1 / (sens[3] - sens[2]))}
if (ct >= sens[3] & sens[3] > 0 & sens[4] > 0) {out <- 3 + (ct - sens[3]) * (1 / (sens[4] - sens[3]))}
if (ct >= sens[3] & sens[3] > 0 & sens[4] == 0) {out <- 3 + (ct - sens[3]) * (1 / (sens[3] - sens[2]))}
if (ct >= sens[4] & sens[4] > 0 & sens[5] > 0) {out <- 4 + (ct - sens[4]) * (1 / (sens[5] - sens[4]))}
if (ct >= sens[4] & sens[4] > 0 & sens[5] == 0) {out <- 4 + (ct - sens[4]) * (1 / (sens[4] - sens[3]))}
if (ct >= sens[5] & sens[5] > 0) {out <- 5}
return(out)
}
}


CLsensitivity <- tidy(
opbase.data("Op_fi2667"),
objname = "CLsensitivity",
)
)


CLsensitivity <- CLsensitivity <- reshape(CLsensitivity, idvar = "Pathogen", timevar = "Ct value", v.names = "CLsensitivityResult", direction = "wide")
objects.store(CT)
colnames(CLsensitivity) <- gsub("^CLsensitivityResult.", "", colnames(CLsensitivity))
 
cat("Ovariable CT saved.\n")


CLsensitivity <- Ovariable("CLsensitivity", output = CLsensitivity, marginal = c(TRUE, FALSE, FALSE, FALSE, FALSE, FALSE))
</rcode>


ChlorineEfficiencyF <- function(ChlorineDose, Ctarvot) {
Mrt <- 12
Ncstr <- 6
Ttimes <- c(0.001,0.01,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1,1.1,1.2,1.3,1.4,1.5,1.6,2,2.5,4)
Times <- Ttimes * Mrt
Times.inc <- Times - c(0,Times[1:20])
Probability <- (Times^(Ncstr - 1) * exp(-Ncstr * Times / Mrt))/(factorial(Ncstr - 1) * (Mrt / Ncstr) ^ Ncstr)
ChlorineDose  <- ChlorineDose * exp(-0.13 * Times)
ChlorineDose  <- KChlorineDose  * Times.inc
ChlorineDoseCumsum <- cumsum(ChlorineDose)
ClConcDistr <- sum(ChlorineDoseCumsum * Probability) / length(Probability)
temp <- CLMysteeri(ClConcDistr, Ctarvot)
return(temp)
}


funktio = function(...){
<rcode
temp <- merge(ChlorineDose@output, CLsensitivity@output)
name="efficiency"
for (j in 1:nrow(temp)) {
label="Initialize chlorination efficiency"
temp$Result[j] <- ChlorineEfficiencyF(
>
temp$ChlorineDoseResult[j],  
# This is code "Op_en7956/efficiency" on page [[Drinking water chlorination efficiency]]
unlist(temp[j, paste("Ct", 1:5, "Log decrease")])
library(OpasnetUtils)
)
library(reshape2)
}
 
temp$TreatmentMethod <- "Chlorination"
ChlorineEfficiency <- Ovariable("ChlorineEfficiency", dependencies = data.frame(
# By returning as ovariable marginals can be manually defined
  Name = c("CT", "ClSensitivity"),
temp <- Ovariable(output = temp, marginal = colnames(temp) %in% c("TreatmentMethod", "Pathogen", "ChlorineDoseSource"))
  Ident = c("Op_en7956/CT", "Op_en7956/sensitivity")),
  formula = function(...){
return(temp)
 
}
  ClSensitivity <- EvalOutput(ClSensitivity)
 
  # make CT into an Ovariable, if it's not already
  if(!"ovariable" %in% class(CT)) CT <- Ovariable(name="CT", output=data.frame(Result=CT))
  CT <- EvalOutput(CT)
  sensname <- paste0(ClSensitivity@name,"Result") # put "ClSensitivityResult" into sensname
  ctname <- paste0(CT@name,"Result") # put "CTResult" into ctname
 
  ova <- merge(ClSensitivity, CT) # merge to get the variables into the same table
  ova$Logdecrease <- as.numeric(as.character(ova$Logdecrease)) # make sure Logdecrease-column is numeric
 
  out <- aggregate(
    1:nrow(ova@output), #take a set of row numbers included in ova...
    by = ova@output[ova@marginal & colnames(ova@output)!="Logdecrease"], #...that has a unique combination of values in the
            # index-columns, except Logdecrease. It takes the row numbers with different values of Logdecrease, with the
            # combination of other indices unique.
      FUN = function(x) {
      tmp <- ova@output[x,] # actually takes those rows whose numbers were selected above from ova
      ord <- order(tmp$Logdecrease) # saves the order of rows ordered based on Logdecrease, smallest first.
      if(sum(tmp[[sensname]], na.rm=TRUE)==0) return(0) # if all the ct:s in this set of rows are 0, return 0
      out <- approx( # Otherwise use approx to interpolate the log-decrease for the ct value(s) from earlier
        x=tmp[[sensname]][ord],
        y=tmp$Logdecrease[ord],
        xout=tmp[[ctname]][1],
        rule=1:2
      )$y
      return(out)
    }
  )
  colnames(out)[colnames(out)=="x"] <- "Result"
  return(out)
 
  }
)


ChlorineEfficiency <- Ovariable("ChlorineEfficiency", dependencies = riippuvuudet, formula = funktio)
objects.store(ChlorineEfficiency)


objects.store(ChlorineEfficiency, ChlorineEfficiencyF, CLMysteeri, CLsensitivity)
cat("Ovariable ChlorineEfficiency saved.\n")


oprint(ChlorineEfficiency)
</rcode>
</rcode>



Latest revision as of 14:14, 23 March 2020

Question

How does chlorination affect the concentrations of pathogens in drinking water, reported in log-decrese?

Answer

⇤--arg2071: . Sapovirus missing --Päivi Meriläinen (talk) 14:14, 23 March 2020 (UTC) (type: truth; paradigms: science: attack)

Pathogen Log-dercease
Campylobacter 8.837981871
E.coli O157:H7 7.182699561
Rotavirus 11.97117474
Norovirus 13.55252482
Cryptosporidium 0
Giardia 0.095329311

Rationale

Chloriantion efficiency, or chlorine's capacity to destroy microbes, depends on many factors: the form of the chlorine, temperature, retention period, pH and concentration as well as other chemicals in the water. In some circumstances it might efficiently kill all indicator organisms, but some active viruses, protists or their cysts may remain in the water. The meter to measure the efficiency of chlorination is kloorikokema ⇤--arg5411: . Someone else has to translate this --Heta (talk) 14:31, 4 July 2019 (UTC) (type: truth; paradigms: science: attack), which is the concentration multiplied by retention period, so called CT-value. The required CT-value depends on the temperature: the lower the temperature, the higher the CT-value has to be.

[1]

Data

Pathogen sensitivity to chlorine:

The rows tell which pathogen the ct-values on that row are for.

The columns tell the ct-value required to decrease the amount of each pathogen in the drinking water to a certain level on the log-scale. Column 1 means pathogen concentration will drop to 10-1 of the original, column 2 means the concentration will drop to 10-2 and so on.

Drinking water chlorination efficiency: Difference between revisions((mg/l)*min)
ObsPathogen0123456
1campylobacter0 0.154 0.294 0.436 NA NA NA
2E.coli O157:H70 0.17 0.34 0.52 1.06 2.06 NA
3rotavirus0 0.12 0.16 0.2 0.3 NA NA
4norovirus0 0.09 0.18 0.245 0.314 NA NA
5sapovirus0 0.09 0.18 0.245 0.314 NA NA
6cryptosporidium0 NA NA NA NA NA NA
7giardia0 75 150 216 NA NA NA
Pathogen Reference
Campylobacter [2]; [3]
E.coli O157:H7 [2], [4]
Rotavirus [5]
Norovirus [6]
Sapovirus [7]
Cryptosporidium [8]
Giardia [5]

Causality


Unit

logarithmic decrease

Calculations

CT-value = Chlorine residue concentration (mg/l)* time (min)

+ Show code

+ Show code

+ Show code

+ Show code


+ Show code

See also

References

  1. Valve, M ja Isomäki, E. 2007. Klooraus - Tuttu ja turvallinen? Vesitalous 4/2007.
  2. 2.0 2.1 Blaser, M. J., Smith, P. F., Wang, W.‐L. L. and Hoff, J. C. (1986). "Inactivation of Campylobacter jejuni by Chlorine and Monochloramine." Applied and Environmental Microbiology 51(2): 307‐311.
  3. Lund, V. (1996). "Evaluation of E. coli as an indicator for the presence of Campylobacter jejuni and Yersinia enterocolitica in chlorinated and untreated oligotrophic lake water." Water Research 30(6): 1528‐ 1534.
  4. S. R. Petterson & T. A. Stenström 2015. Quantification of pathogen inactivation efficacy by free chlorine disinfection of drinking water for QMRA. J Water Health (2015) 13 (3): 625-644. [1]
  5. 5.0 5.1 Rice, E. W., Hoff, J. C. and III, F. W. S. (1982). "Inactivation of Giardia cysts by chlorine." Applied and Environmental Microbiology 43(1): 250‐251
  6. Keswick, B. H., Satterwhite, T. K., Johnson, P. C., DuPont, H. L., Secor, S. L., Bitsura, J. A., Gary, G. W. and Hoff, J. C. (1985). Inactivation of norwalk virus in drinking water by chlorine. Applied and Environmental Microbiology 50(2): 261-264.
  7. Keswick, B. H., Satterwhite, T. K., Johnson, P. C., DuPont, H. L., Secor, S. L., Bitsura, J. A., Gary, G. W. and Hoff, J. C. (1985). Inactivation of norwalk virus in drinking water by chlorine. Applied and Environmental Microbiology 50(2): 261-264.
  8. Benito Corona-Vasquez, Amy Samuelson, Jason L. Rennecker and Benito J. Mariñas (2002): Inactivation of Cryptosporidium parvum oocysts with ozone and free chlorine. Water Research 36, 4053-4063