diff --git a/DESCRIPTION b/DESCRIPTION index 61dc3272719dd6804f7cd778d6205f8b150287be..f7f343c322f259de6bca3edec799362160bdffed 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.6.3.49 +Version: 1.6.3.50 Date: 2020-11-11 Authors@R: c( person("Laurent", "Coron", role = c("aut", "trl"), comment = c(ORCID = "0000-0002-1503-6204")), diff --git a/NEWS.md b/NEWS.md index 1869403f7ee691e8cfd40bdc4f4336957662e229..d990b93a3c96f7175c4cc3eaf95c22fcccb94c2a 100644 --- a/NEWS.md +++ b/NEWS.md @@ -4,7 +4,7 @@ -### 1.6.3.49 Release Notes (2020-11-11) +### 1.6.3.50 Release Notes (2020-11-11) #### New features diff --git a/R/RunModel_GR1A.R b/R/RunModel_GR1A.R index 432a1eaa9e22c1a51ef9c97faffd7e82298c6730..f502410d9a55cab38c1e5682d3163e0b30661955 100644 --- a/R/RunModel_GR1A.R +++ b/R/RunModel_GR1A.R @@ -1,5 +1,7 @@ RunModel_GR1A <- function(InputsModel, RunOptions, Param) { + + ## Initialization of variables NParam <- 1 FortranOutputs <- .FortranOutputs(GR = "GR1A")$GR diff --git a/R/RunModel_GR2M.R b/R/RunModel_GR2M.R index 5875d92ede952cce8dbbbf80ab082b60ee9ea37b..0a3683a158c205a7fca4d44d6cdf3a177d0d36fc 100644 --- a/R/RunModel_GR2M.R +++ b/R/RunModel_GR2M.R @@ -1,9 +1,12 @@ RunModel_GR2M <- function(InputsModel,RunOptions,Param) { + + ## Initialization of variables NParam <- 2; FortranOutputs <- .FortranOutputs(GR = "GR2M")$GR - ##Arguments_check + + ## Arguments_check if (inherits(InputsModel,"InputsModel")==FALSE) { stop("'InputsModel' must be of class 'InputsModel'") } if (inherits(InputsModel,"monthly" )==FALSE) { stop("'InputsModel' must be of class 'monthly' ") } if (inherits(InputsModel,"GR" )==FALSE) { stop("'InputsModel' must be of class 'GR' ") } @@ -23,27 +26,27 @@ RunModel_GR2M <- function(InputsModel,RunOptions,Param) { Param[2L] <- Param_X1X2_threshold } - ##Input_data_preparation + ## Input_data_preparation if (identical(RunOptions$IndPeriod_WarmUp,as.integer(0))) { RunOptions$IndPeriod_WarmUp <- NULL; } IndPeriod1 <- c(RunOptions$IndPeriod_WarmUp,RunOptions$IndPeriod_Run); LInputSeries <- as.integer(length(IndPeriod1)) if ("all" %in% RunOptions$Outputs_Sim) { IndOutputs <- as.integer(1:length(FortranOutputs)); } else { IndOutputs <- which(FortranOutputs %in% RunOptions$Outputs_Sim); } - ##Output_data_preparation + ## Output_data_preparation IndPeriod2 <- (length(RunOptions$IndPeriod_WarmUp)+1):LInputSeries; ExportDatesR <- "DatesR" %in% RunOptions$Outputs_Sim; ExportStateEnd <- "StateEnd" %in% RunOptions$Outputs_Sim; - ##Use_of_IniResLevels + ## Use_of_IniResLevels if (!is.null(RunOptions$IniResLevels)) { - RunOptions$IniStates[1] <- RunOptions$IniResLevels[1]*Param[1]; ### production store level (mm) - RunOptions$IniStates[2] <- RunOptions$IniResLevels[2]*Param[2]; ### routing store level (mm) + RunOptions$IniStates[1] <- RunOptions$IniResLevels[1]*Param[1]; ### production store level (mm) + RunOptions$IniStates[2] <- RunOptions$IniResLevels[2]*Param[2]; ### routing store level (mm) } - ##Call_fortan + ## Call_fortan RESULTS <- .Fortran("frun_gr2M",PACKAGE="airGR", - ##inputs + ## inputs LInputs=LInputSeries, ### length of input and output series InputsPrecip=InputsModel$Precip[IndPeriod1], ### input series of total precipitation [mm/month] InputsPE=InputsModel$PotEvap[IndPeriod1], ### input series potential evapotranspiration [mm/month] @@ -53,9 +56,9 @@ RunModel_GR2M <- function(InputsModel,RunOptions,Param) { StateStart=RunOptions$IniStates, ### state variables used when the model run starts NOutputs=as.integer(length(IndOutputs)), ### number of output series IndOutputs=IndOutputs, ### indices of output series - ##outputs - Outputs=matrix(as.double(-999.999),nrow=LInputSeries,ncol=length(IndOutputs)), ### output series [mm] - StateEnd=rep(as.double(-999.999),length(RunOptions$IniStates)) ### state variables at the end of the model run + ## outputs + Outputs=matrix(as.double(-999.999),nrow=LInputSeries,ncol=length(IndOutputs)), ### output series [mm] + StateEnd=rep(as.double(-999.999),length(RunOptions$IniStates)) ### state variables at the end of the model run ) RESULTS$Outputs [round(RESULTS$Outputs ,3)==(-999.999)] <- NA; RESULTS$StateEnd[round(RESULTS$StateEnd,3)==(-999.999)] <- NA; @@ -68,29 +71,28 @@ RunModel_GR2M <- function(InputsModel,RunOptions,Param) { } - ##Output_data_preparation - ##OutputsModel_only + ## Output_data_preparation + ## OutputsModel_only if (ExportDatesR==FALSE & ExportStateEnd==FALSE) { OutputsModel <- lapply(seq_len(RESULTS$NOutputs), function(i) RESULTS$Outputs[IndPeriod2,i]); names(OutputsModel) <- FortranOutputs[IndOutputs]; } - ##DatesR_and_OutputsModel_only + ## DatesR_and_OutputsModel_only if (ExportDatesR==TRUE & ExportStateEnd==FALSE) { OutputsModel <- c( list(InputsModel$DatesR[RunOptions$IndPeriod_Run]), lapply(seq_len(RESULTS$NOutputs), function(i) RESULTS$Outputs[IndPeriod2,i]) ); names(OutputsModel) <- c("DatesR",FortranOutputs[IndOutputs]); } - ##OutputsModel_and_SateEnd_only + ## OutputsModel_and_SateEnd_only if (ExportDatesR==FALSE & ExportStateEnd==TRUE) { OutputsModel <- c( lapply(seq_len(RESULTS$NOutputs), function(i) RESULTS$Outputs[IndPeriod2,i]), list(RESULTS$StateEnd) ); names(OutputsModel) <- c(FortranOutputs[IndOutputs],"StateEnd"); } - ##DatesR_and_OutputsModel_and_SateEnd - if ((ExportDatesR==TRUE & ExportStateEnd==TRUE) | "all" %in% RunOptions$Outputs_Sim) { + ## DatesR_and_OutputsModel_and_SateEnd OutputsModel <- c( list(InputsModel$DatesR[RunOptions$IndPeriod_Run]), lapply(seq_len(RESULTS$NOutputs), function(i) RESULTS$Outputs[IndPeriod2,i]), list(RESULTS$StateEnd) ); names(OutputsModel) <- c("DatesR",FortranOutputs[IndOutputs],"StateEnd"); } - ##End + ## End rm(RESULTS); class(OutputsModel) <- c("OutputsModel","monthly","GR"); return(OutputsModel); diff --git a/R/RunModel_GR4H.R b/R/RunModel_GR4H.R index 497284f5db05e9990d3320d71f6889d19f8749db..6b2b55a04bbeacc7cfb449e7d0ed3339bcf02668 100644 --- a/R/RunModel_GR4H.R +++ b/R/RunModel_GR4H.R @@ -1,9 +1,12 @@ RunModel_GR4H <- function(InputsModel,RunOptions,Param) { + + ## Initialization of variables NParam <- 4; FortranOutputs <- .FortranOutputs(GR = "GR4H")$GR - ##Arguments_check + + ## Arguments_check if (inherits(InputsModel,"InputsModel")==FALSE) { stop("'InputsModel' must be of class 'InputsModel'") } if (inherits(InputsModel,"hourly" )==FALSE) { stop("'InputsModel' must be of class 'hourly' ") } if (inherits(InputsModel,"GR" )==FALSE) { stop("'InputsModel' must be of class 'GR' ") } @@ -28,27 +31,27 @@ RunModel_GR4H <- function(InputsModel,RunOptions,Param) { Param[4L] <- Param_X4_threshold } - ##Input_data_preparation + ## Input_data_preparation if (identical(RunOptions$IndPeriod_WarmUp,as.integer(0))) { RunOptions$IndPeriod_WarmUp <- NULL; } IndPeriod1 <- c(RunOptions$IndPeriod_WarmUp,RunOptions$IndPeriod_Run); LInputSeries <- as.integer(length(IndPeriod1)) if ("all" %in% RunOptions$Outputs_Sim) { IndOutputs <- as.integer(1:length(FortranOutputs)); } else { IndOutputs <- which(FortranOutputs %in% RunOptions$Outputs_Sim); } - ##Output_data_preparation + ## Output_data_preparation IndPeriod2 <- (length(RunOptions$IndPeriod_WarmUp)+1):LInputSeries; ExportDatesR <- "DatesR" %in% RunOptions$Outputs_Sim; ExportStateEnd <- "StateEnd" %in% RunOptions$Outputs_Sim; - ##Use_of_IniResLevels + ## Use_of_IniResLevels if (!is.null(RunOptions$IniResLevels)) { RunOptions$IniStates[1] <- RunOptions$IniResLevels[1]*Param[1]; ### production store level (mm) RunOptions$IniStates[2] <- RunOptions$IniResLevels[2]*Param[3]; ### routing store level (mm) } - ##Call_fortan + ## Call_fortan RESULTS <- .Fortran("frun_gr4h",PACKAGE="airGR", - ##inputs + ## inputs LInputs=LInputSeries, ### length of input and output series InputsPrecip=InputsModel$Precip[IndPeriod1], ### input series of total precipitation [mm/h] InputsPE=InputsModel$PotEvap[IndPeriod1], ### input series potential evapotranspiration [mm/h] @@ -58,9 +61,9 @@ RunModel_GR4H <- function(InputsModel,RunOptions,Param) { StateStart=RunOptions$IniStates, ### state variables used when the model run starts NOutputs=as.integer(length(IndOutputs)), ### number of output series IndOutputs=IndOutputs, ### indices of output series - ##outputs - Outputs=matrix(as.double(-999.999),nrow=LInputSeries,ncol=length(IndOutputs)), ### output series [mm] - StateEnd=rep(as.double(-999.999),length(RunOptions$IniStates)) ### state variables at the end of the model run + ## outputs + Outputs=matrix(as.double(-999.999),nrow=LInputSeries,ncol=length(IndOutputs)), ### output series [mm] + StateEnd=rep(as.double(-999.999),length(RunOptions$IniStates)) ### state variables at the end of the model run ) RESULTS$Outputs[ round(RESULTS$Outputs ,3)==(-999.999)] <- NA; RESULTS$StateEnd[round(RESULTS$StateEnd,3)==(-999.999)] <- NA; @@ -73,29 +76,29 @@ RunModel_GR4H <- function(InputsModel,RunOptions,Param) { verbose = FALSE) } - ##Output_data_preparation - ##OutputsModel_only + ## Output_data_preparation + ## OutputsModel_only if (ExportDatesR==FALSE & ExportStateEnd==FALSE) { OutputsModel <- lapply(seq_len(RESULTS$NOutputs), function(i) RESULTS$Outputs[IndPeriod2,i]); names(OutputsModel) <- FortranOutputs[IndOutputs]; } - ##DatesR_and_OutputsModel_only + ## DatesR_and_OutputsModel_only if (ExportDatesR==TRUE & ExportStateEnd==FALSE) { OutputsModel <- c( list(InputsModel$DatesR[RunOptions$IndPeriod_Run]), lapply(seq_len(RESULTS$NOutputs), function(i) RESULTS$Outputs[IndPeriod2,i]) ); names(OutputsModel) <- c("DatesR",FortranOutputs[IndOutputs]); } - ##OutputsModel_and_SateEnd_only + ## OutputsModel_and_SateEnd_only if (ExportDatesR==FALSE & ExportStateEnd==TRUE) { OutputsModel <- c( lapply(seq_len(RESULTS$NOutputs), function(i) RESULTS$Outputs[IndPeriod2,i]), list(RESULTS$StateEnd) ); names(OutputsModel) <- c(FortranOutputs[IndOutputs],"StateEnd"); } - ##DatesR_and_OutputsModel_and_SateEnd + ## DatesR_and_OutputsModel_and_SateEnd if ((ExportDatesR==TRUE & ExportStateEnd==TRUE) | "all" %in% RunOptions$Outputs_Sim) { OutputsModel <- c( list(InputsModel$DatesR[RunOptions$IndPeriod_Run]), lapply(seq_len(RESULTS$NOutputs), function(i) RESULTS$Outputs[IndPeriod2,i]), list(RESULTS$StateEnd) ); names(OutputsModel) <- c("DatesR",FortranOutputs[IndOutputs],"StateEnd"); } - ##End + ## End rm(RESULTS); class(OutputsModel) <- c("OutputsModel","hourly","GR"); return(OutputsModel); diff --git a/R/RunModel_GR4J.R b/R/RunModel_GR4J.R index 2c80586e066550808383442ab9ff6bea924c7e22..0bcade5ff642e5e25a25493ee22839d1a275c205 100644 --- a/R/RunModel_GR4J.R +++ b/R/RunModel_GR4J.R @@ -1,9 +1,12 @@ RunModel_GR4J <- function(InputsModel,RunOptions,Param) { + + ## Initialization of variables NParam <- 4; FortranOutputs <- .FortranOutputs(GR = "GR4J")$GR - ##Arguments_check + + ## Arguments_check if (inherits(InputsModel,"InputsModel")==FALSE) { stop("'InputsModel' must be of class 'InputsModel'") } if (inherits(InputsModel,"daily" )==FALSE) { stop("'InputsModel' must be of class 'daily' ") } if (inherits(InputsModel,"GR" )==FALSE) { stop("'InputsModel' must be of class 'GR' ") } @@ -28,26 +31,26 @@ RunModel_GR4J <- function(InputsModel,RunOptions,Param) { Param[4L] <- Param_X4_threshold } - ##Input_data_preparation + ## Input_data_preparation if (identical(RunOptions$IndPeriod_WarmUp,as.integer(0))) { RunOptions$IndPeriod_WarmUp <- NULL; } IndPeriod1 <- c(RunOptions$IndPeriod_WarmUp,RunOptions$IndPeriod_Run); LInputSeries <- as.integer(length(IndPeriod1)) if ("all" %in% RunOptions$Outputs_Sim) { IndOutputs <- as.integer(1:length(FortranOutputs)); } else { IndOutputs <- which(FortranOutputs %in% RunOptions$Outputs_Sim); } - ##Input_data_preparation + ## Input_data_preparation IndPeriod2 <- (length(RunOptions$IndPeriod_WarmUp)+1):LInputSeries; ExportDatesR <- "DatesR" %in% RunOptions$Outputs_Sim; ExportStateEnd <- "StateEnd" %in% RunOptions$Outputs_Sim; - ##Use_of_IniResLevels + ## Use_of_IniResLevels if (!is.null(RunOptions$IniResLevels)) { - RunOptions$IniStates[1] <- RunOptions$IniResLevels[1]*Param[1]; ### production store level (mm) - RunOptions$IniStates[2] <- RunOptions$IniResLevels[2]*Param[3]; ### routing store level (mm) + RunOptions$IniStates[1] <- RunOptions$IniResLevels[1]*Param[1]; ### production store level (mm) + RunOptions$IniStates[2] <- RunOptions$IniResLevels[2]*Param[3]; ### routing store level (mm) } - ##Call_fortan + ## Call_fortan RESULTS <- .Fortran("frun_gr4j",PACKAGE="airGR", - ##inputs + ## inputs LInputs=LInputSeries, ### length of input and output series InputsPrecip=InputsModel$Precip[IndPeriod1], ### input series of total precipitation [mm/d] InputsPE=InputsModel$PotEvap[IndPeriod1], ### input series potential evapotranspiration [mm/d] @@ -57,9 +60,9 @@ RunModel_GR4J <- function(InputsModel,RunOptions,Param) { StateStart=RunOptions$IniStates, ### state variables used when the model run starts NOutputs=as.integer(length(IndOutputs)), ### number of output series IndOutputs=IndOutputs, ### indices of output series - ##outputs - Outputs=matrix(as.double(-999.999),nrow=LInputSeries,ncol=length(IndOutputs)), ### output series [mm] - StateEnd=rep(as.double(-999.999),length(RunOptions$IniStates)) ### state variables at the end of the model run + ## outputs + Outputs=matrix(as.double(-999.999),nrow=LInputSeries,ncol=length(IndOutputs)), ### output series [mm] + StateEnd=rep(as.double(-999.999),length(RunOptions$IniStates)) ### state variables at the end of the model run ) RESULTS$Outputs[ round(RESULTS$Outputs ,3)==(-999.999)] <- NA; RESULTS$StateEnd[round(RESULTS$StateEnd,3)==(-999.999)] <- NA; @@ -72,29 +75,29 @@ RunModel_GR4J <- function(InputsModel,RunOptions,Param) { verbose = FALSE) } - ##Output_data_preparation - ##OutputsModel_only + ## Output_data_preparation + ## OutputsModel_only if (ExportDatesR==FALSE & ExportStateEnd==FALSE) { OutputsModel <- lapply(seq_len(RESULTS$NOutputs), function(i) RESULTS$Outputs[IndPeriod2,i]); names(OutputsModel) <- FortranOutputs[IndOutputs]; } - ##DatesR_and_OutputsModel_only + ## DatesR_and_OutputsModel_only if (ExportDatesR==TRUE & ExportStateEnd==FALSE) { OutputsModel <- c( list(InputsModel$DatesR[RunOptions$IndPeriod_Run]), lapply(seq_len(RESULTS$NOutputs), function(i) RESULTS$Outputs[IndPeriod2,i]) ); names(OutputsModel) <- c("DatesR",FortranOutputs[IndOutputs]); } - ##OutputsModel_and_StateEnd_only + ## OutputsModel_and_StateEnd_only if (ExportDatesR==FALSE & ExportStateEnd==TRUE) { OutputsModel <- c( lapply(seq_len(RESULTS$NOutputs), function(i) RESULTS$Outputs[IndPeriod2,i]), list(RESULTS$StateEnd) ); names(OutputsModel) <- c(FortranOutputs[IndOutputs],"StateEnd"); } - ##DatesR_and_OutputsModel_and_StateEnd + ## DatesR_and_OutputsModel_and_StateEnd if ((ExportDatesR==TRUE & ExportStateEnd==TRUE) | "all" %in% RunOptions$Outputs_Sim) { OutputsModel <- c( list(InputsModel$DatesR[RunOptions$IndPeriod_Run]), lapply(seq_len(RESULTS$NOutputs), function(i) RESULTS$Outputs[IndPeriod2,i]), list(RESULTS$StateEnd) ); names(OutputsModel) <- c("DatesR",FortranOutputs[IndOutputs],"StateEnd"); } - ##End + ## End rm(RESULTS); class(OutputsModel) <- c("OutputsModel","daily","GR"); return(OutputsModel); diff --git a/R/RunModel_GR5H.R b/R/RunModel_GR5H.R index 46c752689f77c9846d6322ff1525a38f4668354e..f57c6b74f3f99305d93d1909b33fcaf089f55ba9 100644 --- a/R/RunModel_GR5H.R +++ b/R/RunModel_GR5H.R @@ -1,5 +1,7 @@ RunModel_GR5H <- function(InputsModel,RunOptions,Param) { + + ## Initialization of variables NParam <- 5; FortranOutputs <- .FortranOutputs(GR = "GR5H")$GR IsIntStore <- inherits(RunOptions, "interception") @@ -9,7 +11,8 @@ RunModel_GR5H <- function(InputsModel,RunOptions,Param) { Imax <- -99 } - ##Arguments_check + + ## Arguments_check if (inherits(InputsModel,"InputsModel")==FALSE) { stop("'InputsModel' must be of class 'InputsModel'") } if (inherits(InputsModel,"hourly" )==FALSE) { stop("'InputsModel' must be of class 'hourly' ") } if (inherits(InputsModel,"GR" )==FALSE) { stop("'InputsModel' must be of class 'GR' ") } @@ -34,30 +37,30 @@ RunModel_GR5H <- function(InputsModel,RunOptions,Param) { Param[4L] <- Param_X4_threshold } - ##Input_data_preparation + ## Input_data_preparation if (identical(RunOptions$IndPeriod_WarmUp,as.integer(0))) { RunOptions$IndPeriod_WarmUp <- NULL; } IndPeriod1 <- c(RunOptions$IndPeriod_WarmUp,RunOptions$IndPeriod_Run); LInputSeries <- as.integer(length(IndPeriod1)) if ("all" %in% RunOptions$Outputs_Sim) { IndOutputs <- as.integer(1:length(FortranOutputs)); } else { IndOutputs <- which(FortranOutputs %in% RunOptions$Outputs_Sim); } - ##Output_data_preparation + ## Output_data_preparation IndPeriod2 <- (length(RunOptions$IndPeriod_WarmUp)+1):LInputSeries; ExportDatesR <- "DatesR" %in% RunOptions$Outputs_Sim; ExportStateEnd <- "StateEnd" %in% RunOptions$Outputs_Sim; - ##Use_of_IniResLevels + ## Use_of_IniResLevels if (!is.null(RunOptions$IniResLevels)) { - RunOptions$IniStates[1] <- RunOptions$IniResLevels[1]*Param[1]; ### production store level (mm) - RunOptions$IniStates[2] <- RunOptions$IniResLevels[2]*Param[3]; ### routing store level (mm) + RunOptions$IniStates[1] <- RunOptions$IniResLevels[1]*Param[1]; ### production store level (mm) + RunOptions$IniStates[2] <- RunOptions$IniResLevels[2]*Param[3]; ### routing store level (mm) if (IsIntStore) { - RunOptions$IniStates[4] <- RunOptions$IniResLevels[4] * Imax; ### interception store level (mm) + RunOptions$IniStates[4] <- RunOptions$IniResLevels[4] * Imax; ### interception store level (mm) } } - ##Call_fortan + ## Call_fortan RESULTS <- .Fortran("frun_gr5h",PACKAGE="airGR", - ##inputs + ## inputs LInputs=LInputSeries, ### length of input and output series InputsPrecip=InputsModel$Precip[IndPeriod1], ### input series of total precipitation [mm/h] InputsPE=InputsModel$PotEvap[IndPeriod1], ### input series potential evapotranspiration [mm/h] @@ -68,9 +71,9 @@ RunModel_GR5H <- function(InputsModel,RunOptions,Param) { Imax=Imax, ### maximal capacity of interception store NOutputs=as.integer(length(IndOutputs)), ### number of output series IndOutputs=IndOutputs, ### indices of output series - ##outputs - Outputs=matrix(as.double(-999.999),nrow=LInputSeries,ncol=length(IndOutputs)), ### output series [mm or mm/h] - StateEnd=rep(as.double(-999.999),length(RunOptions$IniStates)) ### state variables at the end of the model run + ## outputs + Outputs=matrix(as.double(-999.999),nrow=LInputSeries,ncol=length(IndOutputs)), ### output series [mm or mm/h] + StateEnd=rep(as.double(-999.999),length(RunOptions$IniStates)) ### state variables at the end of the model run ) RESULTS$Outputs[ round(RESULTS$Outputs ,3)==(-999.999)] <- NA; RESULTS$StateEnd[round(RESULTS$StateEnd,3)==(-999.999)] <- NA; @@ -84,29 +87,29 @@ RunModel_GR5H <- function(InputsModel,RunOptions,Param) { verbose = FALSE) } - ##Output_data_preparation - ##OutputsModel_only + ## Output_data_preparation + ## OutputsModel_only if (ExportDatesR==FALSE & ExportStateEnd==FALSE) { OutputsModel <- lapply(seq_len(RESULTS$NOutputs), function(i) RESULTS$Outputs[IndPeriod2,i]); names(OutputsModel) <- FortranOutputs[IndOutputs]; } - ##DatesR_and_OutputsModel_only + ## DatesR_and_OutputsModel_only if (ExportDatesR==TRUE & ExportStateEnd==FALSE) { OutputsModel <- c( list(InputsModel$DatesR[RunOptions$IndPeriod_Run]), lapply(seq_len(RESULTS$NOutputs), function(i) RESULTS$Outputs[IndPeriod2,i]) ); names(OutputsModel) <- c("DatesR",FortranOutputs[IndOutputs]); } - ##OutputsModel_and_StateEnd_only + ## OutputsModel_and_StateEnd_only if (ExportDatesR==FALSE & ExportStateEnd==TRUE) { OutputsModel <- c( lapply(seq_len(RESULTS$NOutputs), function(i) RESULTS$Outputs[IndPeriod2,i]), list(RESULTS$StateEnd) ); names(OutputsModel) <- c(FortranOutputs[IndOutputs],"StateEnd"); } - ##DatesR_and_OutputsModel_and_StateEnd + ## DatesR_and_OutputsModel_and_StateEnd if ((ExportDatesR==TRUE & ExportStateEnd==TRUE) | "all" %in% RunOptions$Outputs_Sim) { OutputsModel <- c( list(InputsModel$DatesR[RunOptions$IndPeriod_Run]), lapply(seq_len(RESULTS$NOutputs), function(i) RESULTS$Outputs[IndPeriod2,i]), list(RESULTS$StateEnd) ); names(OutputsModel) <- c("DatesR",FortranOutputs[IndOutputs],"StateEnd"); } - ##End + ## End rm(RESULTS); class(OutputsModel) <- c("OutputsModel","hourly","GR"); if (IsIntStore) { diff --git a/R/RunModel_GR5J.R b/R/RunModel_GR5J.R index 5b5b26b1fd89a5a4aa64c8d643110a57f20fc751..e7d4f474eda642d9d9352f3a34d3f94d3f4bd95e 100644 --- a/R/RunModel_GR5J.R +++ b/R/RunModel_GR5J.R @@ -1,9 +1,12 @@ RunModel_GR5J <- function(InputsModel,RunOptions,Param) { + + ## Initialization of variables NParam <- 5; FortranOutputs <- .FortranOutputs(GR = "GR5J")$GR - ##Arguments_check + + ## Arguments_check if (inherits(InputsModel,"InputsModel")==FALSE) { stop("'InputsModel' must be of class 'InputsModel'") } if (inherits(InputsModel,"daily" )==FALSE) { stop("'InputsModel' must be of class 'daily' ") } if (inherits(InputsModel,"GR" )==FALSE) { stop("'InputsModel' must be of class 'GR' ") } @@ -28,27 +31,27 @@ RunModel_GR5J <- function(InputsModel,RunOptions,Param) { Param[4L] <- Param_X4_threshold } - ##Input_data_preparation + ## Input_data_preparation if (identical(RunOptions$IndPeriod_WarmUp,as.integer(0))) { RunOptions$IndPeriod_WarmUp <- NULL; } IndPeriod1 <- c(RunOptions$IndPeriod_WarmUp,RunOptions$IndPeriod_Run); LInputSeries <- as.integer(length(IndPeriod1)) if ("all" %in% RunOptions$Outputs_Sim) { IndOutputs <- as.integer(1:length(FortranOutputs)); } else { IndOutputs <- which(FortranOutputs %in% RunOptions$Outputs_Sim); } - ##Output_data_preparation + ## Output_data_preparation IndPeriod2 <- (length(RunOptions$IndPeriod_WarmUp)+1):LInputSeries; ExportDatesR <- "DatesR" %in% RunOptions$Outputs_Sim; ExportStateEnd <- "StateEnd" %in% RunOptions$Outputs_Sim; - ##Use_of_IniResLevels + ## Use_of_IniResLevels if (!is.null(RunOptions$IniResLevels)) { - RunOptions$IniStates[1] <- RunOptions$IniResLevels[1]*Param[1]; ### production store level (mm) - RunOptions$IniStates[2] <- RunOptions$IniResLevels[2]*Param[3]; ### routing store level (mm) + RunOptions$IniStates[1] <- RunOptions$IniResLevels[1]*Param[1]; ### production store level (mm) + RunOptions$IniStates[2] <- RunOptions$IniResLevels[2]*Param[3]; ### routing store level (mm) } - ##Call_fortan + ## Call_fortan RESULTS <- .Fortran("frun_gr5j",PACKAGE="airGR", - ##inputs + ## inputs LInputs=LInputSeries, ### length of input and output series InputsPrecip=InputsModel$Precip[IndPeriod1], ### input series of total precipitation [mm/d] InputsPE=InputsModel$PotEvap[IndPeriod1], ### input series potential evapotranspiration [mm/d] @@ -58,9 +61,9 @@ RunModel_GR5J <- function(InputsModel,RunOptions,Param) { StateStart=RunOptions$IniStates, ### state variables used when the model run starts NOutputs=as.integer(length(IndOutputs)), ### number of output series IndOutputs=IndOutputs, ### indices of output series - ##outputs - Outputs=matrix(as.double(-999.999),nrow=LInputSeries,ncol=length(IndOutputs)), ### output series [mm] - StateEnd=rep(as.double(-999.999),length(RunOptions$IniStates)) ### state variables at the end of the model run + ## outputs + Outputs=matrix(as.double(-999.999),nrow=LInputSeries,ncol=length(IndOutputs)), ### output series [mm] + StateEnd=rep(as.double(-999.999),length(RunOptions$IniStates)) ### state variables at the end of the model run ) RESULTS$Outputs[ round(RESULTS$Outputs ,3)==(-999.999)] <- NA; RESULTS$StateEnd[round(RESULTS$StateEnd,3)==(-999.999)] <- NA; @@ -73,29 +76,29 @@ RunModel_GR5J <- function(InputsModel,RunOptions,Param) { verbose = FALSE) } - ##Output_data_preparation - ##OutputsModel_only + ## Output_data_preparation + ## OutputsModel_only if (ExportDatesR==FALSE & ExportStateEnd==FALSE) { OutputsModel <- lapply(seq_len(RESULTS$NOutputs), function(i) RESULTS$Outputs[IndPeriod2,i]); names(OutputsModel) <- FortranOutputs[IndOutputs]; } - ##DatesR_and_OutputsModel_only + ## DatesR_and_OutputsModel_only if (ExportDatesR==TRUE & ExportStateEnd==FALSE) { OutputsModel <- c( list(InputsModel$DatesR[RunOptions$IndPeriod_Run]), lapply(seq_len(RESULTS$NOutputs), function(i) RESULTS$Outputs[IndPeriod2,i]) ); names(OutputsModel) <- c("DatesR",FortranOutputs[IndOutputs]); } - ##OutputsModel_and_SateEnd_only + ## OutputsModel_and_SateEnd_only if (ExportDatesR==FALSE & ExportStateEnd==TRUE) { OutputsModel <- c( lapply(seq_len(RESULTS$NOutputs), function(i) RESULTS$Outputs[IndPeriod2,i]), list(RESULTS$StateEnd) ); names(OutputsModel) <- c(FortranOutputs[IndOutputs],"StateEnd"); } - ##DatesR_and_OutputsModel_and_SateEnd + ## DatesR_and_OutputsModel_and_SateEnd if ((ExportDatesR==TRUE & ExportStateEnd==TRUE) | "all" %in% RunOptions$Outputs_Sim) { OutputsModel <- c( list(InputsModel$DatesR[RunOptions$IndPeriod_Run]), lapply(seq_len(RESULTS$NOutputs), function(i) RESULTS$Outputs[IndPeriod2,i]), list(RESULTS$StateEnd) ); names(OutputsModel) <- c("DatesR",FortranOutputs[IndOutputs],"StateEnd"); } - ##End + ## End rm(RESULTS); class(OutputsModel) <- c("OutputsModel","daily","GR"); return(OutputsModel); diff --git a/R/RunModel_GR6J.R b/R/RunModel_GR6J.R index 6ac850405453d6e6522fae6de315bc7b8227f2f2..19bdac9911b1bc0fe659c108a666053c781eb93a 100644 --- a/R/RunModel_GR6J.R +++ b/R/RunModel_GR6J.R @@ -1,9 +1,12 @@ RunModel_GR6J <- function(InputsModel,RunOptions,Param) { + + ## Initialization of variables NParam <- 6; FortranOutputs <- .FortranOutputs(GR = "GR6J")$GR - ##Arguments_check + + ## Arguments_check if (inherits(InputsModel,"InputsModel")==FALSE) { stop("'InputsModel' must be of class 'InputsModel'") } if (inherits(InputsModel,"daily" )==FALSE) { stop("'InputsModel' must be of class 'daily' ") } if (inherits(InputsModel,"GR" )==FALSE) { stop("'InputsModel' must be of class 'GR' ") } @@ -32,28 +35,28 @@ RunModel_GR6J <- function(InputsModel,RunOptions,Param) { Param[6L] <- Param_X1X3X6_threshold } - ##Input_data_preparation + ## Input_data_preparation if (identical(RunOptions$IndPeriod_WarmUp,as.integer(0))) { RunOptions$IndPeriod_WarmUp <- NULL; } IndPeriod1 <- c(RunOptions$IndPeriod_WarmUp,RunOptions$IndPeriod_Run); LInputSeries <- as.integer(length(IndPeriod1)) if ("all" %in% RunOptions$Outputs_Sim) { IndOutputs <- as.integer(1:length(FortranOutputs)); } else { IndOutputs <- which(FortranOutputs %in% RunOptions$Outputs_Sim); } - ##Output_data_preparation + ## Output_data_preparation IndPeriod2 <- (length(RunOptions$IndPeriod_WarmUp)+1):LInputSeries; ExportDatesR <- "DatesR" %in% RunOptions$Outputs_Sim; ExportStateEnd <- "StateEnd" %in% RunOptions$Outputs_Sim; - ##Use_of_IniResLevels + ## Use_of_IniResLevels if (!is.null(RunOptions$IniResLevels)) { - RunOptions$IniStates[1] <- RunOptions$IniResLevels[1]*Param[1]; ### production store level (mm) - RunOptions$IniStates[2] <- RunOptions$IniResLevels[2]*Param[3]; ### routing store level (mm) - RunOptions$IniStates[3] <- RunOptions$IniResLevels[3] ### exponential store level (mm) + RunOptions$IniStates[1] <- RunOptions$IniResLevels[1]*Param[1]; ### production store level (mm) + RunOptions$IniStates[2] <- RunOptions$IniResLevels[2]*Param[3]; ### routing store level (mm) + RunOptions$IniStates[3] <- RunOptions$IniResLevels[3] ### exponential store level (mm) } - ##Call_fortan + ## Call_fortan RESULTS <- .Fortran("frun_gr6j",PACKAGE="airGR", - ##inputs + ## inputs LInputs=LInputSeries, ### length of input and output series InputsPrecip=InputsModel$Precip[IndPeriod1], ### input series of total precipitation [mm/d] InputsPE=InputsModel$PotEvap[IndPeriod1], ### input series potential evapotranspiration [mm/d] @@ -63,9 +66,9 @@ RunModel_GR6J <- function(InputsModel,RunOptions,Param) { StateStart=RunOptions$IniStates, ### state variables used when the model run starts NOutputs=as.integer(length(IndOutputs)), ### number of output series IndOutputs=IndOutputs, ### indices of output series - ##outputs - Outputs=matrix(as.double(-999.999),nrow=LInputSeries,ncol=length(IndOutputs)), ### output series [mm] - StateEnd=rep(as.double(-999.999),length(RunOptions$IniStates)) ### state variables at the end of the model run + ## outputs + Outputs=matrix(as.double(-999.999),nrow=LInputSeries,ncol=length(IndOutputs)), ### output series [mm] + StateEnd=rep(as.double(-999.999),length(RunOptions$IniStates)) ### state variables at the end of the model run ) RESULTS$Outputs[ round(RESULTS$Outputs ,3)==(-999.999)] <- NA; RESULTS$StateEnd[round(RESULTS$StateEnd,3)==(-999.999)] <- NA; @@ -78,29 +81,29 @@ RunModel_GR6J <- function(InputsModel,RunOptions,Param) { verbose = FALSE) } - ##Output_data_preparation - ##OutputsModel_only + ## Output_data_preparation + ## OutputsModel_only if (ExportDatesR==FALSE & ExportStateEnd==FALSE) { OutputsModel <- lapply(seq_len(RESULTS$NOutputs), function(i) RESULTS$Outputs[IndPeriod2,i]); names(OutputsModel) <- FortranOutputs[IndOutputs]; } - ##DatesR_and_OutputsModel_only + ## DatesR_and_OutputsModel_only if (ExportDatesR==TRUE & ExportStateEnd==FALSE) { OutputsModel <- c( list(InputsModel$DatesR[RunOptions$IndPeriod_Run]), lapply(seq_len(RESULTS$NOutputs), function(i) RESULTS$Outputs[IndPeriod2,i]) ); names(OutputsModel) <- c("DatesR",FortranOutputs[IndOutputs]); } - ##OutputsModel_and_SateEnd_only + ## OutputsModel_and_SateEnd_only if (ExportDatesR==FALSE & ExportStateEnd==TRUE) { OutputsModel <- c( lapply(seq_len(RESULTS$NOutputs), function(i) RESULTS$Outputs[IndPeriod2,i]), list(RESULTS$StateEnd) ); names(OutputsModel) <- c(FortranOutputs[IndOutputs],"StateEnd"); } - ##DatesR_and_OutputsModel_and_SateEnd + ## DatesR_and_OutputsModel_and_SateEnd if ((ExportDatesR==TRUE & ExportStateEnd==TRUE) | "all" %in% RunOptions$Outputs_Sim) { OutputsModel <- c( list(InputsModel$DatesR[RunOptions$IndPeriod_Run]), lapply(seq_len(RESULTS$NOutputs), function(i) RESULTS$Outputs[IndPeriod2,i]), list(RESULTS$StateEnd) ); names(OutputsModel) <- c("DatesR",FortranOutputs[IndOutputs],"StateEnd"); } - ##End + ## End rm(RESULTS); class(OutputsModel) <- c("OutputsModel","daily","GR"); return(OutputsModel);