When you go to the next steps, try things out… ask some of these questions:
downloadModule("caribou2Movements", path = tmpdir) downloadModule("wolfAlps", path = tmpdir) # ignore warning about file size # Can open the .Rmd (how to run it) or .R (module code) file.edit(file.path(tmpdir, "caribou2Movements", "caribou2Movements.Rmd")) file.edit(file.path(tmpdir, "wolfAlps", "wolfAlps.Rmd"))
?spadeshas new section on debugging that complements the above wiki
A model (as defined in the
SpaDES world) consists of multiple interacting components (sub-models), which in the vocabulary of
SpaDES we have been referring to as ‘modules’
One could imagine an example model:
And we would give this ensemble of modules a name, like “LCC2005” (or maybe even a better name, but we will go with this)
SpaDESdevelopers) create problems?
moduleRepo/ |_ childModuleA1/ |_ childModuleA2/ |_ childModuleB1/ |_ childModuleB2/ |_ grandparentModule/ |_ parentModuleA/ |_ parentModuleB/
If you restarted your R session, first prepare the global setup again:
Then, prepare the simulation:
# setup simulation times <- list(start = 2005.0, end = 2015.0, timeunit = "year") parameters <- list( .globals = list(burnStats = "fireStats"), fireSpreadLcc = list(drought = 1.2), caribouMovementLcc = list(N = 1e3, startTime = times$start + 1, glmInitialTime = NA_real_) ) modules <- list("LCC2005") paths <- list( cachePath = getPaths()$cachePath, modulePath = getPaths()$modulePath, inputPath = getPaths()$inputPath, outputPath = getPaths()$outputPath ) mySim <- simInit(modules = modules, paths = paths, params = parameters, times = times)
The LCC2005 is a parent module that contains several children (What are they?). Now make a new parent module from several of the LCC2005 modules, but without, say, fire.
Go ahead and open the LCC2005NoFire.R and check the child modules in the metadata.
There are a few tools that can help visualize the relationships between modules:
newModule function creates a module template for you to edit to suit your needs:
Alternatively, use the RStudio addin which is simply a GUI wrapper for this function (select ‘parent’ type):
The new CFS-FD model (Forest Dynamics Model)
Has carbon, caribou, vegetation change, harvesting, climate, fire, insects
But the vegetation module is actually a parent module with 3 modules:
fire module is actually 4 modules:
make a child module that does all the stuff you might think of as parent module content, add appropriate data dependencies
(i.e., outputs are required by the other modules as inputs)