squid_n_core/model/secondary.rs
1//! 二次部材(小梁・間柱)。
2//!
3//! 全体解析(剛性行列)には算入しない部材で、床荷重・自重を主架構
4//! (大梁・柱)への荷重(CMQ: 中間集中荷重・部分分布荷重)として伝達する
5//! ために保持する。ST-Bridge の `StbBeam`(小梁)・`StbPost`(間柱)が
6//! 取り込み時にここへ入る。
7//!
8//! - 端部節点はモデルの節点(`Model.nodes`)を参照するが、要素が接続しない
9//! 節点は解析自由度から自動的に除外される(`DofMap::build`)。
10//! - 床荷重の分配・自重の荷重ケース同期が、二次部材経由の荷重を主架構の
11//! 梁への集中荷重へ変換する(`squid_n_load::secondary`)。
12
13use super::*;
14
15/// 二次部材の種別。
16#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, serde::Serialize, serde::Deserialize)]
17pub enum SecondaryMemberKind {
18 /// 小梁(床荷重を大梁へ伝える。単純梁として両端反力を返す)
19 Joist,
20 /// 間柱(壁荷重・自重を上下の梁へ伝える)
21 Post,
22}
23
24/// 二次部材(小梁・間柱)。全体解析の対象外([`crate::model::secondary`] モジュール
25/// ドキュメント参照)。
26///
27/// 実体は床領域([`super::FloorRegion::secondary_joists`])または壁領域
28/// ([`super::WallRegion::posts`])が保持する(D6)。所属未割当の小梁・間柱だけ
29/// [`super::Model::unassigned_joists`] / [`super::Model::unassigned_posts`] に置く。
30#[derive(Clone, Debug, PartialEq, serde::Serialize, serde::Deserialize)]
31pub struct SecondaryMember {
32 pub kind: SecondaryMemberKind,
33 /// 両端節点(小梁: 始端→終端、間柱: 下端→上端の順を推奨。順序に依存しない)。
34 pub nodes: [NodeId; 2],
35 /// 断面参照(自重算定・小梁/間柱断面算定に用いる)。
36 pub section: Option<SectionId>,
37 /// 表示名(ST-Bridge の name 等)。
38 pub name: String,
39}