A comprehensive structural engineering tool that performs portal frame analysis and design for multi-story, multi-bay steel frames. Features a modern MUI frontend, Python FastAPI backend, and Julia calculation engine with LaTeX-rendered calculations.
frontend/ React + TypeScript + MUI v5 + KaTeX
|
v (HTTP/JSON)
backend/ Python FastAPI
|
v (subprocess JSON)
julia/ Julia + Handcalcs + Unitful
- Material UI v5 with professional engineering theme
- Multi-section input form (Geometry, Forces, Material, Design)
- 5-tab results dashboard (Portal, Gravity, Combinations, Beam Design, Column Design)
- KaTeX LaTeX rendering for handcalc-style equations
- Responsive layout with drawer navigation
- REST API at
http://localhost:8000 POST /api/analyze- Full analysis with LaTeX renderingPOST /api/analyze/fast- Quick computation (no LaTeX)GET /api/aisc-sections- W-section databaseGET /api/health- Health check- Calls Julia engine via subprocess with JSON I/O
Handcalcs.jl+Unitful.jl+Latexify.jlfor rendered calculations@smartmathmacro for fast/render toggle (no duplicate code paths)- Typed solution structs for type-safe pipeline
- Pure solver functions with validation at boundary
- JSON adapter:
run(params::Dict)pattern
- Column shear distribution (exterior/interior)
- Column bending moments
- Beam moments from column equilibrium
- Beam shear forces
- Column axial forces (cumulative from top)
- Dead and live load distribution
- Slab force tributary area calculations
- Beam bending moment (0.8L clear span approximation)
- Beam shear force
- Combo 1: Dead + Live
- Combo 2: Dead + 0.7 * Earthquake
- Combo 3: Dead + 0.75 * Live + 0.525 * Earthquake
- Beam: Sx required, compact section check, LTB cases, shear check
- Column: K-factor (alignment chart), slenderness, Fa, interaction equation
- Automatic W-section selection from database
- Node.js 18+
- Python 3.9+
- Julia 1.9+
cd backend
pip install -r requirements.txt
python server.py
# Server runs at http://localhost:8000cd frontend
npm install
npm run dev
# App runs at http://localhost:5173cd julia
julia --project=. -e 'using Pkg; Pkg.instantiate()'- 3 storeys, 2 bays
- Heights: 4m, 3m, 3m
- Bay widths (ABC): 6.0m, 5.5m
- Bay widths (123): 7.0m, 6.0m
- Lateral forces: 21.88, 38.29, 40.96 kN
- Fy = 248 MPa
All calculations use SI units internally:
- Length: meters (m)
- Force: kilonewtons (kN)
- Stress: megapascals (MPa)
- Mass: kilograms per cubic meter (kg/m^3)
The data/ directory contains AISC W-section properties in CSV format.
This is an independent engineering-software implementation of approximate portal-frame and gravity-load methods, with steel-member design checks. The visible diagrams and rendered equations make the calculation path inspectable.
The repository does not currently provide a published independent benchmark suite or a passing CI calculation-validation report. Approximate analysis assumptions and a particular code edition must be checked for each intended use; screenshots alone do not validate the numerical results.
Start with the default example above to inspect inputs, units, intermediate results and diagrams. A documented comparison against independently solved reference cases remains the next validation step.
















