diff-grok 1.1.0 → 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (231) hide show
  1. package/.claude/skills/license-updater/SKILL.md +149 -0
  2. package/.claude/skills/license-updater/references/compatibility.md +68 -0
  3. package/.claude/skills/license-updater/references/templates.md +151 -0
  4. package/.claude/skills/license-updater/scripts/generate_license_files.py +467 -0
  5. package/CLAUDE.md +10 -4
  6. package/LICENSE +1 -1
  7. package/README.MD +41 -23
  8. package/THIRD_PARTY_LICENSES +135 -0
  9. package/docs/.nojekyll +1 -0
  10. package/docs/assets/hierarchy.js +1 -0
  11. package/docs/assets/highlight.css +99 -0
  12. package/docs/assets/icons.js +18 -0
  13. package/docs/assets/icons.svg +1 -0
  14. package/docs/assets/main.js +60 -0
  15. package/docs/assets/navigation.js +1 -0
  16. package/docs/assets/search.js +1 -0
  17. package/docs/assets/style.css +1633 -0
  18. package/docs/classes/BasicModelPipelineCreator.html +10 -0
  19. package/docs/classes/Callback.html +7 -0
  20. package/docs/classes/CyclicModelPipelineCreator.html +10 -0
  21. package/docs/classes/IterCheckerCallback.html +8 -0
  22. package/docs/classes/PipelineCreator.html +6 -0
  23. package/docs/classes/TimeCheckerCallback.html +8 -0
  24. package/docs/classes/UpdatesModelPipelineCreator.html +10 -0
  25. package/docs/functions/ab4.html +8 -0
  26. package/docs/functions/ab5.html +8 -0
  27. package/docs/functions/applyPipeline.html +9 -0
  28. package/docs/functions/getCallback.html +3 -0
  29. package/docs/functions/getIVP.html +6 -0
  30. package/docs/functions/getInputVector.html +2 -0
  31. package/docs/functions/getIvp2WebWorker.html +6 -0
  32. package/docs/functions/getJScode.html +6 -0
  33. package/docs/functions/getOutputNames.html +4 -0
  34. package/docs/functions/getPipelineCreator.html +7 -0
  35. package/docs/functions/lsoda.html +8 -0
  36. package/docs/functions/mrt.html +11 -0
  37. package/docs/functions/printE5.html +76 -0
  38. package/docs/functions/printHires.html +76 -0
  39. package/docs/functions/printOrego.html +66 -0
  40. package/docs/functions/printPollution.html +163 -0
  41. package/docs/functions/printRobertson.html +60 -0
  42. package/docs/functions/printVdpol.html +66 -0
  43. package/docs/functions/rk3.html +8 -0
  44. package/docs/functions/rk4.html +8 -0
  45. package/docs/functions/rkdp.html +8 -0
  46. package/docs/functions/ros34prw.html +8 -0
  47. package/docs/functions/ros3prw.html +8 -0
  48. package/docs/functions/solveIvp.html +5 -0
  49. package/docs/hierarchy.html +1 -0
  50. package/docs/index.html +768 -0
  51. package/docs/media/CONTRIBUTING.md +74 -0
  52. package/docs/media/E5.png +0 -0
  53. package/docs/media/HIRES.png +0 -0
  54. package/docs/media/OREGO.png +0 -0
  55. package/docs/media/POLL-full.png +0 -0
  56. package/docs/media/POLL.png +0 -0
  57. package/docs/media/ROBER.png +0 -0
  58. package/docs/media/VDP0L.png +0 -0
  59. package/docs/media/VDPOL.png +0 -0
  60. package/docs/media/acid-prod.gif +0 -0
  61. package/docs/media/basic-use.js +40 -0
  62. package/docs/media/basic-use.js.map +1 -0
  63. package/docs/media/basic-use.ts +44 -0
  64. package/docs/media/check-methods.js +59 -0
  65. package/docs/media/check-methods.js.map +1 -0
  66. package/docs/media/check-methods.ts +81 -0
  67. package/docs/media/corr-probs.js +132 -0
  68. package/docs/media/corr-probs.js.map +1 -0
  69. package/docs/media/corr-probs.ts +155 -0
  70. package/docs/media/cyclic-model.js +102 -0
  71. package/docs/media/cyclic-model.js.map +1 -0
  72. package/docs/media/cyclic-model.ts +112 -0
  73. package/docs/media/e5.js +36 -0
  74. package/docs/media/e5.js.map +1 -0
  75. package/docs/media/e5.ts +36 -0
  76. package/docs/media/hires.js +39 -0
  77. package/docs/media/hires.js.map +1 -0
  78. package/docs/media/hires.ts +40 -0
  79. package/docs/media/model-updates.js +112 -0
  80. package/docs/media/model-updates.js.map +1 -0
  81. package/docs/media/model-updates.ts +122 -0
  82. package/docs/media/orego.js +24 -0
  83. package/docs/media/orego.js.map +1 -0
  84. package/docs/media/orego.ts +25 -0
  85. package/docs/media/pipeline-use.js +87 -0
  86. package/docs/media/pipeline-use.js.map +1 -0
  87. package/docs/media/pipeline-use.ts +98 -0
  88. package/docs/media/pollution.js +132 -0
  89. package/docs/media/pollution.js.map +1 -0
  90. package/docs/media/pollution.ts +133 -0
  91. package/docs/media/print-benchmark.js +581 -0
  92. package/docs/media/print-benchmark.js.map +1 -0
  93. package/docs/media/print-benchmark.ts +594 -0
  94. package/docs/media/robertson.js +19 -0
  95. package/docs/media/robertson.js.map +1 -0
  96. package/docs/media/robertson.ts +19 -0
  97. package/docs/media/scripting.js +30 -0
  98. package/docs/media/scripting.js.map +1 -0
  99. package/docs/media/scripting.ts +35 -0
  100. package/docs/media/vdpol.js +17 -0
  101. package/docs/media/vdpol.js.map +1 -0
  102. package/docs/media/vdpol.ts +17 -0
  103. package/docs/modules.html +1 -0
  104. package/docs/types/Arg.html +12 -0
  105. package/docs/types/DifEqs.html +8 -0
  106. package/docs/types/Func.html +7 -0
  107. package/docs/types/IVP.html +40 -0
  108. package/docs/types/IVP2WebWorker.html +12 -0
  109. package/docs/types/Input.html +8 -0
  110. package/docs/types/Loop.html +7 -0
  111. package/docs/types/ODEs.html +31 -0
  112. package/docs/types/Output.html +6 -0
  113. package/docs/types/Pipeline.html +6 -0
  114. package/docs/types/SolverOptions.html +8 -0
  115. package/docs/types/Update.html +9 -0
  116. package/docs/types/Wrapper.html +8 -0
  117. package/index.js +1 -1
  118. package/index.js.map +1 -1
  119. package/index.ts +1 -1
  120. package/package.json +4 -2
  121. package/src/examples/check-methods.js +15 -3
  122. package/src/examples/check-methods.js.map +1 -1
  123. package/src/examples/check-methods.ts +18 -3
  124. package/src/solver-tools/cvode/common.js +487 -0
  125. package/src/solver-tools/cvode/common.js.map +1 -0
  126. package/src/solver-tools/cvode/common.ts +549 -0
  127. package/src/solver-tools/cvode/cvode.js +1062 -0
  128. package/src/solver-tools/cvode/cvode.js.map +1 -0
  129. package/src/solver-tools/cvode/cvode.ts +1226 -0
  130. package/src/solver-tools/cvode/cvode_adams.js +124 -0
  131. package/src/solver-tools/cvode/cvode_adams.js.map +1 -0
  132. package/src/solver-tools/cvode/cvode_adams.ts +142 -0
  133. package/src/solver-tools/cvode/cvode_bdf.js +153 -0
  134. package/src/solver-tools/cvode/cvode_bdf.js.map +1 -0
  135. package/src/solver-tools/cvode/cvode_bdf.ts +164 -0
  136. package/src/solver-tools/cvode/cvode_class.js +158 -0
  137. package/src/solver-tools/cvode/cvode_class.js.map +1 -0
  138. package/src/solver-tools/cvode/cvode_class.ts +271 -0
  139. package/src/solver-tools/cvode/cvode_hin.js +119 -0
  140. package/src/solver-tools/cvode/cvode_hin.js.map +1 -0
  141. package/src/solver-tools/cvode/cvode_hin.ts +150 -0
  142. package/src/solver-tools/cvode/cvode_io.js +203 -0
  143. package/src/solver-tools/cvode/cvode_io.js.map +1 -0
  144. package/src/solver-tools/cvode/cvode_io.ts +258 -0
  145. package/src/solver-tools/cvode/cvode_ls.js +210 -0
  146. package/src/solver-tools/cvode/cvode_ls.js.map +1 -0
  147. package/src/solver-tools/cvode/cvode_ls.ts +249 -0
  148. package/src/solver-tools/cvode/cvode_nls.js +220 -0
  149. package/src/solver-tools/cvode/cvode_nls.js.map +1 -0
  150. package/src/solver-tools/cvode/cvode_nls.ts +259 -0
  151. package/src/solver-tools/cvode/cvode_root.js +415 -0
  152. package/src/solver-tools/cvode/cvode_root.js.map +1 -0
  153. package/src/solver-tools/cvode/cvode_root.ts +503 -0
  154. package/src/solver-tools/cvode/dense_linalg.js +131 -0
  155. package/src/solver-tools/cvode/dense_linalg.js.map +1 -0
  156. package/src/solver-tools/cvode/dense_linalg.ts +144 -0
  157. package/src/solver-tools/cvode/index.js +26 -0
  158. package/src/solver-tools/cvode/index.js.map +1 -0
  159. package/src/solver-tools/cvode/index.ts +64 -0
  160. package/src/solver-tools/cvode-method.js +114 -0
  161. package/src/solver-tools/cvode-method.js.map +1 -0
  162. package/src/solver-tools/cvode-method.ts +129 -0
  163. package/src/solver-tools/index.js +1 -0
  164. package/src/solver-tools/index.js.map +1 -1
  165. package/src/solver-tools/index.ts +1 -0
  166. package/src/solver-tools/lsoda/blas.js +11 -0
  167. package/src/solver-tools/lsoda/blas.js.map +1 -1
  168. package/src/solver-tools/lsoda/blas.ts +12 -0
  169. package/src/solver-tools/lsoda/cfode.js +11 -0
  170. package/src/solver-tools/lsoda/cfode.js.map +1 -1
  171. package/src/solver-tools/lsoda/cfode.ts +12 -0
  172. package/src/solver-tools/lsoda/corfailure.js +11 -0
  173. package/src/solver-tools/lsoda/corfailure.js.map +1 -1
  174. package/src/solver-tools/lsoda/corfailure.ts +12 -0
  175. package/src/solver-tools/lsoda/correction.js +11 -0
  176. package/src/solver-tools/lsoda/correction.js.map +1 -1
  177. package/src/solver-tools/lsoda/correction.ts +12 -0
  178. package/src/solver-tools/lsoda/dense.js +11 -0
  179. package/src/solver-tools/lsoda/dense.js.map +1 -1
  180. package/src/solver-tools/lsoda/dense.ts +12 -0
  181. package/src/solver-tools/lsoda/index.js +11 -0
  182. package/src/solver-tools/lsoda/index.js.map +1 -1
  183. package/src/solver-tools/lsoda/index.ts +12 -0
  184. package/src/solver-tools/lsoda/intdy.js +11 -0
  185. package/src/solver-tools/lsoda/intdy.js.map +1 -1
  186. package/src/solver-tools/lsoda/intdy.ts +12 -0
  187. package/src/solver-tools/lsoda/lsoda.js +11 -0
  188. package/src/solver-tools/lsoda/lsoda.js.map +1 -1
  189. package/src/solver-tools/lsoda/lsoda.ts +12 -0
  190. package/src/solver-tools/lsoda/methodswitch.js +11 -0
  191. package/src/solver-tools/lsoda/methodswitch.js.map +1 -1
  192. package/src/solver-tools/lsoda/methodswitch.ts +12 -0
  193. package/src/solver-tools/lsoda/orderswitch.js +11 -0
  194. package/src/solver-tools/lsoda/orderswitch.js.map +1 -1
  195. package/src/solver-tools/lsoda/orderswitch.ts +12 -0
  196. package/src/solver-tools/lsoda/prja.js +11 -0
  197. package/src/solver-tools/lsoda/prja.js.map +1 -1
  198. package/src/solver-tools/lsoda/prja.ts +12 -0
  199. package/src/solver-tools/lsoda/scaleh.js +11 -0
  200. package/src/solver-tools/lsoda/scaleh.js.map +1 -1
  201. package/src/solver-tools/lsoda/scaleh.ts +12 -0
  202. package/src/solver-tools/lsoda/solsy.js +11 -0
  203. package/src/solver-tools/lsoda/solsy.js.map +1 -1
  204. package/src/solver-tools/lsoda/solsy.ts +12 -0
  205. package/src/solver-tools/lsoda/stoda.js +11 -0
  206. package/src/solver-tools/lsoda/stoda.js.map +1 -1
  207. package/src/solver-tools/lsoda/stoda.ts +12 -0
  208. package/src/solver-tools/lsoda-method.js +23 -9
  209. package/src/solver-tools/lsoda-method.js.map +1 -1
  210. package/src/solver-tools/lsoda-method.ts +27 -9
  211. package/src/solver-tools/solver-defs.js +1 -0
  212. package/src/solver-tools/solver-defs.js.map +1 -1
  213. package/src/solver-tools/solver-defs.ts +1 -0
  214. package/src/tests/cvode-lib-correctness.test.js +404 -0
  215. package/src/tests/cvode-lib-correctness.test.js.map +1 -0
  216. package/src/tests/cvode-lib-correctness.test.ts +505 -0
  217. package/src/tests/cvode-lib-performance.test.js +103 -0
  218. package/src/tests/cvode-lib-performance.test.js.map +1 -0
  219. package/src/tests/cvode-lib-performance.test.ts +128 -0
  220. package/src/tests/performance.test.js +4 -2
  221. package/src/tests/performance.test.js.map +1 -1
  222. package/src/tests/performance.test.ts +4 -2
  223. package/src/tests/test-defs.js +7 -1
  224. package/src/tests/test-defs.js.map +1 -1
  225. package/src/tests/test-defs.ts +8 -1
  226. package/src/worker-tools/solving.js +3 -1
  227. package/src/worker-tools/solving.js.map +1 -1
  228. package/src/worker-tools/solving.ts +4 -1
  229. package/src/examples/bioreactor.js +0 -125
  230. package/src/examples/bioreactor.js.map +0 -1
  231. package/src/examples/bioreactor.ts +0 -132
@@ -0,0 +1,7 @@
1
+ <!DOCTYPE html><html class="default" lang="en" data-base="../"><head><meta charset="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>getPipelineCreator | diff-grok - v1.1.0</title><meta name="description" content="Documentation for diff-grok"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="../assets/style.css"/><link rel="stylesheet" href="../assets/highlight.css"/><script defer src="../assets/main.js"></script><script async src="../assets/icons.js" id="tsd-icons-script"></script><script async src="../assets/search.js" id="tsd-search-script"></script><script async src="../assets/navigation.js" id="tsd-nav-script"></script><script async src="../assets/hierarchy.js" id="tsd-hierarchy-script"></script></head><body><script>document.documentElement.dataset.theme = localStorage.getItem("tsd-theme") || "os";document.body.style.display="none";setTimeout(() => window.app?app.showPage():document.body.style.removeProperty("display"),500)</script><header class="tsd-page-toolbar"><div class="tsd-toolbar-contents container"><a href="../index.html" class="title">diff-grok - v1.1.0</a><div id="tsd-toolbar-links"></div><button id="tsd-search-trigger" class="tsd-widget" aria-label="Search"><svg width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-search"></use></svg></button><dialog id="tsd-search" aria-label="Search"><input role="combobox" id="tsd-search-input" aria-controls="tsd-search-results" aria-autocomplete="list" aria-expanded="true" autocapitalize="off" autocomplete="off" placeholder="Search the docs" maxLength="100"/><ul role="listbox" id="tsd-search-results"></ul><div id="tsd-search-status" aria-live="polite" aria-atomic="true"><div>Preparing search index...</div></div></dialog><a href="#" class="tsd-widget menu" id="tsd-toolbar-menu-trigger" data-toggle="menu" aria-label="Menu"><svg width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-menu"></use></svg></a></div></header><div class="container container-main"><div class="col-content"><div class="tsd-page-title"><ul class="tsd-breadcrumb" aria-label="Breadcrumb"><li><a href="" aria-current="page">getPipelineCreator</a></li></ul><h1>Function getPipelineCreator</h1></div><section class="tsd-panel"><ul class="tsd-signatures"><li class=""><div class="tsd-signature tsd-anchor-link" id="getpipelinecreator"><span class="tsd-kind-call-signature">getPipelineCreator</span><span class="tsd-signature-symbol">(</span><span class="tsd-kind-parameter">ivp</span><span class="tsd-signature-symbol">:</span> <a href="../types/IVP.html" class="tsd-signature-type tsd-kind-type-alias">IVP</a><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">:</span> <a href="../classes/PipelineCreator.html" class="tsd-signature-type tsd-kind-class">PipelineCreator</a><a href="#getpipelinecreator" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></div><div class="tsd-description"><div class="tsd-comment tsd-typography"><p>Return pipeline creator specified by the initial value problem</p>
2
+ </div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><span><span class="tsd-kind-parameter">ivp</span>: <a href="../types/IVP.html" class="tsd-signature-type tsd-kind-type-alias">IVP</a></span><div class="tsd-comment tsd-typography"><p>initial value problem</p>
3
+ </div></li></ul></div><h4 class="tsd-returns-title">Returns <a href="../classes/PipelineCreator.html" class="tsd-signature-type tsd-kind-class">PipelineCreator</a></h4><p>a creator of computational pipeline corresponding to the given model</p>
4
+ <div class="tsd-comment tsd-typography"><div class="tsd-tag-example"><h4 class="tsd-anchor-link" id="example">Example<a href="#example" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h4><pre><code class="ts"><span class="hl-3">// Here, we consider modeling queues: https://en.wikipedia.org/wiki/M/M/c_queue</span><br/><span class="hl-4">import</span><span class="hl-1"> </span><span class="hl-6">*</span><span class="hl-1"> </span><span class="hl-4">as</span><span class="hl-1"> </span><span class="hl-5">DGL</span><span class="hl-1"> </span><span class="hl-4">from</span><span class="hl-1"> </span><span class="hl-2">&#39;diff-grok&#39;</span><span class="hl-1">;</span><br/><br/><span class="hl-3">// 1. Model specification: the M|M|2|2 model</span><br/><span class="hl-6">const</span><span class="hl-1"> </span><span class="hl-7">model</span><span class="hl-1"> = </span><span class="hl-2">`#name: M|M|2|2</span><br/><span class="hl-2">#description: Modelling the system with two servers &amp; two waiting places (EXPLAINED)</span><br/><br/><span class="hl-2">#equations:</span><br/><span class="hl-2"> dp0/dt = -la * p0 + mu * p1</span><br/><span class="hl-2"> dp1/dt = la * p0 - (la + mu) * p1 + 2 * mu * p2</span><br/><span class="hl-2"> dp2/dt = la * p1 - (la + 2 * mu) * p2 + 2 * mu * p3</span><br/><span class="hl-2"> dp3/dt = la * p2 - (la + 2 * mu) * p3 + 2 * mu * p4</span><br/><br/><span class="hl-2">#expressions:</span><br/><span class="hl-2"> la = 1 / arrival</span><br/><span class="hl-2"> mu = 1 / service</span><br/><span class="hl-2"> p4 = 1 - p0 - p1 - p2 - p3</span><br/><span class="hl-2"> busy = 1 - p0 - p1</span><br/><span class="hl-2"> queue = p3 + 2 * p4</span><br/><br/><span class="hl-2">#argument: t</span><br/><span class="hl-2"> _t0 = 0 {min: 0; max: 10; caption: start; category: Time; units: min} [Initial time of simulation]</span><br/><span class="hl-2"> _t1 = 60 {min: 20; max: 100; caption: finish; category: Time; units: min} [Final time of simulation]</span><br/><span class="hl-2"> _h = 1 {min: 0.01; max: 0.1; caption: step; category: Time; units: min} [Time step of simulation]</span><br/><br/><span class="hl-2">#inits:</span><br/><span class="hl-2"> p0 = 1 {min: 0; max: 1; category: Initial state; caption: empty} [Probability that initially there are NO customers]</span><br/><span class="hl-2"> p1 = 0 {min: 0; max: 1; category: Initial state; caption: single} [Probability that initially there is ONE customer]</span><br/><span class="hl-2"> p2 = 0 {min: 0; max: 1; category: Initial state; caption: two} [Probability that initially there are TWO customers]</span><br/><span class="hl-2"> p3 = 0 {min: 0; max: 1; category: Initial state; caption: three} [Probability that initially there are THREE customers]</span><br/><br/><span class="hl-2">#output:</span><br/><span class="hl-2"> t {caption: Time, min}</span><br/><span class="hl-2"> p0 {caption: P(Empty)}</span><br/><span class="hl-2"> busy {caption: P(Full load)}</span><br/><span class="hl-2"> queue {caption: E(Queue)}</span><br/><br/><span class="hl-2">#parameters:</span><br/><span class="hl-2"> arrival = 10 {min: 1; max: 100; category: Means; caption: arrival; units: min} [Mean arrival time]</span><br/><span class="hl-2"> service = 100 {min: 1; max: 100; category: Means; caption: service; units: min} [Mean service time]`</span><span class="hl-1">;</span><br/><br/><span class="hl-3">// 2. Generate IVP-objects: for the main thread &amp; for computations in webworkers</span><br/><span class="hl-6">const</span><span class="hl-1"> </span><span class="hl-7">ivp</span><span class="hl-1"> = </span><span class="hl-7">DGL</span><span class="hl-1">.</span><span class="hl-0">getIVP</span><span class="hl-1">(</span><span class="hl-5">model</span><span class="hl-1">);</span><br/><span class="hl-6">const</span><span class="hl-1"> </span><span class="hl-7">ivpWW</span><span class="hl-1"> = </span><span class="hl-7">DGL</span><span class="hl-1">.</span><span class="hl-0">getIvp2WebWorker</span><span class="hl-1">(</span><span class="hl-5">ivp</span><span class="hl-1">);</span><br/><br/><span class="hl-1"> </span><span class="hl-3">// 3. Perform computations</span><br/><span class="hl-4">try</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-3">// 3.1) Extract names of outputs</span><br/><span class="hl-1"> </span><span class="hl-6">const</span><span class="hl-1"> </span><span class="hl-7">outputNames</span><span class="hl-1"> = </span><span class="hl-7">DGL</span><span class="hl-1">.</span><span class="hl-0">getOutputNames</span><span class="hl-1">(</span><span class="hl-5">ivp</span><span class="hl-1">);</span><br/><span class="hl-1"> </span><span class="hl-6">const</span><span class="hl-1"> </span><span class="hl-7">outSize</span><span class="hl-1"> = </span><span class="hl-5">outputNames</span><span class="hl-1">.</span><span class="hl-5">length</span><span class="hl-1">;</span><br/><br/><span class="hl-1"> </span><span class="hl-3">// 3.2) Set model inputs</span><br/><span class="hl-1"> </span><span class="hl-6">const</span><span class="hl-1"> </span><span class="hl-7">inputs</span><span class="hl-1"> = {</span><br/><span class="hl-1"> </span><span class="hl-5">_t0:</span><span class="hl-1"> </span><span class="hl-9">0</span><span class="hl-1">, </span><span class="hl-3">// Initial time of simulation</span><br/><span class="hl-1"> </span><span class="hl-5">_t1:</span><span class="hl-1"> </span><span class="hl-9">60</span><span class="hl-1">, </span><span class="hl-3">// Final time of simulation</span><br/><span class="hl-1"> </span><span class="hl-5">_h:</span><span class="hl-1"> </span><span class="hl-9">1</span><span class="hl-1">, </span><span class="hl-3">// Time step of simulation</span><br/><span class="hl-1"> </span><span class="hl-5">p0:</span><span class="hl-1"> </span><span class="hl-9">1</span><span class="hl-1">, </span><span class="hl-3">// Probability that initially there are NO customers</span><br/><span class="hl-1"> </span><span class="hl-5">p1:</span><span class="hl-1"> </span><span class="hl-9">0</span><span class="hl-1">, </span><span class="hl-3">// Probability that initially there is ONE customer</span><br/><span class="hl-1"> </span><span class="hl-5">p2:</span><span class="hl-1"> </span><span class="hl-9">0</span><span class="hl-1">, </span><span class="hl-3">// Probability that initially there are TWO customers</span><br/><span class="hl-1"> </span><span class="hl-5">p3:</span><span class="hl-1"> </span><span class="hl-9">0</span><span class="hl-1">, </span><span class="hl-3">// Probability that initially there are THREE customers</span><br/><span class="hl-1"> </span><span class="hl-5">arrival:</span><span class="hl-1"> </span><span class="hl-9">10</span><span class="hl-1">, </span><span class="hl-3">// Mean arrival time</span><br/><span class="hl-1"> </span><span class="hl-5">service:</span><span class="hl-1"> </span><span class="hl-9">100</span><span class="hl-1">, </span><span class="hl-3">// Mean service time</span><br/><span class="hl-1"> };</span><br/><span class="hl-1"> </span><span class="hl-6">const</span><span class="hl-1"> </span><span class="hl-7">inputVector</span><span class="hl-1"> = </span><span class="hl-7">DGL</span><span class="hl-1">.</span><span class="hl-0">getInputVector</span><span class="hl-1">(</span><span class="hl-5">inputs</span><span class="hl-1">, </span><span class="hl-5">ivp</span><span class="hl-1">);</span><br/><br/><span class="hl-1"> </span><span class="hl-3">// 3.3) Create a pipeline</span><br/><span class="hl-1"> </span><span class="hl-6">const</span><span class="hl-1"> </span><span class="hl-7">creator</span><span class="hl-1"> = </span><span class="hl-7">DGL</span><span class="hl-1">.</span><span class="hl-0">getPipelineCreator</span><span class="hl-1">(</span><span class="hl-5">ivp</span><span class="hl-1">);</span><br/><span class="hl-1"> </span><span class="hl-6">const</span><span class="hl-1"> </span><span class="hl-7">pipeline</span><span class="hl-1"> = </span><span class="hl-5">creator</span><span class="hl-1">.</span><span class="hl-0">getPipeline</span><span class="hl-1">(</span><span class="hl-5">inputVector</span><span class="hl-1">);</span><br/><br/><span class="hl-1"> </span><span class="hl-3">// 3.4) Apply pipeline to perform computations</span><br/><span class="hl-1"> </span><span class="hl-6">const</span><span class="hl-1"> </span><span class="hl-7">solution</span><span class="hl-1"> = </span><span class="hl-7">DGL</span><span class="hl-1">.</span><span class="hl-0">applyPipeline</span><span class="hl-1">(</span><span class="hl-5">pipeline</span><span class="hl-1">, </span><span class="hl-5">ivpWW</span><span class="hl-1">, </span><span class="hl-5">inputVector</span><span class="hl-1">);</span><br/><span class="hl-1"> </span><span class="hl-3">// 3.5) Print results</span><br/><br/><span class="hl-1"> </span><span class="hl-3">// 3.5.1) Table header</span><br/><span class="hl-1"> </span><span class="hl-6">let</span><span class="hl-1"> </span><span class="hl-5">line</span><span class="hl-1"> = </span><span class="hl-2">&#39;&#39;</span><span class="hl-1">;</span><br/><span class="hl-1"> </span><span class="hl-5">outputNames</span><span class="hl-1">.</span><span class="hl-0">forEach</span><span class="hl-1">((</span><span class="hl-5">name</span><span class="hl-1">) </span><span class="hl-6">=&gt;</span><span class="hl-1"> </span><span class="hl-5">line</span><span class="hl-1"> += </span><span class="hl-5">name</span><span class="hl-1"> + </span><span class="hl-2">&#39; &#39;</span><span class="hl-1">);</span><br/><span class="hl-1"> </span><span class="hl-5">console</span><span class="hl-1">.</span><span class="hl-0">log</span><span class="hl-1">(</span><span class="hl-5">line</span><span class="hl-1">);</span><br/><br/><span class="hl-1"> </span><span class="hl-3">// 3.5.2) Table with solution</span><br/><span class="hl-1"> </span><span class="hl-6">const</span><span class="hl-1"> </span><span class="hl-7">length</span><span class="hl-1"> = </span><span class="hl-5">solution</span><span class="hl-1">[</span><span class="hl-9">0</span><span class="hl-1">].</span><span class="hl-5">length</span><span class="hl-1">;</span><br/><span class="hl-1"> </span><span class="hl-4">for</span><span class="hl-1"> (</span><span class="hl-6">let</span><span class="hl-1"> </span><span class="hl-5">i</span><span class="hl-1"> = </span><span class="hl-9">0</span><span class="hl-1">; </span><span class="hl-5">i</span><span class="hl-1"> &lt; </span><span class="hl-5">length</span><span class="hl-1">; ++</span><span class="hl-5">i</span><span class="hl-1">) {</span><br/><span class="hl-1"> </span><span class="hl-5">line</span><span class="hl-1"> = </span><span class="hl-2">&#39;&#39;</span><span class="hl-1">;</span><br/><br/><span class="hl-1"> </span><span class="hl-4">for</span><span class="hl-1"> (</span><span class="hl-6">let</span><span class="hl-1"> </span><span class="hl-5">j</span><span class="hl-1"> = </span><span class="hl-9">0</span><span class="hl-1">; </span><span class="hl-5">j</span><span class="hl-1"> &lt; </span><span class="hl-5">outSize</span><span class="hl-1">; ++</span><span class="hl-5">j</span><span class="hl-1">)</span><br/><span class="hl-1"> </span><span class="hl-5">line</span><span class="hl-1"> += </span><span class="hl-5">solution</span><span class="hl-1">[</span><span class="hl-5">j</span><span class="hl-1">][</span><span class="hl-5">i</span><span class="hl-1">].</span><span class="hl-0">toFixed</span><span class="hl-1">(</span><span class="hl-9">8</span><span class="hl-1">) + </span><span class="hl-2">&#39; &#39;</span><span class="hl-1">;</span><br/><span class="hl-1"> </span><span class="hl-5">console</span><span class="hl-1">.</span><span class="hl-0">log</span><span class="hl-1">(</span><span class="hl-5">line</span><span class="hl-1">);</span><br/><span class="hl-1"> }</span><br/><span class="hl-1">} </span><span class="hl-4">catch</span><span class="hl-1"> (</span><span class="hl-5">err</span><span class="hl-1">) {</span><br/><span class="hl-1"> </span><span class="hl-5">console</span><span class="hl-1">.</span><span class="hl-0">log</span><span class="hl-1">(</span><span class="hl-2">&#39;Simulation failed: &#39;</span><span class="hl-1">, </span><span class="hl-5">err</span><span class="hl-1"> </span><span class="hl-6">instanceof</span><span class="hl-1"> </span><span class="hl-8">Error</span><span class="hl-1"> ? </span><span class="hl-5">err</span><span class="hl-1">.</span><span class="hl-5">message</span><span class="hl-1"> : </span><span class="hl-2">&#39;Unknown problem!&#39;</span><span class="hl-1">);</span><br/><span class="hl-1">}</span>
5
+ </code><button type="button">Copy</button></pre>
6
+
7
+ </div></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/datagrok-ai/diff-grok/blob/652d427344795ab429f0120033309f18670d3034/src/pipeline/pipeline.ts#L298">src/pipeline/pipeline.ts:298</a></li></ul></aside></div></li></ul></section></div><div class="col-sidebar"><div class="page-menu"><div class="tsd-navigation settings"><details class="tsd-accordion"><summary class="tsd-accordion-summary"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-chevronDown"></use></svg><h3>Settings</h3></summary><div class="tsd-accordion-details"><div class="tsd-filter-visibility"><span class="settings-label">Member Visibility</span><ul id="tsd-filter-options"><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-inherited" name="inherited" checked/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Inherited</span></label></li><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-external" name="external"/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>External</span></label></li></ul></div><div class="tsd-theme-toggle"><label class="settings-label" for="tsd-theme">Theme</label><select id="tsd-theme"><option value="os">OS</option><option value="light">Light</option><option value="dark">Dark</option></select></div></div></details></div></div><div class="site-menu"><nav class="tsd-navigation"><a href="../modules.html">diff-grok - v1.1.0</a><ul class="tsd-small-nested-navigation" id="tsd-nav-container"><li>Loading...</li></ul></nav></div></div></div><footer><p class="tsd-generator">Generated using <a href="https://typedoc.org/" target="_blank">TypeDoc</a></p></footer><div class="overlay"></div></body></html>
@@ -0,0 +1,8 @@
1
+ <!DOCTYPE html><html class="default" lang="en" data-base="../"><head><meta charset="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>lsoda | diff-grok - v1.1.0</title><meta name="description" content="Documentation for diff-grok"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="../assets/style.css"/><link rel="stylesheet" href="../assets/highlight.css"/><script defer src="../assets/main.js"></script><script async src="../assets/icons.js" id="tsd-icons-script"></script><script async src="../assets/search.js" id="tsd-search-script"></script><script async src="../assets/navigation.js" id="tsd-nav-script"></script><script async src="../assets/hierarchy.js" id="tsd-hierarchy-script"></script></head><body><script>document.documentElement.dataset.theme = localStorage.getItem("tsd-theme") || "os";document.body.style.display="none";setTimeout(() => window.app?app.showPage():document.body.style.removeProperty("display"),500)</script><header class="tsd-page-toolbar"><div class="tsd-toolbar-contents container"><a href="../index.html" class="title">diff-grok - v1.1.0</a><div id="tsd-toolbar-links"></div><button id="tsd-search-trigger" class="tsd-widget" aria-label="Search"><svg width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-search"></use></svg></button><dialog id="tsd-search" aria-label="Search"><input role="combobox" id="tsd-search-input" aria-controls="tsd-search-results" aria-autocomplete="list" aria-expanded="true" autocapitalize="off" autocomplete="off" placeholder="Search the docs" maxLength="100"/><ul role="listbox" id="tsd-search-results"></ul><div id="tsd-search-status" aria-live="polite" aria-atomic="true"><div>Preparing search index...</div></div></dialog><a href="#" class="tsd-widget menu" id="tsd-toolbar-menu-trigger" data-toggle="menu" aria-label="Menu"><svg width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-menu"></use></svg></a></div></header><div class="container container-main"><div class="col-content"><div class="tsd-page-title"><ul class="tsd-breadcrumb" aria-label="Breadcrumb"><li><a href="" aria-current="page">lsoda</a></li></ul><h1>Function lsoda</h1></div><section class="tsd-panel"><ul class="tsd-signatures"><li class=""><div class="tsd-signature tsd-anchor-link" id="lsoda"><span class="tsd-kind-call-signature">lsoda</span><span class="tsd-signature-symbol">(</span><span class="tsd-kind-parameter">odes</span><span class="tsd-signature-symbol">:</span> <a href="../types/ODEs.html" class="tsd-signature-type tsd-kind-type-alias">ODEs</a><span class="tsd-signature-symbol">,</span> <span class="tsd-kind-parameter">callback</span><span class="tsd-signature-symbol">?:</span> <a href="../classes/Callback.html" class="tsd-signature-type tsd-kind-class">Callback</a><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">Float64Array</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">ArrayBufferLike</span><span class="tsd-signature-symbol">&gt;</span><span class="tsd-signature-symbol">[]</span><a href="#lsoda" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></div><div class="tsd-description"><div class="tsd-comment tsd-typography"><p>Solve initial value problem using the LSODA library method</p>
2
+ </div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><span><span class="tsd-kind-parameter">odes</span>: <a href="../types/ODEs.html" class="tsd-signature-type tsd-kind-type-alias">ODEs</a></span><div class="tsd-comment tsd-typography"><p>initial value problem for ordinary differential equations</p>
3
+ </div></li><li><span><code class="tsd-tag">Optional</code><span class="tsd-kind-parameter">callback</span>: <a href="../classes/Callback.html" class="tsd-signature-type tsd-kind-class">Callback</a></span><div class="tsd-comment tsd-typography"><p>computations control callback</p>
4
+ </div></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">Float64Array</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">ArrayBufferLike</span><span class="tsd-signature-symbol">&gt;</span><span class="tsd-signature-symbol">[]</span></h4><p>solution of the problem</p>
5
+ <div class="tsd-comment tsd-typography"><div class="tsd-tag-example"><h4 class="tsd-anchor-link" id="example">Example<a href="#example" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h4><pre><code class="ts"><span class="hl-3">// Example. Solve the following initial value problem using the LSODA method:</span><br/><span class="hl-3">// dx/dt = x + y - t</span><br/><span class="hl-3">// dy/dt = x * y + t</span><br/><span class="hl-3">// x(0) = 1</span><br/><span class="hl-3">// y(0) = -1</span><br/><span class="hl-3">// on [0, 2] with the step 0.01.</span><br/><span class="hl-4">import</span><span class="hl-1"> { </span><span class="hl-5">ODEs</span><span class="hl-1">, </span><span class="hl-5">lsoda</span><span class="hl-1"> } </span><span class="hl-4">from</span><span class="hl-1"> </span><span class="hl-2">&#39;diff-grok&#39;</span><span class="hl-1">;</span><br/><br/><span class="hl-6">const</span><span class="hl-1"> </span><span class="hl-7">task</span><span class="hl-1">: </span><span class="hl-8">ODEs</span><span class="hl-1"> = {</span><br/><span class="hl-1"> </span><span class="hl-5">name:</span><span class="hl-1"> </span><span class="hl-2">&#39;Example&#39;</span><span class="hl-1">, </span><span class="hl-3">// name of your model</span><br/><span class="hl-1"> </span><span class="hl-5">arg:</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-5">name:</span><span class="hl-1"> </span><span class="hl-2">&#39;t&#39;</span><span class="hl-1">, </span><span class="hl-3">// name of the argument</span><br/><span class="hl-1"> </span><span class="hl-5">start:</span><span class="hl-1"> </span><span class="hl-9">0</span><span class="hl-1">, </span><span class="hl-3">// initial value of the argument</span><br/><span class="hl-1"> </span><span class="hl-5">finish:</span><span class="hl-1"> </span><span class="hl-9">2</span><span class="hl-1">, </span><span class="hl-3">// final value of the argument</span><br/><span class="hl-1"> </span><span class="hl-5">step:</span><span class="hl-1"> </span><span class="hl-9">0.01</span><span class="hl-1">, </span><span class="hl-3">// solution grid step</span><br/><span class="hl-1"> },</span><br/><span class="hl-1"> </span><span class="hl-5">initial:</span><span class="hl-1"> [</span><span class="hl-9">1</span><span class="hl-1">, -</span><span class="hl-9">1</span><span class="hl-1">], </span><span class="hl-3">// initial values</span><br/><span class="hl-1"> </span><span class="hl-0">func</span><span class="hl-5">:</span><span class="hl-1"> (</span><span class="hl-5">t</span><span class="hl-1">: </span><span class="hl-8">number</span><span class="hl-1">, </span><span class="hl-5">y</span><span class="hl-1">: </span><span class="hl-8">Float64Array</span><span class="hl-1">, </span><span class="hl-5">output</span><span class="hl-1">: </span><span class="hl-8">Float64Array</span><span class="hl-1">) </span><span class="hl-6">=&gt;</span><span class="hl-1"> { </span><span class="hl-3">// right-hand side of the system</span><br/><span class="hl-1"> </span><span class="hl-5">output</span><span class="hl-1">[</span><span class="hl-9">0</span><span class="hl-1">] = </span><span class="hl-5">y</span><span class="hl-1">[</span><span class="hl-9">0</span><span class="hl-1">] + </span><span class="hl-5">y</span><span class="hl-1">[</span><span class="hl-9">1</span><span class="hl-1">] - </span><span class="hl-5">t</span><span class="hl-1">; </span><span class="hl-3">// 1-st equation</span><br/><span class="hl-1"> </span><span class="hl-5">output</span><span class="hl-1">[</span><span class="hl-9">1</span><span class="hl-1">] = </span><span class="hl-5">y</span><span class="hl-1">[</span><span class="hl-9">0</span><span class="hl-1">] * </span><span class="hl-5">y</span><span class="hl-1">[</span><span class="hl-9">1</span><span class="hl-1">] + </span><span class="hl-5">t</span><span class="hl-1">; </span><span class="hl-3">// 2-nd equation</span><br/><span class="hl-1"> },</span><br/><span class="hl-1"> </span><span class="hl-5">tolerance:</span><span class="hl-1"> </span><span class="hl-9">1e-7</span><span class="hl-1">, </span><span class="hl-3">// tolerance</span><br/><span class="hl-1"> </span><span class="hl-5">solutionColNames:</span><span class="hl-1"> [</span><span class="hl-2">&#39;x&#39;</span><span class="hl-1">, </span><span class="hl-2">&#39;y&#39;</span><span class="hl-1">], </span><span class="hl-3">// names of solution functions</span><br/><span class="hl-1">};</span><br/><br/><span class="hl-4">try</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-3">// Solve the problem using the LSODA method</span><br/><span class="hl-1"> </span><span class="hl-6">const</span><span class="hl-1"> </span><span class="hl-7">solution</span><span class="hl-1"> = </span><span class="hl-0">lsoda</span><span class="hl-1">(</span><span class="hl-5">task</span><span class="hl-1">);</span><br/><br/><span class="hl-1"> </span><span class="hl-3">// Print a table with the results</span><br/><span class="hl-1"> </span><span class="hl-5">console</span><span class="hl-1">.</span><span class="hl-0">log</span><span class="hl-1">(</span><span class="hl-5">task</span><span class="hl-1">.</span><span class="hl-5">arg</span><span class="hl-1">.</span><span class="hl-5">name</span><span class="hl-1">, </span><span class="hl-5">task</span><span class="hl-1">.</span><span class="hl-5">solutionColNames</span><span class="hl-1">[</span><span class="hl-9">0</span><span class="hl-1">], </span><span class="hl-5">task</span><span class="hl-1">.</span><span class="hl-5">solutionColNames</span><span class="hl-1">[</span><span class="hl-9">1</span><span class="hl-1">]);</span><br/><span class="hl-1"> </span><span class="hl-6">const</span><span class="hl-1"> </span><span class="hl-7">length</span><span class="hl-1"> = </span><span class="hl-5">solution</span><span class="hl-1">[</span><span class="hl-9">0</span><span class="hl-1">].</span><span class="hl-5">length</span><span class="hl-1">;</span><br/><span class="hl-1"> </span><span class="hl-4">for</span><span class="hl-1"> (</span><span class="hl-6">let</span><span class="hl-1"> </span><span class="hl-5">i</span><span class="hl-1"> = </span><span class="hl-9">0</span><span class="hl-1">; </span><span class="hl-5">i</span><span class="hl-1"> &lt; </span><span class="hl-5">length</span><span class="hl-1">; ++</span><span class="hl-5">i</span><span class="hl-1">)</span><br/><span class="hl-1"> </span><span class="hl-5">console</span><span class="hl-1">.</span><span class="hl-0">log</span><span class="hl-1">(</span><span class="hl-5">solution</span><span class="hl-1">[</span><span class="hl-9">0</span><span class="hl-1">][</span><span class="hl-5">i</span><span class="hl-1">], </span><span class="hl-5">solution</span><span class="hl-1">[</span><span class="hl-9">1</span><span class="hl-1">][</span><span class="hl-5">i</span><span class="hl-1">], </span><span class="hl-5">solution</span><span class="hl-1">[</span><span class="hl-9">2</span><span class="hl-1">][</span><span class="hl-5">i</span><span class="hl-1">]);</span><br/><span class="hl-1">} </span><span class="hl-4">catch</span><span class="hl-1"> (</span><span class="hl-5">err</span><span class="hl-1">) {</span><br/><span class="hl-1"> </span><span class="hl-5">console</span><span class="hl-1">.</span><span class="hl-0">log</span><span class="hl-1">(</span><span class="hl-2">&#39;Solver failed: &#39;</span><span class="hl-1">, </span><span class="hl-5">err</span><span class="hl-1"> </span><span class="hl-6">instanceof</span><span class="hl-1"> </span><span class="hl-8">Error</span><span class="hl-1"> ? </span><span class="hl-5">err</span><span class="hl-1">.</span><span class="hl-5">message</span><span class="hl-1"> : </span><span class="hl-2">&#39;Unknown problem!&#39;</span><span class="hl-1">);</span><br/><span class="hl-1">}</span>
6
+ </code><button type="button">Copy</button></pre>
7
+
8
+ </div></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/datagrok-ai/diff-grok/blob/652d427344795ab429f0120033309f18670d3034/src/solver-tools/lsoda-method.ts#L67">src/solver-tools/lsoda-method.ts:67</a></li></ul></aside></div></li></ul></section></div><div class="col-sidebar"><div class="page-menu"><div class="tsd-navigation settings"><details class="tsd-accordion"><summary class="tsd-accordion-summary"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-chevronDown"></use></svg><h3>Settings</h3></summary><div class="tsd-accordion-details"><div class="tsd-filter-visibility"><span class="settings-label">Member Visibility</span><ul id="tsd-filter-options"><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-inherited" name="inherited" checked/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Inherited</span></label></li><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-external" name="external"/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>External</span></label></li></ul></div><div class="tsd-theme-toggle"><label class="settings-label" for="tsd-theme">Theme</label><select id="tsd-theme"><option value="os">OS</option><option value="light">Light</option><option value="dark">Dark</option></select></div></div></details></div></div><div class="site-menu"><nav class="tsd-navigation"><a href="../modules.html">diff-grok - v1.1.0</a><ul class="tsd-small-nested-navigation" id="tsd-nav-container"><li>Loading...</li></ul></nav></div></div></div><footer><p class="tsd-generator">Generated using <a href="https://typedoc.org/" target="_blank">TypeDoc</a></p></footer><div class="overlay"></div></body></html>
@@ -0,0 +1,11 @@
1
+ <!DOCTYPE html><html class="default" lang="en" data-base="../"><head><meta charset="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>mrt | diff-grok - v1.1.0</title><meta name="description" content="Documentation for diff-grok"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="../assets/style.css"/><link rel="stylesheet" href="../assets/highlight.css"/><script defer src="../assets/main.js"></script><script async src="../assets/icons.js" id="tsd-icons-script"></script><script async src="../assets/search.js" id="tsd-search-script"></script><script async src="../assets/navigation.js" id="tsd-nav-script"></script><script async src="../assets/hierarchy.js" id="tsd-hierarchy-script"></script></head><body><script>document.documentElement.dataset.theme = localStorage.getItem("tsd-theme") || "os";document.body.style.display="none";setTimeout(() => window.app?app.showPage():document.body.style.removeProperty("display"),500)</script><header class="tsd-page-toolbar"><div class="tsd-toolbar-contents container"><a href="../index.html" class="title">diff-grok - v1.1.0</a><div id="tsd-toolbar-links"></div><button id="tsd-search-trigger" class="tsd-widget" aria-label="Search"><svg width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-search"></use></svg></button><dialog id="tsd-search" aria-label="Search"><input role="combobox" id="tsd-search-input" aria-controls="tsd-search-results" aria-autocomplete="list" aria-expanded="true" autocapitalize="off" autocomplete="off" placeholder="Search the docs" maxLength="100"/><ul role="listbox" id="tsd-search-results"></ul><div id="tsd-search-status" aria-live="polite" aria-atomic="true"><div>Preparing search index...</div></div></dialog><a href="#" class="tsd-widget menu" id="tsd-toolbar-menu-trigger" data-toggle="menu" aria-label="Menu"><svg width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-menu"></use></svg></a></div></header><div class="container container-main"><div class="col-content"><div class="tsd-page-title"><ul class="tsd-breadcrumb" aria-label="Breadcrumb"><li><a href="" aria-current="page">mrt</a></li></ul><h1>Function mrt</h1></div><section class="tsd-panel"><ul class="tsd-signatures"><li class=""><div class="tsd-signature tsd-anchor-link" id="mrt"><span class="tsd-kind-call-signature">mrt</span><span class="tsd-signature-symbol">(</span><span class="tsd-kind-parameter">odes</span><span class="tsd-signature-symbol">:</span> <a href="../types/ODEs.html" class="tsd-signature-type tsd-kind-type-alias">ODEs</a><span class="tsd-signature-symbol">,</span> <span class="tsd-kind-parameter">callback</span><span class="tsd-signature-symbol">?:</span> <a href="../classes/Callback.html" class="tsd-signature-type tsd-kind-class">Callback</a><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">Float64Array</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">ArrayBufferLike</span><span class="tsd-signature-symbol">&gt;</span><span class="tsd-signature-symbol">[]</span><a href="#mrt" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></div><div class="tsd-description"><div class="tsd-comment tsd-typography"><p>Solve initial value problem the modified Rosenbrock triple (MRT) method</p>
2
+ </div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><span><span class="tsd-kind-parameter">odes</span>: <a href="../types/ODEs.html" class="tsd-signature-type tsd-kind-type-alias">ODEs</a></span><div class="tsd-comment tsd-typography"><p>initial value problem for ordinary differential equations</p>
3
+ </div></li><li><span><code class="tsd-tag">Optional</code><span class="tsd-kind-parameter">callback</span>: <a href="../classes/Callback.html" class="tsd-signature-type tsd-kind-class">Callback</a></span><div class="tsd-comment tsd-typography"><p>computations control callback</p>
4
+ </div></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">Float64Array</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">ArrayBufferLike</span><span class="tsd-signature-symbol">&gt;</span><span class="tsd-signature-symbol">[]</span></h4><p>solution of the problem</p>
5
+ <div class="tsd-comment tsd-typography"><div class="tsd-tag-example"><h4 class="tsd-anchor-link" id="example">Example<a href="#example" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h4><pre><code class="ts"><span class="hl-3">// Example. Solve the following initial value problem using the MRT method:</span><br/><span class="hl-3">// dx/dt = x + y - t</span><br/><span class="hl-3">// dy/dt = x * y + t</span><br/><span class="hl-3">// x(0) = 1</span><br/><span class="hl-3">// y(0) = -1</span><br/><span class="hl-3">// on [0, 2] with the step 0.01.</span><br/><span class="hl-4">import</span><span class="hl-1"> { </span><span class="hl-5">ODEs</span><span class="hl-1">, </span><span class="hl-5">mrt</span><span class="hl-1"> } </span><span class="hl-4">from</span><span class="hl-1"> </span><span class="hl-2">&#39;diff-grok&#39;</span><span class="hl-1">;</span><br/><br/><span class="hl-6">const</span><span class="hl-1"> </span><span class="hl-7">task</span><span class="hl-1">: </span><span class="hl-8">ODEs</span><span class="hl-1"> = {</span><br/><span class="hl-1"> </span><span class="hl-5">name:</span><span class="hl-1"> </span><span class="hl-2">&#39;Example&#39;</span><span class="hl-1">, </span><span class="hl-3">// name of your model</span><br/><span class="hl-1"> </span><span class="hl-5">arg:</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-5">name:</span><span class="hl-1"> </span><span class="hl-2">&#39;t&#39;</span><span class="hl-1">, </span><span class="hl-3">// name of the argument</span><br/><span class="hl-1"> </span><span class="hl-5">start:</span><span class="hl-1"> </span><span class="hl-9">0</span><span class="hl-1">, </span><span class="hl-3">// initial value of the argument</span><br/><span class="hl-1"> </span><span class="hl-5">finish:</span><span class="hl-1"> </span><span class="hl-9">2</span><span class="hl-1">, </span><span class="hl-3">// final value of the argument</span><br/><span class="hl-1"> </span><span class="hl-5">step:</span><span class="hl-1"> </span><span class="hl-9">0.01</span><span class="hl-1">, </span><span class="hl-3">// solution grid step</span><br/><span class="hl-1"> },</span><br/><span class="hl-1"> </span><span class="hl-5">initial:</span><span class="hl-1"> [</span><span class="hl-9">1</span><span class="hl-1">, -</span><span class="hl-9">1</span><span class="hl-1">], </span><span class="hl-3">// initial values</span><br/><span class="hl-1"> </span><span class="hl-0">func</span><span class="hl-5">:</span><span class="hl-1"> (</span><span class="hl-5">t</span><span class="hl-1">: </span><span class="hl-8">number</span><span class="hl-1">, </span><span class="hl-5">y</span><span class="hl-1">: </span><span class="hl-8">Float64Array</span><span class="hl-1">, </span><span class="hl-5">output</span><span class="hl-1">: </span><span class="hl-8">Float64Array</span><span class="hl-1">) </span><span class="hl-6">=&gt;</span><span class="hl-1"> { </span><span class="hl-3">// right-hand side of the system</span><br/><span class="hl-1"> </span><span class="hl-5">output</span><span class="hl-1">[</span><span class="hl-9">0</span><span class="hl-1">] = </span><span class="hl-5">y</span><span class="hl-1">[</span><span class="hl-9">0</span><span class="hl-1">] + </span><span class="hl-5">y</span><span class="hl-1">[</span><span class="hl-9">1</span><span class="hl-1">] - </span><span class="hl-5">t</span><span class="hl-1">; </span><span class="hl-3">// 1-st equation</span><br/><span class="hl-1"> </span><span class="hl-5">output</span><span class="hl-1">[</span><span class="hl-9">1</span><span class="hl-1">] = </span><span class="hl-5">y</span><span class="hl-1">[</span><span class="hl-9">0</span><span class="hl-1">] * </span><span class="hl-5">y</span><span class="hl-1">[</span><span class="hl-9">1</span><span class="hl-1">] + </span><span class="hl-5">t</span><span class="hl-1">; </span><span class="hl-3">// 2-nd equation</span><br/><span class="hl-1"> },</span><br/><span class="hl-1"> </span><span class="hl-5">tolerance:</span><span class="hl-1"> </span><span class="hl-9">1e-7</span><span class="hl-1">, </span><span class="hl-3">// tolerance</span><br/><span class="hl-1"> </span><span class="hl-5">solutionColNames:</span><span class="hl-1"> [</span><span class="hl-2">&#39;x&#39;</span><span class="hl-1">, </span><span class="hl-2">&#39;y&#39;</span><span class="hl-1">], </span><span class="hl-3">// names of solution functions</span><br/><span class="hl-1">};</span><br/><br/><span class="hl-4">try</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-3">// Solve the problem using the MRT method</span><br/><span class="hl-1"> </span><span class="hl-6">const</span><span class="hl-1"> </span><span class="hl-7">solution</span><span class="hl-1"> = </span><span class="hl-0">mrt</span><span class="hl-1">(</span><span class="hl-5">task</span><span class="hl-1">);</span><br/><br/><span class="hl-1"> </span><span class="hl-3">// Print a table with the results</span><br/><span class="hl-1"> </span><span class="hl-5">console</span><span class="hl-1">.</span><span class="hl-0">log</span><span class="hl-1">(</span><span class="hl-5">task</span><span class="hl-1">.</span><span class="hl-5">arg</span><span class="hl-1">.</span><span class="hl-5">name</span><span class="hl-1">, </span><span class="hl-5">task</span><span class="hl-1">.</span><span class="hl-5">solutionColNames</span><span class="hl-1">[</span><span class="hl-9">0</span><span class="hl-1">], </span><span class="hl-5">task</span><span class="hl-1">.</span><span class="hl-5">solutionColNames</span><span class="hl-1">[</span><span class="hl-9">1</span><span class="hl-1">]);</span><br/><span class="hl-1"> </span><span class="hl-6">const</span><span class="hl-1"> </span><span class="hl-7">length</span><span class="hl-1"> = </span><span class="hl-5">solution</span><span class="hl-1">[</span><span class="hl-9">0</span><span class="hl-1">].</span><span class="hl-5">length</span><span class="hl-1">;</span><br/><span class="hl-1"> </span><span class="hl-4">for</span><span class="hl-1"> (</span><span class="hl-6">let</span><span class="hl-1"> </span><span class="hl-5">i</span><span class="hl-1"> = </span><span class="hl-9">0</span><span class="hl-1">; </span><span class="hl-5">i</span><span class="hl-1"> &lt; </span><span class="hl-5">length</span><span class="hl-1">; ++</span><span class="hl-5">i</span><span class="hl-1">)</span><br/><span class="hl-1"> </span><span class="hl-5">console</span><span class="hl-1">.</span><span class="hl-0">log</span><span class="hl-1">(</span><span class="hl-5">solution</span><span class="hl-1">[</span><span class="hl-9">0</span><span class="hl-1">][</span><span class="hl-5">i</span><span class="hl-1">], </span><span class="hl-5">solution</span><span class="hl-1">[</span><span class="hl-9">1</span><span class="hl-1">][</span><span class="hl-5">i</span><span class="hl-1">], </span><span class="hl-5">solution</span><span class="hl-1">[</span><span class="hl-9">2</span><span class="hl-1">][</span><span class="hl-5">i</span><span class="hl-1">]);</span><br/><span class="hl-1">} </span><span class="hl-4">catch</span><span class="hl-1"> (</span><span class="hl-5">err</span><span class="hl-1">) {</span><br/><span class="hl-1"> </span><span class="hl-5">console</span><span class="hl-1">.</span><span class="hl-0">log</span><span class="hl-1">(</span><span class="hl-2">&#39;Solver failed: &#39;</span><span class="hl-1">, </span><span class="hl-5">err</span><span class="hl-1"> </span><span class="hl-6">instanceof</span><span class="hl-1"> </span><span class="hl-8">Error</span><span class="hl-1"> ? </span><span class="hl-5">err</span><span class="hl-1">.</span><span class="hl-5">message</span><span class="hl-1"> : </span><span class="hl-2">&#39;Unknown problem!&#39;</span><span class="hl-1">);</span><br/><span class="hl-1">}</span>
6
+ </code><button type="button">Copy</button></pre>
7
+
8
+ <pre><code>
9
+ </code><button>Copy</button></pre>
10
+
11
+ </div></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/datagrok-ai/diff-grok/blob/652d427344795ab429f0120033309f18670d3034/src/solver-tools/mrt-method.ts#L149">src/solver-tools/mrt-method.ts:149</a></li></ul></aside></div></li></ul></section></div><div class="col-sidebar"><div class="page-menu"><div class="tsd-navigation settings"><details class="tsd-accordion"><summary class="tsd-accordion-summary"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-chevronDown"></use></svg><h3>Settings</h3></summary><div class="tsd-accordion-details"><div class="tsd-filter-visibility"><span class="settings-label">Member Visibility</span><ul id="tsd-filter-options"><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-inherited" name="inherited" checked/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Inherited</span></label></li><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-external" name="external"/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>External</span></label></li></ul></div><div class="tsd-theme-toggle"><label class="settings-label" for="tsd-theme">Theme</label><select id="tsd-theme"><option value="os">OS</option><option value="light">Light</option><option value="dark">Dark</option></select></div></div></details></div></div><div class="site-menu"><nav class="tsd-navigation"><a href="../modules.html">diff-grok - v1.1.0</a><ul class="tsd-small-nested-navigation" id="tsd-nav-container"><li>Loading...</li></ul></nav></div></div></div><footer><p class="tsd-generator">Generated using <a href="https://typedoc.org/" target="_blank">TypeDoc</a></p></footer><div class="overlay"></div></body></html>
@@ -0,0 +1,76 @@
1
+ <!DOCTYPE html><html class="default" lang="en" data-base="../"><head><meta charset="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>printE5 | diff-grok - v1.1.0</title><meta name="description" content="Documentation for diff-grok"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="../assets/style.css"/><link rel="stylesheet" href="../assets/highlight.css"/><script defer src="../assets/main.js"></script><script async src="../assets/icons.js" id="tsd-icons-script"></script><script async src="../assets/search.js" id="tsd-search-script"></script><script async src="../assets/navigation.js" id="tsd-nav-script"></script><script async src="../assets/hierarchy.js" id="tsd-hierarchy-script"></script></head><body><script>document.documentElement.dataset.theme = localStorage.getItem("tsd-theme") || "os";document.body.style.display="none";setTimeout(() => window.app?app.showPage():document.body.style.removeProperty("display"),500)</script><header class="tsd-page-toolbar"><div class="tsd-toolbar-contents container"><a href="../index.html" class="title">diff-grok - v1.1.0</a><div id="tsd-toolbar-links"></div><button id="tsd-search-trigger" class="tsd-widget" aria-label="Search"><svg width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-search"></use></svg></button><dialog id="tsd-search" aria-label="Search"><input role="combobox" id="tsd-search-input" aria-controls="tsd-search-results" aria-autocomplete="list" aria-expanded="true" autocapitalize="off" autocomplete="off" placeholder="Search the docs" maxLength="100"/><ul role="listbox" id="tsd-search-results"></ul><div id="tsd-search-status" aria-live="polite" aria-atomic="true"><div>Preparing search index...</div></div></dialog><a href="#" class="tsd-widget menu" id="tsd-toolbar-menu-trigger" data-toggle="menu" aria-label="Menu"><svg width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-menu"></use></svg></a></div></header><div class="container container-main"><div class="col-content"><div class="tsd-page-title"><ul class="tsd-breadcrumb" aria-label="Breadcrumb"><li><a href="" aria-current="page">printE5</a></li></ul><h1>Function printE5</h1></div><section class="tsd-panel"><ul class="tsd-signatures"><li class=""><div class="tsd-signature tsd-anchor-link" id="printe5"><span class="tsd-kind-call-signature">printE5</span><span class="tsd-signature-symbol">()</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">void</span><a href="#printe5" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></div><div class="tsd-description"><div class="tsd-comment tsd-typography"><p>Print solution of the E5 benchmark problem</p>
2
+ </div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">void</span></h4><div class="tsd-comment tsd-typography"><div class="tsd-tag-example"><h4 class="tsd-anchor-link" id="example">Example<a href="#example" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h4><pre><code class="ts"><span class="hl-3">// TypeScript usage example</span><br/><span class="hl-4">import</span><span class="hl-1"> {</span><span class="hl-5">printE5</span><span class="hl-1">} </span><span class="hl-4">from</span><span class="hl-1"> </span><span class="hl-2">&#39;diff-grok&#39;</span><span class="hl-1">;</span><br/><br/><span class="hl-0">printE5</span><span class="hl-1">();</span>
3
+ </code><button type="button">Copy</button></pre>
4
+
5
+ <pre><code class="python"># Python reference calculation for comparison
6
+ import numpy as np
7
+ import pandas as pd
8
+ from scipy.integrate import solve_ivp
9
+
10
+ # -------------------------
11
+ # 0. Solver method
12
+ # -------------------------
13
+ METHOD = "Radau" # stiff solver recommended
14
+
15
+ # -------------------------
16
+ # 1. Define E5 constants
17
+ # -------------------------
18
+ K1 = 7.89e-10
19
+ K2 = 1.13e9
20
+ K3 = 1.1e7
21
+ K4 = 1.13e3
22
+
23
+ # -------------------------
24
+ # 2. Define E5 ODE
25
+ # -------------------------
26
+ def e5(t, y):
27
+ y1, y2, y3, y4 = y
28
+ dy = np.zeros(4)
29
+ dy[0] = -K1 * y1 - K3 * y1 * y3
30
+ dy[1] = K1 * y1 - K2 * y2 * y3
31
+ dy[2] = K1 * y1 - K2 * y2 * y3 - K3 * y1 * y3 + K4 * y4
32
+ dy[3] = K3 * y1 * y3 - K4 * y4
33
+ return dy
34
+
35
+ # -------------------------
36
+ # 3. Initial conditions and time
37
+ # -------------------------
38
+ y0 = [0.00176, 0, 0, 0]
39
+ t_start = 0.0
40
+ t_end = 1e6
41
+ t_step = 2.5e3
42
+
43
+ # Ensure t_eval is within t_span
44
+ n_points = int(np.ceil((t_end - t_start) / t_step)) + 1
45
+ t_eval = np.linspace(t_start, t_end, n_points)
46
+
47
+ # -------------------------
48
+ # 4. Solve ODE
49
+ # -------------------------
50
+ sol = solve_ivp(
51
+ e5,
52
+ (t_start, t_end),
53
+ y0,
54
+ method=METHOD,
55
+ t_eval=t_eval,
56
+ rtol=1e-6,
57
+ atol=1e-6
58
+ )
59
+
60
+ print("Success:", sol.success)
61
+ print("Message:", sol.message)
62
+
63
+ # -------------------------
64
+ # 5. Save solution to CSV
65
+ # -------------------------
66
+ data = np.column_stack((sol.t, sol.y.T))
67
+ col_names = ['t', 'y1', 'y2', 'y3', 'y4']
68
+
69
+ df = pd.DataFrame(data, columns=col_names)
70
+ filename = f"E5-using-{METHOD}.csv"
71
+ df.to_csv(filename, index=False)
72
+
73
+ print(f"Solution saved to '{filename}'")
74
+ </code><button type="button">Copy</button></pre>
75
+
76
+ </div></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/datagrok-ai/diff-grok/blob/652d427344795ab429f0120033309f18670d3034/src/examples/print-benchmark.ts#L421">src/examples/print-benchmark.ts:421</a></li></ul></aside></div></li></ul></section></div><div class="col-sidebar"><div class="page-menu"><div class="tsd-navigation settings"><details class="tsd-accordion"><summary class="tsd-accordion-summary"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-chevronDown"></use></svg><h3>Settings</h3></summary><div class="tsd-accordion-details"><div class="tsd-filter-visibility"><span class="settings-label">Member Visibility</span><ul id="tsd-filter-options"><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-inherited" name="inherited" checked/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Inherited</span></label></li><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-external" name="external"/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>External</span></label></li></ul></div><div class="tsd-theme-toggle"><label class="settings-label" for="tsd-theme">Theme</label><select id="tsd-theme"><option value="os">OS</option><option value="light">Light</option><option value="dark">Dark</option></select></div></div></details></div></div><div class="site-menu"><nav class="tsd-navigation"><a href="../modules.html">diff-grok - v1.1.0</a><ul class="tsd-small-nested-navigation" id="tsd-nav-container"><li>Loading...</li></ul></nav></div></div></div><footer><p class="tsd-generator">Generated using <a href="https://typedoc.org/" target="_blank">TypeDoc</a></p></footer><div class="overlay"></div></body></html>
@@ -0,0 +1,76 @@
1
+ <!DOCTYPE html><html class="default" lang="en" data-base="../"><head><meta charset="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>printHires | diff-grok - v1.1.0</title><meta name="description" content="Documentation for diff-grok"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="../assets/style.css"/><link rel="stylesheet" href="../assets/highlight.css"/><script defer src="../assets/main.js"></script><script async src="../assets/icons.js" id="tsd-icons-script"></script><script async src="../assets/search.js" id="tsd-search-script"></script><script async src="../assets/navigation.js" id="tsd-nav-script"></script><script async src="../assets/hierarchy.js" id="tsd-hierarchy-script"></script></head><body><script>document.documentElement.dataset.theme = localStorage.getItem("tsd-theme") || "os";document.body.style.display="none";setTimeout(() => window.app?app.showPage():document.body.style.removeProperty("display"),500)</script><header class="tsd-page-toolbar"><div class="tsd-toolbar-contents container"><a href="../index.html" class="title">diff-grok - v1.1.0</a><div id="tsd-toolbar-links"></div><button id="tsd-search-trigger" class="tsd-widget" aria-label="Search"><svg width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-search"></use></svg></button><dialog id="tsd-search" aria-label="Search"><input role="combobox" id="tsd-search-input" aria-controls="tsd-search-results" aria-autocomplete="list" aria-expanded="true" autocapitalize="off" autocomplete="off" placeholder="Search the docs" maxLength="100"/><ul role="listbox" id="tsd-search-results"></ul><div id="tsd-search-status" aria-live="polite" aria-atomic="true"><div>Preparing search index...</div></div></dialog><a href="#" class="tsd-widget menu" id="tsd-toolbar-menu-trigger" data-toggle="menu" aria-label="Menu"><svg width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-menu"></use></svg></a></div></header><div class="container container-main"><div class="col-content"><div class="tsd-page-title"><ul class="tsd-breadcrumb" aria-label="Breadcrumb"><li><a href="" aria-current="page">printHires</a></li></ul><h1>Function printHires</h1></div><section class="tsd-panel"><ul class="tsd-signatures"><li class=""><div class="tsd-signature tsd-anchor-link" id="printhires"><span class="tsd-kind-call-signature">printHires</span><span class="tsd-signature-symbol">()</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">void</span><a href="#printhires" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></div><div class="tsd-description"><div class="tsd-comment tsd-typography"><p>Print solution of the HIRES benchmark problem</p>
2
+ </div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">void</span></h4><div class="tsd-comment tsd-typography"><div class="tsd-tag-example"><h4 class="tsd-anchor-link" id="example">Example<a href="#example" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h4><pre><code class="ts"><span class="hl-3">// TypeScript usage example</span><br/><span class="hl-4">import</span><span class="hl-1"> {</span><span class="hl-5">printHires</span><span class="hl-1">} </span><span class="hl-4">from</span><span class="hl-1"> </span><span class="hl-2">&#39;diff-grok&#39;</span><span class="hl-1">;</span><br/><br/><span class="hl-0">printHires</span><span class="hl-1">();</span>
3
+ </code><button type="button">Copy</button></pre>
4
+
5
+ <pre><code class="python"># Python reference calculation for comparison
6
+ import numpy as np
7
+ import pandas as pd
8
+ from scipy.integrate import solve_ivp
9
+
10
+ # -------------------------
11
+ # 0. Solver method
12
+ # -------------------------
13
+ METHOD = "Radau" # stiff solver suitable for HIRES
14
+
15
+ # -------------------------
16
+ # 1. Define HIRES ODE
17
+ # -------------------------
18
+ def hires(t, y):
19
+ y1, y2, y3, y4, y5, y6, y7, y8 = y
20
+ dy = np.zeros(8)
21
+ dy[0] = -1.71 * y1 + 0.43 * y2 + 8.32 * y3 + 0.0007
22
+ dy[1] = 1.71 * y1 - 8.75 * y2
23
+ dy[2] = -10.03 * y3 + 0.43 * y4 + 0.035 * y5
24
+ dy[3] = 8.32 * y2 + 1.71 * y3 - 1.12 * y4
25
+ dy[4] = -1.745 * y5 + 0.43 * y6 + 0.43 * y7
26
+ dy[5] = -280 * y6 * y8 + 0.69 * y4 + 1.71 * y5 - 0.43 * y6 + 0.69 * y7
27
+ dy[6] = 280 * y6 * y8 - 1.81 * y7
28
+ dy[7] = -280 * y6 * y8 + 1.81 * y7
29
+ return dy
30
+
31
+ # -------------------------
32
+ # 2. Initial conditions and time
33
+ # -------------------------
34
+ y0 = [1, 0, 0, 0, 0, 0, 0, 0.0057]
35
+
36
+ t_start = 0.0
37
+ t_end = 321.8122
38
+ t_step = 0.01
39
+ n_points = int(np.ceil((t_end - t_start) / t_step)) + 1
40
+ t_eval = np.linspace(t_start, t_end, n_points)
41
+
42
+ # -------------------------
43
+ # 3. Solve ODE
44
+ # -------------------------
45
+ sol = solve_ivp(
46
+ hires,
47
+ t_span,
48
+ y0,
49
+ method=METHOD,
50
+ t_eval=t_eval,
51
+ rtol=1e-10,
52
+ atol=1e-10
53
+ )
54
+
55
+ print("Success:", sol.success)
56
+ print("Message:", sol.message)
57
+
58
+ # -------------------------
59
+ # 4. Save solution to CSV
60
+ # -------------------------
61
+ # Combine time + concentrations
62
+ data = np.column_stack((sol.t, sol.y.T))
63
+
64
+ # Column names
65
+ col_names = ['t'] + ['y1','y2','y3','y4','y5','y6','y7','y8']
66
+
67
+ # Create DataFrame and save
68
+ df = pd.DataFrame(data, columns=col_names)
69
+ filename = f'HIRES-using-{METHOD}.csv'
70
+ df.to_csv(filename, index=False)
71
+
72
+ print(f"Solution saved to '{filename}'")
73
+
74
+ </code><button type="button">Copy</button></pre>
75
+
76
+ </div></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/datagrok-ai/diff-grok/blob/652d427344795ab429f0120033309f18670d3034/src/examples/print-benchmark.ts#L187">src/examples/print-benchmark.ts:187</a></li></ul></aside></div></li></ul></section></div><div class="col-sidebar"><div class="page-menu"><div class="tsd-navigation settings"><details class="tsd-accordion"><summary class="tsd-accordion-summary"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-chevronDown"></use></svg><h3>Settings</h3></summary><div class="tsd-accordion-details"><div class="tsd-filter-visibility"><span class="settings-label">Member Visibility</span><ul id="tsd-filter-options"><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-inherited" name="inherited" checked/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Inherited</span></label></li><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-external" name="external"/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>External</span></label></li></ul></div><div class="tsd-theme-toggle"><label class="settings-label" for="tsd-theme">Theme</label><select id="tsd-theme"><option value="os">OS</option><option value="light">Light</option><option value="dark">Dark</option></select></div></div></details></div></div><div class="site-menu"><nav class="tsd-navigation"><a href="../modules.html">diff-grok - v1.1.0</a><ul class="tsd-small-nested-navigation" id="tsd-nav-container"><li>Loading...</li></ul></nav></div></div></div><footer><p class="tsd-generator">Generated using <a href="https://typedoc.org/" target="_blank">TypeDoc</a></p></footer><div class="overlay"></div></body></html>
@@ -0,0 +1,66 @@
1
+ <!DOCTYPE html><html class="default" lang="en" data-base="../"><head><meta charset="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>printOrego | diff-grok - v1.1.0</title><meta name="description" content="Documentation for diff-grok"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="../assets/style.css"/><link rel="stylesheet" href="../assets/highlight.css"/><script defer src="../assets/main.js"></script><script async src="../assets/icons.js" id="tsd-icons-script"></script><script async src="../assets/search.js" id="tsd-search-script"></script><script async src="../assets/navigation.js" id="tsd-nav-script"></script><script async src="../assets/hierarchy.js" id="tsd-hierarchy-script"></script></head><body><script>document.documentElement.dataset.theme = localStorage.getItem("tsd-theme") || "os";document.body.style.display="none";setTimeout(() => window.app?app.showPage():document.body.style.removeProperty("display"),500)</script><header class="tsd-page-toolbar"><div class="tsd-toolbar-contents container"><a href="../index.html" class="title">diff-grok - v1.1.0</a><div id="tsd-toolbar-links"></div><button id="tsd-search-trigger" class="tsd-widget" aria-label="Search"><svg width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-search"></use></svg></button><dialog id="tsd-search" aria-label="Search"><input role="combobox" id="tsd-search-input" aria-controls="tsd-search-results" aria-autocomplete="list" aria-expanded="true" autocapitalize="off" autocomplete="off" placeholder="Search the docs" maxLength="100"/><ul role="listbox" id="tsd-search-results"></ul><div id="tsd-search-status" aria-live="polite" aria-atomic="true"><div>Preparing search index...</div></div></dialog><a href="#" class="tsd-widget menu" id="tsd-toolbar-menu-trigger" data-toggle="menu" aria-label="Menu"><svg width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-menu"></use></svg></a></div></header><div class="container container-main"><div class="col-content"><div class="tsd-page-title"><ul class="tsd-breadcrumb" aria-label="Breadcrumb"><li><a href="" aria-current="page">printOrego</a></li></ul><h1>Function printOrego</h1></div><section class="tsd-panel"><ul class="tsd-signatures"><li class=""><div class="tsd-signature tsd-anchor-link" id="printorego"><span class="tsd-kind-call-signature">printOrego</span><span class="tsd-signature-symbol">()</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">void</span><a href="#printorego" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></div><div class="tsd-description"><div class="tsd-comment tsd-typography"><p>Print solution of the OREGO benchmark problem</p>
2
+ </div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">void</span></h4><div class="tsd-comment tsd-typography"><div class="tsd-tag-example"><h4 class="tsd-anchor-link" id="example">Example<a href="#example" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h4><pre><code class="ts"><span class="hl-3">// TypeScript usage example</span><br/><span class="hl-4">import</span><span class="hl-1"> {</span><span class="hl-5">printOrego</span><span class="hl-1">} </span><span class="hl-4">from</span><span class="hl-1"> </span><span class="hl-2">&#39;diff-grok&#39;</span><span class="hl-1">;</span><br/><br/><span class="hl-0">printOrego</span><span class="hl-1">();</span>
3
+ </code><button type="button">Copy</button></pre>
4
+
5
+ <pre><code class="python"># Python reference calculation for comparison
6
+ import numpy as np
7
+ import pandas as pd
8
+ from scipy.integrate import solve_ivp
9
+
10
+ # -------------------------
11
+ # 0. Solver method
12
+ # -------------------------
13
+ METHOD = "Radau" # stiff solver recommended
14
+
15
+ # -------------------------
16
+ # 1. Define OREGO ODE
17
+ # -------------------------
18
+ def orego(t, y):
19
+ y1, y2, y3 = y
20
+ dy1 = 77.27 * (y2 - y1 * y2 + y1 - 0.000008375 * y1**2)
21
+ dy2 = ( -y2 - y1 * y2 + y3 ) / 77.27
22
+ dy3 = 0.161 * (y1 - y3)
23
+ return [dy1, dy2, dy3]
24
+
25
+ # -------------------------
26
+ # 2. Initial conditions and time
27
+ # -------------------------
28
+ y0 = [1, 2, 3]
29
+ t_start = 0.0
30
+ t_end = 360.0
31
+ t_step = 0.01
32
+
33
+ # Use linspace to ensure t_eval within t_span
34
+ n_points = int(np.ceil((t_end - t_start) / t_step)) + 1
35
+ t_eval = np.linspace(t_start, t_end, n_points)
36
+
37
+ # -------------------------
38
+ # 3. Solve ODE
39
+ # -------------------------
40
+ sol = solve_ivp(
41
+ orego,
42
+ (t_start, t_end),
43
+ y0,
44
+ method=METHOD,
45
+ t_eval=t_eval,
46
+ rtol=1e-8,
47
+ atol=1e-8
48
+ )
49
+
50
+ print("Success:", sol.success)
51
+ print("Message:", sol.message)
52
+
53
+ # -------------------------
54
+ # 4. Save solution to CSV
55
+ # -------------------------
56
+ data = np.column_stack((sol.t, sol.y.T))
57
+ col_names = ['t', 'y1', 'y2', 'y3']
58
+
59
+ df = pd.DataFrame(data, columns=col_names)
60
+ filename = f"OREGO-using-{METHOD}.csv"
61
+ df.to_csv(filename, index=False)
62
+
63
+ print(f"Solution saved to '{filename}'")
64
+ </code><button type="button">Copy</button></pre>
65
+
66
+ </div></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/datagrok-ai/diff-grok/blob/652d427344795ab429f0120033309f18670d3034/src/examples/print-benchmark.ts#L337">src/examples/print-benchmark.ts:337</a></li></ul></aside></div></li></ul></section></div><div class="col-sidebar"><div class="page-menu"><div class="tsd-navigation settings"><details class="tsd-accordion"><summary class="tsd-accordion-summary"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-chevronDown"></use></svg><h3>Settings</h3></summary><div class="tsd-accordion-details"><div class="tsd-filter-visibility"><span class="settings-label">Member Visibility</span><ul id="tsd-filter-options"><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-inherited" name="inherited" checked/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Inherited</span></label></li><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-external" name="external"/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>External</span></label></li></ul></div><div class="tsd-theme-toggle"><label class="settings-label" for="tsd-theme">Theme</label><select id="tsd-theme"><option value="os">OS</option><option value="light">Light</option><option value="dark">Dark</option></select></div></div></details></div></div><div class="site-menu"><nav class="tsd-navigation"><a href="../modules.html">diff-grok - v1.1.0</a><ul class="tsd-small-nested-navigation" id="tsd-nav-container"><li>Loading...</li></ul></nav></div></div></div><footer><p class="tsd-generator">Generated using <a href="https://typedoc.org/" target="_blank">TypeDoc</a></p></footer><div class="overlay"></div></body></html>