Repository navigation
fix(layout): reserve clear nozzle exits and recover blocked routing projections - #562
Merged
Merged
Conversation
…ction Regenerates the gallery for 01, 10 and 18 and the 18 golden: in each, a reactor outlet moves from the floor to a shell wall. Refs: #355
9 tasks
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.
Summary
Stops automatic layouts from drawing a stream through equipment when a nozzle's exit is blocked. The router now recovers a reachable exit, default routing undoes the row alignment that seals one, and vertical reactors can discharge from a shell wall.
Related Issues
Closes #355
Refs: #547
Changes
route-crosses-unit.refine_exitsto default routing: when ablocked-exitconflict remains, re-lay the sheet with the two units left unaligned and keep the result only if hard conflicts fall. At most three rounds; pinned units never move.defaultandplainreactor bodies east and west outlet placements beside the floor outlet.scripts/route_quality.py, since a sealed stream is drawn without a search.docs/gallery/for 01, 10 and 18 andtests/golden/18_fixed_bed_recycle.svg: in each, a reactor outlet moves from the floor to a shell wall.Not included: side outlets on the jacketed and mixing reactor bodies, and exit repair on sheets placed equipment-first (free valve stations).
How to Test
Run the focused tests:
Run the complete suite and static checks:
python3 -m pytest -q python3 -m ruff check . python3 -m ruff format --check tests python3 -m mypy pandid python3 -m pyright pandidMeasure the corpus with pins stripped and confirm no stream is listed as drawn by the fallback:
Evidence
Measured on 46 drawings: the 21 shipped sheets as authored and with pins stripped, plus the four biodiesel variants in
tests/_layout_cases.py.mainat17d32b3route-crosses-unit11473 passed, 188 skipped. Ruff, mypy andgit diff --checkare clean; pyright reports 0 errors and the existing__all__warning.21_alumina_refinerygains four crossings (65 → 69) in exchange for two fallback routes and fourroute-crosses-unitfindings.run-off-elevationwarning: R-101's east outlet sits 2.3 px off S-101's feed.scripts/layout_compare.pyhas no review file for this change, so its release gate is not evaluated here.21_alumina_refinery(pins stripped),01_ammonia_loop,10_ethanol_pfd,18_fixed_bed_recycle.Checklist
mainand the branch is mergeable