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,210 @@
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 - Dense linear solver interface
15
+ // Translated from SUNDIALS cvode_ls.c
16
+ //
17
+ // Instead of SUNDIALS' SUNLinearSolver / SUNMatrix abstraction, we use
18
+ // direct Float64Array[] matrices and dgefa / dgesl from dense_linalg.ts.
19
+ import { CvLsMem, wrmsNorm, CV_SUCCESS, CV_FAIL_BAD_J, CVLS_MSBJ, CVLS_DGMAX } from './common';
20
+ import { dgefa, dgesl } from './dense_linalg';
21
+ /**
22
+ * cvodeSetLinearSolver - Initialize the dense linear solver.
23
+ * Sets up CvLsMem, allocates matrix, sets function pointers on CvodeMem.
24
+ */
25
+ export function cvodeSetLinearSolver(mem) {
26
+ const N = mem.cv_N;
27
+ const lmem = new CvLsMem();
28
+ // Allocate dense matrix A (N x N, row-major)
29
+ lmem.A = new Array(N);
30
+ lmem.savedJ = new Array(N);
31
+ for (let i = 0; i < N; i++) {
32
+ lmem.A[i] = new Float64Array(N);
33
+ lmem.savedJ[i] = new Float64Array(N);
34
+ }
35
+ lmem.pivots = new Int32Array(N);
36
+ // Set defaults
37
+ lmem.jacDQ = true;
38
+ lmem.jacFn = null;
39
+ lmem.jbad = true;
40
+ lmem.nje = 0;
41
+ lmem.nfeDQ = 0;
42
+ lmem.nstlj = 0;
43
+ lmem.tnlj = 0;
44
+ lmem.msbj = CVLS_MSBJ;
45
+ lmem.dgmax_jbad = CVLS_DGMAX;
46
+ // Attach to CvodeMem
47
+ mem.cv_lmem = lmem;
48
+ mem.cv_linit = cvLsInitialize;
49
+ mem.cv_lsetup = cvLsSetup;
50
+ mem.cv_lsolve = cvLsSolve;
51
+ mem.cv_lfree = cvLsFree;
52
+ return CV_SUCCESS;
53
+ }
54
+ /**
55
+ * cvodeSetJacFn - Set a user-supplied Jacobian function.
56
+ */
57
+ export function cvodeSetJacFn(mem, jac) {
58
+ const lmem = mem.cv_lmem;
59
+ if (!lmem)
60
+ return -1;
61
+ if (jac) {
62
+ lmem.jacDQ = false;
63
+ lmem.jacFn = jac;
64
+ }
65
+ else {
66
+ lmem.jacDQ = true;
67
+ lmem.jacFn = null;
68
+ }
69
+ return CV_SUCCESS;
70
+ }
71
+ /**
72
+ * cvLsInitialize - Initialize linear solver counters.
73
+ */
74
+ function cvLsInitialize(mem) {
75
+ const lmem = mem.cv_lmem;
76
+ lmem.nje = 0;
77
+ lmem.nfeDQ = 0;
78
+ lmem.nstlj = 0;
79
+ lmem.jbad = true;
80
+ return CV_SUCCESS;
81
+ }
82
+ /**
83
+ * cvLsSetup - Compute Jacobian and form/factor the linear system matrix A = I - gamma*J.
84
+ *
85
+ * Heuristic for when to recompute Jacobian:
86
+ * - On first call (nstlj == 0)
87
+ * - If convfail is CV_FAIL_BAD_J (NLS flagged Jacobian as bad)
88
+ * - If enough steps since last eval (nst >= nstlj + msbj)
89
+ * - If gamma changed significantly (|gamrat - 1| > dgmax_jbad)
90
+ */
91
+ function cvLsSetup(mem, convfail, ypred, fpred, jcurPtr, tmp1, tmp2, tmp3) {
92
+ const lmem = mem.cv_lmem;
93
+ const N = mem.cv_N;
94
+ let retval;
95
+ // Determine if Jacobian needs updating
96
+ const jbad = lmem.jbad;
97
+ let jok = !jbad;
98
+ if (!jbad) {
99
+ // Check gamma ratio
100
+ if (Math.abs(mem.cv_gamrat - 1.0) > lmem.dgmax_jbad)
101
+ jok = false;
102
+ // Check steps since last Jacobian
103
+ if (mem.cv_nst >= lmem.nstlj + lmem.msbj)
104
+ jok = false;
105
+ // Check convfail
106
+ if (convfail === CV_FAIL_BAD_J)
107
+ jok = false;
108
+ }
109
+ if (jok) {
110
+ // Reuse saved Jacobian, just form A = I - gamma*J
111
+ jcurPtr.value = false;
112
+ // Copy savedJ to A and form I - gamma*J
113
+ for (let i = 0; i < N; i++) {
114
+ for (let j = 0; j < N; j++)
115
+ lmem.A[i][j] = -mem.cv_gamma * lmem.savedJ[i][j];
116
+ lmem.A[i][i] += 1.0;
117
+ }
118
+ }
119
+ else {
120
+ // Recompute Jacobian
121
+ lmem.nje++;
122
+ lmem.nstlj = mem.cv_nst;
123
+ lmem.jbad = false;
124
+ jcurPtr.value = true;
125
+ // Evaluate Jacobian
126
+ if (lmem.jacDQ)
127
+ retval = cvLsDQJac(mem, mem.cv_tn, ypred, fpred, lmem.savedJ, tmp1, tmp2);
128
+ else
129
+ retval = lmem.jacFn(mem.cv_tn, ypred, fpred, lmem.savedJ, mem.cv_user_data);
130
+ if (retval < 0) {
131
+ lmem.jbad = true;
132
+ return -1;
133
+ }
134
+ if (retval > 0) {
135
+ lmem.jbad = true;
136
+ return 1;
137
+ }
138
+ // Form A = I - gamma*J
139
+ for (let i = 0; i < N; i++) {
140
+ for (let j = 0; j < N; j++)
141
+ lmem.A[i][j] = -mem.cv_gamma * lmem.savedJ[i][j];
142
+ lmem.A[i][i] += 1.0;
143
+ }
144
+ }
145
+ // Factor A using LU decomposition
146
+ const info = dgefa(lmem.A, N, lmem.pivots);
147
+ if (info !== 0) {
148
+ lmem.jbad = true;
149
+ return 1; // recoverable
150
+ }
151
+ return CV_SUCCESS;
152
+ }
153
+ /**
154
+ * cvLsSolve - Solve the linear system A*x = b using LU factors.
155
+ */
156
+ function cvLsSolve(mem, b, weight, ycur, fcur) {
157
+ const lmem = mem.cv_lmem;
158
+ const N = mem.cv_N;
159
+ dgesl(lmem.A, N, lmem.pivots, b);
160
+ // Apply gamma/gammap correction if gamma has changed since last setup
161
+ if (mem.cv_gamrat !== 1.0) {
162
+ const factor = 2.0 / (1.0 + mem.cv_gamrat);
163
+ for (let i = 0; i < N; i++)
164
+ b[i] *= factor;
165
+ }
166
+ return CV_SUCCESS;
167
+ }
168
+ /**
169
+ * cvLsDQJac - Compute difference-quotient Jacobian approximation.
170
+ *
171
+ * For each column j:
172
+ * sigma_j = max(|y_j|, 1/ewt_j) * sqrt(uround)
173
+ * J[:,j] = (f(t, y + sigma_j*e_j) - f(t, y)) / sigma_j
174
+ */
175
+ function cvLsDQJac(mem, t, y, fy, J, tmp1, tmp2) {
176
+ const N = mem.cv_N;
177
+ const lmem = mem.cv_lmem;
178
+ const uround = 2.2204460492503131e-16;
179
+ const srur = Math.sqrt(uround);
180
+ const fnorm_val = wrmsNorm(N, fy, mem.cv_ewt);
181
+ const minInc = (fnorm_val !== 0.0) ? (1000.0 * Math.abs(mem.cv_h) * uround * N * fnorm_val) : 1.0;
182
+ // Use tmp1 as perturbed y, tmp2 as perturbed f
183
+ for (let j = 0; j < N; j++) {
184
+ const yjsaved = y[j];
185
+ let inc = Math.max(srur * Math.abs(yjsaved), minInc / mem.cv_ewt[j]);
186
+ // Ensure inc has same sign (positive since we want to increase)
187
+ // Perturb y[j]
188
+ tmp1.set(y);
189
+ tmp1[j] = yjsaved + inc;
190
+ inc = tmp1[j] - yjsaved; // exact increment after rounding
191
+ // Evaluate f(t, y + inc*e_j)
192
+ const retval = mem.cv_f(t, tmp1, tmp2, mem.cv_user_data);
193
+ lmem.nfeDQ++;
194
+ mem.cv_nfe++;
195
+ if (retval !== 0)
196
+ return retval;
197
+ // Compute column j of Jacobian: (f_perturbed - f) / inc
198
+ const inc_inv = 1.0 / inc;
199
+ for (let i = 0; i < N; i++)
200
+ J[i][j] = (tmp2[i] - fy[i]) * inc_inv;
201
+ }
202
+ return CV_SUCCESS;
203
+ }
204
+ /**
205
+ * cvLsFree - Free linear solver memory (no-op in TS, GC handles it).
206
+ */
207
+ function cvLsFree(mem) {
208
+ mem.cv_lmem = null;
209
+ }
210
+ //# sourceMappingURL=cvode_ls.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cvode_ls.js","sourceRoot":"","sources":["../../../../src/solver-tools/cvode/cvode_ls.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
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
+ * cvNls - Solve the nonlinear system for one step.
17
+ *
18
+ * For BDF: Newton iteration solving G(ycor) = 0 where
19
+ * G(ycor) = rl1*zn[1] + ycor - gamma*f(tn, zn[0]+ycor)
20
+ * The Newton update is: (I - gamma*J) * delta = -G(ycor)
21
+ *
22
+ * For Adams: Fixed-point iteration
23
+ * ycor_new = h * rl1 * f(tn, zn[0]+ycor) - rl1*zn[1]
24
+ */
25
+ export declare function cvNls(mem: CvodeMem, nflag: number): number;
@@ -0,0 +1,220 @@
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 { wrmsNorm, vLinearSum, vScale, vConst, CV_SUCCESS, CV_BDF, CV_RHSFUNC_FAIL, CV_LSETUP_FAIL, CV_LSOLVE_FAIL, RHSFUNC_RECVR, SUN_NLS_CONV_RECVR, SUN_NLS_CONTINUE, CV_NO_FAILURES, CV_FAIL_OTHER, FIRST_CALL, PREV_CONV_FAIL, PREV_ERR_FAIL, NLS_MAXCOR, CRDOWN, RDIV } from './common';
15
+ /**
16
+ * cvNls - Solve the nonlinear system for one step.
17
+ *
18
+ * For BDF: Newton iteration solving G(ycor) = 0 where
19
+ * G(ycor) = rl1*zn[1] + ycor - gamma*f(tn, zn[0]+ycor)
20
+ * The Newton update is: (I - gamma*J) * delta = -G(ycor)
21
+ *
22
+ * For Adams: Fixed-point iteration
23
+ * ycor_new = h * rl1 * f(tn, zn[0]+ycor) - rl1*zn[1]
24
+ */
25
+ export function cvNls(mem, nflag) {
26
+ const N = mem.cv_N;
27
+ let callSetup;
28
+ // Decide whether to call linear solver setup
29
+ if (mem.cv_lsetup) {
30
+ mem.convfail = (nflag === FIRST_CALL || nflag === PREV_ERR_FAIL) ?
31
+ CV_NO_FAILURES :
32
+ CV_FAIL_OTHER;
33
+ callSetup = (nflag === PREV_CONV_FAIL) || (nflag === PREV_ERR_FAIL) ||
34
+ (mem.cv_nst === 0) || (mem.first_step_after_resize) ||
35
+ (mem.cv_nst >= mem.cv_nstlp + mem.cv_msbp) ||
36
+ (Math.abs(mem.cv_gamrat - 1.0) > mem.cv_dgmax_lsetup);
37
+ }
38
+ else {
39
+ mem.cv_crate = 1.0;
40
+ callSetup = false;
41
+ }
42
+ // Initial guess for correction: acor = 0
43
+ vConst(0.0, mem.cv_acor, N);
44
+ // Set acnrmcur to false
45
+ mem.cv_acnrmcur = false;
46
+ // Dispatch to Newton or fixed-point
47
+ let flag;
48
+ if (mem.cv_lmm === CV_BDF)
49
+ flag = cvNewtonIteration(mem, callSetup);
50
+ else
51
+ flag = cvFixedPointIteration(mem);
52
+ if (flag !== CV_SUCCESS)
53
+ return flag;
54
+ // Solve successful - update y = zn[0] + acor
55
+ vLinearSum(1.0, mem.cv_zn[0], 1.0, mem.cv_acor, mem.cv_y, N);
56
+ // Compute acnrm if not already done
57
+ if (!mem.cv_acnrmcur)
58
+ mem.cv_acnrm = wrmsNorm(N, mem.cv_acor, mem.cv_ewt);
59
+ // Update Jacobian status
60
+ mem.cv_jcur = false;
61
+ return CV_SUCCESS;
62
+ }
63
+ /**
64
+ * Newton iteration for BDF method.
65
+ * Solves: (I - gamma*J) * delta = -G(ycor)
66
+ * where G(ycor) = rl1*zn[1] + ycor - gamma*f(tn, zn[0]+ycor)
67
+ */
68
+ function cvNewtonIteration(mem, callSetup) {
69
+ const N = mem.cv_N;
70
+ let retval;
71
+ // Call linear solver setup if needed
72
+ if (callSetup && mem.cv_lsetup) {
73
+ // y = zn[0] + acor (current approximation)
74
+ vLinearSum(1.0, mem.cv_zn[0], 1.0, mem.cv_acor, mem.cv_y, N);
75
+ // Evaluate f at current approximation
76
+ retval = mem.cv_f(mem.cv_tn, mem.cv_y, mem.cv_ftemp, mem.cv_user_data);
77
+ mem.cv_nfe++;
78
+ if (retval < 0)
79
+ return CV_RHSFUNC_FAIL;
80
+ if (retval > 0)
81
+ return RHSFUNC_RECVR;
82
+ // Call lsetup
83
+ const jcurPtr = { value: false };
84
+ retval = mem.cv_lsetup(mem, mem.convfail, mem.cv_y, mem.cv_ftemp, jcurPtr, mem.cv_vtemp1, mem.cv_vtemp2, mem.cv_vtemp3);
85
+ mem.cv_nsetups++;
86
+ mem.cv_jcur = jcurPtr.value;
87
+ mem.cv_gamrat = 1.0;
88
+ mem.cv_gammap = mem.cv_gamma;
89
+ mem.cv_crate = 1.0;
90
+ mem.cv_nstlp = mem.cv_nst;
91
+ if (retval < 0)
92
+ return CV_LSETUP_FAIL;
93
+ if (retval > 0)
94
+ return SUN_NLS_CONV_RECVR;
95
+ }
96
+ // Newton iteration loop
97
+ for (let m = 0; m < NLS_MAXCOR; m++) {
98
+ mem.cv_nni++;
99
+ // y = zn[0] + acor
100
+ vLinearSum(1.0, mem.cv_zn[0], 1.0, mem.cv_acor, mem.cv_y, N);
101
+ // Evaluate f(tn, y)
102
+ retval = mem.cv_f(mem.cv_tn, mem.cv_y, mem.cv_ftemp, mem.cv_user_data);
103
+ mem.cv_nfe++;
104
+ if (retval < 0)
105
+ return CV_RHSFUNC_FAIL;
106
+ if (retval > 0)
107
+ return RHSFUNC_RECVR;
108
+ // Compute residual: b = rl1*zn[1] + acor - gamma*ftemp
109
+ // Store in tempv as the RHS for the linear solve
110
+ const b = mem.cv_tempv;
111
+ for (let i = 0; i < N; i++)
112
+ b[i] = mem.cv_rl1 * mem.cv_zn[1][i] + mem.cv_acor[i] - mem.cv_gamma * mem.cv_ftemp[i];
113
+ // Solve: (I - gamma*J) * delta = -b, so pass b (which is G, so we negate)
114
+ // Actually the convention is lsolve solves (I-gamma*J)*x = b
115
+ // and b here is -G so we negate
116
+ for (let i = 0; i < N; i++)
117
+ b[i] = -b[i];
118
+ retval = mem.cv_lsolve(mem, b, mem.cv_ewt, mem.cv_y, mem.cv_ftemp);
119
+ if (retval < 0)
120
+ return CV_LSOLVE_FAIL;
121
+ if (retval > 0)
122
+ return SUN_NLS_CONV_RECVR;
123
+ // Update acor += delta (delta is in b after solve)
124
+ for (let i = 0; i < N; i++)
125
+ mem.cv_acor[i] += b[i];
126
+ // Convergence test
127
+ const del = wrmsNorm(N, b, mem.cv_ewt);
128
+ const convTestResult = cvNlsConvTest(mem, del, m, mem.cv_tq[4]);
129
+ if (convTestResult === CV_SUCCESS)
130
+ return CV_SUCCESS;
131
+ if (convTestResult === SUN_NLS_CONV_RECVR) {
132
+ mem.cv_nnf++;
133
+ return SUN_NLS_CONV_RECVR;
134
+ }
135
+ // SUN_NLS_CONTINUE: continue iterating
136
+ }
137
+ // Max iterations reached without convergence
138
+ mem.cv_nnf++;
139
+ return SUN_NLS_CONV_RECVR;
140
+ }
141
+ /**
142
+ * Fixed-point iteration for Adams method.
143
+ * ycor = rl1 * (h * f(tn, zn[0]+ycor) - zn[1])
144
+ */
145
+ function cvFixedPointIteration(mem) {
146
+ const N = mem.cv_N;
147
+ let retval;
148
+ for (let m = 0; m < NLS_MAXCOR; m++) {
149
+ mem.cv_nni++;
150
+ // y = zn[0] + acor
151
+ vLinearSum(1.0, mem.cv_zn[0], 1.0, mem.cv_acor, mem.cv_y, N);
152
+ // Evaluate f(tn, y) -> store in tempv
153
+ retval = mem.cv_f(mem.cv_tn, mem.cv_y, mem.cv_tempv, mem.cv_user_data);
154
+ mem.cv_nfe++;
155
+ if (retval < 0)
156
+ return CV_RHSFUNC_FAIL;
157
+ if (retval > 0)
158
+ return RHSFUNC_RECVR;
159
+ // Compute new ycor: rl1 * (h * f - zn[1])
160
+ // First: tempv = h * tempv - zn[1]
161
+ for (let i = 0; i < N; i++)
162
+ mem.cv_tempv[i] = mem.cv_h * mem.cv_tempv[i] - mem.cv_zn[1][i];
163
+ // Then scale by rl1
164
+ const newAcor = mem.cv_vtemp1;
165
+ vScale(mem.cv_rl1, mem.cv_tempv, newAcor, N);
166
+ // Compute delta = newAcor - acor
167
+ const delta = mem.cv_tempv;
168
+ for (let i = 0; i < N; i++)
169
+ delta[i] = newAcor[i] - mem.cv_acor[i];
170
+ // Update acor
171
+ for (let i = 0; i < N; i++)
172
+ mem.cv_acor[i] = newAcor[i];
173
+ // Convergence test
174
+ const del = wrmsNorm(N, delta, mem.cv_ewt);
175
+ const convTestResult = cvNlsConvTest(mem, del, m, mem.cv_tq[4]);
176
+ if (convTestResult === CV_SUCCESS)
177
+ return CV_SUCCESS;
178
+ if (convTestResult === SUN_NLS_CONV_RECVR) {
179
+ mem.cv_nnf++;
180
+ return SUN_NLS_CONV_RECVR;
181
+ }
182
+ // SUN_NLS_CONTINUE: continue iterating
183
+ }
184
+ // Max iterations reached
185
+ mem.cv_nnf++;
186
+ return SUN_NLS_CONV_RECVR;
187
+ }
188
+ /**
189
+ * cvNlsConvTest - Test for convergence of the nonlinear iteration.
190
+ *
191
+ * del: WRMS norm of the current update
192
+ * m: iteration count (0-based)
193
+ * tol: tolerance (tq[4])
194
+ *
195
+ * Returns: CV_SUCCESS if converged, SUN_NLS_CONV_RECVR if diverging,
196
+ * SUN_NLS_CONTINUE if not yet converged
197
+ */
198
+ function cvNlsConvTest(mem, del, m, tol) {
199
+ // Update convergence rate estimate
200
+ if (m > 0)
201
+ mem.cv_crate = Math.max(CRDOWN * mem.cv_crate, del / mem.cv_delp);
202
+ // Test for convergence
203
+ const dcon = del * Math.min(1.0, mem.cv_crate) / tol;
204
+ if (dcon <= 1.0) {
205
+ // Converged
206
+ if (m === 0)
207
+ mem.cv_acnrm = del;
208
+ else
209
+ mem.cv_acnrm = wrmsNorm(mem.cv_N, mem.cv_acor, mem.cv_ewt);
210
+ mem.cv_acnrmcur = true;
211
+ return CV_SUCCESS;
212
+ }
213
+ // Check for divergence
214
+ if (m >= 1 && del > RDIV * mem.cv_delp)
215
+ return SUN_NLS_CONV_RECVR;
216
+ // Save del and continue
217
+ mem.cv_delp = del;
218
+ return SUN_NLS_CONTINUE;
219
+ }
220
+ //# sourceMappingURL=cvode_nls.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cvode_nls.js","sourceRoot":"","sources":["../../../../src/solver-tools/cvode/cvode_nls.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,64 @@
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, CvodeRootFn } from './common';
15
+ /**
16
+ * CVodeRootInit - Initialize rootfinding for CVODE.
17
+ *
18
+ * C reference: CVodeRootInit (cvode.c, lines ~821-1012)
19
+ *
20
+ * If nrtfn <= 0, disables rootfinding and returns CV_SUCCESS.
21
+ * Otherwise, allocates arrays for root functions and sets defaults.
22
+ *
23
+ * @param mem - CVODE memory block
24
+ * @param nrtfn - number of root functions
25
+ * @param g - root function callback
26
+ * @returns CV_SUCCESS on success
27
+ */
28
+ export declare function cvodeRootInit(mem: CvodeMem, nrtfn: number, g: CvodeRootFn): number;
29
+ /**
30
+ * cvRcheck1 - First-step root check.
31
+ *
32
+ * C reference: cvRcheck1 (cvode.c, lines ~4251-4300)
33
+ *
34
+ * Completes initialization of rootfinding memory and checks whether g
35
+ * has a zero both at and very near the initial point of the IVP.
36
+ *
37
+ * @param mem - CVODE memory block
38
+ * @returns CV_SUCCESS or CV_RTFUNC_FAIL
39
+ */
40
+ export declare function cvRcheck1(mem: CvodeMem): number;
41
+ /**
42
+ * cvRcheck2 - Subsequent-step root check for exact zeros at last root.
43
+ *
44
+ * C reference: cvRcheck2 (cvode.c, lines ~4323-4385)
45
+ *
46
+ * Checks for exact zeros of g at the last root found, for close pairs
47
+ * of zeros (error condition), and for a new root at a nearby point.
48
+ *
49
+ * @param mem - CVODE memory block
50
+ * @returns CV_SUCCESS, CLOSERT, RTFOUND, or CV_RTFUNC_FAIL
51
+ */
52
+ export declare function cvRcheck2(mem: CvodeMem): number;
53
+ /**
54
+ * cvRcheck3 - Root search between tlo and tn (or tout).
55
+ *
56
+ * C reference: cvRcheck3 (cvode.c, lines ~4400-4453)
57
+ *
58
+ * Interfaces to cvRootfind to look for a root of g between tlo and
59
+ * either tn or tout, whichever comes first.
60
+ *
61
+ * @param mem - CVODE memory block
62
+ * @returns CV_SUCCESS, RTFOUND, or CV_RTFUNC_FAIL
63
+ */
64
+ export declare function cvRcheck3(mem: CvodeMem): number;