Skip to content
How StructSuite Works

How StructSuite Works: The Engineering Assumptions Behind Every Number

Every assumption, code interpretation, and deliberate limitation inside StructSuite, explained engineer-to-engineer: why blank inputs stop the calculation instead of assuming defaults, which NDS Supplement tables and manufactured wood products are implemented (and which are not, and why), how the IBC rafter tables' footnotes and span definition are honored, what the seismic module assumes about building height and mass, and how the retaining wall module scopes Mononobe-Okabe and Seed-Whitman to FEMA P-750 RP 12.

61 min read Updated October 18, 2026 Written and checked by StructSuite's licensed Professional Engineer (P.E.).
On this page

Every piece of structural design software makes hundreds of decisions its users never see: what to assume when an input is blank, which edition and which table a value comes from, what a footnote does to a result, which products made it into the database and which did not. Most tools keep those decisions private. We think an engineer should be able to audit their tools the same way a plan checker audits a calc package — so this page is the public register of StructSuite's engineering assumptions, written as the questions we asked ourselves while building it.

Every answer below describes the shipped software, not an aspiration. Where a decision traces to a specific code sentence, the section is cited; where it traces to engineering judgment, we say so and explain the judgment. If you find a decision you disagree with, that is exactly the conversation this page exists to start.

Guards, not fallbacks: the rule everything else follows

Why does StructSuite stop with a red error instead of assuming a default?

Because a silent default is a design decision made without the engineer of record. StructSuite's engines follow one rule everywhere: when a required input is blank or a judgment call is unmade, the calculation refuses to run — the step shows a red "required" line naming exactly what is missing, and the verification step will not produce results. The engines never substitute a "reasonable" number.

The distinction we draw is between three kinds of values:

Kind of valueExampleBehavior
Code-designated defaultDry-service condition (NDS baseline), Kzt = 1.0 with no hillPre-selected, because the code itself names the baseline
Engineering judgmentActive vs at-rest earth pressure; effective-length factor K; seismic methodStarts unselected, red until you decide
Project dataSpans, loads, SDS, soil bearingNever pre-filled

Concrete examples from the shipped engines: the retaining wall module throws "no default unit weights are assumed" rather than assuming soil at 120 pcf; the wind module refuses to compute pressures until you classify the enclosure — "No default GCpi is assumed" — rather than quietly using ±0.18; the wood beam engine refuses to verify anything if one psf-mode load item lacks a tributary width, because guarding only that combination would silently drop it while the dead-load-only combinations verified green.

Has StructSuite always been this strict? What did the hidden-fallback audit find?

No — we got there by auditing ourselves. In August 2026 we swept the entire app specifically hunting silent fallbacks and found eleven. The honest highlights:

  • The seismic module, with SD1 still blank, used to fall back to Cu = 1.7 (the loosest period cap) and let the Eq. 12.8-6 floor produce a Cs from a missing input. Today nothing downstream of SD1 computes until it is entered.
  • The wood column module carried a hardcoded Fc⊥ = 625 psi for LVL/LSL/PSL bearing. Today, if a product's report publishes no Fc⊥, the module says plainly, as a row of the Step 5 check table: "Bearing — Not evaluated — no Fc⊥ published for this product in the design-value dataset; verify bearing per the manufacturer's ICC-ES report." It declines to check rather than fake a value.
  • A column with the buckling factor unselected once reported "D/C 0.000 — PASS". A shear wall with a blank wall height once reported hold-down "T = 0 — PASS". A beam with a blank tributary width once assumed 2 ft. All three now stop and ask.

Every finding was fixed the same week, and the fixes are locked by tests. We publish this list because "we audited ourselves and here is what we found" is worth more than "trust us."

Does StructSuite round intermediate values?

Never in the math. Stored state and every calculation carry full precision; rounding is purely a display-layer concern (values typically display to two decimals while idle, and inputs show your raw keystrokes while you type). This means the printed derivation you read may show 5.400 + 1.500 = 6.900 while the engine carried nine more digits — the displayed numbers are truncated views of the real ones, never the operands of the next step. No compounding round-off, ever.

How do I know the printed report matches what I saw on screen?

Because they are the same thing. The printed calculation package renders the same component nodes the on-screen step summaries render — there is no parallel "print version" that could drift. That single-source rule is enforced by a contract test whose own header says why it exists: "If these break, the printed report silently drifts from the on-screen module." The report's table of contents is held to the same standard: TOC page numbers are measured against the real printed pagination at US-Letter paper width and guarded by an audit script, so the number printed in the TOC is the page the section actually starts on.

How do I know the diagrams match the design checks?

Because they are the same analysis, not two analyses that agree. The shear, moment and deflection diagrams the beam module draws are rendered from the same solver result the Step 6 check tables were decided on — the figure reads that result, it never re-runs the analysis. The contract test asserts object identity, not equality, and the distinction is the whole point: equality is exactly what a second, independently written solver pass would also satisfy right up until the day it quietly stopped. There is one deliberate exception, and the code marks it as one: the sidebar's individual load cases ("Dead load (D)", "Live load (L)") are solved for the figure, because no design check verifies an unfactored single load type — there is no result to read, and nothing else in the report depends on them.

For a while, that was not true, and one number disagreed. The solver computes deflection at the reference E; the design deflection is taken at the adjusted E′ = E·CM·Ct·Ci (NDS 2024 §3.5), plus the mandatory shear-deformation term for I-joists (§7.4.5) and for structural composite lumber. The check applied both. The figure, running its own pass, applied neither. On a dry, normal-temperature sawn or glulam beam the two are identical and nothing was visible — which is precisely why it survived: the common case hid it. On a wet, elevated-temperature or incised member, and on every I-joist and SCL beam, the diagram reported a smaller deflection than the check governing that same beam. The figure now plots δ at E′, says so in the panel heading, and states the shear component it cannot honestly draw — that term is a per-span closed form, not a curve — instead of leaving it out. We publish this for the same reason we published the rafter-table bug below: a figure disagreeing with the table beside it is exactly the kind of thing an engineer deserves to know their tools have had, found, and pinned against.

How do I know a published guide matches the software?

Every number in a StructSuite worked-example guide is produced by running the shipped engine — not by hand transcription — and then pinned: each published example carries a verification test suite asserting the exact published values against the engine, and the production build fails if a published example guide has no pin suite. When an engine is revised, the pins fail, and the rule is to re-issue the guide, never to adjust the test. One guide takes this further: the beam formulas companion is generated from the finite-element engine rather than written at all.

Code tables: verbatim, footnotes and all

How are code and standard tables reproduced in the app?

As book-faithful replicas: same rows, same values, same footnote numbering as the printed table, rendered as selectable tables rather than hidden lookups. When two source documents tabulate the same physical thing differently, we reproduce both and never "unify" them (see the soil-table question below). Where a table was digitized from a source document, the source workbook or PDF is archived in the project's reference set, and representative cells are locked by regression tests.

What happens when a table footnote applies to my design?

It is never applied silently. The standard layout everywhere a footnote can modify a value: the reference table, then always-visible checkboxes for the footnotes that involve a choice, then the entire verbatim footnote text in a collapsible — numbered exactly as the book numbers them. When a footnote is auto-applied because the code mandates it, the derivation says so in-line: the shear wall module's specific-gravity factor prints "taken as 1.000 (footnote 3: the Specific Gravity Adjustment Factor shall not be greater than 1)" right in the calculation, and the rafter tables print their footnotes verbatim in the result box the moment one fires (more on those below).

What if two codes disagree — like IBC Table 1610.1 vs ASCE 7-22 Table 3.2-1?

They genuinely do: for several backfill classes the IBC and ASCE 7-22 tabulate different design lateral soil loads (well-graded gravel: 30 vs 35 psf/ft active; clayey sand: 60 vs 85). StructSuite's answer is to show both tables verbatim, let you select the row from the book that governs your jurisdiction, and record which you chose — with the hierarchy stated on screen: the IBC table values are minimums unless determined otherwise by a geotechnical investigation, which supersedes either book. What we refuse to do is average them, pick one silently, or present a merged table that exists in no code.

Retaining walls: seismic earth pressure and the FEMA P-750 story

Where do the seismic earth-pressure methods come from — are they printed in ASCE 7-22?

No — and that surprised us enough to chase the paper trail to its end. ASCE 7-22 §11.8.3 requires seismic lateral earth pressures for SDC D–F walls retaining more than 6 ft but does not specify a method; its commentary (C11.8) defers to the 2009 NEHRP Recommended Seismic Provisions (FEMA P-750) Part 3, Resource Paper RP 12. So we put the actual FEMA P-750 document in the project's reference set and verified every implemented equation against it, page by page:

  • The Seed-Whitman simplified increment — ΔKAE = (3/4)·kh and ΔPAE = (3/8)·γ·H²·kh — is printed verbatim as RP 12 Eqs. 6–7 (p. 356). The module cites that page.
  • The 0.6H application height of the dynamic increment ("inverted trapezoidal pressure distribution") is printed on p. 356 and repeated on p. 358. RP 12 never prints the trapezoid's ordinates; the 1.6/0.4 split StructSuite draws is the unique linear distribution with its centroid at 0.6H — the guide shows the two-line derivation.
  • The Mononobe-Okabe closed-form KAE is not printed in RP 12 at all. RP 12 prints only the thrust equation PAE = ½·γ·H²·(1 − kv)·KAE (Eq. 4, p. 355) and defers the coefficient formulation to the soil-dynamics literature (Prakash; Das; Kramer; Ebeling & Morrison). So StructSuite cites RP 12 for what RP 12 prints, and cites "geotechnical literature — see module guide" for the closed form. It would have been easy to stamp "per ASCE 7-22" on all of it. It would also have been wrong.

The full derivation with live numbers is in the retaining wall design guide.

Why does StructSuite block Seed-Whitman for clayey backfill?

Because RP 12 says to, and because the software often knows your soil. RP 12 p. 356 attaches a hard scope statement to the simplified method: "If soil conditions behind the wall have a cohesive soil component (i.e., a c-φ soil), this simplified approach is no longer appropriate."

Here is the interesting design problem: whether the module can enforce that depends on what it knows about your backfill.

What the module knowsYour selectionWhat happens
USCS class from an IBC 1610.1 / ASCE 3.2-1 table row, clay-bearing (GC, SC, SM-SC, CL, CH)Seed-WhitmanBlocked — red error quoting RP 12 p. 356, pointing to the two valid paths: the geotechnical report's pressure, or full Mononobe-Okabe within its own limits
USCS class, fine-grained silt (ML, MH)Seed-WhitmanRuns, with an advisory: the method assumes dry cohesionless backfill — confirm with the geotechnical report
No class — lateral load entered as a geotechnical EFPSeed-WhitmanRuns, with an advisory: backfill class unknown, confirm no cohesive component
USCS class, clay-bearingMononobe-OkabeRuns, with an advisory: M-O also assumes cohesionless backfill; the geotech pressure is the right path for c-φ soils
No class — lateral load entered as a geotechnical EFPMononobe-OkabeRuns, no scope advisory — the class never entered the software, so there is nothing to gate on. This is the path a sloped backfill takes: the slope guards the code tables off, so the class is always unknown there. What M-O does still police is its own validity — φ − ψ ≤ β is a hard error, a margin under 3° an advisory, and a Coulomb KA more than 25% away from your entered EFP/γ an advisory that you are stacking the increment on a different theory

The principle: hard gate where the class is known, advisory where it isn't — we can't gate on what we don't know, and pretending we can would be its own kind of silent assumption. When you selected your lateral soil load from a code table, the module knows the USCS symbol, and a letter "C" in that symbol means a clay fraction; a stated applicability limit plus known soil is not a judgment call, so the module enforces it. When your lateral load came from a geotechnical report's equivalent fluid pressure, the class never entered the software — so it tells you what to confirm instead of guessing.

How does the retaining wall module handle sloped backfill?

As geometry it computes, plus a pressure value it refuses to guess. The backfill slope β is a Step 1 input (2026-08-22): the module raises the stability pressure plane at the heel edge to H′ = Hretained + tf + Lheel·tanβ, adds the triangular soil wedge above the heel to the resisting weights and to the heel's design load, runs the seismic increment over the same taller height, and feeds the same β into Mononobe-Okabe — one wall has one slope. What it will not do is take the design pressure from IBC Table 1610.1 or ASCE 7-22 Table 3.2-1 for a sloped wall: those are level-backfill active/at-rest values (Terzaghi and Peck — ASCE 7-22 C3.2.1), and both codes route the site-specific condition to the geotechnical investigation (IBC §1610.1 → §1803). Declare a slope and the tables are guarded off with an error that says exactly that — the equivalent fluid pressure must be the report's value for the sloped condition. Seed-Whitman refuses a sloped wall outright (RP 12 p. 356: "not applicable for sloping ground above the wall"); the thrust's slope-parallel vertical component is conservatively neglected; and global stability of the backslope itself stays a geotechnical evaluation, stated in the design notes rather than silently skipped.

Does the retaining wall module handle groundwater?

Yes, since 2026-09-20 — as a Step 2 input (the design water level above the bottom of the footing, plus the saturated unit weight), never as an assumption. Below the water table the earth pressure runs on the buoyant unit weight at the same K, full hydrostatic pressure adds as its own block, the soil over the heel weighs its saturated total weight, and the base carries uplift with the head measured from the underside of the footing — γw·hw at the heel edge falling to zero at the toe edge, the front of the wall being drained (IBC 2024 §1610.1 and Table 1610.1 footnote a; ASCE 7-22 §3.2.1, §3.2.2). Ground water pressure is H by definition (§2.2), so it enters stability at 1.0 and strength at 1.6. Two guards: γsat is required whenever a water level is entered (no default), and a water table cannot be combined with the seismic increment — Mononobe-Okabe and Seed-Whitman assume groundwater below the base (RP 12 p. 355), so that case is the geotechnical report's. The module also does not choose the water elevation, the head at the toe, or whether water stands on both sides; those come from the report and are stated in the design notes.

Which gravity combination governs the heel — and why did that change on 2026-09-20?

A line-by-line comparison against another program's report on the same wall showed the heel checked only at 1.2D + 1.6L. Lateral earth pressure puts nothing on the heel, so ASCE 7-22 §2.3.1 combination 1a — plain 1.4D — competes with it directly and governs whenever the variable surcharge is lighter than 0.2·D/1.6 (about 200 psf on a 12 ft wall), permanent, or absent. The module now checks both on the heel and, on the toe, adds 1.4D + 1.6H to the 1.2D + 1.6H + 1.6L / 0.9D + 1.6H pair (H stays at 1.6 wherever it adds — the §2.3.1 H rule; ACI 318-25 §5.3.8), reporting the governing combination on each row. The same comparison found the footing's longitudinal shrinkage-and-temperature steel counted as one curtain while the reinforcement detail had always drawn two (one against each mat); it is now counted each face, as built. The one thing the comparison did not change is the sliding free body: StructSuite keeps the classical footing-base free body (active pressure to the footing bottom, passive credited to the key bottom) and now states it inside the sliding step, because the other program's key-bottom convention is a legitimate alternative rather than a code requirement — the retaining wall guide shows both numbers.

A house footing stands in the backfill behind my retaining wall. How is it modelled?

As the strip load it is, not as a uniform surcharge. The footing's load per foot of wall, its width, the distance to its centreline and its bearing depth go in under Adjacent footing behind the wall in Step 2, and the module applies the elastic half-space (Boussinesq) strip-load solution for the horizontal stress it induces on a vertical plane — a push that peaks a short way below the footing's bearing level and tails off, nothing like the flat K·q band of a broad surcharge. The resultant and its arm are closed-form and printed with σx at five depths, so the number can be checked by hand. The code's part is only the instruction: lateral pressure from surcharge loads shall be added to the soil load (IBC 2024 §1610.1; ASCE 7-22 §3.2.1), it is H (§2.2), and it takes 1.6 in the strength combinations (C2.3.1).

The one judgment — whether to double the elastic value, as measurements on walls that cannot yield suggest — is tied to the pressure condition already chosen: at-rest doubles it, active (a cantilever wall free to rotate) uses the elastic value, and the calculation says which. Where part of the footing bears over the heel, that weight lands on the heel as dead or live load per your call; the shear it transmits on the heel-edge plane is neglected, like the vertical component of the earth thrust. Level backfill only, and a footing at or below the top of this wall's footing is refused — that is a foundation beside a foundation, not a surcharge. The retaining wall guide runs a 3,000 plf footing against the final wall at four distances and shows the uniform-surcharge stand-in getting the stem and the toe wrong.

Can the retaining wall module carry a fence or guardrail on top of the wall?

Yes, as a fence — not as more stem. Its height is a Step 1 input, and Step 2 takes the net wind pressure over that height and its weight per foot of wall (0 for an open rail). The wind acts at the fence mid-height above the whole stem, through the stem at 1.0W and the stability checks at 0.6W in both directions, with the toe-face reversal check running on it; the weight, where entered, is permanent weight on the wall. What the fence does not add is concrete: raising the stem instead credits the projection's own weight to overturning, sliding and bearing — 750 lb per foot of wall for a 6 ft fence on a 10 in stem — and the guide's comparison shows the overturning factor dropping from 7.32 to 5.58 when the fence is modelled as a fence. The module applies the net pressure you give it (ASCE 7-22 §29.3.1 for a solid fence; the Figure 29.4-2 open-sign coefficients for a rail) and does not derive it, and it does not take a light fence's weight into the stem's axial interaction — a heavy screen wall that should be goes in as an axial load on the stem.

The geotechnical report says to disregard the top foot of soil in front of the wall. What does the module do with that?

It asks you which of two things the report means, because they are different models (2026-10-05). Excavated — the default — treats the band as removable: the toe-side surface is lowered, the passive pressure restarts from zero there, Pp = ½·wp·(D − n)². Left in place treats it as loose soil that stays but may not be relied on: only its own slice of the diagram is forfeited while its weight still loads the soil below, Pp = ½·wp·(D² − n²). The second is what at least one commercial program assumes without asking; the first is the lower number. A comparison on a 3.5 ft basement wall made the difference concrete — sliding FS 1.17 under the excavated reading, 1.55 left in place, the same wall and the same report. The module states the reading in the sliding step and in the printed Step 2 summary, and under either one the weight of the toe soil is unchanged and the shear key is detailed for the pressure actually present.

The column module bent every lateral load about the strong axis. What changed?

Until 2026-10-05 a lateral load on a column was always taken as strong-axis bending with the compression edge braced (CL = 1.0) — right for every wall stud and for a square post, silent for the two cases outside that: a rectangular post with wind on its wide face, and a free-standing post with nothing along its edge. A comparison against a commercial program's wood column reports made the second one visible: its 2×4 stud carried a beam stability factor of 0.87 from an 8-ft unbraced length, and ours carried none. Step 2 now asks which axis the load bends — weak-axis (flatwise) bending runs on Sy, takes the flat use factor Cfu (NDS 4.3.7), sets CL = 1.0 (NDS 3.3.3.1) and amplifies on FcE2 from the weak-axis slenderness — and, for strong-axis bending of a section deeper than it is wide, asks for the unbraced length ℓu, from which CL follows per NDS 3.3.3 (ℓe from Table 3.3.3, RB ≤ 50 per 3.3.3.7, FbE, Eq. 3.3-6) for every combination. Entering ℓu = 8 ft on that stud reproduces the other program's 0.2398 exactly. Older saved columns restore with ℓu = 0, the result they were issued with, and say so on their summary row. Buckling about both axes was never the gap — CP has always taken the worse of the two slenderness ratios with each axis's own Ke and bracing. True biaxial bending (two lateral loads at once) is still not offered.

A glulam or LVL post carries wind. Was the lateral load checked?

Since 2026-10-18, yes — for every rectangular product. Until then only sawn lumber ran the NDS 3.9.2 combined bending and axial check; a glulam, LVL, LSL or PSL column with a lateral load got an amber note saying the load was not checked, and no column — sawn included — was checked for shear. Each product now reads its own bending value for the plane the load bends. Glulam reads Supplement Table 5B: bending about X-X takes Fbx (× 0.88 deeper than 15 in, footnote 4) with the volume factor CV of NDS 5.3.6, and the lesser of CL and CV governs — never both; bending about Y-Y takes Fby for the member’s number of laminations (its depth over the 1-1/2 in or 1-3/8 in lamination, NDS Commentary C5.1.3.2) with the flat use factor Cfu of Eq. 5.3-2. CV’s length L — "between points of zero moment" — is taken as the full column height: exact for a pinned-pinned column, longer (so CV is smaller) than any zero-moment span of a column with fixed ends, and the member length for a cantilever, which has only one point of zero moment. LVL, LSL and PSL read the evaluation report: the joist / beam orientation value for strong-axis bending, the face / plank value for weak-axis bending, each with that orientation’s volume factor — and per NDS 8.3.6.1 a CV above 1.0 applies together with CL (and so belongs in Fb*), one at or below 1.0 is the lesser of the two. Where a report gives no factor — Microllam thicker than 3.5 in in plank orientation — the module says so instead of guessing.

Shear is now a column of the Step 5 table for every rectangular column with a lateral load: V is the larger end reaction from the same end-condition statics the moment comes from (a cantilever puts the whole load into the base), and fv = 1.5V/A is checked against Fv′ per NDS 3.4.2 (Eq. 3.4-2) — sawn Fv; glulam Fvx or Fvy with Cvr and Table 5B footnotes 1 and 2 (a glulam member wider than 10-3/4 in is typically made from multiple-piece laminations whose edges are typically not bonded, Commentary C5.1.3.1, so its Fvy is taken at × 0.4 or × 0.5 — the conservative reading); LVL / LSL / PSL the report’s joist or plank Fv. NDS 3.4.2.2’s allowance to ignore load within d of a support is not taken. On a wall column shear is rarely close — the tall-wall worked example reads 0.116 against a governing 0.842 — but it is now confirmed every time rather than assumed.

Why do the development lengths come out longer than another program's?

Because the module ran ACI 318-25's simplified Table 25.4.2.3 while the other program ran the general equation, Eq. (25.4.2.4a) — both are §25.4.2.1(a) paths, and the table is the equation at a preselected confinement term (R25.4.2.1), so it is always at least as long. Since 2026-10-05 Step 3 offers both. The general equation uses the wall's own cb (the cover to the bar centre or half the bar spacing, whichever is less), capped at (cb + Ktr)/db = 2.5, with Ktr = 0 as the section permits; on ordinary mats the cap is reached and the straight lengths and the dowel lap come out at 60% of the table's — a #4 @ 16 in 2,500 psi concrete develops in 14.4 in rather than 24.0 in and laps in 18.7 in rather than 31.2 in. The hooked-dowel length ℓdh is the same either way. The table stays the default because it is the conservative envelope and it is what every earlier saved project was designed with; the sample project and the sample report run the equation so you can see both.

What kh does the software use — and can the geotechnical report override it?

For a cantilever reinforced concrete or masonry retaining wall — a yielding wall per ASCE 7-22 §15.6.1 — the default is kh = SDS/2.5, and we are careful about what that is. ASCE 7-22 prescribes no kh for retaining walls: §11.8.3 sends the determination to the geotechnical report, and C11.8.3 says only that the increment is an earthquake load E on top of the static H load. SDS/2.5 is the ratio the standard itself labels the effective peak acceleration, as the column head of Chapter 19 Tables 19.3-1/2/3; the module takes it as the site amax. That mapping is practice, not code, and the app says so at the input and in the printed derivation. RP 12 works in amax terms — the full amax, or amax/2 after Elms and Martin (1979) where roughly 10·amax inches of sliding is tolerable — so the full value used here is the conservative end of that range. (We had this attributed to C11.8.3 until 2026-09-03. It was wrong: C11.8.3's only SDS/2.5 is a note about the 2006 IBC's liquefaction default, superseded in the same paragraph by MCEG. Finding it took reading the clause rather than trusting the citation.)

The geotechnical report can override the value — but not the judgment. You must answer the wall-restraint question (free to displace vs restrained) in every path; a kh override supplies the number, never the answer to whether your wall yields. Restrained (nonyielding) walls have no built-in kh at all in the current version: rigid-wall pressure models are geotechnical-input-only, and the module says so rather than quietly applying a yielding-wall coefficient to a basement-like wall.

What else do the computed seismic methods assume?

Stated in the derivation itself, so a reviewer reads them without asking: dry, cohesionless backfill with groundwater below the base of the wall (RP 12 pp. 355–356, 359 — saturated backfill belongs to the geotechnical report, and the module refuses to combine a Step 2 water table with the increment for exactly that reason); kv = 0, because vertical shaking enters the strength combinations separately as Ev = 0.2·SDS·D and a kv inside the coefficient would double-count it; walls taller than 15 ft get an advisory citing RP 12's special-studies suggestion; and wall self-weight inertia (kh × the concrete weights, the Richards & Elms formulation) is an explicit opt-in that, when selected, enters every seismic check — stability, bearing, and the stem's own strength check alike.

Why do the stability checks show a factor of safety while the strength checks show D/C with a load combination?

Because IBC 1807.2.3 treats them differently, and the summary keeps each check in its own code language. Overturning and sliding stability are exempted from the §1605 load combinations by the code itself: they run at 1.0 × nominal loads (0.6 × wind and 0.7 × earthquake where included) against a hard factor of safety — 1.5 static, 1.1 seismic. Bearing is checked at service loads against the allowable bearing pressure. The concrete strength checks run the real factored combinations and report D/C exactly like the other modules; a masonry stem runs the allowable-stress combinations instead. Since 2026-10-12 the Step 4 summary is one table with the same five columns for both kinds — Check, Governing combination, Demand, Capacity, D/C or FS — so every row shows the two numbers it compares, not only their ratio. A stability row sets the overturning moment against the resisting moment, or the sliding force against the available resistance, and prints its factor of safety as "FS 5.15 ≥ 1.5"; bearing and every strength row print D/C. The combination column names the investigated case for stability (that's why the surcharge can appear as "lateral only": it pushes, but its vertical weight is excluded from the resisting side per §1807.2.3) and the governing combination for strength — 1.4D vs 1.2D + 1.6L for the heel's moment and, separately, its shear, 1.2D + 1.6H + 1.6L / 0.9D + 1.6H / 1.4D + 1.6H for the toe envelope, the §2.3.6 pair for the seismic rows. Where the stem's lack of a dead-load effect makes two combinations identical, the row names the first and the detailed calculation card writes the pair with "≡". Flexure and shear are separate rows, because a heel's moment and its shear are different numbers in different units; bar development and minimum steel set the required length or area against what the geometry provides. The rows sit under three headings: Stability, Member strength, Detailing & minimums. The two framings still reconcile numerically: internally a stability step carries a D/C defined as required FS ÷ computed FS (that is how the module ranks governing checks), so an FS of 1.09 against a required 1.1 and a D/C of 1.01 are the same statement.

Is the surcharge D, H, or L in the load combinations?

None of them — because StructSuite classifies effects, not loads. A surcharge (say 100 psf of parking behind the wall) is one physical load with two separate effects on the structure, and each gets its own letter:

EffectPermanent backfill soilVariable surcharge (traffic, storage)Permanent surcharge (adjacent footing, fill)
Vertical weight over the heelD — counts as resistanceL — excluded from resisting, 1.6L driving the heelD — resists, 1.2D/0.9D factoring, Ev applies
Lateral push on the wallH at 1.6H at 1.6H at 1.6

Which column your surcharge belongs to is a judgment the code cannot make from a psf value — so the module asks: whenever a surcharge is entered, a required variable-or-permanent selection appears (unselected until you answer, like every judgment in the app), and the entire calculation re-letters the vertical effect accordingly — a permanent surcharge's weight folds into the dead-load table, resists overturning, and receives Ev in the seismic combinations, while the combination names themselves drop the L term.

The rule: vertical effects are classified by permanence — the backfill's own weight is dead load, the removable surcharge's weight is live load — while lateral effects are all H, and that is not an interpretation but the letter of the symbol list. ASCE 7-22 §2.2 defines it verbatim: "H = Load due to lateral earth pressure (including lateral earth pressure from fixed or moving surcharge loads), ground water pressure, or pressure of bulk materials." The parenthetical exists precisely for this question. The surcharge mirrors the backfill exactly, one permanence class down: weight → L instead of D, push → H either way. It is never part of D.

Two places the split shows its teeth. In the stability checks, IBC §1807.2.3's variable-loads-at-zero investigation means the surcharge pushes but doesn't hold: its lateral component drives the overturning while its vertical weight is refused as resistance — that is what "(lateral only)" means in the stability case names. And in the seismic combinations, where L drops to 1.0 but H stays at 1.6, the §2.2 classification is exactly what keeps the surcharge's push at 1.6 (stated in the stem-strength derivation) — in the static combinations calling it L would change nothing numerically, so the definition matters precisely where it does the most good.

What safety factors apply to a retaining wall during an earthquake?

The static stability checks keep their FS ≥ 1.5; when earthquake loads are included, sliding and overturning are checked at FS ≥ 1.1 with 0.7 × the nominal earthquake load, per the IBC §1807.2.3 exception. Seismic soil bearing uses the ASD combination with the geotechnical report's transient-increase factor — the presumptive one-third increase is not assumed; if your report grants no increase, the check runs at the plain allowable. Concrete strength design of the stem, heel, and toe runs the ASCE 7-22 §2.3.6 seismic combinations with Eh and Ev.

Is a basement wall a retaining wall? Can I design one here?

Not in this module, and the reason is structural rather than a missing feature. The retaining wall module solves a cantilever: the stem fixed at the footing, free at the top, leaning far enough to earn the active pressure state. A basement wall braced by the floor diaphragm above and the slab below spans between those two supports. Its moment redistributes between a span moment and the base — where the peak lands depends on how much rotational fixity the base actually has — it delivers a reaction into the diaphragm that somebody has to design for, and overturning, sliding and bearing stop governing, because a wall held at both ends cannot go anywhere. Feeding that wall through a cantilever model gives a confident answer to the wrong question.

Selecting at-rest pressure raises a note in the calculation saying exactly this, so the mismatch cannot pass unnoticed.

If a floor sits on top of my below-grade wall, is it restrained?

Not automatically, and the code has a test rather than a judgment call. IBC 2024 §1610.1 and ASCE 7-22 §3.2.1 both require at-rest pressure where horizontal movement is restricted at the top. But §3.2.1 carries an exception: a foundation wall extending not more than 8 ft below grade, laterally supported at the top by a flexible diaphragm, is permitted active pressure. Commentary C3.2.1 names what qualifies — wood-framed floors and cold-formed steel joists, without a cast-in-place concrete floor attached — and explains why: restraint at the top drives the pressure up from active toward at-rest, and a flexible floor does not deliver it.

So a shallow crawl-space or basement wall under a wood-framed floor often still qualifies for active pressure. A deep basement wall fails the test twice over — past the depth limit, and genuinely held at both ends. Both code passages are quoted behind the reference icon on the earth-pressure-condition field, where the choice is made.

What does the retaining wall module NOT carry?

Stated on every calculation, not buried here: a tapered stem (a uniform stem puts the critical sections at the interface per §13.3.6.3; a stem stepped once — thinner above a height, lighter bars above it, or both — is carried, with a second critical section at the step and the §7.7.3 cutoff rules for the bars that stop there); for a CMU stem (TMS 402-22 allowable stress design, on the same concrete footing) partially grouted or hollow walls, clay masonry, masonry not laid in running bond, shear reinforcement in the stem, strength design (Chapter 9) and the grout-space percentage of §6.1.3.2.5 are not carried; global stability, the deep-seated failure surface passing beneath the footing, which is a slope-stability evaluation no stem reinforcement answers; wall tilt and movement, including the rotation the active state itself depends on; and a toe-side surcharge, whose omission is conservative because both its weight and the passive pressure it adds would resist.

Axial load on the stem is carried — a house wall, a beam reaction or a deck ledger bearing on top, entered as four separate load letters (D, L, Lr, S) with an optional eccentricity. Only the dead part is allowed on the resisting side of overturning and sliding, because ASCE 7-22 §2.3.1 and §2.4.1 both require the effects of loads not acting to be considered and every variable part would only make the wall look more stable. The stem then stops being a one-way slab: the axial–moment interaction is required by ACI 318-25 §11.5.1.1 and taken to §22.4, and the second-order moment is computed by the §6.6.4.5 magnifier because k·ℓu/r puts any ordinary stem well past the §6.2.5.1(a) limit of 22.

Worth knowing before you decide whether to bother entering it: on a typical wall the load leaves the stem demand-capacity ratio almost unchanged — the capacity it adds and the P-Δ moment it adds very nearly cancel — while lifting soil bearing and the toe by about 30%. The retaining wall guide's comparison runs both cases side by side.

Wood members: what's in the NDS Supplement tables — and what isn't

Which NDS Supplement tables are implemented?

The material step of the wood beam and column modules is one shared component, so both modules read the same digitized tables (each built from the per-table source workbooks and locked by tests):

TableWhat it isIn StructSuite
1BSection properties, S4S sawn sizes✓ Selectable
1C / 1DGlulam section properties (Western / Southern Pine)✓ Selectable
4AVisually graded dimension lumber (non-SP species)✓ Selectable, common species pinned first
4BSouthern Pine dimension lumber✓ Selectable, with the per-width value blocks (a wide SP member does not borrow the 2"–4" block)
4CMachine-graded MSR/MELImplemented but currently not exposed (see below)
4DTimbers 5×5 and larger✓ Selectable, incl. the footnote-2 Spruce Pine conversion rows
5AGlulam stress classes (bending)✓ Beam module (default)
5BGlulam axial combinations✓ Beam and column (column: 5B only)

The 5A/5B split between modules is a real material decision, not a UI whim: 5A layups put the strong laminations at the outer fibers for bending; 5B grades laminations uniformly for axial stress — so a pure column is not offered a bending-optimized layup. Deeper treatment: the NDS Supplement guide's 5A-vs-5B FAQ.

Which tables are deliberately NOT implemented — and why?

  • 4E (decking): no decking design exists yet; a pair of forward-looking factor helpers sit in the code with zero call sites, waiting for the feature.
  • 4F/4G (non-North-American and multi-species groups): rarely specified where the common species cover the work.
  • 5C/5D (hardwood glulam): U.S. structural glulam is overwhelmingly softwood.
  • 6A/6B (round timber piles and poles): round columns are handled instead by NDS 3.7.3's equivalent-square method on sawn-lumber values (that option is currently not exposed in the UI, with the code intact behind a flag).
  • 4C (MSR/MEL) is the interesting one: fully implemented — data, footnote-2 resolution of Fv/Fc⊥/G by base species, the whole path — and then deliberately hidden behind a one-line comment, to keep the selection focused on what engineers hand-pick (MSR/MEL is largely a truss-plant product). We hide by commenting out, never by deleting, so a decision can be reversed by restoring one line.

How does StructSuite design 1× boards (members thinner than 2×)?

Through the only code-sanctioned path: NDS Supplement Table 4A/4B footnote 2, which lets a stress-rated board (nominal 1", 1¼", 1½" thick, 2" and wider) use the 2"–4" design values for its species and grade. The module makes that footnote a gate you must affirm: until you check "graded under the stress-rated board provisions," the board sizes stay grayed out. Three factors — CF, Cfu, Cr — are locked at 1.00 for boards because each is tabulated only for 2"–4" material and each is an increase factor there, so declining them is conservative by inspection; the assumption is printed in the calculation and the report. Southern Pine users also get the SPIB grade map (IND 55 → No. 1, IND 45 → No. 2, IND 26 → No. 3). Worked details: the NDS guide's board FAQ.

Why does switching between dimension lumber and timbers clear my species selection?

Because the same species and grade has different design values in different size classes (DF-L No. 2: Fb = 900 psi as dimension lumber in 4A, 875 psi as a Beam & Stringer in 4D — and within 4D, Beams & Stringers vs Posts & Timbers differ by up to ~37.5%). When a selection crosses the dimension/timber boundary, StructSuite clears the now-orphaned choice and flags it red-required rather than silently remapping you to the "equivalent" row of the other table. A red field you must re-answer is annoying for three seconds; a silent remap is a wrong Fb forever.

The picker could never create that pair, but a stored project could still carry one, and our own sample did. Post P-2, a 6x6, was saved as "Douglas Fir-Larch, No. 2" from its days as a 4x6. The column then designed on the Table 4A row (Fc = 1,350 psi, Emin = 580,000 psi) while applying Table 4D's factors and citing Table 4D. The Posts and Timbers No. 2 row it belongs to gives Fc = 700 psi and Emin = 470,000 psi. Since 2026-10-18 both the beam and the column refuse a species from the other side of the 5" x 5" boundary: Step 3 says in red which table to pick from, and nothing is designed until you do. The sample now uses Douglas Fir-Larch (Timbers), No. 2 (Posts & Timbers). Its governing axial D/C went from 0.534 to 0.733 — still a pass, and now the right one.

Why can a different load combination govern bearing than bending and shear?

Short version: the load-duration factor CD scales Fb and Fv per combination, but Fc⊥ gets no CD at all — so the combination ranking changes when the capacity side stops moving. The full illustrated answer, with the D/C bar panels, lives in the NDS guide.

Engineered wood products: what's included, what's excluded, and why

Which manufactured products can I design with — and where does every number come from?

Sawn lumber and glulam come from the NDS Supplement. Everything else comes from the manufacturer's ICC-ES evaluation report — never from a generic "LVL" number — and every EWP design prints its own source ("Reference design values per ESR-1387") so a reviewer can check the same document:

FamilyProductsSource report
I-Joist (beam module only)TJI 110–560D (Weyerhaeuser); BCI 500–900 (Boise Cascade); LPI SolidStart series (LP → Pacific Woodtech)ESR-1153; ESR-1336; ESR-1305
LVLMicrollam 1.6E–2.6E; Versa-Lam 1.5E–2.3EESR-1387; ESR-1040
LSLTimberStrand 1.3E–2.0EESR-1387
PSLParallam 1.8E–2.2EESR-1387

Two honest subtleties. I-joists are never checked with grade-level Fb/Fv/E — their capacity checks use the report's tabulated moment and shear capacities per size and the tabulated EI, exactly as the reports intend. And the column module offers no I-joists at all, for the plainest possible reason: the reports publish no Fc for them, and we don't invent one.

What was excluded or parked — and why?

Georgia-Pacific GPI I-joists are parked (data intact, not selectable): GP sold its engineered-lumber business to Boise Cascade in 2016 and the APA report (PR-L276) was withdrawn — we archive the last public revision for reference but won't offer a discontinued product as a design choice. Roseburg RigidLam (ESR-1210) and Pacific Woodtech PWT LVL (ESR-2909) are listed as reference-only in the resources directory, not selectable — each added product line is a curation and verification commitment, and we only ship lines we have audited. Why LVL has two brands while LSL and PSL have one: answered in the NDS guide.

How were the manufacturer values verified?

By a dedicated audit against the archived report PDFs, which found and fixed real errors — including our own:

  • BCI series mismatch: the app had been carrying the 1.5"-flange series' moment/EI columns under the 1.31"-flange series names; corrected to the true ESR-1336 Table 2 columns (moments dropped ~10–12%; shear was identical because it is web-governed).
  • Versa-Lam Emin had been scaled from true E; ESR-1040 footnote 8 requires it from apparent E per NDS Appendix D — recomputed per grade (it had been 2.4–5.0% high).
  • SCL volume factor CV had never been applied; now applied per product with each report's own exponent and cap, with the correct simultaneity rule against CL.
  • Shear deflection is now mandatory wherever the reports require it — per-size coefficients for I-joists from each report's own formula, and the explicit 28.8wL²/(E′bd) term for LVL/LSL/PSL, shown as its own line in the deflection calc.
  • Parallam PSL columns (2026-10-18): ESR-1387 Table 1 marks the Fc of the 1.9E–2.2E grades — not 1.8E — with footnote 13. It reads "For column applications, Fc = 500 psi", or else NDS Chapter 15 with the published Fc and a minimum eccentricity e2 = t/6 + 5L²/4608. The column had been designing on the tabulated 2,700 / 2,900 psi with no eccentricity. As printed, "500" would make a 2.2E column one-fifth as strong in compression as a 1.8E one (whose Fc is 2,500 psi), so we read it as 2,500 psi with its leading digit lost. Every place the value appears says so, and the book icon quotes the footnote exactly as printed. For a short post, Fc′ drops by up to about 14% (a 2.2E post at 4 ft: 13.6%). The footnote's other route is an option in Step 4: the published Fc with NDS 15.4 (Eq. 15.4-1 to 15.4-4) and e2 applied across the narrow face, its moment resisted by the face / plank Fb, together with any lateral load in the same combination. It is not the default because it carries less. Since e2 is at least t/6, the eccentric bending stress is at least fc itself. A 2.0E 5.25x9.25 post, 10 ft pinned, carrying 30,000 lb at CD = 1.0, has an axial D/C of 0.436 on 2,500 psi and an Eq. 15.4-3 value of 0.605 on the alternative. It suits a design that should not rest on our reading of the printed "500". The route applies the footnote's minimum e2 only: a larger known eccentricity, or one parallel to the wide face (e1), is not an input.
  • TimberStrand 1.3E Fc⊥: footnote 15 sits on the face / plank Fc⊥ of 635 psi. It says that value applies to products labelled "Rim Board", and other 1.3E LSL takes 670 psi. It is not on the joist / beam Fc⊥ of 710 psi, which is the value the software uses, so 710 psi holds for every 1.3E product. No change; the reading is pinned by a test.

Every audited value is locked by a tripwire test suite whose stated purpose is that any "helpful edit" regressing an audited number fails the build. One thing this audit did not cover, and we say so: the framing module's TJI span tables (digitized from Weyerhaeuser's TJ-4000 workbooks and Trus Joist TB-805/TB-824) are on the verification roadmap but have not yet had their cell-by-cell pass — the beam-module TJI design values are audited and pinned regardless, because they come from ESR-1153, a different source.

Framing: the IBC span tables, footnote by footnote

How are the IBC 2024 rafter and ceiling-joist tables implemented?

As complete replicas — all six rafter tables, IBC 2024 Tables 2308.11.2(1)–(6), and both ceiling-joist tables, 2308.11.1(1)–(2) — digitized cell-for-cell from the ICC digital codes viewer with the code's verbatim ft-in values, every spacing block (12/16/19.2/24 in o.c.), both dead-load columns, all four species and grades. There is deliberately no interpolation: every table axis is a radio constrained to exactly the values the code tabulates, the only free entry is your span, and a span beyond the (possibly adjusted) tabulated value returns an explicit FAIL naming the table. Members the prescriptive tables can't cover route to the TJI basis or to the full NDS beam module. (Readers on other editions: IBC 2024 renumbered these from the 2308.7.x you may know.)

How is "span" measured in the rafter tables?

Along the horizontal projection of the rafter — not the sloped length — and the module says so in three places: on the span input, in the summary label, and in the result ("Maximum span (table, horizontal projection)"), with an expandable diagram. This is the convention every IBC and manufacturer roof table is written on; if you have ever wondered what happens when someone uses the sloped length instead, the hip rafter worked example quantifies exactly that mistake.

What does the ceiling-attachment question actually do?

The rafter tables assume the ceiling joists (or equivalent rafter ties) sit at the bottom of the attic space, resisting the rafters' outward thrust at the plate. StructSuite surfaces that assumption as a mandatory question, quoting it in full — never as a silent default. Answer "no" — your ties sit higher — and the module opens IBC Table 2308.11.2(7): the tabulated span gets multiplied by the HC/HR adjustment factor (1/3 → 0.67 … 1/7.5 or less → 1.00), floored to the whole inch, with the full derivation row printed: table span × factor = allowable. Separately, "ceiling attached to rafters" vs "not attached" selects entirely different table data (L/Δ 240 vs 180 deflection basis) — a stricter dataset, not a factor.

What happens when the table prints a footnote instead of a span?

Some cells of the IBC tables print a footnote marker instead of a number, meaning the tabulated span would exceed the table's 26-ft scope. StructSuite stores those cells as what they are — no invented number — displays "> 26 ft 0 in", and conservatively caps the allowable at 26 ft, printing the footnote verbatim plus a treatment paragraph explaining the cap. If an HC/HR factor applies on top, the factor multiplies the 26-ft scope and the result reports the numeric adjusted cap. Two smaller notes are honored the same visible way: spans over 20 ft print the code's lumber-availability caution, and the floor-joist tables' 2-inch end-bearing footnote is auto-applied and echoed into the summary and the report.

You got this wrong once — what was the rafter-table bug?

For a while, the rafter lookup served the 12-in.-o.c. data block for all four spacings, and the attached-ceiling path served the not-attached table's data. Consequence: 16/19.2/24-in. rafter checks ran against the longer 12-in. spans — unconservative. Concrete example: DF-L No. 2 2×8 at 16 in o.c. was being allowed 21 ft 0 in where the true table value is 18 ft 2 in (The floor and ceiling-joist tables were never affected — their spacing blocks were always distinct.) The fix was to digitize all six tables in full rather than patch the lookup, lock representative cells across both formerly broken dimensions with regression pins, and browser-verify that a case the old data passed now fails. We publish this because a span-table bug is exactly the kind of thing engineers deserve to know their tools have had, found, and permanently pinned against.

Shear walls: the plan distributes, each line designs, the base connects

How does the shear wall module distribute story shear to wall lines?

The method is the flexible-diaphragm tributary distribution, the wood-frame default, and the module's distribution engine computes it for both load cases at once (the arithmetic is regression-pinned — see the next question). Step 1 of the module is the building plan, for one line or many: a structural grid with a line at every line of resistance, building corner and wall end (letter grids one way, number grids the other — the label carries the direction, and only the main grids are named), the footprint checked bay by bay on the plan between the named grids (L, T and U shapes included), and the shear walls checked on the plan as the grid segments between wall ends — no wall coordinates are typed. One line of resistance in a direction takes 100% of that direction's story force and needs no footprint; two or more lines need one, and the force distributes. Every input is then entered once, at its own scope: the story forces and ρ of each direction, SDS and the Seismic Design Category for the whole building (Step 2); gravity loads and the sheathing for each line, picked from a line dropdown (Steps 2–3); the hold-down, anchor bolts and end post for each shear wall, picked from a wall dropdown (Step 4, an optional step whose parts are each ticked per wall); and the collector (Step 5, optional — its seismic basis and diaphragm force for the building, its delivery for each line) — with "Apply to all lines" and "Apply to all shear walls" to copy a selection everywhere in one click. Step 6 lists every line's governing shear check. The complete method, worked on a real L-shaped building, is the wood shear wall design guide.

Why do wind and seismic split differently across the same walls?

Because they are different physics, and a single "share of V" would be wrong for one of them. Seismic force comes from mass, which for a uniform floor is proportional to tributary area; wind comes from pressure on the projected face, proportional to tributary length along the span. On a rectangular plan the two agree. On anything else they don't: for an L-shaped plan — a 60×30 ft body with a 30×20 ft wing — the three east–west wall lines take 37.5% / 50% / 12.5% of the seismic story force but 30% / 50% / 20% of the wind; the shallow wing carries 60% more of the wind than of the seismic. Those splits are computed by the distribution engine and regression-pinned in the verification suite, and it always distributes both cases — the governing combination is decided line by line, never by assuming one case controls. The shear wall design guide shows exactly this trap springing: garage piers that pass their seismic check at 88% and fail their wind check at 103%.

Can a wall be sheathed on both sides, and does the capacity simply double?

Yes, and only for identical sides. Checking "sheathed on both sides of common framing" in Step 3 puts the wall on SDPWS 2021 §4.3.5.4.1, which is two equations rather than a sum: Ga(c) = Ga(1) + Ga(2) (Eq. 4.3-3) and vn(c) = Kmin·Ga(c) (Eq. 4.3-4), with Kmin the smaller of the two sides' vn/Ga. The module restricts the second side to the same Table 4.3A row at the same fastener spacing, which is the case where Ga cancels and vn(c) is exactly 2·vn; Step 6 prints that derivation rather than just the doubled number. The restriction is deliberate and is stated where you make the choice. Dissimilar sides fall under §4.3.5.4.2 — where the combination is the greater of twice the smaller side and the larger side alone, and where the sum that many engineers reach for is permitted only for wind, only with gypsum opposite a structural panel — and a §4.3.5.4.2 wall also leaves the §4.3.5.5.1 Exception 1 capacity-proportional distribution the module uses for every wall line, which would require the general equal-calculated-deflection method instead.

What the second face does not change is the demand. The line still carries the same shear over the same wall length, so the unit shear, chord tension, hold-down sizing, end-post checks, base shear transfer and collector force are all identical with one side or two — and the module computes them from the applied load, so they do not move when the box is checked. It also turns on Table 4.3A footnote 6 for you whenever the fastener spacing is under 6 in on either face (offset panel joints, or 3 in nominal framing at adjoining panel edges with staggered nailing), and states that §4.3.7.1(5)(c)'s 980 plf trigger reads the capacity "on either side of the shear wall", so a combined 1,340 plf does not by itself demand 3x framing.

A beam or post carries a shear wall that stops above it — does the software know that is a different design?

Yes, since 2026-09-21, as an explicit assertion in Step 2 of the beam and column modules rather than something inferred. ASCE 7-22 §12.3.3.4 requires that "structural elements supporting discontinuous walls or frames of structures that have horizontal irregularity Type 4 of Table 12.3-1 or vertical irregularity Type 3 of Table 12.3-2 shall be designed to resist the seismic load effects, including overstrength of Section 12.4.3." In wood-frame work that is the post or header under a shear wall that stops at the floor below — a wall over a garage opening, or one offset from the line beneath it. Ticking the Step 2 Supports a discontinuous wall or frame checkbox takes the seismic load you entered as QE and amplifies it to Emh = Ω0QE (Eq. 12.4-7), which then runs through the §2.4.5 combinations in place of E. With Ω0 commonly 2.5 to 3.0 from Table 12.2-1, the seismic part of the demand roughly triples, and it usually governs such a member.

It stays off unless you say so, because the trigger is an irregularity in the structure, not a property of the member — the model cannot see whether the wall above lands on the wall below. Ω0 is likewise never assumed: Table 12.2-1 gives it by system — 3 for light-frame wood shear walls, 2½ with the flexible-diaphragm footnote b, other values for other systems — and asserting the condition without stating Ω0 leaves the row red and the overstrength combinations withheld rather than quietly reverting to ordinary E combinations, which would be the unconservative silence.

Worth noting for anyone checking against an older edition: this is §12.3.3.4 in ASCE 7-22. The same provision was §12.3.3.3 in ASCE 7-16, and §12.3.3.3 in 7-22 is Extreme Weak Stories.

Which modules ask for the redundancy factor ρ, and why not all of them?

Only the shear wall module asks for its value (the seismic module asks you to attest the §12.3.4.2 eligibility behind the §12.8.1.3 cap, not the number), because ρ is a property of the whole seismic force-resisting system and a beam or column module cannot evaluate it. §12.3.4.2 sets ρ to 1.3 in Seismic Design Category D, E or F unless one of two conditions is shown, direction by direction: either the notional-removal check of Table 12.3-3 passes for every story carrying more than 35% of the base shear (two bays of framing on each side of the center of mass, no more than a 35% loss of story strength when any one element is removed, and no Type 1 irregularity with TIR > 1.4 afterwards), or the structure has no horizontal irregularity in that direction and keeps two bays of perimeter framing on each side at each such story. Both need the full lateral layout, which a beam or column module never sees; asking for ρ there would only be asking you to retype what the seismic analysis already decided.

Two provisions make that a smaller gap than it sounds. §12.3.4.1 item 1 permits ρ = 1.0 outright in Seismic Design Category B or C. And item 6 permits ρ = 1.0 for "design of members or connections where the seismic load effects, including overstrength of Section 12.4.3, are required for design" — so ρ and Ω0 are alternatives, never factors that stack. A member designed under §12.3.3.4 above carries Ω0 and ρ = 1.0.

Where ρ does apply, it is applied where the system is: the shear wall module asks for it in Step 2, once per direction beside that direction's story force (§12.3.4 assigns ρ "in each of two orthogonal directions"), and forms Eh = ρ·E itself, stating "before ρ" on the load it wants. The beam and column modules take the other convention: the E you enter there is used as Eh, so enter it with ρ already included. Those modules do not yet say so on the E load itself — §12.3.4.1 is quoted only behind the book icon of the Step 2 Supports a discontinuous wall or frame checkbox. Two conventions is one more than ideal, which is why this page states both.

Does the software tell me when a wall needs 3″ framing at the panel edges?

Yes, since 2026-09-21, and it is reported as a construction requirement rather than a check — it changes no number in the design and produces no D/C, so presenting it as a pass/fail would misdescribe it. SDPWS §4.3.7.1(5) fires on any of three conditions: (a) 2″ o.c. edge nailing, (b) 10d common nails at 3″ o.c. or less, or (c) nominal unit shear capacity on either side of the wall over 980 plf in SDC D, E or F. Step 3 evaluates all three from the Table 4.3A row, the fastener spacing and the Seismic Design Category, and prints the requirement — 3″ nominal at adjoining panel edges with staggered edge nailing, or the two-2x alternative §4.3.6.1.1 permits — together with the verbatim provision.

Three readings the module is deliberate about. (c) is per side: a wall sheathed on both faces under §4.3.5.4.1 has a combined capacity that can sit far over 980 plf while neither face does, and the combined value is not what the threshold reads. "Exceeds 980 plf" is strict, so the 4″ row at exactly 980 does not trip it. And the list is material-specific: §4.3.7.3(5) for particleboard has (a) and (b) with no 980 plf condition, and §4.3.7.4 for structural fiberboard has no 3″ rule at all — the module routes each Table 4.3A row to its own section rather than generalising §4.3.7.1.

Condition (c) needs a Seismic Design Category, which the module asks for in Step 2 rather than deriving. ASCE 7-22 §11.6 reads S1, SDS, SD1 and the Risk Category, taking the more severe of Tables 11.6-1 and 11.6-2 — the shear wall module holds only SDS, and the permission to use Table 11.6-1 alone carries four conditions (period, drift period, the Cs equation, diaphragm rigidity) it cannot see. Deriving it here would be a guess dressed as a calculation. It is required only where it can change an answer: a wood structural panel row whose per-side capacity exceeds 980 plf. At or below that, and on particleboard or fiberboard, (c) cannot turn on whatever the category is, so the field is offered and recorded but never demanded. Where it does matter and is not stated, that is a red required row — quietly assuming SDC A–C is precisely the omission §4.3.7.1(5)(c) exists to prevent.

What connects the wall to the structure below — and where do those numbers come from?

The base shear transfer design — built and running in development preview while its interface is finished — sizes the connection to the wall line's governing unit shear. On a concrete foundation it checks sill-plate anchor bolts: the wood-side value is Z∥ from NDS 2024 Table 12E (sawn lumber to concrete, digitized in full and cell-verified) with CD = 1.6 and the applicable wet-service and geometry factors, alongside the prescriptive floors — IBC 2308.7.1's 1/2-inch, 6-ft-o.c., 7-inch-embedment minimums and SDPWS 4.3.6.4.3's 0.229″×3″×3″ plate washers. The concrete side (ACI 318-25 Chapter 17 breakout and seismic provisions) is stated as a limitation, not silently assumed. Over wood framing it checks Simpson A34/A35/LTP4/LTP5 framing clips from the C-C-2026 catalog table (p. 310) — only the rows whose tabulated load direction is in-plane shear parallel to the wall, using the (160) column that the catalog assigns to wind and seismic with no further increase, and applying footnote 3's over-sheathing reductions as an explicit selection rather than a default. The step also enforces the reason it exists: in Seismic Design Categories D–F, SDPWS 4.1.10 bars toe-nailed connections from transferring seismic unit shears above 150 plf (ASD) — above that, a mechanical connection is the code path.

What does the shear wall module deliberately leave to a separate design?

Since 2026-10-10 the module says so itself: Step 6 opens its Basis & assumptions table — shown when the step is expanded, and printed directly under the step's summary in the report — with the design scope, so a reader of the package never has to infer what was and was not checked. The walls are individual full-height segmented shear walls, sharing each line force in proportion to their design capacities; perforated and force-transfer-around-opening walls are not modelled. The building is one story: the story force acts at the top of the wall, and the overturning of stories above is not carried down a stacked wall. The diaphragm is flexible and distributes by tributary area and length, but is not itself designed. Three checks are stated as absent rather than silently skipped: out-of-plane wind and seismic on the face of the wall, shear wall deflection and story drift, and the orthogonal combination of the two directions on an element a wall of each direction shares — a corner post, its hold-down or footing. And every optional check that is switched off is named: with Step 4 off, each wall's chord tension and compression are reported for a separate design; with Step 4 on, the table names the walls whose hold-down, hold-down anchorage or end post is not designed, and the Step 6 D/C table marks each such hold-down or end post "Not designed" — so a blue summary never hides an unchecked chord; with the collector step off, the drag force along each line is a separate design; and the base shear transfer, still in development preview, is stated as not designed in the shipped package. The point of the table is the same as the point of this page: a package that lists what it did not do is one a plan checker can trust about what it did.

Seismic loads: the height and mass are yours; the code path is ours

How does the seismic module determine hn — and what about gable roofs?

The module never asks for hn directly: you enter the story table (each story's height and weight), and hn is computed as the sum of story heights — on screen it reads "hn = structural height as defined in Section 11.2 (sum of story heights hsx)." That hn then feeds Ta = Ct·hnx (Eq. 12.8-8, with Ct and x auto-mapped from your Table 12.2-1 system selection — wood shear walls land on the "all other systems" row) and the Table 12.2-1 structural height limit check for your SDC.

The gable-roof judgment — does hn stop at the ceiling, the mean roof height, or the ridge? — is yours, and the seismic worked example resolves it through ASCE 7-22 §11.2: with a flat ceiling acting as the top diaphragm, hn stops at the ceiling (20 ft in the example, not the 27.5-ft ridge); with a cathedral ceiling, the roof sheathing is the top diaphragm and hn is the mean roof height; it is never the ridge. The example also shows why the answer barely moves the base shear on the spectral plateau — but moves every story-force lever arm when the mass rises with the diaphragm.

How is the effective seismic weight assembled — does the software do the takeoff?

Honestly: no. You enter wx per level, and the module deliberately does not automate the mass takeoff — no assembly builder, no slope factor, no tributary-wall splitter. The judgment of where mass lands is the part of an ELF run that most needs an engineer, so instead of hiding it we published the full method in the worked example: roof dead load taken on the sloped surface and converted to plan area (×1.118 for 6:12), gable-end attic triangles, walls split tributary half-up/half-down between levels, partitions likewise — landing at a roof level heavier than the floor (45,300 vs 35,800 lb in the example house), which surprises people and drives 72% of the base shear into the roof diaphragm. The takeoff section walks every pound.

What does the module compute for diaphragms?

Fpx per ASCE 7-22 §12.10.1.1 — Eq. 12.10-1 with the 0.2·SDS·Ie·wpx floor and 0.4·SDS·Ie·wpx cap — taking wpx equal to the story weight you entered. In the worked example the floor governs both diaphragms; skipping that check would have under-designed the second-floor diaphragm by 30%. Why Fpx ≠ Fx, and when the minimum governs, is its own FAQ in the seismic guide.

Where to go next