HomeArticlesModelViewerContact

構造xIT まだ間に合う、パラメトリックに構造計算を行う基本のキ その2

08 November, 2023 - 2 min read - Tags: Grasshopper

はじめに

前回の記事では、3 つのポイントを使った山形屋根を解析対象としていました。今回はより複雑な架構を想定して、始点と終点の 2 点間をつなぐ曲線を作成し、解析を行う方法について説明してきます。

前回に引き続き以下の 3 つを使用します。

  • Rhinoceros
  • Grasshopper
  • Karamba

完成している Grasshopper のデータは本記事の最後に記載したリンク先にアップしてありますので、必要に応じて参照しながら読み進めていってください。

曲線は、カテナリー、円弧、NURBS カーブの 3 つを対象にしています。

カテナリーの作成と解析

カテナリー形状は、建築では例えば、ガウディの模型による形状スタディで現れてくる形状としても有名な軸力が支配的な形状です。

ここからもわかるようにソフトなど用いた構造解析を行う前に、力学的に合理的な幾何形状をいかに発見するかも重要な点です。形状決定には、Grasshopper には強力な幾何計算機能がありますので、この例であればカテナリー曲線を Grasshopper を使えば簡単に作成することができます。

カテナリーは単純な数式で表すことが可能なため、Excel などでも比較的容易に記述できますが端点の座標や弧長を変えながら一つ一つ解析モデルを計算していくのは手間がかかります。ですが、Grasshopper を使うことでパラメトリックに形状を変えながら検討することができます。

では実際にモデルを作成します。Rhino と Grasshopper を起動して、NewDocument を開いてください。

まずは曲線の端点となる 2 点を作成します。今回は前回と異なった Point コンポーネントを使用した作成方法を紹介します。

Point は、Params カテゴリの Geometry サブカテゴリの中にあります。”Point”と検索、または、例えば ”0,0,0” と座標値を直接入力することでも作成することができます。

座標値を直接入力する以外の場合は値が空のため、エラーとなりコンポーネントがオレンジ色になります。エラーでなくすために値の設定を行います。

値はコンポーネントを右クリックし Set one Point を選択することで Rhino 上に任意の点を打つことができ、その点がコンポーネントの値になります。

このままだと使用したい座標値ではないため、値の編集を行います。対象のコンポーネントを右クリックし、Manage Point Collection を選択します。選択すると Point persistent data のウインドウが立ち上がります。ウインドウ内の左側の 0 番の個所に先程 Rhino 上でうった点の情報が格納されていますので。ここで値を編集することができます。ここでは{0, 0, 0}となるように設定しておきましょう。

次にもう片方の点を設定します。Manage Point Collection では緑色の AddPoint を使って値を追加できるので、ここではそれを使い{10, 0, 0} のポイントを作成しましょう。

次にどちらのコンポーネントがどの点かわかりやすくするためにコンポーネントに”始点”と”終点”と名前を付けましょう。

コンポーネントを右クリックして pt となっている箇所で名前を設定することができます。アイコン表示にしている場合は、設定した名前が表示されないので、Display から Draw Icons をオフにすることで設定した名前を確認することができます。

端点となる 2 点が作成されたので、カテナリーを作成します。Grasshopper ではカテナリーは Curve カテゴリの Spline サブカテゴリ内の Catenary コンポーネントで作成することができます。

入力は、A に始点、B に終点、L に弧長、G にカテナリーを計算するための重力の方向を入れます。ここでは部材全体が圧縮となる形状である「上に凸」形状とするため、前回の記事で荷重をかける際に使用した Unit Z コンポーネントを使って+Z 方向に荷重を設定します。

次に L の弧長を 2 点間の距離以下にしてしまうとエラーとなってしまうので、L への入力が 2 点間距離を下回らないように設定します。Math カテゴリの Util サブカテゴリ内の Maximam コンポーネントを使用して、NumberSlider で与える弧長と 2 点間距離のうち大きい方の値を出力させることでエラーを防ぐことができます。

2 点間距離は、Vector カテゴリの Point サブカテゴリ内の Distance コンポーネントを使用することで求めることができます。

これでカテナリーを作成することができました。Point コンポーネントに点のデータをセットした場合は、コンポーネントをクリックすると Rhino 上で Gumball が表示されて点の位置を動かすことができるので、いろいろな形に変形させて遊んでみましょう。遊んだ後は Ctrl+Z や上記で値を設定したときのように元の値に戻しておいてください。

形状が完成したので、それを使い Karamba での解析モデルを作成していきます。曲線のままでは解析できないため、カーブを多直線に分割していきます。

分割には、Curve カテゴリの Division サブカテゴリ内の DivideCurve コンポーネントを使用します。このコンポーネントは指定した分割数でカーブを分割します。出力は分割した点なので、この出力を同じく Curve カテゴリの Spline サブカテゴリ内の Polyline コンポーネントを使ってポリラインにします。

分割については分割数を指定する DivideCurve 以外にも長さで分割する DivideLength などもあるので、実際に設計に使う際は最終的な部材調達なども考えて適切なものを選択してください。

Rhino 上でもとのカテナリーとポリラインが表示されてしまい見づらい場合は、カテナリーはコンポーネントを右クリックし、Preview をオフに設定しておきましょう。

ポリラインのままでは Karamba の梁要素に変換できないので、Curve カテゴリの Util サブカテゴリ内の Explode コンポーネントを使用してポリラインからラインに分解します。分解したラインを前回と同じように Karamba の LineToBeam コンポーネントにつないで解析モデルを作成します。

Karamba での解析モデルの作り方、設定方法については前回と同じになりますので、ここでは解説は割愛します。前回の記事を参照してください。境界条件は両端ピン、荷重はカテナリーの特性がわかりやすいように重力のみにしています。

境界条件を設定する点は、作成したカテナリーの始点と終点を確実に取得するため、冒頭で Point コンポーネントで作成した始点と終点ではなく、カーブから始点と終点を取得する EndPoints コンポーネントを使用しています。EndPoints コンポーネントは Curve カテゴリの Analysis サブカテゴリ内にあります。

これで解析モデルが完成したので、解析を実行し応力図を確認することで、実際に軸力が支配的になっているか確認してみましょう。

応力の値は、図化ではなく Karamba3D の 6.Results サブカテゴリ内の BeamForces コンポーネントを使うことで数値を直接取得することもできます。軸力と曲げモーメントがどのような値になっているか確認してみましょう。

多直線近似しているため曲げモーメントは 0 になりませんが分割数を増やすとカテナリー形状に近づき曲げモーメントが小さくなります。さらに分割数を増やしていくと、一定以上細かくしても曲げモーメントには大きく影響しないことも併せて確認できます。

これでカテナリーの作成は完了です。次に円弧を作っていきましょう。

円弧の作成と解析

円弧は Arc3pt コンポーネントで作成します。これは始点と終点、およびもう 1 点を設定し、その 3 点を通る円弧を作成するコンポーネントです。Curve カテゴリの Primitive サブカテゴリ内にあります。

A に始点、C に終点、B に新たに作る点を入力します。新たに作るポイントはこれまでの点と区別できるように ”pt1” と名前を付けておきます。

これで円弧が作成できたので、このモデルを使用してカテナリーと同様に Karamba で解析を行いましょう。

カテナリーを作る際に作成した DivideCurve コンポーネントと EndPoints コンポーネントの入力に作成した円弧のカーブを繋ぎなおすことで、改めて Karamba のセットを作らなくても解析を流すことができます。

これで円弧の作成は完了です。次に NURBS カーブを作っていきましょう。

NURBS カーブの作成と解析

NURBS とは、Non-Uniform Rational B-Spline(非一様有理 B スプライン)の略で、数式による形状表現の一つです。Rhino では曲線、曲面の表現で NURBS を使用しています。 詳細は様々な文献、サイトで解説されていますので、そちらを参照ください。

では NURBS カーブを作成していきます。使うコンポーネントは Curve カテゴリの Spline サブカテゴリ内の NurbsCurve コンポーネントです。NurbsCurve コンポーネントの入力は 3 つあります。

1 つ目の Vertices(頂点)には制御に使うポイントを入力します。接続する順番に意味があるので、入力する際には注意しましょう。入力は常に隣接する点を入れてください。例えば 始点 → 終点 →pt1 の順番で接続すると、モデル上では pt1 が端点となってしまいます。

2 つ目は Degree で NURBS で使う数式の次数になります。高次にするほど滑らかな曲線になりますが、基本的には 3 次が使用されます。入力の点は次数+1 の数が必要になるため、3 次ならば 4 点入力する必要があります。

3 つ目は Periodic でその点に周期性があるかどうかの真偽値です。デフォルトは偽になっており、真にすると入力された点に周期性があるとしてカーブが閉じられます。

では実際にモデルを作っていきましょう。上記で記載したように、入力順に意味があるため先に新たなポイントを作成し、"pt2" と名前を付けて使用しましょう。

NURBS についてはこちらのコンポーネントが、形状決定のほうほうを可視化しておりわかりやすかったので紹介しておきます。

De Boor's Algorithm for NURBS Curve

これで NURBS カーブが作成されたので、円弧の場合と同じように繋ぎ変えて、Karamba で解析を流してみましょう。

各モデルの比較の際の TIPS

今回の作成した 3 つのモデルのように共通のパラメーターを持つ複数モデルを解析するとき、毎回繋ぎ変え Karamba で解析することは手間です。こういった無駄な作業は極力減らすために、StreamFilter コンポーネントを使って出力を切り替えられるようにします。

StreamFilter コンポーネントは Set カテゴリの Tree サブカテゴリ内にあります。

Gate の個所に入力する番号は、それ以下にある入力位置の番号と対応しており、例えば Gate に 0 を入力すると、0 番に入力されたデータ(ここではカテナリー)が出力されます。

StreamFilter コンポーネントは最初入力は 0 と 1 しかありませんが、コンポーネントを拡大すると+マークが現れ入力項目を増やすことができます。(ZUI と言います。)

StreamFilter コンポーネントの出力をカーブを分割する DivideCurve コンポーネントと始点と終点を取得する EndPoints コンポーネントにつないでおきましょう。

モデルをまとめることができたの、StreamFilter コンポーネント、ポイントの点を動かしてパラメトリックに解析してみましょう。

以下のようにパラメーターとなっているものを一か所に集めることでモデルの変更が簡単にできるようになり、あとから見た際にも何を意図して作成したモデルかがわかりやすくなります。

ここでは、カテナリーの長さ、モデルの各点、カーブの分割数、カーブのモデリング方法の選択を一か所に集めて、それぞれを変更しながら解析を行っています。

モデルの外部への出力

Rhino の中で解析を行うことができましたが、最終的には Midas などの市販の解析ソフトでの解析を行う必要があると思います。その際にはディックス様が開発しているの EEL などのコンポーネントを使用することで直接やり取りすることもできますが、ここでは簡単に節点の座標を csv 形式で出力する方法について紹介します。

解析に使っている節点は DivideCurve コンポーネントで作成しているため、その値を Panel コンポーネントに出力します。Panel を右クリックし、Stream Destination で出力先を選択し、Stream Contents をオンにすることで、Panel のデータが出力されるようになります。なおこの機能は、Stream Contents がオンである限り、値が変わるごとに新たなデータが出力されるため、必要なデータを上書きしないよう注意してください。

この機能を使えば例えば意匠事務所が Rhino や Grasshopper でモデルを作成してた際に、解析モデル作成の際の参考となるポイントの取得に使うことができます。

ただし、意匠で用いるモデルは基本的にはボリュームで形状を持っていおり、構造のように部材芯をもったモデリングをしていないと思いますので、直接 Rhino の座標を使うためには、芯の座標を作成する必要が出てくるため、モデルの作成者と相談してうまく無駄な作業を減らしてみてください。

これで 2 点間のつなぐ曲線を使ったパラメトリックな構造解析は終わりです。

参考データ

ここで解説した gh のデータは以下にアップしてあります。必要に応じて使用してください。

まとめ

今回は、前回の山形屋根に対して、より Rhino の機能を使ったカーブを作成して解析を行うことについて解説しましたがどうでしたでしょうか。 冒頭で掲載した動画内では Galapagos コンポーネントを使用した最適化についても解説していますので、今回のモデルに対して試してみると面白いと思います。

© 2024 hrntsm / Built with

Gatsby