Skip to main content

generate_frame

Function generate_frame 

Source
pub fn generate_frame(spec: &FrameSpec) -> Result<FrameGenResult, String>
Expand description

スパンと階高から架構(節点・柱・大梁・柱脚支点・通り芯・階)を生成する。

生成規則:

  1. 節点は全格子点(X 通り × Y 通り × レベル)に置く。ID は X → Y → レベルの順の連番で、ID = 配列添字の不変条件を満たす。
  2. は各格子点で上下に隣り合うレベルを結ぶ。基部から最上階まで通す。
  3. 基礎梁は基部レベルで、隣り合う通りの間に架ける。日本の建築構造では 基礎梁は必ず設けるため、オプションを設けず常に生成する(with_girders に 依存しない)。
  4. 大梁は基部より上の各レベルで、隣り合う通りの間に架ける (with_girders が false なら作らない)。
  5. 柱脚支点は最下レベルの節点へ FrameSpec::base_support の拘束を与える。
  6. 通り芯は X 方向・Y 方向のグループを新設し、通り名は {接頭辞}{番号} (座標の昇順に 1 から)とする。所属節点はその通りの全格子点。出所は AxisSource::Manual とし、あとで柱位置からの自動生成を実行しても 作り直されないようにする。
  7. は全レベルに 1 つずつ作る(先頭は基部の床)。階は床であり、 その列の先頭が基部であることが squid_n_core::model::story の不変条件である。 階名は入力を優先し、空なら default_story_name で補う。所属節点・剛床・ 地震用重量は準備計算が算定する派生値のため、ここでは空のままとする。
  8. は全レベルで、隣り合う通りに囲まれた格子床領域へ 1 枚ずつ作る (with_slabs が false、または片方向の通りが 1 本のときは作らない)。 板厚 FrameSpec::slab_thickness の断面 SLAB_SECTION_NAME を 1 枚だけ 作り、全階の床で共有する。断面には FrameSpec::slab_concrete の コンクリートを 1 つ作って割り当てる。

部材(柱・大梁)の断面・材料は割り当てない(モジュールドキュメント参照)。 入力が不正な場合(FrameSpec::validate)はその説明を Err で返す。