荷重の入力(節点荷重・部材荷重)
荷重は、荷重ケースの中に節点荷重と部材荷重として定義します。 本節では、それぞれで何を指定でき、入力した値が解析へどう入るかを説明します。
荷重の入力は、左パネルのナビゲータにある「荷重ケース」から行います。 荷重ケース・種別グループ・個別の荷重のいずれかを右クリックすると、追加・編集・削除の メニューが出ます。入力した内容は下ドックの「荷重」タブでも一覧・編集できます。
荷重ケースの構成
ナビゲータの荷重ケースは、次の 3 階層で表示します。
- 荷重ケース(DL・LL(架構用)・EX など)
- 種別グループ(節点荷重・部材荷重)
- 個別の荷重
種別グループを分けているのは、節点荷重が 6 成分の力とモーメントを持つのに対し、部材荷重は 載荷の形と作用方向を持つというように、指定する内容がそもそも異なるためです。
個別の荷重をクリックすると、その荷重が載っている節点・部材が 3D ビューで選択状態になります。 名称だけでは位置がわからないため、モデル上のどこに載っているかを確かめられるようにしています。
実装参照:左パネルの荷重ツリーは sepika_app::app::nav_loads(crates/sepika-app/src/app/nav_loads.rs)が描画し、LoadGroup が節点荷重・部材荷重の種別グループを表します。
振動荷重ケースとの違い
ナビゲータには、静的な荷重ケースとは別に 振動荷重ケース があります。 時刻歴応答解析(立体)と質点系時刻歴を実行したときにだけ登録され、波形・加振方向・ 線形/非線形(質点系では次元も)を表します。 節点荷重や部材荷重を載せる入れ物ではないため、本節の荷重入力の対象外です。 ツリーの見方とクリック時の表示切替は ナビゲータの解析結果ツリー を参照してください。
実装参照:sepika_core::model::{VibrationCase, LumpedVibrationCase}(crates/sepika-core/src/model/vibration.rs)が波形・加振方向・線形/非線形(質点系は次元も)を保持し、ナビゲータの表示は sepika_app::app::App::nav_vibration_cases(crates/sepika-app/src/app/nav_vibration.rs)が行います。
節点荷重
節点荷重は、節点に作用する力とモーメントを全体座標系の 6 成分で与えます。 単位は力(Fx・Fy・Fz)が N、モーメント(Mx・My・Mz)が N·mm です。
1 つの節点に何件でも定義できます。 たとえば同じ柱頭に載る機器の重量と吊り物の重量を別々の荷重として入力し、それぞれに名称を 付けておくと、あとからどちらがどれだけを占めていたかをたどれます。 解析では、同じ節点に載る荷重をすべて加算した値を外力とします。
実装参照:sepika_core::model::NodalLoad(crates/sepika-core/src/model/load.rs)が 6 成分と名称を保持し、同一節点の荷重の加算は sepika_solver::common::assemble::assemble_global_f(crates/sepika-solver/src/common/assemble.rs)が行います。
部材荷重
部材荷重は、載荷の形(種別)・作用方向・諸元の 3 つで指定します。 位置と長さは、部材の i 端から材軸に沿って測った距離 [mm] で与えます。
| 種別 | 諸元 | 内容 |
|---|---|---|
| 中間集中 | a [mm]、P [N] | i 端から距離 a の位置に大きさ P の集中荷重 |
| 全長等分布(全長追従) | w [N/mm] | 現在の材長全体に強度 w の等分布荷重 |
| 区間分布(固定距離) | a・b [mm]、w1・w2 [N/mm] | 固定した区間 [a, b] に強度 w1 → w2 の線形分布荷重。w1=w2 なら部分等分布 |
既定の種別は等分布、既定の作用方向は鉛直下向き(-Z)です。 作用方向は全体座標系で指定し、鉛直下(-Z)・鉛直上(+Z)・X±・Y± から選びます。既存荷重の編集では「保存済み方向」が既定です。選択肢にない任意方向や微小な成分も、方向を明示変更しなければそのまま保持します。対象部材の選び直しだけでは保存済み方向を変更しません。
作用方向の計算条件
集中・分布のどちらも、作用方向は内部で単位方向へ正規化してから強度と組み合わせます。[0,0,-1] と [0,0,-2] は同じ下向き荷重です。入力した方向成分は書き換えません。
計算には、方向の全成分が有限で、成分の平方和の平方根として計算したノルムが有限かつ 1e-12 以上であることを要求します。全荷重ケースの部材荷重を対象に確認し、不成立なら荷重ケース・荷重の添字と名称・対象部材・理由を示して計算を拒否します。強度が 0 の荷重も方向の検査対象です。
ゼロ方向、ノルムが 1e-12 未満の方向、平方和がオーバーフローする巨大な方向、非有限成分を含む方向は計算できません。この境界は既存の数値正規化の適用条件であり、構造規準の許容値や荷重を省略してよい基準ではありません。方向全体が条件を満たせば、微小な成分を含む任意方向や非単位方向も使えます。正規化の詳細は部材荷重の作用方向を参照してください。
方向の全成分が有限であれば、ゼロ方向など計算条件を満たさない入力も、そのまま編集・保存・再読込できます。参照先や位置・区間など、他の入力条件は引き続き適用します。計算時に既定方向へ置換したり、荷重を削除したり、強度を 0 に直したりしません。方向が成立した強度 0 の荷重、荷重のないケース、等大反対荷重の相殺、検討軸への直交による成分 0 は、方向不備とは区別します。合力 0 の分布でもモーメントが残ることがあります。
実装参照:sepika_core::model::Model::validate_member_load_directions(crates/sepika-core/src/model/load.rs)が共通の方向条件を検査します。
作用位置と区間
載荷対象の材長 L は有限で 1e-9 mm より大きい必要があります。固定距離の集中荷重は有限な位置 a で 0≤a≤L、区間分布は有限な位置 a・b で 0≤a<b≤L としてください。両端の集中荷重、短い正の区間、符号付き・ゼロの強度は入力できます。
範囲外・非有限の位置、長さが 0 以下の分布区間は、追加・更新・保存・読み込み・解析前の確認で、荷重ケース・荷重の添字・対象部材と理由を示して拒否します。材長を 0.5 mm だけ超える場合も同じです。区間の切り詰めや全長追従への読み替えは行いません。これは本アプリの入力条件であり、構造規準の寸法許容値ではありません。
実装参照:sepika_core::model::{MemberLoad, MemberLoadKind}(crates/sepika-core/src/model/load.rs)が種別・作用方向・諸元を保持し、入力 UI の既定(等分布・鉛直下向き)は sepika_app::load_editor::MemberDraft(crates/sepika-app/src/load_editor.rs)が持ちます。
節点の座標編集と作用区間
新規の全長等分布は全長追従です。全長追従では a=0、b=現在材長 L [mm]、w1=w2=w [N/mm] とし、節点編集後も強度 w、対象部材、荷重ケース、名称、全体座標の作用方向を保持します。部材が回転しても重力方向は回転しません。
合力は wL です。L=6000 mm、w=10 N/mm、方向 [0,0,-1] なら鉛直下向き 60000 N、L=8000 mm へ延長すると 80000 N、重心は新しい部材中点です。同長の平行移動では 60000 N を保ち、重心だけが移動します。総荷重を一定に保つために強度を変える扱いはしません。
集中荷重と区間分布は固定距離で、i 端からの位置・区間を保持します。例えば [1000,3000] mm、w1=w2=10 N/mm は延長後も同じ区間と 20000 N の合力を保持します。全長と数値が一致する固定区間も全長追従へ読み替えません。追従属性がない入力は固定距離として扱います。
固定位置・区間が材長を越える短縮や、荷重の対象部材がゼロ長になる座標編集は、荷重ケース・部材荷重の添字・対象部材・理由を示して編集全体を拒否します。区間を切り詰めたり荷重を消したりしません。複数節点の貼り付けは全座標を反映した最終形状で判断します。
更新は編集節点を共有する部材の利用者入力だけが対象で、自動生成・片持ちスラブ先端荷重は既存の準備計算で再生成します。座標と全長追従の区間は 1 回の取り消し・やり直しで一緒に戻り、保存・読み込みでも追従区分を保持します。
節点編集時の追従・強度保持・全体方向保持・不正編集の拒否はSEPIKAの採用条件です。
実装参照:sepika_core::model::{MemberLoadExtent, MemberLoad}(crates/sepika-core/src/model/load.rs)と sepika_edit::SetNodeCoord(crates/sepika-edit/src/node_member.rs)が区分と座標編集を扱います。
荷重を載せられる部材
部材荷重を載せられるのは、2 節点の線材です。 具体的には梁・柱・ブレースと、非線形解析用の梁要素(ファイバー梁・マルチスプリング梁)が 対象になります。3D ビューでこれら以外をクリックしても選択されません。
壁・スラブのような面要素を対象から外しているのは、材軸方向という概念を持たない要素に部材 荷重を紐付けると、先頭の 2 節点を材端とみなして荷重が誤って配られるためです。 床に載る荷重は、スラブの床荷重として入力してください (床荷重の分配)。
実装参照:対象の判定は sepika_app::viewer::pick::member_load_pickable(crates/sepika-app/src/viewer/pick.rs)と sepika_solver::common::assemble::is_member_load_target(crates/sepika-solver/src/common/assemble.rs)が同じ集合(2 節点の梁・ファイバー梁・マルチスプリング梁・ブレース)で行います。
ブレースに載せる荷重
ブレースは軸剛性のみを持つトラス要素としてモデル化するため、材軸に直交する方向の荷重を 部材として負担できません。そこで、ブレースを対象に選んだ場合は新規荷重の作用方向を材軸方向に 限定します。既存荷重を編集するときは「保存済み方向」が既定で、部材回転後も保存された全体方向をそのまま保持します。「現在の材軸方向」を明示選択したときだけ、現在の部材軸へ変更します。
材軸に直交する成分は、材端モーメントを生じない静定分配で両端の節点へ配ります。 配り方は単純梁の反力と同じで、合力と作用位置が保存されるため、建物の総重量や支点反力は この扱いによって変わりません(部材荷重)。
実装参照:sepika_app::load_editor::LoadEditor::set_picked_member(crates/sepika-app/src/load_editor.rs)が新規ブレース荷重の作用方向を材軸方向へ設定し、材軸直交成分は sepika_element::frame::member_load(member_load.rs)が SpanLoadTransfer::StaticallyEquivalent で両端の節点へ配ります。
準備計算が生成する荷重との区別
荷重ケースの中身には、利用者が入力した荷重と、準備計算が生成した荷重の 2 つがあります。 準備計算が生成するのは、スラブの床荷重の分配・躯体の自重・地震力(Ai 分布)の水平力で、 標準荷重ケース DL・LL(架構用)・LL(地震用)・EX・EY へ書き込まれます。
準備計算が生成した荷重は、実行のたびに算定し直して入れ替わります。 このため編集しても次の実行で失われることになり、編集・削除はできないようにしています。 一方で利用者が入力した荷重はこの入れ替えの対象外なので、DL や EX のような自動生成の 荷重ケースへ荷重を足しても消えません。
表示は次のように分けています。
- ナビゲータの荷重ツリー:利用者が入力した荷重のみ
- 下ドックの「荷重」タブ:両方を表示。準備計算が生成した荷重は読み取り専用
- 準備計算タブの荷重集計:両方を合算した件数と合力
ナビゲータに準備計算の荷重を出さないのは、床荷重を分配した部材荷重が数百件に達することも あり、編集できない行の中に手入力の荷重が埋もれるためです。 準備計算が何を生成したかは、下ドックの「荷重」タブと準備計算タブで確認できます。
実装参照:sepika_core::model::LoadSource が荷重の生成元(利用者入力/準備計算)を区別し、LoadCase::replace_auto_loads(crates/sepika-core/src/model/load.rs)が自動生成分だけを入れ替えます。表示は荷重タブ(crates/sepika-app/src/tables/loads.rs)が AUTO_LOAD_LABEL で読み取り専用として区別します。
荷重の名称
節点荷重・部材荷重には、それぞれ名称を付けられます。 「機器荷重」「外壁の仕上げ荷重」のように書いておくと、あとからその荷重が何であったかを たどれるようになります。
名称は未入力でもかまいません。
未入力の場合は、節点荷重なら零でない成分(Fz=-10.0 など)、部材荷重なら種別と諸元
(分布 [0,6000] w1=2.50 w2=2.50 など)から作った自動ラベルを一覧に表示します。
準備計算が生成した荷重は名称を持たないため、下ドックの「荷重」タブでは「(自動計算)」と
表示します。
実装参照:名称が未入力のときの自動ラベルは sepika_app::tables::loads::{member_load_display_name, nodal_load_display_name}(crates/sepika-app/src/tables/loads.rs)が作り、自動生成分は AUTO_LOAD_LABEL(「(自動計算)」)と表示します。
対象の節点・部材の選び方
荷重を追加・編集するとき、対象の節点・部材は3D ビューでクリックして選びます。 実務規模のモデルでは節点も部材も数百を超え、ID を並べた一覧からでは目的のものを選べません。
入力ダイアログの「3D で選択」を押すと、入力中の内容を保ったままダイアログが閉じ、選択待ちに 入ります。3D ビューでクリックすると対象が仮選択され、Enter で確定するとダイアログへ戻るため、 確定する前であれば何度でもクリックし直して選び直せます。 選択そのものをやめる場合は Esc を押してください。
3D ビューが表示されないタブ(結果・設計・レポート)で荷重の追加を選んだ場合は、モデルタブへ 自動的に切り替わります。節点荷重では、あらかじめ節点を選択していればそれが初期値になります。
選択待ちの間もモデルの編集や undo は行えるため、確定時に対象が存在するかを確認します。 編集の場合は、ダイアログを開いた時点の内容と一致するかも確認し、別の荷重に変わっていれば エラーとして選び直しを促します。
実装参照:3D ビューのクリックによる候補の選択は sepika_app::viewer::pick::{pick_nearest_node, pick_nearest_member, member_load_pickable}(crates/sepika-app/src/viewer/pick.rs)が画面距離から行い、仮選択の保持と Enter/Esc の確定・取消は sepika_app::load_editor::LoadEditor(crates/sepika-app/src/load_editor.rs)が行います。