diff options
author | Dominic Steinitz <dominic@steinitz.org> | 2018-05-03 08:14:30 +0100 |
---|---|---|
committer | Dominic Steinitz <dominic@steinitz.org> | 2018-05-03 08:14:30 +0100 |
commit | 686bd51792648dee967c611225cb1a59efa6b1c2 (patch) | |
tree | 01cf740b4d93ae2668c5f320f207387661cd29ca /packages | |
parent | 4ba859636396d211637b5507f19722b6953656a5 (diff) |
Improve documentation
Diffstat (limited to 'packages')
-rw-r--r-- | packages/sundials/src/Numeric/Sundials/ARKode/ODE.hs | 51 |
1 files changed, 49 insertions, 2 deletions
diff --git a/packages/sundials/src/Numeric/Sundials/ARKode/ODE.hs b/packages/sundials/src/Numeric/Sundials/ARKode/ODE.hs index ce46968..fafc237 100644 --- a/packages/sundials/src/Numeric/Sundials/ARKode/ODE.hs +++ b/packages/sundials/src/Numeric/Sundials/ARKode/ODE.hs | |||
@@ -20,8 +20,7 @@ | |||
20 | -- Stability : provisional | 20 | -- Stability : provisional |
21 | -- | 21 | -- |
22 | -- Solution of ordinary differential equation (ODE) initial value problems. | 22 | -- Solution of ordinary differential equation (ODE) initial value problems. |
23 | -- | 23 | -- See <https://computation.llnl.gov/projects/sundials/sundials-software> for more detail. |
24 | -- <https://computation.llnl.gov/projects/sundials/sundials-software> | ||
25 | -- | 24 | -- |
26 | -- A simple example: | 25 | -- A simple example: |
27 | -- | 26 | -- |
@@ -65,6 +64,54 @@ | |||
65 | -- (renderAxis $ lSaxis $ [0.0, 0.1 .. 10.0]:(toLists $ tr res1)) | 64 | -- (renderAxis $ lSaxis $ [0.0, 0.1 .. 10.0]:(toLists $ tr res1)) |
66 | -- @ | 65 | -- @ |
67 | -- | 66 | -- |
67 | -- With Sundials ARKode, it is possible to retrieve the Butcher tableau for the solver. | ||
68 | -- | ||
69 | -- @ | ||
70 | -- import Numeric.Sundials.ARKode.ODE | ||
71 | -- import Numeric.LinearAlgebra | ||
72 | -- | ||
73 | -- import Data.List (intercalate) | ||
74 | -- | ||
75 | -- import Text.PrettyPrint.HughesPJClass | ||
76 | -- | ||
77 | -- | ||
78 | -- butcherTableauTex :: ButcherTable -> String | ||
79 | -- butcherTableauTex (ButcherTable m c b b2) = | ||
80 | -- render $ | ||
81 | -- vcat [ text ("\n\\begin{array}{c|" ++ (concat $ replicate n "c") ++ "}") | ||
82 | -- , us | ||
83 | -- , text "\\hline" | ||
84 | -- , text bs <+> text "\\\\" | ||
85 | -- , text b2s <+> text "\\\\" | ||
86 | -- , text "\\end{array}" | ||
87 | -- ] | ||
88 | -- where | ||
89 | -- n = rows m | ||
90 | -- rs = toLists m | ||
91 | -- ss = map (\r -> intercalate " & " $ map show r) rs | ||
92 | -- ts = zipWith (\i r -> show i ++ " & " ++ r) (toList c) ss | ||
93 | -- us = vcat $ map (\r -> text r <+> text "\\\\") ts | ||
94 | -- bs = " & " ++ (intercalate " & " $ map show $ toList b) | ||
95 | -- b2s = " & " ++ (intercalate " & " $ map show $ toList b2) | ||
96 | -- | ||
97 | -- main :: IO () | ||
98 | -- main = do | ||
99 | -- | ||
100 | -- let res = butcherTable (SDIRK_2_1_2 undefined) | ||
101 | -- putStrLn $ show res | ||
102 | -- putStrLn $ butcherTableauTex res | ||
103 | -- | ||
104 | -- let resA = butcherTable (KVAERNO_4_2_3 undefined) | ||
105 | -- putStrLn $ show resA | ||
106 | -- putStrLn $ butcherTableauTex resA | ||
107 | -- | ||
108 | -- let resB = butcherTable (SDIRK_5_3_4 undefined) | ||
109 | -- putStrLn $ show resB | ||
110 | -- putStrLn $ butcherTableauTex resB | ||
111 | -- @ | ||
112 | -- | ||
113 | -- Using the code above from the examples gives | ||
114 | -- | ||
68 | -- KVAERNO_4_2_3 | 115 | -- KVAERNO_4_2_3 |
69 | -- | 116 | -- |
70 | -- \[ | 117 | -- \[ |