diff-grok 1.1.0 → 1.3.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 (487) hide show
  1. package/LICENSE +1 -1
  2. package/README.MD +80 -31
  3. package/dist/index.d.ts +6 -0
  4. package/{index.js → dist/index.js} +2 -1
  5. package/dist/index.js.map +1 -0
  6. package/dist/src/examples/basic-use.d.ts +10 -0
  7. package/dist/src/examples/basic-use.js.map +1 -0
  8. package/dist/src/examples/check-methods.d.ts +1 -0
  9. package/{src → dist/src}/examples/check-methods.js +15 -3
  10. package/dist/src/examples/check-methods.js.map +1 -0
  11. package/dist/src/examples/corr-probs.d.ts +15 -0
  12. package/{src → dist/src}/examples/corr-probs.js +2 -2
  13. package/dist/src/examples/corr-probs.js.map +1 -0
  14. package/dist/src/examples/cyclic-model.d.ts +6 -0
  15. package/dist/src/examples/cyclic-model.js.map +1 -0
  16. package/dist/src/examples/e5.d.ts +15 -0
  17. package/dist/src/examples/e5.js.map +1 -0
  18. package/dist/src/examples/hires.d.ts +15 -0
  19. package/dist/src/examples/hires.js.map +1 -0
  20. package/dist/src/examples/index.d.ts +22 -0
  21. package/dist/src/examples/index.js.map +1 -0
  22. package/dist/src/examples/model-updates.d.ts +6 -0
  23. package/dist/src/examples/model-updates.js.map +1 -0
  24. package/dist/src/examples/orego.d.ts +15 -0
  25. package/dist/src/examples/orego.js.map +1 -0
  26. package/dist/src/examples/pipeline-use.d.ts +6 -0
  27. package/dist/src/examples/pipeline-use.js.map +1 -0
  28. package/dist/src/examples/pollution.d.ts +15 -0
  29. package/dist/src/examples/pollution.js.map +1 -0
  30. package/{src/examples/print-benchmark.ts → dist/src/examples/print-benchmark.d.ts} +8 -58
  31. package/dist/src/examples/print-benchmark.js.map +1 -0
  32. package/dist/src/examples/robertson.d.ts +15 -0
  33. package/{src → dist/src}/examples/robertson.js +2 -2
  34. package/dist/src/examples/robertson.js.map +1 -0
  35. package/dist/src/examples/scripting.d.ts +1 -0
  36. package/dist/src/examples/scripting.js.map +1 -0
  37. package/dist/src/examples/vdpol.d.ts +15 -0
  38. package/dist/src/examples/vdpol.js.map +1 -0
  39. package/dist/src/latex-export/examples/advanced-to-latex.d.ts +2 -0
  40. package/dist/src/latex-export/examples/advanced-to-latex.js +41 -0
  41. package/dist/src/latex-export/examples/advanced-to-latex.js.map +1 -0
  42. package/dist/src/latex-export/examples/basic-to-latex.d.ts +2 -0
  43. package/dist/src/latex-export/examples/basic-to-latex.js +17 -0
  44. package/dist/src/latex-export/examples/basic-to-latex.js.map +1 -0
  45. package/dist/src/latex-export/examples/bioreactor-to-latex-selective.d.ts +2 -0
  46. package/dist/src/latex-export/examples/bioreactor-to-latex-selective.js +145 -0
  47. package/dist/src/latex-export/examples/bioreactor-to-latex-selective.js.map +1 -0
  48. package/dist/src/latex-export/examples/chem-react-to-latex-no-cdot.d.ts +2 -0
  49. package/dist/src/latex-export/examples/chem-react-to-latex-no-cdot.js +41 -0
  50. package/dist/src/latex-export/examples/chem-react-to-latex-no-cdot.js.map +1 -0
  51. package/dist/src/latex-export/examples/energy-n-control-to-markdown.d.ts +2 -0
  52. package/dist/src/latex-export/examples/energy-n-control-to-markdown.js +58 -0
  53. package/dist/src/latex-export/examples/energy-n-control-to-markdown.js.map +1 -0
  54. package/dist/src/latex-export/examples/extended-to-markdown.d.ts +2 -0
  55. package/dist/src/latex-export/examples/extended-to-markdown.js +37 -0
  56. package/dist/src/latex-export/examples/extended-to-markdown.js.map +1 -0
  57. package/dist/src/latex-export/examples/fermentation-to-latex.d.ts +2 -0
  58. package/dist/src/latex-export/examples/fermentation-to-latex.js +32 -0
  59. package/dist/src/latex-export/examples/fermentation-to-latex.js.map +1 -0
  60. package/dist/src/latex-export/examples/ga-production-to-markdown.d.ts +2 -0
  61. package/dist/src/latex-export/examples/ga-production-to-markdown.js +58 -0
  62. package/dist/src/latex-export/examples/ga-production-to-markdown.js.map +1 -0
  63. package/dist/src/latex-export/examples/nimotuzumab-to-latex.d.ts +2 -0
  64. package/dist/src/latex-export/examples/nimotuzumab-to-latex.js +53 -0
  65. package/dist/src/latex-export/examples/nimotuzumab-to-latex.js.map +1 -0
  66. package/dist/src/latex-export/examples/pk-pd-to-markdown-minimal.d.ts +2 -0
  67. package/dist/src/latex-export/examples/pk-pd-to-markdown-minimal.js +50 -0
  68. package/dist/src/latex-export/examples/pk-pd-to-markdown-minimal.js.map +1 -0
  69. package/dist/src/latex-export/examples/pk-to-markdown.d.ts +2 -0
  70. package/dist/src/latex-export/examples/pk-to-markdown.js +35 -0
  71. package/dist/src/latex-export/examples/pk-to-markdown.js.map +1 -0
  72. package/dist/src/latex-export/examples/pollution-to-latex.d.ts +2 -0
  73. package/dist/src/latex-export/examples/pollution-to-latex.js +141 -0
  74. package/dist/src/latex-export/examples/pollution-to-latex.js.map +1 -0
  75. package/dist/src/latex-export/examples/robertson-to-latex-no-meta.d.ts +2 -0
  76. package/dist/src/latex-export/examples/robertson-to-latex-no-meta.js +25 -0
  77. package/dist/src/latex-export/examples/robertson-to-latex-no-meta.js.map +1 -0
  78. package/dist/src/latex-export/generator/bracket-manager.d.ts +19 -0
  79. package/dist/src/latex-export/generator/bracket-manager.js +58 -0
  80. package/dist/src/latex-export/generator/bracket-manager.js.map +1 -0
  81. package/dist/src/latex-export/generator/document-builder.d.ts +13 -0
  82. package/dist/src/latex-export/generator/document-builder.js +433 -0
  83. package/dist/src/latex-export/generator/document-builder.js.map +1 -0
  84. package/dist/src/latex-export/generator/latex-generator.d.ts +23 -0
  85. package/dist/src/latex-export/generator/latex-generator.js +176 -0
  86. package/dist/src/latex-export/generator/latex-generator.js.map +1 -0
  87. package/dist/src/latex-export/index.d.ts +8 -0
  88. package/dist/src/latex-export/index.js +25 -0
  89. package/dist/src/latex-export/index.js.map +1 -0
  90. package/dist/src/latex-export/output/md-formatter.d.ts +16 -0
  91. package/dist/src/latex-export/output/md-formatter.js +27 -0
  92. package/dist/src/latex-export/output/md-formatter.js.map +1 -0
  93. package/dist/src/latex-export/output/tex-formatter.d.ts +5 -0
  94. package/dist/src/latex-export/output/tex-formatter.js +20 -0
  95. package/dist/src/latex-export/output/tex-formatter.js.map +1 -0
  96. package/dist/src/latex-export/parser/ast-parser.d.ts +7 -0
  97. package/dist/src/latex-export/parser/ast-parser.js +153 -0
  98. package/dist/src/latex-export/parser/ast-parser.js.map +1 -0
  99. package/dist/src/latex-export/parser/ivp-parser.d.ts +6 -0
  100. package/dist/src/latex-export/parser/ivp-parser.js +219 -0
  101. package/dist/src/latex-export/parser/ivp-parser.js.map +1 -0
  102. package/dist/src/latex-export/parser/line-joiner.d.ts +25 -0
  103. package/dist/src/latex-export/parser/line-joiner.js +80 -0
  104. package/dist/src/latex-export/parser/line-joiner.js.map +1 -0
  105. package/dist/src/latex-export/parser/tokenizer.d.ts +7 -0
  106. package/dist/src/latex-export/parser/tokenizer.js +143 -0
  107. package/dist/src/latex-export/parser/tokenizer.js.map +1 -0
  108. package/dist/src/latex-export/transformer/functions.d.ts +12 -0
  109. package/dist/src/latex-export/transformer/functions.js +47 -0
  110. package/dist/src/latex-export/transformer/functions.js.map +1 -0
  111. package/dist/src/latex-export/transformer/identifier.d.ts +23 -0
  112. package/dist/src/latex-export/transformer/identifier.js +194 -0
  113. package/dist/src/latex-export/transformer/identifier.js.map +1 -0
  114. package/dist/src/latex-export/transformer/operators.d.ts +9 -0
  115. package/dist/src/latex-export/transformer/operators.js +41 -0
  116. package/dist/src/latex-export/transformer/operators.js.map +1 -0
  117. package/dist/src/latex-export/types.d.ts +122 -0
  118. package/dist/src/latex-export/types.js +10 -0
  119. package/dist/src/latex-export/types.js.map +1 -0
  120. package/{src/pipeline/basic-pipeline-creator.ts → dist/src/pipeline/basic-pipeline-creator.d.ts} +11 -28
  121. package/dist/src/pipeline/basic-pipeline-creator.js.map +1 -0
  122. package/dist/src/pipeline/constants.d.ts +14 -0
  123. package/dist/src/pipeline/constants.js.map +1 -0
  124. package/dist/src/pipeline/index.d.ts +7 -0
  125. package/dist/src/pipeline/index.js.map +1 -0
  126. package/dist/src/pipeline/input.d.ts +3 -0
  127. package/dist/src/pipeline/input.js.map +1 -0
  128. package/dist/src/pipeline/loops-pipeline-creator.d.ts +124 -0
  129. package/dist/src/pipeline/loops-pipeline-creator.js.map +1 -0
  130. package/dist/src/pipeline/output.d.ts +10 -0
  131. package/{src → dist/src}/pipeline/output.js +1 -1
  132. package/dist/src/pipeline/output.js.map +1 -0
  133. package/dist/src/pipeline/pipeline-creator.d.ts +12 -0
  134. package/{src → dist/src}/pipeline/pipeline-creator.js +2 -0
  135. package/dist/src/pipeline/pipeline-creator.js.map +1 -0
  136. package/{src/pipeline/pipeline.ts → dist/src/pipeline/pipeline.d.ts} +10 -97
  137. package/dist/src/pipeline/pipeline.js.map +1 -0
  138. package/{src/pipeline/updates-pipeline-creator.ts → dist/src/pipeline/updates-pipeline-creator.d.ts} +15 -131
  139. package/dist/src/pipeline/updates-pipeline-creator.js.map +1 -0
  140. package/dist/src/scripting-tools/constants.d.ts +59 -0
  141. package/dist/src/scripting-tools/constants.js.map +1 -0
  142. package/dist/src/scripting-tools/index.d.ts +3 -0
  143. package/dist/src/scripting-tools/index.js.map +1 -0
  144. package/dist/src/scripting-tools/model-error.d.ts +10 -0
  145. package/{src → dist/src}/scripting-tools/model-error.js +2 -1
  146. package/dist/src/scripting-tools/model-error.js.map +1 -0
  147. package/dist/src/scripting-tools/scripting-tools.d.ts +277 -0
  148. package/{src → dist/src}/scripting-tools/scripting-tools.js +2 -4
  149. package/dist/src/scripting-tools/scripting-tools.js.map +1 -0
  150. package/dist/src/solver-tools/ab4-method.d.ts +46 -0
  151. package/{src → dist/src}/solver-tools/ab4-method.js +3 -3
  152. package/dist/src/solver-tools/ab4-method.js.map +1 -0
  153. package/dist/src/solver-tools/ab5-method.d.ts +46 -0
  154. package/{src → dist/src}/solver-tools/ab5-method.js +3 -3
  155. package/dist/src/solver-tools/ab5-method.js.map +1 -0
  156. package/dist/src/solver-tools/callbacks/callback-base.d.ts +8 -0
  157. package/dist/src/solver-tools/callbacks/callback-base.js.map +1 -0
  158. package/dist/src/solver-tools/callbacks/callback-tools.d.ts +6 -0
  159. package/dist/src/solver-tools/callbacks/callback-tools.js.map +1 -0
  160. package/dist/src/solver-tools/callbacks/iter-checker-callback.d.ts +12 -0
  161. package/{src → dist/src}/solver-tools/callbacks/iter-checker-callback.js +2 -0
  162. package/dist/src/solver-tools/callbacks/iter-checker-callback.js.map +1 -0
  163. package/dist/src/solver-tools/callbacks/time-checker-callback.d.ts +12 -0
  164. package/{src → dist/src}/solver-tools/callbacks/time-checker-callback.js +2 -2
  165. package/dist/src/solver-tools/callbacks/time-checker-callback.js.map +1 -0
  166. package/dist/src/solver-tools/cvode/common.d.ts +395 -0
  167. package/dist/src/solver-tools/cvode/common.js +483 -0
  168. package/dist/src/solver-tools/cvode/common.js.map +1 -0
  169. package/dist/src/solver-tools/cvode/cvode.d.ts +23 -0
  170. package/dist/src/solver-tools/cvode/cvode.js +1062 -0
  171. package/dist/src/solver-tools/cvode/cvode.js.map +1 -0
  172. package/dist/src/solver-tools/cvode/cvode_adams.d.ts +22 -0
  173. package/dist/src/solver-tools/cvode/cvode_adams.js +124 -0
  174. package/dist/src/solver-tools/cvode/cvode_adams.js.map +1 -0
  175. package/dist/src/solver-tools/cvode/cvode_bdf.d.ts +37 -0
  176. package/dist/src/solver-tools/cvode/cvode_bdf.js +153 -0
  177. package/dist/src/solver-tools/cvode/cvode_bdf.js.map +1 -0
  178. package/dist/src/solver-tools/cvode/cvode_class.d.ts +116 -0
  179. package/dist/src/solver-tools/cvode/cvode_class.js +163 -0
  180. package/dist/src/solver-tools/cvode/cvode_class.js.map +1 -0
  181. package/dist/src/solver-tools/cvode/cvode_hin.d.ts +24 -0
  182. package/dist/src/solver-tools/cvode/cvode_hin.js +119 -0
  183. package/dist/src/solver-tools/cvode/cvode_hin.js.map +1 -0
  184. package/dist/src/solver-tools/cvode/cvode_io.d.ts +98 -0
  185. package/dist/src/solver-tools/cvode/cvode_io.js +202 -0
  186. package/dist/src/solver-tools/cvode/cvode_io.js.map +1 -0
  187. package/dist/src/solver-tools/cvode/cvode_ls.d.ts +23 -0
  188. package/dist/src/solver-tools/cvode/cvode_ls.js +210 -0
  189. package/dist/src/solver-tools/cvode/cvode_ls.js.map +1 -0
  190. package/dist/src/solver-tools/cvode/cvode_nls.d.ts +25 -0
  191. package/dist/src/solver-tools/cvode/cvode_nls.js +220 -0
  192. package/dist/src/solver-tools/cvode/cvode_nls.js.map +1 -0
  193. package/dist/src/solver-tools/cvode/cvode_root.d.ts +64 -0
  194. package/dist/src/solver-tools/cvode/cvode_root.js +415 -0
  195. package/dist/src/solver-tools/cvode/cvode_root.js.map +1 -0
  196. package/dist/src/solver-tools/cvode/dense_linalg.d.ts +50 -0
  197. package/dist/src/solver-tools/cvode/dense_linalg.js +131 -0
  198. package/dist/src/solver-tools/cvode/dense_linalg.js.map +1 -0
  199. package/dist/src/solver-tools/cvode/index.d.ts +24 -0
  200. package/dist/src/solver-tools/cvode/index.js +26 -0
  201. package/dist/src/solver-tools/cvode/index.js.map +1 -0
  202. package/dist/src/solver-tools/cvode-method.d.ts +47 -0
  203. package/dist/src/solver-tools/cvode-method.js +114 -0
  204. package/dist/src/solver-tools/cvode-method.js.map +1 -0
  205. package/dist/src/solver-tools/index.d.ts +16 -0
  206. package/{src → dist/src}/solver-tools/index.js +1 -0
  207. package/dist/src/solver-tools/index.js.map +1 -0
  208. package/dist/src/solver-tools/lin-alg-tools.d.ts +6 -0
  209. package/dist/src/solver-tools/lin-alg-tools.js.map +1 -0
  210. package/dist/src/solver-tools/lsoda/blas.d.ts +59 -0
  211. package/{src → dist/src}/solver-tools/lsoda/blas.js +11 -0
  212. package/dist/src/solver-tools/lsoda/blas.js.map +1 -0
  213. package/dist/src/solver-tools/lsoda/cfode.d.ts +18 -0
  214. package/{src → dist/src}/solver-tools/lsoda/cfode.js +11 -0
  215. package/dist/src/solver-tools/lsoda/cfode.js.map +1 -0
  216. package/dist/src/solver-tools/lsoda/common.d.ts +85 -0
  217. package/dist/src/solver-tools/lsoda/common.js +96 -0
  218. package/dist/src/solver-tools/lsoda/common.js.map +1 -0
  219. package/dist/src/solver-tools/lsoda/corfailure.d.ts +18 -0
  220. package/{src → dist/src}/solver-tools/lsoda/corfailure.js +11 -0
  221. package/dist/src/solver-tools/lsoda/corfailure.js.map +1 -0
  222. package/dist/src/solver-tools/lsoda/correction.d.ts +23 -0
  223. package/{src → dist/src}/solver-tools/lsoda/correction.js +11 -0
  224. package/dist/src/solver-tools/lsoda/correction.js.map +1 -0
  225. package/dist/src/solver-tools/lsoda/dense.d.ts +47 -0
  226. package/{src → dist/src}/solver-tools/lsoda/dense.js +13 -0
  227. package/dist/src/solver-tools/lsoda/dense.js.map +1 -0
  228. package/dist/src/solver-tools/lsoda/index.d.ts +16 -0
  229. package/dist/src/solver-tools/lsoda/index.js +15 -0
  230. package/dist/src/solver-tools/lsoda/index.js.map +1 -0
  231. package/dist/src/solver-tools/lsoda/intdy.d.ts +19 -0
  232. package/{src → dist/src}/solver-tools/lsoda/intdy.js +11 -0
  233. package/dist/src/solver-tools/lsoda/intdy.js.map +1 -0
  234. package/dist/src/solver-tools/lsoda/lsoda.d.ts +66 -0
  235. package/{src → dist/src}/solver-tools/lsoda/lsoda.js +24 -5
  236. package/dist/src/solver-tools/lsoda/lsoda.js.map +1 -0
  237. package/dist/src/solver-tools/lsoda/methodswitch.d.ts +21 -0
  238. package/{src → dist/src}/solver-tools/lsoda/methodswitch.js +11 -0
  239. package/dist/src/solver-tools/lsoda/methodswitch.js.map +1 -0
  240. package/dist/src/solver-tools/lsoda/orderswitch.d.ts +21 -0
  241. package/{src → dist/src}/solver-tools/lsoda/orderswitch.js +11 -0
  242. package/dist/src/solver-tools/lsoda/orderswitch.js.map +1 -0
  243. package/dist/src/solver-tools/lsoda/prja.d.ts +18 -0
  244. package/{src → dist/src}/solver-tools/lsoda/prja.js +11 -0
  245. package/dist/src/solver-tools/lsoda/prja.js.map +1 -0
  246. package/dist/src/solver-tools/lsoda/scaleh.d.ts +16 -0
  247. package/{src → dist/src}/solver-tools/lsoda/scaleh.js +11 -0
  248. package/dist/src/solver-tools/lsoda/scaleh.js.map +1 -0
  249. package/dist/src/solver-tools/lsoda/solsy.d.ts +17 -0
  250. package/dist/src/solver-tools/lsoda/solsy.js +25 -0
  251. package/dist/src/solver-tools/lsoda/solsy.js.map +1 -0
  252. package/dist/src/solver-tools/lsoda/stoda.d.ts +19 -0
  253. package/{src → dist/src}/solver-tools/lsoda/stoda.js +11 -0
  254. package/dist/src/solver-tools/lsoda/stoda.js.map +1 -0
  255. package/dist/src/solver-tools/lsoda-method.d.ts +46 -0
  256. package/{src → dist/src}/solver-tools/lsoda-method.js +23 -9
  257. package/dist/src/solver-tools/lsoda-method.js.map +1 -0
  258. package/dist/src/solver-tools/mrt-method.d.ts +47 -0
  259. package/{src → dist/src}/solver-tools/mrt-method.js +2 -2
  260. package/dist/src/solver-tools/mrt-method.js.map +1 -0
  261. package/dist/src/solver-tools/rk3-method.d.ts +46 -0
  262. package/{src → dist/src}/solver-tools/rk3-method.js +2 -2
  263. package/dist/src/solver-tools/rk3-method.js.map +1 -0
  264. package/dist/src/solver-tools/rk4-method.d.ts +46 -0
  265. package/{src → dist/src}/solver-tools/rk4-method.js +2 -2
  266. package/dist/src/solver-tools/rk4-method.js.map +1 -0
  267. package/dist/src/solver-tools/rkdp-method.d.ts +46 -0
  268. package/{src → dist/src}/solver-tools/rkdp-method.js +2 -2
  269. package/dist/src/solver-tools/rkdp-method.js.map +1 -0
  270. package/dist/src/solver-tools/ros34prw-method.d.ts +46 -0
  271. package/{src → dist/src}/solver-tools/ros34prw-method.js +2 -2
  272. package/dist/src/solver-tools/ros34prw-method.js.map +1 -0
  273. package/dist/src/solver-tools/ros3prw-method.d.ts +46 -0
  274. package/{src → dist/src}/solver-tools/ros3prw-method.js +2 -2
  275. package/dist/src/solver-tools/ros3prw-method.js.map +1 -0
  276. package/{src/solver-tools/solver-defs.ts → dist/src/solver-tools/solver-defs.d.ts} +45 -84
  277. package/{src → dist/src}/solver-tools/solver-defs.js +1 -0
  278. package/dist/src/solver-tools/solver-defs.js.map +1 -0
  279. package/dist/src/worker-tools/index.d.ts +2 -0
  280. package/dist/src/worker-tools/index.js.map +1 -0
  281. package/{src/worker-tools/scripting.ts → dist/src/worker-tools/scripting.d.ts} +9 -91
  282. package/dist/src/worker-tools/scripting.js.map +1 -0
  283. package/dist/src/worker-tools/solving.d.ts +7 -0
  284. package/{src → dist/src}/worker-tools/solving.js +3 -1
  285. package/dist/src/worker-tools/solving.js.map +1 -0
  286. package/package.json +13 -12
  287. package/.claude/settings.local.json +0 -11
  288. package/.eslintrc.json +0 -45
  289. package/.github/ISSUE_TEMPLATE/bug_report.md +0 -29
  290. package/.github/ISSUE_TEMPLATE/feature_request.md +0 -20
  291. package/.github/PULL_REQUEST_TEMPLATE.md +0 -22
  292. package/.github/scripts/bump-js-api-version.sh +0 -106
  293. package/.github/scripts/check-output.sh +0 -20
  294. package/.github/scripts/iac-cfn-deploy.sh +0 -90
  295. package/.github/scripts/slack_api_request.sh +0 -65
  296. package/.github/scripts/test_package.sh +0 -270
  297. package/.github/workflows/deploy-docs.yml +0 -15
  298. package/.github/workflows/libraries.yaml +0 -305
  299. package/.github/workflows/test.yaml +0 -19
  300. package/CLAUDE.md +0 -98
  301. package/CONTRIBUTING.md +0 -74
  302. package/eslintrc.json +0 -45
  303. package/images/E5.png +0 -0
  304. package/images/HIRES.png +0 -0
  305. package/images/OREGO.png +0 -0
  306. package/images/POLL-full.png +0 -0
  307. package/images/POLL.png +0 -0
  308. package/images/ROBER.png +0 -0
  309. package/images/VDP0L.png +0 -0
  310. package/images/VDPOL.png +0 -0
  311. package/images/acid-prod.gif +0 -0
  312. package/index.js.map +0 -1
  313. package/index.ts +0 -17
  314. package/jest.config.js +0 -13
  315. package/src/examples/basic-use.js.map +0 -1
  316. package/src/examples/basic-use.ts +0 -44
  317. package/src/examples/bioreactor.js +0 -125
  318. package/src/examples/bioreactor.js.map +0 -1
  319. package/src/examples/bioreactor.ts +0 -132
  320. package/src/examples/check-methods.js.map +0 -1
  321. package/src/examples/check-methods.ts +0 -81
  322. package/src/examples/corr-probs.js.map +0 -1
  323. package/src/examples/corr-probs.ts +0 -155
  324. package/src/examples/cyclic-model.js.map +0 -1
  325. package/src/examples/cyclic-model.ts +0 -112
  326. package/src/examples/e5.js.map +0 -1
  327. package/src/examples/e5.ts +0 -36
  328. package/src/examples/hires.js.map +0 -1
  329. package/src/examples/hires.ts +0 -40
  330. package/src/examples/index.js.map +0 -1
  331. package/src/examples/index.ts +0 -34
  332. package/src/examples/model-updates.js.map +0 -1
  333. package/src/examples/model-updates.ts +0 -122
  334. package/src/examples/orego.js.map +0 -1
  335. package/src/examples/orego.ts +0 -25
  336. package/src/examples/pipeline-use.js.map +0 -1
  337. package/src/examples/pipeline-use.ts +0 -98
  338. package/src/examples/pollution.js.map +0 -1
  339. package/src/examples/pollution.ts +0 -133
  340. package/src/examples/print-benchmark.js.map +0 -1
  341. package/src/examples/robertson.js.map +0 -1
  342. package/src/examples/robertson.ts +0 -19
  343. package/src/examples/scripting.js.map +0 -1
  344. package/src/examples/scripting.ts +0 -35
  345. package/src/examples/vdpol.js.map +0 -1
  346. package/src/examples/vdpol.ts +0 -17
  347. package/src/pipeline/basic-pipeline-creator.js.map +0 -1
  348. package/src/pipeline/constants.js.map +0 -1
  349. package/src/pipeline/constants.ts +0 -21
  350. package/src/pipeline/index.js.map +0 -1
  351. package/src/pipeline/index.ts +0 -7
  352. package/src/pipeline/input.js.map +0 -1
  353. package/src/pipeline/input.ts +0 -55
  354. package/src/pipeline/loops-pipeline-creator.js.map +0 -1
  355. package/src/pipeline/loops-pipeline-creator.ts +0 -252
  356. package/src/pipeline/output.js.map +0 -1
  357. package/src/pipeline/output.ts +0 -201
  358. package/src/pipeline/pipeline-creator.js.map +0 -1
  359. package/src/pipeline/pipeline-creator.ts +0 -20
  360. package/src/pipeline/pipeline.js.map +0 -1
  361. package/src/pipeline/updates-pipeline-creator.js.map +0 -1
  362. package/src/scripting-tools/constants.js.map +0 -1
  363. package/src/scripting-tools/constants.ts +0 -69
  364. package/src/scripting-tools/index.js.map +0 -1
  365. package/src/scripting-tools/index.ts +0 -8
  366. package/src/scripting-tools/model-error.js.map +0 -1
  367. package/src/scripting-tools/model-error.ts +0 -21
  368. package/src/scripting-tools/scripting-tools.js.map +0 -1
  369. package/src/scripting-tools/scripting-tools.ts +0 -1582
  370. package/src/solver-tools/ab4-method.js.map +0 -1
  371. package/src/solver-tools/ab4-method.ts +0 -395
  372. package/src/solver-tools/ab5-method.js.map +0 -1
  373. package/src/solver-tools/ab5-method.ts +0 -397
  374. package/src/solver-tools/callbacks/callback-base.js.map +0 -1
  375. package/src/solver-tools/callbacks/callback-base.ts +0 -12
  376. package/src/solver-tools/callbacks/callback-tools.js.map +0 -1
  377. package/src/solver-tools/callbacks/callback-tools.ts +0 -22
  378. package/src/solver-tools/callbacks/iter-checker-callback.js.map +0 -1
  379. package/src/solver-tools/callbacks/iter-checker-callback.ts +0 -25
  380. package/src/solver-tools/callbacks/time-checker-callback.js.map +0 -1
  381. package/src/solver-tools/callbacks/time-checker-callback.ts +0 -23
  382. package/src/solver-tools/index.js.map +0 -1
  383. package/src/solver-tools/index.ts +0 -15
  384. package/src/solver-tools/lin-alg-tools.js.map +0 -1
  385. package/src/solver-tools/lin-alg-tools.ts +0 -75
  386. package/src/solver-tools/lsoda/blas.js.map +0 -1
  387. package/src/solver-tools/lsoda/blas.ts +0 -267
  388. package/src/solver-tools/lsoda/cfode.js.map +0 -1
  389. package/src/solver-tools/lsoda/cfode.ts +0 -83
  390. package/src/solver-tools/lsoda/common.js +0 -94
  391. package/src/solver-tools/lsoda/common.js.map +0 -1
  392. package/src/solver-tools/lsoda/common.ts +0 -135
  393. package/src/solver-tools/lsoda/corfailure.js.map +0 -1
  394. package/src/solver-tools/lsoda/corfailure.ts +0 -30
  395. package/src/solver-tools/lsoda/correction.js.map +0 -1
  396. package/src/solver-tools/lsoda/correction.ts +0 -119
  397. package/src/solver-tools/lsoda/dense.js.map +0 -1
  398. package/src/solver-tools/lsoda/dense.ts +0 -129
  399. package/src/solver-tools/lsoda/index.js +0 -4
  400. package/src/solver-tools/lsoda/index.js.map +0 -1
  401. package/src/solver-tools/lsoda/index.ts +0 -5
  402. package/src/solver-tools/lsoda/intdy.js.map +0 -1
  403. package/src/solver-tools/lsoda/intdy.ts +0 -50
  404. package/src/solver-tools/lsoda/lsoda.js.map +0 -1
  405. package/src/solver-tools/lsoda/lsoda.ts +0 -632
  406. package/src/solver-tools/lsoda/methodswitch.js.map +0 -1
  407. package/src/solver-tools/lsoda/methodswitch.ts +0 -107
  408. package/src/solver-tools/lsoda/orderswitch.js.map +0 -1
  409. package/src/solver-tools/lsoda/orderswitch.ts +0 -95
  410. package/src/solver-tools/lsoda/prja.js.map +0 -1
  411. package/src/solver-tools/lsoda/prja.ts +0 -49
  412. package/src/solver-tools/lsoda/scaleh.js.map +0 -1
  413. package/src/solver-tools/lsoda/scaleh.ts +0 -33
  414. package/src/solver-tools/lsoda/solsy.js +0 -14
  415. package/src/solver-tools/lsoda/solsy.js.map +0 -1
  416. package/src/solver-tools/lsoda/solsy.ts +0 -18
  417. package/src/solver-tools/lsoda/stoda.js.map +0 -1
  418. package/src/solver-tools/lsoda/stoda.ts +0 -286
  419. package/src/solver-tools/lsoda-method.js.map +0 -1
  420. package/src/solver-tools/lsoda-method.ts +0 -136
  421. package/src/solver-tools/mrt-method.js.map +0 -1
  422. package/src/solver-tools/mrt-method.ts +0 -398
  423. package/src/solver-tools/rk3-method.js.map +0 -1
  424. package/src/solver-tools/rk3-method.ts +0 -257
  425. package/src/solver-tools/rk4-method.js.map +0 -1
  426. package/src/solver-tools/rk4-method.ts +0 -286
  427. package/src/solver-tools/rkdp-method.js.map +0 -1
  428. package/src/solver-tools/rkdp-method.ts +0 -300
  429. package/src/solver-tools/ros34prw-method.js.map +0 -1
  430. package/src/solver-tools/ros34prw-method.ts +0 -373
  431. package/src/solver-tools/ros3prw-method.js.map +0 -1
  432. package/src/solver-tools/ros3prw-method.ts +0 -342
  433. package/src/solver-tools/solver-defs.js.map +0 -1
  434. package/src/tests/correctness.test.js +0 -15
  435. package/src/tests/correctness.test.js.map +0 -1
  436. package/src/tests/correctness.test.ts +0 -16
  437. package/src/tests/lsoda-lib-correctness.test.js +0 -223
  438. package/src/tests/lsoda-lib-correctness.test.js.map +0 -1
  439. package/src/tests/lsoda-lib-correctness.test.ts +0 -283
  440. package/src/tests/lsoda-lib-performance.test.js +0 -95
  441. package/src/tests/lsoda-lib-performance.test.js.map +0 -1
  442. package/src/tests/lsoda-lib-performance.test.ts +0 -126
  443. package/src/tests/performance.test.js +0 -16
  444. package/src/tests/performance.test.js.map +0 -1
  445. package/src/tests/performance.test.ts +0 -17
  446. package/src/tests/pipeline.test.js +0 -10
  447. package/src/tests/pipeline.test.js.map +0 -1
  448. package/src/tests/pipeline.test.ts +0 -11
  449. package/src/tests/test-defs.js +0 -207
  450. package/src/tests/test-defs.js.map +0 -1
  451. package/src/tests/test-defs.ts +0 -225
  452. package/src/tests/test-utils.js +0 -28
  453. package/src/tests/test-utils.js.map +0 -1
  454. package/src/tests/test-utils.ts +0 -37
  455. package/src/worker-tools/index.js.map +0 -1
  456. package/src/worker-tools/index.ts +0 -2
  457. package/src/worker-tools/scripting.js.map +0 -1
  458. package/src/worker-tools/solving.js.map +0 -1
  459. package/src/worker-tools/solving.ts +0 -83
  460. package/tsconfig.json +0 -71
  461. package/typedoc.json +0 -8
  462. /package/{src → dist/src}/examples/basic-use.js +0 -0
  463. /package/{src → dist/src}/examples/cyclic-model.js +0 -0
  464. /package/{src → dist/src}/examples/e5.js +0 -0
  465. /package/{src → dist/src}/examples/hires.js +0 -0
  466. /package/{src → dist/src}/examples/index.js +0 -0
  467. /package/{src → dist/src}/examples/model-updates.js +0 -0
  468. /package/{src → dist/src}/examples/orego.js +0 -0
  469. /package/{src → dist/src}/examples/pipeline-use.js +0 -0
  470. /package/{src → dist/src}/examples/pollution.js +0 -0
  471. /package/{src → dist/src}/examples/print-benchmark.js +0 -0
  472. /package/{src → dist/src}/examples/scripting.js +0 -0
  473. /package/{src → dist/src}/examples/vdpol.js +0 -0
  474. /package/{src → dist/src}/pipeline/basic-pipeline-creator.js +0 -0
  475. /package/{src → dist/src}/pipeline/constants.js +0 -0
  476. /package/{src → dist/src}/pipeline/index.js +0 -0
  477. /package/{src → dist/src}/pipeline/input.js +0 -0
  478. /package/{src → dist/src}/pipeline/loops-pipeline-creator.js +0 -0
  479. /package/{src → dist/src}/pipeline/pipeline.js +0 -0
  480. /package/{src → dist/src}/pipeline/updates-pipeline-creator.js +0 -0
  481. /package/{src → dist/src}/scripting-tools/constants.js +0 -0
  482. /package/{src → dist/src}/scripting-tools/index.js +0 -0
  483. /package/{src → dist/src}/solver-tools/callbacks/callback-base.js +0 -0
  484. /package/{src → dist/src}/solver-tools/callbacks/callback-tools.js +0 -0
  485. /package/{src → dist/src}/solver-tools/lin-alg-tools.js +0 -0
  486. /package/{src → dist/src}/worker-tools/index.js +0 -0
  487. /package/{src → dist/src}/worker-tools/scripting.js +0 -0
@@ -1,300 +0,0 @@
1
- /* The Dormand-Prince 5(4) method (RKDP).
2
-
3
- An explicit adaptive Runge-Kutta method of order 5 with an embedded
4
- 4th-order error estimate for step size control. Uses the FSAL (First
5
- Same As Last) property for efficiency.
6
-
7
- Reference:
8
- [1] J.R. Dormand and P.J. Prince, "A family of embedded Runge-Kutta formulae",
9
- Journal of Computational and Applied Mathematics, 6(1):19-26, 1980.
10
- */
11
-
12
- import {ODEs, max, abs, SAFETY, REDUCE_COEF, GROW_COEF,
13
- ERR_CONTR, TINY, ERROR_MSG} from './solver-defs';
14
- import {Callback} from './callbacks/callback-base';
15
-
16
- // Step size control exponents for a 5th-order method
17
- const PSHRNK = -0.2; // -1/p = -1/5
18
- const PSGROW = -1.0 / 6.0; // -1/(p+1) = -1/6
19
-
20
- // Dormand-Prince 5(4) Butcher tableau coefficients
21
-
22
- // Nodes (c_i)
23
- const C2 = 1.0 / 5.0;
24
- const C3 = 3.0 / 10.0;
25
- const C4 = 4.0 / 5.0;
26
- const C5 = 8.0 / 9.0;
27
- // C6 = 1
28
- // C7 = 1
29
-
30
- // Matrix coefficients (a_ij)
31
- const A21 = 1.0 / 5.0;
32
-
33
- const A31 = 3.0 / 40.0;
34
- const A32 = 9.0 / 40.0;
35
-
36
- const A41 = 44.0 / 45.0;
37
- const A42 = -56.0 / 15.0;
38
- const A43 = 32.0 / 9.0;
39
-
40
- const A51 = 19372.0 / 6561.0;
41
- const A52 = -25360.0 / 2187.0;
42
- const A53 = 64448.0 / 6561.0;
43
- const A54 = -212.0 / 729.0;
44
-
45
- const A61 = 9017.0 / 3168.0;
46
- const A62 = -355.0 / 33.0;
47
- const A63 = 46732.0 / 5247.0;
48
- const A64 = 49.0 / 176.0;
49
- const A65 = -5103.0 / 18656.0;
50
-
51
- // A7i = Bi (FSAL property: 7th-stage coefficients equal the 5th-order weights)
52
-
53
- // 5th-order weights (b_i) — used to advance the solution
54
- const B1 = 35.0 / 384.0;
55
- // B2 = 0
56
- const B3 = 500.0 / 1113.0;
57
- const B4 = 125.0 / 192.0;
58
- const B5 = -2187.0 / 6784.0;
59
- const B6 = 11.0 / 84.0;
60
- // B7 = 0
61
-
62
- // Error coefficients: (b_i - bHat_i), where bHat are the 4th-order weights
63
- const E1 = 71.0 / 57600.0;
64
- // E2 = 0
65
- const E3 = -71.0 / 16695.0;
66
- const E4 = 71.0 / 1920.0;
67
- const E5 = -17253.0 / 339200.0;
68
- const E6 = 22.0 / 525.0;
69
- const E7 = -1.0 / 40.0;
70
-
71
- /** Solve initial value problem using the Dormand-Prince 5(4) method
72
- * @param odes initial value problem for ordinary differential equations
73
- * @param callback computations control callback
74
- * @returns solution of the problem
75
- * @example
76
- * // Example. Solve the following initial value problem using the RKDP method:
77
- * // dx/dt = x + y - t
78
- * // dy/dt = x * y + t
79
- * // x(0) = 1
80
- * // y(0) = -1
81
- * // on [0, 2] with the step 0.01.
82
- * import { ODEs, rkdp } from 'diff-grok';
83
- *
84
- * const task: ODEs = {
85
- * name: 'Example', // name of your model
86
- * arg: {
87
- * name: 't', // name of the argument
88
- * start: 0, // initial value of the argument
89
- * finish: 2, // final value of the argument
90
- * step: 0.01, // solution grid step
91
- * },
92
- * initial: [1, -1], // initial values
93
- * func: (t: number, y: Float64Array, output: Float64Array) => { // right-hand side of the system
94
- * output[0] = y[0] + y[1] - t; // 1-st equation
95
- * output[1] = y[0] * y[1] + t; // 2-nd equation
96
- * },
97
- * tolerance: 1e-7, // tolerance
98
- * solutionColNames: ['x', 'y'], // names of solution functions
99
- * };
100
- *
101
- * try {
102
- * // Solve the problem using the RKDP method
103
- * const solution = rkdp(task);
104
- *
105
- * // Print a table with the results
106
- * console.log(task.arg.name, task.solutionColNames[0], task.solutionColNames[1]);
107
- * const length = solution[0].length;
108
- * for (let i = 0; i < length; ++i)
109
- * console.log(solution[0][i], solution[1][i], solution[2][i]);
110
- * } catch (err) {
111
- * console.log('Solver failed: ', err instanceof Error ? err.message : 'Unknown problem!');
112
- * }
113
- */
114
- export function rkdp(odes: ODEs, callback?: Callback): Float64Array[] {
115
- const f = odes.func;
116
-
117
- // operating variables
118
- const t0 = odes.arg.start;
119
- const t1 = odes.arg.finish;
120
- let h = odes.arg.step;
121
- const hDataframe = h;
122
- const hMax = hDataframe * 10;
123
- const tolerance = odes.tolerance;
124
-
125
- const rowCount = Math.trunc((t1 - t0) / h) + 1;
126
- const dim = odes.initial.length;
127
-
128
- // result arrays
129
- const tArr = new Float64Array(rowCount);
130
- const yArrs = Array<Float64Array>(dim);
131
-
132
- for (let i = 0; i < dim; ++i)
133
- yArrs[i] = new Float64Array(rowCount);
134
-
135
- // method routine
136
- let timeDataframe = t0 + hDataframe;
137
- let t = t0;
138
- let tPrev = t0;
139
- let hNext = 0.0;
140
- let flag = true;
141
- let index = 1;
142
- let errmax = 0;
143
- let hTemp = 0;
144
- let tNew = 0;
145
-
146
- // buffers
147
- const y = new Float64Array(odes.initial);
148
- const yPrev = new Float64Array(odes.initial);
149
- const dydt = new Float64Array(dim);
150
- const yScale = new Float64Array(dim);
151
- const yTemp = new Float64Array(dim);
152
- const yErr = new Float64Array(dim);
153
-
154
- const k1 = new Float64Array(dim);
155
- const k2 = new Float64Array(dim);
156
- const k3 = new Float64Array(dim);
157
- const k4 = new Float64Array(dim);
158
- const k5 = new Float64Array(dim);
159
- const k6 = new Float64Array(dim);
160
- const k7 = new Float64Array(dim);
161
-
162
- // 1. SOLUTION AT THE POINT t0
163
- tArr[0] = t0;
164
- for (let i = 0; i < dim; ++i)
165
- yArrs[i][0] = y[i];
166
-
167
- // 2. COMPUTE NUMERICAL SOLUTION FOR THE POINTS FROM THE INTERVAL (t0, t1)
168
- while (flag) {
169
- // compute derivative
170
- f(t, y, dydt);
171
-
172
- // check whether to go on computations
173
- if (callback)
174
- callback.onIterationStart();
175
-
176
- // compute scale vector
177
- for (let i = 0; i < dim; ++i)
178
- yScale[i] = abs(y[i]) + h * abs(dydt[i]) + TINY;
179
-
180
- // check end point
181
- if (t + h > t1) {
182
- h = t1 - t;
183
- flag = false;
184
- }
185
-
186
- // adaptive step loop
187
- while (true) {
188
- // Stage 1: k1 = f(t, y)
189
- f(t, y, k1);
190
-
191
- // Stage 2: k2 = f(t + C2*h, y + h*A21*k1)
192
- for (let i = 0; i < dim; ++i)
193
- yTemp[i] = y[i] + h * A21 * k1[i];
194
- f(t + C2 * h, yTemp, k2);
195
-
196
- // Stage 3: k3 = f(t + C3*h, y + h*(A31*k1 + A32*k2))
197
- for (let i = 0; i < dim; ++i)
198
- yTemp[i] = y[i] + h * (A31 * k1[i] + A32 * k2[i]);
199
- f(t + C3 * h, yTemp, k3);
200
-
201
- // Stage 4: k4 = f(t + C4*h, y + h*(A41*k1 + A42*k2 + A43*k3))
202
- for (let i = 0; i < dim; ++i)
203
- yTemp[i] = y[i] + h * (A41 * k1[i] + A42 * k2[i] + A43 * k3[i]);
204
- f(t + C4 * h, yTemp, k4);
205
-
206
- // Stage 5: k5 = f(t + C5*h, y + h*(A51*k1 + A52*k2 + A53*k3 + A54*k4))
207
- for (let i = 0; i < dim; ++i)
208
- yTemp[i] = y[i] + h * (A51 * k1[i] + A52 * k2[i] + A53 * k3[i] + A54 * k4[i]);
209
- f(t + C5 * h, yTemp, k5);
210
-
211
- // Stage 6: k6 = f(t + h, y + h*(A61*k1 + A62*k2 + A63*k3 + A64*k4 + A65*k5))
212
- for (let i = 0; i < dim; ++i)
213
- yTemp[i] = y[i] + h * (A61 * k1[i] + A62 * k2[i] + A63 * k3[i] + A64 * k4[i] + A65 * k5[i]);
214
- f(t + h, yTemp, k6);
215
-
216
- // 5th-order solution
217
- for (let i = 0; i < dim; ++i)
218
- yTemp[i] = y[i] + h * (B1 * k1[i] + B3 * k3[i] + B4 * k4[i] + B5 * k5[i] + B6 * k6[i]);
219
-
220
- // Stage 7: k7 = f(t + h, yTemp) — needed for error estimate
221
- f(t + h, yTemp, k7);
222
-
223
- // Error estimate: difference between 5th and 4th order solutions
224
- for (let i = 0; i < dim; ++i)
225
- yErr[i] = h * (E1 * k1[i] + E3 * k3[i] + E4 * k4[i] + E5 * k5[i] + E6 * k6[i] + E7 * k7[i]);
226
-
227
- // estimating error
228
- errmax = 0;
229
- for (let i = 0; i < dim; ++i)
230
- errmax = max(errmax, abs(yErr[i] / yScale[i]));
231
- errmax /= tolerance;
232
-
233
- // processing the error obtained
234
- if (errmax > 1) {
235
- hTemp = SAFETY * h * errmax**PSHRNK;
236
- h = max(hTemp, REDUCE_COEF * h);
237
- tNew = t + h;
238
- if (tNew == t)
239
- throw new Error(ERROR_MSG.RKDP_FAILS);
240
- } else {
241
- if (errmax > ERR_CONTR)
242
- hNext = SAFETY * h * errmax**PSGROW;
243
- else
244
- hNext = GROW_COEF * h;
245
-
246
- if (hNext > hMax)
247
- hNext = hMax;
248
-
249
- t = t + h;
250
-
251
- for (let i = 0; i < dim; ++i)
252
- y[i] = yTemp[i];
253
-
254
- break;
255
- }
256
- } // while (true)
257
-
258
- // compute linearly interpolated results and store them in dataframe
259
- while (timeDataframe < t) {
260
- const cLeft = (t - timeDataframe) / (t - tPrev);
261
- const cRight = 1.0 - cLeft;
262
-
263
- tArr[index] = timeDataframe;
264
-
265
- for (let j = 0; j < dim; ++j)
266
- yArrs[j][index] = cRight * y[j] + cLeft * yPrev[j];
267
-
268
- timeDataframe += hDataframe;
269
- ++index;
270
- }
271
-
272
- h = hNext;
273
- tPrev = t;
274
-
275
- for (let i = 0; i < dim; ++i)
276
- yPrev[i] = y[i];
277
- } // while (flag)
278
-
279
- // perform final callback actions
280
- if (callback)
281
- callback.onComputationsCompleted();
282
-
283
- // 3. solution at the point t1
284
- tArr[rowCount - 1] = t1;
285
-
286
- for (let i = 0; i < dim; ++i)
287
- yArrs[i][rowCount - 1] = y[i];
288
-
289
- // 4. prepare output
290
- const solution = Array<Float64Array>(dim + 1);
291
-
292
- // independent variable
293
- solution[0] = tArr;
294
-
295
- // functions
296
- for (let i = 0; i < dim; ++i)
297
- solution[i + 1] = yArrs[i];
298
-
299
- return solution;
300
- } // rkdp
@@ -1 +0,0 @@
1
- {"version":3,"file":"ros34prw-method.js","sourceRoot":"","sources":["ros34prw-method.ts"],"names":[],"mappings":"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"}
@@ -1,373 +0,0 @@
1
- /* The ROS34PRw method implementation
2
-
3
- References:
4
- [1] https://doi.org/10.1016/j.cam.2015.03.010 */
5
-
6
- import {ODEs, max, abs, SAFETY, PSHRNK, PSGROW, REDUCE_COEF, GROW_COEF,
7
- ERR_CONTR, TINY, EPS, tDerivative, jacobian, ERROR_MSG} from './solver-defs';
8
- import {Callback} from './callbacks/callback-base';
9
- import {luDecomp, luSolve, solve1d2d} from './lin-alg-tools';
10
-
11
- // The method specific constants (see Table 3 [1]):
12
- const GAMMA = 0.435866521508459;
13
-
14
- const GAMMA_21 = -1.3075995645253771;
15
- const GAMMA_21_SCALED = GAMMA_21 / GAMMA;
16
- const GAMMA_2 = GAMMA_21 + GAMMA;
17
-
18
- const GAMMA_31 = -0.7098857586097217;
19
- const GAMMA_31_SCALED = GAMMA_31 / GAMMA;
20
- const GAMMA_32 = -0.55996735960277766;
21
- const GAMMA_32_SCALED = GAMMA_32 / GAMMA;
22
- const GAMMA_3 = GAMMA_31 + GAMMA_32 + GAMMA;
23
-
24
- const GAMMA_41 = -0.15550856807552085;
25
- const GAMMA_41_SCALED = GAMMA_41 / GAMMA;
26
- const GAMMA_42 = -0.95388516575112225;
27
- const GAMMA_42_SCALED = GAMMA_42 / GAMMA;
28
- const GAMMA_43 = 0.67352721231818413;
29
- const GAMMA_43_SCALED = GAMMA_43 / GAMMA;
30
- const GAMMA_4 = GAMMA_41 + GAMMA_42 + GAMMA_43 + GAMMA;
31
-
32
- const ALPHA_21 = 1.3075995645253771;
33
- const ALPHA_2 = ALPHA_21;
34
-
35
- const B_1 = 0.34449143192447917;
36
- const B_2 = -0.45388516575112231;
37
- const B_3 = 0.67352721231818413;
38
- const B_4 = 0.435866521508459;
39
-
40
- const B_HAT_1 = 0.5;
41
- const B_HAT_2 = -0.25738812086522078;
42
- const B_HAT_3 = 0.43542008724775044;
43
- const B_HAT_4 = 0.32196803361747034;
44
-
45
- const R_1 = B_1 - B_HAT_1;
46
- const R_2 = B_2 - B_HAT_2;
47
- const R_3 = B_3 - B_HAT_3;
48
- const R_4 = B_4 - B_HAT_4;
49
-
50
-
51
- /** Solve initial value problem using the ROS34PRw method
52
- * @param odes initial value problem for ordinary differential equations
53
- * @param callback computations control callback
54
- * @returns solution of the problem
55
- * @example
56
- * // Example. Solve the following initial value problem using the ROS34PRw method:
57
- * // dx/dt = x + y - t
58
- * // dy/dt = x * y + t
59
- * // x(0) = 1
60
- * // y(0) = -1
61
- * // on [0, 2] with the step 0.01.
62
- * import { ODEs, ros34prw } from 'diff-grok';
63
- *
64
- * const task: ODEs = {
65
- * name: 'Example', // name of your model
66
- * arg: {
67
- * name: 't', // name of the argument
68
- * start: 0, // initial value of the argument
69
- * finish: 2, // final value of the argument
70
- * step: 0.01, // solution grid step
71
- * },
72
- * initial: [1, -1], // initial values
73
- * func: (t: number, y: Float64Array, output: Float64Array) => { // right-hand side of the system
74
- * output[0] = y[0] + y[1] - t; // 1-st equation
75
- * output[1] = y[0] * y[1] + t; // 2-nd equation
76
- * },
77
- * tolerance: 1e-7, // tolerance
78
- * solutionColNames: ['x', 'y'], // names of solution functions
79
- * };
80
- *
81
- * try {
82
- * // Solve the problem using the ROS34PRw method
83
- * const solution = ros34prw(task);
84
- *
85
- * // Print a table with the results
86
- * console.log(task.arg.name, task.solutionColNames[0], task.solutionColNames[1]);
87
- * const length = solution[0].length;
88
- * for (let i = 0; i < length; ++i)
89
- * console.log(solution[0][i], solution[1][i], solution[2][i]);
90
- * } catch (err) {
91
- * console.log('Solver failed: ', err instanceof Error ? err.message : 'Unknown problem!');
92
- * }
93
- */
94
- export function ros34prw(odes: ODEs, callback?: Callback): Float64Array[] {
95
- /** right-hand side of the IVP solved */
96
- const f = odes.func;
97
-
98
- // operating variables
99
- const t0 = odes.arg.start;
100
- const t1 = odes.arg.finish;
101
- let h = odes.arg.step;
102
- const hDataframe = h;
103
- const tolerance = odes.tolerance;
104
-
105
- /** number of solution dataframe rows */
106
- const rowCount = Math.trunc((t1 - t0) / h) + 1;
107
-
108
- /** dimension of the problem */
109
- const dim = odes.initial.length;
110
- const dimSquared = dim * dim;
111
-
112
- /** independent variable values */
113
- const tArr = new Float64Array(rowCount);
114
-
115
- /** arrays of solution values */
116
- const yArrs = Array<Float64Array>(dim);
117
-
118
- for (let i = 0; i < dim; ++i)
119
- yArrs[i] = new Float64Array(rowCount);
120
-
121
- // method routine
122
- let timeDataframe = t0 + hDataframe;
123
- let t = t0;
124
- let tPrev = t0;
125
- let flag = true;
126
- let index = 1;
127
- let errmax = 0;
128
- let hTemp = 0;
129
- let tNew = 0;
130
- let hNext = 0.0;
131
-
132
- // 0 BUFFERS & TEMP STRUCTURES
133
-
134
- /** identity matrix */
135
- const I = new Float64Array(dim * dim);
136
-
137
- // compute identity matrix
138
- for (let i = 0; i < dim; ++i) {
139
- for (let j = 0; j < dim; ++j)
140
- I[j + i * dim] = (i === j) ? 1 : 0;
141
- }
142
-
143
- const y = new Float64Array(odes.initial);
144
- const yPrev = new Float64Array(odes.initial);
145
- const dydt = new Float64Array(dim);
146
- const yScale = new Float64Array(dim);
147
- const yTemp = new Float64Array(dim);
148
- const yErr = new Float64Array(dim);
149
-
150
- const W = new Float64Array(dimSquared);
151
-
152
- const k1 = new Float64Array(dim);
153
- const k2 = new Float64Array(dim);
154
- const k3 = new Float64Array(dim);
155
- const k4 = new Float64Array(dim);
156
- const HT = new Float64Array(dim);
157
-
158
- const f0Buf = new Float64Array(dim);
159
- const f1Buf = new Float64Array(dim);
160
-
161
- let hByGamma = 0;
162
- const fBuf = new Float64Array(dim);
163
- const kBuf = new Float64Array(dim);
164
-
165
- const L = new Float64Array(dimSquared);
166
- const U = new Float64Array(dimSquared);
167
- const luBuf = new Float64Array(dim);
168
- const bBuf = new Float64Array(dim);
169
- const toUseLU = dim > 2;
170
-
171
- // 1. SOLUTION AT THE POINT t0
172
- tArr[0] = t0;
173
- for (let i = 0; i < dim; ++i)
174
- yArrs[i][0] = y[i];
175
-
176
- // 2. COMPUTE NUMERICAL SOLUTION FOR THE POINTS FROM THE INTERVAL (t0, t1)
177
- while (flag) {
178
- // compute derivative
179
- f(t, y, dydt);
180
-
181
- // check whether to go on computations
182
- if (callback)
183
- callback.onIterationStart();
184
-
185
- // compute scale vector
186
- for (let i = 0; i < dim; ++i)
187
- yScale[i] = abs(y[i]) + h * abs(dydt[i]) + TINY;
188
-
189
- // check end point
190
- if (t + h > t1) {
191
- h = t1 - t;
192
- flag = false;
193
- }
194
-
195
- // call of adaptive step the ROS3Pw [1] method
196
- // computation of solution (y), time (t) and next step (hNext)
197
- while (true) {
198
- hByGamma = h * GAMMA;
199
-
200
- // one stage of the ROS3Pw method
201
-
202
- // 1) Jacobian & dF/dt matrices
203
- jacobian(t, y, f, EPS, f0Buf, f1Buf, W);
204
- tDerivative(t, y, f, EPS, f0Buf, f1Buf, HT);
205
-
206
- // 2) W & LU-decomposition
207
- for (let i = 0; i < dimSquared; ++i)
208
- W[i] = I[i] - hByGamma * W[i];
209
-
210
- if (toUseLU)
211
- luDecomp(W, L, U, dim);
212
-
213
- // 3) Scale dF/dt: HT = j * T
214
- for (let i = 0; i < dim; ++i)
215
- HT[i] *= h;
216
-
217
- // 4) F1 = F(t, y) <-- Fbuf
218
- f(t, y, fBuf);
219
-
220
- // 5) k1 = W_inv * (F1 + gamma * HT)
221
- for (let i = 0; i < dim; ++i)
222
- bBuf[i] = fBuf[i] + GAMMA * HT[i];
223
-
224
- if (toUseLU)
225
- luSolve(L, U, bBuf, luBuf, k1, dim);
226
- else
227
- solve1d2d(W, bBuf, k1);
228
-
229
- // 6) F2 = F(t + alpha2 * h, y + alpha21 * k1) <-- Fbuf
230
- for (let i = 0; i < dim; ++i)
231
- kBuf[i] = y[i] + ALPHA_21 * h * k1[i];
232
-
233
- f(t + ALPHA_2 * h, kBuf, fBuf);
234
-
235
- // 7) kBuf = gamma21 / gamma * k1
236
- for (let i = 0; i < dim; ++i)
237
- kBuf[i] = GAMMA_21_SCALED * k1[i];
238
-
239
- // 8) k2 = W_inv * [Fbuf + kBuf + gamma2 * HT] - kBuf
240
- for (let i = 0; i < dim; ++i)
241
- bBuf[i] = fBuf[i] + kBuf[i] + GAMMA_2 * HT[i];
242
-
243
- if (toUseLU)
244
- luSolve(L, U, bBuf, luBuf, k2, dim);
245
- else
246
- solve1d2d(W, bBuf, k2);
247
-
248
- for (let i = 0; i < dim; ++i)
249
- k2[i] -= kBuf[i];
250
-
251
- // 9) F3 = F(t + alpha3 * h, y + h * (alpha31 * k1 + alpha32 * k2)) <-- Fbuf
252
- for (let i = 0; i < dim; ++i)
253
- kBuf[i] = y[i] + h * 0.5 * (k1[i] + k2[i]);
254
-
255
- f(t + h, kBuf, fBuf);
256
-
257
- // 10) kBuf = gamma31 / gamma * k1 + gamma32 / gamma * k2
258
- for (let i = 0; i < dim; ++i)
259
- kBuf[i] = GAMMA_31_SCALED * k1[i] + GAMMA_32_SCALED * k2[i];
260
-
261
- // 11) k3 = W_inv * (F3 + kBuf + gamma3 * HT) - kBuf
262
- for (let i = 0; i < dim; ++i)
263
- bBuf[i] = fBuf[i] + kBuf[i] + GAMMA_3 * HT[i];
264
-
265
- if (toUseLU)
266
- luSolve(L, U, bBuf, luBuf, k3, dim);
267
- else
268
- solve1d2d(W, bBuf, k3);
269
-
270
- for (let i = 0; i < dim; ++i)
271
- k3[i] -= kBuf[i];
272
-
273
- // 12) F4 = F(t + alpha4 * h, y + h * (alpha41 * k1 + alpha42 * k2 + alpha43 * k3)) <-- Fbuf
274
- for (let i = 0; i < dim; ++i)
275
- kBuf[i] = y[i] + h * 0.5 * (k1[i] + k2[i]);
276
-
277
- f(t + h, kBuf, fBuf);
278
-
279
- // 13) kBuf = gamma41 / gamma * k1 + gamma42 / gamma * k2 + gamma43 / gamma * k3
280
- for (let i = 0; i < dim; ++i)
281
- kBuf[i] = GAMMA_41_SCALED * k1[i] + GAMMA_42_SCALED * k2[i] + GAMMA_43_SCALED * k3[i];
282
-
283
- // 14) k4 = W_inv * (F4 + kBuf + gamma4 * HT) - kBuf
284
- for (let i = 0; i < dim; ++i)
285
- bBuf[i] = fBuf[i] + kBuf[i] + GAMMA_4 * HT[i];
286
-
287
- if (toUseLU)
288
- luSolve(L, U, bBuf, luBuf, k4, dim);
289
- else
290
- solve1d2d(W, bBuf, k4);
291
-
292
- for (let i = 0; i < dim; ++i)
293
- k4[i] -= kBuf[i];
294
-
295
- // 15) yNext = y + h * (b1 * k1 + b2 * k2 + b3 * k3 + b4 * k4) <-- yTemp
296
- for (let i = 0; i < dim; ++i)
297
- yTemp[i] = y[i] + h * (B_1 * k1[i] + B_2 * k2[i] + B_3 * k3[i] + B_4 * k4[i]);
298
-
299
- // 16) yErr = h * (r1 * k1 + r2 * k2 + r3 * k3 + r4 * k4)
300
- for (let i = 0; i < dim; ++i)
301
- yErr[i] = h * (R_1 * k1[i] + R_2 * k2[i] + R_3 * k3[i] + R_4 * k4[i]);
302
-
303
- // estimating error
304
- errmax = 0;
305
- for (let i = 0; i < dim; ++i)
306
- errmax = max(errmax, abs(yErr[i] / yScale[i]));
307
- errmax /= tolerance;
308
-
309
- // processing the error obtained
310
- if (errmax > 1) {
311
- hTemp = SAFETY * h * errmax**PSHRNK;
312
- h = max(hTemp, REDUCE_COEF * h);
313
- tNew = t + h;
314
- if (tNew == t)
315
- throw new Error(ERROR_MSG.ROS34PRW_FAILS);
316
- } else {
317
- if (errmax > ERR_CONTR)
318
- hNext = SAFETY * h * errmax**PSGROW;
319
- else
320
- hNext = GROW_COEF * h;
321
- t = t + h;
322
-
323
- for (let i = 0; i < dim; ++i)
324
- y[i] = yTemp[i];
325
-
326
- break;
327
- }
328
- } // while (true)
329
-
330
- // compute lineraly interpolated results and store them in dataframe
331
- while (timeDataframe < t) {
332
- const cLeft = (t - timeDataframe) / (t - tPrev);
333
- const cRight = 1.0 - cLeft;
334
-
335
- tArr[index] = timeDataframe;
336
-
337
- for (let j = 0; j < dim; ++j)
338
- yArrs[j][index] = cRight * y[j] + cLeft * yPrev[j];
339
-
340
- timeDataframe += hDataframe;
341
- ++index;
342
- }
343
-
344
- h = hNext;
345
- tPrev = t;
346
-
347
- for (let i = 0; i < dim; ++i)
348
- yPrev[i] = y[i];
349
- } // while (flag)
350
-
351
- // perform final callback actions
352
- if (callback)
353
- callback.onComputationsCompleted();
354
-
355
- // 3. solution at the point t1
356
- tArr[rowCount - 1] = t1;
357
-
358
- for (let i = 0; i < dim; ++i)
359
- yArrs[i][rowCount - 1] = y[i];
360
-
361
- // 4. prepare output
362
- const solution = Array<Float64Array>(dim + 1);
363
-
364
- // independent variable
365
- solution[0] = tArr;
366
-
367
- // functions
368
- for (let i = 0; i < dim; ++i)
369
- solution[i + 1] = yArrs[i];
370
-
371
- return solution;
372
- //return [tArr].concat(yArrs);
373
- } // ros34prw