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.
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.
- Gearsets documentation portal โ Main GitHub Pages documentation landing page
- transmissions package documentation โ API reference for the universal transmission analyzer
The transmissions documentation covers the package-level CLI, application layer, JSON I/O helpers, model objects, GUI builders, and core kinematic modules.
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:
- A transmission spec JSON describing gearsets, members, clutches, brakes, sprags, permanent ties, input, and output.
- 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
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.
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.
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
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.
- 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
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.
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.
The universal solver is based on a generic transmission representation:
- Gearsets define each planetary set by tooth counts and member names.
- Clutches / brakes / sprags define the shift elements.
- Permanent ties define members that are always connected.
- Shift schedule states define which constraints are active in each gear.
The core then assembles the kinematic equations and solves the system.
The transmission spec describes the physical architecture.
Typical fields include:
nameinput_memberoutput_memberstrict_geometrymembersspeed_display_orderspeed_display_labelsgearsetsclutchesor richer clutch schemabrakesspragspermanent_tiesdisplay_orderstate_aliasespresetsnotesmeta
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"]
]
}The shift schedule describes what is applied in each gear.
Typical fields include:
statesdisplay_ordernotes
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
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
Typical run:
python -m cli \
--spec in/transmission_spec_ford_c4.json \
--schedule in/shift_schedule_ford_c4.jsonShow member speeds:
python -m cli \
--spec in/transmission_spec_zf_8hp.json \
--schedule in/shift_schedule_zf_8hp.json \
--show-speedsSolve one state only:
python -m cli \
--spec in/transmission_spec_ford_10R80.json \
--schedule in/shift_schedule_ford_10R80.json \
--state 8th \
--show-speedsUse a preset:
python -m cli \
--spec in/transmission_spec_zf_8hp.json \
--schedule in/shift_schedule_zf_8hp.json \
--preset base \
--ratios-onlyOverride 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=85A Dear PyGui frontend is included for interactive use.
Run:
python -m gui_core_transThe 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
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.
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
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
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.
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.