Your R-script for analysing the drawdown curves looks amazing, thanks for this. However I do get an error for the warren_root solution.
I first tried it with the example on the https://khaors.github.io/pumpingtest/articles/intro_pumpingtest.html#references, where the Theis well-function is used. This function works properly, also on my own data, but the data doesn't fit correctly to a Theis function, because of the expected dual porosity properties of the subsurface.
Next I tried to analyse the example data for the warren_root. Sadly it gives an error where it states:
ptest.fit <- fit(ptest, "warren_root")
Error: warren_root_well_function: sigma is less than 0
So apparently something went wrong. I found out that the bug is found in the function "warren_root_solution_dlogt", where t0>t1 which can of course not be true. when i manually changed the t0 and t1 the code functioned well.
Pumping_test.csv
In the attachments, I attached the script that I used. I hope you can find where I made a misstep.
I also attached one of my own datasets, could you maybe test whether it would be possible to also do the warren_root test with this one?
I hope I have sufficiently outlined the problem, and that you could help me with my questions.
In advance big thanks for your reply.
rm(list=ls())
data("warren_root")
ptest <- pumping_test("Warren_root", Q = 3.58e-2, r = 0.11, t = warren_root$t, s = warren_root$s)
p1 <- plot(ptest)
## Joining, by = c("t", "s", "variable")
print(p1)
# Diagnostic Plots
# The diagnostic plot is the default option in the plot function,
# in which the derivative of the drawdown with respect to the logarithm of time is calculated via central differences.
# The drawdown derivative is very sensitive to the noise present in the drawdown measurements and therefore it is advisable to create the diagnostic plot using different derivative types.
# In this case, four types of derivatives are used in the diagnostic plots:
p.central <- plot(ptest, dmethod = "central") +
theme(legend.position="bottom")
p.horner <- plot(ptest, dmethod = "horner") +
theme(legend.position="bottom")
p.bourdet <- plot(ptest, dmethod = "bourdet", d = 2) +
theme(legend.position="bottom")
p.spline <- plot(ptest, dmethod = "spline", d = 20) +
theme(legend.position="bottom")
## Joining, by = c("t", "s", "variable")
p.diagnostic <- grid.arrange(p.central, p.horner, p.bourdet, p.spline,
nrow = 2)
print(p.diagnostic)
ptest <- na.omit(ptest)
###Parameter estimation###
ptest.fit <- fit(ptest, "warren_root")
ptest.fit$parameters
ptest.fit$hydraulic_parameters
#Parameterise the estimated Parameters
Tr <- ptest.fit$hydraulic_parameters$Tr
Ss <- ptest.fit$hydraulic_parameters$Ss
Ri <- ptest.fit$hydraulic_parameters$radius_influence
hydraulic.parameters(ptest) <- ptest.fit$hydraulic_parameters
fit.parameters(ptest) <- ptest.fit$parameters
model(ptest) <- "cooper_jacob"
estimated(ptest) <- TRUE
p.estimation <- plot(ptest, type = "estimation", dmethod = "spline",
d = 30)
## Joining, by = c("t", "s", "variable")
print(p.estimation)
p.mod.diag <- plot(ptest, type = 'model.diagnostic')
## Joining, by = c("t", "s", "variable")
## `geom_smooth()` using method = 'loess' and formula 'y ~ x'
## `geom_smooth()` using method = 'loess' and formula 'y ~ x'