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