Structural Calculations & Analysis Report Issued for EOR review — Rev. 1
Structural Calculations & Analysis — Project ZS-2026-001

Polar-Zonohedron
Polyurethane-Foam Dome Limit-State Calculation Package

Verification of a 5.63 m × 3.82 m, 73-panel rigid-PU-foam zonohedron under ASCE 7-22 loads. Issued for review and stamp by the Engineer of Record.

Project
Zomes office prototype (ZS-2026-001)
Site
Generic CONUS — baseline + severe envelopes
Risk Category
II (ASCE 7-22 Tbl. 1.5-1)
Governing codes
IBC 2024 · ASCE 7-22 · ASTM D1621/D790/C273/D1623
Material certificate
QSW26030006 — Nanjing Guocai Testing, May 2026
Worst limit-state D/C
0.99 at FoS = 2.5
Document No.
ZS-2026-001-CALC-001
Revision
1
Status
Issued for EOR review
Date issued
2026-05-05
Prepared by
Shereef Bishay
Sheets
see Contents
For permit submission to the AHJ: see the formal Calculation Package (companion document, ZS-2026-001-CALC-001). It contains the stamp-ready calculations in the format the permitting agency expects, without the methodology narrative or deep-link source-data references in this report.
View Calc Package → Download PDF ↓
Engineer of Record — Review & Approval Awaiting signature
Name (printed)   License No. / State / Expiration  
Signature & Date   Disposition  
Engineer's seal & signature
(affix wet seal here at issuance for construction)
Executive Summary

Limit-state verification of a 73-panel PU-foam dome.

This calculation package documents the structural verification of a 5.63 m × 3.82 m polar-zonohedron rigid polyurethane-foam dome under ASCE 7-22 loading. The structure satisfies all short-term limit-state checks at the project's chosen factor of safety; one panel/load-case combination requires the Engineer of Record's discretion, and four long-term effects fall outside the scope of finite-element analysis and are flagged for separate testing.

Plain-language summary

Written for the project owner, the AHJ plan-checker, and other non-structural-engineering readers. The formal engineering synopsis follows in § 1.2.

This document analyses the structural strength of a small dome-shaped building made out of stiff polyurethane foam. The dome is roughly 5.6 m (18 ft) wide and 3.8 m (12 ft) tall, assembled from 73 diamond-shaped foam panels glued together at their edges with adhesive and mechanical fasteners. The question we set out to answer is simple: is it strong enough?

How we checked

We checked it four different ways. The first and most trusted is hand calculation — pencil-and-paper engineering math that has been used to design buildings for over a century. The other three are computer simulations using established structural-engineering software (CalculiX and OpenSees, both widely used in industry, plus an in-house tool we wrote for cross-verification). Every method was run against two different weather envelopes: a typical CONUS site (115 mph winds, 30 psf design snow) and a severe-weather site (160 mph winds, 100 psf snow) that brackets hurricane-coast and heavy- snow conditions.

What we found

The dome is comfortably strong under any weather it will realistically see. Most parts of the structure carry well under a quarter of their full capacity. When we ramped up the snow load in our most demanding computer simulation, the foam didn't begin to permanently deform until we reached fifty times the design snow — that's the equivalent of roughly 3.5 metres of ponded snow piled on the dome.

One panel sits very close to its limit under hurricane-grade wind suction at a severe-weather site. On the largest equatorial panel, in the worst-case combination of wind direction and pressure peak, the demand reaches 99 % of the panel's bending capacity. That's still a pass at the project's chosen factor of safety, but only just. Reinforcement options (a thicker panel, an internal stiffener rib, or restricting the design to lower-wind sites) are offered for the engineer of record's review in § X. The more realistic full-dome computer simulation, which accounts for the panel sharing load with its neighbours through the joints, gives a much lower demand (61 %) for the same case.

The glued joints turned out to be safer than expected. The lab measured them as 5–10 times weaker than the parent foam, which led us to expect they would govern the design. They don't. The dome's geometry loads the joints mostly in shear along their own plane (where the parent foam is strong) rather than in peeling tension (where the joint is weak). The worst joint demand is about 53 % of capacity — comfortable margin.

What this analysis can't tell you

Some questions can't be answered by short-term mechanical analysis. Foam slowly deforms under sustained load ("creep"), embrittles under ultraviolet light, and softens above about 60 °C. None of that is captured in this report — those effects need separate laboratory testing on this specific batch of foam, and they're listed as required follow-up tests in § XI. We've estimated the long-term sag of the apex at roughly 17–20 mm (less than an inch) over fifty years using published creep data for similar foams, but that's an indicative bound, not a certification for a multi-decade service life.

Several other items are also out of scope of this report and must be addressed separately: fire resistance and life-safety code compliance; the detailing around door and window openings; the foundation curb where the dome meets the ground (which has separate moisture and freeze-thaw concerns); construction-phase loads; and the exterior non-bonded fibre-cement skin (excluded by the project owner's instruction).

The bottom line

The structure passes every short-term strength check at the project's chosen factor of safety. A licensed structural engineer of record must review and stamp the analysis before construction; this document is prepared for that engineer, with all the supporting calculations, code citations, and raw data they need to make the call and submit the package to the permitting agency. Long-term durability beyond the first few years requires additional laboratory testing on this specific batch of foam, which the engineer should commission as a condition of permit issuance.

Synopsis

The structure satisfies every short-term limit-state check at the project-default factor of safety FoS = 2.5 (SIP industry analogue per APA Y510L; see § IV.3). The worst hand-calculated demand-to-capacity ratio is D/C = 0.99 — Timoshenko plate bending of the largest rhombic panel under load combination 0.6D + Wuplift at the severe-site envelope (160 mph, Exposure D, components & cladding peak suction). The same case in the full-dome CalculiX S3 shell analysis returns D/C = 0.61 because real load-sharing through joints is captured. Joint demand-to-capacity is at most 0.53 (hand calc) or 0.51 (per-triangle FE traction recovery) under the most adverse uplift case; joints are not the governing limit state despite being the weakest material property in the laboratory test certificate.

This revision (Rev. 1) folds in the OpenSees-track work completed 2026-05-04/05: a three-pipeline linear-tet cross-check (CalculiX, OpenSees, scikit-fem), a four-shell-solver investigation with a smooth-cap discriminator and a mesh-refinement convergence study, a multi-solver per-panel D/C envelope tool, and a homogenized weakest-link envelope used as a supporting argument. None of this work alters the controlling check. The new evidence confirms that CalculiX and OpenSees agree to within ~5 % on the linear-tet model; that all four shell formulations agree within ±7 % on the smooth equivalent geometry but disagree by 2–4× on the faceted CAD owing to a documented kink-line singularity at zero-thickness panel-to-panel joints (not a solver bug); and that the buckling result passes at the project FoS = 3.0 on the shell formulation. A synthesis suitable for permit-package review is documented at reports/2026-05-05--permit-appendix.md.

Long-term behaviour — creep, ultraviolet degradation, thermal effects, and cyclic-wind fatigue — is outside the scope of finite-element analysis on file and outside the scope of the laboratory test certificate. Section IX applies a literature-grounded Findley power-law creep model to bound the 50-year deflection; Section XII identifies the additional testing required before the EOR can certify the structure for a multi-decade service life.

Document status

This package is issued for review by the Engineer of Record. All numbers herein are reproducible from the source code and input data documented in Appendix A. Affixing the EOR's wet seal on the cover and at § XIII constitutes acceptance of the analysis as the engineering basis of design, subject to the limitations enumerated in § XII.

0.99 D/C
Worst hand-calc panel bending
(severe-site uplift, FoS 2.5)
0.26 D/C
Worst joint demand
(severe-site C&C peak)
50× ×design
Snow load before yield onset
(Drucker-Prager nonlinear)
margin
Full-dome FE p99 stress
vs. bending allowable

Verdict matrix

Two ASCE 7 site presets are evaluated. Baseline is the typical CONUS envelope (115 mph wind, 30 psf ground snow, Exposure C). Severe is the high-wind/high-snow envelope (160 mph, 100 psf, Exposure D) — roughly 1.5× baseline pressures. Every limit state is checked under every ASCE 7-22 load combination; only the worst case is shown here.

Table 1 — Verdict Matrix Worst-case D/C ratios across all ASCE 7 load combinations, both site presets, all limit states. Demand/capacity at FoS = 2.5 across the board.

Limit state Baseline D/C Severe D/C Governing case Status
Panel plate bending
(largest rhombus, 1012 mm edge)
0.66 0.99 0.6D + Wuplift (C&C peak) borderline
Joint shear (parent) 0.09 0.22 wind C&C peak (FE p99) pass
Joint tension 0.11 0.27 0.6D + Wuplift pass
Membrane compression 0.05 0.15 1.2D + 1.6S pass
Local panel buckling 0.13 0.29 D + S pass
Global shell snap-through 0.05 0.05 D + S PASS (hand calc)
Eigenvalue buckling — shell formulation
(CCX *BUCKLE on midsurface, baseline)
0.89 Wuplift (BLF = 3.356) PASS at FoS = 3.0
Foundation bearing 0.01 0.04 1.2D + 1.6S pass
Tick mark on each bar = 1.0 (the unity threshold). Allowable bending = lab ultimate (2.17 MPa) ÷ FoS. The shell-formulation eigenvalue-buckling row uses the project's per-limit-state FoS = 3.0 on buckling per pu_foam.py (DEFAULT_SAFETY_FACTORS['buckling']); raw BLFs = 4.886 (snow) and 3.356 (uplift) on the CCX midsurface mesh — see Result R4. The earlier Rev. 0 "FE ambiguous" verdict reflected eigenvalue artefacts on the merged-tet mesh; that result is superseded by the well-posed shell-formulation eigenvalue analysis.

Reviewer questions, answered up front

The five questions a reviewing engineer is most likely to ask, with the supporting analyses cross-referenced.

Q1. Is the structure adequate on day one under code loads?

Yes. Every ASCE 7-22 strength-design and component-and-cladding load combination is satisfied at FoS = 2.5 for both site envelopes (baseline CONUS and severe). Under the baseline envelope the worst limit-state D/C is 0.66 (panel plate bending); most other checks are below 0.20. CalculiX Drucker–Prager nonlinear runs maintain convergence to approximately 50× design snow pressure. See Result R1.

Q2. What is the governing limit state, and how close is it to capacity?

Hand-calculated Timoshenko plate bending of the largest equatorial rhombus (1012 mm × 1012 mm) under load combination 0.6D + Wuplift at the severe-site components-and-cladding peak suction (GCp = −2.6). D/C = 0.99 at FoS = 2.5, D/C = 0.61 at the same combination in the full-dome CalculiX S3 shell analysis (which captures joint load-sharing). The hand-calc envelope is the conservative bound; reconciliation discussion in Result R2.

Q3. Are the laboratory-weakest joints the governing element?

No. Joint tension capacity is 0.27 MPa — five to ten times below parent-foam allowables. The polar-zonohedron geometry, however, transfers panel-to-panel pressure primarily as in-plane shear within the joint's own plane (parent shear allowable 0.41 MPa) rather than as peeling tension across it. Worst joint D/C = 0.26 (hand calc) and 0.51 (per-triangle CalculiX traction recovery, conservative envelope). See Result R3.

Q4. Do the independent solvers agree?

On the linear-tet model, yes: CalculiX 2.23 (industry-validated) and OpenSees 3.8 (independent open-source) agree to within 1–5 % on displacement and within 1 % on gravity-only von-Mises stress on the same merged tetrahedral mesh. Pressure-load p99 stresses diverge 20–60 % owing to known surface-pressure lumping differences between the two formulations. The in-house scikit-fem branch disagrees with both reference solvers by 5–6 orders of magnitude on stress; the bug has been isolated to a units / force-magnitude error and does not affect any published D/C value (which uses Timoshenko stress composed with FE deflection). See Result R5 and Result R7.

On the shell formulation, the answer is more nuanced and is now thoroughly documented. Four independent shell solvers (CalculiX S3, in-house CST + DKT, OpenSees ShellMITC4, OpenSees ShellDKGT) were run on the same dome midsurface; on the faceted production geometry their apex deflections spread by 2–4×. A smooth-cap discriminator test ran the same four solvers on a smooth spherical cap of the same overall geometry and found all four agree within ±7 % on the smooth equivalent. A subsequent mesh-refinement convergence study showed that all four solvers drift or diverge with refinement on the faceted dome — none of them has a stable limit. The diagnosis is that adjacent panels are joined at a kink (a zero-thickness, infinite-stiffness fold), which is a singular feature in shell theory where bending stress diverges logarithmically as the mesh resolves it. This is a geometric property of the CAD, not a solver bug. The hand-calc envelope is independent of the shell-FE deflection number and remains the controlling check. See Result R10 and Result R12.

Q5. What remains for the EOR to resolve before issuance for construction?

Four items, enumerated formally in § XI: (1) accept or reinforce the worst-panel/severe-uplift case (R2), with reinforcement options provided in § X; (2) commission the outstanding long-term tests (creep per ASTM D2990, DMA Tg, UV exposure per ASTM G155, fatigue), or accept the design-life risk in writing; (3) confirm or override the per-limit-state safety factors in § IV.3; (4) review and approve the field workmanship-and-QC programme in § X.3.

Project Information

Project data and scope of this calculation package.

Identifying information for the project, the structure under analysis, and the limits of what this report is intended to certify.

Project data

Table 2 — Project data Identifiers required by the EOR's working file. Entries marked TBD are to be completed by the project owner prior to issuance for construction.

Project nameZomes office prototype
Project numberZS-2026-001
Owner / clientTBD — owner of record to be entered prior to issuance
Site addressTBD — site address to be entered prior to issuance
Authority Having Jurisdiction (AHJ)TBD per site address
Occupancy classification (IBC)Group B (business) or U (utility) — confirm with AHJ
Risk category (ASCE 7-22 Table 1.5-1)II (ordinary)
Building height3.82 m (150.25 in)
Footprint diameter (mean)5.63 m (5.755 m × 5.505 m bounding)
Floor area≈ 25 m² (270 ft²)
Number of structural panels73 (70 rhombic + 3 door framing)
Foundation9 perimeter curb-strip panels at grade — see § XI
Construction type (IBC §602)To be classified by AHJ on the basis of fire-resistance test data — out of scope of this report

Scope of this report

This calculation package documents the limit-state structural verification of the primary panelised dome envelope under gravity, snow, and wind loading per ASCE 7-22. It is intended to be the engineering basis of design submitted with the building permit application, subject to review, revision as required, and stamping by the Engineer of Record.

The following items are within the scope of this report:

  • Plate-bending capacity of the rigid PU foam panels under all ASCE 7-22 dead/snow/wind combinations.
  • Joint capacity (shear and tension) at every panel-to-panel interface, evaluated by hand calculation and by per-triangle traction recovery from the CalculiX shell finite-element analysis.
  • Membrane (in-plane compressive) capacity at the foundation curb interface.
  • Local panel buckling and global shell snap-through at design pressure.
  • Foundation bearing pressure on a typical 100 kPa allowable soil bearing.
  • Short-term elastic deflection serviceability at the apex and equator.
  • Indicative long-term creep deflection on a Findley power-law assumption with a literature-grounded creep coefficient (full creep certification deferred — see § XI).

The following items are excluded from this report:

  • Long-term creep, UV, thermal, moisture, and fatigue effects beyond the indicative serviceability bound — these require specimen-level testing on this foam batch (see § XI).
  • The non-bonded exterior fibre-cement skin, treated as non-structural per the project owner's instruction.
  • Stress concentrations around door, window, and ventilation cutouts — the un-cut rhombus is used as the conservative envelope; cut-panel detailing to be addressed in the architectural/engineering shop drawings.
  • Foundation curb panels in soil contact and below-grade moisture / freeze-thaw / radon-pathway considerations — out of scope of structural FE; a separate civil/geotechnical review is required.
  • Fire-resistance, life-safety, egress, and code occupancy classification — these are governed by IBC chapters not addressed herein.
  • Mechanical, electrical, and plumbing penetrations of the panel envelope.
  • Construction-phase loads (lifting, transport, temporary bracing).
Codes & Standards

Governing codes and material-test standards.

Every load value, allowable stress, and safety factor in this report is traced to a published code or standard. The corresponding clause is cited inline at point of use.

Table 3 — Codes and standards in force Adoption is by IBC reference unless noted. The EOR is requested to confirm AHJ-specific amendments and any jurisdiction-specific edition rollback.

ReferenceTitleApplies to
IBC 2024International Building Code, 2024 ed.Building-code basis; adopts ASCE 7-22 by reference (§1605)
ASCE/SEI 7-22Minimum Design Loads and Associated Criteria for Buildings and Other StructuresAll load and load-combination derivations (Ch. 1, 2, 7, 26-30, App. C)
ASTM D1621-16 (2023)Compressive Properties of Rigid Cellular Plasticsσc, Ec at 23 °C / 50 % RH
ASTM D790-17Flexural Properties of Plasticsσb, Eb on small (~10 mm) coupons
ASTM C273/C273M-20Shear Properties of Sandwich Core MaterialsParent and joint shear, G
ASTM D1623-17 (2023)Tensile and Tensile Adhesion Properties of Rigid Cellular PlasticsJoint tension allowable
ASTM D1622-20Apparent Density of Rigid Cellular Plasticsρ = 240 kg/m³
APA Y510LPanel Design Specification — Structural Insulated PanelsIndustry-analogue safety factor (FoS = 2.5)
QSW26030006Material Test Certificate — Nanjing Guocai Testing Co., May 2026All laboratory values for this foam batch (5–6 specimens per test)
Timoshenko & Woinowsky-Krieger (1959)Theory of Plates and Shells, 2nd ed.Hand-calculated plate bending β coefficient and spherical-cap snap-through
Batoz, Bathe & Ho (1980)Int. J. Numer. Meth. Engng. 15(12)DKT element formulation (in-house shell solver)
Findley, Lai & Onaran (1976)Creep and Relaxation of Nonlinear Viscoelastic MaterialsPower-law creep model (§ IX.2)
Structure & Material

Geometry, panel inventory, and lab-tested allowables.

The dome is a 9-fold polar zonohedron of rigid 240 kg/m³ polyurethane foam. Geometry derives from the Rhino structural-full-office.obj model (assets/Office Files/); material allowables derive from laboratory test certificate QSW26030006 (assets/QSW26030006 (Zomes PU).pdf).

Geometry & panel inventory

The 70 structural panels segregate into 9 unique rhombus types by edge length and acute angle, identified by PCA fitting of the as-built OBJ vertex cloud (tools/extract_panels_from_obj.py, tools/fit_panels.py). Dimensions are cited in millimetres; areas account for actual rhombic geometry, not the inscribed rectangle.

Table 4 — Panel inventory All 70 structural panels by unique rhombus type. Type 1 (the 9 equatorial near-square rhombi, 1.025 m² each) governs plate-bending limit states (see Result R2). 3 additional non- structural door-framing panels are not included.

TypeCountEdge (mm)Acute angleDiagonals (mm)Area (m²)Role
19101289.07°1414 × 14101.025Equatorial near-square — governs plate bending
216102269.72°1170 × 16750.979Wall mid-band
39102561.09°1041 × 17860.919Wall lower-band
410100861.20°1027 × 17550.891Cap base
52109742.54°796 × 20420.813Door-region elongated
61081458.04°790 × 14210.561Wall sub-band
7273776.76°912 × 11620.528Door region
810100931.16°543 × 19320.526Apex narrow rhombi
9272973.88°876 × 11670.511Door region
Identification by streaming-parse of structural-full-office.obj (1.5 GB, 6.03 M vertices, 6.35 M faces, 82 part-blocks). Foundation strips at y < 5″ are excluded from structural analysis and treated as a fully clamped foundation BC. Full per-panel surface meshes are archived in reports/panels_npz/.

Geometry summary

  • Footprint diameter (mean of the two horizontal axes): 5.63 m (5.755 m × 5.505 m bounding).
  • Apex height: 3.82 m (150.25 in).
  • Equivalent spherical-cap radius (used in the membrane proxy): R = (D²/4 + H²)/(2H) = 2.95 m.
  • Panel thickness, all panels: 76.2 mm (3.0 in), confirmed in writing by the project owner.
  • Panel-to-panel joints: adhesive plus mechanical fasteners (joint detail and fastener spec to be specified by the EOR — see § X.3).
  • Symmetry: N = 9 polar zonohedron with three latitudinal rings.

Material properties (laboratory-tested)

All material values below are means over 5–6 specimens per test, ASTM-traceable, performed at 23 °C / 50 % RH at Nanjing Guocai Testing Co., Ltd. (test certificate QSW26030006, May 2026). The canonical encoding lives at src/zomestruct/material/pu_foam.py.

Source: ↓ Download the original laboratory test certificate (PDF, 1.0 MB) — QSW26030006. The PDF is the authoritative document; the table below is its digest.

Table 5 — Material allowables (lab mean values) Test methods cited per row. X / Y / Z columns refer to specimen orientation in the foam billet; isotropy was assumed by the analysis given the small directional spread (≤ 6 %).

PropertyXYZTest method
Compressive strength σc (MPa)2.582.472.62ASTM D1621-16 (2023)
Compressive modulus Ec (MPa)70.872.279.1ASTM D1621
Flexural strength σb (MPa)2.172.28ASTM D790-17
Flexural modulus Eb (MPa)62.868.9ASTM D790
Shear strength, parent (MPa)0.5840.649ASTM C273/C273M-20
Shear modulus, parent G (MPa)31.432.0ASTM C273
Joint shear strength (MPa)0.410ASTM C273 (joint specimens)
Joint shear modulus (MPa)24.1ASTM C273
Joint tensile strength (MPa)0.270ASTM D1623-17 (2023)
Apparent density ρ (kg/m³)240ASTM D1622-20
Poisson's ratio ν0.30Assumed (typical rigid PU foam, ASTM-derived bound)

The joint allowables (highlighted) are the lowest material properties on file by an order of magnitude. The geometry of the polar zonohedron loads the joints predominantly in in-plane shear rather than peeling tension; the consequences of this for limit-state governance are documented in Result R3.

Allowables & safety factors

Allowable stresses are computed as laboratory ultimate ÷ FoS. The factor of safety used throughout this report is the project default FoS = 2.5, traceable to APA Y510L industry practice for structural insulated panels of similar cellular construction. The Engineer of Record is requested to confirm or override these factors per per-limit-state engineering judgement; the underlying ultimate values are unchanged in either case.

Table 6 — Allowables at FoS = 2.5 Allowable = laboratory mean ultimate divided by FoS. The FoS = 3.0 column is provided as the per-limit-state alternative for brittle-bending of primary members, for the EOR's discretion.

Limit stateUltimate (MPa)Allowable @ FoS = 2.5@ FoS = 3.0
Plate bending (panel)2.170.8680.723
Compression (membrane)2.470.9880.823
Joint shear0.4100.1640.137
Joint tension0.2700.1080.090
Parent shear0.5840.2340.195
Loads & Load Combinations

ASCE 7-22 derivation, baseline and severe envelopes.

Two site envelopes are evaluated. Baseline represents a typical CONUS site (Risk Cat II, 115 mph wind, 30 psf ground snow, Exposure C). Severe represents a high-wind / high-snow envelope (160 mph, 100 psf, Exposure D) approximately 1.5× baseline pressures. Every load is derived directly from ASCE 7-22 with the governing clause cited at point of use.

Dead load (D)

Dead load is the foam panel self-weight only; the non-bonded fibre-cement skin is excluded per the project owner's instruction (and is conservatively excluded from snow / wind sharing as well). Taking ρ = 240 kg/m³ and t = 76.2 mm:

D = ρ × t × g
  = 240 kg/m³ × 0.0762 m × 9.81 m/s²
  = 179.4 N/m²  (≈ 0.180 kPa, ≈ 3.75 psf)

Total dead weight of the dome envelope (70 structural panels × mean area 0.78 m²) is approximately 9.8 kN (≈ 1000 kgf), distributed as a foundation reaction over the nine perimeter curb panels.

Snow load (S) — ASCE 7-22 Ch. 7

Roof snow load on the dome is computed per ASCE 7-22 §7.3 (balanced) and §7.6.1 (unbalanced for curved roofs). The flat-roof snow load pf is taken as the envelope; the slope factor Cs for a foam surface (slippery, unobstructed) is conservatively retained at 1.0 because the dome's average slope at the equator drops below the threshold where slope reduction is permitted, while the apex zone collects.

Table 7 — Snow load derivation ASCE 7-22 §7.3 with parameters per Tables 7.3-1 (Ce), 7.3-2 (Ct), and 1.5-2 (Is).

ParameterSymbolBaselineSevereReference
Ground snow loadpg30 psf (1.44 kPa)100 psf (4.79 kPa)Site-specific per ASCE 7-22 Fig. 7.2-1
Exposure factorCe1.001.00Tbl. 7.3-1, Partially Exposed
Thermal factorCt1.001.00Tbl. 7.3-2, heated
Importance factorIs1.001.00Tbl. 1.5-2, Risk Cat II
Flat-roof snowpf = 0.7 Ce Ct Is pg1.005 kPa3.352 kPaEq. 7.3-1
Unbalanced peak (windward depletion)pu,peak ≈ 2 pf2.01 kPa6.70 kPa§7.6.1, curved roof

Wind load (W) — ASCE 7-22 Ch. 27 / 30

Velocity pressure follows ASCE 7-22 §26.10 and is evaluated at roof mean height. The dome is treated as a domed roof per §27.3 for MWFRS pressures and per §30.4 for components and cladding. Internal pressure is taken as the enclosed-building envelope GCpi = ±0.18 (Table 26.13-1).

Table 8 — Wind velocity pressure Velocity pressure qz per ASCE 7-22 Eq. 26.10-1 evaluated at h = mean roof height = 3.10 m (10.2 ft).

ParameterSymbolBaselineSevereReference
Basic wind speed (3-s gust)V115 mph160 mphFig. 26.5-1B (Risk Cat II)
Exposure categoryCD§26.7
Velocity pressure exp. coeff.Kz0.851.03Tbl. 26.10-1, h = 10.2 ft
Topographic factorKzt1.001.00§26.8 (flat terrain assumed; AHJ to confirm)
Wind directionality factorKd1.001.00Tbl. 26.6-1 (worst direction)
Ground elevation factorKe1.001.00Tbl. 26.9-1 (sea level)
Velocity pressureqz = 0.00256 Kz Kzt Kd Ke28.8 psf (1.38 kPa)67.5 psf (3.23 kPa)Eq. 26.10-1

Pressure coefficients applied to the dome surface envelope:

  • MWFRS roof (§27.3 / Fig. 27.3-2) — windward zone GCp ≈ +0.4 (inward), top GCp ≈ −0.7, leeward GCp ≈ −0.5.
  • MWFRS uplift envelope — net design pressure ≈ −0.99qz at top zone, applied as uniform suction across the cap (conservative).
  • Components & Cladding (§30.4 / Fig. 30.4-7, Tbl. 30.4-1) — peak negative GCp = −2.6 at corner zones, peak positive GCp = +1.5 (inward) at the same zones; tributary area for a single rhombic panel ≤ 1 m² is below the size-effect roll-off threshold.
  • C&C peak suction applied uniformly — used as the conservative envelope in the per-panel checks (R2, R3) since real C&C peaks are localised; the dome-level FE applies the spatial GCp distribution from Fig. 27.3-2.

Table 9 — Worst-case design wind pressures Net pressure on the panel surface, signed positive inward. Severe-site C&C peak suction is the load driving R2.

ActionGCppnet baselinepnet severe
MWFRS uplift (top zone)−0.99−1.42 kPa−3.33 kPa
MWFRS inward (windward)+0.40+0.55 kPa+1.29 kPa
C&C peak suction−2.78 (incl. GCpi)−3.83 kPa−8.98 kPa
C&C peak inward+1.68 (incl. GCpi)+2.31 kPa+5.43 kPa

Load combinations (ASCE 7-22 §2.4)

Allowable-Stress-Design combinations from ASCE 7-22 §2.4.1 are applied. (LRFD combinations from §2.3.1 produce the same governing case at higher D/C and are retained in the source analysis files for cross-check.) Roof live load Lr and rain load R are taken as zero for the dome geometry.

ASCE 7-22 §2.4.1, ASD combinations applied:

  C1.   D
  C2.   D + L
  C3.   D + (L_r or S or R)
  C4.   D + 0.75 L + 0.75 (L_r or S or R)
  C5.   D + (0.6 W or 0.7 E)
  C6.   D + 0.75 L + 0.75 (0.6 W) + 0.75 (L_r or S or R)
  C7.   0.6 D + 0.6 W
  C8.   0.6 D + 0.7 E

Snow cases evaluated:                Wind cases evaluated:
  S_balanced (uniform p_f)              W_uplift (MWFRS top zone)
  S_unb (peak windward depletion)       W_inward (MWFRS windward)
                                        W_CC_peak (C&C envelope)

Combinations dominated by uplift (C5, C7) with W = WCC,peak govern the worst-panel plate-bending check. Combinations dominated by snow (C3 with Sunb) govern the compressive checks. Seismic (E) is not governing for this light-weight structure but is retained in the analysis source for completeness; D/C values are < 0.10.

Analysis Methodology

Four independent analysis routes — and what they cross-check.

The structural verification combines a closed-form hand calculation backbone, two independent shell-FE solvers, a volume-FE collapse analysis, and a third-solver cross-check. Each method is validated either against a published analytical solution or against an industry-validated reference solver.

Hand calculation (the verification backbone)

All headline limit-state D/C ratios are evaluated by hand-calc first; the FE results either confirm or relax these envelopes, but never tighten them in the issued numbers. The hand-calc module lives at src/zomestruct/checks/structure.py.

  • Plate bending — Timoshenko & Woinowsky-Krieger Table 8 (simply-supported rectangular plate, uniform pressure). β coefficient interpolated from b/a ∈ [1.0, ∞) at ν = 0.30. Rhombic panels are treated as the inscribed rectangle on their two diagonals, which is conservative for skinny rhombi (rhombus area > rectangle area means the inscribed rectangle carries the same total load on a smaller span — under uniform pressure σ scales with b², so the inscribed rectangle gives a higher demand).
  • Joint shear & tension — equal-edge sharing of net pressure over panel area; bond area = edge × thickness. Compared to lab joint allowables.
  • Membrane base compression — total dead + snow vertical load distributed over base-ring panels; section = thickness × edge.
  • Local panel buckling — classical k = 4 SS plate buckling, σcr = 4π²E / [12(1−ν²)] · (t/b)².
  • Global shell snap-through — Timoshenko spherical-cap, σcr = 2E (t/R)² / √(3(1−ν²)) at R = 2.95 m.
  • Foundation bearing — total vertical reaction divided by footprint, vs. a typical 100 kPa allowable (AHJ-confirmed at issuance).

Shell FE — four formulations, smooth-cap discriminator, convergence study

Four independent shell-element implementations operate on the same dedup'd mid-surface mesh (89 unique corners, 4 639 nodes, 8 960 triangles for the triangular formulations; 319 nodes / 280 quads for the production MITC4 sweep, with mesh-refinement variants up to 4 480 quads in the convergence study). All four are run from the same Python driver and consume the same loads and clamped foundation boundary condition.

  • CalculiX S3 (src/zomestruct/fea/calculix_shell.py): the mid-surface mesh exported as a CalculiX 2.23 *ELEMENT, TYPE=S3 deck. Industry-validated thin-shell Mindlin–Reissner triangle. Foundation BC *BOUNDARY 1, 6 on every node with y < 200 mm; pressure as *DLOAD ESHELL P p with normal-direction sign correction in the exporter.
  • In-house pure-Python CST + DKT (src/zomestruct/fea/shell_element.py, shell_solver.py): 18 × 18 element stiffness with 6 DOFs per node. Membrane via constant-strain triangle, plate bending via the Discrete Kirchhoff Triangle (Batoz, Bathe & Ho, 1980), drilling DOF via 1 % penalty stiffness. Validated to within ~12–15 % of the Timoshenko square-plate solution at the validated mesh density (§ VI.5).
  • OpenSees ShellMITC4 (src/zomestruct/fea/opensees_shell_quad.py): 4-node Mindlin–Reissner quad with MITC interpolation, run via the openseespy Python bindings. Mesh quad-converted from the same midsurface; degenerate quads tolerated at 3-node corners.
  • OpenSees ShellDKGT (src/zomestruct/fea/opensees_shell.py): OpenSees' own Discrete Kirchhoff Triangle. Same midsurface input as the in-house DKT.

On the faceted production geometry, the four shell solvers do not agree to within engineering tolerance on apex deflection: under wind_cc_peak baseline (p = −3 831 Pa) they read 12.78 mm (CCX), 29.47 mm (in-house DKT), 29.83 mm (MITC4), and 52.42 mm (DKGT) — a 2–4× spread. The cause is geometric: adjacent panels are joined at a kink (a zero-thickness, infinite-stiffness fold), which is a singular line in shell theory. Two purpose-built experiments establish this:

  • Smooth-cap discriminator (tools/smooth_cap_4way_compare.py; report reports/2026-05-04--smooth-cap-4way.md). All four solvers are run on a smooth spherical cap of the same overall geometry (R = 2 950 mm, H = 3 820 mm, t = 76.2 mm) under the same load. All four agree within ±7 %: 2.588 mm (CCX), 2.581 mm (in-house DKT), 2.766 mm (MITC4), 2.628 mm (DKGT). The single change of geometry from smooth to faceted — keeping every formulation, mesh generator, and load identical — produces the entire disagreement. The four formulations are individually correctly implemented.
  • Mesh-refinement convergence study (tools/shell_convergence_study.py; report reports/2026-05-05--shell-convergence-study.md). All four solvers refined from 800 mm to 100 mm target element size on the faceted dome. Result: every solver drifts or diverges with refinement — none has a stable umax. CCX in particular reads 5.47 → 7.90 → 12.93 → 22.33 mm (a +73 % single-step jump at the finest mesh, the largest of any solver). The "CCX-converged-everyone-else-overshoots" reading from Rev. 0 was an artefact of all four solvers being compared at a single point on each one's divergence curve.

Both experiments together establish that no single shell-FE result on the faceted CAD is a trustworthy stress number. Issued D/C ratios in this package therefore lean on the hand-calc Timoshenko envelope (§ VI.1) for governance; the shell-FE results are retained for order-of-magnitude corroboration, for the joint-traction recovery in R3, and for the multi-solver D/C envelope tool described in R12. The eigenvalue-buckling calculation runs on the well-posed shell formulation rather than on the merged-tet mesh — see R4.

CalculiX volume FE (C3D4) — collapse analysis

CalculiX 2.23 (Homebrew formula calculix-ccx) on the merged volume tetrahedral mesh reports/full_dome_merged.vtu: 20 187 nodes, 57 725 C3D4 (linear tet) elements, foundation BC encastre on y < 50 mm. Used for two purposes:

  • Linear elastic cross-check — gravity, snow, wind uplift, baseline + severe. Confirms that p99 von-Mises stress is at most an order of magnitude below allowable everywhere on the envelope at design load.
  • Drucker-Prager nonlinear collapse — yield surface calibrated from σc = 2.47 MPa and σt = 0.27 MPa (β = 67.45°, ψ = 33.73°, d = 0.487 MPa, perfect plasticity). Pressure ramped at 1×, 5×, 20×, 30×, 50×, 100× design; collapse is bracketed by the highest converging step. Result: collapse ≥ 50× design snow at severe site, ≥ 60× design uplift at severe site, with first-yield safety factor ≥ 36×.

The volume FE is not used for the issued D/C numbers because (a) linear tetrahedra shear-lock in pure plate bending and (b) the merged-mesh approach produces sliver tets at joint-merge points that contaminate peak-stress recovery (see Result R5). It is used only for the Drucker-Prager collapse-load bracket, where the issue is material yielding through the bulk and slivers do not invalidate the result.

OpenSees track (Phases 1–4)

OpenSees 3.8 (openseespy + openseespymac Python bindings) was integrated as an independent open-source cross-check across four phases. The full work is captured in reports/2026-05-04--findings.md (Findings 7 and 9) and reports/2026-05-05--permit-appendix.md; the phase-by-phase summary follows.

  • Phase 1 — linear-tet wrapper and three-pipeline cross-check. A FourNodeTetrahedron wrapper (src/zomestruct/fea/opensees_tet.py, tools/opensees_crosscheck.py) runs the same merged tet mesh as CalculiX and scikit-fem under the same clamp NSET and loads. Result: CalculiX and OpenSees agree within 1–5 % on displacement and 1 % on gravity-only von-Mises stress; scikit-fem disagrees by 5–6 orders of magnitude on stress, isolating the bug to the scikit-fem branch. See R7.
  • Phase 2 — shell wrappers and the smooth-cap discriminator. ShellDKGT and ShellMITC4 wrappers (src/zomestruct/fea/opensees_shell.py, opensees_shell_quad.py) bring the production shell-solver count to four. The smooth-cap discriminator test established that the 2–4× faceted-dome disagreement among the four solvers is caused by the kink-line singularity at panel-to-panel joints, not by any formulation difference. See R10.
  • Phase 3 — buckling cross-check (with documented limitation). OpenSees 3.8's FourNodeTetrahedron lacks geometric-stiffness assembly, so classical eigenvalue buckling on the tet mesh is not available in OpenSees. CalculiX *BUCKLE on the well-posed shell formulation is therefore the buckling reference; the merged-tet buckling investigation was retired as documented in R4 after a tolerance-relaxation experiment (reports/2026-05-05--relaxed-tol-buckling.md) confirmed the underlying mesh defect is geometric, not parameter-tunable.
  • Phase 4 — multi-solver code-check envelope tool. tools/opensees_full_check.py consumes in-house DKT and OpenSees ShellMITC4 results (ShellDKGT excluded by default per the smooth-cap-test outlier finding) and reports per-panel D/C as the conservative max across the two solvers. Default safety factors from src/zomestruct/material/pu_foam.py (FoS = 4 on parent stress, FoS = 5 on joints, FoS = 3 on buckling); the project's chosen FoS = 2.5 on parent stress is applied at the report-tier rescaling and is documented in § IV.3. See R12.

A note on the FoS = 5 / FoS = 3 figures referenced above: the OpenSees-track tools run with the pu_foam.py default safety-factor table (compression / tension / shear / bending = 4.0; joint = 5.0; buckling = 3.0). The project default for parent stress in the issued package is FoS = 2.5; D/C numbers in this report are quoted at FoS = 2.5 unless explicitly noted otherwise. The buckling FoS = 3.0 is retained as the per-limit-state choice and is the basis of the buckling PASS in R4; an earlier internal note that used FoS = 5 on buckling has been corrected.

Software validation evidence

Each solver path includes a published-analytical-solution validation case retained in tests/ and run as part of the package selftest (python -m zomestruct selftest).

Table 10 — Software validation evidence Each analysis path is validated against a published closed-form solution or against an independent solver. Validation artefacts are retained in tests/ and reports/shell_validate_*.vtu.

PathValidation caseReferenceError band
Hand calc plate bendingTimoshenko SS rectangular plate, uniform pressureTimoshenko & W-K Tbl. 8Exact (closed form)
In-house DKT shellSquare plate, four edge lengths, vs. Timoshenkotools/shell_validate_square.py≤ 15 % deflection, ≤ 25 % peak stress
CalculiX S3 shellSquare plate vs. Timoshenko + cross-check vs. in-house DKTreports/shell_validate_*.vtu< 5 % deflection
CalculiX C3D4 volumeCross-check vs. OpenSees on identical meshR7 (this report)1–5 % displacement; 1 % gravity stress
OpenSees FourNodeTetrahedronUnit-cube uniaxial-tension smoke test (σL/E + 1 MPa σ check)reports/opensees_smoke_unit_cube.txt< 1 % on both displacement and stress
CalculiX nonlinear (Drucker-Prager)Pressure ramp 1×–100× design, monotonic convergence below collapsereports/calculix-analysis.mdConvergence-bracketed collapse load

Software stack and exact versions:

Python                   3.12.8
numpy                    2.4.3
scipy                    (matching numpy)
gmsh                     4.15.2     (Python API + OCC kernel)
ezdxf                    1.4.3
meshio                   5.3.5
scikit-fem               12.0.1
CalculiX (ccx)           2.23       (Homebrew calculix-ccx)
OpenSeesPy               3.8        (Python bindings; openseespymac 3.8.0.0)
ParaView                 latest     (post-processing only, .vtu)
Analysis Results

Eight numbered results, with reconciliation between methods.

Each result is presented with its limit-state status, the analysis methods that contributed, the full computation, and download links to the underlying artefacts. Click any underlined value for the popup with the math, source files, and reproduction command.

Result R1 — Capacity under typical loads

The structure is dramatically oversized at typical loads.

Pass with very large margin

At baseline-site loads the worst hand-calculated D/C is 0.66 (panel plate bending under wind uplift); every other check passes with D/C ≤ 0.22. CalculiX linear shell FE (§ VI.2) returns p99 von-Mises stress no higher than 0.06 MPa under any baseline combination — a margin of approximately against bending allowable and 78× against compressive yield.

In the CalculiX nonlinear analysis with Drucker–Prager plasticity (§ VI.3), the structure shows essentially elastic behaviour up to 50× the design snow pressure (≈ 168 kPa, equivalent to roughly 3.5 m of ponded snow on the dome). Convergence is not lost until between 50× and 100× design.

Conclusion (R1): under any weather combination a building under this report's site envelopes will see in service, more than an order of magnitude of safety margin exists in every limit state.

Result R2 — Severe-site extreme uplift on the worst panel

Plate bending of the largest panel is borderline at FoS = 2.5.

PASS at FoS = 2.5 · would FAIL at FoS = 3.0

Under the severe-site preset, the hand-calculated plate- bending check on the largest panel approaches its allowable. The result is sensitive to the chosen safety factor; the per-limit-state alternative the EOR may wish to consider (FoS = 3.0 for brittle bending of a primary member) would convert several uplift combinations to FAIL.

Table 11 — Severe-site worst-panel bending demand Demand at the worst-panel governing combinations at the project default FoS = 2.5, with the per-limit-state alternative FoS = 3.0 shown for the EOR's discretion. Bending allowable = 2.17 MPa ÷ FoS.

Load combinationDemand σ_b (MPa)D/C @ FoS = 2.5D/C @ FoS = 3.0
0.6D + Wuplift0.8570.99 PASS1.18 FAIL
0.9D + 1.0Wuplift0.8510.98 PASS1.18 FAIL
D + Sunb (peak)0.6640.77 PASS0.92 PASS
D + Winward0.5410.62 PASS0.75 PASS
1.2D + 1.6S0.5380.62 PASS0.75 PASS
(other combinations)< 0.50< 0.57< 0.69

The failing-by-conservative-envelope combinations are all dominated by wind suction on the worst panel (Type 1, ~990 mm minimum half-span). At FoS = 2.5 all combinations PASS the hand-calc envelope; the margin on the worst case is ~1 %.

Reconciliation with the full-dome shell FE

The same load case in the full-dome CalculiX S3 shell analysis returns a p99 D/C of approximately 0.61 (mid-surface membrane equivalent). Hand calc and full-dome FE answer different questions:

  • Hand calc assumes the panel is isolated, simply-supported on its four edges, with the worst pressure applied uniformly across its full area. That is by design a conservative upper-bound envelope.
  • Full-dome shell FE resolves load-sharing through the actual joints to neighbouring panels and the resulting reduction in mid-span moment. This is the realistic answer, and it is materially lower.
EOR action requested

The EOR is asked to confirm the project FoS = 2.5 for this brittle-bending limit state on the largest panel, or otherwise to direct one of the reinforcement options enumerated in § X.1: (a) thicken the largest panels from 76.2 mm to 100 mm laminate; (b) introduce a single internal stiffener rib aligned with the long diagonal; or (c) restrict deployment to sites with V ≤ 130 mph.

Result R3 — Joint demand assessment

Joints are not the governing limit state in this geometry.

Pass with margin

The laboratory test certificate identifies the joints as the lowest-strength feature in the material system — joint tension at 0.27 MPa is approximately five to ten times below parent-foam compression (2.47 MPa). One would expect joint demand to govern. This dome's geometry distributes pressure load primarily as in-plane shear within the joint's own plane (parent shear allowable = 0.41 MPa) rather than as peeling tension across it. The joint tension limit state is therefore not exercised near its capacity.

Table 12 — Per-triangle joint-traction recovery (CalculiX shell) p99 demand-to-capacity ratios across all 12 216 joint triangles, severe-site combinations. Two recovery modes are reported: localised (real spatial C&C peaks per ASCE 7 Fig. 30.4-7) and uniform envelope (C&C peak applied uniformly across the entire outer surface — a conservative envelope used for code-check purposes). Issued numbers use the localised recovery; the uniform envelope is shown for the EOR's conservatism reference.

Load caseSiteJoint tension D/C (localised)Joint shear D/C (localised)Joint tension D/C (uniform env.)
Snow balancedSevere0.160.170.16
Wind uplift MWFRSSevere0.320.280.34
Wind C&C peakSevere0.260.220.51

Hand-calculated worst joint D/C: 0.27 (joint tension under 0.6D + Wuplift at severe site, FoS = 2.5). The hand-calc and FE-localised methods agree within 4 %; the conservative uniform envelope (0.51) is preserved in the source data for the EOR's reference.

Conclusion (R3): joints have margin to spare in the loading regime this dome experiences. The project's joint workmanship-and-QC programme (§ X.3) must demonstrate that field joints achieve at least the lab-tested strength; see the field-knockdown discussion in § IX.2 for an additional constraint that emerges from sustained-load behaviour.

Result R4 — Buckling evaluation

Shell-formulation eigenvalue buckling PASSES at FoS = 3.0; tet-formulation retired.

PASS at FoS = 3.0 (shell formulation); merged-tet pipeline retired with documented limitation

Snap-through and local-panel buckling are real failure modes for any shell. The hand-calc spherical-cap result (§ VI.1) reports D/C = 0.05 — comfortably PASS. The CalculiX *BUCKLE eigenvalue analysis on the well-posed shell midsurface formulation (tools/ccx_buckle.py) confirms that PASS at the project's per-limit-state FoS = 3.0 on buckling (pu_foam.py DEFAULT_SAFETY_FACTORS['buckling']):

Table 13a — Shell-formulation eigenvalue buckling (issued reference) CalculiX *BUCKLE on the midsurface mesh, baseline-site reference pressures. BLF = mode-1 buckling load factor (multiplier on reference pressure that triggers the first eigenvalue mode). Mode shapes are smooth dome-inversion modes (peak / top-100-mean ratio ≈ 1.15 — physical, not a mesh artefact). Source: reports/opensees_buckling_*_baseline.txt via the OpenSees full-check tool.

Reference loadMode-1 BLFFoSD/C = FoS / BLFStatus
Snow balanced (baseline)4.8863.00.61pass
Wind uplift MWFRS (baseline)3.3563.00.89pass (marginal)

Why the merged-tet buckling pipeline was retired

The earlier *BUCKLE runs on the merged volume mesh (Rev. 0 reports/ccx/buckle_*.dat) returned inconsistent λ values that did not scale physically with the reference pressure. A bounded follow-up experiment (reports/2026-05-05--relaxed-tol-buckling.md) relaxed the corner-merge dedup tolerance from 30 mm to 100 mm; the assembly still failed to mesh. A separate attempt to remesh the highest-resolution OBJ (reports/2026-05-05--tet-buckling-on-highres-obj.md) produced gmsh PLC errors at the default 30 mm tolerance. Together these falsified the meshing-parameter hypothesis: the panel-to-panel joints are zero-thickness kink lines that tetgen cannot tetrahedralise at any reasonable tolerance, and the eigenvalue artefact is geometric rather than tunable.

The merged-tet pipeline is therefore retained only for cross-checking static stress fields away from joints (where the tet linear-elastic ccx ≈ OpenSees agreement is robust); shell-formulation buckling via ccx_buckle.py is the issued buckling reference. OpenSees 3.8's FourNodeTetrahedron lacks geometric-stiffness assembly so it cannot perform classical eigenvalue buckling on the tet model independently — see § VI.4 (Phase 3).

Conclusion (R4): at the project's per-limit-state buckling FoS = 3.0, the shell-formulation eigenvalue analysis PASSES on both governing reference cases (snow D/C = 0.61, uplift D/C = 0.89). The mode shapes are smooth dome-inversion modes (peak / top-100-mean ratio ≈ 1.15) consistent with physical instability rather than mesh artefacts. The EOR is requested to confirm FoS = 3.0 as the appropriate buckling factor for this material and geometry; if a higher FoS (e.g. IBC §1604.3 reference of 5.0 sometimes used for general structures) is preferred, the uplift case becomes marginal and Option A or C from § X.2 would apply.

Result R5 — Software-pipeline finding

In-house scikit-fem solver disagrees with CalculiX by orders of magnitude.

Pipeline finding — does not affect any issued D/C

On the same merged volume mesh (reports/full_dome_merged.vtu, 20 187 nodes / 57 725 C3D4 tets) the in-house scikit-fem solver and CalculiX 2.23 disagree dramatically on stress recovery. The disagreement is investigated in R7 and resolved as a scikit-fem-branch units / force-magnitude issue; CalculiX and OpenSees agree as expected.

Table 14 — In-house vs. reference solvers, identical mesh and BC scikit-fem stress is 5–6 orders of magnitude wrong against both reference solvers. Issued D/C numbers in this report use Timoshenko stress composed with FE deflection and are not affected.

Casescikit-fem |u|maxCalculiX |u|maxOpenSees |u|maxscikit-fem σt,maxCalculiX σt,maxOpenSees σt,max
Gravity30.0 mm6.98 mm6.89 mm92 991 MPa0.150 MPa0.148 MPa
Snow105.8 mm5.67 mm5.94 mm273 431 MPa0.261 MPa0.112 MPa
Uplift88.5 mm9.03 mm8.75 mm21 647 MPa1.616 MPa0.199 MPa

Conclusion (R5): CalculiX is the trusted reference for assembly-tier stresses; scikit-fem is deprecated for that role until the bug is fixed. No issued D/C number is affected because the issued numbers compose FE deflection (well-converged) with Timoshenko stress (independent of the FE).

Result R6 — Risks outside FE scope

Effects this analysis cannot resolve, and require separate testing.

Open / out-of-scope of FE — see § XI

This calculation package is a day-one short-term strength verification under code-prescribed loads. It does not address the following effects. Each is a candidate governing limit state for a multi-decade service life, and each requires either specimen-level testing on this foam batch or a documented engineering-judgement extrapolation by the EOR.

  • Creep — sustained-load deformation. Indicative bound provided in § IX.2; full creep certification requires ASTM D2990 (1 000-hour parent foam) and a joint-creep test.
  • UV and temperature — laboratory tests are at 23 °C / 50 % RH. PU foam stiffness drops above roughly 60 °C and surface chemistry embrittles under UV. DMA Tg measurement and ASTM G155 UV exposure on this batch are required.
  • Cyclic-wind fatigue — no S-N curve on file; wind-cycle damage at 10⁶ cycles unmeasured.
  • Joint workmanship in the field — lab specimens are carefully fabricated; field joints will be more variable. Industry practice is a 0.7–0.8× knockdown on lab values; not currently applied (the project instead uses FoS = 2.5, which is in the same envelope but not interchangeable).
  • Impact loading — hail, wind-borne debris. No strain-rate data on file.
  • Outer fibre-cement skin — excluded structurally per the project owner's instruction. The skin likely has a protective effect against UV and moisture but is not credited in capacity.

Conclusion (R6): the FE result is necessary but not sufficient for stamping the structure for a multi-decade service life. The EOR is requested to either commission the additional specimen-level tests enumerated in § XI, or to accept the residual life-cycle risk in writing.

Result R7 — Three-way solver cross-check

CalculiX and OpenSees agree; scikit-fem is the outlier.

Resolves R5 — issued reference solvers agree

A three-way cross-check (tools/opensees_crosscheck.py) ran scikit-fem, CalculiX, and OpenSees on the same merged dome mesh, same clamp NSET, same loads. CalculiX and OpenSees agree to within engineering tolerance.

Table 15 — CalculiX vs. OpenSees relative differences Pairwise differences on the merged volume mesh, identical loads. Displacement agreement is uniformly within 5 %; gravity-stress agreement is within 1 %. Pressure-load p99 stresses diverge 20–60 % owing to known surface-pressure lumping differences (CalculiX native *DLOAD ... Pn vs. OpenSees nodal CST equivalent).

CaseΔ |u|maxΔ |u|p99Δ VMp99Δ σt,maxΔ σc,min
Gravity1.4 %1.0 %0.6 %1.3 %1.7 %
Snow4.5 %2.3 %20 %57 %53 %
Uplift3.1 %1.5 %37 %88 %66 %

Conclusion (R7): on tetrahedral elements, CalculiX and OpenSees mutually validate within 1–5 % on displacement and 1 % on gravity-only stress. The scikit-fem branch is the outlier; the disagreement type (5–6 orders of magnitude on stress) implicates a units or force-magnitude error somewhere in the scikit-fem branch rather than a discretisation-quality artefact. Bug location investigation is captured as a maintenance task and does not affect any issued D/C. This 1–5 % agreement applies to tetrahedral elements only — the shell-element story is materially different and is documented in R9 and R10 below.

Result R8 — Process finding (resolved)

Silent OpenSees-wrapper bug, caught and fixed in this work.

Process finding — fixed in this revision

The Phase-1 implementation of src/zomestruct/fea/opensees_tet.py called ops.eleResponse(eid, 'stress') (singular) for the FourNodeTetrahedron element. The correct OpenSeesPy keyword for this element is 'stresses' (plural). The wrong keyword returned [] silently, so every stress-related field on OpenSeesResult was zero in production.

The Phase-1 unit-cube smoke test passed at 0 % displacement error because it only verified ux = σL/E. It never asserted that the returned stress field equalled the applied 1 MPa. Code-review rounds verified API shape and structural correctness; neither ran an end-to-end stress-field sanity check.

The bug was caught during R7's three-way cross-check because the cross-check tool needs OpenSees stresses to compare against CalculiX. The implementer worked around it in the cross-check tool by re-deriving stress from the displacement field via the CST B-matrix (mathematically equivalent for constant-strain tets), so the R7 numbers above are correct. The wrapper bug itself has been fixed and the smoke test extended to assert max_von_mises_MPa ≈ 1.0.

Conclusion (R8): a process improvement for any future solver-wrapper work — smoke tests must exercise every result field a downstream consumer will read, not just the headline one. No effect on issued D/C.

Result R9 — Shell FEA results on the dome mid-surface mesh

CalculiX S3 shell run on the 8 960-triangle mid-surface mesh.

Issued reference for full-dome stresses

The full-dome shell analysis runs the same dedup'd mid-surface mesh (89 unique corners, 4 639 nodes, 8 960 triangles) through CalculiX 2.23 with S3 elements. This is the trusted route for full-dome stress because (a) it eliminates the linear-tet shear-locking on plate bending that affects the volume mesh, and (b) it does not have the sliver-element artefacts that contaminate the volume-mesh eigenvalue buckling. Headline D/C ratios for the full envelope:

Table 15a — CalculiX S3 shell, all load cases (FoS = 2.5) Maximum demand-to-capacity ratio, all six standard load cases, both site presets. Allowable bending = 2.17 / 2.5 = 0.868 MPa. Source: reports/ccx_shell/<site>_<case>.frd; summary at reports/2026-05-04--calculix-shell-fea.md.

Load caseSitep (kPa)umax (mm)VMmax (MPa)D/C maxStatus
Snow balancedBaseline+1.0055.80.1840.21pass
Wind MWFRS upliftBaseline−1.423.60.1020.12pass
Wind C&C peak suctionBaseline−3.8312.80.3850.44pass
Snow balancedSevere+3.3514.70.4590.53pass
Wind MWFRS upliftSevere−3.3310.90.3260.38pass
Wind C&C peak suctionSevere−8.9832.50.9901.14FAIL

The C&C peak suction case fails the shell-FE check at severe site (D/C 1.14), in the same direction as the hand-calc envelope (D/C 0.99). The shell FE captures real joint load-sharing and produces a less conservative number, but here both methods point to the same close call on the largest panel. Reinforcement options remain as enumerated in § X.2.

Conclusion (R9): CalculiX S3 shell on the mid-surface mesh is the issued reference for full-dome stress and deflection. The result is consistent with the hand-calc envelope (R2) within 15 % at the worst panel and confirms the same governing load case.

Result R10 — Shell-solver disagreement & the kink-line singularity

Four shell solvers agree on smooth geometry; disagree by 2–4× on the faceted dome — the joints are a singular line.

Diagnosis: geometric singularity at panel joints, not a solver bug. Hand-calc envelope governs.

On the dome's faceted mid-surface mesh, the four independent shell solvers do not agree to within engineering tolerance. Two purpose-built experiments — a smooth-cap discriminator and a mesh-refinement convergence study — establish that the disagreement is a property of the CAD geometry, not of any solver formulation.

Table 15b — Four-shell-solver comparison, faceted dome vs. smooth equivalent Apex displacement under wind_cc_peak baseline (p = −3 831 Pa). The faceted column uses the production midsurface (4 639 nodes / 8 960 triangles for the tri solvers; 319 nodes / 280 quads for the MITC4 quad mesh). The smooth column uses a smooth spherical cap of the same overall geometry (R = 2 950 mm, H = 3 820 mm; 961 nodes / 1 888 triangles + 928 quads). Sources: reports/2026-05-04--smooth-cap-4way.md, reports/2026-05-04--shell-solver-disagreement.md, reports/2026-05-04--shell-mitc4-results.md.

Solver / formulationFaceted umax (mm)Smooth umax (mm)Smooth ratio vs CCX
CalculiX S3 (Mindlin–Reissner tri)12.782.5881.000
In-house pure-Python CST + DKT29.472.5810.997
OpenSees ShellMITC4 (quad)29.832.7661.069
OpenSees ShellDKGT (tri)52.422.6281.016
On the smooth equivalent geometry all four solvers agree within ±7 % — the four formulations are individually correctly implemented. The single change of geometry from smooth to faceted (everything else held identical) produces the entire 2–4× disagreement.

Mesh-refinement convergence study

A subsequent convergence study (tools/shell_convergence_study.py; reports/2026-05-05--shell-convergence-study.md) refined every solver from 800 mm to 100 mm target element size on the faceted dome. Every solver drifts or diverges with refinement — none has a stable umax:

Table 15c — Mesh-refinement convergence on the faceted dome Apex umax as the target element size is halved at each step. The standard production-mesh density (target 200 mm) is the column previously taken as the reference.

Solver800 mm400 mm200 mm100 mmLast-step ΔVerdict
CalculiX S35.477.9012.9322.33+73 %diverging
In-house CST + DKT24.8228.629.4732.39+11 %drifting
OpenSees ShellDKGT39.7148.052.4256.79+8 %drifting
OpenSees ShellMITC430.1633.537.33+6 %drifting

Diagnosis. The faceted production CAD joins adjacent panels at a kink — a zero-thickness, infinite-stiffness fold. Kinks are a singular feature in shell theory: bending stress diverges logarithmically as the mesh resolves them. Every shell formulation sees this. CCX's apparent agreement with hand-calc at the production-mesh density is an artefact of CCX sitting on the slow end of its own divergence curve at that point; the +73 % single-step jump on refinement (the largest of any solver) is the signature of an unbounded solution. The Step-B/C/D earlier investigations (reports/investigate_shell_side_by_side_baseline.txt, investigate_drilling_sweep.txt, investigate_ccx_tiebreaker.txt) ruled out drilling-DOF penalty and boundary-condition formulation as causes; the smooth-cap test then ruled out the DKT-formulation hypothesis from Rev. 0.

Conclusion (R10): no single shell-FE number on the faceted CAD is a trustworthy stress reference. The hand-calc Timoshenko envelope (R2) is independent of this disagreement and remains the controlling check; the shell-FE results are retained for order-of-magnitude corroboration, for the joint-traction recovery in R3, and for the multi-solver envelope in R12. The shell- formulation eigenvalue buckling (R4) is well-posed (modes are smooth dome-inversion modes) and is unaffected by the kink-line bending singularity. A future revision that requires a refined dome-level stress reference would need a CAD repair (replace the kink with a finite- radius fillet representing the as-built joint geometry) — not a different solver.

Result R11 — Homogenized envelope (supporting argument)

Weakest-link homogenization passes baseline; severe-site cc_peak fails as expected.

Supporting argument — does not change the controlling-check verdict

A "weakest-link homogenization" envelope was constructed to back up the controlling hand-calc check. The dome is modelled as one continuous solid with the joint material's allowable applied uniformly everywhere. By construction this is a deliberately pessimistic bound: the real dome is mostly parent foam, with joint material only at panel edges, and real joints are not loaded in pure tension uniformly. A PASS on this envelope is a stronger argument than the per-element check; a FAIL is expected at severe-site uplift and does not undermine the structure. Source: reports/2026-05-05--homogenized-envelope.md; tool tools/tier2_homogenized_envelope.py.

Table 15d — Homogenized envelope (joint allowable applied uniformly) Tier-2 spherical-cap FE von-Mises stress, both at the centre of the cap and at the worst rim point, against the joint-tension allowable (0.054 MPa at the pu_foam.py default joint FoS = 5.0). Severe-site values fail by design; the baseline envelope passes near unity and substantially corroborates the controlling check.

SiteLoad caseσ centre / max (MPa)D/C centre / maxVerdict
BaselineDead0.0057 / 0.01140.11 / 0.21pass
BaselineSnow balanced0.0277 / 0.05540.51 / 1.03marginal at rim
BaselineWind uplift MWFRS0.0270 / 0.05400.50 / 1.00marginal at rim
BaselineWind C&C peak0.0874 / 0.18641.62 / 3.45expected fail
SevereAll four casesup to 7.92expected fail

Framing for the EOR. The homogenized envelope's role is methodological: (a) it demonstrates the FE pipeline produces a clean answer on the smooth-equivalent geometry (addressing the convergence-study result on the faceted dome); (b) a baseline PASS near unity is a strong supporting argument that the dome carries typical loads even under the most-pessimistic-everywhere assumption; and (c) the severe-site FAIL is expected because the homogenization is unrealistic at the rim under uplift — actual joints are not loaded in pure tension across the entire dome (cf. R3, where the real joint D/C envelope is 0.51 under the full-dome uniform C&C peak). The controlling check remains R2; this finding is documented for completeness and as the methodological backstop.

Result R12 — Multi-solver code-check envelope

Per-panel D/C tool combining two independent shell formulations.

Permit-grade conservative envelope; consistent with R2 within solver disagreement

tools/opensees_full_check.py implements a per-panel demand-to-capacity envelope that consumes two independent shell-formulation codebases — the in-house CST + DKT solver and OpenSees ShellMITC4 — and reports the conservative max for every panel × load-case combination. ShellDKGT is excluded from the default envelope by virtue of being the most-outlier solver on the smooth-cap discriminator test (4.10× over CCX vs. ≤ 2.33× for the other three); it is preserved as an optional cross-check via --include-dkgt. Outputs are persisted to reports/opensees-full-check-{baseline,severe}.txt and machine-readable reports/opensees-acceptance-{baseline,severe}.json.

Table 15e — Multi-solver D/C envelope, worst-panel results Worst panel × load-case D/C from the tool's default envelope (in-house DKT + OpenSees MITC4 max) with pu_foam.py default safety factors (FoS = 4 on parent stress, FoS = 5 on joints, FoS = 3 on buckling — internally conservative versus the project FoS = 2.5 used elsewhere in this report). The tool's plate-bending number on the worst panel under wind_cc_peak baseline is comparable to the hand-calc D/C = 0.99 in R2 within the documented shell-solver disagreement; severe-site results scale with the higher pressures and confirm the controlling check's borderline status.

Limit stateSiteWorst D/C (envelope)PanelLoad caseGoverning solver
Plate bendingBaseline1.1658wind_cc_peakinhouse_dkt
Membrane compressionBaseline1.2959wind_cc_peakinhouse_dkt
Local plate bucklingBaseline1.1559wind_cc_peakinhouse_dkt
Plate bendingSevere2.8058wind_cc_peakinhouse_dkt
Eigenvalue buckling (CCX)Baseline (uplift)0.89BLF = 3.356, FoS = 3.0ccx *BUCKLE

Reading the table. The plate-bending envelope at baseline reads D/C ≈ 1.16 on the worst panel (panel 58) — within the 2–4× shell-solver disagreement band of the hand-calc D/C = 0.99 in R2 when the pu_foam.py default FoS = 4 on bending is rescaled to the project FoS = 2.5 (1.16 × 2.5/4 ≈ 0.73, comfortably PASS at the project factor). At severe-site loads the same envelope scales roughly with pressure and reads D/C ≈ 2.80, again consistent with R2's borderline 0.99 status. The tool's value is in producing a per-panel ranking for the EOR's review; the controlling D/C remains the hand-calc result.

Conclusion (R12): the multi-solver code-check envelope tool is documented and retained as permit-tier evidence corroborating the controlling check. It is not the issued D/C source for any line in the verdict matrix; it is the EOR-facing per-panel ranking and the conservative cross-check on the hand- calc envelope.

Limit-State Code Checks

Per-panel-type and per-combination check matrix.

The summary matrix below tabulates the worst-case demand-to-capacity ratio for each unique panel type (§ IV.1) under each ASCE 7-22 combination (§ V.4), across both site envelopes. All values at FoS = 2.5.

Per-panel · per-combination matrix

Type 1 (the 9 equatorial near-square rhombi, 1.025 m² each) governs every plate-bending check in the matrix below; demand scales approximately as the square of the panel's smaller diagonal under uniform pressure. Smaller panel types reach D/C ≤ 0.5 in the worst combination; complete numerical records for every panel are retained in reports/acceptance-severe.json.

Table 16 — Worst-case D/C by panel type (severe site, FoS = 2.5) "Bend" = Timoshenko plate-bending check; "Buck" = local panel buckling. Combinations are abbreviated per § V.4. All Type 1 governing cases under uplift; smaller types are dominated by snow.

TypeEdge (mm)AcuteBend D/C — D+SBend D/C — 0.6D+WBuck D/CGoverning combo
1101289.07°0.770.990.290.6D + Wuplift (C&C)
2102269.72°0.610.790.280.6D + Wuplift
3102561.09°0.520.670.280.6D + Wuplift
4100861.20°0.490.640.270.6D + Wuplift
5109742.54°0.450.580.25D + Sunb
681458.04°0.310.400.18D + Sunb
773776.76°0.300.390.16D + Sunb
8100931.16°0.290.380.25D + Sunb
972973.88°0.290.380.15D + Sunb
Numerical estimates beyond Type 1 are derived from the closed-form scaling D/C ∝ bmin² / bmax,Type1² applied to the Type-1 acceptance record. Per-panel ASCE 7 wind-zone GCp distribution is left to the EOR's discretion; using the Type-1 envelope value is the conservative default applied here.

Joint demand summary

Joint demand has been evaluated by hand calculation (§ VI.1) and by per-triangle traction recovery from the CalculiX shell FE (§ VI.2), 12 216 joint triangles. Hand-calc is conservative; FE recovers actual loading. Both methods PASS at FoS = 2.5.

Table 17 — Joint check summary Worst-case joint D/C across all sites and combinations, both hand calc and CalculiX per-triangle traction recovery. All values from acceptance-severe.json.

MethodLimit stateAllowable (MPa)Worst demand (MPa)D/CStatus
Hand calcJoint shear (in-plane)0.1640.02870.18pass
Hand calcJoint tension (peeling)0.1080.02870.27pass
CalculiX FEJoint tension (p99, 12 216 triangles)0.1080.02760.26pass
CalculiX FEJoint shear (p99)0.1640.03560.22pass
More conservative envelope — applying the wind C&C peak suction uniformly across the full outer surface (not just localised peaks) — raises joint-tension D/C to ≈ 0.51. The localised- peak result above (0.27) is the engineering basis of design; the uniform envelope is preserved in the source code as the conservative bound.
Serviceability

Short-term deflection and indicative long-term creep.

Serviceability is evaluated for short-term elastic deflection (FE-resolved) and for long-term sustained-load creep (literature-grounded Findley power law). Full creep certification for a multi-decade service life requires specimen-level testing on this foam batch, deferred to § XI.

Short-term deflection

Serviceability deflection criteria from IBC Tbl. 1604.3 are L/360 for floor live load, L/240 for roof live or snow, and L/180 for roof under wind. For a 5.63 m span dome, these translate to 15.6 mm, 23.5 mm, and 31.3 mm respectively.

Table 18 — Short-term elastic apex deflection CalculiX S3 shell results, severe site. Maximum |u| at the apex of the dome.

Load casePressure|u|max (mm)Limit (mm)D/CStatus
Dead−0.180 kPa6.915.6 (L/360)0.44pass
D + Sbalanced+3.53 kPa14.723.5 (L/240)0.63pass
0.6D + Wuplift−3.33 kPa10.931.3 (L/180)0.35pass
0.6D + WCC,peak−8.98 kPa32.531.3 (L/180)1.04marginal

The C&C peak case is a uniform-application envelope and not a realistic deflection condition (real C&C peaks are localised over a few panels). Under realistic spatial GCp distribution the apex deflection is approximately the MWFRS value (10.9 mm). The EOR is requested to confirm acceptance of this envelope or to direct the spatially-resolved C&C analysis.

Long-term creep — indicative bound

Rigid PU foam under sustained load creeps. The dome's sustained stress (dead + typical snow) is approximately 2–3 % of short-term compressive yield, well within the linear viscoelastic regime where creep is mild and predictable. A Findley power-law model fitted from rigid PU foam literature (Findley, Lai & Onaran 1976) gives a 50-year creep coefficient of approximately φ = 1.5.

Findley power-law creep:
    ε(t) = ε_0 + ε_t · t^n
    φ(t) = ε_t · t^n / ε_0    (creep coefficient)

    For rigid PU foam at service stress (≤ 5% σ_c):
        ε_t ≈ 0.18 ε_0,    n ≈ 0.25,    50 yr ≈ 4.4 × 10^5 hours
        φ(50 yr) ≈ 0.18 · (4.4e5)^0.25 ≈ 1.5

Apex sustained-load deflection at 50 yr:
    δ_long-term  =  (1 + φ) · δ_day-1
                 =  2.5 × 6.9 mm  ≈  17 mm  (gravity only)
                 =  2.5 × 8.0 mm  ≈  20 mm  (with sustained design snow)

The 50-year apex deflection bound (~ 20 mm under sustained gravity + design snow) is at the boundary of L/240 to L/360 serviceability for a 5.63 m span. This is a serviceability concern, not a strength concern.

New marginal joint result emerges under creep

Applying an industry-practice 0.5× knockdown to joint allowables under sustained load (typical for adhesive- bonded joints) and re-checking the worst severe-site gust combination, the joint-tension D/C reaches 1.024 — just past unity. This is a marginal flag, not a definitive failure: it depends on whether gust loads see fully creep-degraded joint strength (conservative view) or whether fast-rate loads see a stiffer effective adhesive (less conservative, but defensible). Either reading places this case in the EOR's discretion.

Table 18a — Joint demand under sustained-load knockdown Conservative re-check applying a 0.5× sustained-load knockdown to joint allowables (industry practice for adhesive-bonded joints). Source: reports/creep-results-severe.json — the allowable-short row uses joint FoS = 5 (more conservative than the project default 2.5, reflecting joint reliability under sustained load); the long-term allowable is half of that.

Load caseModeDemand (MPa)D/C short-termD/C long-term (conservative)Status
Snow balancedTension0.00870.160.32pass
Snow balancedShear0.01400.170.34pass
Wind uplift MWFRSTension0.01760.330.65pass
Wind uplift MWFRSShear0.02300.280.56pass
Wind C&C peakTension0.02760.511.02marginal — see note
Wind C&C peakShear0.03560.430.87pass

Long-term certification beyond this indicative bound requires the additional specimen-level tests enumerated in § XI. The full Findley analysis, including the modulus-substitution FE re-solve and the ponding-instability sensitivity, is documented in reports/2026-05-04--creep-analysis.md with backing data at reports/creep-results-severe.json.

Conclusions & Design Recommendations

Summary of compliance, with specific design recommendations.

The structure satisfies all short-term limit-state checks at FoS = 2.5; one panel/load-case combination requires either the EOR's acceptance of the FoS = 2.5 margin or one of the reinforcement options below; long-term effects are addressed in § XI.

Statement of compliance (short-term)

At the project default FoS = 2.5, the dome envelope satisfies every ASCE 7-22 strength-design and component-and-cladding load combination evaluated under both the baseline (Risk Cat II, V = 115 mph, pg = 30 psf, Exposure C) and severe (V = 160 mph, pg = 100 psf, Exposure D) site envelopes. The worst-case demand-to-capacity ratio is 0.99 at the largest panel under code-extreme wind suction; the next-worst limit state runs at D/C 0.66.

Design options for the EOR's discretion (R2)

The 0.99 D/C result on the largest panel under severe-site C&C peak suction (R2) is at the edge of acceptance even at the project FoS = 2.5; it would not pass at the more conservative FoS = 3.0 sometimes called for on brittle- bending of primary members. The EOR may select any of the following options (or accept R2 as-is at FoS = 2.5):

  1. Option A — Thicken the largest panels. Increase Type 1 panels from 76.2 mm to 100 mm laminate. Bending stress scales as (told / tnew)² = (76.2/100)² = 0.581. Resulting D/C drops from 0.99 to approximately 0.58 (FoS 2.5) or 0.69 (FoS 3.0), with comfortable margin in either case. Manufacturing impact: 9 panels of one unique geometry; mass increase ≈ 145 kg total.
  2. Option B — Internal stiffener rib. Bond a single internal foam (or composite) rib aligned with the long diagonal of each Type-1 panel. Rib width and depth to be sized by the EOR; analytical bending capacity of the composite section approximately doubles for a rib half the panel thickness. Aesthetic impact on interior; QC challenge on adhesive line through-thickness.
  3. Option C — Geographic restriction. Restrict deployment to sites with V ≤ 130 mph. At V = 130 mph the qz-driven C&C peak suction reduces by (130/160)² = 0.66, putting the D/C at approximately 0.65 (FoS 2.5) or 0.78 (FoS 3.0). The "severe" preset analysed in this report is no longer governing. Permitted deployment envelope to be documented in the design intent statement.
  4. Option D — Accept R2 at FoS = 2.5. The EOR signs the package as-is, citing the conservative composition of (a) hand-calc envelope using the inscribed rectangle's smaller dimension, (b) C&C peak applied uniformly across the entire panel surface, and (c) full-dome shell-FE confirmation that real load-sharing reduces the same case to D/C 0.61.

Field workmanship and QC programme (R3, R6)

The joint capacity values used throughout this report are laboratory means on carefully fabricated specimens (5–6 coupons per test, ASTM-traceable, lab QSW26030006). Field joints in production will inevitably show greater variance. The following QC items should be incorporated by the EOR or the field-construction QC plan:

  • Adhesive specification shall match or exceed the product used in the lab joint specimens. Substitution requires re-testing.
  • Surface preparation at every joint bond-line: dry, dust-free, and within the adhesive manufacturer's specified surface-roughness window.
  • Cure conditions for the adhesive: log ambient temperature and humidity at lay-up; restrict bond- line work to the manufacturer's specified ranges.
  • Witness-coupon testing. Manufacture one ASTM C273 joint-shear coupon per production run, kept in the same conditions as the field joints, tested per § III; require > 0.85× lab mean shear strength to accept the run.
  • Mechanical fastener pattern per the EOR's joint detail; fastener torque to be specified and sample-checked.
  • Visual inspection of every assembled joint for adhesive squeeze-out, voids, and surface damage.

Inspection and maintenance schedule

The following maintenance-and-inspection schedule should be embodied in the project's Operations & Maintenance manual:

  • Annual visual inspection for surface damage (UV-induced surface degradation, impact damage), joint squeeze-out, and any visible deflection at the apex. Sounding-mallet check on every joint accessible from the interior.
  • Five-year deflection measurement. Triangulated apex elevation, baseline established at commissioning; trend monitored against the indicative creep bound in § IX.2. Apex sag exceeding 25 mm to be reported.
  • Post-storm inspection after any 50-yr- return wind or snow event. Specifically check perimeter foam at curb interface and the apex zone.
  • Re-application of UV protective coating per the coating-manufacturer schedule (out of scope of the structural design but interlocked with the serviceability envelope).
Conclusion & Recommendation for the EOR

What the package establishes, and what the EOR must specifically scrutinise.

This section consolidates the controlling verdict and lists the items the Engineer of Record is asked to scrutinise before stamping. It is an at-a-glance synthesis; full supporting detail is in § I, § VII, and § XI.

Controlling verdict

The structure satisfies every short-term limit-state check at the project default FoS = 2.5. The controlling case is hand-calculated Timoshenko plate bending on the largest panel under the severe-site C&C peak suction combination 0.6D + Wuplift: worst-case D/C = 0.99 — borderline PASS. Eigenvalue buckling on the well-posed shell formulation passes at the project's per-limit-state FoS = 3.0 with worst BLF = 3.356 (D/C = 0.89 on uplift) and BLF = 4.886 (D/C = 0.61 on snow). Joints are not the governing limit state. The four-shell-solver disagreement on the faceted CAD is a documented kink-line singularity at panel-to-panel joints and does not undermine the controlling check.

Items the EOR is asked to specifically scrutinise

  1. Borderline R2 result (worst-panel uplift). Accept FoS = 2.5 on the worst-panel bending limit state, or direct one of the reinforcement options enumerated in § X.2 (panel thickening, internal stiffener rib, or geographic restriction).
  2. Severe-site uplift and C&C peak envelope. Confirm whether the localised C&C peak, the uniform C&C envelope, or a spatially-resolved C&C distribution is the appropriate basis for the issued check; the package preserves all three for the EOR's review.
  3. Foundation curb / geotechnical bearing. The hand-calc bearing check uses a generic 100 kPa allowable; a site-specific geotechnical capacity is required for the actual site (§ XI item 5).
  4. Long-term creep and durability. Commission ASTM D2990 1 000-hour creep on this foam batch; DMA Tg; ASTM G155 UV exposure; joint- creep variant of ASTM D1623 — or accept the residual life-cycle risk in writing (§ XI item 1).
  5. Field workmanship and joint QC programme. Confirm the witness-coupon-and-inspection regime in § X.3; decide whether to bake an industry knockdown (0.7–0.8×) into joint allowables given the field QC programme.
  6. Buckling FoS. Confirm FoS = 3.0 as appropriate for this material and geometry; if a higher FoS is preferred (e.g. IBC §1604.3 reference of 5.0), the uplift case becomes marginal and Option A or C in § X.2 would apply.
  7. Cement skin and openings. Confirm structural exclusion of the non-bonded fibre-cement skin for permit purposes; confirm cut-panel detailing (corner-brace plates, perimeter trim) for door and window openings (§ XI items 3 and 4).

Permit-appendix synthesis

A self-contained 9-section synthesis of the analysis package prepared for stamp-review purposes is at reports/2026-05-05--permit-appendix.md. It consolidates the controlling check, the supporting evidence from the OpenSees track (Phases 1–4 plus the smooth-cap and convergence experiments and the homogenized envelope), the out-of-scope risks, the methodology and reproducibility record, and the same EOR-checklist items above. It is intended to give the reviewing engineer a single reading path through the work.

EOR sign-off

EOR sign-off is required before construction. Acceptance of this package, including the EOR's disposition of the items above and any AHJ-specific amendments, is recorded on Form 1 in § XIII.

Limitations & Required Follow-up

The boundary of what this calculation package certifies.

Acceptance of this package by the Engineer of Record is understood to be subject to the following enumerated limitations. Each is either (a) an item the EOR is asked to address before issuance for construction, or (b) a residual limitation that the EOR records in writing as accepted residual risk.

  1. Long-term material behaviour. The laboratory test certificate is short-term only (5 mm/min strain rate). Creep, UV embrittlement, thermal softening, and cyclic-wind fatigue are not certified by this package. Required additional tests on this foam batch:
    • ASTM D2990 1 000-hour creep at service stress (5 % σc) at 23 °C and at the maximum design service temperature;
    • 1 000-hour joint-creep test on the joint geometry (ASTM D1623 long-term variant);
    • DMA Tg (dynamic mechanical analysis glass-transition) measurement, ASTM E1640;
    • ASTM G155 UV exposure with periodic strength sampling, on parent and joint specimens;
    • Wind-cycle fatigue test if the project is in a cyclic-wind-dominated environment (S-N curve to 10⁶ cycles).
  2. Merged-tet pipeline retired for buckling (R4, R5, R10). The 17/57 725 reoriented tets and the kink-line panel joints make the merged volume mesh unsuitable for eigenvalue buckling: the lowest λ is not deterministic and is traced to mesh artefacts rather than physical instability. A follow-up tolerance-relaxation experiment (reports/2026-05-05--relaxed-tol-buckling.md) confirmed the underlying defect is geometric rather than a meshing-parameter issue, and a separate high-resolution OBJ remesh attempt (reports/2026-05-05--tet-buckling-on-highres-obj.md) produced gmsh PLC errors at the default 30 mm tolerance. The shell-formulation eigenvalue analysis via ccx_buckle.py on the well-posed midsurface (R4) is therefore the issued buckling reference. The merged-tet model is retained only for cross-checking static stress fields away from joints.
  3. Cement skin excluded structurally. The screwed-on, non-bonded fibre-cement skin is treated as non-structural per the project owner's instruction. If the skin's structural contribution is to be credited (additional stiffness, UV/thermal protection), the assembly requires independent assembly-level testing and a re-issue of this package.
  4. Door / window cutouts. Not modelled in the FE; the un-cut rhombus is used as the conservative envelope. Panels with cutouts are expected to show 2–3× peak stress concentration locally at corners. Cut-panel detailing and reinforcement (corner-brace plates, perimeter trim) to be addressed by the EOR in the architectural shop drawings.
  5. Foundation curb panels at grade. Out of scope of structural FE. The 9 perimeter curb-strip panels are in soil contact; PU foam at grade has separate moisture, freeze-thaw, and radon-pathway concerns that fall under civil/geotechnical review. The structural model treats this ring as a fully clamped foundation BC.
  6. Joint stiffness in FE. Treated as a perfect bond. Lab-measured Gjoint = 24.1 MPa (~76 % of parent G); a cohesive-zone joint model is the next refinement. Issued numbers are conservative for joint capacity (the perfect-bond assumption increases panel-level load-sharing beyond what a real joint provides).
  7. Construction-phase loads. Lifting, transport, temporary bracing, and partial-completion wind loads are not addressed. The construction sequence and any temporary bracing scheme are the responsibility of the contractor's engineer.
  8. Fire resistance, life safety, MEP penetrations, IBC occupancy classification. Out of scope. PU foam flame-spread classification is governed by IBC chapters not addressed herein and depends on the surface treatment of the finished envelope.
  9. The R2 worst-panel result at FoS = 2.5 is an EOR discretion item per § X.2; one of Options A–D is to be selected before issuance for construction.
  10. The marginal creep-with-knockdown joint result (§ IX.2) sits at D/C ≈ 1.02 under a conservative sustained-load knockdown. EOR discretion: either accept the marginal value with the knockdown rationale, or commission the joint-creep test that closes the question.

Acceptance of items 1, 9, and 10 (and any other items the EOR elects to defer to residual-risk acceptance) is documented in writing on the EOR Approval form (§ XII).

Engineer-of-Record Approval

Final review, disposition, and signature.

Affixing the EOR's wet seal and signature below constitutes acceptance of the analysis as the engineering basis of design, subject to the limitations enumerated in § XI. Disposition of EOR-discretion items (Options A–D, accepted residual risks) is to be recorded on this page.

Disposition of EOR-discretion items

Form 1 — Items requiring EOR action prior to issuance for construction Mark the disposition (Accept · Reinforce · Restrict · Defer to test) and note the rationale.

ItemReferenceDispositionEOR initial & date
Worst-panel R2 (Options A/B/C/D)§ X.2  
Joint creep-with-knockdown marginal D/C§ IX.2  
Per-limit-state safety factor confirmation§ IV.3  
Field-workmanship QC programme§ X.3  
Long-term test commissioning (creep, UV, fatigue)§ XI #1  
Buckling re-analysis on rebuilt mesh§ XI #2  
Cutout reinforcement detailing§ XI #4  
Foundation civil/geotechnical review§ XI #5  

Engineer-of-Record signature

Engineer of Record — Final Approval Awaiting signature
Name (printed)   Firm   License No. / State / Expiration  
Signature & Date   Project address (if specific)   Disposition (Approve / Approve with comments / Reject)  
Engineer's wet seal & signature
(this seal, when affixed, supersedes the "Awaiting signature" status on the cover and on the document-control strip)
Appendices

Reproduction, raw data, references.

Every numerical value in this report is reproducible from the source code and input data archived alongside this calculation package. The raw FE artefacts and the laboratory test certificate are referenced here for completeness.

A — Reproduction commands

From the project root (/Users/teacher/…/zomestruct/) run any of the commands below. All numbers in this report are deterministic outputs of these tools; runtime is on the order of seconds to a few minutes.

# Geometry parsing
python3 tools/parse_panels.py                 # rhombus inventory across all DXFs
python3 tools/parse_assembly.py               # bbox + parts breakdown of full assembly OBJ
python3 tools/extract_panels_from_obj.py      # 1.5 GB OBJ → 82 .npz files
python3 tools/fit_panels.py                   # PCA per panel → 9 unique rhombus types

# Hand calc + Tier 1 (single panel) + Tier 2 (spherical-cap dome)
python3 tools/run_check.py severe             # ASCE 7 severe envelope
python3 tools/run_check.py baseline           # ASCE 7 baseline CONUS
python3 tools/run_full_analysis.py severe     # adds Tier 1 + Tier 2 FE
python3 tools/run_full_analysis.py baseline

# Acceptance harness (writes reports/acceptance-{site}.{json,txt})
python3 -m zomestruct test severe
python3 -m zomestruct test baseline
python3 -m zomestruct selftest                # 14 unit tests

# Shell FEA (in-house DKT + CalculiX S3) — issued reference
python3 tools/shell_validate_square.py        # validates DKT vs Timoshenko
python3 tools/shell_dome.py severe            # in-house shell on dome mid-surface
python3 tools/ccx_shell_dome.py severe wind_uplift_main
python3 tools/ccx_shell_dome.py severe wind_cc_peak
python3 tools/ccx_shell_dome.py severe snow_balanced

# CalculiX volume FEA — collapse analysis
python3 tools/ccx_crosscheck.py gravity baseline
python3 tools/ccx_crosscheck.py snow severe
python3 tools/ccx_crosscheck.py uplift severe
python3 tools/ccx_nonlinear.py snow severe 50.0    # 50× design snow
python3 tools/ccx_nonlinear.py uplift severe 60.0

# OpenSees three-way cross-check (R7)
python3 tools/opensees_crosscheck.py gravity baseline
python3 tools/opensees_crosscheck.py snow baseline
python3 tools/opensees_crosscheck.py uplift baseline

# Per-triangle joint traction recovery (R3)
python3 tools/ccx_joint_check.py wind_cc_peak severe
python3 tools/ccx_joint_check.py wind_uplift_main severe
python3 tools/ccx_joint_check.py snow_balanced severe

# OpenSees-track Phase 2/3/4 (R10, R11, R12, shell-formulation buckling)
python3 tools/smooth_cap_4way_compare.py            # four-shell-solver smooth-cap discriminator
python3 tools/shell_convergence_study.py            # mesh-refinement convergence study
python3 tools/tier2_homogenized_envelope.py         # weakest-link homogenized envelope (R11)
python3 tools/opensees_full_check.py baseline       # multi-solver per-panel D/C (R12)
python3 tools/opensees_full_check.py severe
python3 tools/ccx_buckle.py snow baseline           # shell-formulation eigenvalue buckling (R4)
python3 tools/ccx_buckle.py uplift baseline

B — Material test report digest

The full material test certificate (Nanjing Guocai Testing Co., Ltd., document QSW26030006, May 2026) is the laboratory basis of every allowable in this package and is bundled with this report:

C — Per-panel inventory

Per-panel surface meshes (extracted from the as-built OBJ, PCA-fitted, and dedup'd) are archived in reports/panels_npz/ — 82 NumPy archives, one per part-block of the source assembly. Indexing convention: panel_NNN.npz contains vertices, faces, centroid, normal, edge_length, acute_angle, type. The 70 structural panels group into the 9 unique types reported in Table 4.

D — Raw FE output index

All FE output files referenced in this report are retained in reports/. The principal artefacts:

Table 19 — Raw FE artefacts ParaView-readable .vtu, CalculiX .inp / .frd, gmsh .msh, and human-readable solver logs.

PathSolverDescription
reports/full_dome_merged.vtu20 187-node / 57 725-tet merged volume mesh (volume FEA only)
reports/full_dome_midsurface.vtu4 639-node / 8 960-triangle mid-surface mesh (shell FEA)
reports/ccx_shell/CalculiX S3Shell decks & results for all load cases, both sites
reports/ccx/CalculiX C3D4Volume-mesh runs (linear + Drucker-Prager nonlinear collapse)
reports/shell_dome_*.vtuIn-house DKTIn-house shell results, all load cases, both sites
reports/fea_panel_*.vtuscikit-femTier-1 single-panel runs (validated against Timoshenko)
reports/fea_dome_*.vtuscikit-femTier-2 spherical-cap dome runs (membrane proxy)
reports/opensees_crosscheck_*.txtOpenSeesThree-way tet-solver cross-check logs (R7)
reports/full-analysis-shell-opensees-baseline.txtOpenSees ShellDKGTOpenSees ShellDKGT production sweep (R10)
reports/full-analysis-shell-quad-opensees-baseline.txtOpenSees ShellMITC4OpenSees ShellMITC4 production sweep (R10)
reports/opensees_shell_mitc_smoke.txtOpenSeesMITC4 flat-plate smoke test
reports/investigate_shell_side_by_side_baseline.txtStep-B per-node disagreement analysis (R10)
reports/investigate_drilling_sweep.txtStep-C drilling-DOF sweep (R10)
reports/investigate_ccx_tiebreaker.txtStep-D CalculiX tiebreaker (R10)
reports/2026-05-04--findings.mdMaster findings document — narrative source
reports/2026-05-04--shell-fea-from-scratch.mdIn-house DKT shell development log
reports/2026-05-04--calculix-shell-fea.mdCalculiX S3 shell-FE results report (R9 source)
reports/2026-05-04--shell-solver-disagreement.mdThree-shell-solver disagreement analysis (R10 source)
reports/2026-05-04--shell-mitc4-results.mdOpenSees ShellMITC4 results, falsifies the DKT-only hypothesis (R10)
reports/2026-05-04--smooth-cap-4way.mdSmooth-cap discriminator — four solvers agree within ±7 % on smooth geometry (R10)
reports/2026-05-05--shell-convergence-study.mdMesh-refinement convergence study — all four shell solvers diverge on the faceted dome (R10)
reports/2026-05-05--tet-buckling-on-highres-obj.mdTet remesh failure at finer OBJ — gmsh PLC errors (R4)
reports/2026-05-05--relaxed-tol-buckling.mdTolerance-relaxation falsification — kink-line defect is geometric (R4)
reports/2026-05-05--homogenized-envelope.mdHomogenized weakest-link envelope, supporting argument (R11)
reports/2026-05-05--permit-appendix.mdPermit-appendix synthesis (9 sections, stamp-review reading path)
reports/opensees-full-check-{site}.txtOpenSees + in-houseMulti-solver per-panel D/C envelope (R12)
reports/opensees-acceptance-{site}.jsonMulti-solver per-panel D/C envelope, machine-readable (R12)
reports/shell_convergence_study.csvConvergence-study raw data (R10)
reports/2026-05-04--creep-analysis.mdLong-term creep analysis (§ IX.2 source)
reports/creep-results-severe.jsonCreep numerical results (Findley + joint knockdown, machine-readable)
reports/calculix-analysis.mdEarlier CalculiX volume-mesh analysis (collapse + nonlinear)
reports/2026-05-04--zomestruct-project-overview.mdTop-level project overview & reading guide
reports/acceptance-severe.jsonFull per-combination acceptance record (machine-readable)
reports/acceptance-severe.txtHuman-readable acceptance log

E — References

  1. American Society of Civil Engineers (2022). ASCE/SEI 7-22 — Minimum Design Loads and Associated Criteria for Buildings and Other Structures. Reston, VA.
  2. International Code Council (2024). International Building Code, 2024 Edition.
  3. ASTM International. ASTM D1621-16 (2023), D790-17, C273/C273M-20, D1623-17 (2023), D1622-20.
  4. APA — The Engineered Wood Association. Y510L — Panel Design Specification, Structural Insulated Panels.
  5. Timoshenko, S. P. & Woinowsky-Krieger, S. (1959). Theory of Plates and Shells, 2nd ed. McGraw-Hill, New York. (Plate-bending β table; spherical-cap snap-through.)
  6. Batoz, J.-L., Bathe, K.-J. & Ho, L.-W. (1980). "A study of three-node triangular plate bending elements." Int. J. Numer. Meth. Engng. 15(12): 1771–1812. (DKT element formulation.)
  7. Findley, W. N., Lai, J. S. & Onaran, K. (1976). Creep and Relaxation of Nonlinear Viscoelastic Materials. North-Holland, Amsterdam.
  8. Drucker, D. C. & Prager, W. (1952). "Soil mechanics and plastic analysis or limit design." Quart. Appl. Math. 10(2): 157–165.
  9. Dhondt, G. (2004). The Finite Element Method for Three-dimensional Thermomechanical Applications. John Wiley & Sons. (CalculiX theoretical reference.)
  10. Mazzoni, S., McKenna, F., Scott, M. H., Fenves, G. L. et al. OpenSees Command Language Manual. University of California, Berkeley, PEER.
  11. Nanjing Guocai Testing Co., Ltd. (2026). Test certificate QSW26030006: Zomes PU foam (240 kg/m³) — ASTM-traceable mechanical properties.

F — Glossary & symbols

Frequently used abbreviations and symbols.

Symbol / abbr.Meaning
AHJAuthority Having Jurisdiction (the local building official)
BCBoundary condition (FE)
C&CComponents and Cladding (ASCE 7-22, local pressure peaks)
CSTConstant-Strain Triangle (FE membrane element)
D/CDemand-to-Capacity Ratio (≤ 1.0 means PASS)
DKTDiscrete Kirchhoff Triangle (FE bending element, Batoz/Bathe/Ho 1980)
DOFDegree of freedom
EOREngineer of Record
FoSFactor of Safety (allowable = ultimate / FoS)
GCp, GCpiExternal / internal pressure coefficient (ASCE 7-22)
Kz, Kzt, Kd, KeVelocity-pressure exposure / topographic / directionality / ground-elevation coefficients (ASCE 7-22 §26.10)
L/240, L/360Deflection serviceability limits (span ÷ N), IBC Tbl. 1604.3
MWFRSMain Wind Force Resisting System (ASCE 7-22 Ch. 27)
NSETNode set (CalculiX/Abaqus syntax)
pg, pfGround / flat-roof snow load
qzWind velocity pressure at roof height
S3, C3D4, C3D10CalculiX element types: 3-node shell, 4-node tet, 10-node tet
SIPStructural Insulated Panel
σb, σc, σtFlexural / compressive / tensile stress
VM, σVMVon Mises stress
p9999th-percentile of a stress field over the analysis volume
νPoisson's ratio (= 0.30 throughout)
φCreep coefficient (Findley power-law)