diff --git a/R/get_param_txt.R b/R/get_param_txt.R index f18e7fc5..0cacd9b0 100644 --- a/R/get_param_txt.R +++ b/R/get_param_txt.R @@ -403,16 +403,29 @@ get_ini_txt <- function( densinitial = params[[12]] ) - ini$plant$plant2 <- list( - stade0 = params[[14]], - lai0 = params[[15]], - masec0 = params[[16]], - QNplante0 = params[[17]], - magrain0 = params[[18]], - zrac0 = params[[19]], - resperenne0 = params[[20]], - densinitial = params[[22]] - ) + if (ini$nbplantes > 1) { + ini$plant$plant2 <- list( + stade0 = params[[14]], + lai0 = params[[15]], + masec0 = params[[16]], + QNplante0 = params[[17]], + magrain0 = params[[18]], + zrac0 = params[[19]], + resperenne0 = params[[20]], + densinitial = params[[22]] + ) + } else { + ini$plant$plant2 <- list( + stade0 = "", + lai0 = "0", + masec0 = "0", + QNplante0 = "0", + magrain0 = "0", + zrac0 = "0", + resperenne0 = "0", + densinitial = "0" + ) + } ini$hinit <- params[[24]] ini$NO3init <- params[[26]] @@ -442,34 +455,59 @@ get_ini_txt <- function( densinitial = params[[18]] ) - ini$plant$plant2 <- list( - stade0 = params[[20]], - lai0 = params[[21]], - magrain0 = params[[22]], - zrac0 = params[[23]], - code_acti_reserve = params[[25]], - maperenne0 = params[[26]], - QNperenne0 = params[[27]], - masecnp0 = params[[28]], - QNplantenp0 = params[[29]], - masec0 = params[[30]], - QNplante0 = params[[31]], - restemp0 = params[[32]], - densinitial = params[[34]] - ) + if (ini$nbplantes > 1) { + ini$plant$plant2 <- list( + stade0 = params[[20]], + lai0 = params[[21]], + magrain0 = params[[22]], + zrac0 = params[[23]], + code_acti_reserve = params[[25]], + maperenne0 = params[[26]], + QNperenne0 = params[[27]], + masecnp0 = params[[28]], + QNplantenp0 = params[[29]], + masec0 = params[[30]], + QNplante0 = params[[31]], + restemp0 = params[[32]], + densinitial = params[[34]] + ) + } else { + ini$plant$plant2 <- list( + stade0 = "", + lai0 = "0", + magrain0 = "0", + zrac0 = "0", + code_acti_reserve = "0", + maperenne0 = "0", + QNperenne0 = "0", + masecnp0 = "0", + QNplantenp0 = "0", + masec0 = "0", + QNplante0 = "0", + restemp0 = "0", + densinitial = "0" + ) + } ini$Hinitf <- params[[36]] ini$NO3initf <- params[[38]] ini$NH4initf <- params[[40]] - ini$Sdepth0 <- params[[43]] - ini$Sdry0 <- params[[45]] - ini$Swet0 <- params[[47]] - ini$ps0 <- params[[49]] + if (any(grepl(":snow:", params, fixed = TRUE))) { + ini$Sdepth0 <- params[[43]] + ini$Sdry0 <- params[[45]] + ini$Swet0 <- params[[47]] + ini$ps0 <- params[[49]] + } else { + ini$Sdepth0 <- "0" + ini$Sdry0 <- "0" + ini$Swet0 <- "0" + ini$ps0 <- "0" + } } ini <- character_to_numeric_list(ini) - return(ini) + ini } #' @rdname get_param_txt diff --git a/R/set_param_txt.R b/R/set_param_txt.R index 08e34e36..2c3cb8c1 100644 --- a/R/set_param_txt.R +++ b/R/set_param_txt.R @@ -63,7 +63,7 @@ set_param_txt <- function( param, value, append = FALSE, - plant_id = 1, + plant_id = NULL, variety = NULL, value_id = NULL, stics_version = "latest" @@ -107,6 +107,7 @@ set_param_txt <- function( "\nPlease use the set_* functions directly to set the parameter value." ) } + switch(file_type, ini = { set_ini_txt( @@ -160,6 +161,7 @@ set_param_txt <- function( ) }, tec = { + if (is.null(plant_id)) plant_id <- 1 lapply(plant_id, function(x) { set_tec_txt( file = file.path(workspace, paste0("fictec", x, ".txt")), @@ -171,6 +173,7 @@ set_param_txt <- function( }) }, plant = { + if (is.null(plant_id)) plant_id <- 1 lapply(plant_id, function(x) { if (is.null(variety)) { variety <- @@ -251,7 +254,7 @@ set_ini_txt <- function( param, value, append = FALSE, - plant_id = 1, + plant_id = NULL, value_id = NULL, stics_version = "latest" ) { @@ -494,8 +497,8 @@ set_soil_txt <- function( #' @param file Path to the parameter file #' @param param Parameter name #' @param value New parameter value -#' @param append Boolean. Append input to existing file -#' @param plant_id The plant identifier (main crop: 1 ; associated crop: 2). +#' @param append Boolean. Append input to existing file +#' @param plant_id The plant identifier (main crop: 1 ; associated crop: 2). #' @param variety The plant variety to set the parameter value, #' either the variety #' name (`codevar` in the plant file) or the index @@ -581,7 +584,7 @@ set_file_txt <- function( value_id = value_id, value = value ) - ref[[param]][[value_id]] <- value + ref[[param]][value_id] <- value } } else { plt_tag <- paste0("plant", plant_id) diff --git a/README.Rmd b/README.Rmd index 79402604..7b1329c1 100644 --- a/README.Rmd +++ b/README.Rmd @@ -67,7 +67,7 @@ The package will install the packages for you at the latest release version. ```{r eval=FALSE, results='asis'} install.packages("SticsRFiles") -or +or pak::pkg_install("SticsRFiles") ``` diff --git a/man/set_param_txt.Rd b/man/set_param_txt.Rd index b98198d4..377dda7a 100644 --- a/man/set_param_txt.Rd +++ b/man/set_param_txt.Rd @@ -17,7 +17,7 @@ set_param_txt( param, value, append = FALSE, - plant_id = 1, + plant_id = NULL, variety = NULL, value_id = NULL, stics_version = "latest" @@ -32,7 +32,7 @@ set_ini_txt( param, value, append = FALSE, - plant_id = 1, + plant_id = NULL, value_id = NULL, stics_version = "latest" ) diff --git a/tests/testthat/test-set_get_param_txt.R b/tests/testthat/test-set_get_param_txt.R index a26837c5..6b4952d0 100644 --- a/tests/testthat/test-set_get_param_txt.R +++ b/tests/testthat/test-set_get_param_txt.R @@ -363,3 +363,49 @@ test_that("get for NO3init, for a wrong version", { ) ) }) + +path <- get_examples_path("txt", stics_version = "V9.2") +# Getting values for an unknown parameter +test_that("get for Hinitf, for a wrong version", { + expect_equal( + get_param_txt(workspace = path, param = "Hinitf", stics_version = "v9.2"), + list() + ) +}) + +test_that("set/get for hinit", { + # Setting parameters + # all values + set_param_txt( + workspace = path, + param = "hinit", + value = 1:5, + stics_version = "v9.2" + ) + expect_equal( + get_param_txt( + workspace = path, + param = "hinit", + stics_version = "v9.2" + )$ini$hinit, + 1:5 + ) + + # for a subset + set_param_txt( + workspace = path, + param = "hinit", + value = c(10, 15), + value_id = c(1, 5), + stics_version = "v9.2" + ) + expect_equal( + get_param_txt( + workspace = path, + param = "hinit", + value_id = c(1, 5), + stics_version = "v9.2" + )$ini$hinit, + c(10, 15) + ) +})