From 9a398d724c78dde4f19445f4d00ac93713ce35af Mon Sep 17 00:00:00 2001
From: David <david.dorchies@inrae.fr>
Date: Tue, 28 May 2024 15:22:04 +0200
Subject: [PATCH] fix: User defined donor for Delavenne

- node with user defined donor for a priori parameters works
- rename InputsModel item isUngauged to inUngaugedCluster

Refs #157
---
 R/Calibration.GRiwrmInputsModel.R      |  2 +-
 R/CreateInputsCrit.GRiwrmInputsModel.R |  2 +-
 R/CreateInputsModel.GRiwrm.R           | 12 ++++++++----
 3 files changed, 10 insertions(+), 6 deletions(-)

diff --git a/R/Calibration.GRiwrmInputsModel.R b/R/Calibration.GRiwrmInputsModel.R
index da64df9..e91a2d4 100644
--- a/R/Calibration.GRiwrmInputsModel.R
+++ b/R/Calibration.GRiwrmInputsModel.R
@@ -31,7 +31,7 @@ Calibration.GRiwrmInputsModel <- function(InputsModel,
   OutputsModel <- list()
   class(OutputsModel) <- append("GRiwrmOutputsModel", class(OutputsModel))
 
-  b <- sapply(InputsModel, function(IM) !IM$isUngauged)
+  b <- sapply(InputsModel, function(IM) !IM$inUngaugedCluster)
   gaugedIds <- names(b[b])
 
   for (id in gaugedIds) {
diff --git a/R/CreateInputsCrit.GRiwrmInputsModel.R b/R/CreateInputsCrit.GRiwrmInputsModel.R
index bc234ed..c8b0e75 100644
--- a/R/CreateInputsCrit.GRiwrmInputsModel.R
+++ b/R/CreateInputsCrit.GRiwrmInputsModel.R
@@ -59,7 +59,7 @@ CreateInputsCrit.GRiwrmInputsModel <- function(InputsModel,
              "\nIf possible, set this apriori id as the donor of the node \"",
              id,"\" to force the calibration sequence order")
       }
-      if (InputsModel[[AprioriIds[id]]]$isUngauged &
+      if (InputsModel[[AprioriIds[id]]]$inUngaugedCluster &
           InputsModel[[AprioriIds[id]]]$gaugedId == id) {
         stop("'AprioriIds': the node \"", AprioriIds[id],
              "\" is ungauged, use a gauged node instead")
diff --git a/R/CreateInputsModel.GRiwrm.R b/R/CreateInputsModel.GRiwrm.R
index 2d60245..387bfee 100644
--- a/R/CreateInputsModel.GRiwrm.R
+++ b/R/CreateInputsModel.GRiwrm.R
@@ -331,10 +331,14 @@ CreateOneGRiwrmInputsModel <- function(id, griwrm, DatesR, ..., Qobs, Qmin, Qrel
   # Add the model function
   InputsModel$FUN_MOD <- FUN_MOD
   featModel <- .GetFeatModel(InputsModel, IsHyst)
-  InputsModel$isUngauged <- node$id != node$donor &&
-    isNodeDownstream(griwrm, id, node$donor)
-  InputsModel$isReceiver <- node$id != node$donor &&
-    !isNodeDownstream(griwrm, id, node$donor)
+  # inUngaugedCluster: Ungauged node with downstream donor
+  # including reservoirs between ungauged nodes and donor
+  InputsModel$inUngaugedCluster <- (node$model == "Ungauged" || np$Reservoir) &&
+                                   node$id != node$donor &&
+                                   isNodeDownstream(griwrm, id, node$donor)
+  # isReceiver: Ungauged node with not downstream donor
+  InputsModel$isReceiver <- node$model == "Ungauged" &&
+                            !isNodeDownstream(griwrm, id, node$donor)
   InputsModel$gaugedId <- node$donor
   InputsModel$hasUngaugedNodes <- hasUngaugedNodes(id, griwrm)
   InputsModel$model <-
-- 
GitLab