Add American V8 preset, carb fuel transport, and adaptive desktop audio
This commit is contained in:
106
README.md
106
README.md
@@ -144,6 +144,59 @@ physical cell diameter and length. Compare exhausts with `--exhaust racing`
|
||||
this option. See [YZ125 verification](verification/YZ125_BASELINE.md) for the
|
||||
geometry, assumptions, speed sweep and remaining unloaded-RPM limitation.
|
||||
|
||||
## 1980s American V8
|
||||
|
||||
Choose **1980s American 5.0 V8** in the desktop menu, or run:
|
||||
|
||||
```sh
|
||||
./build-desktop/fluidsim_desktop --scenario v8 --scene field
|
||||
```
|
||||
|
||||
This is an estimated naturally aspirated 302-class cross-plane V8: eight
|
||||
101.6 x 76.2 mm cylinders, 7:1 compression, mild pushrod-style valve timing,
|
||||
1-5-4-2-6-3-7-8 firing order, 750 RPM idle target and 7000 RPM limiter
|
||||
(6750 RPM recovery). Crank/flywheel inertia is 1.1 kg m², versus the original
|
||||
.28. Eight unequal .60--.78 m headers feed two independent 1.5-litre bank
|
||||
collectors: cylinders 1--4 and 5--8. Each collector has its own 50 mm outlet
|
||||
pipe (1.8 / 1.95 m), and each outlet has a separate spatial audio emitter. A
|
||||
nominal 3000 kg five-speed car uses the existing clutch/gear controls.
|
||||
The V8 clutch has 1100 Nm capacity to shorten launch slip with the heavy
|
||||
flywheel and car; engagement remains progressive rather than forcibly locking.
|
||||
Final drive is approximately 3.624:1 (6.16 / 1.7), making gearing 1.7x taller
|
||||
than the previous setup: 1.7x road speed at the same RPM and selected gear.
|
||||
Throttle opening uses a 65 ms response and 2.3 travels/second limit; closing
|
||||
uses 160 ms and 1.4 travels/second for a slower release.
|
||||
The V8 uses the shared ideal EFI fuel dose with ECU throttle/idle control,
|
||||
ignition, overrun fuel cut and rev limiting. Its earlier carb setup has been
|
||||
removed. Independent exhaust banks retain their uneven cross-plane pulse
|
||||
spacing rather than blending both banks in a shared collector. Numerical
|
||||
diffusion in the pipe solver and audio filtering still limit high-frequency rasp.
|
||||
Dimensions and ignition/cam calibration are design estimates;
|
||||
the output is not a validated period engine dyno curve.
|
||||
|
||||
The intake uses one 70 mm inlet duct, one 65 mm throttle body and a shared
|
||||
4-litre plenum feeding eight 38 mm diameter, 12 cm runners (previously 30 cm).
|
||||
The revised mesh has 19 pipes and 190 cells, down from 310. Runner cells are
|
||||
6 cm long and exhaust cells approximately 5--6.5 cm long. This coarsening trades
|
||||
some high-frequency resolution for more real-time headroom.
|
||||
|
||||
The earlier lift-off slowdown came from the CFL timestep falling below the
|
||||
22.7 microsecond audio interval: the whole fluid network advanced almost twice
|
||||
per sample, doubling boundary solves and cell updates. The revised 16-second
|
||||
rev/coast benchmark stayed at one substep per sample and took .51--.57 wall
|
||||
seconds per simulated second here, including coast-down (previously up to
|
||||
1.28). It returned to 759 RPM with finite audio and zero pipe positivity
|
||||
repairs. The CFL limit remains enforced; other operating points may still
|
||||
require subdivisions. The desktop retains the 4x playback gain.
|
||||
|
||||
Benchmark or capture with:
|
||||
|
||||
```sh
|
||||
./build-desktop/fluidsim_scenario_benchmark 8 transient v8
|
||||
./build-desktop/fluidsim_scenario_benchmark 20 coast v8
|
||||
./build-desktop/fluidsim_audio_capture --scenario v8 --seconds 6 --throttle .3 --out /tmp/v8
|
||||
```
|
||||
|
||||
## Twin with a VZ21-size turbo
|
||||
|
||||
Choose **600 cc twin + VZ21-size turbo** in the startup menu, or bypass it:
|
||||
@@ -228,26 +281,50 @@ thermodynamics, crankcase and atmosphere state, profiled-pipe geometry,
|
||||
inertive and closed boundaries, gearing and clutch momentum transfer, finite
|
||||
runs for every scenario, and finite audio/reverb output.
|
||||
|
||||
## ECU and throttle control
|
||||
## Fuel and throttle control
|
||||
|
||||
Desktop playback has automatic gain enabled by default for every scenario.
|
||||
Press **G** to toggle it; the dashboard shows its state. It tracks stereo RMS
|
||||
and peaks after DC removal, lifting quiet idle audio gradually (1.5-second
|
||||
gain-rise time constant) and reducing gain faster for loud revs (30 ms).
|
||||
Extra gain is capped at 12x above the existing fixed 4x playback gain, with
|
||||
linked stereo peak protection. Silence does not request additional boost and
|
||||
underruns freeze the detector. Disabling smoothly returns to fixed playback
|
||||
gain. Simulation pressures and WAV capture levels are unaffected.
|
||||
|
||||
Both desktop engines use `Ecu` (`include/FluidSim/Ecu.hpp`). The desktop and
|
||||
CLI throttle values are pedal requests; the actual throttle is advanced every
|
||||
simulation sample, independently of rendering. Opening and closing use an
|
||||
80 ms first-order actuator response and a maximum travel rate of two full
|
||||
travels per second. An ideal butterfly's projected opening determines orifice
|
||||
area continuously; shaft obstruction and edge leakage are not modeled.
|
||||
travels per second. The four-stroke uses an ideal butterfly projection; the
|
||||
two-stroke uses the circular-segment aperture uncovered by a translating slide.
|
||||
Shaft obstruction and edge leakage are not modeled.
|
||||
|
||||
The ECU uses ideal sensors and direct access to trapped fresh-air mass at
|
||||
intake-valve closure to calculate each cylinder's fuel dose. This explicitly
|
||||
The four-strokes use ideal sensors and direct access to trapped fresh-air mass
|
||||
at intake-valve closure to calculate each cylinder's fuel dose. This explicitly
|
||||
permitted idealization replaces injector flow/duty-cycle and fuel-film models.
|
||||
The nominal AFR is 14.7, enriched progressively toward 12.8 above 70% throttle.
|
||||
Their nominal AFR is 14.7, enriched progressively toward 12.8 above 70% throttle.
|
||||
A PI idle controller targets 1800 RPM with filtered RPM feedback, bounded idle
|
||||
authority and anti-windup. Overrun fuel cut engages above 3500 RPM on a closed
|
||||
pedal and restores fuel below 2400 RPM to catch idle. The twin's rev limiter cuts fuel
|
||||
and spark at 10000 RPM, recovering below 9750 RPM. The two-stroke has no rev
|
||||
limiter; its idle, overrun and sensor-fault controls remain active. Invalid sensor readings
|
||||
inhibit fuel. A simple RPM-based ignition advance map is provided. An already
|
||||
burning charge completes combustion when a cut begins.
|
||||
and spark at 10000 RPM, recovering below 9750 RPM.
|
||||
|
||||
The two-stroke uses a simulated 38.1 mm slide carburetor instead of the EFI
|
||||
dose. Effective pilot, needle and main restrictions draw liquid fuel from a
|
||||
finite float bowl with the orifice relation `m_dot = Cd*A*sqrt(2*rho*delta_p)`.
|
||||
The jet pressure signal comes from simulated mass flow, local venturi dynamic
|
||||
pressure and the measured static pressure drop. A wall film deposits and
|
||||
evaporates fuel during transients. Delivered fuel is added downstream of the
|
||||
carb as a conserved species and travels through the plenum, reed, crankcase,
|
||||
transfer duct and cylinder. Combustion is therefore limited by the fuel and
|
||||
oxygen actually trapped, rather than receiving a cylinder-side AFR dose.
|
||||
|
||||
The two-stroke has no rev limiter and deliberately does not use electronic
|
||||
overrun fuel cut. On a high-RPM throttle lift, wet-wall and pilot fuel can pass
|
||||
through unlit cycles if the trapped mixture cannot ignite. Spark remains at
|
||||
the CDI timing; there is no scheduled overrun firing pattern. Unburned fuel
|
||||
is transported out through the exhaust without pipe combustion. No sound
|
||||
samples are mixed in.
|
||||
|
||||
All ECU parameters are accessible calibrations, not measured engine maps.
|
||||
There is no starter motor, automatic restart, knock sensor, lambda sensor,
|
||||
@@ -255,11 +332,14 @@ catalyst, cold-start temperature model or injector electrical model. Idle
|
||||
control can still stall under excessive load and does not impose crankshaft
|
||||
speed or add artificial sustaining torque. Existing combustion/thermal models
|
||||
remain approximations; ECU changes do not establish their physical accuracy.
|
||||
The two-stroke doses fuel after the last scavenging port closes, targets
|
||||
3000 RPM idle, and uses idle ignition trim in addition to throttle control. Its
|
||||
The two-stroke targets 3000 RPM idle and uses idle ignition trim in addition to
|
||||
throttle control. Its
|
||||
reed is a damped lumped cantilever model with finite opening time and seating
|
||||
contacts. Cylinder and crankcase moving-volume work use adiabatic energy changes.
|
||||
Reed material, combustion and controller parameters still require calibration.
|
||||
Jet dimensions are effective flow calibrations rather than measured Mikuni
|
||||
parts. Fuel uses the gas model after wall-film release; droplet size,
|
||||
atomization, evaporation heat and oil are not modeled. Reed material,
|
||||
combustion and controller parameters still require calibration.
|
||||
C# trace parity is intentionally changed by these control and physics changes.
|
||||
|
||||
VS Code's default build task builds the desktop through CMake. Use
|
||||
|
||||
Reference in New Issue
Block a user