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)
8× 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 name | Zomes office prototype |
| Project number | ZS-2026-001 |
| Owner / client | TBD — owner of record to be entered prior to issuance |
| Site address | TBD — 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 height | 3.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 panels | 73 (70 rhombic + 3 door framing) |
| Foundation | 9 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.
| Reference | Title | Applies to |
| IBC 2024 | International Building Code, 2024 ed. | Building-code basis; adopts ASCE 7-22 by reference (§1605) |
| ASCE/SEI 7-22 | Minimum Design Loads and Associated Criteria for Buildings and Other Structures | All 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-17 | Flexural Properties of Plastics | σb, Eb on small (~10 mm) coupons |
| ASTM C273/C273M-20 | Shear Properties of Sandwich Core Materials | Parent and joint shear, G |
| ASTM D1623-17 (2023) | Tensile and Tensile Adhesion Properties of Rigid Cellular Plastics | Joint tension allowable |
| ASTM D1622-20 | Apparent Density of Rigid Cellular Plastics | ρ = 240 kg/m³ |
| APA Y510L | Panel Design Specification — Structural Insulated Panels | Industry-analogue safety factor (FoS = 2.5) |
| QSW26030006 | Material Test Certificate — Nanjing Guocai Testing Co., May 2026 | All 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 Materials | Power-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.
| Type | Count | Edge (mm) | Acute angle | Diagonals (mm) | Area (m²) | Role |
| 1 | 9 | 1012 | 89.07° | 1414 × 1410 | 1.025 | Equatorial near-square — governs plate bending |
| 2 | 16 | 1022 | 69.72° | 1170 × 1675 | 0.979 | Wall mid-band |
| 3 | 9 | 1025 | 61.09° | 1041 × 1786 | 0.919 | Wall lower-band |
| 4 | 10 | 1008 | 61.20° | 1027 × 1755 | 0.891 | Cap base |
| 5 | 2 | 1097 | 42.54° | 796 × 2042 | 0.813 | Door-region elongated |
| 6 | 10 | 814 | 58.04° | 790 × 1421 | 0.561 | Wall sub-band |
| 7 | 2 | 737 | 76.76° | 912 × 1162 | 0.528 | Door region |
| 8 | 10 | 1009 | 31.16° | 543 × 1932 | 0.526 | Apex narrow rhombi |
| 9 | 2 | 729 | 73.88° | 876 × 1167 | 0.511 | Door 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 %).
| Property | X | Y | Z | Test method |
| Compressive strength σc (MPa) | 2.58 | 2.47 | 2.62 | ASTM D1621-16 (2023) |
| Compressive modulus Ec (MPa) | 70.8 | 72.2 | 79.1 | ASTM D1621 |
| Flexural strength σb (MPa) | 2.17 | 2.28 | — | ASTM D790-17 |
| Flexural modulus Eb (MPa) | 62.8 | 68.9 | — | ASTM D790 |
| Shear strength, parent (MPa) | 0.584 | 0.649 | — | ASTM C273/C273M-20 |
| Shear modulus, parent G (MPa) | 31.4 | 32.0 | — | ASTM C273 |
| Joint shear strength (MPa) | 0.410 | — | — | ASTM C273 (joint specimens) |
| Joint shear modulus (MPa) | 24.1 | — | — | ASTM C273 |
| Joint tensile strength (MPa) | 0.270 | — | — | ASTM D1623-17 (2023) |
| Apparent density ρ (kg/m³) | 240 | — | — | ASTM D1622-20 |
| Poisson's ratio ν | 0.30 | — | — | Assumed (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 state | Ultimate (MPa) | Allowable @ FoS = 2.5 | @ FoS = 3.0 |
| Plate bending (panel) | 2.17 | 0.868 | 0.723 |
| Compression (membrane) | 2.47 | 0.988 | 0.823 |
| Joint shear | 0.410 | 0.164 | 0.137 |
| Joint tension | 0.270 | 0.108 | 0.090 |
| Parent shear | 0.584 | 0.234 | 0.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).
| Parameter | Symbol | Baseline | Severe | Reference |
| Ground snow load | pg | 30 psf (1.44 kPa) | 100 psf (4.79 kPa) | Site-specific per ASCE 7-22 Fig. 7.2-1 |
| Exposure factor | Ce | 1.00 | 1.00 | Tbl. 7.3-1, Partially Exposed |
| Thermal factor | Ct | 1.00 | 1.00 | Tbl. 7.3-2, heated |
| Importance factor | Is | 1.00 | 1.00 | Tbl. 1.5-2, Risk Cat II |
| Flat-roof snow | pf = 0.7 Ce Ct Is pg | 1.005 kPa | 3.352 kPa | Eq. 7.3-1 |
| Unbalanced peak (windward depletion) | pu,peak ≈ 2 pf | 2.01 kPa | 6.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).
| Parameter | Symbol | Baseline | Severe | Reference |
| Basic wind speed (3-s gust) | V | 115 mph | 160 mph | Fig. 26.5-1B (Risk Cat II) |
| Exposure category | — | C | D | §26.7 |
| Velocity pressure exp. coeff. | Kz | 0.85 | 1.03 | Tbl. 26.10-1, h = 10.2 ft |
| Topographic factor | Kzt | 1.00 | 1.00 | §26.8 (flat terrain assumed; AHJ to confirm) |
| Wind directionality factor | Kd | 1.00 | 1.00 | Tbl. 26.6-1 (worst direction) |
| Ground elevation factor | Ke | 1.00 | 1.00 | Tbl. 26.9-1 (sea level) |
| Velocity pressure | qz = 0.00256 Kz Kzt Kd Ke V² | 28.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.
| Action | GCp | pnet baseline | pnet 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.
| Path | Validation case | Reference | Error band |
| Hand calc plate bending | Timoshenko SS rectangular plate, uniform pressure | Timoshenko & W-K Tbl. 8 | Exact (closed form) |
| In-house DKT shell | Square plate, four edge lengths, vs. Timoshenko | tools/shell_validate_square.py | ≤ 15 % deflection, ≤ 25 % peak stress |
| CalculiX S3 shell | Square plate vs. Timoshenko + cross-check vs. in-house DKT | reports/shell_validate_*.vtu | < 5 % deflection |
| CalculiX C3D4 volume | Cross-check vs. OpenSees on identical mesh | R7 (this report) | 1–5 % displacement; 1 % gravity stress |
| OpenSees FourNodeTetrahedron | Unit-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 collapse | reports/calculix-analysis.md | Convergence-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
9×
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 combination | Demand σ_b (MPa) | D/C @ FoS = 2.5 | D/C @ FoS = 3.0 |
| 0.6D + Wuplift | 0.857 | 0.99 PASS | 1.18 FAIL |
| 0.9D + 1.0Wuplift | 0.851 | 0.98 PASS | 1.18 FAIL |
| D + Sunb (peak) | 0.664 | 0.77 PASS | 0.92 PASS |
| D + Winward | 0.541 | 0.62 PASS | 0.75 PASS |
| 1.2D + 1.6S | 0.538 | 0.62 PASS | 0.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 case | Site | Joint tension D/C (localised) | Joint shear D/C (localised) | Joint tension D/C (uniform env.) |
| Snow balanced | Severe | 0.16 | 0.17 | 0.16 |
| Wind uplift MWFRS | Severe | 0.32 | 0.28 | 0.34 |
| Wind C&C peak | Severe | 0.26 | 0.22 | 0.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 load | Mode-1 BLF | FoS | D/C = FoS / BLF | Status |
| Snow balanced (baseline) | 4.886 | 3.0 | 0.61 | pass |
| Wind uplift MWFRS (baseline) | 3.356 | 3.0 | 0.89 | pass (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.
| Case | scikit-fem |u|max | CalculiX |u|max | OpenSees |u|max | scikit-fem σt,max | CalculiX σt,max | OpenSees σt,max |
| Gravity | 30.0 mm | 6.98 mm | 6.89 mm | 92 991 MPa | 0.150 MPa | 0.148 MPa |
| Snow | 105.8 mm | 5.67 mm | 5.94 mm | 273 431 MPa | 0.261 MPa | 0.112 MPa |
| Uplift | 88.5 mm | 9.03 mm | 8.75 mm | 21 647 MPa | 1.616 MPa | 0.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 |
| Gravity | 1.4 % | 1.0 % | 0.6 % | 1.3 % | 1.7 % |
| Snow | 4.5 % | 2.3 % | 20 % | 57 % | 53 % |
| Uplift | 3.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 case | Site | p (kPa) | umax (mm) | VMmax (MPa) | D/C max | Status |
| Snow balanced | Baseline | +1.005 | 5.8 | 0.184 | 0.21 | pass |
| Wind MWFRS uplift | Baseline | −1.42 | 3.6 | 0.102 | 0.12 | pass |
| Wind C&C peak suction | Baseline | −3.83 | 12.8 | 0.385 | 0.44 | pass |
| Snow balanced | Severe | +3.35 | 14.7 | 0.459 | 0.53 | pass |
| Wind MWFRS uplift | Severe | −3.33 | 10.9 | 0.326 | 0.38 | pass |
| Wind C&C peak suction | Severe | −8.98 | 32.5 | 0.990 | 1.14 | FAIL |
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 / formulation | Faceted umax (mm) | Smooth umax (mm) | Smooth ratio vs CCX |
| CalculiX S3 (Mindlin–Reissner tri) | 12.78 | 2.588 | 1.000 |
| In-house pure-Python CST + DKT | 29.47 | 2.581 | 0.997 |
| OpenSees ShellMITC4 (quad) | 29.83 | 2.766 | 1.069 |
| OpenSees ShellDKGT (tri) | 52.42 | 2.628 | 1.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.
| Solver | 800 mm | 400 mm | 200 mm | 100 mm | Last-step Δ | Verdict |
| CalculiX S3 | 5.47 | 7.90 | 12.93 | 22.33 | +73 % | diverging |
| In-house CST + DKT | 24.82 | 28.6 | 29.47 | 32.39 | +11 % | drifting |
| OpenSees ShellDKGT | 39.71 | 48.0 | 52.42 | 56.79 | +8 % | drifting |
| OpenSees ShellMITC4 | — | 30.16 | 33.5 | 37.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.
| Site | Load case | σ centre / max (MPa) | D/C centre / max | Verdict |
| Baseline | Dead | 0.0057 / 0.0114 | 0.11 / 0.21 | pass |
| Baseline | Snow balanced | 0.0277 / 0.0554 | 0.51 / 1.03 | marginal at rim |
| Baseline | Wind uplift MWFRS | 0.0270 / 0.0540 | 0.50 / 1.00 | marginal at rim |
| Baseline | Wind C&C peak | 0.0874 / 0.1864 | 1.62 / 3.45 | expected fail |
| Severe | All four cases | — | up to 7.92 | expected 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 state | Site | Worst D/C (envelope) | Panel | Load case | Governing solver |
| Plate bending | Baseline | 1.16 | 58 | wind_cc_peak | inhouse_dkt |
| Membrane compression | Baseline | 1.29 | 59 | wind_cc_peak | inhouse_dkt |
| Local plate buckling | Baseline | 1.15 | 59 | wind_cc_peak | inhouse_dkt |
| Plate bending | Severe | 2.80 | 58 | wind_cc_peak | inhouse_dkt |
| Eigenvalue buckling (CCX) | Baseline (uplift) | 0.89 | — | BLF = 3.356, FoS = 3.0 | ccx *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.
| Type | Edge (mm) | Acute | Bend D/C — D+S | Bend D/C — 0.6D+W | Buck D/C | Governing combo |
| 1 | 1012 | 89.07° | 0.77 | 0.99 | 0.29 | 0.6D + Wuplift (C&C) |
| 2 | 1022 | 69.72° | 0.61 | 0.79 | 0.28 | 0.6D + Wuplift |
| 3 | 1025 | 61.09° | 0.52 | 0.67 | 0.28 | 0.6D + Wuplift |
| 4 | 1008 | 61.20° | 0.49 | 0.64 | 0.27 | 0.6D + Wuplift |
| 5 | 1097 | 42.54° | 0.45 | 0.58 | 0.25 | D + Sunb |
| 6 | 814 | 58.04° | 0.31 | 0.40 | 0.18 | D + Sunb |
| 7 | 737 | 76.76° | 0.30 | 0.39 | 0.16 | D + Sunb |
| 8 | 1009 | 31.16° | 0.29 | 0.38 | 0.25 | D + Sunb |
| 9 | 729 | 73.88° | 0.29 | 0.38 | 0.15 | D + 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.
| Method | Limit state | Allowable (MPa) | Worst demand (MPa) | D/C | Status |
| Hand calc | Joint shear (in-plane) | 0.164 | 0.0287 | 0.18 | pass |
| Hand calc | Joint tension (peeling) | 0.108 | 0.0287 | 0.27 | pass |
| CalculiX FE | Joint tension (p99, 12 216 triangles) | 0.108 | 0.0276 | 0.26 | pass |
| CalculiX FE | Joint shear (p99) | 0.164 | 0.0356 | 0.22 | pass |
|
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 case | Pressure | |u|max (mm) | Limit (mm) | D/C | Status |
| Dead | −0.180 kPa | 6.9 | 15.6 (L/360) | 0.44 | pass |
| D + Sbalanced | +3.53 kPa | 14.7 | 23.5 (L/240) | 0.63 | pass |
| 0.6D + Wuplift | −3.33 kPa | 10.9 | 31.3 (L/180) | 0.35 | pass |
| 0.6D + WCC,peak | −8.98 kPa | 32.5 | 31.3 (L/180) | 1.04 | marginal |
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 case | Mode | Demand (MPa) | D/C short-term | D/C long-term (conservative) | Status |
| Snow balanced | Tension | 0.0087 | 0.16 | 0.32 | pass |
| Snow balanced | Shear | 0.0140 | 0.17 | 0.34 | pass |
| Wind uplift MWFRS | Tension | 0.0176 | 0.33 | 0.65 | pass |
| Wind uplift MWFRS | Shear | 0.0230 | 0.28 | 0.56 | pass |
| Wind C&C peak | Tension | 0.0276 | 0.51 | 1.02 | marginal — see note |
| Wind C&C peak | Shear | 0.0356 | 0.43 | 0.87 | pass |
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):
- 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.
- 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.
- 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.
- 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
- 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).
- 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.
- 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).
- 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).
- 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.
- 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.
- 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.
- 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).
- 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.
- 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.
- 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.
- 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.
- 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).
- 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.
- 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.
- 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.
- 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.
| Item | Reference | Disposition | EOR 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.
E — References
- American Society of Civil Engineers (2022). ASCE/SEI 7-22 — Minimum Design Loads and Associated Criteria for Buildings and Other Structures. Reston, VA.
- International Code Council (2024). International Building Code, 2024 Edition.
- ASTM International. ASTM D1621-16 (2023), D790-17, C273/C273M-20, D1623-17 (2023), D1622-20.
- APA — The Engineered Wood Association. Y510L — Panel Design Specification, Structural Insulated Panels.
- 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.)
- 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.)
- Findley, W. N., Lai, J. S. & Onaran, K. (1976). Creep and Relaxation of Nonlinear Viscoelastic Materials. North-Holland, Amsterdam.
- Drucker, D. C. & Prager, W. (1952). "Soil mechanics and plastic analysis or limit design." Quart. Appl. Math. 10(2): 157–165.
- Dhondt, G. (2004). The Finite Element Method for Three-dimensional Thermomechanical Applications. John Wiley & Sons. (CalculiX theoretical reference.)
- Mazzoni, S., McKenna, F., Scott, M. H., Fenves, G. L. et al. OpenSees Command Language Manual. University of California, Berkeley, PEER.
- 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 |
| AHJ | Authority Having Jurisdiction (the local building official) |
| BC | Boundary condition (FE) |
| C&C | Components and Cladding (ASCE 7-22, local pressure peaks) |
| CST | Constant-Strain Triangle (FE membrane element) |
| D/C | Demand-to-Capacity Ratio (≤ 1.0 means PASS) |
| DKT | Discrete Kirchhoff Triangle (FE bending element, Batoz/Bathe/Ho 1980) |
| DOF | Degree of freedom |
| EOR | Engineer of Record |
| FoS | Factor of Safety (allowable = ultimate / FoS) |
| GCp, GCpi | External / internal pressure coefficient (ASCE 7-22) |
| Kz, Kzt, Kd, Ke | Velocity-pressure exposure / topographic / directionality / ground-elevation coefficients (ASCE 7-22 §26.10) |
| L/240, L/360 | Deflection serviceability limits (span ÷ N), IBC Tbl. 1604.3 |
| MWFRS | Main Wind Force Resisting System (ASCE 7-22 Ch. 27) |
| NSET | Node set (CalculiX/Abaqus syntax) |
| pg, pf | Ground / flat-roof snow load |
| qz | Wind velocity pressure at roof height |
| S3, C3D4, C3D10 | CalculiX element types: 3-node shell, 4-node tet, 10-node tet |
| SIP | Structural Insulated Panel |
| σb, σc, σt | Flexural / compressive / tensile stress |
| VM, σVM | Von Mises stress |
| p99 | 99th-percentile of a stress field over the analysis volume |
| ν | Poisson's ratio (= 0.30 throughout) |
| φ | Creep coefficient (Findley power-law) |