From b3a15c7002c0acc4d4dbd1a8070245b3cd4c9ba9 Mon Sep 17 00:00:00 2001
From: Dorchies David <david.dorchies@inrae.fr>
Date: Mon, 25 Jul 2022 11:14:32 +0200
Subject: [PATCH] fix(RunModel.Supervisor): issues with in-line reservoir
 inside the network

Fix #51
---
 R/RunModel.Supervisor.R | 6 ++++--
 R/utils.R               | 5 ++++-
 2 files changed, 8 insertions(+), 3 deletions(-)

diff --git a/R/RunModel.Supervisor.R b/R/RunModel.Supervisor.R
index f266ef0..937dc40 100644
--- a/R/RunModel.Supervisor.R
+++ b/R/RunModel.Supervisor.R
@@ -36,8 +36,10 @@ RunModel.Supervisor <- function(x, RunOptions, Param, ...) {
   # Copy simulated pure runoff flows (no SD nodes) to Qupstream in downstream SD nodes
   for(id in getNoSD_Ids(x$InputsModel)) {
     downId <- x$InputsModel[[id]]$down
-    x$InputsModel[[downId]]$Qupstream[RunOptions[[downId]]$IndPeriod_Run, id] <-
-      x$OutputsModel[[id]]$Qsim_m3
+    if(!is.null(x$InputsModel[[downId]])) {
+      x$InputsModel[[downId]]$Qupstream[RunOptions[[downId]]$IndPeriod_Run, id] <-
+        x$OutputsModel[[id]]$Qsim_m3
+    }
   }
 
   # Save Qsim for step by step simulation
diff --git a/R/utils.R b/R/utils.R
index dab0255..85fc697 100644
--- a/R/utils.R
+++ b/R/utils.R
@@ -68,7 +68,10 @@ setDataToLocation <- function(ctrlr, sv) {
     # limit U size to the number of simulation time steps of the current supervision time step
     U <- ctrlr$U[seq.int(length(sv$ts.index)),i]
     # ! Qupstream contains warm up period and run period => the index is shifted
-    sv$InputsModel[[node]]$Qupstream[sv$ts.index0 + sv$ts.index, ctrlr$Unames[i]] <- U
+    if(!is.null(sv$InputsModel[[node]])) {
+      sv$InputsModel[[node]]$Qupstream[sv$ts.index0 + sv$ts.index,
+                                       ctrlr$Unames[i]] <- U
+    }
   })
 }
 
-- 
GitLab