R: Evaluates a Residual Derivative Function Represented in a DLL

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 `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 `func` and `jacfunc` present in the DLL, via argument `rpar`,
`ipar` | a vector with integer values passed to the DLL-function `func` and `jacfunc` present in the DLL, via function argument `ipar`,
`nout` | the number of output variables.
`outnames` | only used if ‘dllname’ is specified and `nout` > 0: the names of output variables calculated in the compiled function `func`, present in the shared library.
`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(`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 in ‘dllname’. It MUST be present if `forcings` has been given a value. See package vignette `"compiledCode"`.
`fcontrol` | A list of control parameters for the forcing functions. See package vignette `"compiledCode"`.

### 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"))

[Package deSolve version 1.21 Index]