Skip to content

algorithmicalabs/equilibriumgate-core

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 

Repository files navigation

EquilibriumGate: Deterministic Structural Equilibrium Kernel

A rigorous, first-principles mathematical engine built in pure, dependency-free Python. This kernel serves as an absolute mechanical auditor, verifying the topological safety and global static equilibrium of planar structural assemblies.

Core Architectural Design

  1. Absolute Determinism: 100% reproducible execution. Zero stochastic variables, machine-dependent optimization routines, or random state initializations.
  2. Strict Immutable Domain State: All spatial primitives (Nodes, Members, Forces) are evaluated as frozen data structures to prevent downstream coordinate mutation.
  3. Double-Epsilon Boundary Guarding: Clear operational separation between coordinate tolerances and force convergence limits.
    • $\epsilon_{\text{spatial}} = 10^{-4} \text{ m}$ (Handles CAD floating-point micro-variations)
    • $\epsilon_{\text{physics}} = 10^{-3} \text{ N}$ or $\text{N}\cdot\text{m}$ (Enforces equilibrium convergence)

Mathematical Verification Pipeline

[Raw Structural JSON]
│
▼
[preflight.py] ──(Rejects if R < 3 or Orphan Nodes Exist)──► [Exception]
│
▼
[equilibrium.py]
├── 1. Alpha-Priority Pivot Selection (Deterministic support search)
├── 2. Global Translation Vector Summation (ΣFx = 0, ΣFy = 0)
├── 3. Global Cross-Product Moment Summation (ΣMz = 0)
▼
[Equilibrium Gate Evaluation] ──► Returns: Safe (True) OR Imbalanced (False)

Getting Started

Prerequisites

  • Python 3.10+ (No external libraries required)

Running the Validation Kernel Locally

from equilibriumgate.primitives import Node, Force, Constraint
from equilibriumgate.equilibrium import evaluate_assembly

# Define structural joints
nodes = [
    Node(node_id="Node_A", x=0.0, y=0.0, constraint=Constraint.PINNED),
    Node(node_id="Node_B", x=4.0, y=0.0, constraint=Constraint.ROLLER),
    Node(node_id="Node_C", x=2.0, y=2.0, constraint=Constraint.FREE)
]

# Apply external load and balance forces
forces = [
    Force(node_id="Node_C", fx=0.0, fy=-1000.0), # External Load
    Force(node_id="Node_A", fx=0.0, fy=500.0),   # Reaction A
    Force(node_id="Node_B", fx=0.0, fy=500.0)    # Reaction B
]

# Run the auditor
result = evaluate_assembly(nodes, forces)
print(f"Assembly Static Equilibrium State: {result.is_equilibrium}")

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages