DLLres {deSolve} | R Documentation |
Evaluates a Residual Derivative Function Represented in a DLL
Description
Calls a residual function, F(t,y,y')
of a DAE system
(differential algebraic equations) defined in a compiled language as a
DLL.
To be used for testing the implementation of DAE problems in compiled code
Usage
DLLres(res, times, y, dy, parms, dllname,
initfunc = dllname, rpar = NULL, ipar = NULL, nout = 0,
outnames = NULL, forcings = NULL, initforc = NULL,
fcontrol = NULL)
Arguments
res |
the name of the function in the dynamically loaded shared library, |
times |
first value = the time at which the function needs to be evaluated, |
y |
the values of the dependent variables for which the function needs to be evaluated, |
dy |
the derivative of the values of the dependent variables for which the function needs to be evaluated, |
parms |
the parameters that are passed to the initialiser function, |
dllname |
a string giving the name of the shared library (without
extension) that contains the compiled function or subroutine definitions
referred to in |
initfunc |
if not NULL, the name of the initialisation function (which initialises values of parameters), as provided in ‘dllname’. See details, |
rpar |
a vector with double precision values passed to the
DLL-function |
ipar |
a vector with integer values passed to the DLL-function
|
nout |
the number of output variables. |
outnames |
only used if ‘dllname’ is specified and
|
forcings |
only used if ‘dllname’ is specified: a list with
the forcing function data sets, each present as a two-columned matrix,
with (time,value); interpolation outside the interval
[min( See package vignette |
initforc |
if not |
fcontrol |
A list of control parameters for the forcing functions.
See package vignette |
Details
This function is meant to help developing FORTRAN or C models that are to be
used to solve differential algebraic equations (DAE) in
package deSolve
.
Value
a list containing:
res |
the residual of derivative estimated by the function |
var |
the ordinary output variables of the function |
Author(s)
Karline Soetaert <karline.soetaert@nioz.nl>
See Also
daspk to solve DAE problems
Examples
## =========================================================================
## Residuals from the daspk chemical model, production a forcing function
## =========================================================================
## Parameter values and initial conditions
## see example(daspk) for a more comprehensive implementation
pars <- c(K = 1, ka = 1e6, r = 1)
## Initial conc; D is in equilibrium with A,B
y <- c(A = 2, B = 3, D = 2 * 3/pars["K"])
## Initial rate of change
dy <- c(dA = 0, dB = 0, dD = 0)
## production increases with time
prod <- matrix(ncol = 2,
data = c(seq(0, 100, by = 10), seq(0.1, 0.5, len = 11)))
DLLres(y = y, dy = dy, times = 5, res = "chemres",
dllname = "deSolve", initfunc = "initparms",
initforc = "initforcs", parms = pars, forcings = prod,
nout = 2, outnames = c("CONC", "Prod"))