# How It Works Everything Aero is built around a generic symbolic equation manager. Instead of hard-coding calculation steps, the solver dynamically assembles and solves a system of equations based on a large number of equation templates (formulas) and which variables are present/provided. --- ## High-Level Flow 1. User inputs equations, assumptions, and target variables 2. Symbols are extracted and indexed variables are created 3. Equation templates are activated if solvable 4. A symbolic system is assembled 5. The system is solved using sympy 6. Assumptions are relaxed if necessary The result may include **functions**, not just scalars. --- ## Generic Architecture The calculator is split into three independent parts: - Equation engine (generic, reusable) - Equation templates (domain-specific physics) - Web UI (built with [ngapp](https://cerbsim.github.io/ngapp)) This makes it easy to: - Add new equations - Create calculators for other domains - Extend physics without changing the solver Deployment and documentation is automatic using github actions. --- ## Equation Templates All physics equations are defined as templates. Example: ```python aero_eq_manager.add_equation_template( equations_to_add=["Re{{i}}=L{{i}} * rho{{i}} * v{{i}} / eta{{i}}"], relevant_vars=[ ("Re", "Reynolds number [-]"), ("L", "Characteristic length [m]"), ("rho", "Air density [kg/m³]"), ("v", "Velocity [m/s]"), ("eta", "Dynamic viscosity [Pa·s]") ], vars_to_check=[(["Re", "L"], 1)], name="Reynolds Number" ) ``` ```equations_to_add``` - List of strings in lhs = rhs format - Symbols use {{i}} and {{j}} as index placeholders - Multi-index equations are expanded automatically ```relevant_vars``` - List of (symbol, description) tuples - Used for documentation and UI clarity - Descriptions should be precise to avoid input errors ```vars_to_check``` - List of ([list of symbols to check], n (=number of symbols required)) tuples - Prevents unsolvable equations from being added - An equation is activated only if at least n symbols already exist - Keeps the system solvable and the solver fast --- ## Assumption Handling If the system is over-constrained: - Equations involving assumption symbols are selectively removed (iteratively) - Variables listed in Looking for are preserved where possible - This process continues until a solution is found or all options are exhausted --- ## Output Solutions are: - Symbolic - Displayed in LaTeX - Highlighted according to Looking for - This allows further analysis such as differentiation or evaluation at specific values.