summaryrefslogtreecommitdiff
path: root/packages/sundials/src/Numeric/Sundials/ARKode/ODE.hs
diff options
context:
space:
mode:
Diffstat (limited to 'packages/sundials/src/Numeric/Sundials/ARKode/ODE.hs')
-rw-r--r--packages/sundials/src/Numeric/Sundials/ARKode/ODE.hs22
1 files changed, 22 insertions, 0 deletions
diff --git a/packages/sundials/src/Numeric/Sundials/ARKode/ODE.hs b/packages/sundials/src/Numeric/Sundials/ARKode/ODE.hs
index 380b1d6..f6f6884 100644
--- a/packages/sundials/src/Numeric/Sundials/ARKode/ODE.hs
+++ b/packages/sundials/src/Numeric/Sundials/ARKode/ODE.hs
@@ -105,6 +105,7 @@
105module Numeric.Sundials.ARKode.ODE ( odeSolve 105module Numeric.Sundials.ARKode.ODE ( odeSolve
106 , odeSolveV 106 , odeSolveV
107 , odeSolveVWith 107 , odeSolveVWith
108 , odeSolveVWith'
108 , ButcherTable(..) 109 , ButcherTable(..)
109 , butcherTable 110 , butcherTable
110 , ODEMethod(..) 111 , ODEMethod(..)
@@ -289,6 +290,27 @@ odeSolve f y0 ts =
289 nC = length y0 290 nC = length y0
290 g t x0 = V.fromList $ f t (V.toList x0) 291 g t x0 = V.fromList $ f t (V.toList x0)
291 292
293odeSolveVWith' ::
294 ODEMethod
295 -> StepControl
296 -> Maybe Double -- ^ initial step size - by default, ARKode
297 -- estimates the initial step size to be the
298 -- solution \(h\) of the equation
299 -- \(\|\frac{h^2\ddot{y}}{2}\| = 1\), where
300 -- \(\ddot{y}\) is an estimated value of the second
301 -- derivative of the solution at \(t_0\)
302 -> (Double -> V.Vector Double -> V.Vector Double) -- ^ The RHS of the system \(\dot{y} = f(t,y)\)
303 -> V.Vector Double -- ^ Initial conditions
304 -> V.Vector Double -- ^ Desired solution times
305 -> Matrix Double -- ^ Error code or solution
306odeSolveVWith' method control initStepSize f y0 tt =
307 case odeSolveVWith method control initStepSize f y0 tt of
308 Left c -> error $ show c -- FIXME
309 Right (v, _d) -> (nR >< nC) (V.toList v)
310 where
311 nR = V.length tt
312 nC = V.length y0
313
292odeSolveVWith :: 314odeSolveVWith ::
293 ODEMethod 315 ODEMethod
294 -> StepControl 316 -> StepControl