Commit 43705a94 authored by Dorchies David's avatar Dorchies David
Browse files

Merge branch '116-getsd_ids-crashes-on-upstream-nodes-with-diversion' into 'dev'

Resolve "getSD_Ids crashes on upstream nodes with Diversion"

Closes #116

See merge request !57
Showing with 8 additions and 8 deletions
+8 -8
...@@ -65,7 +65,7 @@ RunModel.Supervisor <- function(x, RunOptions, Param, ...) { ...@@ -65,7 +65,7 @@ RunModel.Supervisor <- function(x, RunOptions, Param, ...) {
) )
# Adapt RunOptions to step by step simulation and copy states # Adapt RunOptions to step by step simulation and copy states
SD_Ids <- getSD_Ids(x$InputsModel) SD_Ids <- getSD_Ids(x$InputsModel, add_diversions = TRUE)
names(SD_Ids) <- SD_Ids names(SD_Ids) <- SD_Ids
for(id in SD_Ids) { for(id in SD_Ids) {
RunOptions[[id]]$IndPeriod_WarmUp <- 0L RunOptions[[id]]$IndPeriod_WarmUp <- 0L
...@@ -102,7 +102,7 @@ RunModel.Supervisor <- function(x, RunOptions, Param, ...) { ...@@ -102,7 +102,7 @@ RunModel.Supervisor <- function(x, RunOptions, Param, ...) {
doSupervision(x) doSupervision(x)
} }
# Loop over sub-basin using SD model # Loop over sub-basin using SD model
for(id in getSD_Ids(x$InputsModel, add_diversion = TRUE)) { for(id in SD_Ids) {
# Run model for the sub-basin and one time step # Run model for the sub-basin and one time step
RunOptions[[id]]$IniStates <- serializeIniStates(x$OutputsModel[[id]]$StateEnd) RunOptions[[id]]$IniStates <- serializeIniStates(x$OutputsModel[[id]]$StateEnd)
RunOptions[[id]]$IndPeriod_Run <- iTS RunOptions[[id]]$IndPeriod_Run <- iTS
...@@ -136,7 +136,7 @@ RunModel.Supervisor <- function(x, RunOptions, Param, ...) { ...@@ -136,7 +136,7 @@ RunModel.Supervisor <- function(x, RunOptions, Param, ...) {
message(" 100%") message(" 100%")
for(id in getSD_Ids(x$InputsModel)) { for(id in SD_Ids) {
x$OutputsModel[[id]]$DatesR <- x$DatesR[IndPeriod_Run] x$OutputsModel[[id]]$DatesR <- x$DatesR[IndPeriod_Run]
for (outputVar in outputVars[[id]]) { for (outputVar in outputVars[[id]]) {
x$OutputsModel[[id]][[outputVar]] <- x$storedOutputs[[outputVar]][, id] x$OutputsModel[[id]][[outputVar]] <- x$storedOutputs[[outputVar]][, id]
......
#' Function to obtain the ID of sub-basins using SD model #' Function to obtain the ID of sub-basins using SD model
#' #'
#' @param InputsModel \[`GRiwrmInputsModel` object\] #' @param InputsModel \[`GRiwrmInputsModel` object\]
#' @param add_diversion [logical] for adding upstream nodes with diversion #' @param add_diversions [logical] for adding upstream nodes with diversion
#' #'
#' @return [character] IDs of the sub-basins using SD model #' @return [character] IDs of the sub-basins using SD model
#' @export #' @export
getSD_Ids <- function(InputsModel, add_diversion = FALSE) { getSD_Ids <- function(InputsModel, add_diversions = FALSE) {
if (!inherits(InputsModel, "GRiwrmInputsModel")) { if (!inherits(InputsModel, "GRiwrmInputsModel")) {
stop("Argument `InputsModel` should be of class GRiwrmInputsModel") stop("Argument `InputsModel` should be of class GRiwrmInputsModel")
} }
bSDs <- sapply(InputsModel, function (IM) { bSDs <- sapply(InputsModel, function (IM) {
inherits(IM, "SD") | IM$hasDiversion inherits(IM, "SD") || (add_diversions & IM$hasDiversion)
}) })
names(InputsModel)[bSDs] names(InputsModel)[bSDs]
} }
......
...@@ -4,12 +4,12 @@ ...@@ -4,12 +4,12 @@
\alias{getSD_Ids} \alias{getSD_Ids}
\title{Function to obtain the ID of sub-basins using SD model} \title{Function to obtain the ID of sub-basins using SD model}
\usage{ \usage{
getSD_Ids(InputsModel, add_diversion = FALSE) getSD_Ids(InputsModel, add_diversions = FALSE)
} }
\arguments{ \arguments{
\item{InputsModel}{[\code{GRiwrmInputsModel} object]} \item{InputsModel}{[\code{GRiwrmInputsModel} object]}
\item{add_diversion}{\link{logical} for adding upstream nodes with diversion} \item{add_diversions}{\link{logical} for adding upstream nodes with diversion}
} }
\value{ \value{
\link{character} IDs of the sub-basins using SD model \link{character} IDs of the sub-basins using SD model
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment