鋼材(H形鋼・溝形鋼・山形鋼)の単位重量・寸法・断面性能のきれいなデータが必要になりました。インドの形鋼については国家規格 IS 808 が一次情報で、Public.Resource.Org により公開されています。2021年版は最初からデジタルのPDF、1989年版と1964年のハンドブック(SP 6(1))はスキャン画像です。
表を書き写すこと自体は簡単です。難しいのは「書き写したデータ(と、そもそも印刷された表)が正しいか」をどう確かめるかです。ここで断面性能表の便利な性質が使えます。列どうしが独立していないのです。いくつかの物理的な関係式で列が結びついているので、各行が自分自身を検算できます。
3つの関係式
1. 単位重量は断面積から決まる。 鋼の密度は 7850 kg/m³。断面積 A cm² の部材 1 m の体積は A × 10⁻⁴ m³ なので:
単位重量 (kg/m) = 0.785 × A (cm²)
2. 断面二次半径は断面二次モーメントと断面積から決まる。
r = sqrt(I / A)
3. 断面係数は断面二次モーメントとせいから決まる(二軸対称断面の強軸):
Zx = Ix / (D / 2)
これだけで、ほとんどの行のほとんどの列を検算できます。Python で書くと本体は十数行です。
import math
TOL = 0.02 # 表は有効数字3〜4桁で印刷されている
def close(printed, derived, tol=TOL):
# 小さい値は 0.1 単位で丸められているので、絶対誤差の余裕も持たせる
return abs(printed - derived) <= tol * abs(derived) + 0.06
def check(row):
problems = []
if not close(row["M"], 0.785 * row["A"]):
problems.append(("M", row["M"], round(0.785 * row["A"], 2)))
for r, i in (("rx", "Ix"), ("ry", "Iy")):
derived = math.sqrt(row[i] / row["A"])
if not close(row[r], derived):
problems.append((r, row[r], round(derived, 2)))
if row.get("D") and not close(row["Zx"], row["Ix"] / (row["D"] / 20)): # D は mm、Z は cm³
problems.append(("Zx", row["Zx"], round(row["Ix"] / (row["D"] / 20), 1)))
return problems
全行に流して引っかかったものは、私の転記ミスか、規格側の誤植のどちらかです。自分のミスは直し、残りは元データの横に errata.csv として置きました。元の CSV には印刷どおりの値を残し、ビルド時に訂正を当てる形です。
見つかったもの
IS 808:1989(1992年の追補を含む):
| 断面 | 列 | 印刷値 | 関係式から | 検算 |
|---|---|---|---|---|
| MC 100 | Zx | 33.5 | 38.4 | Ix / (D/2) = 192 / 5.0 |
| MC 175(重量級) | 単位重量 | 22.7 | 21.7 | 0.785 × 27.6 |
| MC 250 | ry | 2.37 | 2.33 | √(211 / 39.0) |
| ISA 35×35×6 | Iu | 5.5 | 6.4 | 板厚 5 mm の山形鋼の 5.6 より小さい |
| ISA 65×65×4 | Ix, Iu | 21.70, 34.50 | 20.2, 32.0 | 追補で追加された行 |
IS 808:2021:
| 断面 | 列 | 印刷値 | 正しい値 | 備考 |
|---|---|---|---|---|
| MC 75 | rz | 39.4 mm | 29.4 mm | √(78.2×10⁴ / 908)。1989年版は 2.94 cm で正しかった |
| MC 175* | 単位重量 | 22.7 | 21.4 | 0.785 × 27.3 — 1989年版と同じ 22.7 |
| 100 mm 以上のすべての ISA | rv | 10倍 | 例:√(Iv / A) が 20.0 mm なのに 200.0 と印刷 |
個人的に一番面白いのは MC 175 です。自分の断面積と合わない単位重量が、1989年の表から2021年の表へ、32年越しにそのまま引き継がれていました。
大きなデータベースも無縁ではありません。米国の AISC Shapes Database はメートル系とヤード・ポンド系の列が並んでいるので、行ごとに突き合わせると、S24×90 の周長だけゼロが一つ多い(1840 mm のはずが 18400 mm)セルが見つかりました。
いまでも使われている1964年の値
関係式は、長年の混乱の理由も説明してくれました。ISMB 200 の単位重量を検索すると、多くの表は 25.4 kg/m、一部は 24.2 kg/m と出てきます。実はどちらも「正しい」のです。
| 版 | フランジ厚 | 断面積 | 単位重量 |
|---|---|---|---|
| SP 6(1):1964 ハンドブック | 10.8 mm | 32.33 cm² | 25.4 kg/m |
| IS 808:1989 | 10.0 mm | 30.8 cm² | 24.2 kg/m |
| IS 808:2021 | 10.0 mm | 30.8 cm² | 24.17 kg/m |
1989年の改訂でフランジが薄くなりました。古いハンドブックから写した表は更新されないまま残り、12 m の梁が今日圧延されているものより 15 kg 重く見積もられています。ISMB 100(11.5 → 8.9 kg/m)や ISMB 300(44.2 → 46.0 kg/m、こちらは重くなった)でも同じことが起きています。
工学データ全般に使える教訓
- 冗長性を探す。 工学の表にはたいてい計算で求まる列があります。信じるのではなく再計算し、食い違いをシグナルとして扱う。
-
印刷値は残す。 元データを書き換えず、訂正は理由と計算式つきで別ファイル(
errata.csv)に置く。誰でも検証できるように。 - 複数ソースを突き合わせる。 欧州形鋼なら2つのオープンライブラリ、AISC ならメートル系とヤード・ポンド系の列。
- 旧版が効いてくる。 ユーザーが現行規格と合わない数字を引用していたら、たいてい旧版が原因です。黙ってどちらかを選ぶより、両方を見せるほうが役に立ちます。
整理したデータは Python パッケージにもしました(pip install steel-sections、steel_sections.get("ISMB 200").mass_1964_kg_m で旧版の値も取れます)。3つの版を並べた表と重量計算機はこちら:https://steelweight-calculator.com/charts/ismb-weight-chart/