Skip to content

pablomarcel/gearsets

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

15 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

Gearsets โ€” Universal Planetary Transmission Analyzer

Docs Build & Publish Docs Python License: MIT

Gearsets is a Python engineering toolkit for modeling and analyzing planetary automatic transmissions from data-driven topology and shift-schedule definitions.

Instead of hardcoding one-off solvers for each gearbox, Gearsets lets you define the transmission architecture in JSON, define the applied elements for each gear state in JSON, and let the generic kinematic solver compute ratios, member speeds, topology summaries, and clean terminal reports.

The project is built for gearheads, drivetrain engineers, students, and anyone who wants to study real planetary automatic transmissions in a repeatable, inspectable, scriptable way.


Live documentation

The full Sphinx documentation is published here:

https://pablomarcel.github.io/gearsets/

The documentation site is generated from the package-level Sphinx docs and published through GitHub Pages. It includes API references for the transmissions package and the core modules used by the universal solver.


Documentation index

The transmissions documentation covers the package-level CLI, application layer, JSON I/O helpers, model objects, GUI builders, and core kinematic modules.


Why this project exists

Most transmission-analysis scripts are tightly coupled to one specific architecture. They solve one gearbox, one shift schedule, and one set of assumptions.

Gearsets is designed around a different idea:

A planetary automatic transmission can be described as topology plus constraints.

That means the app can work from:

  1. A transmission spec JSON describing gearsets, members, clutches, brakes, sprags, permanent ties, input, and output.
  2. A shift schedule JSON describing which constraints are active in each gear state.

The solver then assembles the kinematic equations and computes the results.

This makes Gearsets useful for:

  • Studying automatic transmissions
  • Comparing real production transmission families
  • Reverse-engineering planetary layouts
  • Understanding sun/ring/carrier speed behavior
  • Reproducing gear-ratio tables
  • Testing candidate tooth counts
  • Exploring topology changes without rewriting solver code

Real transmission examples

The project has been used to analyze JSON-defined examples such as:

  • Ford C4 3-speed
  • ZF 4HP22 / 4HP24 4-speed
  • ZF 5HP24 5-speed
  • Mercedes-Benz W5A-580 5-speed
  • Allison 2000 series 6-speed
  • Mercedes-Benz W7A-700 7-speed
  • ZF 8HP 8-speed
  • Mercedes-Benz 9G-Tronic / NAG3 9-speed
  • Ford 10R80 / 10R 10-speed

These examples make the package more than a toy solver. Names like ZF 8HP, Ford 10R80, and Mercedes 9G-Tronic connect the project to real drivetrain architectures that enthusiasts and engineers already care about.


What Gearsets can do

Gearsets can compute and report:

  • Gear ratios by state
  • Output speed from normalized input speed
  • Member-by-member speed tables
  • Active shift elements by state
  • Topology summaries
  • Tooth-count summaries
  • JSON result payloads
  • Rich terminal tables
  • GUI-assisted transmission spec building
  • GUI-assisted shift schedule building
  • Sphinx documentation skeletons for GitHub Pages

The current core is a kinematic analyzer. It solves speed relationships, not torque capacity, clutch pressure, hydraulic control, losses, thermal behavior, durability, or shift quality.


Why this is cool

Most transmission scripts are one-off throwaways tied to one architecture. This package aims to be different.

Here, the transmission is modeled through:

  • a transmission spec JSON
  • a shift schedule JSON

So instead of writing a brand-new solver for every gearbox, you can describe the machine and let the app solve it.

This is especially appealing if you like:

  • automatic transmissions
  • planetary gearsets
  • gear ratio analysis
  • kinematic architecture studies
  • reverse engineering production transmissions
  • comparing multiple OEM transmission families

What it does

The app solves for:

  • gear ratios
  • member speeds
  • state-by-state applied elements
  • topology summaries
  • clean CLI tables

It works well for 3, 4, 5, 6, 7, 8, 9, and 10-speed planetary automatic transmissions built from simple planetary sets and shift elements.

What it does not do yet

  • Ravigneaux gearsets are not yet truly supported in the universal core
  • the included Ravigneaux JSONs were handled with a dedicated workaround/script path
  • this is currently a kinematic analyzer, not a torque-capacity, efficiency, hydraulics, or durability simulator

Example CLI output

The CLI produces clean tabular summaries that are easy to read.

Example style:

โ•ญโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ Ford C4 3-Speed โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ
โ”‚ input=input   output=front_carrier   speed=1.0   geometry=relaxed โ”‚
โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ
Tooth counts: PG_front(Ns=33, Nr=72), PG_rear(Ns=33, Nr=72)
โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”ณโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”ณโ”โ”โ”โ”โ”โ”โ”โ”โ”ณโ”โ”โ”โ”โ”โ”โ”โ”ณโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”ณโ”โ”โ”โ”โ”โ”โ”โ”โ”ณโ”โ”โ”โ”โ”โ”โ”โ”โ”ณโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”ณโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”“
โ”ƒ State   โ”ƒ Elems                                 โ”ƒ  Ratio โ”ƒ Input โ”ƒ front_ring โ”ƒ    sun โ”ƒ Output โ”ƒ rear_carrier โ”ƒ rear_ring โ”ƒ
โ”กโ”โ”โ”โ”โ”โ”โ”โ”โ”โ•‡โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ•‡โ”โ”โ”โ”โ”โ”โ”โ”โ•‡โ”โ”โ”โ”โ”โ”โ”โ•‡โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ•‡โ”โ”โ”โ”โ”โ”โ”โ”โ•‡โ”โ”โ”โ”โ”โ”โ”โ”โ•‡โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ•‡โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”ฉ
โ”‚ 1st     โ”‚ forward_clutch+sprag                  โ”‚  2.458 โ”‚ 1.000 โ”‚      1.000 โ”‚ -0.888 โ”‚  0.407 โ”‚        0.000 โ”‚     0.407 โ”‚
โ”‚ 2nd     โ”‚ forward_clutch+intermediate_band      โ”‚  1.458 โ”‚ 1.000 โ”‚      1.000 โ”‚  0.000 โ”‚  0.686 โ”‚        0.470 โ”‚     0.686 โ”‚
โ”‚ 3rd     โ”‚ forward_clutch+high_reverse_clutch    โ”‚  1.000 โ”‚ 1.000 โ”‚      1.000 โ”‚  1.000 โ”‚  1.000 โ”‚        1.000 โ”‚     1.000 โ”‚
โ”‚ Rev     โ”‚ high_reverse_clutch+low_reverse_band  โ”‚ -2.182 โ”‚ 1.000 โ”‚     -1.127 โ”‚  1.000 โ”‚ -0.458 โ”‚        0.000 โ”‚    -0.458 โ”‚
โ”‚ Manual1 โ”‚ forward_clutch+low_reverse_band+sprag โ”‚  2.458 โ”‚ 1.000 โ”‚      1.000 โ”‚ -0.888 โ”‚  0.407 โ”‚        0.000 โ”‚     0.407 โ”‚
โ”‚ Manual2 โ”‚ forward_clutch+intermediate_band      โ”‚  1.458 โ”‚ 1.000 โ”‚      1.000 โ”‚  0.000 โ”‚  0.686 โ”‚        0.470 โ”‚     0.686 โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
โ•ญโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ ZF 4HP22/24 4-Speed โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ
โ”‚ input=input   output=output   speed=1.0   geometry=relaxed โ”‚
โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ
Tooth counts: PG_overdrive(Ns=31, Nr=83), PG_front(Ns=35, Nr=73), PG_rear(Ns=35, Nr=73)
โ”โ”โ”โ”โ”โ”โ”โ”โ”ณโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”ณโ”โ”โ”โ”โ”โ”โ”โ”โ”ณโ”โ”โ”โ”โ”โ”โ”โ”ณโ”โ”โ”โ”โ”โ”โ”โ”โ”ณโ”โ”โ”โ”โ”โ”โ”โ”โ”ณโ”โ”โ”โ”โ”โ”โ”โ”โ”ณโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”ณโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”ณโ”โ”โ”โ”โ”โ”โ”โ”โ”“
โ”ƒ State โ”ƒ Elems            โ”ƒ  Ratio โ”ƒ Input โ”ƒ od_sun โ”ƒ od_out โ”ƒ     r1 โ”ƒ simpson_sun โ”ƒ rear_carrier โ”ƒ Output โ”ƒ
โ”กโ”โ”โ”โ”โ”โ”โ”โ•‡โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ•‡โ”โ”โ”โ”โ”โ”โ”โ”โ•‡โ”โ”โ”โ”โ”โ”โ”โ•‡โ”โ”โ”โ”โ”โ”โ”โ”โ•‡โ”โ”โ”โ”โ”โ”โ”โ”โ•‡โ”โ”โ”โ”โ”โ”โ”โ”โ•‡โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ•‡โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ•‡โ”โ”โ”โ”โ”โ”โ”โ”โ”ฉ
โ”‚ 1st   โ”‚ A+E+J+K          โ”‚  2.479 โ”‚ 1.000 โ”‚  1.000 โ”‚  1.000 โ”‚  1.000 โ”‚      -0.841 โ”‚        0.000 โ”‚  0.403 โ”‚
โ”‚ 2nd   โ”‚ A+Cprime+C+E+H+K โ”‚  1.479 โ”‚ 1.000 โ”‚  1.000 โ”‚  1.000 โ”‚  1.000 โ”‚       0.000 โ”‚        0.457 โ”‚  0.676 โ”‚
โ”‚ 3rd   โ”‚ A+B+Cprime+E+K   โ”‚  1.000 โ”‚ 1.000 โ”‚  1.000 โ”‚  1.000 โ”‚  1.000 โ”‚       1.000 โ”‚        1.000 โ”‚  1.000 โ”‚
โ”‚ 4th   โ”‚ A+B+Cprime+F     โ”‚  0.728 โ”‚ 1.000 โ”‚  0.000 โ”‚  1.373 โ”‚  1.373 โ”‚       1.373 โ”‚        1.373 โ”‚  1.373 โ”‚
โ”‚ Rev   โ”‚ B+D+E+K          โ”‚ -2.086 โ”‚ 1.000 โ”‚  1.000 โ”‚  1.000 โ”‚ -1.189 โ”‚       1.000 โ”‚        0.000 โ”‚ -0.479 โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
โ•ญโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ Mercedes-Benz W5A-580 5-Speed โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ
โ”‚ input=input   output=output   speed=1.0   geometry=relaxed โ”‚
โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ
Tooth counts: PG_forward(Ns=46, Nr=72), PG_rear(Ns=68, Nr=122), PG_middle(Ns=37, Nr=91)
โ”โ”โ”โ”โ”โ”โ”โ”โ”ณโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”ณโ”โ”โ”โ”โ”โ”โ”โ”โ”ณโ”โ”โ”โ”โ”โ”โ”โ”ณโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”ณโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”ณโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”ณโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”ณโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”ณโ”โ”โ”โ”โ”โ”โ”โ”โ”“
โ”ƒ State โ”ƒ Elems          โ”ƒ  Ratio โ”ƒ Input โ”ƒ forward_sun โ”ƒ forward_carrier โ”ƒ rear_sun โ”ƒ rear_carrier โ”ƒ middle_sun โ”ƒ Output โ”ƒ
โ”กโ”โ”โ”โ”โ”โ”โ”โ•‡โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ•‡โ”โ”โ”โ”โ”โ”โ”โ”โ•‡โ”โ”โ”โ”โ”โ”โ”โ•‡โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ•‡โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ•‡โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ•‡โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ•‡โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ•‡โ”โ”โ”โ”โ”โ”โ”โ”โ”ฉ
โ”‚ 1st   โ”‚ C3+B1+B2+F1+F2 โ”‚  3.590 โ”‚ 1.000 โ”‚       0.000 โ”‚           0.610 โ”‚    0.000 โ”‚        0.392 โ”‚      0.000 โ”‚  0.279 โ”‚
โ”‚ 2nd   โ”‚ C1+C3+B2+F2    โ”‚  2.191 โ”‚ 1.000 โ”‚       1.000 โ”‚           1.000 โ”‚    0.000 โ”‚        0.642 โ”‚      0.000 โ”‚  0.456 โ”‚
โ”‚ 3rd   โ”‚ C1+C2+B2       โ”‚  1.407 โ”‚ 1.000 โ”‚       1.000 โ”‚           1.000 โ”‚    1.000 โ”‚        1.000 โ”‚      0.000 โ”‚  0.711 โ”‚
โ”‚ 4th   โ”‚ C1+C2+C3       โ”‚  1.000 โ”‚ 1.000 โ”‚       1.000 โ”‚           1.000 โ”‚    1.000 โ”‚        1.000 โ”‚      1.000 โ”‚  1.000 โ”‚
โ”‚ 5th   โ”‚ C2+C3+B1       โ”‚  0.832 โ”‚ 1.000 โ”‚       0.000 โ”‚           0.610 โ”‚    1.699 โ”‚        1.000 โ”‚      1.699 โ”‚  1.202 โ”‚
โ”‚ R1    โ”‚ C3+BR+F1+B1    โ”‚ -3.160 โ”‚ 1.000 โ”‚       0.000 โ”‚           0.610 โ”‚   -1.095 โ”‚        0.000 โ”‚     -1.095 โ”‚ -0.316 โ”‚
โ”‚ R2    โ”‚ C1+C3+BR       โ”‚ -1.928 โ”‚ 1.000 โ”‚       1.000 โ”‚           1.000 โ”‚   -1.794 โ”‚        0.000 โ”‚     -1.794 โ”‚ -0.519 โ”‚
โ”‚ N     โ”‚ C3+B1          โ”‚  0.000 โ”‚ 1.000 โ”‚       0.000 โ”‚           0.000 โ”‚    0.000 โ”‚        0.000 โ”‚      0.000 โ”‚  0.000 โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
โ•ญโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ Allison 2K 6-Speed โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ
โ”‚ input=input   output=output   speed=1.0   geometry=relaxed โ”‚
โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ
Tooth counts: PG1(Ns=67, Nr=109), PG2(Ns=49, Nr=91), PG3(Ns=39, Nr=97)
โ”โ”โ”โ”โ”โ”โ”โ”โ”ณโ”โ”โ”โ”โ”โ”โ”โ”ณโ”โ”โ”โ”โ”โ”โ”โ”โ”ณโ”โ”โ”โ”โ”โ”โ”โ”ณโ”โ”โ”โ”โ”โ”โ”โ”โ”ณโ”โ”โ”โ”โ”โ”โ”โ”โ”ณโ”โ”โ”โ”โ”โ”โ”โ”โ”ณโ”โ”โ”โ”โ”โ”โ”โ”โ”ณโ”โ”โ”โ”โ”โ”โ”โ”โ”“
โ”ƒ State โ”ƒ Elems โ”ƒ  Ratio โ”ƒ Input โ”ƒ  ring1 โ”ƒ node12 โ”ƒ  sun23 โ”ƒ node23 โ”ƒ Output โ”ƒ
โ”กโ”โ”โ”โ”โ”โ”โ”โ•‡โ”โ”โ”โ”โ”โ”โ”โ•‡โ”โ”โ”โ”โ”โ”โ”โ”โ•‡โ”โ”โ”โ”โ”โ”โ”โ•‡โ”โ”โ”โ”โ”โ”โ”โ”โ•‡โ”โ”โ”โ”โ”โ”โ”โ”โ•‡โ”โ”โ”โ”โ”โ”โ”โ”โ•‡โ”โ”โ”โ”โ”โ”โ”โ”โ•‡โ”โ”โ”โ”โ”โ”โ”โ”โ”ฉ
โ”‚ 1st   โ”‚ C1+C5 โ”‚  3.487 โ”‚ 1.000 โ”‚ -1.484 โ”‚ -0.538 โ”‚  1.000 โ”‚  0.000 โ”‚  0.287 โ”‚
โ”‚ 2nd   โ”‚ C1+C4 โ”‚  1.864 โ”‚ 1.000 โ”‚ -0.615 โ”‚  0.000 โ”‚  1.000 โ”‚  0.350 โ”‚  0.536 โ”‚
โ”‚ 3rd   โ”‚ C1+C3 โ”‚  1.403 โ”‚ 1.000 โ”‚  0.000 โ”‚  0.381 โ”‚  1.000 โ”‚  0.597 โ”‚  0.713 โ”‚
โ”‚ 4th   โ”‚ C1+C2 โ”‚  1.000 โ”‚ 1.000 โ”‚  1.000 โ”‚  1.000 โ”‚  1.000 โ”‚  1.000 โ”‚  1.000 โ”‚
โ”‚ 5th   โ”‚ C2+C3 โ”‚  0.752 โ”‚ 1.000 โ”‚  0.000 โ”‚  0.381 โ”‚  2.150 โ”‚  1.000 โ”‚  1.330 โ”‚
โ”‚ 6th   โ”‚ C2+C4 โ”‚  0.653 โ”‚ 1.000 โ”‚ -0.615 โ”‚  0.000 โ”‚  2.857 โ”‚  1.000 โ”‚  1.533 โ”‚
โ”‚ Rev   โ”‚ C3+C5 โ”‚ -4.932 โ”‚ 1.000 โ”‚  0.000 โ”‚  0.381 โ”‚ -0.707 โ”‚  0.000 โ”‚ -0.203 โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
โ•ญโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ Mercedes-Benz W7A-700 7-Speed โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ
โ”‚ input=input   output=out   speed=1.0   geometry=relaxed โ”‚
โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ
Tooth counts: PG_A(Ns=52, Nr=106), PG_B(Ns=78, Nr=100), PG_R(Ns=66, Nr=164), PG_M(Ns=62, Nr=168)
โ”โ”โ”โ”โ”โ”โ”โ”โ”ณโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”ณโ”โ”โ”โ”โ”โ”โ”โ”โ”ณโ”โ”โ”โ”โ”โ”โ”โ”ณโ”โ”โ”โ”โ”โ”โ”โ”โ”ณโ”โ”โ”โ”โ”โ”โ”โ”ณโ”โ”โ”โ”โ”โ”โ”โ”ณโ”โ”โ”โ”โ”โ”โ”โ”โ”ณโ”โ”โ”โ”โ”โ”โ”โ”ณโ”โ”โ”โ”โ”โ”โ”โ”โ”ณโ”โ”โ”โ”โ”โ”โ”โ”โ”“
โ”ƒ State โ”ƒ Elems    โ”ƒ  Ratio โ”ƒ Input โ”ƒ     fa โ”ƒ    fb โ”ƒ    fc โ”ƒ     rs โ”ƒ    rc โ”ƒ     ms โ”ƒ Output โ”ƒ
โ”กโ”โ”โ”โ”โ”โ”โ”โ•‡โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ•‡โ”โ”โ”โ”โ”โ”โ”โ”โ•‡โ”โ”โ”โ”โ”โ”โ”โ•‡โ”โ”โ”โ”โ”โ”โ”โ”โ•‡โ”โ”โ”โ”โ”โ”โ”โ•‡โ”โ”โ”โ”โ”โ”โ”โ•‡โ”โ”โ”โ”โ”โ”โ”โ”โ•‡โ”โ”โ”โ”โ”โ”โ”โ•‡โ”โ”โ”โ”โ”โ”โ”โ”โ•‡โ”โ”โ”โ”โ”โ”โ”โ”โ”ฉ
โ”‚ 1st   โ”‚ C3+B2+B3 โ”‚  4.382 โ”‚ 1.000 โ”‚ -0.707 โ”‚ 0.000 โ”‚ 0.438 โ”‚  0.000 โ”‚ 0.312 โ”‚  0.000 โ”‚  0.228 โ”‚
โ”‚ 2nd   โ”‚ C3+B1+B2 โ”‚  2.862 โ”‚ 1.000 โ”‚  0.000 โ”‚ 0.414 โ”‚ 0.671 โ”‚  0.000 โ”‚ 0.478 โ”‚  0.000 โ”‚  0.349 โ”‚
โ”‚ 3rd   โ”‚ C1+C3+B2 โ”‚  1.920 โ”‚ 1.000 โ”‚  1.000 โ”‚ 1.000 โ”‚ 1.000 โ”‚  0.000 โ”‚ 0.713 โ”‚  0.000 โ”‚  0.521 โ”‚
โ”‚ 4th   โ”‚ C1+C2+B2 โ”‚  1.369 โ”‚ 1.000 โ”‚  1.000 โ”‚ 1.000 โ”‚ 1.000 โ”‚  1.000 โ”‚ 1.000 โ”‚  0.000 โ”‚  0.730 โ”‚
โ”‚ 5th   โ”‚ C1+C2+C3 โ”‚  1.000 โ”‚ 1.000 โ”‚  1.000 โ”‚ 1.000 โ”‚ 1.000 โ”‚  1.000 โ”‚ 1.000 โ”‚  1.000 โ”‚  1.000 โ”‚
โ”‚ 6th   โ”‚ C2+C3+B1 โ”‚  0.819 โ”‚ 1.000 โ”‚  0.000 โ”‚ 0.414 โ”‚ 0.671 โ”‚  1.818 โ”‚ 1.000 โ”‚  1.818 โ”‚  1.220 โ”‚
โ”‚ 7th   โ”‚ C2+C3+B3 โ”‚  0.727 โ”‚ 1.000 โ”‚ -0.707 โ”‚ 0.000 โ”‚ 0.438 โ”‚  2.396 โ”‚ 1.000 โ”‚  2.396 โ”‚  1.376 โ”‚
โ”‚ R1    โ”‚ C3+B3+BR โ”‚ -3.407 โ”‚ 1.000 โ”‚ -0.707 โ”‚ 0.000 โ”‚ 0.438 โ”‚ -1.089 โ”‚ 0.000 โ”‚ -1.089 โ”‚ -0.294 โ”‚
โ”‚ R2    โ”‚ C3+B1+BR โ”‚ -2.225 โ”‚ 1.000 โ”‚  0.000 โ”‚ 0.414 โ”‚ 0.671 โ”‚ -1.667 โ”‚ 0.000 โ”‚ -1.667 โ”‚ -0.449 โ”‚
โ”‚ N     โ”‚ C3+B3    โ”‚  0.000 โ”‚ 1.000 โ”‚  0.000 โ”‚ 0.000 โ”‚ 0.000 โ”‚  0.000 โ”‚ 0.000 โ”‚  0.000 โ”‚  0.000 โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
โ•ญโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ ZF 8HP 4th Generation โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ
โ”‚ input=input   output=output   speed=1.0   geometry=relaxed โ”‚
โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ
Tooth counts: P1(Ns=48, Nr=96), P2(Ns=54, Nr=96), P3(Ns=60, Nr=108), P4(Ns=24, Nr=96)
โ”โ”โ”โ”โ”โ”โ”โ”โ”ณโ”โ”โ”โ”โ”โ”โ”โ”ณโ”โ”โ”โ”โ”โ”โ”โ”โ”ณโ”โ”โ”โ”โ”โ”โ”โ”ณโ”โ”โ”โ”โ”โ”โ”โ”ณโ”โ”โ”โ”โ”โ”โ”โ”ณโ”โ”โ”โ”โ”โ”โ”โ”ณโ”โ”โ”โ”โ”โ”โ”โ”โ”ณโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”ณโ”โ”โ”โ”โ”โ”โ”โ”โ”ณโ”โ”โ”โ”โ”โ”โ”โ”โ”“
โ”ƒ State โ”ƒ Elems โ”ƒ  Ratio โ”ƒ Input โ”ƒ sun12 โ”ƒ   p1r โ”ƒ   p23 โ”ƒ  c_out โ”ƒ p1c_p4r โ”ƒ    p3c โ”ƒ Output โ”ƒ
โ”กโ”โ”โ”โ”โ”โ”โ”โ•‡โ”โ”โ”โ”โ”โ”โ”โ•‡โ”โ”โ”โ”โ”โ”โ”โ”โ•‡โ”โ”โ”โ”โ”โ”โ”โ•‡โ”โ”โ”โ”โ”โ”โ”โ•‡โ”โ”โ”โ”โ”โ”โ”โ•‡โ”โ”โ”โ”โ”โ”โ”โ•‡โ”โ”โ”โ”โ”โ”โ”โ”โ•‡โ”โ”โ”โ”โ”โ”โ”โ”โ”โ•‡โ”โ”โ”โ”โ”โ”โ”โ”โ•‡โ”โ”โ”โ”โ”โ”โ”โ”โ”ฉ
โ”‚ 1st   โ”‚ A+B+C โ”‚  5.000 โ”‚ 1.000 โ”‚ 0.000 โ”‚ 0.000 โ”‚ 1.562 โ”‚  1.000 โ”‚   0.000 โ”‚  1.201 โ”‚  0.200 โ”‚
โ”‚ 2nd   โ”‚ A+B+E โ”‚  3.200 โ”‚ 1.000 โ”‚ 0.000 โ”‚ 0.000 โ”‚ 1.562 โ”‚  1.562 โ”‚   0.000 โ”‚  1.562 โ”‚  0.312 โ”‚
โ”‚ 3rd   โ”‚ B+C+E โ”‚  2.143 โ”‚ 1.000 โ”‚ 1.000 โ”‚ 0.000 โ”‚ 1.000 โ”‚  1.000 โ”‚   0.333 โ”‚  1.000 โ”‚  0.467 โ”‚
โ”‚ 4th   โ”‚ B+D+E โ”‚  1.720 โ”‚ 1.000 โ”‚ 1.744 โ”‚ 0.000 โ”‚ 0.581 โ”‚  0.581 โ”‚   0.581 โ”‚  0.581 โ”‚  0.581 โ”‚
โ”‚ 5th   โ”‚ B+C+D โ”‚  1.297 โ”‚ 1.000 โ”‚ 2.141 โ”‚ 0.000 โ”‚ 0.358 โ”‚  1.000 โ”‚   0.714 โ”‚  0.771 โ”‚  0.771 โ”‚
โ”‚ 6th   โ”‚ C+D+E โ”‚  1.000 โ”‚ 1.000 โ”‚ 1.000 โ”‚ 1.000 โ”‚ 1.000 โ”‚  1.000 โ”‚   1.000 โ”‚  1.000 โ”‚  1.000 โ”‚
โ”‚ 7th   โ”‚ A+C+D โ”‚  0.833 โ”‚ 1.000 โ”‚ 0.000 โ”‚ 1.877 โ”‚ 1.562 โ”‚  1.000 โ”‚   1.251 โ”‚  1.201 โ”‚  1.201 โ”‚
โ”‚ 8th   โ”‚ A+D+E โ”‚  0.640 โ”‚ 1.000 โ”‚ 0.000 โ”‚ 2.344 โ”‚ 1.562 โ”‚  1.562 โ”‚   1.562 โ”‚  1.562 โ”‚  1.562 โ”‚
โ”‚ Rev   โ”‚ A+B+D โ”‚ -3.968 โ”‚ 1.000 โ”‚ 0.000 โ”‚ 0.000 โ”‚ 1.562 โ”‚ -1.260 โ”‚   0.000 โ”‚ -0.252 โ”‚ -0.252 โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
โ•ญโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ Mercedes-Benz 9G-TRONIC / NAG3 9-Speed โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ
โ”‚ input=input_s1   output=output_c3   speed=1.0   geometry=relaxed โ”‚
โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ
Tooth counts: P1(Ns=46, Nr=98), P2(Ns=44, Nr=100), P3(Ns=36, Nr=84), P4(Ns=34, Nr=86)
โ”โ”โ”โ”โ”โ”โ”โ”โ”ณโ”โ”โ”โ”โ”โ”โ”โ”ณโ”โ”โ”โ”โ”โ”โ”โ”โ”ณโ”โ”โ”โ”โ”โ”โ”โ”ณโ”โ”โ”โ”โ”โ”โ”โ”ณโ”โ”โ”โ”โ”โ”โ”โ”โ”ณโ”โ”โ”โ”โ”โ”โ”โ”โ”ณโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”ณโ”โ”โ”โ”โ”โ”โ”โ”ณโ”โ”โ”โ”โ”โ”โ”โ”ณโ”โ”โ”โ”โ”โ”โ”โ”โ”“
โ”ƒ State โ”ƒ Elems โ”ƒ  Ratio โ”ƒ Input โ”ƒ    c1 โ”ƒ  r1_c2 โ”ƒ     s2 โ”ƒ r2_s3_s4 โ”ƒ    r3 โ”ƒ    r4 โ”ƒ Output โ”ƒ
โ”กโ”โ”โ”โ”โ”โ”โ”โ•‡โ”โ”โ”โ”โ”โ”โ”โ•‡โ”โ”โ”โ”โ”โ”โ”โ”โ•‡โ”โ”โ”โ”โ”โ”โ”โ•‡โ”โ”โ”โ”โ”โ”โ”โ•‡โ”โ”โ”โ”โ”โ”โ”โ”โ•‡โ”โ”โ”โ”โ”โ”โ”โ”โ•‡โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ•‡โ”โ”โ”โ”โ”โ”โ”โ•‡โ”โ”โ”โ”โ”โ”โ”โ•‡โ”โ”โ”โ”โ”โ”โ”โ”โ”ฉ
โ”‚ 1st   โ”‚ A+B+E โ”‚  5.503 โ”‚ 1.000 โ”‚ 0.606 โ”‚  0.421 โ”‚  0.000 โ”‚    0.606 โ”‚ 0.000 โ”‚ 1.156 โ”‚  0.182 โ”‚
โ”‚ 2nd   โ”‚ F+E+B โ”‚  3.333 โ”‚ 1.000 โ”‚ 1.000 โ”‚  1.000 โ”‚  1.000 โ”‚    1.000 โ”‚ 0.000 โ”‚ 1.000 โ”‚  0.300 โ”‚
โ”‚ 3rd   โ”‚ F+A+B โ”‚  2.315 โ”‚ 1.000 โ”‚ 1.000 โ”‚  1.000 โ”‚  0.000 โ”‚    1.440 โ”‚ 0.000 โ”‚ 0.826 โ”‚  0.432 โ”‚
โ”‚ 4th   โ”‚ A+B+D โ”‚  1.661 โ”‚ 1.000 โ”‚ 1.268 โ”‚  1.394 โ”‚  0.000 โ”‚    2.007 โ”‚ 0.000 โ”‚ 0.602 โ”‚  0.602 โ”‚
โ”‚ 5th   โ”‚ F+A+D โ”‚  1.211 โ”‚ 1.000 โ”‚ 1.000 โ”‚  1.000 โ”‚  0.000 โ”‚    1.440 โ”‚ 0.563 โ”‚ 0.826 โ”‚  0.826 โ”‚
โ”‚ 6th   โ”‚ F+E+D โ”‚  1.000 โ”‚ 1.000 โ”‚ 1.000 โ”‚  1.000 โ”‚  1.000 โ”‚    1.000 โ”‚ 1.000 โ”‚ 1.000 โ”‚  1.000 โ”‚
โ”‚ 7th   โ”‚ E+A+D โ”‚  0.865 โ”‚ 1.000 โ”‚ 0.606 โ”‚  0.421 โ”‚  0.000 โ”‚    0.606 โ”‚ 1.392 โ”‚ 1.156 โ”‚  1.156 โ”‚
โ”‚ 8th   โ”‚ C+E+D โ”‚  0.717 โ”‚ 1.000 โ”‚ 0.000 โ”‚ -0.469 โ”‚ -1.536 โ”‚    0.000 โ”‚ 1.993 โ”‚ 1.395 โ”‚  1.395 โ”‚
โ”‚ 9th   โ”‚ C+A+D โ”‚  0.601 โ”‚ 1.000 โ”‚ 0.000 โ”‚ -0.469 โ”‚  0.000 โ”‚   -0.676 โ”‚ 2.665 โ”‚ 1.663 โ”‚  1.663 โ”‚
โ”‚ Rev   โ”‚ C+A+B โ”‚ -4.932 โ”‚ 1.000 โ”‚ 0.000 โ”‚ -0.469 โ”‚  0.000 โ”‚   -0.676 โ”‚ 0.000 โ”‚ 1.663 โ”‚ -0.203 โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
โ•ญโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ Ford 10R80 / 10R 10-Speed โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ
โ”‚ input=input   output=output   speed=1.0   geometry=relaxed โ”‚
โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ
Tooth counts: P1(Ns=45, Nr=99), P2(Ns=51, Nr=89), P3(Ns=63, Nr=101), P4(Ns=23, Nr=85)
โ”โ”โ”โ”โ”โ”โ”โ”โ”ณโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”ณโ”โ”โ”โ”โ”โ”โ”โ”โ”ณโ”โ”โ”โ”โ”โ”โ”โ”ณโ”โ”โ”โ”โ”โ”โ”โ”ณโ”โ”โ”โ”โ”โ”โ”โ”ณโ”โ”โ”โ”โ”โ”โ”โ”ณโ”โ”โ”โ”โ”โ”โ”โ”ณโ”โ”โ”โ”โ”โ”โ”โ”โ”ณโ”โ”โ”โ”โ”โ”โ”โ”โ”ณโ”โ”โ”โ”โ”โ”โ”โ”ณโ”โ”โ”โ”โ”โ”โ”โ”โ”“
โ”ƒ State โ”ƒ Elems   โ”ƒ  Ratio โ”ƒ Input โ”ƒ    r1 โ”ƒ   s12 โ”ƒ  r4c1 โ”ƒ  r2s3 โ”ƒ   r3s4 โ”ƒ interm โ”ƒ   p3c โ”ƒ Output โ”ƒ
โ”กโ”โ”โ”โ”โ”โ”โ”โ•‡โ”โ”โ”โ”โ”โ”โ”โ”โ”โ•‡โ”โ”โ”โ”โ”โ”โ”โ”โ•‡โ”โ”โ”โ”โ”โ”โ”โ•‡โ”โ”โ”โ”โ”โ”โ”โ•‡โ”โ”โ”โ”โ”โ”โ”โ•‡โ”โ”โ”โ”โ”โ”โ”โ•‡โ”โ”โ”โ”โ”โ”โ”โ•‡โ”โ”โ”โ”โ”โ”โ”โ”โ•‡โ”โ”โ”โ”โ”โ”โ”โ”โ•‡โ”โ”โ”โ”โ”โ”โ”โ•‡โ”โ”โ”โ”โ”โ”โ”โ”โ”ฉ
โ”‚ 1st   โ”‚ A+B+D+E โ”‚  4.696 โ”‚ 1.000 โ”‚ 0.000 โ”‚ 0.000 โ”‚ 0.000 โ”‚ 1.573 โ”‚  1.000 โ”‚  1.220 โ”‚ 1.220 โ”‚  0.213 โ”‚
โ”‚ 2nd   โ”‚ A+B+C+D โ”‚  2.985 โ”‚ 1.000 โ”‚ 0.000 โ”‚ 0.000 โ”‚ 0.000 โ”‚ 1.573 โ”‚  1.573 โ”‚  1.573 โ”‚ 1.573 โ”‚  0.335 โ”‚
โ”‚ 3rd   โ”‚ A+C+D+E โ”‚  2.179 โ”‚ 1.000 โ”‚ 0.000 โ”‚ 1.000 โ”‚ 0.312 โ”‚ 1.000 โ”‚  1.000 โ”‚  1.000 โ”‚ 1.000 โ”‚  0.459 โ”‚
โ”‚ 4th   โ”‚ A+C+D+F โ”‚  1.801 โ”‚ 1.000 โ”‚ 0.000 โ”‚ 1.776 โ”‚ 0.555 โ”‚ 0.555 โ”‚  0.555 โ”‚  0.555 โ”‚ 0.555 โ”‚  0.555 โ”‚
โ”‚ 5th   โ”‚ A+C+E+F โ”‚  1.539 โ”‚ 1.000 โ”‚ 0.000 โ”‚ 1.776 โ”‚ 0.555 โ”‚ 0.555 โ”‚  1.000 โ”‚  0.555 โ”‚ 0.829 โ”‚  0.650 โ”‚
โ”‚ 6th   โ”‚ A+D+E+F โ”‚  1.288 โ”‚ 1.000 โ”‚ 0.000 โ”‚ 2.291 โ”‚ 0.716 โ”‚ 0.260 โ”‚  1.000 โ”‚  0.716 โ”‚ 0.716 โ”‚  0.776 โ”‚
โ”‚ 7th   โ”‚ C+D+E+F โ”‚  1.000 โ”‚ 1.000 โ”‚ 1.000 โ”‚ 1.000 โ”‚ 1.000 โ”‚ 1.000 โ”‚  1.000 โ”‚  1.000 โ”‚ 1.000 โ”‚  1.000 โ”‚
โ”‚ 8th   โ”‚ B+D+E+F โ”‚  0.852 โ”‚ 1.000 โ”‚ 1.775 โ”‚ 0.000 โ”‚ 1.220 โ”‚ 1.573 โ”‚  1.000 โ”‚  1.220 โ”‚ 1.220 โ”‚  1.173 โ”‚
โ”‚ 9th   โ”‚ B+C+E+F โ”‚  0.689 โ”‚ 1.000 โ”‚ 2.288 โ”‚ 0.000 โ”‚ 1.573 โ”‚ 1.573 โ”‚  1.000 โ”‚  1.573 โ”‚ 1.220 โ”‚  1.451 โ”‚
โ”‚ 10th  โ”‚ B+C+D+F โ”‚  0.636 โ”‚ 1.000 โ”‚ 2.288 โ”‚ 0.000 โ”‚ 1.573 โ”‚ 1.573 โ”‚  1.573 โ”‚  1.573 โ”‚ 1.573 โ”‚  1.573 โ”‚
โ”‚ Rev   โ”‚ A+B+D+F โ”‚ -4.786 โ”‚ 1.000 โ”‚ 0.000 โ”‚ 0.000 โ”‚ 0.000 โ”‚ 1.573 โ”‚ -0.981 โ”‚  0.000 โ”‚ 0.000 โ”‚ -0.209 โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

That gives you, in one glance:

  • the transmission being analyzed
  • the tooth counts used
  • every gear state
  • the calculated ratio
  • the active elements for that state

When you enable speed display mode, the app can also print member-by-member speed tables, which is great for understanding what each sun, ring, carrier, or shaft is doing in each gear.

Real transmission examples included

The repository includes JSON-defined examples for transmissions such as:

  • Ford C4
  • Ford 10R80
  • ZF 4HP
  • ZF 5HP
  • ZF 8HP
  • Mercedes W5A-580
  • Mercedes W7A-700
  • Mercedes W9A-700
  • Allison 2000 series

That alone makes the package interesting to transmission enthusiasts, because names like ZF 8HP and Ford 10R80 immediately connect the tool to real production hardware.

How the model works

The universal solver is based on a generic transmission representation:

  1. Gearsets define each planetary set by tooth counts and member names.
  2. Clutches / brakes / sprags define the shift elements.
  3. Permanent ties define members that are always connected.
  4. Shift schedule states define which constraints are active in each gear.

The core then assembles the kinematic equations and solves the system.

Input JSON structure

1) Transmission spec JSON

The transmission spec describes the physical architecture.

Typical fields include:

  • name
  • input_member
  • output_member
  • strict_geometry
  • members
  • speed_display_order
  • speed_display_labels
  • gearsets
  • clutches or richer clutch schema
  • brakes
  • sprags
  • permanent_ties
  • display_order
  • state_aliases
  • presets
  • notes
  • meta

Example:

{
  "name": "Ford C4 3-Speed",
  "input_member": "input",
  "output_member": "front_carrier",
  "strict_geometry": false,
  "members": [
    "input",
    "front_ring",
    "sun",
    "front_carrier",
    "rear_ring",
    "rear_carrier"
  ],
  "gearsets": [
    {
      "name": "PG_front",
      "Ns": 33,
      "Nr": 72,
      "sun": "sun",
      "ring": "front_ring",
      "carrier": "front_carrier"
    },
    {
      "name": "PG_rear",
      "Ns": 33,
      "Nr": 72,
      "sun": "sun",
      "ring": "rear_ring",
      "carrier": "rear_carrier"
    }
  ],
  "clutches": [
    { "name": "forward_clutch", "a": "input", "b": "front_ring" },
    { "name": "high_reverse_clutch", "a": "input", "b": "sun" }
  ],
  "brakes": [
    { "name": "intermediate_band", "member": "sun" },
    { "name": "low_reverse_band", "member": "rear_carrier" }
  ],
  "sprags": [
    {
      "name": "sprag",
      "member": "rear_carrier",
      "hold_direction": "negative",
      "locked_when_engaged": true
    }
  ],
  "permanent_ties": [
    ["front_carrier", "rear_ring"]
  ]
}

2) Shift schedule JSON

The shift schedule describes what is applied in each gear.

Typical fields include:

  • states
  • display_order
  • notes

Rich-state example:

{
  "states": {
    "1st": {
      "active_constraints": ["forward_clutch", "sprag"],
      "display_elements": ["forward_clutch", "sprag"],
      "manual_neutral": false,
      "notes": "Drive 1st"
    },
    "2nd": {
      "active_constraints": ["forward_clutch", "intermediate_band"],
      "display_elements": ["forward_clutch", "intermediate_band"],
      "manual_neutral": false,
      "notes": "Drive 2nd"
    },
    "3rd": {
      "active_constraints": ["forward_clutch", "high_reverse_clutch"],
      "display_elements": ["forward_clutch", "high_reverse_clutch"],
      "manual_neutral": false,
      "notes": "Drive 3rd"
    }
  },
  "display_order": ["1st", "2nd", "3rd"]
}

This schema is practical because it lets you define:

  • traditional forward gears
  • reverse
  • manual ranges
  • rich display labels
  • neutral-like states when needed

Why the JSON approach matters

The JSON-driven architecture is the main selling point.

Instead of baking a Ford C4 solver, a ZF 8HP solver, and a 10R80 solver into separate piles of hardcoded logic, this app lets you reuse the same engine across many transmissions.

That means you can:

  • experiment with tooth counts
  • swap topologies
  • compare architectures
  • test candidate ratios
  • build reference cases
  • create your own transmission studies

CLI usage

Typical run:

python -m cli \
  --spec in/transmission_spec_ford_c4.json \
  --schedule in/shift_schedule_ford_c4.json

Show member speeds:

python -m cli \
  --spec in/transmission_spec_zf_8hp.json \
  --schedule in/shift_schedule_zf_8hp.json \
  --show-speeds

Solve one state only:

python -m cli \
  --spec in/transmission_spec_ford_10R80.json \
  --schedule in/shift_schedule_ford_10R80.json \
  --state 8th \
  --show-speeds

Use a preset:

python -m cli \
  --spec in/transmission_spec_zf_8hp.json \
  --schedule in/shift_schedule_zf_8hp.json \
  --preset base \
  --ratios-only

Override tooth counts from the CLI:

python -m cli \
  --spec in/transmission_spec_zf_8hp.json \
  --schedule in/shift_schedule_zf_8hp.json \
  --set P4.Ns=23 P4.Nr=85

GUI

A Dear PyGui frontend is included for interactive use.

Run:

python -m gui_core_trans

The GUI supports:

  • picking existing spec and schedule files
  • building new transmission specs
  • building new shift schedules
  • running the analyzer
  • browsing topology, payload, logs, and report outputs

Why someone else might care

This project can be useful for:

  • transmission enthusiasts
  • geartrain hobbyists
  • automotive engineers
  • students studying automatic transmissions
  • anyone reverse engineering planetary gearbox layouts
  • anyone who wants a reusable transmission kinematics sandbox

If you have ever looked at a ZF 8HP, Ford 10R80, or Mercedes 9-speed and wanted to understand the geartrain in a programmable way, this package is aimed directly at that kind of curiosity.

Current status

The app is already useful and interesting right now for universal planetary transmission studies.

It is especially good at:

  • solving real named automatic transmissions
  • printing attractive ratio tables
  • exposing member speeds
  • making transmission architecture data-driven instead of hardcoded

Roadmap ideas

Natural future upgrades include:

  • real universal support for Ravigneaux gearsets
  • compound architecture expansion
  • improved sprag behavior modeling
  • richer topology visualization
  • exportable reports
  • ratio comparison utilities
  • torque flow and power flow extensions

Disclaimer

This tool is a kinematic analyzer. It does not yet model:

  • clutch capacity
  • hydraulic controls
  • dynamic shifts
  • losses/efficiency
  • durability
  • thermal behavior

Use it as a topology-and-ratio engine, not as a full transmission design validation suite.

Summary

Gearsets is a universal planetary automatic transmission analyzer that turns JSON-defined topology and shift schedules into practical gear-ratio and member-speed results.

If production transmission names like Ford 10R80, ZF 8HP, Mercedes W9A-700, and Allison 2000 catch your attention, this repo gives you a programmable way to explore how those machines behave.

About

Python-based universal automatic transmission analyzer for planetary-gearset transmissions. Uses JSON-defined topology and shift schedules to solve gear ratios and member speeds, with clean tabular output for any speed automatics. Ravigneaux gearsets not yet supported.

Topics

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors