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
@@ -0,0 +1,163 @@
1
+ /**
2
+ * TypeScript port of SUNDIALS CVODE v7.5.0 (https://github.com/LLNL/sundials)
3
+ *
4
+ * Copyright (c) 2025, Lawrence Livermore National Security, University of
5
+ * Maryland Baltimore County, and the SUNDIALS contributors.
6
+ * Copyright (c) 2013-2025, Lawrence Livermore National Security and
7
+ * Southern Methodist University.
8
+ * Copyright (c) 2002-2013, Lawrence Livermore National Security.
9
+ * Copyright (c) 2026 Datagrok.
10
+ *
11
+ * Licensed under the BSD-3-Clause License. See THIRD_PARTY_LICENSES
12
+ * for the full license text and provenance chain of the original code.
13
+ */
14
+ // CVODE TypeScript port - High-level Cvode class API
15
+ // Follows the Lsoda class pattern from src/lsoda.ts
16
+ import { cvodeGetDky, CV_ADAMS, CV_BDF, CV_NORMAL, CV_ONE_STEP, CV_ROOT_RETURN, } from './common';
17
+ import { cvodeCreate, cvodeInit, cvode } from './cvode';
18
+ import { cvodeSetLinearSolver, cvodeSetJacFn } from './cvode_ls';
19
+ import { cvodeRootInit } from './cvode_root';
20
+ import { cvodeGetIntegratorStats, cvodeSStolerances, cvodeSVtolerances, cvodeSetMaxNumSteps, cvodeSetMaxOrd, cvodeSetMaxStep, cvodeSetMinStep, cvodeSetInitStep, cvodeSetStopTime, cvodeSetUserData, } from './cvode_io';
21
+ // ============================================================================
22
+ // Cvode class
23
+ // ============================================================================
24
+ /**
25
+ * High-level CVODE solver class with a 0-based public interface.
26
+ *
27
+ * Usage:
28
+ * const solver = new Cvode(f, neq, t0, y0, { lmm: 'bdf', rtol: 1e-6, atol: 1e-9 });
29
+ * const result = solver.solve(tout);
30
+ */
31
+ export class Cvode {
32
+ mem;
33
+ neq;
34
+ /** Output vector reused across calls (0-based, neq elements). */
35
+ yout;
36
+ /** Wrapped RHS stored to allow re-initialization. */
37
+ wrappedF;
38
+ constructor(f, neq, t0, y0, options) {
39
+ this.neq = neq;
40
+ this.yout = new Float64Array(neq);
41
+ const opts = options ?? {};
42
+ // --- 1. Create CvodeMem ---
43
+ const lmmValue = (opts.lmm === 'adams') ? CV_ADAMS : CV_BDF;
44
+ this.mem = cvodeCreate(lmmValue);
45
+ // --- 2. Wrap user's OdeFunction to CvodeRhsFn (void -> number) ---
46
+ this.wrappedF = (_t, _y, _ydot, _userData) => {
47
+ f(_t, _y, _ydot);
48
+ return 0;
49
+ };
50
+ // --- 3. Initialize ---
51
+ cvodeInit(this.mem, this.wrappedF, t0, y0);
52
+ // --- 4. Set tolerances ---
53
+ const rtol = opts.rtol ?? 1e-4;
54
+ const atol = opts.atol ?? 1e-6;
55
+ if (typeof atol === 'number')
56
+ cvodeSStolerances(this.mem, rtol, atol);
57
+ else
58
+ cvodeSVtolerances(this.mem, rtol, atol);
59
+ // --- 5. Set up dense linear solver (required for BDF; optional but useful for Adams) ---
60
+ cvodeSetLinearSolver(this.mem);
61
+ // --- 6. Set user-supplied Jacobian if provided ---
62
+ if (opts.jacFn) {
63
+ const userJac = opts.jacFn;
64
+ const wrappedJacFn = (t, y, fy, J, userData) => {
65
+ userJac(t, y, fy, J);
66
+ return 0;
67
+ };
68
+ cvodeSetJacFn(this.mem, wrappedJacFn);
69
+ }
70
+ // --- 7. Apply optional settings ---
71
+ if (opts.maxSteps !== undefined)
72
+ cvodeSetMaxNumSteps(this.mem, opts.maxSteps);
73
+ if (opts.maxOrder !== undefined)
74
+ cvodeSetMaxOrd(this.mem, opts.maxOrder);
75
+ if (opts.maxStep !== undefined)
76
+ cvodeSetMaxStep(this.mem, opts.maxStep);
77
+ if (opts.minStep !== undefined)
78
+ cvodeSetMinStep(this.mem, opts.minStep);
79
+ if (opts.initStep !== undefined)
80
+ cvodeSetInitStep(this.mem, opts.initStep);
81
+ if (opts.stopTime !== undefined)
82
+ cvodeSetStopTime(this.mem, opts.stopTime);
83
+ if (opts.userData !== undefined)
84
+ cvodeSetUserData(this.mem, opts.userData);
85
+ // --- 8. Set up rootfinding if requested ---
86
+ if (opts.rootFn && opts.nRootFns && opts.nRootFns > 0) {
87
+ const userRoot = opts.rootFn;
88
+ const wrappedRootFn = (t, y, gout, _userData) => {
89
+ userRoot(t, y, gout);
90
+ return 0;
91
+ };
92
+ cvodeRootInit(this.mem, opts.nRootFns, wrappedRootFn);
93
+ }
94
+ }
95
+ // ==========================================================================
96
+ // Public methods
97
+ // ==========================================================================
98
+ /**
99
+ * Integrate from the current time to tout using CV_NORMAL mode
100
+ * (integrator advances to tout and interpolates).
101
+ *
102
+ * @param tout - target output time
103
+ * @returns CvodeSolveResult with { t, y, flag, rootsFound? }
104
+ */
105
+ solve(tout) {
106
+ const { flag, t } = cvode(this.mem, tout, this.yout, CV_NORMAL);
107
+ return this._buildResult(t, flag);
108
+ }
109
+ /**
110
+ * Take a single internal step using CV_ONE_STEP mode.
111
+ * The solver advances by one internal step of whatever size it chooses.
112
+ *
113
+ * @returns CvodeSolveResult with { t, y, flag, rootsFound? }
114
+ */
115
+ step() {
116
+ const { flag, t } = cvode(this.mem, 1e30, this.yout, CV_ONE_STEP);
117
+ return this._buildResult(t, flag);
118
+ }
119
+ /**
120
+ * Dense output: compute the k-th derivative of the interpolating polynomial
121
+ * at time t using the current Nordsieck history array.
122
+ *
123
+ * @param t - interpolation time (must be within the last step interval)
124
+ * @param k - derivative order (0 = solution, 1 = first derivative, ...)
125
+ * @returns copy of the interpolated vector (length neq)
126
+ */
127
+ getDky(t, k) {
128
+ const dky = new Float64Array(this.neq);
129
+ const flag = cvodeGetDky(this.mem, t, k, dky);
130
+ if (flag !== 0)
131
+ throw new Error(`[Cvode] getDky failed: t=${t} out of range or k=${k} invalid`);
132
+ return dky;
133
+ }
134
+ /**
135
+ * Return current integrator statistics.
136
+ */
137
+ getStats() {
138
+ return cvodeGetIntegratorStats(this.mem);
139
+ }
140
+ /**
141
+ * Re-initialize the solver for a new initial-value problem with the same
142
+ * ODE function and options. Resets internal state and counters.
143
+ *
144
+ * @param t0 - new initial time
145
+ * @param y0 - new initial conditions (length neq)
146
+ */
147
+ reInit(t0, y0) {
148
+ cvodeInit(this.mem, this.wrappedF, t0, y0);
149
+ }
150
+ // ==========================================================================
151
+ // Private helpers
152
+ // ==========================================================================
153
+ _buildResult(t, flag) {
154
+ const y = new Float64Array(this.yout); // copy
155
+ const result = { t, y, flag };
156
+ if (flag === CV_ROOT_RETURN) {
157
+ // Return a copy of the root direction info array
158
+ result.rootsFound = new Int32Array(this.mem.cv_iroots);
159
+ }
160
+ return result;
161
+ }
162
+ }
163
+ //# sourceMappingURL=cvode_class.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cvode_class.js","sourceRoot":"","sources":["../../../../src/solver-tools/cvode/cvode_class.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ /**
2
+ * TypeScript port of SUNDIALS CVODE v7.5.0 (https://github.com/LLNL/sundials)
3
+ *
4
+ * Copyright (c) 2025, Lawrence Livermore National Security, University of
5
+ * Maryland Baltimore County, and the SUNDIALS contributors.
6
+ * Copyright (c) 2013-2025, Lawrence Livermore National Security and
7
+ * Southern Methodist University.
8
+ * Copyright (c) 2002-2013, Lawrence Livermore National Security.
9
+ * Copyright (c) 2026 Datagrok.
10
+ *
11
+ * Licensed under the BSD-3-Clause License. See THIRD_PARTY_LICENSES
12
+ * for the full license text and provenance chain of the original code.
13
+ */
14
+ import { CvodeMem } from './common';
15
+ /**
16
+ * cvHin - Compute initial step size h0.
17
+ *
18
+ * The algorithm:
19
+ * 1. Compute a bound hub on |h| from ydot and tdist
20
+ * 2. Set hlb = HLB_FACTOR * tround (lower bound)
21
+ * 3. Iterate to estimate ||y''|| and compute h candidates
22
+ * 4. h0 = H_BIAS * geometric mean of hlb and hub candidates
23
+ */
24
+ export declare function cvHin(mem: CvodeMem, tout: number): number;
@@ -0,0 +1,119 @@
1
+ /**
2
+ * TypeScript port of SUNDIALS CVODE v7.5.0 (https://github.com/LLNL/sundials)
3
+ *
4
+ * Copyright (c) 2025, Lawrence Livermore National Security, University of
5
+ * Maryland Baltimore County, and the SUNDIALS contributors.
6
+ * Copyright (c) 2013-2025, Lawrence Livermore National Security and
7
+ * Southern Methodist University.
8
+ * Copyright (c) 2002-2013, Lawrence Livermore National Security.
9
+ * Copyright (c) 2026 Datagrok.
10
+ *
11
+ * Licensed under the BSD-3-Clause License. See THIRD_PARTY_LICENSES
12
+ * for the full license text and provenance chain of the original code.
13
+ */
14
+ // CVODE TypeScript port - Initial step size estimation
15
+ // Ported from SUNDIALS CVODE cvode.c (cvHin, cvUpperBoundH0, cvYddNorm)
16
+ import { wrmsNorm, vLinearSum, vScale, CV_SUCCESS, CV_RHSFUNC_FAIL, RHSFUNC_RECVR, CV_TOO_CLOSE, HLB_FACTOR, HUB_FACTOR, H_BIAS, MAX_ITERS } from './common';
17
+ /**
18
+ * cvHin - Compute initial step size h0.
19
+ *
20
+ * The algorithm:
21
+ * 1. Compute a bound hub on |h| from ydot and tdist
22
+ * 2. Set hlb = HLB_FACTOR * tround (lower bound)
23
+ * 3. Iterate to estimate ||y''|| and compute h candidates
24
+ * 4. h0 = H_BIAS * geometric mean of hlb and hub candidates
25
+ */
26
+ export function cvHin(mem, tout) {
27
+ const N = mem.cv_N;
28
+ const sign = (tout - mem.cv_tn >= 0.0) ? 1.0 : -1.0;
29
+ const tdist = Math.abs(tout - mem.cv_tn);
30
+ const tround = Math.max(Math.abs(mem.cv_tn), Math.abs(tout)) * 2.2204460492503131e-16;
31
+ if (tdist < 2.0 * tround)
32
+ return CV_TOO_CLOSE;
33
+ // Set lower and upper bounds on h0, initial guess
34
+ const hlb = HLB_FACTOR * tround;
35
+ const hub = cvUpperBoundH0(mem, tdist);
36
+ // Initial guess - geometric mean
37
+ let hg = Math.sqrt(hlb * hub);
38
+ if (hub < 100.0 * hlb)
39
+ hg = 0.5 * hub;
40
+ // Iterate to estimate ydd norm
41
+ let hnew = hg;
42
+ let retval;
43
+ for (let count = 0; count < MAX_ITERS; count++) {
44
+ hg = hnew;
45
+ // Compute y''norm via finite difference
46
+ const result = cvYddNorm(mem, hg * sign);
47
+ retval = result.retval;
48
+ if (retval !== CV_SUCCESS)
49
+ return retval;
50
+ const yddnrm = result.yddnrm;
51
+ // If yddnrm is zero, use current hg
52
+ if (yddnrm * hub * hub > 2.0)
53
+ hnew = Math.sqrt(2.0 / yddnrm);
54
+ else
55
+ hnew = Math.sqrt(hg * hub);
56
+ // Refine: make hnew be a geometric mean biased toward smaller
57
+ hnew = H_BIAS * hnew + (1.0 - H_BIAS) * hg;
58
+ // Check convergence
59
+ if (hnew / hg > 2.0 || hnew / hg < 0.5)
60
+ continue;
61
+ // If converged, break
62
+ break;
63
+ }
64
+ // Bound hnew
65
+ hnew = Math.min(hnew, hub);
66
+ hnew = Math.max(hnew, hlb);
67
+ // Apply bounds on step size
68
+ if (mem.cv_hmax_inv > 0.0)
69
+ hnew = Math.min(hnew, 1.0 / mem.cv_hmax_inv);
70
+ if (mem.cv_hmin > 0.0)
71
+ hnew = Math.max(hnew, mem.cv_hmin);
72
+ // Bound by tdist
73
+ hnew = Math.min(hnew, tdist);
74
+ mem.cv_h = sign * hnew;
75
+ mem.cv_next_h = mem.cv_h;
76
+ mem.cv_hscale = mem.cv_h;
77
+ // Scale zn[1] = h * y'(t0)
78
+ vScale(mem.cv_h, mem.cv_zn[1], mem.cv_zn[1], N);
79
+ return CV_SUCCESS;
80
+ }
81
+ /**
82
+ * cvUpperBoundH0 - Compute upper bound on initial step size
83
+ * Based on ||y'|| weighted norm
84
+ */
85
+ function cvUpperBoundH0(mem, tdist) {
86
+ const N = mem.cv_N;
87
+ // Get WRMS norm of y' (zn[1] = f(t0, y0) before scaling)
88
+ const hub_inv = wrmsNorm(N, mem.cv_zn[1], mem.cv_ewt);
89
+ // Bound based on tdist
90
+ let hub = HUB_FACTOR * tdist;
91
+ // Use smaller of two bounds
92
+ if (hub * hub_inv > 1.0)
93
+ hub = 1.0 / hub_inv;
94
+ return hub;
95
+ }
96
+ /**
97
+ * cvYddNorm - Estimate ||y''|| via finite difference
98
+ * y(t0 + hg) ~ y0 + hg*y'0
99
+ * y'(t0 + hg) = f(t0 + hg, y(t0 + hg))
100
+ * y'' ~ (y'(t0+hg) - y'(t0)) / hg
101
+ */
102
+ function cvYddNorm(mem, hg) {
103
+ const N = mem.cv_N;
104
+ // y = zn[0] + hg * zn[1] (zn[1] still holds unscaled f at this point)
105
+ vLinearSum(hg, mem.cv_zn[1], 1.0, mem.cv_zn[0], mem.cv_y, N);
106
+ // Evaluate f(t0 + hg, y)
107
+ const retval = mem.cv_f(mem.cv_tn + hg, mem.cv_y, mem.cv_tempv, mem.cv_user_data);
108
+ mem.cv_nfe++;
109
+ if (retval < 0)
110
+ return { retval: CV_RHSFUNC_FAIL, yddnrm: 0 };
111
+ if (retval > 0)
112
+ return { retval: RHSFUNC_RECVR, yddnrm: 0 };
113
+ // tempv = (f(t0+hg, y) - zn[1]) / hg (estimate of y'')
114
+ const hg_inv = 1.0 / hg;
115
+ vLinearSum(hg_inv, mem.cv_tempv, -hg_inv, mem.cv_zn[1], mem.cv_tempv, N);
116
+ const yddnrm = wrmsNorm(N, mem.cv_tempv, mem.cv_ewt);
117
+ return { retval: CV_SUCCESS, yddnrm };
118
+ }
119
+ //# sourceMappingURL=cvode_hin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cvode_hin.js","sourceRoot":"","sources":["../../../../src/solver-tools/cvode/cvode_hin.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,98 @@
1
+ /**
2
+ * TypeScript port of SUNDIALS CVODE v7.5.0 (https://github.com/LLNL/sundials)
3
+ *
4
+ * Copyright (c) 2025, Lawrence Livermore National Security, University of
5
+ * Maryland Baltimore County, and the SUNDIALS contributors.
6
+ * Copyright (c) 2013-2025, Lawrence Livermore National Security and
7
+ * Southern Methodist University.
8
+ * Copyright (c) 2002-2013, Lawrence Livermore National Security.
9
+ * Copyright (c) 2026 Datagrok.
10
+ *
11
+ * Licensed under the BSD-3-Clause License. See THIRD_PARTY_LICENSES
12
+ * for the full license text and provenance chain of the original code.
13
+ */
14
+ import { CvodeMem } from './common';
15
+ export interface CvodeStats {
16
+ nSteps: number;
17
+ nRhsEvals: number;
18
+ nLinSolvSetups: number;
19
+ nErrTestFails: number;
20
+ nNonlinSolvIters: number;
21
+ nNonlinSolvConvFails: number;
22
+ nJacEvals: number;
23
+ nGEvals: number;
24
+ lastOrder: number;
25
+ lastStep: number;
26
+ currentTime: number;
27
+ }
28
+ /**
29
+ * Set scalar relative and absolute tolerances.
30
+ * Requires rtol >= 0 and atol >= 0.
31
+ */
32
+ export declare function cvodeSStolerances(mem: CvodeMem, rtol: number, atol: number): number;
33
+ /**
34
+ * Set scalar relative tolerance and vector absolute tolerance.
35
+ * Requires rtol >= 0 and all atol[i] >= 0.
36
+ */
37
+ export declare function cvodeSVtolerances(mem: CvodeMem, rtol: number, atol: Float64Array): number;
38
+ /**
39
+ * Set the maximum number of internal steps per call to CVode.
40
+ */
41
+ export declare function cvodeSetMaxNumSteps(mem: CvodeMem, mxstep: number): number;
42
+ /**
43
+ * Set the maximum method order. Clamped to [1, qmax] where qmax is
44
+ * ADAMS_Q_MAX or BDF_Q_MAX depending on the linear multistep method.
45
+ */
46
+ export declare function cvodeSetMaxOrd(mem: CvodeMem, maxord: number): number;
47
+ /**
48
+ * Set the maximum step size. If hmax <= 0, no upper limit is imposed
49
+ * (cv_hmax_inv = 0). Otherwise cv_hmax_inv = 1 / hmax.
50
+ */
51
+ export declare function cvodeSetMaxStep(mem: CvodeMem, hmax: number): number;
52
+ /**
53
+ * Set the minimum step size (stored as absolute value).
54
+ */
55
+ export declare function cvodeSetMinStep(mem: CvodeMem, hmin: number): number;
56
+ /**
57
+ * Set the initial step size hint.
58
+ */
59
+ export declare function cvodeSetInitStep(mem: CvodeMem, hin: number): number;
60
+ /**
61
+ * Set a stop time. Integration will not proceed past tstop.
62
+ */
63
+ export declare function cvodeSetStopTime(mem: CvodeMem, tstop: number): number;
64
+ /**
65
+ * Attach user data that will be passed to the RHS, Jacobian, and root
66
+ * functions.
67
+ */
68
+ export declare function cvodeSetUserData(mem: CvodeMem, data: any): number;
69
+ /**
70
+ * Enable or disable BDF stability limit detection.
71
+ */
72
+ export declare function cvodeSetStabLimDet(mem: CvodeMem, on: boolean): number;
73
+ /** Return the total number of internal steps taken. */
74
+ export declare function cvodeGetNumSteps(mem: CvodeMem): number;
75
+ /** Return the total number of RHS evaluations. */
76
+ export declare function cvodeGetNumRhsEvals(mem: CvodeMem): number;
77
+ /** Return the number of linear solver setup calls. */
78
+ export declare function cvodeGetNumLinSolvSetups(mem: CvodeMem): number;
79
+ /** Return the number of error test failures. */
80
+ export declare function cvodeGetNumErrTestFails(mem: CvodeMem): number;
81
+ /** Return the number of nonlinear solver iterations. */
82
+ export declare function cvodeGetNumNonlinSolvIters(mem: CvodeMem): number;
83
+ /** Return the number of nonlinear solver convergence failures. */
84
+ export declare function cvodeGetNumNonlinSolvConvFails(mem: CvodeMem): number;
85
+ /** Return the number of Jacobian evaluations (from the linear solver). */
86
+ export declare function cvodeGetNumJacEvals(mem: CvodeMem): number;
87
+ /** Return the total number of root-function evaluations. */
88
+ export declare function cvodeGetNumGEvals(mem: CvodeMem): number;
89
+ /** Return the method order used on the last successful step. */
90
+ export declare function cvodeGetLastOrder(mem: CvodeMem): number;
91
+ /** Return the step size used on the last successful step. */
92
+ export declare function cvodeGetLastStep(mem: CvodeMem): number;
93
+ /** Return the current internal time reached by the solver. */
94
+ export declare function cvodeGetCurrentTime(mem: CvodeMem): number;
95
+ /**
96
+ * Return a snapshot of all integrator statistics as a plain object.
97
+ */
98
+ export declare function cvodeGetIntegratorStats(mem: CvodeMem): CvodeStats;
@@ -0,0 +1,202 @@
1
+ /**
2
+ * TypeScript port of SUNDIALS CVODE v7.5.0 (https://github.com/LLNL/sundials)
3
+ *
4
+ * Copyright (c) 2025, Lawrence Livermore National Security, University of
5
+ * Maryland Baltimore County, and the SUNDIALS contributors.
6
+ * Copyright (c) 2013-2025, Lawrence Livermore National Security and
7
+ * Southern Methodist University.
8
+ * Copyright (c) 2002-2013, Lawrence Livermore National Security.
9
+ * Copyright (c) 2026 Datagrok.
10
+ *
11
+ * Licensed under the BSD-3-Clause License. See THIRD_PARTY_LICENSES
12
+ * for the full license text and provenance chain of the original code.
13
+ */
14
+ // CVODE TypeScript port - Configuration and statistics I/O functions
15
+ // Ported from SUNDIALS CVODE v7.5.0 (cvode_io.c)
16
+ import { CV_SUCCESS, CV_SS, CV_SV, ADAMS_Q_MAX, BDF_Q_MAX, CV_ADAMS, } from './common';
17
+ // ============================================================================
18
+ // Tolerance functions
19
+ // ============================================================================
20
+ /**
21
+ * Set scalar relative and absolute tolerances.
22
+ * Requires rtol >= 0 and atol >= 0.
23
+ */
24
+ export function cvodeSStolerances(mem, rtol, atol) {
25
+ if (rtol < 0) {
26
+ mem.cv_error = 'cvodeSStolerances: rtol must be >= 0';
27
+ return -1;
28
+ }
29
+ if (atol < 0) {
30
+ mem.cv_error = 'cvodeSStolerances: atol must be >= 0';
31
+ return -1;
32
+ }
33
+ mem.cv_reltol = rtol;
34
+ mem.cv_Sabstol = atol;
35
+ mem.cv_itol = CV_SS;
36
+ mem.cv_atolmin0 = (atol === 0);
37
+ return CV_SUCCESS;
38
+ }
39
+ /**
40
+ * Set scalar relative tolerance and vector absolute tolerance.
41
+ * Requires rtol >= 0 and all atol[i] >= 0.
42
+ */
43
+ export function cvodeSVtolerances(mem, rtol, atol) {
44
+ if (rtol < 0) {
45
+ mem.cv_error = 'cvodeSVtolerances: rtol must be >= 0';
46
+ return -1;
47
+ }
48
+ for (let i = 0; i < atol.length; i++) {
49
+ if (atol[i] < 0) {
50
+ mem.cv_error = `cvodeSVtolerances: atol[${i}] must be >= 0`;
51
+ return -1;
52
+ }
53
+ }
54
+ mem.cv_reltol = rtol;
55
+ mem.cv_Vabstol = new Float64Array(atol);
56
+ mem.cv_itol = CV_SV;
57
+ let minAtol = Infinity;
58
+ for (let i = 0; i < atol.length; i++)
59
+ if (atol[i] < minAtol)
60
+ minAtol = atol[i];
61
+ mem.cv_atolmin0 = (minAtol === 0);
62
+ mem.cv_VabstolMallocDone = true;
63
+ return CV_SUCCESS;
64
+ }
65
+ // ============================================================================
66
+ // Optional input functions
67
+ // ============================================================================
68
+ /**
69
+ * Set the maximum number of internal steps per call to CVode.
70
+ */
71
+ export function cvodeSetMaxNumSteps(mem, mxstep) {
72
+ mem.cv_mxstep = mxstep;
73
+ return CV_SUCCESS;
74
+ }
75
+ /**
76
+ * Set the maximum method order. Clamped to [1, qmax] where qmax is
77
+ * ADAMS_Q_MAX or BDF_Q_MAX depending on the linear multistep method.
78
+ */
79
+ export function cvodeSetMaxOrd(mem, maxord) {
80
+ const qmax = (mem.cv_lmm === CV_ADAMS) ? ADAMS_Q_MAX : BDF_Q_MAX;
81
+ if (maxord < 1)
82
+ maxord = 1;
83
+ if (maxord > qmax)
84
+ maxord = qmax;
85
+ mem.cv_qmax = maxord;
86
+ return CV_SUCCESS;
87
+ }
88
+ /**
89
+ * Set the maximum step size. If hmax <= 0, no upper limit is imposed
90
+ * (cv_hmax_inv = 0). Otherwise cv_hmax_inv = 1 / hmax.
91
+ */
92
+ export function cvodeSetMaxStep(mem, hmax) {
93
+ if (hmax <= 0)
94
+ mem.cv_hmax_inv = 0;
95
+ else
96
+ mem.cv_hmax_inv = 1.0 / hmax;
97
+ return CV_SUCCESS;
98
+ }
99
+ /**
100
+ * Set the minimum step size (stored as absolute value).
101
+ */
102
+ export function cvodeSetMinStep(mem, hmin) {
103
+ mem.cv_hmin = Math.abs(hmin);
104
+ return CV_SUCCESS;
105
+ }
106
+ /**
107
+ * Set the initial step size hint.
108
+ */
109
+ export function cvodeSetInitStep(mem, hin) {
110
+ mem.cv_hin = hin;
111
+ return CV_SUCCESS;
112
+ }
113
+ /**
114
+ * Set a stop time. Integration will not proceed past tstop.
115
+ */
116
+ export function cvodeSetStopTime(mem, tstop) {
117
+ mem.cv_tstop = tstop;
118
+ mem.cv_tstopset = true;
119
+ mem.cv_tstopinterp = true;
120
+ return CV_SUCCESS;
121
+ }
122
+ /**
123
+ * Attach user data that will be passed to the RHS, Jacobian, and root
124
+ * functions.
125
+ */
126
+ export function cvodeSetUserData(mem, data) {
127
+ mem.cv_user_data = data;
128
+ return CV_SUCCESS;
129
+ }
130
+ /**
131
+ * Enable or disable BDF stability limit detection.
132
+ */
133
+ export function cvodeSetStabLimDet(mem, on) {
134
+ mem.cv_sldeton = on;
135
+ return CV_SUCCESS;
136
+ }
137
+ // ============================================================================
138
+ // Statistics getters
139
+ // ============================================================================
140
+ /** Return the total number of internal steps taken. */
141
+ export function cvodeGetNumSteps(mem) {
142
+ return mem.cv_nst;
143
+ }
144
+ /** Return the total number of RHS evaluations. */
145
+ export function cvodeGetNumRhsEvals(mem) {
146
+ return mem.cv_nfe;
147
+ }
148
+ /** Return the number of linear solver setup calls. */
149
+ export function cvodeGetNumLinSolvSetups(mem) {
150
+ return mem.cv_nsetups;
151
+ }
152
+ /** Return the number of error test failures. */
153
+ export function cvodeGetNumErrTestFails(mem) {
154
+ return mem.cv_netf;
155
+ }
156
+ /** Return the number of nonlinear solver iterations. */
157
+ export function cvodeGetNumNonlinSolvIters(mem) {
158
+ return mem.cv_nni;
159
+ }
160
+ /** Return the number of nonlinear solver convergence failures. */
161
+ export function cvodeGetNumNonlinSolvConvFails(mem) {
162
+ return mem.cv_ncfn;
163
+ }
164
+ /** Return the number of Jacobian evaluations (from the linear solver). */
165
+ export function cvodeGetNumJacEvals(mem) {
166
+ return mem.cv_lmem?.nje ?? 0;
167
+ }
168
+ /** Return the total number of root-function evaluations. */
169
+ export function cvodeGetNumGEvals(mem) {
170
+ return mem.cv_nge;
171
+ }
172
+ /** Return the method order used on the last successful step. */
173
+ export function cvodeGetLastOrder(mem) {
174
+ return mem.cv_qu;
175
+ }
176
+ /** Return the step size used on the last successful step. */
177
+ export function cvodeGetLastStep(mem) {
178
+ return mem.cv_hu;
179
+ }
180
+ /** Return the current internal time reached by the solver. */
181
+ export function cvodeGetCurrentTime(mem) {
182
+ return mem.cv_tn;
183
+ }
184
+ /**
185
+ * Return a snapshot of all integrator statistics as a plain object.
186
+ */
187
+ export function cvodeGetIntegratorStats(mem) {
188
+ return {
189
+ nSteps: cvodeGetNumSteps(mem),
190
+ nRhsEvals: cvodeGetNumRhsEvals(mem),
191
+ nLinSolvSetups: cvodeGetNumLinSolvSetups(mem),
192
+ nErrTestFails: cvodeGetNumErrTestFails(mem),
193
+ nNonlinSolvIters: cvodeGetNumNonlinSolvIters(mem),
194
+ nNonlinSolvConvFails: cvodeGetNumNonlinSolvConvFails(mem),
195
+ nJacEvals: cvodeGetNumJacEvals(mem),
196
+ nGEvals: cvodeGetNumGEvals(mem),
197
+ lastOrder: cvodeGetLastOrder(mem),
198
+ lastStep: cvodeGetLastStep(mem),
199
+ currentTime: cvodeGetCurrentTime(mem),
200
+ };
201
+ }
202
+ //# sourceMappingURL=cvode_io.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cvode_io.js","sourceRoot":"","sources":["../../../../src/solver-tools/cvode/cvode_io.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * TypeScript port of SUNDIALS CVODE v7.5.0 (https://github.com/LLNL/sundials)
3
+ *
4
+ * Copyright (c) 2025, Lawrence Livermore National Security, University of
5
+ * Maryland Baltimore County, and the SUNDIALS contributors.
6
+ * Copyright (c) 2013-2025, Lawrence Livermore National Security and
7
+ * Southern Methodist University.
8
+ * Copyright (c) 2002-2013, Lawrence Livermore National Security.
9
+ * Copyright (c) 2026 Datagrok.
10
+ *
11
+ * Licensed under the BSD-3-Clause License. See THIRD_PARTY_LICENSES
12
+ * for the full license text and provenance chain of the original code.
13
+ */
14
+ import { CvodeMem, CvodeJacFn } from './common';
15
+ /**
16
+ * cvodeSetLinearSolver - Initialize the dense linear solver.
17
+ * Sets up CvLsMem, allocates matrix, sets function pointers on CvodeMem.
18
+ */
19
+ export declare function cvodeSetLinearSolver(mem: CvodeMem): number;
20
+ /**
21
+ * cvodeSetJacFn - Set a user-supplied Jacobian function.
22
+ */
23
+ export declare function cvodeSetJacFn(mem: CvodeMem, jac: CvodeJacFn | null): number;