tr-tbdy 0.1.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (34) hide show
  1. tr_tbdy-0.1.0/CHANGELOG.md +24 -0
  2. tr_tbdy-0.1.0/CITATION.cff +20 -0
  3. tr_tbdy-0.1.0/LICENSE +21 -0
  4. tr_tbdy-0.1.0/MANIFEST.in +9 -0
  5. tr_tbdy-0.1.0/PKG-INFO +238 -0
  6. tr_tbdy-0.1.0/README.md +200 -0
  7. tr_tbdy-0.1.0/examples/quickstart.py +45 -0
  8. tr_tbdy-0.1.0/pyproject.toml +115 -0
  9. tr_tbdy-0.1.0/setup.cfg +4 -0
  10. tr_tbdy-0.1.0/src/tr_tbdy/__init__.py +61 -0
  11. tr_tbdy-0.1.0/src/tr_tbdy/__main__.py +7 -0
  12. tr_tbdy-0.1.0/src/tr_tbdy/_version.py +1 -0
  13. tr_tbdy-0.1.0/src/tr_tbdy/classification.py +158 -0
  14. tr_tbdy-0.1.0/src/tr_tbdy/cli.py +307 -0
  15. tr_tbdy-0.1.0/src/tr_tbdy/coefficients.py +189 -0
  16. tr_tbdy-0.1.0/src/tr_tbdy/errors.py +18 -0
  17. tr_tbdy-0.1.0/src/tr_tbdy/export.py +100 -0
  18. tr_tbdy-0.1.0/src/tr_tbdy/plot.py +78 -0
  19. tr_tbdy-0.1.0/src/tr_tbdy/py.typed +0 -0
  20. tr_tbdy-0.1.0/src/tr_tbdy/reduction.py +94 -0
  21. tr_tbdy-0.1.0/src/tr_tbdy/spectrum.py +338 -0
  22. tr_tbdy-0.1.0/src/tr_tbdy/tables.py +205 -0
  23. tr_tbdy-0.1.0/src/tr_tbdy.egg-info/PKG-INFO +238 -0
  24. tr_tbdy-0.1.0/src/tr_tbdy.egg-info/SOURCES.txt +32 -0
  25. tr_tbdy-0.1.0/src/tr_tbdy.egg-info/dependency_links.txt +1 -0
  26. tr_tbdy-0.1.0/src/tr_tbdy.egg-info/entry_points.txt +2 -0
  27. tr_tbdy-0.1.0/src/tr_tbdy.egg-info/requires.txt +9 -0
  28. tr_tbdy-0.1.0/src/tr_tbdy.egg-info/top_level.txt +1 -0
  29. tr_tbdy-0.1.0/tests/test_classification.py +113 -0
  30. tr_tbdy-0.1.0/tests/test_coefficients.py +139 -0
  31. tr_tbdy-0.1.0/tests/test_doctests.py +23 -0
  32. tr_tbdy-0.1.0/tests/test_export_cli.py +126 -0
  33. tr_tbdy-0.1.0/tests/test_reduction.py +61 -0
  34. tr_tbdy-0.1.0/tests/test_spectrum.py +169 -0
@@ -0,0 +1,24 @@
1
+ # Changelog
2
+
3
+ All notable changes to this project will be documented in this file.
4
+
5
+ ## [Unreleased]
6
+
7
+ ## [0.1.0] - 2026-11-09
8
+ ### Added
9
+ - Local ground-effect coefficients F_S and F_1 from TBDY 2018 Tables 2.1 and 2.2 with
10
+ linear interpolation between columns (2.3.3.1) or a conservative "larger bracketing value"
11
+ option; user-replaceable tables; ZF raises `SiteSpecificAnalysisRequired` (2.3.3.2).
12
+ - `DesignSpectrum`: S_DS, S_D1 (Eq. 2.1), corner periods T_A, T_B, T_L = 6 s (Eq. 2.3),
13
+ horizontal elastic spectrum S_ae(T) (Eq. 2.2), displacement spectrum S_de(T) (Eq. 2.4),
14
+ vertical spectrum S_aeD(T) with T_AD, T_BD, T_LD (Eqs. 2.5, 2.6), period grids with the
15
+ corner periods, row tables and summaries.
16
+ - Building importance factor (Table 3.1), Deprem Tasarım Sınıfı DTS (Table 3.2), Bina
17
+ Yükseklik Sınıfı BYS and its height ranges (Table 3.3).
18
+ - Earthquake load reduction factor R_a(T) (Eq. 4.1), reduced spectrum S_aR(T) (Eq. 4.8),
19
+ minimum base shear ratio 0.04 I S_DS (Eq. 4.19), R and D of the cast-in-place RC systems
20
+ A11-A33 of Table 4.1.
21
+ - V_S30-based soil class helper (Table 16.1).
22
+ - CSV and JSON export; optional PNG plot (`tr-tbdy[plot]`, matplotlib).
23
+ - Turkish command-line interface `tr-tbdy` with `spektrum`, `katsayi`, `bys`, `zemin` and
24
+ `sistemler` commands.
@@ -0,0 +1,20 @@
1
+ cff-version: 1.2.0
2
+ message: "If you use this software, please cite it as below."
3
+ authors:
4
+ - family-names: "Eminoğlu"
5
+ given-names: "Yusuf"
6
+ email: "geospacephilo@gmail.com"
7
+ orcid: "https://orcid.org/0009-0005-6000-2934"
8
+ title: "tr-tbdy"
9
+ version: "0.1.0"
10
+ date-released: "2026-11-09"
11
+ license: "MIT"
12
+ repository-code: "https://github.com/YusufEminoglu/tr_tbdy_sdk"
13
+ url: "https://pypi.org/project/tr-tbdy/"
14
+ abstract: "Seismic design spectra of the Turkish Building Earthquake Code 2018 (TBDY 2018, Chapter 2): local ground-effect coefficients Fs and F1, SDS and SD1, corner periods, horizontal, vertical and displacement elastic design spectra, earthquake design class (DTS), building height class (BYS) and the reduced design spectrum, with CSV/JSON export and a Turkish command-line interface."
15
+ keywords:
16
+ - earthquake engineering
17
+ - seismic design spectrum
18
+ - TBDY 2018
19
+ - Turkish Building Earthquake Code
20
+ - site coefficients
tr_tbdy-0.1.0/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Yusuf Eminoğlu
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,9 @@
1
+ include LICENSE
2
+ include README.md
3
+ include CHANGELOG.md
4
+ include CITATION.cff
5
+ include pyproject.toml
6
+ include src/tr_tbdy/py.typed
7
+ recursive-include src/tr_tbdy *.py
8
+ recursive-include tests *.py
9
+ recursive-include examples *.py
tr_tbdy-0.1.0/PKG-INFO ADDED
@@ -0,0 +1,238 @@
1
+ Metadata-Version: 2.4
2
+ Name: tr-tbdy
3
+ Version: 0.1.0
4
+ Summary: TBDY 2018 (Türkiye Bina Deprem Yönetmeliği) Chapter 2 design spectra: site coefficients Fs/F1, SDS/SD1, corner periods, horizontal, vertical and displacement spectra, DTS, BYS and the reduced spectrum, with CSV/JSON export and a Turkish CLI.
5
+ Author-email: Yusuf Eminoğlu <geospacephilo@gmail.com>
6
+ License-Expression: MIT
7
+ Project-URL: Homepage, https://github.com/YusufEminoglu/tr_tbdy_sdk
8
+ Project-URL: Repository, https://github.com/YusufEminoglu/tr_tbdy_sdk
9
+ Project-URL: Issues, https://github.com/YusufEminoglu/tr_tbdy_sdk/issues
10
+ Project-URL: Changelog, https://github.com/YusufEminoglu/tr_tbdy_sdk/blob/main/CHANGELOG.md
11
+ Keywords: tbdy,tbdy-2018,earthquake,deprem,seismic,design-spectrum,response-spectrum,turkey,turkiye,building-code,structural-engineering,site-coefficients
12
+ Classifier: Development Status :: 4 - Beta
13
+ Classifier: Programming Language :: Python :: 3
14
+ Classifier: Programming Language :: Python :: 3.9
15
+ Classifier: Programming Language :: Python :: 3.10
16
+ Classifier: Programming Language :: Python :: 3.11
17
+ Classifier: Programming Language :: Python :: 3.12
18
+ Classifier: Programming Language :: Python :: 3.13
19
+ Classifier: Operating System :: OS Independent
20
+ Classifier: Environment :: Console
21
+ Classifier: Natural Language :: Turkish
22
+ Classifier: Topic :: Scientific/Engineering
23
+ Classifier: Topic :: Scientific/Engineering :: Physics
24
+ Classifier: Intended Audience :: Science/Research
25
+ Classifier: Intended Audience :: Developers
26
+ Classifier: Typing :: Typed
27
+ Requires-Python: >=3.9
28
+ Description-Content-Type: text/markdown
29
+ License-File: LICENSE
30
+ Provides-Extra: plot
31
+ Requires-Dist: matplotlib>=3.5.0; extra == "plot"
32
+ Provides-Extra: dev
33
+ Requires-Dist: pytest>=7.0.0; extra == "dev"
34
+ Requires-Dist: pytest-cov>=4.0.0; extra == "dev"
35
+ Requires-Dist: ruff>=0.1.0; extra == "dev"
36
+ Requires-Dist: mypy>=1.0.0; extra == "dev"
37
+ Dynamic: license-file
38
+
39
+ # tr-tbdy
40
+
41
+ [![PyPI version](https://img.shields.io/pypi/v/tr-tbdy.svg)](https://pypi.org/project/tr-tbdy/)
42
+ [![Python versions](https://img.shields.io/pypi/pyversions/tr-tbdy.svg)](https://pypi.org/project/tr-tbdy/)
43
+ [![CI](https://github.com/YusufEminoglu/tr_tbdy_sdk/actions/workflows/ci.yml/badge.svg)](https://github.com/YusufEminoglu/tr_tbdy_sdk/actions/workflows/ci.yml)
44
+ [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://github.com/YusufEminoglu/tr_tbdy_sdk/blob/main/LICENSE)
45
+
46
+ **English summary.** `tr-tbdy` computes the seismic design spectra of the Turkish Building
47
+ Earthquake Code 2018 (TBDY 2018, Chapter 2) from the map spectral accelerations S_S and S_1
48
+ of a site and its local soil class: site coefficients F_S and F_1, S_DS, S_D1, corner periods,
49
+ the horizontal, vertical and displacement elastic spectra, the earthquake design class (DTS),
50
+ the building height class (BYS) and the reduced design spectrum. It is pure Python with no
51
+ required dependencies, exports CSV/JSON and ships a Turkish command-line tool; documentation
52
+ below is in Turkish.
53
+
54
+ ---
55
+
56
+ **Türkiye Bina Deprem Yönetmeliği 2018 (TBDY 2018) Bölüm 2 tasarım spektrumları.**
57
+
58
+ Bir saha için AFAD Türkiye Deprem Tehlike Haritası'ndan okunan harita spektral ivme
59
+ katsayıları SS ve S1 ile yerel zemin sınıfı (ZA–ZE) verildiğinde `tr-tbdy` şunları hesaplar:
60
+
61
+ - Yerel zemin etki katsayıları **FS** ve **F1** (Tablo 2.1, 2.2; sütunlar arasında doğrusal
62
+ enterpolasyon),
63
+ - Tasarım spektral ivme katsayıları **SDS**, **SD1** (Denk. 2.1),
64
+ - Köşe periyotları **TA**, **TB** ve **TL = 6 s** (Denk. 2.3),
65
+ - **Yatay elastik tasarım spektrumu** Sae(T) (Denk. 2.2),
66
+ - **Yatay elastik tasarım yerdeğiştirme spektrumu** Sde(T) (Denk. 2.4),
67
+ - **Düşey elastik tasarım spektrumu** SaeD(T), TAD, TBD, TLD (Denk. 2.5, 2.6),
68
+ - **Bina Önem Katsayısı** I ve **Bina Kullanım Sınıfı** BKS (Tablo 3.1),
69
+ - **Deprem Tasarım Sınıfı** DTS (Tablo 3.2),
70
+ - **Bina Yükseklik Sınıfı** BYS ve yükseklik aralıkları (Tablo 3.3),
71
+ - İsteğe bağlı: **Deprem Yükü Azaltma Katsayısı** Ra(T) (Denk. 4.1), **azaltılmış tasarım
72
+ spektrumu** SaR(T) (Denk. 4.8), taban kesme kuvveti alt sınırı 0.04 I SDS (Denk. 4.19) ve
73
+ Tablo 4.1'deki yerinde dökme betonarme sistemlerin (A11–A33) R ve D katsayıları.
74
+
75
+ Sonuçlar CSV/JSON olarak kaydedilir; matplotlib kuruluysa PNG grafik çizilir.
76
+
77
+ ```bash
78
+ pip install tr-tbdy # yalnızca standart kütüphane
79
+ pip install "tr-tbdy[plot]" # + PNG grafik (matplotlib)
80
+ ```
81
+
82
+ Python 3.9 veya üstü gerekir.
83
+
84
+ > SS ve S1 değerlerini kullanıcı sağlar (https://tdth.afad.gov.tr/). Paket AFAD
85
+ > servislerine bağlanmaz, ağ erişimi yapmaz.
86
+
87
+ ## Hızlı başlangıç
88
+
89
+ ```python
90
+ from tr_tbdy import DesignSpectrum, Reduction, height_class, to_csv
91
+
92
+ sp = DesignSpectrum.from_map(ss=1.20, s1=0.35, soil_class="ZC") # DD-2 düzeyi
93
+ sp.fs, sp.f1 # (1.2, 1.5)
94
+ sp.sds, sp.sd1 # (1.44, 0.525)
95
+ sp.ta, sp.tb, sp.tl # (0.0729, 0.3646, 6.0)
96
+
97
+ sp.sae(1.0) # 0.525 g yatay elastik spektral ivme
98
+ sp.saed(0.1) # 1.152 g düşey elastik spektral ivme
99
+ sp.sde(1.0) # 0.1305 m elastik spektral yerdeğiştirme
100
+ sp.sae([0.0, 0.2, 2.0]) # liste de verilebilir
101
+
102
+ dts = sp.design_class(bks=3) # '1'
103
+ height_class(30.0, dts) # 4 (28 < HN <= 42)
104
+
105
+ red = Reduction.from_system("A11", bks=3) # R = 8, D = 3, I = 1.0
106
+ sp.sar(1.0, red) # 0.0656 g azaltılmış tasarım spektral ivmesi
107
+
108
+ to_csv(sp, "spektrum.csv", reduction=red) # T, Sae, SaeD, Sde, Ra, SaR
109
+ ```
110
+
111
+ ZF sınıfı zeminlerde tablo değeri yoktur; sahaya özel zemin davranış analizinden elde edilen
112
+ SDS ve SD1 ile spektrum kurulur:
113
+
114
+ ```python
115
+ sp = DesignSpectrum.from_design_coefficients(sds=1.10, sd1=0.60, soil_class="ZF")
116
+ ```
117
+
118
+ ## Komut satırı
119
+
120
+ ```bash
121
+ tr-tbdy spektrum --ss 1.2 --s1 0.35 --zemin ZC --bks 3 --sistem A11 \
122
+ --csv spektrum.csv --json spektrum.json --png spektrum.png
123
+ tr-tbdy katsayi --ss 0.875 --s1 0.25 --zemin ZD # FS = 1.15, F1 = 2.10
124
+ tr-tbdy bys --hn 30 --sds 0.62 --bks 1 # DTS = 2a, BYS = 4
125
+ tr-tbdy zemin --vs30 420 # ZC
126
+ tr-tbdy sistemler # Tablo 4.1 (A grubu), BKS
127
+ tr-tbdy spektrum --sds 1.1 --sd1 0.6 --zemin ZF # sahaya özel SDS/SD1
128
+ ```
129
+
130
+ `spektrum` komutu özet değerleri ve periyot tablosunu (`--adim`, `--tmax`) yazdırır.
131
+ Diğer seçenekler: `--duzey DD-1..DD-4`, `--tutucu` (enterpolasyon yerine iki komşu sütunun
132
+ büyüğü), `--R` / `--D` (Tablo 4.1 dışındaki sistemler için), `--pga` / `--pgv` (yalnızca
133
+ raporlama), `--sessiz`. `python -m tr_tbdy` de aynı şekilde çalışır.
134
+
135
+ Örnek çıktı (kısaltılmış):
136
+
137
+ ```text
138
+ SS = 1.200 S1 = 0.350
139
+ FS = 1.200 F1 = 1.500 (Tablo 2.1, 2.2)
140
+ SDS = 1.4400 SD1 = 0.5250 (Denk. 2.1)
141
+ TA = 0.0729 s TB = 0.3646 s TL = 6.0 s (Denk. 2.3)
142
+ BKS = 3 I = 1 DTS = 1 (Tablo 3.1, 3.2)
143
+
144
+ T [s] Sae [g] SaeD [g] Sde [m] Ra SaR [g]
145
+ 0.0000 0.5760 0.4608 0.0000 3.000 0.1920
146
+ 0.3646 1.4400 0.3840 0.0476 8.000 0.1800
147
+ 1.0000 0.5250 0.1400 0.1305 8.000 0.0656
148
+ ```
149
+
150
+ ## API özeti
151
+
152
+ | Nesne | Açıklama |
153
+ |---|---|
154
+ | `DesignSpectrum.from_map(ss, s1, soil_class, level="DD-2", method="linear")` | Harita katsayılarından spektrum |
155
+ | `DesignSpectrum.from_design_coefficients(sds, sd1)` | SDS/SD1 biliniyorsa (ör. ZF) |
156
+ | `.sds`, `.sd1`, `.fs`, `.f1`, `.ta`, `.tb`, `.tl`, `.tad`, `.tbd`, `.tld` | Katsayılar, köşe periyotları |
157
+ | `.sae(T)`, `.saed(T)`, `.sde(T)`, `.sar(T, reduction)` | Spektrum ordinatları (sayı veya liste) |
158
+ | `.design_class(bks)`, `.periods()`, `.table()`, `.summary()` | DTS, periyot ızgarası, tablo |
159
+ | `site_coefficients(ss, s1, soil)`, `short_period_coefficient`, `one_second_coefficient` | FS, F1 |
160
+ | `design_class(sds, bks)`, `importance_factor(bks)` | Tablo 3.1, 3.2 |
161
+ | `height_class(hn, dts)`, `height_class_limits(dts)`, `height_class_table()` | Tablo 3.3 |
162
+ | `Reduction(R, D, I)`, `Reduction.from_system("A11", bks)`, `reduction_factor(...)` | Denk. 4.1 |
163
+ | `minimum_base_shear_ratio(sds, I)` | Denk. 4.19 alt sınırı |
164
+ | `soil_class_from_vs30(vs30)` | Tablo 16.1 (yalnızca Vs30) |
165
+ | `to_csv`, `to_json`, `spectrum_to_dict`, `tr_tbdy.plot.plot_spectrum` | Dışa aktarma, grafik |
166
+ | `TBDYError`, `SiteSpecificAnalysisRequired` | Hatalar (`ValueError` alt sınıfları) |
167
+
168
+ Tablolar `tr_tbdy.tables` modülündedir (`FS_TABLE`, `F1_TABLE`, `BYS_UPPER_LIMITS`,
169
+ `STRUCTURAL_SYSTEMS`, ...). `fs_table=` / `f1_table=` parametreleriyle kendi tablonuzu
170
+ verebilirsiniz (ör. yönetmelik değişikliği).
171
+
172
+ ## Yöntem ve kaynaklar
173
+
174
+ Tüm tablo değerleri ve denklemler, **Türkiye Bina Deprem Yönetmeliği**, Resmî Gazete
175
+ 18.03.2018, Sayı 30364 (Mükerrer), ek PDF metni (`20180318M1-2-1.pdf`) ile karşılaştırılarak
176
+ doğrulanmıştır:
177
+
178
+ - **2.3.2.2, Denk. (2.1):** SDS = SS · FS, SD1 = S1 · F1.
179
+ - **2.3.3.1, Tablo 2.1 / 2.2:** FS (SS ≤ 0.25 … ≥ 1.50) ve F1 (S1 ≤ 0.10 … ≥ 0.60).
180
+ "Tablolarda harita spektral ivme katsayılarının ara değerleri için doğrusal enterpolasyon
181
+ yapılabilir." İlk sütunun altı ilk sütun, son sütunun üstü son sütun değerini alır.
182
+ - **2.3.4.1, Denk. (2.2), (2.3):**
183
+ Sae = (0.4 + 0.6 T/TA) SDS (0 ≤ T ≤ TA); SDS (TA ≤ T ≤ TB); SD1/T (TB ≤ T ≤ TL);
184
+ SD1 TL/T² (T ≥ TL); TA = 0.2 SD1/SDS, TB = SD1/SDS, TL = 6 s.
185
+ - **2.3.4.2, Denk. (2.4):** Sde(T) = T²/(4π²) · g · Sae(T), g = 9.81 m/s².
186
+ - **2.3.5, Denk. (2.5), (2.6):** SaeD = (0.32 + 0.48 T/TAD) SDS; 0.8 SDS; 0.8 SDS TBD/T
187
+ (TBD ≤ T ≤ TLD); TAD = TA/3, TBD = TB/3, TLD = TL/2. TLD'den sonra tanımlı değildir
188
+ (kütüphane `nan`, tablolar boş değer döndürür).
189
+ - **Tablo 3.1:** I = 1.5 / 1.2 / 1.0 (BKS 1 / 2 / 3).
190
+ - **Tablo 3.2:** SDS < 0.33 → DTS 4(a); 0.33 ≤ SDS < 0.50 → 3(a); 0.50 ≤ SDS < 0.75 → 2(a);
191
+ SDS ≥ 0.75 → 1(a); "a" BKS = 1 için. SDS, DD-2 düzeyindeki değerdir.
192
+ - **Tablo 3.3:** BYS 1–8 yükseklik aralıkları; DTS 3/3a ve 4/4a sütunları BYS 4–8 için
193
+ ortaktır (birleştirilmiş hücreler).
194
+ - **4.2.1.2, Denk. (4.1):** Ra = R/I (T > TB); Ra = D + (R/I − D) T/TB (T ≤ TB).
195
+ **4.4.1, Denk. (4.8):** SaR = Sae/Ra. **Denk. (4.19):** VtE ≥ 0.04 mt I SDS g.
196
+ - **Tablo 4.1:** A11–A33 yerinde dökme betonarme sistemlerin R, D ve izin verilen BYS değerleri.
197
+ - **Tablo 16.1:** Vs30 aralıkları (ZA > 1500, ZB 760–1500, ZC 360–760, ZD 180–360,
198
+ ZE < 180 m/s).
199
+
200
+ Testler, bu formüllerle elle hesaplanmış örnekleri (ör. SS = 1.20, S1 = 0.35, ZC →
201
+ SDS = 1.44, SD1 = 0.525, TB = 0.3646 s; SS = 0.875, S1 = 0.25, ZD → FS = 1.15, F1 = 2.10)
202
+ ve tabloların yönetmelik metninden bağımsız olarak aktarılmış kopyalarını kullanır.
203
+
204
+ ## Sınırlamalar
205
+
206
+ - **ZF zeminler** için tablo yoktur: TBDY 2018 2.3.3.2 ve 16.5 uyarınca sahaya özel zemin
207
+ davranış analizi gerekir; `from_map(..., "ZF")` `SiteSpecificAnalysisRequired` hatası verir.
208
+ - **Sahaya özel spektrumlar** (2.4) hesaplanmaz; bu spektrumlar standart spektrumun %90'ından
209
+ küçük olamaz (2.4.1.2).
210
+ - `soil_class_from_vs30` yalnızca Vs30'u kullanır. Tablo 16.1 sınır değerlerinin hangi sınıfa
211
+ ait olduğunu belirtmez; kütüphane ASCE 7 ile aynı kuralı varsayar (760 → ZC, 360 → ZD,
212
+ 180 → ZD, 1500 → ZB). SPT N60 ve cu ölçütleri, ZE'nin yumuşak kil koşulu ve ZF ölçütleri
213
+ değerlendirilmez.
214
+ - `--tutucu` / `method="conservative"` yönetmelikte tanımlı bir yöntem değildir; iki komşu
215
+ sütunun büyüğünü alan, isteğe bağlı bir yaklaşımdır.
216
+ - Tablo 4.1'in yalnızca yerinde dökme betonarme (A) grubu dahildir; önüretimli, çelik ve diğer
217
+ sistemler için R ve D doğrudan verilmelidir. 4.3.4.5–4.3.4.7'deki devrilme momenti
218
+ koşullarına bağlı R/D değişiklikleri, Bölüm 13 (yüksek binalar) ve deprem hesabının kendisi
219
+ kapsam dışıdır.
220
+ - PGA ve PGV yalnızca raporlama için taşınır; Bölüm 2 standart spektrumunda kullanılmaz.
221
+ - Bu paket bir mühendislik yardımcısıdır; resmi proje hesaplarında sonuçlar yürürlükteki
222
+ yönetmelik metniyle kontrol edilmelidir.
223
+
224
+ ## Akademik atıf
225
+
226
+ ```bibtex
227
+ @software{eminoglu_tr_tbdy,
228
+ author = {Eminoğlu, Yusuf},
229
+ title = {tr-tbdy},
230
+ year = {2026},
231
+ version = {0.1.0},
232
+ url = {https://github.com/YusufEminoglu/tr_tbdy_sdk}
233
+ }
234
+ ```
235
+
236
+ ## Lisans
237
+
238
+ MIT © 2026 Yusuf Eminoğlu. İletişim: geospacephilo@gmail.com
@@ -0,0 +1,200 @@
1
+ # tr-tbdy
2
+
3
+ [![PyPI version](https://img.shields.io/pypi/v/tr-tbdy.svg)](https://pypi.org/project/tr-tbdy/)
4
+ [![Python versions](https://img.shields.io/pypi/pyversions/tr-tbdy.svg)](https://pypi.org/project/tr-tbdy/)
5
+ [![CI](https://github.com/YusufEminoglu/tr_tbdy_sdk/actions/workflows/ci.yml/badge.svg)](https://github.com/YusufEminoglu/tr_tbdy_sdk/actions/workflows/ci.yml)
6
+ [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://github.com/YusufEminoglu/tr_tbdy_sdk/blob/main/LICENSE)
7
+
8
+ **English summary.** `tr-tbdy` computes the seismic design spectra of the Turkish Building
9
+ Earthquake Code 2018 (TBDY 2018, Chapter 2) from the map spectral accelerations S_S and S_1
10
+ of a site and its local soil class: site coefficients F_S and F_1, S_DS, S_D1, corner periods,
11
+ the horizontal, vertical and displacement elastic spectra, the earthquake design class (DTS),
12
+ the building height class (BYS) and the reduced design spectrum. It is pure Python with no
13
+ required dependencies, exports CSV/JSON and ships a Turkish command-line tool; documentation
14
+ below is in Turkish.
15
+
16
+ ---
17
+
18
+ **Türkiye Bina Deprem Yönetmeliği 2018 (TBDY 2018) Bölüm 2 tasarım spektrumları.**
19
+
20
+ Bir saha için AFAD Türkiye Deprem Tehlike Haritası'ndan okunan harita spektral ivme
21
+ katsayıları SS ve S1 ile yerel zemin sınıfı (ZA–ZE) verildiğinde `tr-tbdy` şunları hesaplar:
22
+
23
+ - Yerel zemin etki katsayıları **FS** ve **F1** (Tablo 2.1, 2.2; sütunlar arasında doğrusal
24
+ enterpolasyon),
25
+ - Tasarım spektral ivme katsayıları **SDS**, **SD1** (Denk. 2.1),
26
+ - Köşe periyotları **TA**, **TB** ve **TL = 6 s** (Denk. 2.3),
27
+ - **Yatay elastik tasarım spektrumu** Sae(T) (Denk. 2.2),
28
+ - **Yatay elastik tasarım yerdeğiştirme spektrumu** Sde(T) (Denk. 2.4),
29
+ - **Düşey elastik tasarım spektrumu** SaeD(T), TAD, TBD, TLD (Denk. 2.5, 2.6),
30
+ - **Bina Önem Katsayısı** I ve **Bina Kullanım Sınıfı** BKS (Tablo 3.1),
31
+ - **Deprem Tasarım Sınıfı** DTS (Tablo 3.2),
32
+ - **Bina Yükseklik Sınıfı** BYS ve yükseklik aralıkları (Tablo 3.3),
33
+ - İsteğe bağlı: **Deprem Yükü Azaltma Katsayısı** Ra(T) (Denk. 4.1), **azaltılmış tasarım
34
+ spektrumu** SaR(T) (Denk. 4.8), taban kesme kuvveti alt sınırı 0.04 I SDS (Denk. 4.19) ve
35
+ Tablo 4.1'deki yerinde dökme betonarme sistemlerin (A11–A33) R ve D katsayıları.
36
+
37
+ Sonuçlar CSV/JSON olarak kaydedilir; matplotlib kuruluysa PNG grafik çizilir.
38
+
39
+ ```bash
40
+ pip install tr-tbdy # yalnızca standart kütüphane
41
+ pip install "tr-tbdy[plot]" # + PNG grafik (matplotlib)
42
+ ```
43
+
44
+ Python 3.9 veya üstü gerekir.
45
+
46
+ > SS ve S1 değerlerini kullanıcı sağlar (https://tdth.afad.gov.tr/). Paket AFAD
47
+ > servislerine bağlanmaz, ağ erişimi yapmaz.
48
+
49
+ ## Hızlı başlangıç
50
+
51
+ ```python
52
+ from tr_tbdy import DesignSpectrum, Reduction, height_class, to_csv
53
+
54
+ sp = DesignSpectrum.from_map(ss=1.20, s1=0.35, soil_class="ZC") # DD-2 düzeyi
55
+ sp.fs, sp.f1 # (1.2, 1.5)
56
+ sp.sds, sp.sd1 # (1.44, 0.525)
57
+ sp.ta, sp.tb, sp.tl # (0.0729, 0.3646, 6.0)
58
+
59
+ sp.sae(1.0) # 0.525 g yatay elastik spektral ivme
60
+ sp.saed(0.1) # 1.152 g düşey elastik spektral ivme
61
+ sp.sde(1.0) # 0.1305 m elastik spektral yerdeğiştirme
62
+ sp.sae([0.0, 0.2, 2.0]) # liste de verilebilir
63
+
64
+ dts = sp.design_class(bks=3) # '1'
65
+ height_class(30.0, dts) # 4 (28 < HN <= 42)
66
+
67
+ red = Reduction.from_system("A11", bks=3) # R = 8, D = 3, I = 1.0
68
+ sp.sar(1.0, red) # 0.0656 g azaltılmış tasarım spektral ivmesi
69
+
70
+ to_csv(sp, "spektrum.csv", reduction=red) # T, Sae, SaeD, Sde, Ra, SaR
71
+ ```
72
+
73
+ ZF sınıfı zeminlerde tablo değeri yoktur; sahaya özel zemin davranış analizinden elde edilen
74
+ SDS ve SD1 ile spektrum kurulur:
75
+
76
+ ```python
77
+ sp = DesignSpectrum.from_design_coefficients(sds=1.10, sd1=0.60, soil_class="ZF")
78
+ ```
79
+
80
+ ## Komut satırı
81
+
82
+ ```bash
83
+ tr-tbdy spektrum --ss 1.2 --s1 0.35 --zemin ZC --bks 3 --sistem A11 \
84
+ --csv spektrum.csv --json spektrum.json --png spektrum.png
85
+ tr-tbdy katsayi --ss 0.875 --s1 0.25 --zemin ZD # FS = 1.15, F1 = 2.10
86
+ tr-tbdy bys --hn 30 --sds 0.62 --bks 1 # DTS = 2a, BYS = 4
87
+ tr-tbdy zemin --vs30 420 # ZC
88
+ tr-tbdy sistemler # Tablo 4.1 (A grubu), BKS
89
+ tr-tbdy spektrum --sds 1.1 --sd1 0.6 --zemin ZF # sahaya özel SDS/SD1
90
+ ```
91
+
92
+ `spektrum` komutu özet değerleri ve periyot tablosunu (`--adim`, `--tmax`) yazdırır.
93
+ Diğer seçenekler: `--duzey DD-1..DD-4`, `--tutucu` (enterpolasyon yerine iki komşu sütunun
94
+ büyüğü), `--R` / `--D` (Tablo 4.1 dışındaki sistemler için), `--pga` / `--pgv` (yalnızca
95
+ raporlama), `--sessiz`. `python -m tr_tbdy` de aynı şekilde çalışır.
96
+
97
+ Örnek çıktı (kısaltılmış):
98
+
99
+ ```text
100
+ SS = 1.200 S1 = 0.350
101
+ FS = 1.200 F1 = 1.500 (Tablo 2.1, 2.2)
102
+ SDS = 1.4400 SD1 = 0.5250 (Denk. 2.1)
103
+ TA = 0.0729 s TB = 0.3646 s TL = 6.0 s (Denk. 2.3)
104
+ BKS = 3 I = 1 DTS = 1 (Tablo 3.1, 3.2)
105
+
106
+ T [s] Sae [g] SaeD [g] Sde [m] Ra SaR [g]
107
+ 0.0000 0.5760 0.4608 0.0000 3.000 0.1920
108
+ 0.3646 1.4400 0.3840 0.0476 8.000 0.1800
109
+ 1.0000 0.5250 0.1400 0.1305 8.000 0.0656
110
+ ```
111
+
112
+ ## API özeti
113
+
114
+ | Nesne | Açıklama |
115
+ |---|---|
116
+ | `DesignSpectrum.from_map(ss, s1, soil_class, level="DD-2", method="linear")` | Harita katsayılarından spektrum |
117
+ | `DesignSpectrum.from_design_coefficients(sds, sd1)` | SDS/SD1 biliniyorsa (ör. ZF) |
118
+ | `.sds`, `.sd1`, `.fs`, `.f1`, `.ta`, `.tb`, `.tl`, `.tad`, `.tbd`, `.tld` | Katsayılar, köşe periyotları |
119
+ | `.sae(T)`, `.saed(T)`, `.sde(T)`, `.sar(T, reduction)` | Spektrum ordinatları (sayı veya liste) |
120
+ | `.design_class(bks)`, `.periods()`, `.table()`, `.summary()` | DTS, periyot ızgarası, tablo |
121
+ | `site_coefficients(ss, s1, soil)`, `short_period_coefficient`, `one_second_coefficient` | FS, F1 |
122
+ | `design_class(sds, bks)`, `importance_factor(bks)` | Tablo 3.1, 3.2 |
123
+ | `height_class(hn, dts)`, `height_class_limits(dts)`, `height_class_table()` | Tablo 3.3 |
124
+ | `Reduction(R, D, I)`, `Reduction.from_system("A11", bks)`, `reduction_factor(...)` | Denk. 4.1 |
125
+ | `minimum_base_shear_ratio(sds, I)` | Denk. 4.19 alt sınırı |
126
+ | `soil_class_from_vs30(vs30)` | Tablo 16.1 (yalnızca Vs30) |
127
+ | `to_csv`, `to_json`, `spectrum_to_dict`, `tr_tbdy.plot.plot_spectrum` | Dışa aktarma, grafik |
128
+ | `TBDYError`, `SiteSpecificAnalysisRequired` | Hatalar (`ValueError` alt sınıfları) |
129
+
130
+ Tablolar `tr_tbdy.tables` modülündedir (`FS_TABLE`, `F1_TABLE`, `BYS_UPPER_LIMITS`,
131
+ `STRUCTURAL_SYSTEMS`, ...). `fs_table=` / `f1_table=` parametreleriyle kendi tablonuzu
132
+ verebilirsiniz (ör. yönetmelik değişikliği).
133
+
134
+ ## Yöntem ve kaynaklar
135
+
136
+ Tüm tablo değerleri ve denklemler, **Türkiye Bina Deprem Yönetmeliği**, Resmî Gazete
137
+ 18.03.2018, Sayı 30364 (Mükerrer), ek PDF metni (`20180318M1-2-1.pdf`) ile karşılaştırılarak
138
+ doğrulanmıştır:
139
+
140
+ - **2.3.2.2, Denk. (2.1):** SDS = SS · FS, SD1 = S1 · F1.
141
+ - **2.3.3.1, Tablo 2.1 / 2.2:** FS (SS ≤ 0.25 … ≥ 1.50) ve F1 (S1 ≤ 0.10 … ≥ 0.60).
142
+ "Tablolarda harita spektral ivme katsayılarının ara değerleri için doğrusal enterpolasyon
143
+ yapılabilir." İlk sütunun altı ilk sütun, son sütunun üstü son sütun değerini alır.
144
+ - **2.3.4.1, Denk. (2.2), (2.3):**
145
+ Sae = (0.4 + 0.6 T/TA) SDS (0 ≤ T ≤ TA); SDS (TA ≤ T ≤ TB); SD1/T (TB ≤ T ≤ TL);
146
+ SD1 TL/T² (T ≥ TL); TA = 0.2 SD1/SDS, TB = SD1/SDS, TL = 6 s.
147
+ - **2.3.4.2, Denk. (2.4):** Sde(T) = T²/(4π²) · g · Sae(T), g = 9.81 m/s².
148
+ - **2.3.5, Denk. (2.5), (2.6):** SaeD = (0.32 + 0.48 T/TAD) SDS; 0.8 SDS; 0.8 SDS TBD/T
149
+ (TBD ≤ T ≤ TLD); TAD = TA/3, TBD = TB/3, TLD = TL/2. TLD'den sonra tanımlı değildir
150
+ (kütüphane `nan`, tablolar boş değer döndürür).
151
+ - **Tablo 3.1:** I = 1.5 / 1.2 / 1.0 (BKS 1 / 2 / 3).
152
+ - **Tablo 3.2:** SDS < 0.33 → DTS 4(a); 0.33 ≤ SDS < 0.50 → 3(a); 0.50 ≤ SDS < 0.75 → 2(a);
153
+ SDS ≥ 0.75 → 1(a); "a" BKS = 1 için. SDS, DD-2 düzeyindeki değerdir.
154
+ - **Tablo 3.3:** BYS 1–8 yükseklik aralıkları; DTS 3/3a ve 4/4a sütunları BYS 4–8 için
155
+ ortaktır (birleştirilmiş hücreler).
156
+ - **4.2.1.2, Denk. (4.1):** Ra = R/I (T > TB); Ra = D + (R/I − D) T/TB (T ≤ TB).
157
+ **4.4.1, Denk. (4.8):** SaR = Sae/Ra. **Denk. (4.19):** VtE ≥ 0.04 mt I SDS g.
158
+ - **Tablo 4.1:** A11–A33 yerinde dökme betonarme sistemlerin R, D ve izin verilen BYS değerleri.
159
+ - **Tablo 16.1:** Vs30 aralıkları (ZA > 1500, ZB 760–1500, ZC 360–760, ZD 180–360,
160
+ ZE < 180 m/s).
161
+
162
+ Testler, bu formüllerle elle hesaplanmış örnekleri (ör. SS = 1.20, S1 = 0.35, ZC →
163
+ SDS = 1.44, SD1 = 0.525, TB = 0.3646 s; SS = 0.875, S1 = 0.25, ZD → FS = 1.15, F1 = 2.10)
164
+ ve tabloların yönetmelik metninden bağımsız olarak aktarılmış kopyalarını kullanır.
165
+
166
+ ## Sınırlamalar
167
+
168
+ - **ZF zeminler** için tablo yoktur: TBDY 2018 2.3.3.2 ve 16.5 uyarınca sahaya özel zemin
169
+ davranış analizi gerekir; `from_map(..., "ZF")` `SiteSpecificAnalysisRequired` hatası verir.
170
+ - **Sahaya özel spektrumlar** (2.4) hesaplanmaz; bu spektrumlar standart spektrumun %90'ından
171
+ küçük olamaz (2.4.1.2).
172
+ - `soil_class_from_vs30` yalnızca Vs30'u kullanır. Tablo 16.1 sınır değerlerinin hangi sınıfa
173
+ ait olduğunu belirtmez; kütüphane ASCE 7 ile aynı kuralı varsayar (760 → ZC, 360 → ZD,
174
+ 180 → ZD, 1500 → ZB). SPT N60 ve cu ölçütleri, ZE'nin yumuşak kil koşulu ve ZF ölçütleri
175
+ değerlendirilmez.
176
+ - `--tutucu` / `method="conservative"` yönetmelikte tanımlı bir yöntem değildir; iki komşu
177
+ sütunun büyüğünü alan, isteğe bağlı bir yaklaşımdır.
178
+ - Tablo 4.1'in yalnızca yerinde dökme betonarme (A) grubu dahildir; önüretimli, çelik ve diğer
179
+ sistemler için R ve D doğrudan verilmelidir. 4.3.4.5–4.3.4.7'deki devrilme momenti
180
+ koşullarına bağlı R/D değişiklikleri, Bölüm 13 (yüksek binalar) ve deprem hesabının kendisi
181
+ kapsam dışıdır.
182
+ - PGA ve PGV yalnızca raporlama için taşınır; Bölüm 2 standart spektrumunda kullanılmaz.
183
+ - Bu paket bir mühendislik yardımcısıdır; resmi proje hesaplarında sonuçlar yürürlükteki
184
+ yönetmelik metniyle kontrol edilmelidir.
185
+
186
+ ## Akademik atıf
187
+
188
+ ```bibtex
189
+ @software{eminoglu_tr_tbdy,
190
+ author = {Eminoğlu, Yusuf},
191
+ title = {tr-tbdy},
192
+ year = {2026},
193
+ version = {0.1.0},
194
+ url = {https://github.com/YusufEminoglu/tr_tbdy_sdk}
195
+ }
196
+ ```
197
+
198
+ ## Lisans
199
+
200
+ MIT © 2026 Yusuf Eminoğlu. İletişim: geospacephilo@gmail.com
@@ -0,0 +1,45 @@
1
+ """tr_tbdy hızlı başlangıç / quick start.
2
+
3
+ python examples/quickstart.py
4
+
5
+ SS ve S1 değerlerini AFAD Türkiye Deprem Tehlike Haritası'ndan (https://tdth.afad.gov.tr/)
6
+ kendi sahanız için okuyun; aşağıdaki değerler yalnızca örnektir.
7
+ """
8
+
9
+ from __future__ import annotations
10
+
11
+ from pathlib import Path
12
+
13
+ from tr_tbdy import DesignSpectrum, Reduction, height_class, to_csv, to_json
14
+
15
+ # Örnek saha: DD-2 düzeyi, SS = 1.20, S1 = 0.35, yerel zemin sınıfı ZC.
16
+ spectrum = DesignSpectrum.from_map(ss=1.20, s1=0.35, soil_class="ZC")
17
+
18
+ print(f"FS = {spectrum.fs:.2f}, F1 = {spectrum.f1:.2f}")
19
+ print(f"SDS = {spectrum.sds:.3f}, SD1 = {spectrum.sd1:.3f}")
20
+ print(f"TA = {spectrum.ta:.3f} s, TB = {spectrum.tb:.3f} s, TL = {spectrum.tl:.0f} s")
21
+
22
+ # Konut (BKS = 3), 30 m yüksekliğinde bina.
23
+ dts = spectrum.design_class(bks=3)
24
+ print(f"DTS = {dts}, BYS = {height_class(30.0, dts)}")
25
+
26
+ # Süneklik düzeyi yüksek betonarme çerçeve (Tablo 4.1, A11).
27
+ reduction = Reduction.from_system("A11", bks=3)
28
+ for t in (0.0, 0.2, 0.5, 1.0, 2.0):
29
+ print(
30
+ f"T = {t:4.1f} s Sae = {spectrum.sae(t):.3f} g "
31
+ f"SaR = {spectrum.sar(t, reduction):.3f} g Sde = {spectrum.sde(t):.4f} m"
32
+ )
33
+
34
+ out = Path(__file__).with_name("spektrum_ornek")
35
+ to_csv(spectrum, out.with_suffix(".csv"), reduction=reduction)
36
+ to_json(spectrum, out.with_suffix(".json"), reduction=reduction, bks=3)
37
+ print(f"Yazıldı: {out.with_suffix('.csv').name}, {out.with_suffix('.json').name}")
38
+
39
+ try:
40
+ from tr_tbdy.plot import plot_spectrum
41
+
42
+ plot_spectrum(spectrum, out.with_suffix(".png"), reduction=reduction)
43
+ print(f"Grafik: {out.with_suffix('.png').name}")
44
+ except ImportError:
45
+ print('Grafik için: pip install "tr-tbdy[plot]"')