@casadi/casadi-wasm
v3.8.1
Published
CasADi — symbolic framework for algorithmic differentiation and numerical optimization, compiled to WebAssembly. Runs in Node.js with on-demand solver plugins (ipopt, fatrop, sundials, ...).
Downloads
629
Maintainers
Readme
@casadi/casadi-wasm
CasADi compiled to WebAssembly. Symbolic framework for algorithmic differentiation and numerical optimization.
Install
npm install @casadi/casadi-wasmUse (Node.js)
const create = require('@casadi/casadi-wasm');
(async () => {
const ca = await create(); // async: instantiates the wasm module
const x = ca.SX.sym('x', 2);
const [x0, x1] = ca.vertsplit(x);
const nlp = { x, f: ca.plus(ca.times(x0, x0), ca.times(x1, x1)),
g: ca.minus(ca.plus(x0, x1), ca.SX(10)) };
await ca.load_nlpsol('ipopt'); // on-demand plugin load (async)
const solver = ca.nlpsol('solver', 'ipopt', nlp);
const sol = solver.call({ lbg: ca.DM(0) });
console.log(sol['x'].nonzeros()); // [5, 5]
})();JavaScript has no operator overloading — use ca.plus, ca.minus,
ca.times, etc. instead of + - *. Solver plugins
(ipopt, fatrop, sundials integrators, ...) ship as sibling .so
side modules and load on demand via await ca.load_<type>('<name>').
See examples/ for ports of the CasADi documentation examples.
Plugin availability
plugins.json lists the plugins required by this build, including explicit
exclusions and their reasons. A configured plugin without a Wasm recipe or
exclusion is a CMake error. Solver dependencies are linked transitively from
the ordinary CMake plugin targets; the CasADi core stays in the main module.
In browsers, await load_nlpsol, load_conic, load_linsol, load_blas,
load_filesystem, or the other load_* functions before constructing a
solver. Class entry points such as Linsol.load_plugin and
XmlFile.load_plugin also return promises. Concurrent loads of the same
plugin share one request; failed loads can be retried.
