From 41b4b162a3fce7b34a7d746cf98a49de73cb528f Mon Sep 17 00:00:00 2001
From: Dorchies David <david.dorchies@irstea.fr>
Date: Tue, 22 Dec 2020 12:35:06 +0100
Subject: [PATCH] feat(CreateInputsModel): use node Ids as names to Qupstream,
 LengthHydro and BasinAreas

Refs #21
---
 R/CreateInputsModel.GRiwrm.R | 11 +++--------
 R/UpdateQsimUpstream.R       |  2 +-
 2 files changed, 4 insertions(+), 9 deletions(-)

diff --git a/R/CreateInputsModel.GRiwrm.R b/R/CreateInputsModel.GRiwrm.R
index 6401d30..5687ccb 100644
--- a/R/CreateInputsModel.GRiwrm.R
+++ b/R/CreateInputsModel.GRiwrm.R
@@ -57,19 +57,14 @@ CreateOneGRiwrmInputsModel <- function(id, griwrm, DatesR, Precip, PotEvap, Qobs
 
   if(length(UpstreamNodes) > 0) {
     # Sub-basin with hydraulic routing
-    for(idUpstrNode in UpstreamNodes) {
-      Qupstream1 <- matrix(Qobs[,idUpstrNode], ncol = 1)
-      if(is.null(Qupstream)) {
-        Qupstream <- Qupstream1
-      } else {
-        Qupstream <- cbind(Qupstream, Qupstream1)
-      }
-    }
+    Qupstream <- Qobs[ , UpstreamNodes, drop=FALSE]
     LengthHydro <- griwrm$length[griwrm$id %in% UpstreamNodes]
+    names(LengthHydro) <- UpstreamNodes
     BasinAreas <- c(
         griwrm$area[griwrm$id %in% UpstreamNodes],
         node$area - sum(griwrm$area[griwrm$id %in% UpstreamNodes], na.rm = TRUE)
     )
+    names(BasinAreas) <- c(UpstreamNodes, id)
   }
 
   # Set model inputs with the airGR function
diff --git a/R/UpdateQsimUpstream.R b/R/UpdateQsimUpstream.R
index 965196a..824c128 100644
--- a/R/UpdateQsimUpstream.R
+++ b/R/UpdateQsimUpstream.R
@@ -9,7 +9,7 @@
 #' @return InputsModel object with updated QobsUpsr
 #'
 UpdateQsimUpstream <- function(InputsModel, IndPeriod_Run, OutputsModel) {
-  iQ <- which(!is.na(InputsModel$BasinAreas[1:length(InputsModel$LengthHydro)]))
+  iQ <- which(!is.na(InputsModel$BasinAreas[-length(InputsModel$BasinAreas)]))
   for(i in iQ) {
     InputsModel$Qupstream[IndPeriod_Run, i] <- OutputsModel[[InputsModel$UpstreamNodes[i]]]$Qsim
   }
-- 
GitLab