library(magrittr)
library(unittest)
library(gadget3)
actions <- list(
g3a_time(2000, 2005, step_lengths = c(6,6), project_years = 0),
list(
"001:ut" = gadget3:::g3_step(g3_formula(
quote( tvout[[1]] <- x ),
tvout = array(0L),
x = g3_timevariable('gelda', list(
init = g3_formula( 2L + 2L ),
"2002" = g3_formula( y * 4L, y = 10L ),
"2003-02" = g3_formula( z * 2L, z = 9L ),
"2999" = NaN)))),
"999:ut" = g3_formula( nll <- nll + g3_param('tmb_bodge', value = 1.0) )))
actions <- c(actions, list(g3a_report_history(actions, var_re = "^tvout$")))
# Compile model
model_fn <- g3_to_r(actions, trace = FALSE)
# model_fn <- edit(model_fn)
if (nzchar(Sys.getenv('G3_TEST_TMB'))) {
model_cpp <- g3_to_tmb(actions, trace = FALSE)
# model_cpp <- edit(model_cpp)
# writeLines(TMB::gdbsource(g3_tmb_adfun(model_cpp, compile_flags = c("-O0", "-g"), output_script = TRUE)))
model_tmb <- g3_tmb_adfun(model_cpp, compile_flags = c("-O0", "-g"))
} else {
writeLines("# skip: not compiling TMB model")
}
ok_group("gadget3:::g3_timevariable", {
params <- attr(model_fn, 'parameter_template')
result <- model_fn(params)
r <- attributes(result)
# str(as.list(r), vec.len = 10000)
ok(ut_cmp_identical(r$hist_tvout[1,], c(
"2000-01" = 4L, "2000-02" = 4L, "2001-01" = 4L, "2001-02" = 4L,
"2002-01" = 40L, "2002-02" = 40L, "2003-01" = 40L,
"2003-02" = 18L, "2004-01" = 18L, "2004-02" = 18L, "2005-01" = 18L, "2005-02" = 18L,
NULL)), "hist_tvout: Started with init, altered at relevant steps")
if (nzchar(Sys.getenv('G3_TEST_TMB'))) {
param_template <- attr(model_cpp, "parameter_template")
param_template$value <- params[param_template$switch]
gadget3:::ut_tmb_r_compare(model_fn, model_tmb, param_template)
}
})
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.