SpaDES
Functions for the simtimes
slot of a simList
object
and its elements. To maintain modularity, the behaviour of these functions depends
on where they are used. In other words, different modules can have their own
timeunit. SpaDES
converts these to seconds when running a simulation, but
shows the user time in the units of the model as shown with timeunit(sim)
times(x, ...)# S4 method for simList
times(x)
times(x) <- value
# S4 method for simList
times(x) <- value
# S3 method for simList
time(x, unit, ...)
time(x) <- value
# S4 method for simList
time(x) <- value
end(x, ...)
# S3 method for simList
end(x, unit, ...)
end(x) <- value
# S4 method for simList
end(x) <- value
start(x, ...)
# S3 method for simList
start(x, unit = NULL, ...)
start(x) <- value
# S4 method for simList
start(x) <- value
timeunit(x)
# S4 method for simList
timeunit(x)
timeunit(x) <- value
# S4 method for simList
timeunit(x) <- value
timeunits(x)
# S4 method for simList
timeunits(x)
elapsedTime(x, ...)
# S3 method for simList
elapsedTime(x, byEvent = TRUE, units = "auto", ...)
Returns or sets the value of the slot from the simList
object.
A simList
Additional parameters.
A time, given as a numeric, optionally with a unit attribute, but this will be deduced from the model time units or module time units (if used within a module).
Character. One of the time units used in SpaDES
.
Logical. If TRUE
, the elapsed time will be by module and event;
FALSE
will report only by module. Default is TRUE
.
character string. Units in which the results are desired. Can be abbreviated.
Alex Chubaty and Eliot McIntire
timeunit
will extract the current units of the time used in a
simulation (i.e., within a spades
call).
If it is set within a simInit
, e.g.,
times=list(start=0, end=52, timeunit = "week")
, it will set the
units for that simulation.
By default, a simInit
call will use the smallest unit contained within
the metadata for the modules being used. If there are parent modules, then the
parent module timeunit will be used even if one of its children is a smaller timeunit.
If all modules, including parents, are set to NA
, timeunit
defaults to seconds.
If parents are set to NA
, then the set of modules defined by that parent module
will be given the smallest units of the children.
Currently, available units are "second", "hours", day", "week", "month", and "year" can be used in the metadata of a module.
The user can also define a new unit. The unit name can be anything, but the
function definition must be of the form dunitName
, e.g., dyear
or dfortnight
.
The unit name is the part without the d
and the function name definition
includes the d
. This new function, e.g.,
dfortnight <- function(x) lubridate::duration(dday(14))
can be placed anywhere in the search path or in a module.
timeunits
will extract the current units of the time of all
modules used in a simulation.
This is different from timeunit
because it is not necessarily
associated with a spades
call.
In many cases, the "simpler" use of each of these functions may be slower
computationally. For instance, it is much faster to use time(sim, "year")
than time(sim)
. So as a module developer, it is advantageous to
write out the longer one, minimizing the looking up that R must do.
SpaDES.core-package, specifically the section 1.2.5 on Simulation times;
elapsedTime()
,
Other functions to access elements of a 'simList' object:
.addDepends()
,
checkpointFile()
,
envir()
,
events()
,
globals()
,
inputs()
,
modules()
,
objs()
,
packages()
,
params()
,
paths()
,
progressInterval()
# Elapsed Time
s1 <- simInit()
s2 <- spades(s1)
elapsedTime(s2)
elapsedTime(s2, units = "mins")
Run the code above in your browser using DataLab