Evaluates a Residual Derivative Function Represented in a DLL
DLLres.RdCalls 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
func,- 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
funcandjacfuncpresent in the DLL, via argumentrpar,- ipar
a vector with integer values passed to the DLL-function
funcandjacfuncpresent in the DLL, via function argumentipar,- nout
the number of output variables.
- outnames
only used if
dllnameis specified andnout> 0: the names of output variables calculated in the compiled functionfunc, present in the shared library.- forcings
only used if
dllnameis specified: a list with the forcing function data sets, each present as a two-columned matrix, with (time,value); interpolation outside the interval [min(times), max(times)] is done by taking the value at the closest data extreme.See package vignette
"compiledCode".- initforc
if not
NULL, the name of the forcing function initialisation function, as provided indllname. It MUST be present ifforcingshas been given a value. See package vignette"compiledCode".- fcontrol
A list of control parameters for the forcing functions. See package vignette
"compiledCode".
Value
a list containing:
- res
the residual of derivative estimated by the function
- var
the ordinary output variables of the function
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.
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"))
#> $delta
#> A B D.K
#> 0.00 -3.00 0.12
#>
#> $var
#> CONC Prod
#> 11.00 0.12
#>