Files
FluidSimCpp/CARB_PROGRESS.md

3.2 KiB

Carburetor work in progress

Resumed on 2026-10-23 to fix throttle-release crashes and remove scheduled pops. All changes are uncommitted. The historical results below predate that revision.

Current revision: bounded slide aperture to avoid negative roundoff near its seat; removed the hardcoded firing intervals and forced late spark. Exhaust combustion was subsequently removed at the user's request due to lag and limited audible benefit. Fuel remains transported through pipes without reacting. Cylinder combustion consumes air in proportion to burned fuel. Warm-running startup now seeds fuel in the intake, crankcase and cylinder. Pilot effective diameter is .40 mm with .08 base/.3 maximum idle slide opening. The revised transient passes: peak 12954 RPM, idle 2583 RPM, peak audio .0985.

Implemented

  • Added Carburetor, with effective pilot, needle and main jet restrictions.
  • Jet flow uses simulated air mass flow, air density, venturi dynamic pressure, static pressure drop, fuel density, discharge coefficients and float-bowl supply. It is not a cylinder-side target-AFR calculation.
  • Added wall-film deposition and evaporation during throttle transients.
  • Added fuel as a conserved transported species to pipe cells, boundaries, 0-D volumes, crankcase, cylinder and turbo internal transfers.
  • Carb fuel enters the intake plenum, then moves through the reed, crankcase, transfer pipe and cylinder with the simulated gas flow.
  • Cylinder heat release is limited by transported fuel, trapped oxygen and a basic 7:1--24:1 flammability window. Rich excess remains unburned.
  • Disabled electronic overrun fuel cut for the two-stroke. A deterministic sparse late-fire cadence overlaps exhaust-port opening to make separated coast-down bangs through the pressure/audio solver; no sound sample is mixed.
  • Added fuel conservation and downstream transport tests, carb bounds/cadence checks, transient firing-count checks, benchmark AFR columns and desktop carb labeling.

Last verified state

  • Before the final throttle-slide geometry change, the entire 10-test CTest suite passed.
  • That transient reached about 15,954 RPM, recovered to about 3,151 RPM, and produced 11 late firings in the first second after release with no clipping or pipe positivity repairs.
  • After replacing the old butterfly-area formula with a circular-segment slide aperture and reducing the idle slide calibration, the project and desktop rebuilt successfully and fluidsim_two_stroke_physics passed.

Current task / next step

The fluidsim_two_stroke_regression run after the slide-area change was stopped mid-run when work was paused. Run it first, then run full CTest. If idle recovery, mixture, or overrun firing count moved, tune idle_base_opening, idle_max_opening, and the effective jet dimensions in Carburetor.hpp. Re-run fluidsim_two_stroke_benchmark afterward and update the YZ125 verification numbers if the slide geometry changed them.

The most relevant files are:

  • include/FluidSim/Carburetor.hpp
  • src/carburetor.cpp
  • src/two_stroke_scenario.cpp
  • src/two_stroke_cylinder.cpp
  • include/FluidSim/Fluid.hpp
  • tests/two_stroke_physics.cpp
  • tests/two_stroke_regression.cpp