diff-grok 1.0.10 → 1.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude/settings.local.json +11 -0
- package/.claude/skills/license-updater/SKILL.md +149 -0
- package/.claude/skills/license-updater/references/compatibility.md +68 -0
- package/.claude/skills/license-updater/references/templates.md +151 -0
- package/.claude/skills/license-updater/scripts/generate_license_files.py +467 -0
- package/CLAUDE.md +104 -0
- package/LICENSE +1 -1
- package/README.MD +121 -27
- package/THIRD_PARTY_LICENSES +135 -0
- package/docs/assets/hierarchy.js +1 -1
- package/docs/assets/navigation.js +1 -1
- package/docs/assets/search.js +1 -1
- package/docs/classes/BasicModelPipelineCreator.html +4 -4
- package/docs/classes/Callback.html +5 -5
- package/docs/classes/CyclicModelPipelineCreator.html +4 -4
- package/docs/classes/IterCheckerCallback.html +5 -5
- package/docs/classes/PipelineCreator.html +4 -4
- package/docs/classes/TimeCheckerCallback.html +5 -5
- package/docs/classes/UpdatesModelPipelineCreator.html +4 -4
- package/docs/functions/ab4.html +8 -0
- package/docs/functions/ab5.html +8 -0
- package/docs/functions/applyPipeline.html +2 -2
- package/docs/functions/getCallback.html +2 -2
- package/docs/functions/getIVP.html +2 -2
- package/docs/functions/getInputVector.html +2 -2
- package/docs/functions/getIvp2WebWorker.html +2 -2
- package/docs/functions/getJScode.html +2 -2
- package/docs/functions/getOutputNames.html +2 -2
- package/docs/functions/getPipelineCreator.html +2 -2
- package/docs/functions/lsoda.html +8 -0
- package/docs/functions/mrt.html +2 -2
- package/docs/functions/printE5.html +2 -2
- package/docs/functions/printHires.html +2 -2
- package/docs/functions/printOrego.html +2 -2
- package/docs/functions/printPollution.html +2 -2
- package/docs/functions/printRobertson.html +2 -2
- package/docs/functions/printVdpol.html +2 -2
- package/docs/functions/rk3.html +8 -0
- package/docs/functions/rk4.html +8 -0
- package/docs/functions/rkdp.html +8 -0
- package/docs/functions/ros34prw.html +2 -2
- package/docs/functions/ros3prw.html +2 -2
- package/docs/functions/solveIvp.html +2 -2
- package/docs/hierarchy.html +1 -1
- package/docs/index.html +100 -15
- package/docs/media/E5.png +0 -0
- package/docs/media/HIRES.png +0 -0
- package/docs/media/OREGO.png +0 -0
- package/docs/media/POLL-full.png +0 -0
- package/docs/media/ROBER.png +0 -0
- package/docs/media/VDP0L.png +0 -0
- package/docs/media/cyclic-model.js +3 -1
- package/docs/media/cyclic-model.js.map +1 -1
- package/docs/media/cyclic-model.ts +3 -1
- package/docs/modules.html +1 -1
- package/docs/types/Arg.html +7 -7
- package/docs/types/DifEqs.html +4 -4
- package/docs/types/Func.html +2 -2
- package/docs/types/IVP.html +20 -20
- package/docs/types/IVP2WebWorker.html +7 -7
- package/docs/types/Input.html +4 -4
- package/docs/types/Loop.html +4 -4
- package/docs/types/ODEs.html +8 -8
- package/docs/types/Output.html +4 -4
- package/docs/types/Pipeline.html +4 -4
- package/docs/types/SolverOptions.html +5 -5
- package/docs/types/Update.html +5 -5
- package/docs/types/Wrapper.html +5 -5
- package/images/E5.png +0 -0
- package/images/HIRES.png +0 -0
- package/images/OREGO.png +0 -0
- package/images/POLL-full.png +0 -0
- package/images/ROBER.png +0 -0
- package/images/VDP0L.png +0 -0
- package/index.js +1 -1
- package/index.js.map +1 -1
- package/index.ts +2 -1
- package/jest.config.js +1 -0
- package/package.json +4 -2
- package/src/examples/check-methods.js +15 -3
- package/src/examples/check-methods.js.map +1 -1
- package/src/examples/check-methods.ts +18 -3
- package/src/examples/cyclic-model.js +3 -1
- package/src/examples/cyclic-model.js.map +1 -1
- package/src/examples/cyclic-model.ts +3 -1
- package/src/solver-tools/ab4-method.js +332 -0
- package/src/solver-tools/ab4-method.js.map +1 -0
- package/src/solver-tools/ab4-method.ts +395 -0
- package/src/solver-tools/ab5-method.js +334 -0
- package/src/solver-tools/ab5-method.js.map +1 -0
- package/src/solver-tools/ab5-method.ts +397 -0
- package/src/solver-tools/cvode/common.js +487 -0
- package/src/solver-tools/cvode/common.js.map +1 -0
- package/src/solver-tools/cvode/common.ts +549 -0
- package/src/solver-tools/cvode/cvode.js +1062 -0
- package/src/solver-tools/cvode/cvode.js.map +1 -0
- package/src/solver-tools/cvode/cvode.ts +1226 -0
- package/src/solver-tools/cvode/cvode_adams.js +124 -0
- package/src/solver-tools/cvode/cvode_adams.js.map +1 -0
- package/src/solver-tools/cvode/cvode_adams.ts +142 -0
- package/src/solver-tools/cvode/cvode_bdf.js +153 -0
- package/src/solver-tools/cvode/cvode_bdf.js.map +1 -0
- package/src/solver-tools/cvode/cvode_bdf.ts +164 -0
- package/src/solver-tools/cvode/cvode_class.js +158 -0
- package/src/solver-tools/cvode/cvode_class.js.map +1 -0
- package/src/solver-tools/cvode/cvode_class.ts +271 -0
- package/src/solver-tools/cvode/cvode_hin.js +119 -0
- package/src/solver-tools/cvode/cvode_hin.js.map +1 -0
- package/src/solver-tools/cvode/cvode_hin.ts +150 -0
- package/src/solver-tools/cvode/cvode_io.js +203 -0
- package/src/solver-tools/cvode/cvode_io.js.map +1 -0
- package/src/solver-tools/cvode/cvode_io.ts +258 -0
- package/src/solver-tools/cvode/cvode_ls.js +210 -0
- package/src/solver-tools/cvode/cvode_ls.js.map +1 -0
- package/src/solver-tools/cvode/cvode_ls.ts +249 -0
- package/src/solver-tools/cvode/cvode_nls.js +220 -0
- package/src/solver-tools/cvode/cvode_nls.js.map +1 -0
- package/src/solver-tools/cvode/cvode_nls.ts +259 -0
- package/src/solver-tools/cvode/cvode_root.js +415 -0
- package/src/solver-tools/cvode/cvode_root.js.map +1 -0
- package/src/solver-tools/cvode/cvode_root.ts +503 -0
- package/src/solver-tools/cvode/dense_linalg.js +131 -0
- package/src/solver-tools/cvode/dense_linalg.js.map +1 -0
- package/src/solver-tools/cvode/dense_linalg.ts +144 -0
- package/src/solver-tools/cvode/index.js +26 -0
- package/src/solver-tools/cvode/index.js.map +1 -0
- package/src/solver-tools/cvode/index.ts +64 -0
- package/src/solver-tools/cvode-method.js +114 -0
- package/src/solver-tools/cvode-method.js.map +1 -0
- package/src/solver-tools/cvode-method.ts +129 -0
- package/src/solver-tools/index.js +7 -0
- package/src/solver-tools/index.js.map +1 -1
- package/src/solver-tools/index.ts +7 -0
- package/src/solver-tools/lsoda/blas.js +257 -0
- package/src/solver-tools/lsoda/blas.js.map +1 -0
- package/src/solver-tools/lsoda/blas.ts +279 -0
- package/src/solver-tools/lsoda/cfode.js +84 -0
- package/src/solver-tools/lsoda/cfode.js.map +1 -0
- package/src/solver-tools/lsoda/cfode.ts +95 -0
- package/src/solver-tools/lsoda/common.js +94 -0
- package/src/solver-tools/lsoda/common.js.map +1 -0
- package/src/solver-tools/lsoda/common.ts +135 -0
- package/src/solver-tools/lsoda/corfailure.js +36 -0
- package/src/solver-tools/lsoda/corfailure.js.map +1 -0
- package/src/solver-tools/lsoda/corfailure.ts +42 -0
- package/src/solver-tools/lsoda/correction.js +112 -0
- package/src/solver-tools/lsoda/correction.js.map +1 -0
- package/src/solver-tools/lsoda/correction.ts +131 -0
- package/src/solver-tools/lsoda/dense.js +121 -0
- package/src/solver-tools/lsoda/dense.js.map +1 -0
- package/src/solver-tools/lsoda/dense.ts +141 -0
- package/src/solver-tools/lsoda/index.js +15 -0
- package/src/solver-tools/lsoda/index.js.map +1 -0
- package/src/solver-tools/lsoda/index.ts +17 -0
- package/src/solver-tools/lsoda/intdy.js +54 -0
- package/src/solver-tools/lsoda/intdy.js.map +1 -0
- package/src/solver-tools/lsoda/intdy.ts +62 -0
- package/src/solver-tools/lsoda/lsoda.js +578 -0
- package/src/solver-tools/lsoda/lsoda.js.map +1 -0
- package/src/solver-tools/lsoda/lsoda.ts +644 -0
- package/src/solver-tools/lsoda/methodswitch.js +108 -0
- package/src/solver-tools/lsoda/methodswitch.js.map +1 -0
- package/src/solver-tools/lsoda/methodswitch.ts +119 -0
- package/src/solver-tools/lsoda/orderswitch.js +97 -0
- package/src/solver-tools/lsoda/orderswitch.js.map +1 -0
- package/src/solver-tools/lsoda/orderswitch.ts +107 -0
- package/src/solver-tools/lsoda/prja.js +54 -0
- package/src/solver-tools/lsoda/prja.js.map +1 -0
- package/src/solver-tools/lsoda/prja.ts +61 -0
- package/src/solver-tools/lsoda/scaleh.js +41 -0
- package/src/solver-tools/lsoda/scaleh.js.map +1 -0
- package/src/solver-tools/lsoda/scaleh.ts +45 -0
- package/src/solver-tools/lsoda/solsy.js +25 -0
- package/src/solver-tools/lsoda/solsy.js.map +1 -0
- package/src/solver-tools/lsoda/solsy.ts +30 -0
- package/src/solver-tools/lsoda/stoda.js +270 -0
- package/src/solver-tools/lsoda/stoda.js.map +1 -0
- package/src/solver-tools/lsoda/stoda.ts +298 -0
- package/src/solver-tools/lsoda-method.js +134 -0
- package/src/solver-tools/lsoda-method.js.map +1 -0
- package/src/solver-tools/lsoda-method.ts +154 -0
- package/src/solver-tools/mrt-method.js +81 -18
- package/src/solver-tools/mrt-method.js.map +1 -1
- package/src/solver-tools/mrt-method.ts +111 -21
- package/src/solver-tools/rk3-method.js +210 -0
- package/src/solver-tools/rk3-method.js.map +1 -0
- package/src/solver-tools/rk3-method.ts +257 -0
- package/src/solver-tools/rk4-method.js +236 -0
- package/src/solver-tools/rk4-method.js.map +1 -0
- package/src/solver-tools/rk4-method.ts +286 -0
- package/src/solver-tools/rkdp-method.js +247 -0
- package/src/solver-tools/rkdp-method.js.map +1 -0
- package/src/solver-tools/rkdp-method.ts +300 -0
- package/src/solver-tools/ros34prw-method.js +1 -1
- package/src/solver-tools/ros34prw-method.js.map +1 -1
- package/src/solver-tools/ros34prw-method.ts +1 -1
- package/src/solver-tools/ros3prw-method.js +1 -1
- package/src/solver-tools/ros3prw-method.js.map +1 -1
- package/src/solver-tools/ros3prw-method.ts +1 -1
- package/src/solver-tools/solver-defs.js +7 -0
- package/src/solver-tools/solver-defs.js.map +1 -1
- package/src/solver-tools/solver-defs.ts +7 -0
- package/src/tests/correctness.test.js +6 -4
- package/src/tests/correctness.test.js.map +1 -1
- package/src/tests/correctness.test.ts +6 -4
- package/src/tests/cvode-lib-correctness.test.js +404 -0
- package/src/tests/cvode-lib-correctness.test.js.map +1 -0
- package/src/tests/cvode-lib-correctness.test.ts +505 -0
- package/src/tests/cvode-lib-performance.test.js +103 -0
- package/src/tests/cvode-lib-performance.test.js.map +1 -0
- package/src/tests/cvode-lib-performance.test.ts +128 -0
- package/src/tests/lsoda-lib-correctness.test.js +223 -0
- package/src/tests/lsoda-lib-correctness.test.js.map +1 -0
- package/src/tests/lsoda-lib-correctness.test.ts +283 -0
- package/src/tests/lsoda-lib-performance.test.js +95 -0
- package/src/tests/lsoda-lib-performance.test.js.map +1 -0
- package/src/tests/lsoda-lib-performance.test.ts +126 -0
- package/src/tests/performance.test.js +12 -8
- package/src/tests/performance.test.js.map +1 -1
- package/src/tests/performance.test.ts +12 -8
- package/src/tests/test-defs.js +20 -1
- package/src/tests/test-defs.js.map +1 -1
- package/src/tests/test-defs.ts +22 -1
- package/src/worker-tools/solving.js +15 -1
- package/src/worker-tools/solving.js.map +1 -1
- package/src/worker-tools/solving.ts +23 -1
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
/* LSODA library wrapper method.
|
|
2
|
+
|
|
3
|
+
Wraps the variable-order Nordsieck-based LSODA solver into the standard SolverMethod interface.
|
|
4
|
+
Automatically switches between Adams (non-stiff) and BDF (stiff) methods.
|
|
5
|
+
|
|
6
|
+
References:
|
|
7
|
+
[1] Hindmarsh, A.C. "ODEPACK, A Systematized Collection of ODE Solvers."
|
|
8
|
+
[2] Petzold, L.R. "Automatic Selection of Methods for Solving Stiff and Nonstiff
|
|
9
|
+
Systems of Ordinary Differential Equations."
|
|
10
|
+
*/
|
|
11
|
+
import { ERROR_MSG } from './solver-defs';
|
|
12
|
+
import { Lsoda } from './lsoda';
|
|
13
|
+
/** Wraps an ODEs func into the OdeFunction signature compatible with Lsoda (returns 0). */
|
|
14
|
+
function wrapFunc(f) {
|
|
15
|
+
return (t, y, ydot) => {
|
|
16
|
+
f(t, y, ydot);
|
|
17
|
+
return 0;
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
/** Solve initial value problem using the LSODA library method
|
|
21
|
+
* @param odes initial value problem for ordinary differential equations
|
|
22
|
+
* @param callback computations control callback
|
|
23
|
+
* @returns solution of the problem
|
|
24
|
+
* @example
|
|
25
|
+
* // Example. Solve the following initial value problem using the LSODA method:
|
|
26
|
+
* // dx/dt = x + y - t
|
|
27
|
+
* // dy/dt = x * y + t
|
|
28
|
+
* // x(0) = 1
|
|
29
|
+
* // y(0) = -1
|
|
30
|
+
* // on [0, 2] with the step 0.01.
|
|
31
|
+
* import { ODEs, lsoda } from 'diff-grok';
|
|
32
|
+
*
|
|
33
|
+
* const task: ODEs = {
|
|
34
|
+
* name: 'Example', // name of your model
|
|
35
|
+
* arg: {
|
|
36
|
+
* name: 't', // name of the argument
|
|
37
|
+
* start: 0, // initial value of the argument
|
|
38
|
+
* finish: 2, // final value of the argument
|
|
39
|
+
* step: 0.01, // solution grid step
|
|
40
|
+
* },
|
|
41
|
+
* initial: [1, -1], // initial values
|
|
42
|
+
* func: (t: number, y: Float64Array, output: Float64Array) => { // right-hand side of the system
|
|
43
|
+
* output[0] = y[0] + y[1] - t; // 1-st equation
|
|
44
|
+
* output[1] = y[0] * y[1] + t; // 2-nd equation
|
|
45
|
+
* },
|
|
46
|
+
* tolerance: 1e-7, // tolerance
|
|
47
|
+
* solutionColNames: ['x', 'y'], // names of solution functions
|
|
48
|
+
* };
|
|
49
|
+
*
|
|
50
|
+
* try {
|
|
51
|
+
* // Solve the problem using the LSODA method
|
|
52
|
+
* const solution = lsoda(task);
|
|
53
|
+
*
|
|
54
|
+
* // Print a table with the results
|
|
55
|
+
* console.log(task.arg.name, task.solutionColNames[0], task.solutionColNames[1]);
|
|
56
|
+
* const length = solution[0].length;
|
|
57
|
+
* for (let i = 0; i < length; ++i)
|
|
58
|
+
* console.log(solution[0][i], solution[1][i], solution[2][i]);
|
|
59
|
+
* } catch (err) {
|
|
60
|
+
* console.log('Solver failed: ', err instanceof Error ? err.message : 'Unknown problem!');
|
|
61
|
+
* }
|
|
62
|
+
*/
|
|
63
|
+
export function lsoda(odes, callback) {
|
|
64
|
+
// 1. Extract problem parameters
|
|
65
|
+
const t0 = odes.arg.start;
|
|
66
|
+
const t1 = odes.arg.finish;
|
|
67
|
+
const step = odes.arg.step;
|
|
68
|
+
const tolerance = odes.tolerance;
|
|
69
|
+
const dim = odes.initial.length;
|
|
70
|
+
const mxstep = 50000;
|
|
71
|
+
// 2. Create LSODA solver with dense output enabled
|
|
72
|
+
const rtol = new Float64Array(dim).fill(tolerance);
|
|
73
|
+
const atol = new Float64Array(dim).fill(tolerance);
|
|
74
|
+
const solver = new Lsoda(wrapFunc(odes.func), dim, {
|
|
75
|
+
rtol, atol, itask: 1, dense: true, mxstep,
|
|
76
|
+
});
|
|
77
|
+
// 3. Integrate through checkpoints, collecting Nordsieck snapshots for dense output.
|
|
78
|
+
// Checkpoints are spaced coarsely (up to 1000) so the solver handles adaptive
|
|
79
|
+
// stepping internally; mxstep per call stays within bounds.
|
|
80
|
+
let y = [...odes.initial];
|
|
81
|
+
let t = t0;
|
|
82
|
+
// Warmup: a tiny initial step bootstraps the BDF method for extremely stiff problems.
|
|
83
|
+
// Try 1e-k for k from 4 to 10, picking the largest step that succeeds.
|
|
84
|
+
const base = Math.min(step, 1.0);
|
|
85
|
+
let warmupOk = false;
|
|
86
|
+
for (let k = 5; k <= 10; k++) {
|
|
87
|
+
const warmupTout = t0 + base * Math.pow(10, -k);
|
|
88
|
+
if (warmupTout <= t0 || warmupTout >= t1)
|
|
89
|
+
continue;
|
|
90
|
+
const wr = solver.solve(y, t, warmupTout);
|
|
91
|
+
if (solver.state > 0) {
|
|
92
|
+
y = wr.y;
|
|
93
|
+
t = wr.t;
|
|
94
|
+
warmupOk = true;
|
|
95
|
+
break;
|
|
96
|
+
}
|
|
97
|
+
// Reset solver to retry with a smaller warmup step
|
|
98
|
+
solver.reset();
|
|
99
|
+
y = [...odes.initial];
|
|
100
|
+
t = t0;
|
|
101
|
+
}
|
|
102
|
+
if (!warmupOk && t === t0)
|
|
103
|
+
throw new Error(ERROR_MSG.LSODA_FAILS);
|
|
104
|
+
const gridPoints = Math.trunc((t1 - t0) / step) + 1;
|
|
105
|
+
const numCheckpoints = Math.min(gridPoints, 1000);
|
|
106
|
+
const cpStep = (t1 - t0) / numCheckpoints;
|
|
107
|
+
for (let i = 1; i <= numCheckpoints; i++) {
|
|
108
|
+
// check whether to go on computations
|
|
109
|
+
if (callback)
|
|
110
|
+
callback.onIterationStart();
|
|
111
|
+
const tout = (i < numCheckpoints) ? t0 + i * cpStep : t1;
|
|
112
|
+
const result = solver.solve(y, t, tout);
|
|
113
|
+
y = result.y;
|
|
114
|
+
t = result.t;
|
|
115
|
+
if (solver.state <= 0)
|
|
116
|
+
throw new Error(ERROR_MSG.LSODA_FAILS);
|
|
117
|
+
}
|
|
118
|
+
// 4. Use dense output to interpolate on the uniform output grid
|
|
119
|
+
const dense = solver.getDenseOutput();
|
|
120
|
+
const grid = dense.solveOnGrid(t0, t1, step);
|
|
121
|
+
if (callback)
|
|
122
|
+
callback.onComputationsCompleted();
|
|
123
|
+
// 5. Return solution: [tArr, y0Arr, y1Arr, ...]
|
|
124
|
+
const rowCount = grid.t.length;
|
|
125
|
+
const solution = Array(dim + 1);
|
|
126
|
+
solution[0] = grid.t;
|
|
127
|
+
for (let i = 0; i < dim; ++i)
|
|
128
|
+
solution[i + 1] = grid.y[i];
|
|
129
|
+
// Patch last y values with the exact endpoint from the solver
|
|
130
|
+
for (let i = 0; i < dim; ++i)
|
|
131
|
+
solution[i + 1][rowCount - 1] = y[i];
|
|
132
|
+
return solution;
|
|
133
|
+
} // lsoda
|
|
134
|
+
//# sourceMappingURL=lsoda-method.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lsoda-method.js","sourceRoot":"","sources":["lsoda-method.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
/* LSODA library wrapper method.
|
|
2
|
+
|
|
3
|
+
Wraps the variable-order Nordsieck-based LSODA solver into the standard SolverMethod interface.
|
|
4
|
+
Automatically switches between Adams (non-stiff) and BDF (stiff) methods.
|
|
5
|
+
|
|
6
|
+
References:
|
|
7
|
+
[1] Hindmarsh, A.C. "ODEPACK, A Systematized Collection of ODE Solvers."
|
|
8
|
+
[2] Petzold, L.R. "Automatic Selection of Methods for Solving Stiff and Nonstiff
|
|
9
|
+
Systems of Ordinary Differential Equations."
|
|
10
|
+
*/
|
|
11
|
+
|
|
12
|
+
import {ODEs, ERROR_MSG} from './solver-defs';
|
|
13
|
+
import {Callback} from './callbacks/callback-base';
|
|
14
|
+
import {Lsoda} from './lsoda';
|
|
15
|
+
|
|
16
|
+
/** Wraps an ODEs func into the OdeFunction signature compatible with Lsoda (returns 0). */
|
|
17
|
+
function wrapFunc(f: ODEs['func']): (t: number, y: Float64Array, ydot: Float64Array) => number {
|
|
18
|
+
return (t, y, ydot) => {
|
|
19
|
+
f(t, y, ydot);
|
|
20
|
+
return 0;
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
/** Solve initial value problem using the LSODA library method
|
|
25
|
+
* @param odes initial value problem for ordinary differential equations
|
|
26
|
+
* @param callback computations control callback
|
|
27
|
+
* @returns solution of the problem
|
|
28
|
+
* @example
|
|
29
|
+
* // Example. Solve the following initial value problem using the LSODA method:
|
|
30
|
+
* // dx/dt = x + y - t
|
|
31
|
+
* // dy/dt = x * y + t
|
|
32
|
+
* // x(0) = 1
|
|
33
|
+
* // y(0) = -1
|
|
34
|
+
* // on [0, 2] with the step 0.01.
|
|
35
|
+
* import { ODEs, lsoda } from 'diff-grok';
|
|
36
|
+
*
|
|
37
|
+
* const task: ODEs = {
|
|
38
|
+
* name: 'Example', // name of your model
|
|
39
|
+
* arg: {
|
|
40
|
+
* name: 't', // name of the argument
|
|
41
|
+
* start: 0, // initial value of the argument
|
|
42
|
+
* finish: 2, // final value of the argument
|
|
43
|
+
* step: 0.01, // solution grid step
|
|
44
|
+
* },
|
|
45
|
+
* initial: [1, -1], // initial values
|
|
46
|
+
* func: (t: number, y: Float64Array, output: Float64Array) => { // right-hand side of the system
|
|
47
|
+
* output[0] = y[0] + y[1] - t; // 1-st equation
|
|
48
|
+
* output[1] = y[0] * y[1] + t; // 2-nd equation
|
|
49
|
+
* },
|
|
50
|
+
* tolerance: 1e-7, // tolerance
|
|
51
|
+
* solutionColNames: ['x', 'y'], // names of solution functions
|
|
52
|
+
* };
|
|
53
|
+
*
|
|
54
|
+
* try {
|
|
55
|
+
* // Solve the problem using the LSODA method
|
|
56
|
+
* const solution = lsoda(task);
|
|
57
|
+
*
|
|
58
|
+
* // Print a table with the results
|
|
59
|
+
* console.log(task.arg.name, task.solutionColNames[0], task.solutionColNames[1]);
|
|
60
|
+
* const length = solution[0].length;
|
|
61
|
+
* for (let i = 0; i < length; ++i)
|
|
62
|
+
* console.log(solution[0][i], solution[1][i], solution[2][i]);
|
|
63
|
+
* } catch (err) {
|
|
64
|
+
* console.log('Solver failed: ', err instanceof Error ? err.message : 'Unknown problem!');
|
|
65
|
+
* }
|
|
66
|
+
*/
|
|
67
|
+
export function lsoda(odes: ODEs, callback?: Callback): Float64Array[] {
|
|
68
|
+
// 1. Extract problem parameters
|
|
69
|
+
const t0 = odes.arg.start;
|
|
70
|
+
const t1 = odes.arg.finish;
|
|
71
|
+
const step = odes.arg.step;
|
|
72
|
+
const tolerance = odes.tolerance;
|
|
73
|
+
const dim = odes.initial.length;
|
|
74
|
+
const mxstep = 50000;
|
|
75
|
+
|
|
76
|
+
// 2. Create LSODA solver with dense output enabled
|
|
77
|
+
const rtol = new Float64Array(dim).fill(tolerance);
|
|
78
|
+
const atol = new Float64Array(dim).fill(tolerance);
|
|
79
|
+
|
|
80
|
+
const solver = new Lsoda(wrapFunc(odes.func), dim, {
|
|
81
|
+
rtol, atol, itask: 1, dense: true, mxstep,
|
|
82
|
+
});
|
|
83
|
+
|
|
84
|
+
// 3. Integrate through checkpoints, collecting Nordsieck snapshots for dense output.
|
|
85
|
+
// Checkpoints are spaced coarsely (up to 1000) so the solver handles adaptive
|
|
86
|
+
// stepping internally; mxstep per call stays within bounds.
|
|
87
|
+
|
|
88
|
+
let y: ArrayLike<number> = [...odes.initial];
|
|
89
|
+
let t = t0;
|
|
90
|
+
|
|
91
|
+
// Warmup: a tiny initial step bootstraps the BDF method for extremely stiff problems.
|
|
92
|
+
// Try 1e-k for k from 4 to 10, picking the largest step that succeeds.
|
|
93
|
+
const base = Math.min(step, 1.0);
|
|
94
|
+
let warmupOk = false;
|
|
95
|
+
for (let k = 5; k <= 10; k++) {
|
|
96
|
+
const warmupTout = t0 + base * Math.pow(10, -k);
|
|
97
|
+
if (warmupTout <= t0 || warmupTout >= t1)
|
|
98
|
+
continue;
|
|
99
|
+
|
|
100
|
+
const wr = solver.solve(y, t, warmupTout);
|
|
101
|
+
if (solver.state > 0) {
|
|
102
|
+
y = wr.y;
|
|
103
|
+
t = wr.t;
|
|
104
|
+
warmupOk = true;
|
|
105
|
+
break;
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
// Reset solver to retry with a smaller warmup step
|
|
109
|
+
solver.reset();
|
|
110
|
+
y = [...odes.initial];
|
|
111
|
+
t = t0;
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
if (!warmupOk && t === t0)
|
|
115
|
+
throw new Error(ERROR_MSG.LSODA_FAILS);
|
|
116
|
+
|
|
117
|
+
const gridPoints = Math.trunc((t1 - t0) / step) + 1;
|
|
118
|
+
const numCheckpoints = Math.min(gridPoints, 1000);
|
|
119
|
+
const cpStep = (t1 - t0) / numCheckpoints;
|
|
120
|
+
|
|
121
|
+
for (let i = 1; i <= numCheckpoints; i++) {
|
|
122
|
+
// check whether to go on computations
|
|
123
|
+
if (callback)
|
|
124
|
+
callback.onIterationStart();
|
|
125
|
+
|
|
126
|
+
const tout = (i < numCheckpoints) ? t0 + i * cpStep : t1;
|
|
127
|
+
const result = solver.solve(y, t, tout);
|
|
128
|
+
y = result.y;
|
|
129
|
+
t = result.t;
|
|
130
|
+
|
|
131
|
+
if (solver.state <= 0)
|
|
132
|
+
throw new Error(ERROR_MSG.LSODA_FAILS);
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
// 4. Use dense output to interpolate on the uniform output grid
|
|
136
|
+
const dense = solver.getDenseOutput();
|
|
137
|
+
const grid = dense.solveOnGrid(t0, t1, step);
|
|
138
|
+
|
|
139
|
+
if (callback)
|
|
140
|
+
callback.onComputationsCompleted();
|
|
141
|
+
|
|
142
|
+
// 5. Return solution: [tArr, y0Arr, y1Arr, ...]
|
|
143
|
+
const rowCount = grid.t.length;
|
|
144
|
+
const solution = Array<Float64Array>(dim + 1);
|
|
145
|
+
solution[0] = grid.t;
|
|
146
|
+
for (let i = 0; i < dim; ++i)
|
|
147
|
+
solution[i + 1] = grid.y[i];
|
|
148
|
+
|
|
149
|
+
// Patch last y values with the exact endpoint from the solver
|
|
150
|
+
for (let i = 0; i < dim; ++i)
|
|
151
|
+
solution[i + 1][rowCount - 1] = y[i];
|
|
152
|
+
|
|
153
|
+
return solution;
|
|
154
|
+
} // lsoda
|
|
@@ -4,11 +4,73 @@
|
|
|
4
4
|
[1] https://doi.org/10.1137/S1064827594276424
|
|
5
5
|
[2] https://doi.org/10.1016/S0898-1221(00)00175-9
|
|
6
6
|
*/
|
|
7
|
-
import { max, abs, SAFETY,
|
|
7
|
+
import { max, min, abs, SAFETY, TINY, EPS, tDerivative, jacobian, ERROR_MSG } from './solver-defs';
|
|
8
8
|
import { luDecomp, luSolve, solve1d2d } from './lin-alg-tools';
|
|
9
9
|
// Quantities used in Rosenbrock method (see [1], [2] for more details)
|
|
10
10
|
const D = 1.0 - Math.sqrt(2.0) / 2.0;
|
|
11
11
|
const E32 = 6.0 + Math.sqrt(2.0);
|
|
12
|
+
const TWO_D = 2.0 * D;
|
|
13
|
+
const ONE_MINUS_2D = 1.0 - TWO_D;
|
|
14
|
+
// Adaptive step size control bounds (see MRT.md, Section 6)
|
|
15
|
+
const ALPHA_MAX = 5;
|
|
16
|
+
const ALPHA_MIN = 0.2;
|
|
17
|
+
/** Compute the initial step size using the Hairer-Norsett-Wanner algorithm.
|
|
18
|
+
* @param t0 initial time
|
|
19
|
+
* @param y0 initial state vector
|
|
20
|
+
* @param f right-hand side function
|
|
21
|
+
* @param tol scalar tolerance (plays the role of rtol)
|
|
22
|
+
* @param dim dimension of the system
|
|
23
|
+
* @param p order of the method (p = 2 for MRT)
|
|
24
|
+
* @param tEnd end of the integration interval (used to cap h0)
|
|
25
|
+
* @returns estimated initial step size
|
|
26
|
+
*/
|
|
27
|
+
function initialStepSize(t0, y0, f, tol, dim, p, tEnd) {
|
|
28
|
+
const f0 = new Float64Array(dim);
|
|
29
|
+
const f1 = new Float64Array(dim);
|
|
30
|
+
const y1 = new Float64Array(dim);
|
|
31
|
+
const sc = new Float64Array(dim);
|
|
32
|
+
// Step 1: scale vector (sc[i] = |y0[i]| + TINY)
|
|
33
|
+
for (let i = 0; i < dim; ++i)
|
|
34
|
+
sc[i] = Math.abs(y0[i]) + TINY;
|
|
35
|
+
// Step 2: evaluate the right-hand side at the initial point
|
|
36
|
+
f(t0, y0, f0);
|
|
37
|
+
// Step 3: compute scaled norms d0 = ||y0/sc||, d1 = ||f0/sc||
|
|
38
|
+
let d0 = 0.0;
|
|
39
|
+
let d1 = 0.0;
|
|
40
|
+
for (let i = 0; i < dim; ++i) {
|
|
41
|
+
d0 = Math.max(d0, Math.abs(y0[i]) / sc[i]);
|
|
42
|
+
d1 = Math.max(d1, Math.abs(f0[i]) / sc[i]);
|
|
43
|
+
}
|
|
44
|
+
// Step 4: first guess
|
|
45
|
+
let h0;
|
|
46
|
+
if (d0 < 1e-5 || d1 < 1e-5)
|
|
47
|
+
h0 = 1e-6;
|
|
48
|
+
else
|
|
49
|
+
h0 = 0.01 * d0 / d1;
|
|
50
|
+
// Cap h0 to the integration interval
|
|
51
|
+
h0 = Math.min(h0, Math.abs(tEnd - t0));
|
|
52
|
+
// Step 5: explicit Euler probe to estimate the second derivative
|
|
53
|
+
for (let i = 0; i < dim; ++i)
|
|
54
|
+
y1[i] = y0[i] + h0 * f0[i];
|
|
55
|
+
f(t0 + h0, y1, f1);
|
|
56
|
+
let d2 = 0.0;
|
|
57
|
+
for (let i = 0; i < dim; ++i)
|
|
58
|
+
d2 = Math.max(d2, Math.abs(f1[i] - f0[i]) / sc[i]);
|
|
59
|
+
d2 /= h0;
|
|
60
|
+
// Step 6: refine using the method order
|
|
61
|
+
// h1 = (tol / max(d1, d2))^(1/(p+1))
|
|
62
|
+
const maxD = Math.max(d1, d2);
|
|
63
|
+
let h1;
|
|
64
|
+
if (maxD <= 1e-15)
|
|
65
|
+
h1 = Math.max(1e-6, h0 * 1e-3);
|
|
66
|
+
else
|
|
67
|
+
h1 = Math.pow(tol / maxD, 1.0 / (p + 1));
|
|
68
|
+
// Step 7: final initial step size
|
|
69
|
+
h0 = Math.min(100.0 * h0, h1);
|
|
70
|
+
// Safety: clip to the integration interval
|
|
71
|
+
h0 = Math.min(h0, Math.abs(tEnd - t0));
|
|
72
|
+
return h0;
|
|
73
|
+
}
|
|
12
74
|
/** Solve initial value problem the modified Rosenbrock triple (MRT) method
|
|
13
75
|
* @param odes initial value problem for ordinary differential equations
|
|
14
76
|
* @param callback computations control callback
|
|
@@ -59,13 +121,15 @@ export function mrt(odes, callback) {
|
|
|
59
121
|
// operating variables
|
|
60
122
|
const t0 = odes.arg.start;
|
|
61
123
|
const t1 = odes.arg.finish;
|
|
62
|
-
|
|
63
|
-
const hDataframe = h;
|
|
124
|
+
const hDataframe = odes.arg.step;
|
|
64
125
|
const tolerance = odes.tolerance;
|
|
65
|
-
/** number of solution dataframe rows */
|
|
66
|
-
const rowCount = Math.trunc((t1 - t0) / h) + 1;
|
|
67
126
|
/** dimension of the problem */
|
|
68
127
|
const dim = odes.initial.length;
|
|
128
|
+
// compute the initial step size automatically
|
|
129
|
+
let h = initialStepSize(t0, new Float64Array(odes.initial), f, tolerance, dim, 2, t1);
|
|
130
|
+
//console.log(`MRT, the problem "${odes.name}", grid step: ${hDataframe}, initial step size: ${h}.`);
|
|
131
|
+
/** number of solution dataframe rows */
|
|
132
|
+
const rowCount = Math.trunc((t1 - t0) / hDataframe) + 1;
|
|
69
133
|
const dimSquared = dim * dim;
|
|
70
134
|
/** independent variable values */
|
|
71
135
|
const tArr = new Float64Array(rowCount);
|
|
@@ -81,7 +145,6 @@ export function mrt(odes, callback) {
|
|
|
81
145
|
let flag = true;
|
|
82
146
|
let index = 1;
|
|
83
147
|
let errmax = 0;
|
|
84
|
-
let hTemp = 0;
|
|
85
148
|
let tNew = 0;
|
|
86
149
|
// 0 BUFFERS & TEMP STRUCTURES
|
|
87
150
|
/** identity matrix */
|
|
@@ -195,32 +258,32 @@ export function mrt(odes, callback) {
|
|
|
195
258
|
for (let i = 0; i < dim; ++i)
|
|
196
259
|
errmax = max(errmax, abs(yErr[i] / yScale[i]));
|
|
197
260
|
errmax /= tolerance;
|
|
198
|
-
//
|
|
261
|
+
// adaptive step size control (see MRT.md, Section 6)
|
|
199
262
|
if (errmax > 1) {
|
|
200
|
-
|
|
201
|
-
h = max(
|
|
263
|
+
// step rejected: reduce step size, but not below ALPHA_MIN factor
|
|
264
|
+
h = h * max(ALPHA_MIN, SAFETY * Math.pow(errmax, (-1 / 3)));
|
|
202
265
|
tNew = t + h;
|
|
203
266
|
if (tNew == t)
|
|
204
267
|
throw new Error(ERROR_MSG.MRT_FAILS);
|
|
205
268
|
}
|
|
206
269
|
else {
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
else
|
|
210
|
-
hNext = GROW_COEF * h;
|
|
270
|
+
// step accepted: grow step size, but not above ALPHA_MAX factor
|
|
271
|
+
hNext = h * min(ALPHA_MAX, SAFETY * Math.pow(errmax, (-1 / 3)));
|
|
211
272
|
t = t + h;
|
|
212
273
|
for (let i = 0; i < dim; ++i)
|
|
213
274
|
y[i] = yTemp[i];
|
|
214
275
|
break;
|
|
215
276
|
}
|
|
216
277
|
} // while (true)
|
|
217
|
-
// compute
|
|
278
|
+
// compute dense output using Shampine-Reichelt continuous extension
|
|
279
|
+
const hStep = t - tPrev;
|
|
218
280
|
while (timeDataframe < t) {
|
|
219
|
-
const
|
|
220
|
-
const
|
|
281
|
+
const s = (timeDataframe - tPrev) / hStep;
|
|
282
|
+
const b1 = s * (1.0 - s) / ONE_MINUS_2D;
|
|
283
|
+
const b2 = s * (s - TWO_D) / ONE_MINUS_2D;
|
|
221
284
|
tArr[index] = timeDataframe;
|
|
222
285
|
for (let j = 0; j < dim; ++j)
|
|
223
|
-
yArrs[j][index] =
|
|
286
|
+
yArrs[j][index] = yPrev[j] + hStep * (b1 * k1[j] + b2 * k2[j]);
|
|
224
287
|
timeDataframe += hDataframe;
|
|
225
288
|
++index;
|
|
226
289
|
}
|
|
@@ -237,7 +300,7 @@ export function mrt(odes, callback) {
|
|
|
237
300
|
for (let i = 0; i < dim; ++i)
|
|
238
301
|
yArrs[i][rowCount - 1] = y[i];
|
|
239
302
|
// 4. prepare output
|
|
240
|
-
const solution = Array(dim);
|
|
303
|
+
const solution = Array(dim + 1);
|
|
241
304
|
// independent variable
|
|
242
305
|
solution[0] = tArr;
|
|
243
306
|
// functions
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mrt-method.js","sourceRoot":"","sources":["mrt-method.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"mrt-method.js","sourceRoot":"","sources":["mrt-method.ts"],"names":[],"mappings":"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"}
|