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
StructuralModelto 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.