Files
willtools-demo/docs/eriksson-wall-algorithms.md
T
will 52d94303bc
ci / test (push) Has been cancelled
WillTools: precast shop-ticket QC and panel handling tools
Public demo snapshot of an in-house pyRevit extension for precast concrete
shop-ticket QC (37 checks / 46 checklist rows) and a standalone panel
handling solver (PCI Chapter 8).

- No client, job, plant or product data: knowledge layers ship as
  structural templates only.
- Ticket QC's model-read escalation targets a LAN model server endpoint
  (configurable), not a cloud provider.
- Built from the private development repo via tools/make_dist.py.
2026-09-03 16:33:47 -05:00

658 lines
31 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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.