Files
willtools-demo/docs/eriksson-wall-method.md
T
will 8e6ee31596
ci / test (push) Successful in 6m18s
WillTools 2026-09-09 -- clean snapshot of the development repo for review
History-free snapshot of the private development repository at cbe45c5
(2026-09-09). Code, docs and public catalogue only; no plant or job
knowledge layers, no client or job names (tools/scrub.py clean). The
intro deck is left out of this snapshot because its slide images could
not be checked for job drawings.
2026-09-09 08:32:15 -05:00

26 KiB
Raw Blame History

Eriksson Wall — method & structure spec, and the gap to our code

What Eriksson Wall actually computes, reverse-engineered from six real output packages, so that tools/panelanalysis.py + the panelanalysis/1 deck schema can replace it. Part A is the spec; Part B is the concrete punch-list of what our code must add to reach parity, ordered by importance for a wall panel.

Scrub note. The packages carry a client, a developer, an engineering office, its address, job numbers, designer initials and per-run model (.ewf) filenames. None of those appear here. The samples are named only by their piece-mark / sheet labels, which are generic precast nomenclature:

label what it is (type, not identity)
WPA1.0 12" solid wall, non-prestressed, in-place only
WPA2.0 16" horizontal wall, prestressed, handling + in-place
WPA3.0 8" horizontal wall, non-prestressed, in-place only
WPA4.0 8" vertical (spanning) wall, prestressed, one unified handling + in-place run
SWA1.0 12" shear wall, non-prestressed
MWH1.0 8" prestressed wall, one file carrying several analysis units

Page cites are PDF page numbers written WPA4.0 p.10. Software on every run is Eriksson Wall v4.3.2, spec ACI 318-14, losses PCI Design Handbook 8th Ed. (The richer insulated-sandwich package studied earlier — call it WPB (v4.13.2) — is knowledge/library/notes/E1-wpb10-eriksson-package.md; this note reconciles against it and does not repeat its arithmetic proofs.)

Read: 2026-09-02, text layer via PyMuPDF, all six extract cleanly. Numbers below are transcribed as printed; anything image-only is flagged in §A.8, not guessed.


Part A — the Eriksson method & structure

A.1 The invariant section order, and the two-model split

Every Eriksson Wall run prints the same input blocks in the same order, then a results half whose sections depend on which stages were enabled. Confirmed identical across all six samples and WPB:

Project Information   materials (f'ci/f'c, Eci/Ec, unit wt, type; rebar fy/Es,
                      strand fpu/Ep), prestress-loss method + humidity + release/
                      erection times, exterior/interior soil, LOAD COMBINATIONS
Settings              deflection limit, 2nd-order + βd, R-value, stress options,
                      in-place stress limits, handling stress limits, flexure
                      options, resistance factors, development multipliers,
                      shear options, axial options   ← this page IS the method
Concrete Extents      panel geometry (top/bottom elevation, height, section
                      type, "top in form", miters, width, thickness), openings/
                      reveals/solid zones, then SECTION PROPERTIES (Area, Cx, Cy,
                      Izz, Iyy, Izy, Sb, St)
Structural Model      restraints (foundation + floor ties, each an elevation +
                      type + gravity/thermal restraint + stiffness), releases,
                      concentrated loads, load options, WIND loads, SEISMIC
                      loads, TEMPERATURE loads, SOIL loads, additional self
                      weight, structural sections
[handling runs] Handling  panel weight + CG, face lifters, edge lifters, then
                      per-stage Stripping / Transportation / Erection blocks
Reinforcement         strands / rebar / mesh / interrupts tables, plus a Strand
                      summary box (Aps, cgx, cgy, ex, ey) and a Mild box (As...)
------ results ------
[handling] Stripping (and Transportation/Erection if run):
                      Reactions (+ Tilt Potential) → Stresses table → Flexure
                      table → Shear table
[in-place] In-Place Strength Summary:
                      Reaction Forces → Flexure table → Shear table → Axial table
           In-Place Service Summary:
                      Tension table → Total Compression table → Deflection graph

Every page carries the header (Eriksson Wall v4.3.2 / Licensee: / timestamp) and footer (<file>.ewf / copyright / pg. n / N).

Handling and In-Place are two separate models of the same panel, and the two are NOT always in the same run. WPB ran them as separate .ewf files (one mild-only, one strand-only, each deliberately blind to the other's steel). WPA4.0 instead runs both in one file (§A.3/A.4) — strand credited in both. Which pattern you get is a per-job modelling choice, not an Eriksson rule. What IS invariant: the block order above, and that a handling result section only appears when that stage is enabled.

A per-file run can also contain several analysis units. MWH1.0 prints 2.1 In-Place Strength Summary and 4.1 In-Place Strength Summary (MWH1.0 p.1763, p.3260) — one document, multiple numbered runs. Our schema must tolerate a package that is a list of runs, not assume one.

Reconciliation with WPB's per-run order: identical. WPB additionally had Sandwich Panel Properties, Design Parameters (composite/non-composite section interpolation) and Horizontal Shear Analysis — those appear only for insulated sandwich panels. None of the six solid walls here print them (§A.7).

A.2 The checks Eriksson runs, with the method as printed

check where method / criterion as printed
Flexure handling + in-place `Util =
Shear handling + in-place ACI 318 detailed method: both Vci and Vcw printed side by side, Vc = min(Vci, Vcw), ϕVn = 0.75·Vc (verified: WPA4.0 p.11 Loc 5.51 → 154.5/206.1 = 0.75). bwd printed as one product (in²). ∞ printed for Vci at a zero-moment station. Settings: Shear Options: Treat as column, Use ACI 22.5.8.2.
Axial in-place only Columns Pu, ΦPn (C), ΦPn (T), ΦPcrit, Ag. ΦPcrit is the critical buckling load (∞ where slenderness does not bind). Settings: Axial Options: Ignore tensile strength failures, Ignore buckling failures (both defeat-able switches, both ON here).
P-M interaction in-place ΦMn is read off the interaction diagram at the station's Pu. The one-page summary prints an Interaction Diagram (Controlling Section @ 0.95L) (WPA4.0 p.9).
Service tension / cracking in-place extreme-fibre tension vs a Cracking limit = 7.5√f'c (= 580.9 psi at 6000, WPA4.0 p.15). Prestressed: Class U 7.5√f'c / Class T transition 12√f'c (WPA4.0 p.15 section view). Non-prestressed: a single Modulus of Rupture 7.5√f'c (SWA1.0 p.10).
Service compression in-place total compression vs Limit = 0.6 f'c (= 3600 psi at 6000, WPA4.0 p.16 / SWA1.0 p.17).
Handling stresses handling extreme-fibre tension vs 5√f'ci or 7.5√f'ci (per job, §A.6) and compression vs 0.6 f'ci (= 2100 at 3500), with an fci req column = the f'ci the station would need. This is the check that usually governs stripping (§A.3).
Deflection in-place vs L / 150 (or L/120, L/240 per job, §A.6). Graph only, no table.
Torsion — Eriksson Wall does not run torsion for a wall. No torsion table in any of the six. (WPB's torsion table came from Eriksson Beam, a different program, for a lintel.) Not needed for wall parity.

A.2.1 The Φ ramp (flexure) — development, not strain

Φ in every flexure table runs 0.75 → 0.90 with distance from the piece end (WPA4.0 p.10: 0.75 at 1.84 ft, 0.90 by mid-panel). It is ACI 318-19 §21.2.3: Φ = 0.75 from the end through the transfer length, linear 0.75→0.90 to the end of the development length, then 0.90 — not the c/dₜ strain transition. The transfer/development lengths are scaled by the Development Multipliers setting. WPB proved the mechanism (its own §4.1); these six confirm the ramp and pin the multiplier at 1.0 for all v4.3.2 runs (§A.6), where WPB used 1.3.

A.3 Handling stages

Two stages are ever enabled on these walls; a third exists and is off:

Stripping Transportation Erection (Primary/Secondary)
Load Multiplier 1.4 1.5 (WPB) — (never run in any of the six)
Concrete strength Initial (f'ci) In-Place (f'c) —
Stress limits Handling (§A.6) In-Place —
Lift Type Static Lift Static Lift —
Sling Angle 60° — —

Confirmed WPA4.0 p.7 (Stripping, mult 1.4, Initial, Handling limits, Static, 60°; Transportation/Erection "not being performed") and WPA2.0 p.853 (Stripping, mult 1.4). The multiplier is the equipment/dynamic factor; no strength-design load factor stacks on top of it (WPB §6: handling Mu = self-weight × the stage multiplier, nothing else).

PCI basis & rigging idealisation. The panel is idealised as a beam whose supports are the lifter lines, not dunnage. Lifters are entered as Face Lifters and Top-Edge Lifters, each a number of columns and lateral locations given as a fraction of panel width (WPA4.0 p.7: 2 columns at 0.207 from each side). The run prints:

  • Panel weighs X kips and its center of gravity is … (WPA4.0 p.7),
  • Reactions as Location | Vertical | Horizontal (k) per lifter line, with a Tilt Potential (deg) value (WPA4.0 p.10),
  • reactions are printed unfactored per lifter while the Stresses/Flexure moments are factored — the run says which is which.

The Stripping Stresses table (WPA4.0 p.10) is the governing handling check: Loc | Tension | Limit | Comp. | Limit | fci req | Mg | Aps | Losses | Pi | Mzi | Myi. Pi is the prestress force (negative = compression), Mzi/Myi the prestress moments about the two axes, Mg the stage moment.

A.4 The In-Place model

The panel is analysed as a member spanning between its restraints (a foundation connection + floor ties — WPA4.0 p.6 lists 5 restrained elevations) under lateral + gravity + axial demand.

Load cases applied (Structural Model, WPA4.0 p.6 / SWA1.0 p.12):

case how applied
Dead + Self weight self weight distributed; self-weight eccentricity from panel CG
Live, Roof as part of concentrated loads / tributary
Wind out-of-plane distributed, a W1…W4 table of Pressure and Suction magnitudes (psf), varying start→end over height (WPA4.0 p.6: 68/82 psf then 212/212 psf zones)
Seismic zone(s) over x/L, Cs as % of dead, applied to Deadload + Self weight
Earth / soil interior & exterior soil, elevation + surcharge; lateral pressure coefficient set in Project Information
Temperature exterior/interior °F + thermal-elasticity multiplier (out-of-plane thermal bow)
Concentrated axial P1/P2 … at an elevation with an eccentricity, split Dead/Live/Roof/Pres/Suct/Seis (SWA1.0 p.12: 139.6k D + 44.6k L each)

Load combinations (Project Information): the ACI 318-14 set with columns D L R W E T H, printed as Strength (8 combinations: 1.4D; 1.2D+1.6L+0.5R; … 0.9D+1.0W; 0.9D+1.0E — each with T at 1.0 and soil H at 1.6, Include=1) and Service (5–10 combinations, WPA4.0 p.4 shows 10; SWA1.0 p.10 shows 5). The result tables are headed All Combinations and each controlling section names its governing LC (e.g. WPA4.0 p.9 Flexure LC: LC 7 - 0.9D + 1.0W + 1.0T + 1.6H).

Second-order / slenderness. Settings 2nd Order Effects: P-Delta, Analysis βd: Non-Sway (all six). The restraints define the unbraced spans; the axial table's ΦPcrit is the buckling capacity; the summary prints a controlling P-M interaction section at 0.95L. (WPB additionally printed a Second Order Effects block with kL/r, 1st-order vs 2nd-order moment, % Increase.)

A.5 Service checks

  • Tension: Location | Tension (psi) | Cracking (psi) | M (k-ft) | P (k) (+ prestress Aps/Losses/Pi/Mzi/Myi). Cracking = 7.5√f'c. Prestressed runs classify each section Class U (≤7.5√f'c) / Class T (≤12√f'c) (WPA4.0 p.15). Non-prestressed use a single Modulus-of-Rupture 7.5√f'c.
  • Total Compression: Location | Comp. (psi) | Limit (psi) | M | P. Limit = 0.6 f'c = 3600 (WPA4.0 p.16, SWA1.0 p.17).
  • Deflection: graph vs allowable = the deflection limit (§A.6). A Δlim and Δmax also print in the one-page summary.
  • The controlling section for each prints a Section View block (section properties Ag/Cx/Cy/Izz/Iyy, θ, strand Aps/%Loss/ex/ey, the stress vs limit).

A.6 Settings / parameters Eriksson exposes (and the per-job variation)

The Settings page is the method statement. Verbatim-equivalent across the six, with the per-job values called out:

Deflection Limit        L/150 (WPA3, WPA4) | L/120 (WPA1) | L/240 (WPA2, SWA, MWH)
2nd Order Effects       P-Delta | Analysis βd: Non-Sway
Stress Options          Failure if cracked | Ignore Lateral Strand Eccentricity
                        | Use Principal Axis
In-Place Stress Limits  Tension 7.5 √fc (Uncracked / Class U) / 12 √fc (Transition
                        / Class T) | Compression 0.6 fc | Allowable Δfps 36 ksi
                        (non-prestressed prints one "Modulus of Rupture 7.5 √fc")
Handling Stress Limits  Tension 5 √fc (WPA1, MWH, WPB) OR 7.5 √fc (WPA2, WPA3,
                        WPA4) | Compression 0.6 fc          ← PER-JOB, both occur
Flexure Options         Method: Whitney Stress Block | Cracking Check: None
Resistance Factors      Developed:  Tension 0.90, Compression 0.65, Shear 0.75
                        Transferring: Tension 0.75
                        (values verified against the shear tables; the printed
                        grid's column order is ambiguous — see §A.8)
Development Multipliers  Strand Normal 1.0 | Debonded 2.0 | Cut 1.0 | Mild 1.0
                        (ALL v4.3.2 runs here; WPB v4.13.2 used 1.3 — PER-JOB)
Shear Options           Treat as column | Use ACI 22.5.8.2
Axial Options           Ignore tensile strength failures | Ignore buckling failures
Prestress Losses        PCI Design Handbook | Humidity 70 | Release ~8 hrs |
                        Erection 30 days
Materials               f'ci 2.5–3.5 ksi, f'c 6.0 ksi, 150 pcf normalweight;
                        strand fpu 270, Ep 28500; mild fy 60, Es 29000

A.7 Result presentation

  • Per-check tables, each preceded by a Legend, a Max/Min header block, a Summary Graph (x-axis in inches, 11 ticks 0→L) and a Summary Table.
  • Loc. always first, in feet, two decimals. Signs: sagging +, hogging −; a separate θ (deg) column carries the sense (0 sagging / 180 hogging). c prints an inch mark inside the cell.
  • Zero rows at the piece ends are printed, not suppressed (Φ, ΦMn, Aps all 0.00 there). ∞ where a quantity is genuinely unbounded. No colour, no FAIL flag — the verdict lives in the Max Utilization: header and the engineer's margin.
  • Station spacing ≈ L/20 plus a straddling pair at every geometric discontinuity; Section Properties at L/10 (11 rows).
  • A one-page summary (WPA4.0 p.9) collects, per stage: utilizations (shear/flexure/axial), controlling LC, Max Comp/Tension vs limit, and the P-M interaction diagram. This is the at-a-glance sheet an engineer reads first.
  • Column sets, exactly:
    • Handling Stresses: Loc | Tension | Limit | Comp | Limit | fci req | Mg | Aps | Losses | Pi | Mzi | Myi
    • Flexure (handling): Loc | Util | Mu | Φ | ΦMn | c | θ | As | A's | Aps | Loss | d
    • Flexure (in-place) adds Mcr | Pu | ΦPn (15 cols)
    • Shear: Loc | Util | Vu | ϕVn | Vc | Vs Req | bwd | Av Min | Vci | Vcw (Vci/Vcw handling only; in-place drops them)
    • Axial: Loc | Util | Pu | ΦPn(C) | ΦPn(T) | ΦPcrit | As | Aps | Loss | Ag
    • Service Tension: Loc | Tension | Cracking | M | P | (Aps | Loss | Pi | Mzi | Myi)
    • Service Compression: Loc | Comp | Limit | M | P | …

A.8 What Eriksson Wall does NOT do here (and what is image-only)

Not done for a solid wall — do not build to mimic:

  • No torsion (§A.2). No horizontal-shear / percent-composite / C-GRID interpolation — those are sandwich-panel sections (WPB only), absent from all six solid walls.
  • No in-plane shear-wall / diaphragm design. SWA1.0's in-plane shear (Vc1/Vc2, ACI 11.5.4/11.6, Vcmax = 10√f'c·h·d), overturning/uplift story-by-story spreadsheet, horizontal-joint shear-friction and corbel (PCI 5.3.1) are all hand Mathcad/spreadsheet sheets by the engineer (SWA1.0 p.4–8, p.18). Eriksson Wall itself only did SWA's out-of-plane bending + axial + service. Our tool replaces the Eriksson part, not these.
  • No minimum-reinforcement / Mcr floor (Cracking Check: None); Mcr is an informational column.

Image-only — flagged, NOT transcribed, needs image verification before any number is trusted:

  1. Resistance-factor grid (WPA4.0 p.4): the Developed/Transferring × Tension/ Compression/Shear cell placement extracts jumbled (0.9 / 0.75 / 0.65). The values 0.90/0.65/0.75 are verified against the shear tables and WPB p.71, but confirm the exact cell layout from the rendered page.
  2. Interaction (P-M) diagrams (WPA4.0 p.9, and each service Section View): plotted curves, axis values partially OCR'd — read from image if a numeric PM point is ever needed.
  3. Summary Graphs on every results section: the curve is an image; only the Summary Table beneath it is text. We rely on the table.
  4. Cover-sheet strand/reinforcing patterns and stripping-pick geometry (each p.1): dimensioned drawings — pick fractions (.104L / .291L) read as text but the layout is an image.

Part B — GAP analysis vs our current code

Scope of what exists today (tools/panelanalysis.py, panelanalysis_schema.py, schema panelanalysis/1, engine panellift): a self-weight handling beam solved on structural_model.supports (continuous beam, rigid supports), strand-only capacity (ΦMn, Mcr informational, ΦVn, f_se) at L/20 stations, section properties at L/10, a demand-vs-capacity table with M/ΦMn and V/ΦVn ratios, and every In-Place section rendered as an explicit NOT-BUILT placeholder. Legend of status: (a) covered · (b) partial/different · (c) missing.

Ordered by importance for a wall panel: flexure / shear / handling → in-place wind → service → the rest.

Tier 1 — handling & the capacity primitives (build first)

  1. (c) Handling STRESS check — the governing stripping check is not computed. Eriksson's Stripping Stresses table (extreme-fibre tension vs 5/7.5√f'ci, compression vs 0.6 f'ci, and fci req) is what governs stripping — and we compute ΦMn strength but never the service stress that actually controls. The settings block already carries tension_limit_sqrt_fc / compression_limit_ratio; nothing reads them. Add: extreme-fibre stress from (Pi/A ± Pi·e·y/I ± Mg·y/I) at each station, compared to the two limits, plus the fci req back-solve. Highest handling priority.

  2. (b) Handling is one self-weight stage; Eriksson runs staged multipliers. We have a single stage at loading.self_weight.load_factor. Eriksson runs Stripping ×1.4 @ f'ci with Handling limits and Transportation ×1.5 @ f'c with In-Place limits (and an Erection stage, off here). Add a handling.stages[] list, each with {multiplier, concrete: initial|in_place, stress_limits: handling|in_place}, and solve/report each. The engine already takes a per-stage fc_psi and multiplier.

  3. (b) Handling idealisation is dunnage, not lifters. Eriksson idealises stripping as a beam on lifter lines (Face + Top-Edge lifters at width fractions, sling angle, Tilt Potential, per-lifter Vertical/Horizontal reactions). We solve a beam on generic supports. panellift already models lifters/rigging — wire structural_model to carry lifter columns + lateral fractions and let the handling solve use the lift path, reporting reactions per lifter (unfactored) with moments factored, matching Eriksson's split.

  4. (c) Φ development ramp + development multiplier. Our Φ is a constant 0.90; Eriksson ramps 0.75→0.90 across the transfer→development length (ACI 21.2.3), scaled by the Development Multiplier (1.0 here, 1.3 on WPB). Our pci.development_length_in applies no multiplier. Add the ramp to Φ and to the effective Aps(x); expose development_length_multiplier in settings (already a field, currently unused). Materially changes near-end capacity.

  5. (c) Non-prestressed / mild-steel capacity path. panellift.capacity is strand-only — so WPA1.0, WPA3.0 and SWA1.0 (mild-reinforced walls) cannot be analysed at all today; the tool renders a "no prestress → not computed" box. Eriksson runs full flexure/shear/axial on mild As (with A's). Add a mild-steel flexural/axial capacity path. Unlocks whole panel classes.

  6. (b) Shear method. Confirm our ΦVn uses the Eriksson detailed Vci/Vcw method (Vc = min(Vci, Vcw), ΦVn = 0.75·Vc, bwd as a product, ∞ at zero-moment) and reports both columns for handling. WPB §4.6 found our d and √f'c-coefficient handling differed from Eriksson's — re-check against these tables and align, or document the deviation.

Tier 2 — the In-Place engine (the large missing piece, Stage 3)

  1. (c) Load-case engine. None of it exists. Build the cases of §A.4: self/dead, live, roof, wind (out-of-plane distributed Pressure + Suction, varying over height), seismic (Cs % of dead over x/L zones), soil (interior/exterior surcharge + lateral coefficient), temperature (thermal bow), and concentrated axial loads at an elevation + eccentricity. The loading.wind / loading.combinations fields are already unread placeholders waiting for this. The owner has named a wallanalysis Project Config module (wind speed, Kzt, ASCE edition, parameter table) as the input source — not built.

  2. (c) ACI 318-14 load combinations. The D L R W E T H 8 strength / N service matrix, envelopes per station, and the "controlling LC" naming. Prerequisite for everything in-place.

  3. (c) In-place flexure with axial (P-M interaction). In-place ΦMn is evaluated at the actual Pu on the interaction surface, with Mcr, Pu, ΦPn columns. Our flexure is pure bending, no axial. Add the P-M surface and evaluate demand (Mu, Pu) against it.

  4. (c) Axial check. ΦPn(C), ΦPn(T), and ΦPcrit (buckling) with utilization — entirely absent. Include the two "ignore tensile/buckling failure" switches from Axial Options.

  5. (c) Second-order / slenderness. P-Delta with non-sway βd, kL/r per restrained span, moment magnification, 1st vs 2nd-order % increase. Depends on the restraint model (next).

  6. (c) Restraint / span model. structural_model.restraints is an unread placeholder. In-place needs the foundation + floor-tie restraints (elevation, type, gravity/thermal, stiffness) to set spans for both bending and slenderness.

Tier 3 — service, then presentation & settings

  1. (c) Service checks. Tension vs cracking (7.5√f'c; Class U/T 12√f'c for prestressed; Modulus of Rupture for mild), total compression vs 0.6 f'c, and deflection vs the per-job limit (L/150 etc.). None built. Reuse the extreme-fibre stress primitive from item 1 with in-place loads/limits.

  2. (b) Settings coverage. Expose the full Settings page: in-place stress limits (7.5/12√f'c, Δfps 36 ksi), the resistance-factor matrix (developed 0.90/0.65/0.75 + transferring 0.75), stress options (Failure if cracked, Ignore Lateral Strand Eccentricity, Use Principal Axis), shear/axial options, cracking method. Our settings block is thin. Per-job values (handling limit 5 vs 7.5√f'ci; dev multiplier 1 vs 1.3; deflection limit) must be inputs, not constants — both values occur across the six.

  3. (b) Result presentation parity. Move from our single combined demand-vs-capacity table toward Eriksson's separate Stresses / Flexure / Shear / Axial tables with the exact column sets in §A.7 (θ, c, Loss, d, As, A's, Aps …), plus the one-page summary (per-stage utilizations, controlling LC, P-M diagram). Lower priority — arithmetic first, layout second.

  4. (c) Multi-run / multi-section packages. A deck must be able to carry several analysis runs (MWH1.0's 2.1/4.1) and Eriksson's optional Structural Sections (analysing sub-strips of the cross-section). Our schema assumes one panel/one run.

Explicitly NOT on the punch-list (scope guards)

  • Torsion — Eriksson Wall does not run it for a wall (§A.2). Do not add.
  • Horizontal shear / percent-composite / C-GRID — sandwich-panel only (WPB), absent from every solid wall here. Needed only when insulated panels enter scope; our code already marks it N/A for a solid section, which is correct.
  • In-plane shear-wall / diaphragm / corbel design — the engineer does this by hand (SWA1.0), Eriksson Wall does not, so neither must the replacement.
  • 1.2 Mcr floor / minimum-steel check — Eriksson has Cracking Check: None; keep Mcr informational (matches our current behaviour — do not "fix").

Reconciliation summary (this note vs WPB note)

item WPB (v4.13.2, sandwich) these six (v4.3.2, solid walls)
section/page order as §A.1 identical
handling/in-place split separate .ewf, mild-only vs strand-only either separate OR one unified run (WPA4.0); MWH multi-run
handling tension limit 5√f'ci 5√f'ci (WPA1,MWH) or 7.5√f'ci (WPA2/3/4) — per job
development multiplier 1.3 1.0 (all v4.3.2) — per job, confirms WPB open-Q #4
torsion from Eriksson Beam (lintel) none
horizontal shear / % composite yes (C-GRID sandwich) none (solid)
Φ ramp, Whitney block, Vci/Vcw, P-M, service limits, combos as §A.2–A.6 same method