An error occurred while loading the file. Please try again.
-
Forquet Nicolas authoreddabc6d90
library(caTools)
read.solute.out <- function(filename){
# lecture du fichier ligne par ligne
conn <- file(filename,open="r")
linn = readLines(conn)
close(conn)
# fonction permettant de régler le problème de la délimitation entre colonnes (des fois un espace, des fois deux ou trois ...)
dummy.white.space = function(char.line){
temp = unlist(strsplit(char.line," ",fixed = TRUE))
test.temp = (temp =="")
result.vector = temp[!test.temp]
return(result.vector)
}
start.line <- 6 # première ligne avec des données
end.line <- length(linn)-1 # le fichier finissant par un 'end', la dernière ligne de valeurs se situe juste à la ligne au-dessus.
nb.line <- end.line-(start.line-1) # nombre total de ligne
boundary.data <- data.frame(time = rep(0,nb.line), cum.seep.flux = rep(0,nb.line), cum.inj.flux = rep(0,nb.line), tot.seep.flux = rep(0,nb.line), tot.inj.flux = rep(0,nb.line), conc.seep = rep(0,nb.line), conc.inj = rep(0,nb.line)) # preallocation de la data.frame avec les résultats.
k <- 1 # compteur
# boucle sur les lignes avec des données
for (i in start.line:end.line){
current.line <- as.numeric(dummy.white.space(linn[i])) # transformation de la ligne en vecteur numérique
boundary.data$time[k] <- current.line[1] # time (h)
boundary.data$cum.seep.flux[k] <- -current.line[5] # ChemS2 [M L-1] cummulative solute flux across seepage face
boundary.data$cum.inj.flux[k] <- current.line[4] # ChemS3 [M L-1] cummulative solute flux injected
boundary.data$seep.flux[k] <- -current.line[3] # SMean2 [M T-1 L-1] total solute flux across seepage
boundary.data$inj.flux[k] <- current.line[2] # SMean3 [M T-1 L-1] total solute flux injected
boundary.data$conc.seep[k] <- current.line[10] # cMean [M L-3] concentration seepage face
boundary.data$conc.inj[k] <- current.line[8] # cMean [M L-3] concentration injected
k <- k+1 # incrementation du compteur
}
return(boundary.data)
}
recovered.ratio <- function(solute.data){
# injected mass
inj.mass <- solute.data$cum.inj.flux[dim(solute.data)[1]]
# recovered mass
recover.mass <- solute.data$cum.seep.flux[dim(solute.data)[1]]
recover.ratio <- recover.mass/inj.mass
return(recover.ratio)
}
plot.cum.break <- function(solute.data, t.inj, reference = "recovered"){
if (reference == "recovered"){
total.mass <- solute.data$cum.seep.flux[dim(solute.data)[1]]
} else if (reference == "injected") {
total.mass <- solute.data$cum.inj.flux[dim(solute.data)[1]]
} else {
stop("invalid argument value in reference")
}
plot(solute.data$time[solute.data$time > t.inj], solute.data$cum.seep.flux[solute.data$time > t.inj]/total.mass)
}
percentile.break <- function(solute.data, t.inj, level, reference = "recovered"){
if (reference == "recovered"){
total.mass <- solute.data$cum.seep.flux[dim(solute.data)[1]]
} else if (reference == "injected") {
total.mass <- solute.data$cum.inj.flux[dim(solute.data)[1]]
} else {
stop("invalid argument value in reference")
}
rel.cum.seep.flux <- solute.data$cum.seep.flux/total.mass
if (level > solute.data$cum.seep.flux[dim(solute.data)[1]]/total.mass){
rt <- NA
} else {
rt <- solute.data$time[which.min((rel.cum.seep.flux-level)^2)] - t.inj
}
7172737475767778
return(rt)
}
residence.time <- function(solute.data, t.inj){
inj.mass <- solute.data$cum.seep.flux[dim(solute.data)[1]]
rt.moy <- 1/inj.mass*trapz(solute.data$time,solute.data$time*solute.data$seep.flux) - t.inj
return(rt.moy)
}