25592fa6c2
ci / test (push) Successful in 6m14s
History-free snapshot of the private development repository at 77a82eb. Code, docs and the public catalogue only: no plant or job knowledge layers, no client, job or producer names (tools/scrub.py clean against the widened term list; a second word-level grep clean). The intro deck is left out because its slide images cannot be checked for job drawings.
427 lines
26 KiB
Markdown
427 lines
26 KiB
Markdown
# 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 = |Mu|/|ΦMn|`. ΦMn from **Whitney stress block** (Settings: `Flexure Method: Whitney Stress Block`) on a P-M interaction surface at the actual `Pu` (in-place). Columns carry `c`, `θ`, `As`, `A's`, `Aps`, `Loss`, `d`. **Φ is not constant** — it ramps 0.75→0.90 down the table (§A.2.1). |
|
||
| **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)
|
||
|
||
7. **(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.
|
||
|
||
8. **(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.
|
||
|
||
9. **(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.
|
||
|
||
10. **(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.
|
||
|
||
11. **(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).
|
||
|
||
12. **(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
|
||
|
||
13. **(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.
|
||
|
||
14. **(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.
|
||
|
||
15. **(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.
|
||
|
||
16. **(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** |
|