Modules: vernastruct.codes.knowledge + KL/CF plumbing in
modules.walls (both NDS and EC6 paths), with the new irregular_stone
library entry.
Code basis: EN 1998-3 §3.3 (Table 3.1) / Italian NTC 2018 + Circolare
21/01/2019 n.7 §C8.5: knowledge levels KL1/KL2/KL3 (Italian LC1/LC2/LC3) →
confidence factors CF = 1.35 / 1.20 / 1.00 dividing material strengths;
elastic moduli are adopted at their mean values.
Cross-check source (task 2.2): published peer-reviewed case study —
"Comparative Seismic Assessment Methods for Masonry Building Aggregates",
Frontiers in Built Environment 5:123 (2019), open access:
https://www.frontiersin.org/journals/built-environment/articles/10.3389/fbuil.2019.00123/full
Status: ✅ PASS — library values, CF values, and the divide-strengths-
only convention all match the published application exactly.
The KL/CF system is one of the product's two orthogonal assessment axes (damage factor = physical condition; CF = confidence in material knowledge). VC-10/11 verified that CF divides strength in each engine; this case verifies the whole convention against how practitioners actually publish it in Italian-school seismic assessment — the exact market (ISCARSAH / SAHC-trained conservation engineers) the roadmap targets.
The case study assesses an existing stone-masonry building aggregate to NTC18 at the lowest knowledge level:
| Published item | Value |
|---|---|
| Knowledge level | LC1 (= EN 1998-3 KL1) |
| Confidence factor | 1.35 |
| Masonry typology | irregular stone masonry (NTC18) |
| Mean compressive strength f_m | 1.0 MPa |
| Shear strength τ₀ | 0.018 MPa |
| Elastic modulus E | 870 MPa (mean) — not divided by CF |
| Convention quoted | "the mean values of the resistances … divided by FC = 1.35; the average of the elastic modules have been adopted" |
These property values are the Circolare 2019 Table C8.5.I row for muratura in pietrame disordinata (f_m 1.0–2.0, τ₀ 0.018–0.032, E 690–1050 MPa, w 19 kN/m³) applied with the standard LC1 convention: minimum strengths of the range + mean modulus.
New library entry irregular_stone carries exactly those values
(f_m 1.0, τ₀ 0.018, E 870, ρ 1900 — ranges + convention documented in the
YAML). Through the walls service:
| Check | Result |
|---|---|
| CF values | KL1/KL2/KL3 → 1.35/1.20/1.00 (EN 1998-3 Table 3.1) — exact |
| NDS path, KL1 vs KL3 | axial, shear and bending capacities all scale by exactly 1.35; effective strengths = f/1.35 (= 0.7407 / 0.01333 MPa), matching the published chain |
| EC6 path, KL1 vs KL3 | Φ (Annex G) identical between knowledge levels — λ_t keeps the unreduced stiffness ratio (mean E adopted, as published); f_d and N_Rd scale by exactly 1.35 (f_d = 1.0/2.2 at KL3, /1.35 at KL1) |
| Report | KL1 warning names the CF and cites EN 1998-3 §3.3 / Circolare 2019 |
Pinned as tests/test_codes.py::test_vc16_* (4 tests).
test_damage_and_kl_stack_orthogonally
(VC-11 companion) covers the combined case.irregular_stone entry is also a genuine product addition — rubble
stone is a core heritage typology (Arabian Peninsula, Mediterranean) that the
library previously lacked.Every case in this manual is pinned as an automated regression test that runs on every build — no future change can silently break a verified result. © 2026 Hesham Salama.