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)

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:

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.