All notable changes to FEAScript-core are documented in this file. The format is based on Keep a Changelog, and the project follows Semantic Versioning (while in 0.x, minor versions may contain breaking changes).
0.3.1 - 2026-10-30
- The FEAScript icon at the start of the README showed at full size on npmjs.com, which ignores the
styleattribute; it now has a fixed width and height
0.3.0 - 2026-10-30
- Triangular elements (linear and quadratic), including triangular meshes imported from Gmsh (#97)
- Euler–Bernoulli beam model (
eulerBernoulliBeamScript) with cubic Hermite elements and fixed, pinned, spring, force and moment conditions (#86) - Viscosity in the creeping flow model:
coefficientFunctions: { viscosity }, a number or a function of (x, y) (#102) - Named result fields for models with several unknowns per node:
solve()returnsfields(velocityMagnitude,u,v,pfor creeping flow;w,thetafor the beam), and the plotting functions take a{ field }option (#106) - Nonlinear 1D problems with the Newton–Raphson method in the general form PDE (#90)
- Spatially varying coefficients:
thermalConductivityandheatSourceas functions of position (#92) - 1D front propagation
- Frontal solver for every model that supports it, including the linear general form PDE (#100)
- vtk.js visualization (
plotSolutionVtk,plotInterpolatedSolutionVtk) and VTK/VTP export (#73, #79) FEAScriptWorkertakes the same model options asFEAScriptModel, so every model can run in a web worker (#107)- Gmsh import detects the mesh dimension and element order
- Input validation for solvers and boundary conditions (#83)
- Regression, analytical and benchmark tests (including NAFEMS T4), run with
npm teston Node.js 18 and later - Node.js examples for the NAFEMS T4 benchmark, Couette flow and a cantilever beam
- Sparse matrix format during assembly (#99)
- BLAS routines from stdlib (#81)
- Linear elements use a 2-point Gauss rule per direction (2 × 2 on quadrilaterals) instead of 1 point, so linear quadrilaterals no longer under-integrate the stiffness matrix; results on linear elements change slightly (#105)
- Every solver returns the solution vector as a
Float64Array - The CommonJS build is
dist/feascript.cjs(wasdist/feascript.cjs.js), sorequire("feascript")works (#112) - Source files are reorganized and lose the
Scriptsuffix (#80, #94)
- The
"constantTemp"boundary condition; use"constantTemperature"
setSolverConfig; usesetModelConfig(#73)importGmshQuadTri; useimportGmshMesh(#80)- The private
_creepingFlowMetadataand_eulerBernoulliBeamMetadataproperties; useresult.fields(#106)
- 1D convection and nonzero front values
- Non-contiguous node tags in the Gmsh reader (#96)
0.2.0 - 2026-02-25
- Creeping (Stokes) flow model (
creepingFlowScript) with Taylor–Hood elements (#63) - WebGPU Jacobi solver (#53)
- Arbitrary geometries from Gmsh meshes (#58, #59)
- Skewed structured 2D meshes (
angleLeft,angleRight) (#60) plotInterpolatedSolution
- Solvers consolidated behind a single interface (#56)
setModelConfigreplacessetSolverConfig, which is deprecated
0.1.3 - 2025-10-08
- General form PDE model (
generalFormPDEScript) (#48) - Frontal solver (#40, #43)
- 1D PDE solver (#42)
printVersion(#45)- Automated tests on pull requests (#44)
solidHeatTransferScriptis renamed toheatConductionScript(#47)
- Signs of the advection and reaction terms in the general form PDE
0.1.2 - 2025-07-31
- Front propagation model (
frontPropagationScript) for the eikonal equation (#29) - Solidification front example (#30)
0.1.1 - 2025-05-22
- First build published to npm (#25)
0.1.0 - 2025-05-15
- Initial release: steady heat conduction in 1D and 2D (
solidHeatTransferScript), structured meshes and Gmsh import, Jacobi and LU solvers, Plotly plotting, and a web worker (FEAScriptWorker)