HomeAboutMeArticlesDiaryModelViewerLinksContact

BESOBeam(旧FFF)コンポーネントについて

31 August, 2015 - 1 min read - Tags: Karamba3D,Grasshopper,構造とデジタル

Karamba3D の BESOBeam(旧 FFF)コンポーネントの使用法について説明します。

このコンポーネントはもともとの名称 FFF(ForceFlowFinder)、つまりは力の流れを見るためのコンポーネントです。理論的には、Y.M.Xie と G.P.Steven によって研究された方法、Evolutionary structural optimization(ESO)(進化的構造最化)を使用しているようです。モデルに対して解析を行い、荷重の負担が少ない要素を削除し、再度解析を行い、荷重の分担を確認し、削除を行うというアルゴリズムによって構成されており、最終的にはすべての要素が高い比率で荷重を負担している形状となります。これはすなわち、主要な力の流れの可視化を行っているというようにも考えることができます。

Karamba3D のマニュアルを参照するとこのコンポーネントは、最適化手法というよりかは、力の流れをみて、力の流れの概略を理解することにより、形状への考察のために使った方がよいと書かれています。また、Karamba では、解析に際して要素を削除しているのではなく、剛性が非常に小さな部材とする SoftKill の手法が使用されています。
では実際に、BESOBeam コンポーネントを使用してみます。解析対象として、力の流れの可視化が分かりやすいよう、以下のような各節点同士をつないだ形状を考えます。

左端を固定、右端の中心に節点荷重をかける片持ち梁形状とします。
モデルの作成方法は、Rectangle コンポーネントで長方形を作成し、それを MeshSurface コンポーネントでメッシュ分割します。分割したメッシュに対して DeconstructMesh コンポーネントを使用し、メッシュを構成する各点の座標を取得します。

取得した点は、リストでひとまとめになっているので、ListItem コンポーネントを使用することで、各点を抽出します。ここで力技となってしまいますが、上図のように点がつながるように、一つずつ繋いでモデルを作成しました。

境界条件や荷重条件は、MD スライダーと EvaluateSurface コンポーネントを使用することにより、節点番号ではなく、位置に対して設定しています。

モデルの準備ができたので、BESOBeam コンポーネントを使用してみます。ここで非常に重要なことがあります。それは、grasshopper には、解析実行ボタンのようなものはないので、ワイヤーをコンポーネントに接続した瞬間解析を行ってしまうことです。BESOBeam コンポーネントのような収束計算を伴う、重い計算を行うコンポーネントを使用するときは、迂闊につなげるとフリーズしかねないので注意しましょう。
では、解析結果を確認してみます。BESOBeam コンポーネントでは、解析対象を設定した ElementId ごとや GroupId ごと、荷重ケースごとにすることができますが、今回は Target の部分のみ使用しています。これは、入力された初期のモデルの重さに対して何%になるまで部材を削減するかの目標値を設定するものです。100%からちゃんとした解を得ることができた 35%まで各結果を下に示します。表示は Uti l ization としています。

35%の結果のものには、グラフを追加しました。収束計算の各ステップごとに重さがどのように変化しているか確認することができます。また、Hist や Is Active はステップごとに、どこの要素がアクティブなのかを出力しています。
最終結果では、初期のモデルに対して要素の使用率が高くなっているのが分かります。感覚的には曲げモーメントが卓越する形状なので、上下で対称な形状になるような気がしますが、解析結果はそのようになっていません。この手の最適化は主応力方向に部材が配置されるミッシェルトラス形状となるのが通常ですが今回なっていないので、モデル化の間違えがあるかも知れません。

どちらにしろこの形状やミッシェルトラスを現実で作成するのは難しいので、このコンポーネントはやはり力の流れをみて部材形状を考えるツールの一つとして使用するのが適しているのではないかと思います。

© 2021 hrntsm / Built with

Gatsby