線形静解析
変位法(有限要素法)により、部材内力と変位を求めます。
算定式
全体剛性 K_free を組立て、拘束を縮約して次を得ます:
\[ K_{\text{red}} = \text{reducer}^\mathsf{T} \cdot K_{\text{free}} \cdot \text{reducer} \]
次を解き、部材内力を behavior.recover_forces(u_elem) で回復します:
\[ u = K_{\text{red}}^{-1} \cdot F_{\text{red}} \]
実内力は、剛性応答と両端固定梁のスパン内力(fixed_internal_local)の重ね合わせとします。
記号・単位
| 記号 | 意味 | 単位 |
|---|---|---|
| \( K_{\text{free}} \) | 拘束を反映する前の全体剛性行列 | N/mm |
| \( K_{\text{red}} \) | 拘束を縮約した剛性行列 | N/mm |
| \( \text{reducer} \) | 拘束自由度を縮約する変換行列 | - |
| \( F_{\text{red}} \) | 縮約後の荷重ベクトル | N |
| \( u \) | 節点変位ベクトル | mm |
| \( N \) | 軸力(引張正) | N |
| \( Q_y,\ Q_z \) | せん断力 | N |
| \( M_x \) | ねじりモーメント | N·mm |
| \( M_y,\ M_z \) | 曲げモーメント | N·mm |
| \( S,\ S_i \) | 部材断面力ベクトル(荷重組合せ・荷重ケース単体) | N, N·mm |
| \( F,\ F_i \) | 荷重ベクトル(荷重組合せ・荷重ケース単体) | N |
| \( c_i \) | 荷重組合せの組合せ係数 | - |
線材(柱・梁・ブレース)は、剛床への所属や ForceRegime の指定に依らず、すべて
弾性要素(弾性ティモシェンコ梁・弾性トラス)で組みます(モデルの自動選択(ForceRegime))。したがって線材の
部材内力は全部材について出力され、応力図・断面検定の対象になります。材端集中ばね・
ファイバーといった弾塑性の梁要素は非線形解析でのみ用います。
解析前の入力チェック
解析の実行前に、モデルの静的な検証を行います。 次の不備は、何をすれば直るかを含むエラーとして扱い、解析を停止します。 断面や材料が未割当の要素を既定値で補って解析することはありません。
- 節点・部材の ID と配列添字の不一致、存在しない断面・材料への参照など、モデル検証で見つかる不整合
- 節点・部材・支点(拘束)が 1 つもない
- 断面・材料が必要な要素(梁・柱・ブレース・ファイバー・マルチスプリング・シェル・壁)の断面が未割当、または材料が未割当
- シェル要素の断面に板厚がない(線材用断面を割り当てた場合など)
- 線材の有効せん断断面積 As が 0(せん断有効断面積 As)
- 耐震壁と周辺架構の構造種別の食い違い
- 断面が未割当の床、断面の材料または板厚が定まらない床(床の断面と自重)
- 存在しない節点への参照(ダングリング)、およびどの部材・拘束・床にも属さない孤立節点
- 基部以外の階で、剛床マスター節点が水平方向(Ux または Uy)に拘束され、かつその階の地震用重量が正のとき
仕口パネル要素・節点バネ・免震支承材・制振ダンパーは、断面や材料ではなく専用の特性値から剛性を作るため、断面と材料の未割当チェックの対象外です(仕口パネル)。
基部の床では、柱脚が固定またはピンで水平拘束されているとき、剛床マスターも水平拘束になります。 これは剛床が動けるかどうかの判定結果であり、地震用重量があってもエラーにはしません。 上階で同じ状態になるのは、床面に柱や大梁が取り付いておらず、非構造節点だけが剛床のスレーブになっているときです。 その階の地震力はマスターへ載るため、水平拘束された自由度へ入ると解析結果に現れません。 地震用重量が 0 の階は、消える水平力も 0 であるため、この検査の対象外です。
この一覧は、下ドックの「診断」タブがエラーとして挙げる項目と同じで、どちらも同じ判定を呼んでいます。 判定は解析を止めない警告も返し、剛床のない階や、断面未割当の壁版などがその例です。 入力チェックはエラーだけを見て停止するため、警告では解析は止まりません。 入力チェックは最初の 1 件で解析を止めるため、不備が複数あるモデルでは、修正と再実行を繰り返すことになります。 解析の前にまとめて洗い出したい場合は、準備計算のモデル整合性チェックを確認してください。 こちらは不備をすべて挙げ、部材や節点ごとに 3D ビューで位置を示すため、修正の順序を立ててから解析へ進めます。
実装参照:sepika_solver::statics::analysis(crates/sepika-solver/src/statics/analysis/precheck.rs)が検証します。
解析前の入力チェック(precheck_model)と診断はどちらもこれを呼びます。
部材内力の符号規約
評価断面の内力 \( [N, Q_y, Q_z, M_x, M_y, M_z] \) は、部材全長で連続な断面力 (切断法による断面の力の釣合いから定まる値)として出力します:
- 軸力 \( N \) は引張を正とする。
- せん断力とモーメントは \( Q_y = dM_z/dx \)・\( Q_z = -dM_y/dx \) を満たす。
- 曲げモーメント \( M_z \) は局所 \( -y \) 側(重力方向の下向き荷重を受ける 水平梁では下端)の引張を正とする。両端固定梁の等分布荷重では端部 \( -wL^2/12 \)・中央 \( +wL^2/24 \) となる。
- 応力図は正のモーメントを引張側(局所 \( -y \) 方向)へ張り出して描画する。 張り出しの実線と材軸の間の領域を塗りつぶす。塗りは単色のほか、値に応じた 色分け(コンター表示。カラーバー凡例付き)へ切り替えられる。コンターの カラーマップは Viridis(既定。知覚均等で色覚多様性に配慮)・Plasma・ Turbo・Jet・青-白-赤(発散型)から選択できる。
長期軸力無効化と引張専用
単発・一括・背景実行のいずれも、荷重ケースの種類と応力解析条件から同じ剛性を採用し、その剛性で部材内力を回復します。 長期軸力無効化を指定した場合、対象部材の軸剛性に係数 β = 1e-6 を乗じます。指定しない場合は β = 1 です。 長期ケースは固定・積載・雪・その他(Dead / Live / Snow / Other)です。 地震用積載・風・地震(LiveSeismic / Wind / Seismic)は長期低減の対象外です。Ai 地震力も地震ケースとして扱います。 柱の対象は柱用途の梁・ファイバー・マルチスプリング要素です。部材の傾きでは追加判定しません。ブレースの指定は柱とは独立です。
低減するのは軸剛性であり、回復軸力が必ず1e-6倍になるわけではありません。代替の荷重伝達経路がない場合は対象部材が荷重を負担し続けるため、軸力と変形を確認してください。 SRC・CFT柱では合成軸剛性を求めてから低減します。断面形状、質量、曲げ・せん断・ねじり剛性、剛域、壁側柱の解放、仕口パネルのオフセット、支持ばねは保持します。 完全にゼロにせず微小値を残すのは、浮き自由度による特異行列を避けるためです。
引張専用ブレースで反復解析を指定した場合、軸伸びが負の部材には追加の残留係数 s = 1e-6、軸伸びが0以上の部材には s = 1 を採用します。 軸剛性の係数は βs です。両設定を併用した長期圧縮側では1e-12となり、微小な圧縮軸力が残ります。 有効部材の集合が変わらなくなった場合だけ収束とします。反復上限50回で集合が一致しなければ、荷重ケース名・ID・上限を示す未収束エラーとなり、正常な解析結果として保存しません。 ほかの荷重ケースの成功応答は、そのケース自体が失敗しない限り使用できます。固有値・精算周期の基準剛性にはこれらの静的設定を適用しません。
実装参照:sepika_solver::statics::linear::solve_static_case(crates/sepika-solver/src/statics/linear/mod.rs)、sepika_element::factory::build_behavior_with_axial_factor(crates/sepika-element/src/factory/mod.rs)が実装します。
荷重組合せの応答(重ね合わせ)
求解の最小単位は荷重ケース単体です。荷重組合せの応答は、荷重ケース単体の応答を 組合せ係数で倍して足し合わせて求めます。長期低減や引張専用反復も、各ケースで採用した応答を足し合わせます。 引張専用を含む係数和は合成荷重の active-set 解ではなく、別ケース合成の断面検定は理由付き未検定です。合成荷重による再解析は行いません。
算定式
荷重組合せが荷重ケース \( L_1, L_2, \dots \) を係数 \( c_1, c_2, \dots \) で参照する場合、 節点変位 \( u \) と部材断面力 \( S \)(評価断面ごとの \( [N, Q_y, Q_z, M_x, M_y, M_z] \))は
\[ u = \sum_i c_i \, u_i, \qquad S = \sum_i c_i \, S_i \]
とします。ここで \( u_i, S_i \) は荷重ケース \( L_i \) 単体の応答です。
全ケースで同じ剛性・回復条件を採用する場合、この係数和は荷重ベクトル \( F = \sum_i c_i F_i \) を組み立てて同じ条件で 1 回解いた結果と理論上一致します。 長期低減を採用するケースと通常剛性の短期ケースが混在する場合は、引張専用反復がなくてもこの同値性は成立しません。 その場合も各ケースの応答係数和を維持し、合成荷重による再解析は行いません。部材中間荷重による スパン内力(両端固定梁の内力。上式の \( S_i \) に含まれます)も同じ係数で倍されるため、 等分布荷重を受ける梁の M の放物線分布は組合せでも保たれます。
この扱いにより、同じ荷重ケース(DL・LL・EX・EY など)を参照する荷重組合せが 何件あっても、求解は荷重ケースの数だけで済みます。GUI の「単体実行」「一括解析」は いずれもこの経路を使い、単体実行で荷重組合せを選んだ場合は、その組合せが参照する 荷重ケースを解いてから線形和を組み立てます。
実装参照:sepika_solver::statics::analysis(analysis/combination.rs)の
Analysis::{linear_combination, linear_combination_batch, linear_static_with_combinations} が
組み立て、線形和そのものは sepika_solver::statics::linear::superpose_static が行います。
参照する荷重ケースが存在しない、またはその荷重ケースの解析が失敗した場合、その荷重組合せは
エラーとして扱います(該当項が黙って 0 になることを避けるため)。