WillTools 2026-09-09 -- clean snapshot of the development repo for review
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.
This commit is contained in:
2026-09-09 08:35:15 -05:00
commit 25592fa6c2
406 changed files with 223435 additions and 0 deletions
+657
View File
@@ -0,0 +1,657 @@
# Eriksson Wall — authoritative algorithms (from the reference tool's QC document)
The **authoritative** source for our Panel Analysis parity work. Every formula,
sign convention, coefficient, threshold and code clause below is transcribed
from the reference tool's own *Quality Control Document* (Program Version 4.x,
`Spec: ACI 318-14, PCI Design Handbook 8th Ed.`), which states HOW the tool
computes each check and proves it against independent Mathcad hand calculations.
Where this document and `docs/eriksson-wall-method.md` (inferred from sample
outputs) disagree, **this file wins** — see §"Corrections to the inferred
spec". Where the QC doc is silent on something the inferred spec asserts, that
is called out too.
**Scrub note.** This is generic ACI 318-14 / PCI 8th-Ed. methodology. All
client / project / licensee / job / designer identifiers and the vendor's
proprietary-license text are omitted; the reference tool is named only "the
reference tool". Product-type labels (solid / sandwich / hollowcore) are
methodology, not identity, and are kept.
**How the QC doc is built (so cites are checkable).** Three worked examples,
each = (a) a results-comparison table, (b) the tool's own report, (c) a Mathcad
hand-verification that spells out the equations:
| ex | panel type | steel | stages run | QC-PDF Mathcad pages |
| --- | --- | --- | --- | --- |
| **Ex.1** | insulated sandwich | prestressed strand | Stripping + In-Place | p.26–38 |
| **Ex.2** | solid wall | mild rebar + WWR mesh | In-Place (+ P-Δ) | p.70–76 |
| **Ex.3** | hollowcore | prestressed strand | Stripping / Transport / Erection + In-Place | p.133–145 |
Cites are **QC-PDF page numbers**, written `QC p.37`. The Mathcad equations
extract as text but their 2-D operator/operand order scrambles in extraction;
every equation below was **reconstructed by reproducing the Mathcad's own
printed numeric result**, so it is the algorithm, not a raw glyph dump. Anyone
changing code off a formula here should still glance at the rendered PDF page.
---
## 1. Handling extreme-fibre STRESS check (governs stripping)
**This is the check that governs stripping and it is a service-stress check,
not a strength check.** Reference: QC p.38 (Ex.1 §8 "Stress"), QC p.136 (Ex.3
§3 "Service / Stripping Stresses").
### 1.1 Extreme-fibre stress equation (exact form + signs)
Compression taken **positive**. At each station, for each face:
```
f_top = (P / A) + M_applied / S_t − M_pi / S_t
f_bot = (P / A) − M_applied / S_b + M_pi / S_b
```
where
- `P` = total axial precompression at the section = `Pi + P_applied`
(`Pi` = effective prestress force after losses = `Aps·(%pull)·fpu·(1 − loss)`;
`P_applied` = any applied axial, e.g. self-weight component). Prestress is a
**compression** on the section.
- `M_applied` = applied moment at the station (`Mg`, the stage/self-weight
moment for handling; the load-combination moment for in-place).
- `M_pi` = prestress moment = `Pi · e`, `e` = strand eccentricity from the
section centroid (`ey.eff` in the Mathcad). Its sign is **opposite** to
`M_applied` on each face (it relieves tension on the strand side).
- `S_t`, `S_b` = section moduli to top / bottom fibre.
Verified numerically, QC p.38 (Ex.1, midspan): `Pi = 196.10 k`, `A = 504 in²`
→ `P/A = 389 psi`; `P_applied/A = 105 psi`; `M_applied/S = 9.5 psi`;
`M_pi/S = Pi·e/S = 66.3 psi` → `f_top = 389+105+9.5−66.3 = 436.9 psi`,
`f_bot = 389+105−9.5+66.3 = 550.4 psi` (matches printed 436.88 / 550.43).
Compact form (the `Pi/A ± Pi·e·c/I ± Mg·c/I` shape the punch-list asked to
confirm): **yes** — `f = Pi/A ± Pi·e·c/I ∓ Mg·c/I`, with `c/I = 1/S` for the
face in question, prestress-bending term and applied-bending term carrying
**opposite** signs on any one face.
Hollowcore form, QC p.136, e≈0: `σc = Mg/S_t + Pi/Ag + Pi·e/S_t = 396.2 psi`
(same equation, compression positive).
### 1.2 Which `Pi` — losses feeding the handling force
`Pi` at handling uses the **initial** (at-release / short-term) loss set, not
the final. Ex.1 prints `%loss Initial ≈ 2.04%`, `%loss Final ≈ 9.64%`
(QC p.14); the stripping-stress table uses per-station losses that build from
release values (QC p.14 loss column 0.43→2.04). See §8 for the loss method.
### 1.3 Transfer-strand-force reduction near ends / discontinuities
At a section within the strand transfer/development length, or on either side
of an opening, the tool credits only the **developed** strands. QC p.136 (Ex.3,
stress at a 10-ft opening): "*Strand not fully developed on both sides*" — only
**4 of 12** strands counted, `Pi` reduced accordingly. So `Aps` (hence `Pi`)
in the stress equation is the **effective developed area at that station**, not
the full jacking area. Development length: §9.
### 1.4 Limits (WHEN each applies) and the `fci req` back-solve
Handling stress limits (QC p.134 Ex.3 §1.5; QC p.7 settings; verified against
the tables):
| limit | value | code basis |
| --- | --- | --- |
| **Handling tension** | `σti.lim = k·√f'ci` with **k = 5 or 7.5 (per-job SETTING)** | ACI 318-14 at-transfer tension (24.5.3.2 family) |
| **Handling compression** | `σci.lim = 0.6 · f'ci` | ACI 318-14 §24.5.3.1 (at transfer) |
- **k = 7.5** in both QC examples that ran handling: `7.5·√3500 = 443.71 psi`
(Ex.1 QC p.17 limit column; Ex.3 QC p.134 `σti.lim = 443.71 psi`).
The setting also allows **k = 5**; it is a job input, never a constant.
- Compression: `0.6 · 3500 = 2100 psi` (QC p.17, p.134). Applied at **`f'ci`**
(release strength), because handling is at the "Initial" concrete strength.
- **Which f'ci / which strength stage:** Stripping runs at `Concrete Strength:
Initial` (`f'ci`) with `Stress Limits: Handling`. Transportation and Erection
run at `In-Place` (`f'c`) with `In-Place` limits (§7 stages).
**`fci req`** (the report's extra column) = the `f'ci` the station **would
need** for its computed extreme-fibre stress to just meet the limit. Back-solve
from whichever limit governs: for a tension-governed station,
`f'ci_req = (f_tension / k)²`; for compression, `f'ci_req = f_comp / 0.6`.
(Ex.1 QC p.17: at 3.00 ft, comp 551.5 psi → `551.5/0.6 = 919.1` = printed
`fci req`.)
---
## 2. φ resistance-factor for flexure (the "0.75→0.90" ramp)
**The reference tool derives φ for flexure from the ACI 318-14 strain-based
tension/compression-controlled transition (Table 21.2.2 / §21.2.2.2), NOT from
a transfer-length→development-length interpolation.** This is a correction to
the inferred spec — see §"Corrections".
### 2.1 Prestressed strand (Ex.1 QC p.33, Ex.3 QC p.141/145)
```
φ = 0.90 if ε_ps ≥ 0.005
φ = 0.65 + 0.25·((ε_ps − ε_i − ε_ty)/(0.005 − ε_ty)) if ε_ty < ε_ps < 0.005
φ = 0.65 if ε_ps ≤ ε_ty
```
- `ε_ps` = total strain in the extreme tension strand at nominal (from strain
compatibility, §4).
- `ε_i` = initial strand strain `= (%pull·fpu)/Ep` (≈0.0070); `(ε_ps − ε_i)`
is the **net tensile strain beyond the effective prestrain** — this is the
quantity ACI uses.
- `ε_ty` = 0.002 (ACI 318-14 §21.2.2.2, prestressed steel yield strain).
- Cite: "*per ACI 318-14 Table 21.2.2*".
### 2.2 Mild reinforcement (Ex.2 QC p.75)
```
φ = max(0.75, min(0.90, 0.75 + 0.15·((ε_max − ε_ty)/(0.005 − ε_ty))))
ε_ty = min(fy, fy_WWR)/Es = 0.002
```
Note the **floor is 0.75** here (spiral-member form), vs **0.65** in the
prestressed examples. The reported compression-controlled resistance factor
setting is 0.65 (§10). This 0.75-vs-0.65 floor split is an inconsistency in the
QC doc itself — **FLAG, verify against the vendor / a report flexure table**
before hard-coding the mild-steel floor. Both forms cite ACI 318-14 Table
21.2.2.
### 2.3 What the QC doc does and does NOT settle about the length ramp
- The reports show φ running **0.75 → 0.90 down the panel** (inferred-spec
§A.2.1). The QC Mathcad only evaluates **fully-developed midspan** sections,
where φ = 0.90, so it does **not** independently derive the near-end ramp.
- The near-end reduction is consistent with **reduced developed strand**
(§1.3, §9) feeding the *same* strain-based formula (fewer/less-stressed
strands → smaller `ε_ps` → lower φ), plus the **transferring tension factor
0.75** (§10) that applies where strand is still transferring.
- **FLAG / open reconciliation:** the QC doc neither states nor rules out an
explicit ACI 318-19 §21.2.3 transfer→development φ interpolation. Treat the
strain-based Table-21.2.2 formula as authoritative for φ *at a section*; treat
the along-length ramp as an emergent effect of development, and confirm the
exact near-end rule against report tables rather than inventing a 21.2.3 ramp.
---
## 3. Shear — Vci / Vcw (detailed method) and the non-prestressed path
Two distinct methods; which one is used depends on whether the section is
prestressed.
### 3.1 Prestressed sections — PCI detailed Vci / Vcw (Ex.1 QC p.37)
```
Vci.1 = 0.6·√f'c·(bd) + Vu·Mcre/Mmax (PCI eq 5-25)
Vci.2 = 1.7·√f'c·(bd) (PCI eq 5-27) [floor]
Vci = max(Vci.1, Vci.2) (ACI 318-14 §22.5.8.3.1)
Vcw = (3.5·√f'c + 0.3·fpc)·(bd) (PCI eq 5-28)
Vc = min(Vci, Vcw)
ϕVn = ϕv · Vc, ϕv = 0.75
```
- **√f'c in psi**, results in the printed force units; `(bd)` is the shear area
as **one product** (see below).
- `Mmax` = factored moment at the station (`Mend` in the Mathcad). At a
**zero-moment station `Mmax → 0`**, `Vci.1 → ∞`, so `Vci = ∞` and
`Vc = Vcw` — this is the `∞` printed in the Vci column (QC p.15, p.18).
- **Cracking moment** feeding Vci.1:
```
Mcre = S_t · (6·√f'c + fpe) (PCI eq 5-26)
```
`fpe` = extreme-fibre compressive stress due to effective prestress at the
section (0 where strand undeveloped). `f'c` in psi.
- **`fpc`** = concrete compressive stress at the section centroid due to
effective prestress + any axial, at the level used for Vcw
(QC p.37: `fpc = [Pi·(1−loss_end) + Rsw] / A_eff`).
- **Shear area `bd`** (printed as one product, in²):
```
dv = 0.8 · th (ACI 318-14 §22.5.8.3.1 / §22.5.8.3.2)
bd = W·dv (− insulation·W for a sandwich) → e.g. 422.4 in² (QC p.37)
```
- **`Av Min`** column: minimum shear reinforcement per ft; 0.000 here (no ties
required, `Vu ≪ ϕVn`).
### 3.2 Non-prestressed sections — ACI one-way Vc (Ex.2 QC p.76)
```
Vc = 2·λ·(1 + Nu/(2000·Ag))·√f'c·(bwd) (ACI 318-14 eq 22.5.6.1)
Vc.min = (4/3)·λ·√f'c·Ag (gross-area term)
ϕVn = ϕv · max(Vc, Vc.min), ϕv = 0.75
```
- `Nu` = factored axial **compression** (raises Vc); `Ag` = gross area.
- `bwd` = `dv·W`, with `dv = weighted (Tb·d_bar + Twwr·d_mesh)/(Tb+Twwr)`
(QC p.76: `dv = 4.12 in`, `bwd = 395.68 in²`).
- **`max`, not min:** QC p.76 takes `ϕv·max(Vc, Vc.min)` = `0.75·72.41 = 54.31 k`
even though `Vc.min` (72.41) > `Vc` (56.92). Transcribed verbatim; the
labelling is the vendor's. **FLAG** if a parity run diverges here — confirm
whether "min" is a floor taken as max, against a mild-wall shear table.
---
## 4. Flexure — φMn via Whitney block on the P-M surface
Reference: QC p.32–35 (Ex.1, strand), QC p.75 (Ex.2, mild), QC p.140/144 (Ex.3).
Settings: `Flexure Method: Whitney Stress Block`, `Cracking Check: None`.
### 4.1 Whitney block β and depth
```
β1 = 0.65 if f'c ≥ 8 ksi
β1 = 0.85 − 0.05·(f'c − 4ksi)/1ksi if 4 ksi < f'c < 8 ksi
β1 = 0.85 if f'c ≤ 4 ksi (ACI 318-14 Table 22.2.2.4.3)
a = β1 · c
C = 0.85 · f'c · a · W (concrete compression, rectangular)
```
Note handling stages evaluate β1 on **f'ci** (QC p.140 uses `if f'ci ≥ 8ksi …`),
in-place on **f'c**.
### 4.2 Strain compatibility (how axial enters) and Aps/fps development
Neutral axis `c` is solved so that **ΣForces = 0 including the factored axial
`Pu`**:
```
C − Pu − ΣT_strand = 0 (prestressed, QC p.33)
C − ΣT_steel = 0 (mild, no net axial, QC p.75)
```
so **axial `Pu` shifts `c`** and therefore `ΦMn` — this is the P-M coupling.
Per-layer strand strain from plane sections:
```
ε_ps,layer = (ε_c · d_layer / c) − ε_c + ε_se ε_c = 0.003
ε_se = fse/Ep (effective prestrain after losses)
```
Strand stress — **PCI design aid 15.2.3** (power formula, 270 ksi low-lax):
```
fps = Ep · ε_ps if ε_ps ≤ 0.0085
fps = fpu − 0.04ksi/(ε_ps − 0.007) if ε_ps > 0.0085
```
(Ex.3 writes the `0.007` as a derived `Coeff = 0.0054` from `fpu, fpy, ε_se`;
same curve. Capped at the ACI 318-14 Table 22.2.2.4.3 limits.)
Mild steel: `fs = min(Es·ε, fy)` per layer (rebar and mesh separately, each with
its own `fy` — mesh `fy_WWR = 65 ksi`, rebar `fy = 60 ksi`, QC p.75).
`Aps` at the station is the **developed** area (§9); undeveloped strands are
dropped (QC p.136).
### 4.3 Nominal and factored moment (moments about section centroid)
```
Mn = C·(c − a/2) − ΣT_layer·(c − d_layer) − Pu·(c − Cy) (QC p.33)
ΦMn = φ · Mn (φ from §2)
Util = |Mu| / |ΦMn|
```
For a **partially composite** (sandwich) section only, `Mn` and `ΦMn` are the
**linear interpolation** between the non-composite and fully-composite runs at
the user `%composite`: `Mn_eff = Mn_nc + %comp·(Mn − Mn_nc)` (QC p.35). Solid
and hollowcore walls do **not** interpolate.
`ΦMn` reported in-place is read on the **P-M interaction surface at the actual
`Pu`**; the report prints an Interaction Diagram at the controlling section
(QC p.11, p.17).
---
## 5. Axial — ΦPn(C), ΦPn(T), ΦPcrit
Reference: QC p.36 (prestressed, Ex.1), QC p.76 (mild, Ex.2).
### 5.1 Compression ΦPn(C)
Prestressed (ACI 318-14 eq 22.4.2.3):
```
Po = 0.85·f'c·(Ag − Ast − Apd) + fy·Ast − (fse − 0.003·Ep)·Apt
Pn = 0.80 · Po
ΦPn = φc · Pn, φc = 0.65
```
- `Apt` = prestressed strand area, `Apd` = strand-occupied area, `Ast` =
non-prestressed longitudinal area. The `(fse − 0.003·Ep)·Apt` term is the
strand's contribution at the concrete crushing strain (it is a **reduction**,
strand is in residual tension).
- `0.80` is the ACI accidental-eccentricity factor for tied members.
Mild (ACI 318-14 eq 22.4.2.2):
```
Po = 0.85·f'c·(Ag − Ast) + fy·As,b + fy_WWR·As,WWR
Pn = 0.80·Po
ΦPn = φc·Pn, φc = 0.65
```
### 5.2 Tension ΦPn(T)
`ΦPn(T)` = factored axial tension capacity of the steel (φ·fy·As for mild,
φ·(fps or fpe)·Aps for strand); `∞`/large where it does not bind. Axial Options
`Ignore tensile strength failures` is ON in the samples (does not remove the
column, defeats the *failure* flag). Exact tension φ = 0.90 developed / 0.75
transferring (§10).
### 5.3 ΦPcrit — critical buckling (slenderness)
Reported as the Euler critical load using the effective flexural stiffness
(QC p.73–74, PCI Design Example 5.10.3.1):
```
EI_eff = φk · Ec · Ig / (1 + βd), φk = 0.875 (ACI 318-14 R6.7.1.1)
Pcrit = π²·EI_eff / (k·Lu)²
```
- `βd` = sustained-load ratio = `γD·D / Pu.mid` (non-sway). **`βd = 0` when the
governing combination's lateral load (wind) is short-term** (ACI 318-14
R6.6.4.6.2(b)) — QC p.74 uses `βd = 0` for the wind case, `βd = 0.333` for
the gravity-only case (QC p.73).
- `k·Lu` set by the restraint spacing (unbraced length between floor ties /
foundation). `Use span's average properties for buckling` was ON (§10).
- Axial Options `Ignore buckling failures` ON → `ΦPcrit` printed but not a hard
failure; `∞` where slenderness does not bind (QC p.19).
---
## 6. In-Place service checks
Reference: QC p.23 (Ex.1 In-Place Service Summary), settings QC p.5/p.79.
### 6.1 Tension vs cracking
Extreme-fibre tension (same equation as §1.1, in-place loads and `f'c`) vs a
cracking limit:
- **Non-prestressed:** single Modulus of Rupture `fr = 7.5·√f'c`
(`7.5·√5000 = 530.3 psi`, QC p.80 settings, QC p.23 "Cracking").
- **Prestressed:** ACI 318-14 §24.5.2 class limits —
**Class U** (uncracked) `≤ 7.5·√f'c`; **Class T** (transition)
`7.5·√f'c < ft ≤ 12·√f'c`; Class C above. Reported per section
(settings QC p.5: "Tension 7.5√fc (Uncracked / Class U) / 12√fc (Transition /
Class T)").
### 6.2 Compression
Total in-place compression (§1.1 with in-place loads) vs
```
σc.lim = 0.6 · f'c (= 0.6·5000 = 3000 psi, QC p.23) ACI 318-14 §24.5.4.1
```
### 6.3 Deflection
- **Basis:** elastic + P-Δ deflection (QC p.73–74, PCI 5.10.3.1), compared to a
per-job limit `L / n`, `n ∈ {150, 240, 360, ...}` (QC: Ex.1/Ex.2 `L/360`,
Ex.3 `L/150`). Settings expose "Total Deflection Limit".
- Components (QC p.74):
```
EI_eff = φk·Ec·Ig/(1 + βd), φk = 0.875
Δwind = 5·w_u·L⁴ / (384·EI_eff)
ΔPu = Pu·ecc·L² / (16·EI_eff) (eccentric axial)
Δi = Δbow + Δwind + ΔPu
P-Δ: Δe ← Δ(Δi + Δe), Δ(e) = Pu·e·L²/(8·EI_eff) (iterate to convergence)
ΔT = Δi + Δe → check ΔT ≤ L/n
```
- `Δbow` (initial bow) added as a positive (toward exterior) value if input.
---
## 7. Handling stages & multipliers
Reference: QC p.7 (Ex.1), QC p.107 (Ex.3 stage options), QC p.133 (Ex.3 §1.3).
| stage | Load Mult. | Concrete | Stress Limits | Lift type | code basis for mult. |
| --- | --- | --- | --- | --- | --- |
| **Stripping** | **1.4** | Initial (`f'ci`) | Handling (§1.4) | Static Lift **or** Rolling Block, sling 60° | PCI equipment/suction dynamic factor (stripping) |
| **Transportation** | **1.5** | In-Place (`f'c`) | In-Place (§6) | Dunnage points | PCI transportation dynamic factor |
| **Erection (Primary)** | **1.2** | In-Place (`f'c`) | In-Place (§6) | 3-point / rolling block, sling 60° | PCI erection dynamic factor |
| Erection (Secondary) | (off in samples) | — | — | — | — |
Confirmed explicitly: QC p.133 `γstrip = 1.4, γtransport = 1.5, γerection = 1.2`.
The multiplier is the **only** amplifier — handling `Mu` = (self-weight moment)
× (stage multiplier); **no ACI strength load factor stacks on top** (QC p.137:
`Pamp = γstrip · PSW`; all handling moments come straight off amplified
self-weight).
**Rigging idealisation.** The panel is a beam on its **lifter lines**. Lifters
are Face + Top-Edge lifters at transverse **fractions of panel width** (e.g.
0.207 from each side, QC p.108). Two lift types:
- **Static Lift:** vertical reaction per lifter = `(panel wt share)/n_lifters`;
horizontal `= Vert/tan(θsling)` (QC p.139: `Plift = 8.092/2 = 4.05 k`,
`Phoriz = 4.05/tan60° = 2.34 k`).
- **Rolling Block:** sling force resolved through the block; per-lifter vertical
`= Psling·sin(θsling)`, horizontal `= Vert/tan(θsling)` (QC p.138). A 3-point
pick is automatically treated as rolling block (QC p.141).
- The tool models the beam and reads shear/moment at lifter/opening locations
(QC p.137 states these were taken from a **RISA-3D** model for the Mathcad
check — see FLAG in §11).
Reactions are printed **unfactored per lifter**; the Stresses/Flexure moments
are **factored** (QC p.14, p.17). Tilt Potential (deg) printed per lift.
---
## 8. Prestress losses (PCI 8th-Ed. simplified, long-term)
Reference: QC p.30–31 (Ex.1 §4). Method setting: `PCI Design Handbook`,
`Humidity 70`, `Release ≈ 8 hr`, `Erection 30 day`. Four components; TL = sum.
```
Elastic Shortening ES = Kes · Ep · fcir / Eci (PCI eq 5-99)
Kes = 1.0; Kcir = 0.9
fcir = Kcir·[ (Pi + Psw)/A + Pi·e·y/Ig ] (concrete stress at strand cg)
Creep CR = Kcr · (Ep/Ec) · (fcir − fcds) (PCI eq 5-101)
Kcr = 2.0 (normalweight); fcds = − M_sustained/S at strand cg (PCI eq 5-102)
Shrinkage SH = 8.2e-6 · Ksh · Ep · (1 − 0.06·V/S) · (100 − RH) psi (5-103)
Ksh = 1.0; V/S = volume/surface ratio of the member
Relaxation RE = (Kre − J·(SH + CR + ES)) · C (PCI eq 5-104)
Kre = 5000 psi, J = 0.04 (270 low-lax, PCI Table 5.8.1)
C from PCI Table (fn of fpi/fpu): fpi/fpu = 0.75 → C ≈ 1.01
Total TL = ES + CR + SH + RE
%loss = TL·Aps / Pi
```
- **fse** (effective strand stress) = `(%pull)·fpu·(1 − %loss)`; e.g.
`0.75·270·(1 − 0.0958) = 183.1 ksi` (QC p.32).
- **Initial** losses (release, ES + relaxation-to-release) feed handling `Pi`;
**Final** (all four) feed in-place `Pi`. Ex.1 midspan: initial 2.04%, final
9.58–9.64% (QC p.13/14).
- `Include Live Load Regain` is a toggle (on in Ex.1) — a small favorable
adjustment; not itemised in the Mathcad.
---
## 9. Strand / rebar development & transfer length
Reference: QC p.38 (strand, Ex.1 §8.1), QC p.76 (mild, Ex.2 §7.1).
**Strand** (ACI 318-14 eq 25.4.8.1):
```
Ld = (fse / 3000psi)·db + ((fpu − fse)/1000psi)·db
transfer length Ltr = (fse / 3000psi)·db (the first term)
```
(Ex.1: `183.1/3·db + (270−183.1)/1·db = 73.96 in` for a 0.5" strand.)
Scaled by the **Development Multipliers** setting (§10): Strand Normal 1.0,
Debonded 2.0, Cut 1.0, Mild 1.0 in all samples. Effective developed `Aps` at a
station ramps with position over `Ltr`→`Ld`; §1.3/§4.2 use the developed area.
**Mild rebar** (ACI 318-14 Table 25.4.2.2, #6 and smaller first column):
```
Ld = (fy·ψt·ψe / (25·λ·√f'c))·db if clear spacing ≥ 2·db
Ld = (3·fy·ψt·ψe / (50·λ·√f'c))·db otherwise
ψt = 1.0 (< 12" concrete below), ψe = 1.0 (uncoated — the tool treats mild
as uncoated), λ = 1.0 normalweight.
```
Mesh (WWR) uses the same with `fy_WWR`, `diaWWR`.
---
## 10. Settings / resistance factors (the method statement)
Reference: QC p.5 (Ex.2 settings), QC p.79 (Ex.3 settings).
```
Resistance Factors (the QC Mathcad settles the grid the report renders ambiguously):
φ (tension, developed) = 0.90
φ (tension, transferring) = 0.75
φ (compression) φc = 0.65 ← axial/compression
φ (shear) φv = 0.75
Flexure Options Method: Whitney Stress Block | Cracking Check: None
Stress Options Failure if cracked | Ignore Lateral Strand Eccentricity | Use Principal Axis
In-Place limits Modulus of Rupture 7.5√f'c | Compression 0.6 f'c
(prestressed: 7.5√f'c Class U / 12√f'c Class T)
Handling limits Tension k·√f'ci (k = 5 OR 7.5, per-job) | Compression 0.6 f'ci
Development Mult. Strand 1.0 | Debonded 2.0 | Cut 1.0 | Mild 1.0
Shear Options Treat as column | (detailed Vci/Vcw for prestressed)
Axial Options Ignore tensile strength failures | Ignore buckling failures
| Use span's average properties for buckling load
2nd-Order P-Delta | Analysis βd: Non-Sway (φk = 0.875, ACI R6.7.1.1)
Materials f'ci 2.5–3.5 ksi, f'c 5.0 ksi, 150 pcf NW; strand fpu 270,
Ep 28500–29000 ksi; mild fy 60, Es 29000; mesh fy 65
Ec / Eci = 33·(wc/pcf)^1.5·√(f'·psi) (ACI 318-14 eq 19.2.2.1.a)
```
`φv = 0.75, φc = 0.65` is proven by the Mathcad (`ϕv = 0.75`, `ϕc = 0.65`,
QC p.70/37/76). The report's printed Resistance-Factor grid extracts the values
`0.9 / 0.75 / 0.65` in a jumbled cell order — **use the Mathcad values, not the
grid layout.**
## 11. Load combinations
Reference: QC p.4 (Ex.1), QC p.27 (Ex.1 Mathcad), settings QC p.79.
Columns `D L R W E T H`. **Strength** (ACI 318-14 §5.3):
```
1: 1.4D (+ T at 1.0, H at 1.6, Include)
2: 1.2D + 1.6L + 0.5R
3: 1.2D + 1.0L + 1.6R
4: 1.2D + 1.6R + 0.5L [/ 0.5W variants]
5: 1.2D + 1.0L + 0.5R + 1.0W ← typically governs out-of-plane
(0.9D + 1.0W and 0.9D + 1.0E present when uplift/seismic bind)
every strength combo carries T at 1.0 and soil H at 1.6.
```
**Service** (QC p.79, for the stress/deflection checks):
```
1: 1.0D (+ T at 0.75)
2: 1.0D + 1.0L
3: 1.0D + 1.0R
4: 1.0D + 0.6W ← wind at 0.6 for service
T at 0.75 on each.
```
Result tables are headed `All Combinations`; each controlling section names its
governing LC (e.g. `LC 5 - 1.2D + 1.0L + 1.0W + 0.5R + 1.0T + 1.6H`, QC p.11).
**Live-load patterning** is applied: the tool builds a subset of combos putting
live load on one face at a time; wind/seismic/earth are always patterned
regardless of the toggle (QC p.29, p.71).
Second-order moments are computed **after** combinations, by P-Δ (§5.3/§6.3),
using a linear-elastic geometric-stiffness FE model, approximated in the QC by
the PCI 5.10.3.1 iteration.
---
## 12. Section-property conventions
- `Ec = Eci = 33·(wc/pcf)^1.5·√(f'·psi)` (ACI 318-14 eq 19.2.2.1.a); `Eci` on
`f'ci`, `Ec` on `f'c`.
- **Section Properties reported at L/10** (11 rows); analysis stations ≈ L/20
plus straddling pairs at discontinuities.
- **Hollowcore:** gross = solid − `Σ cores`, each core an ellipse
`A = π·(H/2)(W/2)/... ` treated as a void; opening sections recompute `Ig`,
`S` dropping the cored region + affected strands (QC p.134–135).
- **Sandwich:** non-composite (single wythe), fully-composite, and **partially
composite** at user `%composite` by **linear interpolation** of `Ag, Cy, Ig,
S, Mn, Pn` between the non-composite and composite end-points (QC p.28, p.35,
p.37). Solid/hollowcore walls have no interpolation.
- Net vs gross: capacity uses **gross** transformed section; the strand
transformed area enters axial via the `Apd`/`Apt` terms only.
- `dv = 0.8·th` for shear (ACI 318-14 §22.5.8.3).
---
## Corrections to the inferred spec (`docs/eriksson-wall-method.md`)
Where the QC doc (authoritative) differs from or sharpens the sample-inferred
spec. **Trust this column.**
1. **φ ramp mechanism (spec §A.2.1 — the biggest correction).** The inferred
spec attributes the 0.75→0.90 φ ramp to **ACI 318-19 §21.2.3** (φ=0.75 over
transfer length, linear to 0.90 at end of development length). The QC doc
derives φ **only** from the **ACI 318-14 Table 21.2.2 / §21.2.2.2 strain
transition** (formulae in §2), evaluated at each section. There is **no
§21.2.3 transfer/development φ interpolation anywhere in the QC doc.** The
near-end ramp is an emergent effect of reduced developed strand (§1.3/§9)
feeding the strain formula, plus the transferring-tension factor 0.75. The
QC Mathcad validates only fully-developed midspan sections — so keep the
strain-based φ as the section rule and confirm the near-end behavior against
report tables (do not hard-code a 21.2.3 ramp).
2. **φ floor is not a single constant.** Prestressed φ floor = **0.65** (0.25
slope); mild φ floor printed = **0.75** (0.15 slope); compression-controlled
setting = 0.65. The spec treated φ as one 0.75→0.90 rule. Use the two
distinct forms in §2; **FLAG** the 0.75-vs-0.65 mild floor for verification.
3. **Resistance factors — grid order.** Spec §A.8 flagged the report grid as
ambiguous/jumbled and hedged. **Resolved by the Mathcad:** shear **0.75**,
compression **0.65**, tension developed **0.90**, tension transferring
**0.75**. (Spec §A.6 had guessed "Compression 0.65, Shear 0.75" — correct;
the report's printed grid cell order is just unreliable, confirmed here.)
4. **Vci uses `max`, not `Vci.2` as a cap.** `Vci = max(Vci.1, Vci.2)` with
`Vci.2 = 1.7√f'c·bd` a **floor** (PCI eq 5-27), and `Mcre = St·(6√f'c + fpe)`
(PCI eq 5-26). Spec §A.2 had the `Vc = min(Vci,Vcw)`, `ϕVn=0.75Vc`, `bwd`
product and `∞`-at-zero-moment all right; this pins the exact Vci sub-terms
and the `0.6/1.7/3.5√f'c + 0.3fpc` coefficients and `dv = 0.8·th`.
5. **Non-prestressed shear takes `max(Vc, Vc.min)`.** For mild walls
`ϕVn = 0.75·max(2λ(1+Nu/2000Ag)√f'c·bwd, (4/3)λ√f'c·Ag)` (ACI 22.5.6.1).
The spec's punch-list item 6 asked to confirm the method; this is it — and
the `max` (not a cap) is a genuine surprise; **FLAG**.
6. **Handling multipliers pinned:** Stripping ×1.4 (Initial/Handling),
Transportation ×1.5 (In-Place/In-Place), **Erection Primary ×1.2**
(In-Place/In-Place). The spec had 1.4/1.5 and marked erection "never run /
off"; the QC doc gives the erection factor **1.2** explicitly (QC p.133).
7. **Handling tension limit k is 5 OR 7.5 — a per-job SETTING, at `f'ci`.**
Both QC examples that ran handling used **7.5√f'ci = 443.71 psi**; the spec
correctly noted both occur. Compression handling limit `0.6 f'ci = 2100 psi`
confirmed. `fci req` = back-solved required `f'ci` (§1.4).
8. **Axial ΦPn(C) uses ACI 22.4.2.3 (prestressed) / 22.4.2.2 (mild), Pn=0.8Po,
φc=0.65.** The spec listed the columns but not the equations; §5 gives them,
including the `−(fse − 0.003·Ep)·Apt` strand term.
9. **`Pcrit` = Euler on `EI_eff = φk·Ec·Ig/(1+βd)`, φk=0.875**, with **βd=0 for
short-term wind combos** and βd = γD·D/Pu otherwise. The spec described the
P-Delta/βd non-sway machinery qualitatively; §5.3/§6.3 give the exact stiffness
and the βd switch (ACI R6.6.4.6.2(b), R6.7.1.1).
10. **Losses = PCI 8th-Ed. simplified with the exact eq numbers** (ES 5-99,
CR 5-101, SH 5-103, RE 5-104), Kes=1.0, Kcir=0.9, Kcr=2.0, Ksh=1.0,
Kre=5000psi, J=0.04. Initial-loss set feeds handling `Pi`, final feeds
in-place. The spec named "PCI Design Handbook" without the coefficients.
11. **Service compression limit prints as `0.6 f'c`** = 3000 psi at f'c=5000 in
the QC (the spec's samples were f'c=6000 → 3600; same 0.6 f'c rule — value
is job-dependent, not 3600 fixed).
12. **Strand fps is the PCI design-aid 15.2.3 power curve**
(`fpu − 0.04/(ε_ps − 0.007)` above ε_ps=0.0085, else Ep·ε_ps), capped by ACI
Table 22.2.2.4.3 — the spec said "Whitney block" without the fps law.
---
## Image-only / figure pages — flagged, NOT transcribed (verify before trusting)
The Mathcad **equations** all extract as text and are captured above. What is
image-only:
1. **QC p.138–140, p.142–143 (Ex.3 handling):** the **RISA-3D** rolling-block
and static-lift models and the resulting **shear / moment diagrams** are
figures. The Mathcad reads lifter shear/moment demands off these figures;
only the peak numeric values (`Plift`, `Mu`) are in text. **The along-length
handling shear/moment distribution for a multi-point rolling-block pick is
not in the text — verify against the rendered diagrams / reproduce the beam
model.** (This also means the reference tool's own handling demand for a
3-point pick came from an external FE model in the QC, not a closed form.)
2. **PM interaction diagrams** (QC p.11 summary, p.17 detailed flexure, and each
service Section View): plotted curves; axis values partially OCR-only. Read
from the image if a numeric P-M point is ever needed.
3. **Summary Graphs** on every results section (stress, deflection, fse/fpc):
the curve is an image; the Summary Table beneath it is the text of record.
4. **Cover / comparison sheets** (QC p.3, p.39–40, p.77) and report drawing
pages (strand patterns, structural-model elevations, lift diagrams,
cross-sections, QC p.5–8, p.44, p.64–68, p.79, p.82, p.110): dimensioned
drawings — key fractions/dimensions appear as text but the geometry is an
image.
5. **General extraction caveat:** Mathcad's 2-D math renders with scrambled
operator/operand order in text extraction. Every equation in this file was
reconstructed by **reproducing the printed numeric result**; still glance at
the rendered PDF page before changing code off any one of them.