# cvsolve: cvsolve In sundialr: An Interface to 'SUNDIALS' Ordinary Differential Equation (ODE) Solvers

## Description

CVSOLVE solver to solve stiff ODEs with discontinuties

## Usage

 ```1 2 3 4 5 6 7 8 9``` ```cvsolve( time_vector, IC, input_function, Parameters, Events = NULL, reltolerance = 1e-04, abstolerance = 1e-04 ) ```

## Arguments

 `time_vector` time vector `IC` Initial Conditions `input_function` Right Hand Side function of ODEs `Parameters` Parameters input to ODEs `Events` Discontinuities in the solution (a DataFrame, default value is NULL) `reltolerance` Relative Tolerance (a scalar, default value = 1e-04) `abstolerance` Absolute Tolerance (a scalar or vector with length equal to ydot, default = 1e-04)

## Examples

 ``` 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26``` ```# Example of solving a set of ODEs with multiple discontinuities using cvsolve # A simple One dimensional equation, y = -0.1 * y # ODEs described by an R function ODE_R <- function(t, y, p){ # vector containing the right hand side gradients ydot = vector(mode = "numeric", length = length(y)) # R indices start from 1 ydot[1] = -p[1]*y[1] ydot } # R code to generate time vector, IC and solve the equations TSAMP <- seq(from = 0, to = 100, by = 0.1) # sampling time points IC <- c(1) params <- c(0.1) # A dataset describing the dosing at times at which additions to y[1] are to be done # Names of the columns don't matter, but they MUST be in the order of state index, # times and Values at discontinuity. TDOSE <- data.frame(ID = 1, TIMES = c(0, 10, 20, 30, 40, 50), VAL = 100) df1 <- cvsolve(TSAMP, c(1), ODE_R, params) # solving without any discontinuity df2 <- cvsolve(TSAMP, c(1), ODE_R, params, TDOSE) # solving with discontinuity ```

sundialr documentation built on May 16, 2021, 5:06 p.m.