Skip to content

Releases: swiftugandan/structural-workbench

Gusset Preview 20 — slabs in the model, SL01 worked example, member heatmap

Choose a tag to compare

@swiftugandan swiftugandan released this 09 Oct 11:54

Slabs in the model

A placed slab now shows in every model view, not only in its own design view (ADR 0035).

  • Drawn where it is. In the solid view the slab rests on the beams at its level: its soffit sits on their drawn tops, or at the column tops when columns alone carry it. In the lines view it sits at its support level, as line members do. The opening is drawn where the plate analysis cuts it. It used to be drawn in the middle of the panel.
  • One geometry source. Rust owns the outline, opening, placement and bearing. The plate solve and the drawing use the same function, so they cannot disagree.
  • Selectable. Clicking a slab opens it in Design objects. Nodes and members still win a click, and the opening is a hole. Picking follows the view: the drawn faces in solid, the support plane in lines.
  • Loads. With Loads shown, the slab's plate pressure appears as arrows, labelled "slab plate pressure, not a frame load". The frame carries it only through Apply column loads to the frame.
  • Visibility. A new Overlays → Slabs toggle. In a storey, layer or isolation view, a slab follows its columns.
  • Placement is its own input. The slab inspector gains Place in the model (corner X, Y and support level Z). It is saved, undoable and revision-aware, so a slab on beams can be placed without columns. Take columns from the model uses the saved placement.
  • Smaller fixes. The design-object heading no longer overlaps the canvas caption in model context, and design-inspector checkboxes sit on one line with their labels.

New worked example: SL01

Flat slab on a two-bay frame. An 8 × 6 m, 250 mm slab with a 1 × 1 m opening on nine columns and downstand beams, opened in 3D solid. Its columns are taken from the model, and its plate analysis's column loads (352.5 kN) are already applied to the frame in "Slab reactions", so Analyse gives frame results at once. Its own plate analysis solves 752 elements and balances the load. tools/make-slab-fixture.mjs writes it through the kernel with the UI's own commands, and the output is byte-for-byte reproducible.

It is drawn resting on its beams but analysed as a plate on column springs with free edges. plate-v1 has no line supports inside a panel, and the edge reactions of a slab on beams do not reach the frame. That coupling is a later slice.

Member action heatmap

Results → Member heatmap colours each member along its length by |N|, |Vy|, |Vz|, |My|, |Mz| or |T|. It uses the signed diagrams' global peak and a warm one-hue ramp, and labels each member's peak. The label sits where the peak occurs, using the same key-station rule as the model peak. Display only (PR #1).

Verification

  • On the release source: Rust workspace 369/369, node unit 77/77, security 2/2, contracts 14/14. check_package.py is clean and validates 22 model fixtures, SL01 included.
  • Browser, on a hardware GPU (Chrome WebGPU, macOS): the slab-panel, slab-plate, design-object, visibility, picking, explorer, CAD, results, warehouse, portal, steel, accessibility and graphics specs passed as each change landed (64 runs for the slab work, 17 for the heatmap). The SL01 journey passes.
  • The full browser suite and the all-gate corpus were not rerun for this release. Headless SwiftShader runs were unreliable on the build machine under unrelated load, so the hardware-GPU runs above stand in for them.

This is a prerelease preview. It makes no code-compliance or commercial-parity claim.

Published preview

The Pages workflow run passed and deployed. The live build.json source hash 3cce8e7c… matches the tested source. The live app serves SL01 and the Slabs overlay.

Gusset Preview 19 — new name, design demonstrations and the workspace shell

Choose a tag to compare

@swiftugandan swiftugandan released this 08 Oct 19:19

Gusset

The project is now called Gusset. The comparison target is described only as a neutral reference suite, and the repository no longer names any commercial vendor (ADR 0034). Disclaimers now read "Commercial-solver parity remains UNKNOWN", and parity rules are unchanged.

Design demonstrations since Preview 18

Each check is edition-labelled and marked "Demonstration, not a certified design".

  • M08 RC beam (EC2 + UK NA): cover, spacing, anchorage, crack and span/depth checks, verified against JRC89037. Gives a least-steel proposal and an indicative schedule. Gate 11/11.
  • M12 RC column: slenderness, imperfections, nominal curvature, shear with axial force and detailing on the biaxial kernel. Verified against JRC Column B2 and an independent oracle. Gate 12/12.
  • M11 pad footing: tensionless rigid-base contact, bearing, bending, tie force, shear and punching. Verified against JRC footing B-2. Gate 10/10.
  • M10 slab: per-element reinforcement maps from plate-v1 Wood–Armer moments, plus shear, span/depth and punching at internal columns. Gate 11/11.
  • M13 single-plate steel connection (AISC 360-22): ICR bolt groups and every single-plate limit state, verified against Design Examples II.A-17A/17B/19A. Gate 11/11.
  • M17 composite beam (AISC 360-22 Chapter I): construction and service stages, studs, and staged deflections with the Commentary shrinkage model. Verified against Design Examples I.1/I.2. Gate 12/12.
  • M16 detailing (sub-slices; parent still open):
    • EC2 Section 8 mandrels, link extensions and lap lengths, which reproduce the JRC tables within 1 mm.
    • Bar clashes at RC beam–column joints, with a new Joints pane (gate M16-JOINTS).

Workspace

  • One declarative shell (ADR 0033): the workspace fits and resizes at desktop and phone widths, with every view still reachable.
  • Design kinds are registry plug-ins. This replaces about 80 per-kind branches; joint clash advice uses entity labels instead of internal IDs.
  • Code and styles: design tokens and a layered stylesheet, session state in one observable store, and app.js split into focused modules.
  • Fix: member design results now read the session state instead of a shadowing local copy.

Verification

  • Each design slice passed its parent gate when it landed (counts above).
  • On the release source: Rust 364/364, node unit and security tests 65/65, contracts 14/14, and capability ledger unit 2/2 and browser 1/1. check_package.py is clean.
  • The full browser suite and all-gate corpus were not rerun for this release.
  • Evidence recorded before the rename still carries the gates' original artifact hashes. Artifacts whose text was renamed no longer match those hashes until their gates rerun (ADR 0034).

This is a prerelease preview. It makes no code-compliance or commercial-parity claim.

Published preview

Pages workflow run passed and deployed. The live release-manifest.json source hash f6a49955… matches the tested source. The live ledger, steel check and app bundles carry the new disclaimers.

Structural Workbench Preview 18 — test evidence routing

Choose a tag to compare

@swiftugandan swiftugandan released this 30 Sep 13:47

Test evidence routing

Preview 18 changes only the test harness. The app's behaviour is unchanged from Preview 17.

  • Full browser-suite runs no longer rewrite committed evidence. npm run test:regression runs the suite with every journey writing to the ignored test-results/evidence. After a full run, all 1,885 committed evidence files are byte-identical.

  • What was wrong:

    • 16 journeys set the shared evidence-folder variable when they loaded. Because the suite runs in one worker, the first to load redirected every later journey.
    • About 20 more journeys hard-coded their folders.

    Journeys now choose their folder locally and never change the environment.

  • Gate runs still direct every journey into the gate's own folder. The slab, column and steel screenshots now sit with their same-build gate records.

Verified publication

The Pages workflow (run) passed and deployed.

The live site (Build 0948888cbc35) was checked with an automated browser script:

  • Exchange: the IfcOpenShell-authored portal imported to the expected model hash, and the X-FRAME IFC export is byte-identical to the file IfcOpenShell validated.
  • Other checks: harmonic (1.6e-13), spectrum (3.1e-14), slab with an opening, and the 37° column all match.
  • No page errors.

The check used software WebGPU, so it is not hardware-GPU evidence.

  • Source commit 89ffe04. Source hash 0cfe0921… matches the tested source. Only the WASM binary differs from the local build.

Local corpus on the tested source:

  • All nine gates pass (M21, M07 parent and LTB, M09, M14, M22, M10-PLATE, M12-COLUMN, M15-RESPONSE).
  • Browser suite 125/126: the warehouse journey hit the known WebGPU-initialisation flake and passed on rerun.
  • Rust 283/283; unit and security tests 54/54.

This is a prerelease preview.

Structural Workbench Preview 17 — IFC4 and DXF model exchange

Choose a tag to compare

@swiftugandan swiftugandan released this 30 Sep 11:12

Model exchange: IFC4 and DXF (M21 accepted)

Preview 17 adds model exchange. M21 is accepted by its same-build gate (11 criteria). This is browser-only file exchange: there is no native Revit or other authoring-tool adapter, and no Prodesk equivalence.

  • Import IFC or DXF (landing page, or File menu).
    • What is read:
      • IFC4 (ISO 16739-1:2018) structural analysis models: nodes, members with their IFC axes, supports, member-end hinges, sections, materials, load cases, nested load groups, combinations, and point, linear and discrete loads;
      • ASCII DXF wireframes: lines and polylines, including rotated drawing planes.
    • Refused by name: IFC2X3 and IFC4X3.
    • Conversion review: it shows the file's units, what it holds, what cannot be imported, and every choice the import needs. Examples are units the file leaves undefined, spring supports, unknown combination purposes, skipped content, and DXF layer properties and supports. Nothing is preselected; Import waits until every choice is answered.
    • Mapping manifest: the answers can be saved as a manifest tied to the file's SHA-256, loaded again, or used from the command line (workbench-cli exchange import).
    • Conversion record: downloadable after import, with the mapping, the loss ledger and the model hash.
  • Export IFC / Export DXF (File menu).
    • IFC4 analysis models are written in SI units. IDs imported from IFC are written back. The workbench's own IFC re-imports to the same model.
    • DXF is written as an R12 line drawing in metres.
    • Each export lists what the file cannot carry: settlements, design data, mass sources, spectra and results for IFC; everything but geometry for DXF.
  • Independent verification:
    • A reference corpus written by IfcOpenShell 0.9.0 and ezdxf 1.4.4 covers:

      • mm/kN units with derived units and a rotated, translated placement;
      • feet/kips with undefined derived units, a spring support, missing end conditions and nested load groups;
      • a blocked file and a 2D model;
      • DXF drawings in rotated planes, and one without units.

      Each file imports to the oracle's SI model within 1e-9.

    • IfcOpenShell validates the workbench's IFC exports (schema and EXPRESS rules) and reads them back. ezdxf audits the DXF exports.

    • Every fixture model and the UKR01 building round-trip through IFC, and the second export is byte-identical.

  • Fixes:
    • A self-weight load's member order no longer changes the model hash.
    • The UKR01 example is now built identically on every platform. It used the platform's hypot, which is not correctly rounded; Linux CI caught the difference. The hosted and local examples/UKR01.json now match.
  • Known limitation: a member-end hinge at a node whose rotation is otherwise free (for example, a hinge at a pinned support) leaves that rotation with no stiffness. The solver refuses such models as unstable.
  • M22: multilingual reporting stays deferred, by decision.

Verified publication

The Pages workflow (run) passed the locked Rust tests, security, build and contract checks, and deployed.

The live site (Build 0b32c301b0c0) was checked with an automated browser script:

  • Exchange: the IfcOpenShell-authored portal imported with no decisions, giving the same model hash as a local CLI import. The X-FRAME IFC export, at the oracle's timestamp, is byte-identical to the file IfcOpenShell validated.
  • Previous checks: the harmonic sweep (1.6e-13), spectrum base shear (3.1e-14), slab with an opening (9.6e-13) and 37° column case all still match.
  • No page errors.

The check used Playwright Chromium with SwiftShader software WebGPU, so it is not hardware-GPU evidence.

  • Source commit 075390b. Source hash b50c2229… matches the tested source.
  • The hosted build is a Linux rebuild. Only the WASM binary now differs from the local build.

Local corpus on the tested source: the M21, M07, M09, M14 and M22 gates and the M10, M12 and M15 numerical-family gates pass; 283 Rust tests; 54 unit and security tests; full browser suite 126/126.

This is a prerelease preview.

Structural Workbench Preview 16 — dynamic response, slabs on columns, steel bracing points

Choose a tag to compare

@swiftugandan swiftugandan released this 30 Sep 07:45

Dynamic response (M15), slabs on columns (M10) and steel bracing points (M07)

Preview 16 adds the M15 dynamic-response numerical family, column supports for slab panels with a link to the frame model, and per-segment lateral-torsional buckling checks for steel members braced along their length. Nothing here is a code seismic or vibration check: code design spectra need a seismic standard (R-SEISMIC-CODE), and the M10, M12 and M15 parents stay blocked on their code resources.

  • Dynamic response (response-v1). Everything runs on the M14 modal model.
    • Harmonic response: steady-state sweeps with Rayleigh damping (entered as ratios at two frequencies, or as coefficients), solved by a sparse complex-symmetric LDLᵀ. Results include amplitude and phase plots and tables at any node.
    • Response spectrum: user-defined spectra (periods from 0, Sa in m/s² or g, stated damping), combined by SRSS or CQC. Results include base reactions, peak support reactions, member actions and displacements, with a mass-participation target.
    • A Response tab, a report section and schema 1.6.0 (responseSpectra). 1.5.0 projects migrate by version.
    • Validation:
      • Closed-form SDOF amplitude, phase and spectrum values, and SRSS and CQC on a shear frame, within 1e-9.
      • A spatial frame against OpenSees K and M solved in complex arithmetic, within 1e-6.
  • Slabs on columns (plate-v1).
    • Supports: a slab panel can sit on pinned, fixed or spring point supports.
    • Link to the frame model: the columns can be derived from the model (springs kz = EA/L and krx, kry = 4EI/L, or 3EI/L when the far end rotates). The column reactions can then be applied back to the frame as nodal loads.
    • Validation: a 12 × 10 m flat slab on six columns matches OpenSees ShellMITC4 with zeroLength springs within 1e-6 (deflections, moments and column reactions).
    • The link is one-way; it is not a coupled frame–shell model.
  • Steel bracing points (ADR 0024).
    • A member can be braced at points along its length. Each segment is checked with its own Lb and its own F1-1 Cb, taken from exact quarter-point moments. A segment ending at an unbraced free end takes Cb = 1.0.
    • AISC Example F.1-2B, modelled as one member braced at its thirds, reproduces the three-member model (Cb 1.46 / 1.01 / 1.46) within 1e-9.
  • Fixes:
    • Second-order analysis no longer double-counts member-load equivalents in the reactions. Member-load end moments now reach released (hinged) ends.
    • The package check passes again.

Verified publication

The Pages workflow (run) passed the locked Rust tests, security, build and contract checks, and deployed.

The live site (Build 23b9a004e7b9) was checked with an automated browser script:

  • Harmonic: a 41-point sweep matched the closed form within 1.6e-13.
  • Spectrum: the SRSS base shear matched the oracle within 3.1e-14.
  • Slab: the panel with an opening reproduced OpenSees within 9.6e-13.
  • Column: the 37° column case gave utilisation 0.8 at the oracle's M_Rd within 1e-9.
  • No page errors.

The check used Playwright Chromium with SwiftShader software WebGPU, so it is not hardware-GPU evidence.

  • Source commit 2564a05. Source hash c1d2a431… matches the tested source.
  • The hosted build 23b9a004… is a Linux rebuild. The same two files as in Previews 14 and 15 (the WASM binary and the generated UKR01 example) differ from the local build b53b4d67…; the cause is not established.

Local corpus on the tested build: the M07 parent and LTB, M09 parent, M14 parent, M10-PLATE, M12-COLUMN and M15-RESPONSE gates pass; 262 Rust tests; 54 unit and security tests; full browser suite 123/123. The publication JSON, the hosted build.json, the smoke result and screenshots are attached.

This is a prerelease preview.

Structural Workbench Preview 15 — slab plate analysis, RC column mechanics

Choose a tag to compare

@swiftugandan swiftugandan released this 29 Sep 18:34

Slab plate analysis (M10) and RC column mechanics (M12)

Preview 15 adds the numerical cores of M10 and M12. Both milestones depend on M08's concrete code profile, which stays blocked until EN 1992-1-1 A1:2014 and the UK NA + A2:2014 are held. Everything that needs code values is shown as UNSUPPORTED. Neither milestone is accepted yet; each numerical family passes its own gate.

  • Slab plate analysis (plate-v1).
    • Scope: slab drafts solve their own panel with a flat-shell element (Q4 membrane + MITC4). A panel is rectangular with at most one rectangular opening; each edge is free, simple or clamped, under uniform pressure.
    • Results: contour maps of mx, my, mxy, Wood–Armer design moments and deflection; equilibrium; clamped-edge line moments; a mesh-convergence indicator.
    • Validation:
      • Matches OpenSees ShellMITC4 to 1e-6 on identical meshes (including a 6 × 5 m panel with an opening).
      • Converges to the Navier solution at O(h²).
      • Reproduces Timoshenko's clamped-plate coefficients within 0.2 %.
    • Not yet available: reinforcement areas, punching and deflection limits.
  • RC column mechanics (rc-column).
    • Scope: a new RC column draft binds to a member. It checks the biaxial capacity M_Rd(N, θ) at every key station of the analysed case, from your material law and strain limits.
    • Results: an interaction diagram with the demand points, a station table and the calculation record.
    • Validation: 48 independent capacities within 1e-9.
    • Not yet available: partial factors, slenderness and minimum eccentricity.
  • Calculation record now includes slab plate and column runs.
  • Schema 1.5.0 adds slab plate inputs and the RC column draft type. 1.4.0 projects migrate by version.
  • Fixes:
    • Refused preview runs now keep their reason visible.
    • Untouched bar counts are no longer marked as user edits.

Verified publication

The Pages workflow (run) passed the locked Rust tests, security, build and contract checks, and deployed.

The live site (Build 353ad38b8b75) was checked with an automated browser script:

  • Slab: the panel with an opening reproduced OpenSees within 9.6e-13, with equilibrium 3.7e-13.
  • Column: the 37° case gave utilisation 0.8 at the oracle's M_Rd within 1e-9.
  • No page errors.

The check used Playwright Chromium with SwiftShader software WebGPU, so it is not hardware-GPU evidence.

  • Source commit 67aced0. Source hash 85f7d63f… matches the tested source.
  • The hosted build 353ad38b… is a Linux rebuild. The same two files as in Preview 14 (the WASM binary and the generated UKR01 example) differ from the local build e073e097…; the cause is not established.

Local corpus on the tested build: the M10-PLATE and M12-COLUMN gates pass; 240 Rust tests; 54 unit and security tests; full browser suite 119/119. The publication JSON, the hosted build.json, the smoke result and screenshots are attached.

This is a prerelease preview.

Structural Workbench Preview 14 — stability, modal analysis, studies, steel LTB

Choose a tag to compare

@swiftugandan swiftugandan released this 29 Sep 12:43

Stability, modal analysis, declarative studies and wider steel checks

Preview 14 accepts three more milestones (M09, M14, M22) and extends the AISC steel profile.

  • M09 elastic stability (stability-v1). A Stability tab runs elastic flexural buckling or linearised P-Δ-δ second-order analysis on one case or combination. It draws buckling modes and overlays the first- and second-order deflected shapes at one scale, and compares sway and base moments. Over-critical loads fail with a reason and no numbers. A critical factor is never a member resistance or code verdict.
  • M14 modal analysis (dynamics-v1). Projects declare mass sources: members' own mass, a load case's gravity loads ÷ g, or point masses. Nothing is implied and self mass is never counted twice. The Modal tab uses consistent or lumped mass and reports frequencies, periods and effective-mass participation. It states per direction whether a target is met and how much mass lies in omitted modes, draws modes, and exports a vibration report. Validated against closed forms and OpenSees to 1e-6.
  • Member end releases are independent hinge DOFs in buckling, second-order and modal analysis.
  • M22 declarative studies. Studies are strict JSON-pointer sweeps with budgets, cancellation, step-located errors, validation guards and a byte-identical replay identity. A new Study results tab and report accompany them.
  • Steel (AISC 360-22 LRFD).
    • Lateral-torsional buckling (F2.2) and noncompact-flange local buckling (F3-1) reproduce Examples F.1-2B, F.1-3B and F.3B.
    • Cb can be derived from the member's moment diagram (F1-1, 1.0 for a free cantilever end).
    • A per-member deflection criterion (L/n under a service case) is reported separately from strength.
    • Fixed: the standalone check credited noncompact-flange shapes (e.g. W14×99) with Mp.
  • Schema 1.4.0 adds mass sources and steel serviceability; 1.3.0 projects migrate by version.

Verified publication

The Pages workflow (run) passed the locked Rust tests, security, build and contract checks, and deployed. On the live site (Build 86c8dfbc912c) the oracle portal buckled at λ = 1.99997 (oracle 2, tolerance 1e-4). With mass declared through the UI, the modal portal's four frequencies agreed with OpenSees within 1e-6. There were no page errors. The check used Playwright Chromium with SwiftShader software WebGPU, so it is not hardware-GPU evidence.

  • Source commit 9b7d94a85c32bcc56d9ece5cc1f97c7f0e6240f0. Source hash deaa5248905a81bf… matches the tested source.
  • Hosted build 86c8dfbc912c… is a Linux rebuild. The WASM binary and the generated UKR01 example differ byte-wise from the local build (af96ae310eff…); the cause is not established.

Local corpus: parent gates M07, M07-LTB, M07-S, M09, M14 and M22 pass; 197 Rust tests; 14 contract tests; full browser suite 115/115. The publication JSON, hosted build.json and smoke result are attached.

This is a prerelease preview. M08 and the other remaining milestones need external standards and benchmarks.

Structural Workbench Preview 13 — EC2 beam checks (disabled profile)

Choose a tag to compare

@swiftugandan swiftugandan released this 28 Sep 14:27

Eurocode 2 beam checks (disabled profile) and the EC2 dossier

Preview 13 adds a Eurocode 2 (UK National Annex) beam profile. It is built from a clause dossier reconciled against published worked examples and shown for review in the RC beam preview and the calculation record. The profile is disabled: every concrete design result remains UNSUPPORTED.

  • Clause dossier. EN 1992-1-1:2004 (+AC:2008/AC:2010) flexure, shear and beam reinforcement limits, with EU-recommended and UK NA (2009) parameters side by side. Clauses were read from locked sources, and no standard text is reproduced. An independent oracle recomputes the JRC89037 beam example: all 18 published figures agree, and one publication error in the provided link area is confirmed.
  • ec2-uk-na profile (disabled). Covers flexure through the existing section-mechanics kernel, As,min and As,max, V_Rd,c, and V_Rd with vertical links (the strut angle is chosen in the permitted range), plus link minimum and spacing. It uses α_cc = 0.85 for shear (ADR 0015). Axial force, torsion and weak-axis actions are unsupported. Anchorage, serviceability, cover/spacing and amendment companions are always unsupported, so nothing can pass overall.
  • Schema 1.3.0.
    • RC beam drafts record their number of link legs; 1.2.0 files migrate to 2.
    • Tension-steel anchorage is recorded only when you confirm it explicitly. Unconfirmed, the shear check excludes that steel.
  • Preview and record. The new "EC2 checks · disabled" tab shows the checks at the governing sagging, hogging and shear stations of the bound combination. The calculation record reproduces them under the same "DISABLED PROFILE PREVIEW" banner, with exact SI values.
  • Solver fix. A model with exactly one free degree of freedom (for example a propped cantilever in planar mode) made the solver panic. It now solves directly with the same stability and residual checks.

Verified publication

The Pages deployment succeeded. On the live site (Build 1f4dae4e74fa), the B08 fixed-fixed beam was imported and migrated to schema 1.3.0 and analysed to Current. The RC beam EC2 tab showed the disabled-profile banner, M_Rd 275.316 kN·m and V_Rd 418.737 kN, which equal the independent oracles. The exported record carried the same M_Rd exactly (275316.01327551866 N·m). There were no page errors. This check used Playwright's bundled Chromium with SwiftShader software WebGPU, so it is not hardware-GPU evidence.

  • Source commit 3043f7a737657f8c7cbcd601904896fdc06b9a33. Source hash af64c9b572e8faa726777f4b3ec56ed57de573f8f667a4d86a4cd4fa0d7d4be1 matches the tested source.
  • Hosted build 1f4dae4e74fab7888fc24ccde1eb8ee10ce24831ef9fabc5f14fe36f923b04ba is a Linux rebuild, recorded separately from the local build e655b0071bb6e2a1ea6e43cffc9681391fae3ea0cdde130bdaa48a1c087fcf07.
  • Pages artifact SHA-256 8b739cfbeae383cee5efc9972b65d25609fc8d685c81146e562d1b9061db8c03.

Local corpus on the same source: both oracles, 124 native Rust tests, the wasm32 build, contracts, security, the steel-check unit test, and 27 browser tests across 11 specs. All passed. The publication JSON, hosted build.json and smoke screenshot are attached.

This is a prerelease preview. Enabling the EC2 profile requires EN 1992-1-1 A1:2014 and the UK NA+A2:2014, which are not held.

Structural Workbench Preview 12 — Eurocode 2 resource lock

Choose a tag to compare

@swiftugandan swiftugandan released this 28 Sep 12:50

Eurocode 2 resource lock

Preview 12 has no application change. The source hash is identical to Preview 11, so the app's behaviour is unchanged.

  • EN 1992-1-1:2004, incorporating the 2008 and 2010 corrigenda, is locked by SHA-256 as a private local reference for the Eurocode 2 clause dossier. It is a Public.Resource.Org rule-of-law posting with contested rights. The PDF is not included in the repository or the deployment.
  • The Eurocode resource blocker is partially cleared. The EC2 beam clause dossier (flexure, shear, reinforcement limits) can now proceed with the 2009 UK National Annex and the JRC worked examples. Enabling any concrete code check still requires A1:2014 and NA+A2:2014, so every concrete check remains UNSUPPORTED.

Verified publication

The Pages deployment succeeded.

  • Source commit 44193deb71025b365463edbb392c320f188ce206.
  • Source hash 4c945bca2b084060a97a1b482cb166216e1d5a434be250f03121c6475e40aa1f, identical to Preview 11.
  • Hosted build 20c35a944d1e90545d7b94c21375b20a386a3f309cd93ee5bcc43de1d9f8643b matches the Pages artifact 4ee98e1de5a4ef16c3e85b8f06912e0302dbf1da53c6de15050b3f414f9fc7be.

The browser verification recorded for Preview 11 applies, because the application source is unchanged. It was not repeated. The publication JSON and hosted build.json are attached.

Structural Workbench Preview 11 — RC beam section mechanics

Choose a tag to compare

@swiftugandan swiftugandan released this 28 Sep 12:43

Reinforced concrete beam section mechanics

Preview 11 adds code-agnostic mechanics to the RC beam workflow and carries it through to the calculation record.

  • Section mechanics in Rust. Strain-compatibility ultimate moment, and cracked and uncracked elastic properties for a rectangular section. Every material parameter is an explicit input with recorded provenance. An independent Python oracle supplies the expected values.
  • Separate top and bottom bar rows. Project schema 1.2.0, with 1.1.0 files migrating to equal rows. Sagging and hogging are evaluated separately, and each row gets a fit check.
  • Defined draft axes (ADR 0014). The width runs along member local y, the depth along local z, and the top face is local +z, so My < 0 is sagging. Bound drafts were previously drawn rotated 90° in the 3D view; that is fixed. When the top face points down in a member, the UI and the record warn rather than guess.
  • Model moments beside capacities. The governing sagging and hogging key-station moments of the bound member are shown for the one bound case or combination, with their simultaneous actions.
  • Service stresses. Cracked-section concrete and steel stresses under those moments, flagged when the moment is below the cracking moment.
  • Calculation record. The exported record now includes this section: section and bar rows, capacities, moments, stresses (exact SI), material-law provenance, limitations and the complete run.
  • The mechanics results pane now uses an equal two-column layout, and full reference-model browser tests have a documented timing budget.

This is mechanics, not concrete design. No partial factors, code limits or utilisation ratios are applied, and every concrete check remains UNSUPPORTED. The Eurocode 2 code profile (M08-B) is still resource-blocked.

Verified publication

The Pages deployment succeeded. In Chrome on an AMD WebGPU adapter, the hosted app (Build 06d9d4f7724e) imported the B08 fixed-fixed beam, analysed it to Current, and ran the model-sourced RC beam preview. It showed sagging 15 kN·m and hogging 30 kN·m, cracked concrete stress 1.21 / 2.42 MPa and steel stresses 4.84 / −23.99 and 9.69 / −47.97 MPa. All of these equal the independent oracle cases. Overall stayed UNSUPPORTED.

  • Source commit 37f4eb94fce66f228b9f3b16edf231e9f30d4545. Source hash 4c945bca2b084060a97a1b482cb166216e1d5a434be250f03121c6475e40aa1f matches the tested source.
  • Hosted build 06d9d4f7724ec0d0f0a1a83ced5fe9a07ed746d3d512cc0e865b7f77cd8d8fb8 is a Linux rebuild. It is recorded separately from the local macOS build b4da586e4d47a24f6466400b81eb3ff546d61e4e60915f3ff7d163510c125dc1.
  • Pages artifact SHA-256 898022f90c416f1578f978826d5ac1ad43f89ed2a210afc598f5701a91169a99.

Local corpus on the same source: 107 native Rust tests, contract and security tests, and 26 browser tests across 11 specs (design previews, design fidelity, migrations, M04 record, structure model, model coherence, residential reference, M06 release tour, native steel design, workbench, portal). All passed. The publication JSON, hosted build.json and browser screenshot are attached.

This is a prerelease preview. The full-release verifier remains blocked on unimplemented milestone gates. Known limitation: on the 642-member reference model, a design preview run spends about 1.5–2 s re-rendering (PERF-FULL-MODEL-RENDER).