Repository navigation
Mandate 2026-10-20: two-stroke, performance, knock, editing on the engine - #7
Merged
Merged
Conversation
The end gas the flame has not reached is followed from the seal, isentropic with a real cp(T), against Douaud-Eyzat's delay integrated from the spark, with its prefactor doubled: at 17.68 ms every catalogue engine with a knock limit, NA ones included, held 4-13 deg of retard behind its own map. The knock's intensity is the pressure the end gas adds. The ECU's knock control pulls the spark back in steps and gives it back at 1 deg/s. Boost no longer speeds the flame. The Audi I5 gets its intercooler, and the catalogue gate's absorber reaches 35 bar of BMEP. Woschni's combustion term, measured with this work, is backed out: it stalls lugged and launched engines the tests hold (journal 2026-10-23). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01FBmqGMLt8GmUG1aPYHCEVw
…hat flood The idle governor's gains were set on four-strokes. On the RD350, whose idle air passes the crankcase first, they hunt: a 5 s limit cycle, std 66 rpm with the lambda trim (which damps it) and 165 with it frozen. At half the proportional and integral gain the idle holds within 1,284-1,325 rpm. Designed carburetted 1-3 cylinder two-strokes do not idle at all: an open item-2 lead, recorded in the journal. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01FBmqGMLt8GmUG1aPYHCEVw
…gned twin Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01FBmqGMLt8GmUG1aPYHCEVw
The designer sized the pilot jet for an idle delivery ratio of 0.35, about eight times what a two-stroke idles on, so designed twins and triples flooded at idle and stalled. The pilot is now sized from the air the idle path passes at the crankcase's 20 kPa, and follows that path as the ECU's idle air (the slide's idle stop) opens, the way progression holes do; each carburettor's bypass goes with the cylinder it feeds, and the lumped pilot restriction is refitted on the same RD350 pair (0.026, a #35). Designed 1-4 cylinder engines idle at their 1,300 rpm. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01FBmqGMLt8GmUG1aPYHCEVw
…rame's mean speed A designed two-stroke twin could not be held at 3,500, 7,000 and 7,500 rpm. Those are where it fires at 117, 233 and 250 Hz against the 240 Hz frame: the absorber held EngineState::rpm, the speed at the frame's end with the firing ripple in it, which aliased into a 6-7 Hz wander the brake answered. The simulator now publishes frameAveragedRpm and the absorber holds that: held_rpm_stddev 2.3/6.6/2.6 -> 0.2/0.3/0.2 rpm, torque within 1 %. DynoSweepHarness --frame-hz moves the frame. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01FBmqGMLt8GmUG1aPYHCEVw
A power valve in the exhaust port's roof (YPVS and its kind): shut, the port opens later and is lower; a servo lifts it between two speeds. `two_stroke.power_valve_*` in YAML, JSON, the catalogue and scripts; EngineState::powerValveOpening publishes it. The designer fits one to sport two-strokes (12 deg later shut, lifting from 65 to 90 % of peak power speed): a designed 500 cc twin gains 20-39 % between 3,250 and 5,750 rpm and keeps its top end. The JSON reader now reads the scavenging loop length the writer already saved. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01FBmqGMLt8GmUG1aPYHCEVw
JUCE's modules are interface libraries that carry their sources, and the audio library linked four of them PUBLIC, so every executable linking audio compiled JUCE again: 130 of the tree's 390 compile units. They are now compiled once into EngineLabJuce, linked PRIVATE with their include directories (SYSTEM) and definitions re-exported, JUCE's own pattern for a shared module library; every target links it. Clean Linux build on 4 cores at -j 4: 14 min 46 s -> 6 min 08 s wall, 53 min 40 s -> 20 min 50 s CPU, 255 compile units. The per-unit JUCE warning exemptions go: no JUCE unit compiles under our warnings any more. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01FBmqGMLt8GmUG1aPYHCEVw
MSBuild compiles one project's units in series, so moving JUCE into one project put its heavy units on the Windows critical path: the CI build went from 25 to 32 min there while Linux went from 18 to 4.5. /MP2 on that project only, beside CI's two MSBuild nodes. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01FBmqGMLt8GmUG1aPYHCEVw
This reverts commit 2606c3d.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01FBmqGMLt8GmUG1aPYHCEVw
Run 98 ran out of compiler heap on two MSBuild nodes with run 96's green tree: the runner's memory, not the code. The build now resumes on one node when the log shows C1060, as .claude/CLAUDE.md prescribes, which rebuilds only what failed. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01FBmqGMLt8GmUG1aPYHCEVw
…, 6-into-1 - Every turbocharger is drawn, each on the collector of the path that drives it, and each opens its own inspector. - A liner or piston edits the compression ratio beside bore and stroke (setCompressionRatio; a chamber-geometry engine moves its deck), taken live. - A carburetted path's throttle is drawn as a carburettor (slide tower, float bowl) and its inspector jets every carburettor alike: main and pilot jets, needle clip, air screw (tuneCarburettor), taken live. Carburetted cylinders no longer draw or offer injectors. - The exhaust ports or a junction offer Joined: joinExhaustPaths copies the kept path's primary run for each cylinder of the other path into its collector, so a boxer six's banks become one 6-into-1 (restart). - Designer, checked on screen for the first time: its real-time check cranked carburetted two-strokes at full throttle, where they never catch; it now cranks shut until the engine runs. The name follows the engine until typed; the table's columns read Quantity and Value. All 89 tests pass on Linux; each change was checked in the app under Xvfb (journal 2026-10-23). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01FBmqGMLt8GmUG1aPYHCEVw
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Items 2-5 of the owner's mandate of 2026-10-20 (item 1, Linux, was merged earlier). Every measurement is in
docs/journal.md(2026-10-21 to -23); the priority list in.claude/CLAUDE.mdsays what is done and what is open.Two-stroke
frameAveragedRpm).Performance
EngineLabJuce): Linux CI build 18 -> 4.5 min. LTO and/MP2refuted.Knock
Editing on the engine (each checked on screen)
Tests
89/89 on Linux (
linux-gcc-release) at the head; CI run 100 green on both platforms, run 101 (head) checked before merge.Generated by Claude Code