From 5cdede8081f04dc36621b95658b2c1fe51194cc7 Mon Sep 17 00:00:00 2001 From: unknown <olivier.delaigue@ANPI1430.antony.irstea.priv> Date: Wed, 18 Jan 2017 17:09:20 +0100 Subject: [PATCH] v1.0.5.0 the DataAltiExtrapolation_Valery() function run faster and the elevation gradients for daily temperature now contains the right values #4415 --- DESCRIPTION | 2 +- R/DataAltiExtrapolation_Valery.R | 17 +++++++---------- 2 files changed, 8 insertions(+), 11 deletions(-) diff --git a/DESCRIPTION b/DESCRIPTION index 45edba66..a5887f83 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -1,7 +1,7 @@ Package: airGR Type: Package Title: Suite of GR hydrological models for precipitation-runoff modelling -Version: 1.0.4.4 +Version: 1.0.5.0 Date: 2017-01-18 Authors@R: c( person("Laurent", "Coron", role = c("aut", "trl")), diff --git a/R/DataAltiExtrapolation_Valery.R b/R/DataAltiExtrapolation_Valery.R index 2882efc7..ff079ab2 100644 --- a/R/DataAltiExtrapolation_Valery.R +++ b/R/DataAltiExtrapolation_Valery.R @@ -434,24 +434,21 @@ DataAltiExtrapolation_Valery <- function(DatesR,Precip,TempMean,TempMin=NULL,Tem ##Temperature_extrapolation____________________________________________________________________ ##Initialisation LayerTempMean <- list(); LayerTempMin <- list(); LayerTempMax <- list(); - if(identical(ZInputs,HypsoData[51]) & NLayers==1){ + if(identical(ZInputs,HypsoData[51]) & NLayers==1) { LayerTempMean[[1]] <- as.double(TempMean); if(!is.null(TempMin) & !is.null(TempMax)){ LayerTempMin[[1]] <- as.double(TempMin); LayerTempMax[[1]] <- as.double(TempMax); } } else { ##Elevation_gradients_for_daily_mean_min_and_max_temperature - GradT <- GradT_Valery2010(); ### Day, Month, GradTmean, GradTmin and GradTmax for iCol=1,2,3,4,5, respectively - TabGradT <- matrix(NA,nrow=length(Precip),ncol=3); - for(iday in 1:366){ - ind <- which(as.numeric(format(DatesR,format="%d"))==GradT[iday,1] & as.numeric(format(DatesR,format="%m"))==GradT[iday,2]); - TabGradT[ind,1:3] <- GradT[iday,3:5]; - } + GradT <- as.data.frame(GradT_Valery2010()) + iday <- match(format(DatesR,format="%d%m"), sprintf("%02i%02i", GradT[, "day"], GradT[, "month"])) + TabGradT <- GradT[iday, c("grad_Tmean", "grad_Tmin", "grad_Tmax")] ##Extrapolation ##On_each_elevation_layer... for(iLayer in 1:NLayers){ - LayerTempMean[[iLayer]] <- as.double(TempMean + (ZInputs-ZLayers[iLayer])*abs(TabGradT[,1])/100); + LayerTempMean[[iLayer]] <- as.double(TempMean + (ZInputs-ZLayers[iLayer])*abs(TabGradT[, "grad_Tmean"])/100); if(!is.null(TempMin) & !is.null(TempMax)){ - LayerTempMin[[iLayer]] <- as.double(TempMin + (ZInputs-ZLayers[iLayer])*abs(TabGradT[,2])/100); - LayerTempMax[[iLayer]] <- as.double(TempMax + (ZInputs-ZLayers[iLayer])*abs(TabGradT[,3])/100); + LayerTempMin[[iLayer]] <- as.double(TempMin + (ZInputs-ZLayers[iLayer])*abs(TabGradT[, "grad_Tmin"])/100); + LayerTempMax[[iLayer]] <- as.double(TempMax + (ZInputs-ZLayers[iLayer])*abs(TabGradT[, "grad_Tmax"])/100); } } } -- GitLab