{
  "abstract": "In 2008 MILAMIN showed that a finite element code written in native MATLAB, a language then held to be too slow for large problems, could set up, solve and post-process one million unknowns per minute on a desktop, provided every stage of the pipeline gets equal care. This note brings the same pipeline to the web browser: Triangle meshing, 7-node Crouzeix-Raviart elements, supernodal Cholesky with fill-reducing ordering and Powell-Hestenes pressure iterations, in TypeScript and WebAssembly. Nothing is installed. Stokes models of inclusions, layers and grain swarms with up to two million unknowns are written in a few lines of JavaScript, and the folding and boudinage of layered rock is stepped through time. On a 2025 phone a million-unknown Stokes problem is meshed, assembled, factorized, iterated and rendered in nine seconds. Its assembly and solution alone take five to six times less than the 49 s the 2008 desktop needed for the same stages, and even a 2013 desktop lies below the 2008 curve at every size up to the four-gigabyte limit of WebAssembly. The largest gain came from the supernodal factorization, not from threads; the thread scaling on all devices is consistent with a memory-bandwidth limit. The solution is verified against the analytical circular-inclusion solution on a sequence of refined meshes. MilAMin, the browser version, runs at milamin.org; the code is public, under the GPL except for Triangle, which keeps its own terms, and the benchmark, the convergence study and the model presets have command-line twins that run the same code.",
  "abstract_shown": true,
  "affiliations": [],
  "article_type": null,
  "arxiv": null,
  "author_total": 1,
  "authors": [
    {
      "name": "Daniel Walter Schmid"
    }
  ],
  "bibtex": "https://research.draconitic.com/paper/4jsnhntd2bx7z.bib",
  "cited_by": 0,
  "doi": "10.31223/x5nf8t",
  "fulltext_url": null,
  "id": "4jsnhntd2bx7z",
  "issns": [],
  "landing_url": "https://eartharxiv.org/repository/view/15135/",
  "language": null,
  "licence": "CC-BY-4.0",
  "licence_label": "CC BY 4.0",
  "licence_source": "article",
  "licence_url": "https://creativecommons.org/licenses/by/4.0/legalcode",
  "metadata_licence": null,
  "native_subjects": [
    [
      "bepress",
      "Geophysics and Seismology"
    ],
    [
      "bepress",
      "MILAMIN"
    ],
    [
      "bepress",
      "Numerical Analysis and Scientific Computing"
    ],
    [
      "bepress",
      "Stokes flow"
    ],
    [
      "bepress",
      "Tectonics and Structure"
    ],
    [
      "bepress",
      "WebAssembly"
    ],
    [
      "bepress",
      "finite element method"
    ],
    [
      "bepress",
      "sparse Cholesky"
    ],
    [
      "bepress",
      "verification"
    ],
    [
      "openalex",
      "2206|Advanced Numerical Methods in Computational Mathematics"
    ]
  ],
  "openalex": "W7214005775",
  "pdf_url": "https://eartharxiv.org/repository/object/15135/download/26262/",
  "pmcid": null,
  "pmid": null,
  "published": "2026-09-22",
  "publisher": null,
  "ris": "https://research.draconitic.com/paper/4jsnhntd2bx7z.ris",
  "sources": [
    {
      "first_seen": "2026-10-30T12:17:36Z",
      "native_id": "15135",
      "source": "eartharxiv",
      "url": "https://eartharxiv.org/repository/view/15135/"
    }
  ],
  "subjects": [
    {
      "field": "earth",
      "origin": "bepress:Geophysics and Seismology",
      "subfield": "geophysics"
    }
  ],
  "title": "MilAMin in the browser: a million unknowns a minute in TypeScript and WebAssembly",
  "title_text": "MilAMin in the browser: a million unknowns a minute in TypeScript and WebAssembly",
  "type": "preprint",
  "updated_at": "2026-10-30T12:17:36Z",
  "url": "https://research.draconitic.com/paper/4jsnhntd2bx7z",
  "venue": "EarthArXiv",
  "versions": []
}