Skip to main content

Design Decisions

Design Decisions

This section records settled architectural trade-offs to preserve context and prevent reopening old debates.

  • Local-Axis Construction: Employs orientation vectors rather than gamma angles to prevent hidden displacement errors and avoid fragile vertical-member logic.

  • Load Handling: Uses consistent load conversion and recovery for distributed loads, explicitly avoiding ad hoc subdivision to prevent double-counting and hidden mutations.

  • Solver Independence: Centers analysis strictly on the StructuralModel to keep engineering concerns entirely free from editor or rendering leaks.

  • Conservative Invalidation: Adopts a blunt but safe strategy that completely discards and invalidates old result sets when inputs change, eliminating stale-result bugs.

  • Linear Algebra: Utilizes a dense, MathNet-based solve path, prioritizing baseline correctness and debuggability over premature sparse solver optimizations.

  • Analysis Scope: Maintains a first-order primary analysis path while explicitly surfacing second-order sensitivity limits via αcr checks.

  • Architecture & State: Relies on composition for runtime sharing rather than rigid API boundaries, and utilizes typed settings (e.g., GridSettings) for testability instead of anonymous key-value stores.