squid_n_core/model/stress_cfg.rs
1//! 応力解析の計算条件の型。
2//!
3//! - [`StressAnalysisCfg`] — 長期応力解析の計算条件(令82条)。
4
5/// 長期応力解析の計算条件(令82条の応力解析)。
6///
7/// 計算条件の指定により、一部の部材(ブレース・柱・制振間柱)について
8/// 長期軸力を負担させないことが可能である。
9///
10/// 制振間柱(damper-equipped mullion column)は本リポジトリに要素種別が未実装のため、
11/// 対象外(既知の制約)。ブレースと柱(鉛直部材)のみ対応する。
12#[derive(Clone, Debug, PartialEq, serde::Serialize, serde::Deserialize)]
13pub struct StressAnalysisCfg {
14 /// 長期応力解析でブレース(`ElementKind::Brace`)に軸力を負担させない。
15 pub no_long_axial_brace: bool,
16 /// 長期応力解析で柱(鉛直な `ElementKind::Beam`)に軸力を負担させない。
17 pub no_long_axial_column: bool,
18 /// 剛性率・偏心率算定時の雑壁剛性の n 倍法係数(雑壁の剛性評価。RC 規準。
19 /// `Kw' = n·Aw'·ΣKc/ΣAc` の n。入力値)。`None` は雑壁剛性を考慮しない。
20 #[serde(default)]
21 pub misc_wall_n: Option<f64>,
22 /// 層間変形角の制限値の分母(令82条の2)。原則 200(1/200)。帳壁・仕上げ等に
23 /// 著しい損傷の恐れがない場合は 120(1/120)へ緩和できる。
24 #[serde(default = "default_drift_limit_denom")]
25 pub drift_limit_denom: f64,
26 /// 線形(弾性)応力解析で引張専用ブレースを active-set 反復で扱うか。
27 ///
28 /// `false`(既定): 引張専用ブレースは「引張・圧縮が対で存在する」とみなし、
29 /// 弾性剛性を 1/2 にした一括解析で1回だけ解く(従来挙動)。
30 /// `true`: 圧縮側に入ったブレースを無効化しながら収束するまで再解析する
31 /// 真の引張専用解析を行う(active な引張ブレースは全剛性 EA/L を負担し、
32 /// 圧縮ブレースは軸力を負担しない)。
33 #[serde(default)]
34 pub tension_only_iteration: bool,
35 /// 剛域の算定で、部材フェース・部材せいに取り付く壁を考慮するか(技術基準
36 /// 「剛域の計算」。既定は考慮する)。
37 ///
38 /// `true`(既定): 柱には袖壁、梁には腰壁・垂壁を含めた寸法で算定する。
39 /// 対象は現場打ちコンクリート壁で厚さ 100 mm 以上のもの(耐震壁・雑壁を問わない)。
40 /// `false`: 部材の原断面だけで算定する。
41 #[serde(default = "default_rigid_zone_consider_walls")]
42 pub rigid_zone_consider_walls: bool,
43}
44
45fn default_rigid_zone_consider_walls() -> bool {
46 true
47}
48
49fn default_drift_limit_denom() -> f64 {
50 200.0
51}
52
53impl Default for StressAnalysisCfg {
54 fn default() -> Self {
55 StressAnalysisCfg {
56 no_long_axial_brace: false,
57 no_long_axial_column: false,
58 misc_wall_n: None,
59 drift_limit_denom: default_drift_limit_denom(),
60 tension_only_iteration: false,
61 rigid_zone_consider_walls: default_rigid_zone_consider_walls(),
62 }
63 }
64}