compile {rodeo} | R Documentation |
Generate Executable Code
Description
Creates and 'compiles' a function for use with numerical methods from
package deSolve
or rootSolve
.
Arguments
sources |
Name(s) of source files(s) where functions appearing in
process rates or stoichiometric factors are implemented. Can be |
fortran |
If |
target |
Name of a 'target environment'. Currently, 'deSolve' is the only supported value. |
lib |
File path to be used for the generated library (without the platform specific extension). Note that any uppercase characters will be converted to lowercase. By default, the file is created in R's temporary folder under a random name. |
reuse |
If |
Value
invisible(NULL)
Note
The expected language of the external code passed in sources
depends on the value of fortran
.
If fortran
is FALSE
, R code is generated and made executable
by eval
and parse
. Auxiliary code
passed via sources
is made available via source
.
The created R function is stored in the object.
If fortran
is TRUE
, the external code passed in
sources
must implement a module with the fixed name 'functions'.
This module must contain all user-defined functions referenced in process
rates or stoichiometric factors.
If fortran
is TRUE
, a shared library is created. The library
is immediately loaded with dyn.load
and it is
automatically unloaded with dyn.unload
when the
object's finalize
method is called.
The name of the library (base name without extension) as well as the name
of the function to compute the derivatives are stored in the object.
These names can be queried with the
libName
and libFunc
methods, respectively.
Unless a file path is specified via the lib
argument, the library is
created in the folder returned by tempdir
under a
unique random name.
Author(s)
See Also
This method internally calls generate
.
Examples
data(vars, pars, funs, pros, stoi)
model <- rodeo$new(vars, pars, funs, pros, stoi, dim=c(1))
# This would trigger compilation assuming that 'functionsCode.f95' contains
# a Fortran implementation of all functions; see vignette for full example
## Not run:
model$compile(sources="functionsCode.f95")
## End(Not run)