Skip to content

Latest commit

 

History

110 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

FEM@ti — model tree, live M-diagram, converged nonlinear run with a plastic hinge, ULS/SLS checks

FEM@ti

Magyarul

CI License: MIT Live demo

Elastic–plastic Timoshenko-beam finite element analysis — a modern, TypeScript-based, validated FEA program.

Try it live → — no install needed, runs entirely in the browser.

⚠️ Not certified design software. FEM@ti is a research and educational finite element tool. Its numerical core is validated against closed-form solutions (see docs/VALIDATION-SCOPE.md for exactly what is and is not covered), but all results must be verified independently, under professional engineering responsibility, before being used for any structural design decision.

Note on language: the source comments and the deeper documentation (docs/, ADRs) are in Hungarian — this is a personal project built around a Hungarian engineering thesis. This README exists so an English-speaking visitor can understand what the project does and judge its engineering/ software quality without reading Hungarian. The application's own user interface has a full HU/EN switch (header, top right) and opens in English by default — the physics notation (M, T, w, φ, E, G, I, A) was always standard and language-independent regardless.


What is this?

In 1996, a thesis at the Budapest University of Technology (BME) produced an elastic–plastic Timoshenko-beam finite element program: 3-node quadratic beam elements, selective reduced integration (against shear locking), a frontal equation solver, and a layered (fiber) cross-section model to track plastic deformation.

FEM@ti reimplements the same structural-mechanics model thirty years later, as a modern, interactive, browser-based application — not "inspired by" the thesis, but line-by-line traceable to it: every implemented formula is matched to the thesis's exact page and equation number (see docs/THEORY.md), and every mechanical claim is proven by a validation test against closed-form or hand-calculated reference values (see docs/VALIDATION.md). For a direct answer to "how do you know the underlying mechanics is correct, and what are you not claiming," see docs/VALIDATION-SCOPE.md.

Wherever current software-engineering practice diverges from the 1996 solution (e.g. skyline storage instead of the frontal solver on the production path), that divergence is recorded in a dedicated architecture decision record (ADR) — including the ORIGINAL frontal algorithm itself, which remains available, animated, in the app's "Historical mode" view for teaching purposes (see ADR-0002).

Why it's worth a look

  • Interactive model canvas — click/drag-editable beam model (supports, point/distributed loads), with live recomputation on every change.
  • Linear AND nonlinear (elastic–plastic) analysis — Newton–Raphson solver with adaptive load stepping, REFORB stress return-mapping, a load-step timeline, and plastic-zone visualization.
  • Full, auditable derivation for every step — per-Gauss-point shape function / Jacobian / B-matrix / stiffness-matrix values, layered plastic return-mapping, with Word (.docx, real OOXML math objects) and printable PDF export.
  • Calculation report and a "Historical mode" (an animated replay of the original 1996 frontal algorithm, side by side with today's skyline solver).
  • ~700 automated tests, including a 10,000-element fuzz test (fast-check) proving the solver never throws an unhandled exception and always returns an equilibrated result on random structures.

Running it

Prerequisite: Node.js ≥ 20, pnpm 10 (the repo's packageManager field pins the exact version — after corepack enable the correct pnpm is picked up automatically).

pnpm install
pnpm --filter @femati/ui dev

This starts the Vite dev server — open the printed http://localhost:5173 URL in a browser.

Verification (typecheck + lint + test, across all packages)

pnpm check

Production build

pnpm build

Monorepo layout

pnpm workspace, 4 packages:

Package Contents
packages/fem-core The actual FEM core: model, elements, solvers (skyline-LDLᵀ and the historical frontal one), material models, validation, post-processing — no DOM dependency, usable standalone.
packages/fem-db Material and cross-section catalog, with source attribution (every record requires a source/verified field).
packages/fem-validation The validation cases that GENERATE docs/VALIDATION.md (against closed-form/hand-calculated references).
packages/ui React + Vite client-side UI — computation runs in the browser, no backend.

See docs/architecture.html for an interactive diagram of how these four packages actually depend on each other (open it in a browser) — including the distinction between what runs live in the browser and what only runs in dev/CI (fem-validation, and fem-db's own test suite, which checks its catalog data against fem-core's computed properties).

Section catalog browser — shape diagram, dimensions, computed properties and the closed-form formulas behind them

The fem-db catalog browser (docs/QUICKSTART.md walks through it) — every entry ties its computed properties back to the formula that produced them.

Documentation

Document Contents
docs/QUICKSTART.md Quick start — how to carry a model through the workspace (build → load → results → section suggestion), with screenshots.
docs/THEORY.md Every implemented formula: code location AND thesis page number. (Hungarian)
docs/CONVENTIONS.md Fixed engineering/coding conventions (sign conventions, DOF order, units). (Hungarian)
docs/VALIDATION.md Generated validation report. (Hungarian)
docs/VALIDATION-SCOPE.md What was validated, how, and what is not claimed — a summary for reviewers/colleagues.
docs/HIBATURESI-POLITIKA.md Error-handling/risk policy (K1–K8). (Hungarian)
docs/ADR/ Architecture decision records. (Hungarian)
MASTER-PROMPT-TERV.md The project's full, phase-by-phase plan. (Hungarian)
STATUS_REPORT.md Continuously updated, phase-by-phase status report. (Hungarian)

The app's "Elméletek" (Theories) menu exposes the same content directly in the application, typeset with KaTeX.

Privacy

Your model never leaves your browser. All computation is client-side — there is no backend, no upload, no account, and no synchronization. Fonts are self-hosted, so the page contacts no third-party CDN.

The hosted demo at femati.vercel.app uses Vercel Web Analytics to count visits: no cookies, no localStorage, no cross-site tracking, no personal identification — page, referrer, country and device type only. It sees nothing about your model, inputs or results. If you build and run the project yourself, it makes no outbound requests at all. See SECURITY.md for details.

License

MIT


Built on a full read-through of the original Diplomaterv (BME).pdf (73 pages) — every mechanical formula comes from a verified source, none was invented.

About

Rugalmas-képlékeny Timoshenko gerenda végeselemes analízis — böngészőben futó, validált FEM szoftver / Elastic-plastic Timoshenko beam FEA in the browser

Topics

Resources

Contributing

Security policy

Stars

1 star

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages