Structural Safety & Reliability Engineering · TOWER-SAFETY-01 · Version 1.0.0 · May 2026

TOWER-CORE

A Critical Framework for Structural Integrity Assessment, Dynamic Stability Monitoring,
and Safety Governance in Vertical Tower Systems
Structural Reliability Engineering · Dynamic Loading Analysis · Fatigue Accumulation Governance
"A vertical tower operating under sustained wind loading is not in static equilibrium — it is a dynamically evolving system
accumulating fatigue damage, experiencing natural frequency drift, and approaching or receding from its overturning
stability limit in real time. TOWER-CORE quantifies these changes continuously and governs the safety margin accordingly."
↗ View on GitHub 📦 PyPI Package 🔬 Zenodo DOI 🦊 GitLab Mirror
PyPI Downloads Python DOI Series ORCID License Domain
±2.83%
Mean TSII Accuracy
95.4%
Frequency Detection Rate
2.37%
Mean Fatigue MAE
Modules: DFMM · SJFAM · GSOAM
36
Unit Tests Passing
24-48h
TSII Warning Lead Time
Real-Time Safety Governance
Four-Level TSII Signal Classification
Every tower operational state evaluated by TOWER-CORE receives a continuous safety signal with full frequency, fatigue, and stability diagnostics.
TSII ≥ 0.90
🟢 STEADY STATE
All frequency, fatigue, and stability constraints satisfied. Normal operation active — continuous SSI-COV modal monitoring.
0.75 ≤ TSII < 0.90
🟠 MONITORING PHASE 1
Natural frequency drift or fatigue accumulation detected. Enhanced monitoring frequency — targeted inspection at flagged details.
0.65 ≤ TSII < 0.75
🟠 MITIGATION PHASE 2
Operational load restriction required. Immediate structural review — P-delta verification and hot-spot inspection.
TSII < 0.65
🔴 CRITICAL BREACH
Safety threshold breach. Immediate shutdown. Proximity zone evacuation. Full diagnostic: DFMM modal analysis, SJFAM damage map, GSOAM stability report.
Three Modules · One Structural State · Continuous Assessment
Fully coupled dynamic stability assessment augmented by real-time sensor fusion. No decoupled frequency-then-fatigue paradigm.
MODULE 01
DFMM — Dynamic Frequency Monitoring Module
NFS < 5% · RSM ≥ 10%
SSI-COV ambient modal identification at ±0.1% frequency resolution. Tracks natural frequency shift NFS_i(t) and resonance safety margin RSM_i(t) in real time.
f_n(P) = f₀·√(1 - P/P_cr)
SSI-COV: Y = [y|ŷ] · SVD · modal extraction
MODULE 02
SJFAM — Structural Joint Fatigue Assessment Module
D_fatigue < 0.80
ASTM E1049-85 rainflow cycle counting. Palmgren-Miner linear damage accumulation with Goodman mean stress correction. Eurocode FAT class S-N curves.
D_fatigue(t) = Σ n_i/N_i(Δσ_i)
σ_a,eq = σ_a / (1 - σ_m/σ_UTS)
MODULE 03
GSOAM — Global Stability & Overturning Module
F_stability ≥ 1.50
Davenport gust response factor for dynamic wind loading. P-delta geometric nonlinearity correction. Guyed mast tension and restoring force analysis.
F_stability = M_restoring / (M_wind + M_oper)
θ_stab = P·δ / (EI/h²) ≤ 0.10
DEGRADATION
S_deg — Stiffness Degradation Index
S_deg < 0.25
Continuum damage mechanics model (Chaboche). ISO 9224 corrosion rate prediction. Remaining life estimation from modal frequency reduction.
S_deg = 1 - K_damaged/K_intact
T_rem = (A_rem - A_crit) / (dA/dt)
TSII
Tower Structural Integrity Index
TSII ≥ 0.90
Weighted composite of stiffness degradation, overturning stability, and fatigue damage. Continuous real-time safety certification with 24-48h forecast.
TSII = 0.40·(1-S_deg) + 0.35·(F_stab/1.50) + 0.25·(1-D_fatigue)
SENSOR FUSION
Kalman Filter State Estimation
Real-time · 100Hz
Multi-sensor fusion: accelerometers, strain gauges, tiltmeters, anemometers. Outlier rejection and missing data interpolation.
x̂(t|t) = x̂(t|t-1) + K(t)[z(t) - H·x̂(t|t-1)]
K(t) = P(t|t-1)·Hᵀ·[H·P·Hᵀ + R]⁻¹
Three Canonical Benchmark Scenarios
Validated against guyed telecom mast, lattice tower, and monopole scale model under storm, fatigue, and progressive loading conditions.
CaseTower TypeTSII AccuracyFrequency DetectionFatigue MAEF_stab ErrorStatus
V1Guyed telecom mast — storm events±2.8%95.1%2.4%±4.1%✅ PASS
V2Lattice tower — fatigue forensics±3.2%94.8%2.9%N/A✅ PASS
V3Monopole scale model — progressive±2.5%96.3%1.8%±3.7%✅ PASS
MEAN±2.83%95.4%2.37%±3.9%🏆 CERTIFIED

TSII certification threshold = 0.90 · F_stability minimum = 1.50 · Damage limit = 0.80

Mathematical Foundation
Governing Equations & Safety Bounds
f_n(P) = f₀·√(1 - P/P_cr)
D_fatigue = Σ n_i/N_i(Δσ_i)
F_stability = M_restoring / (M_wind + M_operational)
S_deg = 1 - K_damaged/K_intact
TSII = 0.40·(1-S_deg) + 0.35·(F_stab/1.50) + 0.25·(1-D_fatigue) ≥ 0.90
TSII ≥ 0.90
Tower Structural Integrity Index
F_stability ≥ 1.50
Overturning stability factor
D_fatigue < 0.80
Fatigue damage warning
NFS < 5%
Natural frequency shift
Quick Start
Deploy Safety Governance in 60 Seconds
pip install tower-core-engine

from tower_core import TowerCoreAssessor

# Initialize with tower configuration
assessor = TowerCoreAssessor(
    tower_config="configs/lattice_120m.yaml",
    sensor_stream="live"
)

result = assessor.evaluate()

print(result.signal)          # "STEADY_STATE" | "MONITORING_PHASE_1" | "MITIGATION_PHASE_2" | "CRITICAL_BREACH"
print(result.tsii)            # Tower Structural Integrity Index [0,1]
print(result.nfs)             # Natural Frequency Shift (%)
print(result.fatigue_damage_max) # Palmgren-Miner damage
print(result.f_stability)    # Overturning stability factor
print(result.governance_level) # "none" | "level_1" | "level_2" | "stop"
from tower_core.fatigue import RainflowCounter, PalmgrenMiner, SNCurve
import numpy as np

# Load strain time series
strain_ts = np.random.randn(10000) * 50

# Rainflow cycle counting (ASTM E1049-85)
counter = RainflowCounter()
cycles, amplitudes = counter.count(strain_ts)

# S-N curve (Eurocode FAT90)
sn = SNCurve(fat_class="FAT90")

# Palmgren-Miner damage accumulation
miner = PalmgrenMiner()
damage = miner.from_amplitudes(amplitudes, cycles, sn)

print(f"Fatigue damage: {damage:.4f} (limit: 0.80)")
from tower_core.stability import OverturningStability, GustResponse

stab = OverturningStability(f_stab_min=1.50)
M_restoring = stab.restoring_moment(W=100000, B=10)
M_wind = 50000
F_stability = stab.factor(M_restoring, M_wind)

gust = GustResponse()
G = gust.gust_factor(z=50, f_n=0.85)

print(f"F_stability: {F_stability:.2f} (minimum: 1.50)")
print(f"Gust factor: {G:.2f}")
# Launch real-time Streamlit TSII governance dashboard
$ streamlit run examples/streamlit_dashboard.py

# Dashboard at: http://localhost:8501
# Panels: Natural frequency trend · Fatigue damage map · Overturning stability · TSII gauge · 24-48h forecast
Available on 11 Platforms
TOWER-CORE is distributed across code hosts, package registries, and research archives for maximum accessibility and archival permanence.
🐙
GitHub
Primary · Source code, issues, PRs
↗ github.com/gitdeeper12/TOWER-CORE
🦊
GitLab
Mirror · CI/CD pipeline
↗ gitlab.com/gitdeeper12/TOWER-CORE
🪣
Bitbucket
Mirror · Enterprise access
↗ bitbucket.org/gitdeeper-12/TOWER-CORE
🏔️
Codeberg
Mirror · Open-source community
↗ codeberg.org/gitdeeper12/TOWER-CORE
🐍
PyPI
Python Package · pip install tower-core-engine
↗ pypi.org/project/tower-core-engine
🔬
Zenodo
Paper & Data · Citable DOI
↗ doi.org/10.5281/zenodo.20394041
📋
OSF Project
Research project registry
↗ osf.io/xxxxx
📝
OSF Preregistration
Pre-registered study protocol
↗ doi.org/10.17605/OSF.IO/XXXXX
🌐
Website
Live docs & dashboard
↗ tower-core.netlify.app
🧑‍🔬
ORCID
Researcher identity profile
↗ 0009-0003-8903-0029
🗄️
Internet Archive
Permanent archival copy
↗ archive.org
git clone https://github.com/gitdeeper12/TOWER-CORE.git
git clone https://gitlab.com/gitdeeper12/TOWER-CORE.git
git clone https://bitbucket.org/gitdeeper-12/TOWER-CORE.git
git clone https://codeberg.org/gitdeeper12/TOWER-CORE.git
Citation
Cite TOWER-CORE in Your Research
If TOWER-CORE contributes to your research, please use one of the citation formats below.
@software{baladi2026towercore_pypi,
  author    = {Baladi, Samir},
  title     = {{TOWER-CORE}: A Critical Framework for Structural Integrity
               Assessment, Dynamic Stability Monitoring, and Safety
               Governance in Vertical Tower Systems},
  year      = {2026},
  version   = {1.0.0},
  publisher = {Python Package Index},
  url       = {https://pypi.org/project/tower-core-engine},
  note      = {Python package, MIT License, Series TOWER-SAFETY-01}
}
@dataset{baladi2026towercore_zenodo,
  author    = {Baladi, Samir},
  title     = {{TOWER-CORE}: A Critical Framework for Structural Integrity
               Assessment, Dynamic Stability Monitoring, and Safety
               Governance in Vertical Tower Systems —
               Research Paper and Simulation Data},
  year      = {2026},
  publisher = {Zenodo},
  version   = {1.0.0},
  doi       = {10.5281/zenodo.20394041},
  url       = {https://doi.org/10.5281/zenodo.20394041},
  note      = {Structural Safety & Reliability Engineering · TOWER-SAFETY-01}
}
@article{baladi2026towercore,
  author  = {Baladi, Samir},
  title   = {{TOWER-CORE}: A Critical Framework for Structural Integrity
             Assessment, Dynamic Stability Monitoring, and Safety
             Governance in Vertical Tower Systems},
  year    = {2026},
  month   = {May},
  version = {1.0.0},
  doi     = {10.5281/zenodo.20394041},
  url     = {https://doi.org/10.5281/zenodo.20394041},
  note    = {Ronin Institute / Rite of Renaissance,
             Series TOWER-SAFETY-01}
}
Baladi, S. (2026). TOWER-CORE: A Critical Framework for Structural Integrity
Assessment, Dynamic Stability Monitoring, and Safety Governance in
Vertical Tower Systems (Version 1.0.0, Series TOWER-SAFETY-01). Zenodo.
https://doi.org/10.5281/zenodo.20394041