VibeLattice is a browser-based workflow for working with AVL models, running cases, and visualizing results. It is built as a numerically faithful JS/WASM port of AVL logic, with UI tooling around the original AVL file formats.
From the repo root, start a local static server:
python3 -m http.server 8080Then open:
This project is based on and ports core functionality from AVL (Athena Vortex Lattice) by Mark Drela and Harold Youngren.
- Original AVL page: https://web.mit.edu/drela/Public/web/avl/
- See
LICENSEin this repo for licensing details.
- Load, edit, and save
.avlfiles in an in-browser AVL editor. - Syntax-highlight AVL text and keep formatting suitable for direct AVL use.
- Load and save
.runrun-case files. - Load and save
.massmass-property files. - Auto-load companion
plane.runandplane.masswhen defaultplane.avlis loaded. - Display and edit flight conditions, constraints, run cases, and mass/inertia values.
- Compute forces/derivatives using the JS/WASM solver pipeline.
- View total forces, stability derivatives, body-axis derivatives, surface forces, and hinge moments.
- Plot Trefftz-plane outputs.
- Plot eigenmodes and select modes for 3D animation.
- 3D aircraft view with toggles for:
- wireframe and surface rendering modes
- pressure visualization
- panel spacing overlays
- bound and leg vortices
- flow-field visualization modes
VibeLattice supports template literals directly inside AVL text and creates sliders for them in the Aircraft panel.
- Basic variable:
${name} - Variable with default:
${name:1.5}or${name??1.5} - Expression support: simple math in template expressions (
+,-,*,/, parentheses), for example:${span_base * scale}${x0 + dx}${(c_root + c_tip) / 2}
- Sliders are generated per template variable name.
- If no explicit default is given, default value is
1. - Default slider range is scaled around the default value (currently up to
10xmagnitude). - Parameters in positive-only AVL contexts are enforced as strictly positive.
- Double-click or long-press a parameter name to rescale the slider around the current value for finer tuning.
- Changing sliders rewrites/resolves template values and refreshes geometry and solution outputs.
- The codebase includes parity tests against Fortran reference executables for key solver paths.
- Some UI outputs use AVL sign conventions for display; internal force vectors may use solver-native orientation and be converted for presentation.