From 68225767e2b257b2ecdcd92bb73c5b7ba1bac74e Mon Sep 17 00:00:00 2001 From: Dorchies David <david.dorchies@inrae.fr> Date: Wed, 29 Jun 2022 09:25:14 +0200 Subject: [PATCH] fix(RunModel_LLR): wrong parameter transformation Previous one was from Munier but the model is not the same as Munier one. This formulation is from https://doi.org/10.5194/nhess-14-2899-2014 Refs HYCAR-Hydro/airgr#152, HYCAR-Hydro/airgr#153 --- R/RunModel_LLR.R | 21 ++++++++++----------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/R/RunModel_LLR.R b/R/RunModel_LLR.R index c11b12d..a37601b 100644 --- a/R/RunModel_LLR.R +++ b/R/RunModel_LLR.R @@ -68,19 +68,19 @@ RunModel_LLR <- function(InputsModel, RunOptions, Param, QcontribDown) { TParam <- Param[1L] KParam <- Param[2L] - ## propagation time from upstream meshes to outlet - PT <- ifelse(InputsModel$LengthHydro == 0, 0, InputsModel$LengthHydro/max(InputsModel$LengthHydro)) * - (TParam + KParam) - ifelse(InputsModel$LengthHydro == 0, 0, - sqrt(InputsModel$LengthHydro/max(InputsModel$LengthHydro))) * KParam - PT[PT < 0] <- 0 - PK <- ifelse(InputsModel$LengthHydro == 0, - 0, - sqrt(InputsModel$LengthHydro/max(InputsModel$LengthHydro)) * KParam) + PT <- InputsModel$LengthHydro * 1e3 / Param[1L] / RunOptions$FeatFUN_MOD$TimeStep + PK <- KParam * PT C0 <- ifelse(PK ==0, 0, exp(-1/PK)) C1 <- ((PK/1) * (1-C0))-C0 C2 <- 1 - (PK/1) * (1-C0) + ## Lag set up + + Lag <- function(t, Qroute, Qupstream){ + Q <- c(Qupstream[1 : floor(t)], Qroute[1 : (length(Qroute) - floor(t))]) + return(Q) + } ## set up initial states IniSD <- RunOptions$IniStates[grep("SD", names(RunOptions$IniStates))] if (length(IniSD) > 0) { @@ -135,10 +135,9 @@ RunModel_LLR <- function(InputsModel, RunOptions, Param, QcontribDown) { Qroute_t1 <- Qroute[q_upstream - 1] } Qroute[q_upstream] <- C0[upstream_basin] * Qroute_t1 + C1[upstream_basin] * Qupstream_m3[q_upstream - 1] + C2[upstream_basin] * Qupstream_m3[q_upstream] - Qllr[q_upstream + PT[upstream_basin]] <- Qroute[q_upstream] } - Qsim_m3[, upstream_basin] <- Qllr[(1 +length(Qllr) - length(IndPeriod1)) : - (length(IndPeriod1) + (length(Qllr) - length(IndPeriod1)))] + Qllr <- Lag(PT[upstream_basin], Qroute, Qupstream_m3)[IndPeriod1] + Qsim_m3[, upstream_basin] <- Qllr } Qsim_m3 <- cbind(QsimDown_input, Qsim_m3) -- GitLab