5127df5fastandaccurate: PDE solver benchmarks, laplace-dirichlet-2d with MFS and Nystrom DLP solversJeremy Magland 1# fastandaccurate
3Speed and accuracy benchmarks for PDE solvers.
5Live site: https://concept-collection.github.io/fastandaccurate/
7A limitation of most solver comparisons is that they fix a
8discretization, which quietly decides much of the outcome. Here each
9**problem** is posed in the continuum with an exact reference solution;
10a solver chooses its own discretization and is scored at
11problem-specified evaluation points. The central object is the
12**work-precision curve**: error against compute time as the solver's
a6326c5Remove design-rationale phrasing from site copy and READMEsJeremy Magland 13resolution varies. No single ranking is presented; which curve wins can
14differ by accuracy regime, instance, and machine.
5127df5fastandaccurate: PDE solver benchmarks, laplace-dirichlet-2d with MFS and Nystrom DLP solversJeremy Magland 15
16Solvers are MATLAB function files run by [numbl](https://numbl.org)
17(MATLAB syntax in the browser and in node), so every run on this site
18happens client side, and the identical harness runs from the command
19line. Each problem defines its own interface and instances in a written
a6326c5Remove design-rationale phrasing from site copy and READMEsJeremy Magland 20specification; interfaces are per problem rather than shared.
5127df5fastandaccurate: PDE solver benchmarks, laplace-dirichlet-2d with MFS and Nystrom DLP solversJeremy Magland 21
22## Problems
24- [laplace-dirichlet-2d](docs/problems/laplace-dirichlet-2d.md) —
25 interior Dirichlet Laplace problem on a star-shaped domain, data
26 manufactured from an exact harmonic function whose singularities sit an
27 adjustable distance outside the boundary.
29## Results
31Results are work-precision sweeps stored as JSON files in
32[fastandaccurate-results](https://github.com/concept-collection/fastandaccurate-results)
a6326c5Remove design-rationale phrasing from site copy and READMEsJeremy Magland 33and added by pull request; the site reads that repository statically.
34Every result records its provenance: instance spec and hash, solver id
35and version, protocol, runtime, numbl version, and machine. Solvers
36included on the site can be rerun in the browser on the problem page to
37compare against the committed curves.
5127df5fastandaccurate: PDE solver benchmarks, laplace-dirichlet-2d with MFS and Nystrom DLP solversJeremy Magland 38
39## Running benchmarks outside the browser
41The command line installs from the site itself (node 20 or newer):
43```
44npx https://concept-collection.github.io/fastandaccurate/cli.tgz run --label "my workstation"
45```
47Note that npx caches by the exact URL string; the site offers the URL
48with a `?v=<commit>` suffix so each deployment is a fresh install.
50Useful flags: `--instance <id>`, `--solver <id>`, `--repeats N`,
51`--max-n N`, `--out dir`. To benchmark your own solver, point the
52harness at a MATLAB function file implementing the problem's interface:
54```
55npx https://concept-collection.github.io/fastandaccurate/cli.tgz run \
56 --solver-file my_method.m --solver-id my-method
57```
59The resulting JSON files can be loaded on the site (load result file) to
60view them against the committed curves, and submitted by PR to the
61results repository. To add a solver to the site itself (so visitors can
62rerun it in the browser), PR the solver directory and a manifest entry
63to this repository; see `src/solvers/`.
65## Development
67```
68npm install
69npm run dev # local dev server
70npm test # solver convergence tests through numbl in node
71npm run build # type-check, site build, CLI tarball (dist/)
72npm run check-app # headless end-to-end check of the built site
73```
75Layout: `src/problems/` holds problem specs, instances, exact solutions,
76and the problem-side MATLAB; `src/solvers/` the solver MATLAB files and
77manifests; `src/harness/` the shared runner, sweep, and result schema
78(used identically by the browser worker and the CLI); `src/app/` the
79React site; `src/cli/` the command line.
81Deployed to GitHub Pages by `.github/workflows/deploy.yml` on push to
82main.
84## License
86Apache-2.0