STR-LAB

2D骨組解析ツール — 計算方法の解説

kozo.info 構造設計ツールシリーズ  |  バージョン 1.2 / 2026年7月

1. 解析手法の概要

STR-LAB は平面骨組み構造(ラーメン・トラス・連続梁など)を 直接剛性法(Direct Stiffness Method)で解く線形弾性解析ツールです。 直接剛性法はマトリクス変位法とも呼ばれ、有限要素法の骨組み構造への適用形として、 実務・教育の両面で最も広く使われている手法です。

解析は次の手順で進みます。すべての計算はブラウザ内の JavaScript で実行されます。

部材剛性マトリクス作成
座標変換
全体剛性マトリクス組立
荷重ベクトル作成
境界条件処理
連立方程式求解
反力・断面力算定

全体系の支配方程式は次のとおりです。

K · U = F

  K : 全体剛性マトリクス(自由度数 × 自由度数)
  U : 節点変位ベクトル(未知数)
  F : 節点荷重ベクトル(節点荷重 + 部材荷重の等価節点力)

2. モデル化の前提

項目前提
構造系XY平面内の平面骨組み(2D フレーム)
梁理論Euler-Bernoulli 梁(曲げ変形+軸変形。せん断変形は無視
材料線形弾性(フックの法則)。ヤング率 E で特徴付け
変形微小変形理論。幾何学的非線形(P-Δ効果・座屈)は考慮しない
自由度1節点あたり3自由度: 水平変位 u、鉛直変位 v、回転角 θ
部材2節点を結ぶ直線部材。断面は部材内で一定(E・A・I)
接合各部材の i端・j端 ごとに剛接合/ピン接合を指定可能

3. 座標系と符号規約

グローバル座標系: Y↑ │ └──────→ X Z(面外): 紙面から手前向き正(右手系) 回転・モーメント: 反時計まわり(CCW)正 部材ローカル座標系: y_local ↑ │ i端 ──────────┼────────── j端 x_local → x_local: i端 → j端 方向 y_local: x_local を反時計に90°回転した方向 部材の自由度順序(6成分): d = [ u_i, v_i, θ_i, u_j, v_j, θ_j ]ᵀ 断面力の正方向(結果表示): N(軸力) : 引張が正 Q(せん断力) : i端右側断面で下向きが正 M(曲げモーメント): 反時計まわり(CCW)が正
内部計算では j端の端部力は「節点に作用する外向きの力」として得られますが、 結果表示の際に符号を反転し、i端・j端とも同じ工学的符号規約(引張正・CCW正)に揃えています。

4. 部材剛性マトリクス

部材ローカル座標系における剛性マトリクス k は 6×6 で、 軸剛性 EA/L と曲げ剛性 EI から構成されます。接合条件(剛接/ピン)の組み合わせにより 4種類を使い分けます。

4.1 両端剛接(標準のラーメン部材)

        u_i        v_i        θ_i        u_j        v_j        θ_j
   ┌                                                              ┐
N_i│  EA/L        0          0         -EA/L       0          0   │
Q_i│   0      12EI/L³     6EI/L²        0      -12EI/L³    6EI/L² │
M_i│   0       6EI/L²     4EI/L         0       -6EI/L²    2EI/L  │
N_j│ -EA/L        0          0          EA/L       0          0   │
Q_j│   0     -12EI/L³    -6EI/L²        0       12EI/L³   -6EI/L² │
M_j│   0       6EI/L²     2EI/L         0       -6EI/L²    4EI/L  │
   └                                                              ┘

これは Euler-Bernoulli 梁の厳密解(3次のたわみ関数)から導かれるマトリクスで、 部材内に荷重がない限り、要素分割なしで厳密な節点変位が得られます。

4.2 ピン接合端の処理 — 静的縮約

ピン接合された端部ではモーメントが伝達されない(M = 0)ため、 その回転自由度を静的縮約(Static Condensation)により剛性マトリクスから消去します。 縮約の一般式は次のとおりです。

残す自由度 a、消去する自由度 b(ピン端の回転)に分割すると

  k̃_aa = k_aa − k_ab · k_bb⁻¹ · k_ba

(ピン端の回転は M=0 の条件から従属的に決まるため未知数から除外できる)

i端ピン・j端剛接

   ┌                                                          ┐
   │  EA/L       0         0      -EA/L       0         0     │
   │   0       3EI/L³      0        0      -3EI/L³   3EI/L²   │
   │   0         0         0        0         0         0     │
   │ -EA/L       0         0       EA/L       0         0     │
   │   0      -3EI/L³      0        0       3EI/L³  -3EI/L²   │
   │   0       3EI/L²      0        0      -3EI/L²   3EI/L    │
   └                                                          ┘

i端剛接・j端ピン

   ┌                                                          ┐
   │  EA/L       0         0      -EA/L       0         0     │
   │   0       3EI/L³   3EI/L²      0      -3EI/L³      0     │
   │   0       3EI/L²   3EI/L       0      -3EI/L²      0     │
   │ -EA/L       0         0       EA/L       0         0     │
   │   0      -3EI/L³  -3EI/L²      0       3EI/L³      0     │
   │   0         0         0        0         0         0     │
   └                                                          ┘

両端ピン(トラス部材)

   ┌                                      ┐
   │  EA/L    0    0   -EA/L    0    0    │
   │   0      0    0     0      0    0    │
   │   0      0    0     0      0    0    │      軸力のみ伝達
   │ -EA/L    0    0    EA/L    0    0    │      (曲げ剛性なし)
   │   0      0    0     0      0    0    │
   │   0      0    0     0      0    0    │
   └                                      ┘
片端ピンの曲げ項が 12EI/L³ → 3EI/L³ に変わるのは、片端固定・片端ピン梁の剛性が 両端固定梁の 1/4 になることに対応します。

5. 軸変形を考慮しない場合(解析設定)

解析設定で「軸変形: 考慮しない」を選ぶと、ペナルティ法により 部材の軸剛性を実質無限大として扱います。手計算(固定法・D値法など)は 通常軸変形を無視するため、それらとの比較検証に便利です。

EA/L  →  10⁵ × max( EA/L,  12EI/L³ )

  ・軸剛性を曲げ剛性の代表値の10万倍まで引き上げ、軸伸縮をほぼゼロにする
  ・完全な無限大にしないのは、部分ピボット付きガウス消去で
    桁落ちを起こさない範囲に留めるため
注意: ペナルティ法による近似のため、軸力・変位に極めて微小な誤差(10⁻⁵ オーダー)が残ります。 また軸変形設定を変更しても自動では再解析されません。必ず「解析実行」を押し直してください。

6. 座標変換

部材はそれぞれ固有の向きを持つため、ローカル剛性マトリクスをグローバル座標系へ変換してから 重ね合わせます。部材の方向余弦を c = cos θ = Δx/L、s = sin θ = Δy/L とすると、 変換マトリクス T は次のとおりです。

        ┌                    ┐
        │  c   s   0          │
        │ -s   c   0     0    │
        │  0   0   1          │
   T =  │                    │        d_local = T · d_global
        │          c   s   0 │
        │    0    -s   c   0 │
        │          0   0   1 │
        └                    ┘

グローバル座標系での部材剛性マトリクス:

   k_global = Tᵀ · k_local · T

7. 全体剛性マトリクスの組立

節点数を n とすると全体自由度数は 3n です。節点 i の自由度は (3i, 3i+1, 3i+2) = (u, v, θ) に割り当てられます。 各部材の k_global(6×6)の成分を、部材両端節点の自由度番号に従って 全体マトリクス K(3n×3n)へ加算していきます(直接剛性法の名前の由来)。

for 各部材:
    dofs = [3i, 3i+1, 3i+2, 3j, 3j+1, 3j+2]   (i, j = 両端の節点番号)
    for a = 1..6, b = 1..6:
        K[dofs[a]][dofs[b]] += k_global[a][b]

8. 荷重の処理

8.1 節点荷重

節点に直接作用する集中力 Px・Py・集中モーメント Mz は、 そのまま荷重ベクトル F の対応する自由度に加算されます。

8.2 部材荷重 → 等価節点力

部材の中間に作用する荷重(集中・分布)は、直接は F に入れられないため、 固定端力(Fixed-End Forces)にもとづく等価節点力へ変換して両端の節点に振り分けます。

集中荷重(型1)— 解析解

i端から距離 a の位置に集中荷重 P が作用する場合の固定端力(b = L − a):

Q_i = P·b²·(3a + b) / L³
M_i = P·a·b² / L²
Q_j = P·a²·(a + 3b) / L³
M_j = −P·a²·b / L²

分布荷重(型2〜5)— 数値積分

分布荷重は、微小区間の荷重 q(x)·dx を「位置 x の集中荷重」とみなして 上記の固定端力公式を全長にわたり数値積分します。 積分には Simpson 法(100分割)を使用しており、 台形・三角形など直線的に変化する荷重形状に対して十分な精度が得られます。

Q_i = ∫₀ᴸ q(x) · (L−x)²(3x + (L−x)) / L³ dx
M_i = ∫₀ᴸ q(x) · x(L−x)² / L² dx
(Q_j・M_j も同様)

ピン端補正

固定端力の公式は両端剛接を前提としているため、ピン接合端がある部材では 「ピン端のモーメントをゼロに戻し、その分をせん断力へ再分配」する補正を行います。

i端ピンの場合:   Q_i += M_i/L,   Q_j −= M_i/L,   M_i = 0
j端ピンの場合:   Q_i −= M_j/L,   Q_j += M_j/L,   M_j = 0
両端ピンの場合:  Q_i += (M_i−M_j)/L,  Q_j −= (M_i−M_j)/L,  M_i = M_j = 0

荷重方向の分解

部材荷重は4方向で指定できます。グローバル方向(方向3・4)の荷重は、 部材の方向余弦(c, s)を使ってローカル成分に分解してから等価節点力を計算し、 得られた等価節点力を再びグローバル座標系へ戻して F に加算します。

方向意味ローカル成分への分解
1ローカルY(部材軸直角)q_y = p1
2ローカルX(部材軸方向)q_x = p1
3グローバルY(鉛直)q_y = c·p1、 q_x = s·p1
4グローバルX(水平)q_y = −s·p1、 q_x = c·p1
軸方向(ローカルX)成分は、全長等分布とみなして両端へ 1/2 ずつ(q_x·L/2)配分する 簡略化を行っています(型1・型2のみ対応)。

9. 境界条件と強制変位(分配法)

支点条件(dx・dy・rz の拘束)と強制変位(支点沈下・強制回転)は、 全体剛性方程式を自由DOF(f)と拘束DOF(c)に分割する 分配法(Partition Method)で処理します。

┌ K_ff  K_fc ┐ ┌ U_f ┐   ┌ F_f ┐
│            │ │     │ = │     │
└ K_cf  K_cc ┘ └ U_c ┘   └ F_c ┘

  U_f : 未知の自由変位
  U_c : 規定変位(通常の支点は 0、強制変位入力があればその値)

上段のみを取り出して解く:

  K_ff · U_f = F_f − K_fc · U_c

求解後、U の拘束DOF成分に U_c(規定値)を代入して完全な変位ベクトルを得る。

右辺の −K_fc·U_c 項によって、支点沈下・強制回転の影響が荷重側へ正確に転嫁されるため、 強制変位の指定値が節点変位・反力・断面力すべてに厳密に反映されます。

注意: 強制変位を与えるには対象DOFが節点テーブルで拘束(☑)されている必要があります。 自由DOFへの強制変位入力は無視されます。

10. 連立方程式の求解

K_ff · U_f = F̃_f は部分ピボット選択付きガウス消去法で解きます。 各消去ステップで絶対値最大の要素を持つ行をピボットに選ぶことで、数値的安定性を確保しています。

1. 前進消去: 列ごとに |最大| の行を選んで入れ替え、下三角を消去
2. 特異判定: ピボットの絶対値が 10⁻¹⁴ 未満なら
   「特異または不安定な構造系です」エラー
   (拘束不足・機構(メカニズム)・部材未接続などが原因)
3. 後退代入で U_f を求める

11. 反力の算定

完全な変位ベクトル U が求まった後、拘束されている自由度について 全体剛性方程式の残差から反力を計算します。

R_i = Σ_j K[i][j] · U[j] − F[i]      (i: 拘束DOF)

  F[i] には等価節点力も含まれるため、
  部材荷重による支点反力も正しく算定される
検算: 全反力と全荷重について ΣFx = 0、ΣFy = 0、ΣM = 0(力の釣り合い)が 成立していることを確認できます。

12. 部材端部力と断面力図

12.1 端部力の計算

各部材について、グローバル変位をローカル座標へ戻し、部材剛性を掛けて端部力を求めます。

d_local = T · d_global                    (両端の節点変位6成分)
f_local = k_local · d_local − f_fixed     (固定端力を差し引く)

  f_fixed: その部材に作用する部材荷重の等価節点力(ローカル座標)
  差し引くことで「変位による力 + 部材荷重の直接効果」が正しく合成される

表示時の符号処理:
  i端 : N_i =  f₁,  Q_i =  f₂,  M_i =  f₃
  j端 : N_j = −f₄,  Q_j = −f₅,  M_j = −f₆   (外向き力 → 工学符号へ反転)

12.2 部材中間の断面力(N図・Q図・M図)

断面力図の描画では、i端の断面力を起点に、部材荷重を積分しながら 任意点 x(0 ≦ x ≦ L)の断面力を計算します。

N(x) = N_i + ∫₀ˣ q_x(ξ) dξ
Q(x) = Q_i + ∫₀ˣ q_y(ξ) dξ
M(x) = M_i − Q_i·x − ∫₀ˣ q_y(ξ)·(x − ξ) dξ

  ・集中荷重(型1)は荷重点で Q・M の勾配が不連続に変化(解析的に処理)
  ・分布荷重の積分は台形則による数値積分(描画用)

13. 変形図の描画

変形図は、解析で得られた両端の変位・回転角(u, v, θ)から、 Euler-Bernoulli 梁のたわみ形状(3次曲線)を 3次 Bezier 曲線で近似して描画します。 端部の回転角が接線方向として反映されるため、剛接合部の連続性・ピン接合部の折れが 視覚的に確認できます。表示上の変形は「変形倍率」で拡大されており、 拡大・縮小ボタンで倍率を変更できます。

変形図は節点変位・節点回転にもとづく形状表示です。部材中間に大きな荷重がある場合の 部材内たわみ(節点間のたわみ増分)は簡略化されています。

14. 検証例

単純なモデルで理論解と比較することで、計算方法の妥当性を確認できます。

検証1: 片持ち梁・自由端集中荷重

長さ L、自由端に集中荷重 P(下向き)。

固定端モーメント: M = P·L
自由端たわみ: δ = P·L³ / (3EI)
例: P=10,000 N、L=3,000 mm → M = 30,000,000 N·mm
検証2: 単純梁・等分布荷重

スパン L、等分布荷重 w(下向き、型3で p1=p2=−w)。

中央モーメント: M = w·L² / 8
中央たわみ: δ = 5w·L⁴ / (384EI)
例: w=1.0 N/mm、L=6,000 mm → M = 4,500,000 N·mm
検証3: 両端固定梁・等分布荷重
端部モーメント: M = w·L² / 12  /  中央モーメント: M = w·L² / 24
中央たわみ: δ = w·L⁴ / (384EI)

15. 適用範囲と制限

  1. 線形弾性解析のみ — 塑性化・材料非線形は扱えません。
  2. 微小変形理論 — P-Δ効果・座屈などの幾何学的非線形は考慮されません。
  3. せん断変形は無視 — Euler-Bernoulli 梁のため、せい高比の大きい部材(短スパン・大せい)では Timoshenko 梁に比べたわみを小さめに評価します。
  4. 数値精度 — 剛性比(EA/EI)が極端に異なる部材の混在や、 「軸変形を考慮しない」設定(ペナルティ法)では微小な数値誤差が生じ得ます。
  5. 単位系 — 内部計算は入力値をそのまま使用します(単位換算なし)。 解析設定の単位(N/kN・mm/cm)は表示上の解釈の宣言であり、入力値は選択した単位系で 統一して入力してください。
  6. 自重 — 自動計算されません。必要な場合は部材荷重・節点荷重として入力してください。

関連ページ: STR-LAB 骨組解析ツール  |  使用説明書(ユーザーズマニュアル)  |  ハイパー鋼材表  |  免震シミュレータ