今回は、グラスホッパーで雨水などの流水分析をする方法について解説します。
全体の様子

上の画像は、実際に解析を実行している様子です。
今回使用したグラスホッパーとライノセラスのデータダウンロードはこちら
ダウンロードできるデータのご利用に関しては、利用規約をご覧ください。
今回使用するモデル

今回は例として、上の画像のライノセラス上のソリッドモデルを使用します。
今回は、モデルを屋根として進めていきますが、もちろん地形などの場合でも同様に解析できます。
全体コンポーネント
今回のプログラミングでは、Rhino6以降に標準搭載されているKangaroo2を使用しています。
仮にインストールされていない場合、インストールをお願いします。
Rhino6以降のライノセラスを使っている方は、インストールする必要はありません。
全体コンポーネント:①Brep ②Unit Z ③Move ④XY Plane ⑤Center Box ⑥Populate 3D ⑦SolidPointCollide ⑧Boolean Toggle ⑨SphereCollide ⑩Negative ⑪Load ⑫Floor ⑬Button ⑭BouncySolver


水の代わりとなる複数の点を作成する
最初に、水の代わりとなる複数の点を作成していきます。

最初に、ライノセラス上のモデルを、Brepに格納します。

その後、Brepを、Volumeにつなげます。
すると、上の画像のように、モデルの中心点を取得できます。

その後、移動させる数値を、Unit Zにつなげます。
今回は、5000のをつなげています。
さらに、Volume(C)を、Move(G)につなげます。
すると、上の画像のように、点が真上方向に移動しました。
すると、移動した点の位置に、XとY方向からできる作業平面が作成されます。

その後、XY Planeを、Center Box(B)につなげます。
さらに、各辺の1/2の数値を、X・Y・Zにつなげます。
今回は、XとYに5000、Zに1000をつなげています。
すると、上の画像のように、点を中心とする10000×10000×2000のボックスが作成されます。

その後、Center Boxを、Populate 3D(R)につなげます。
さらに、作成する点の個数を、Populate 3D(N)につなげます。
今回は、2000をつなげています。
すると、上の画像のように、ボックス内に2000個の点が作成されます。
これで、水の代わりとなる複数の点を作成することができました。
モデルと点が衝突できるように設定をする
次に、モデルと点が衝突できるように設定をしていきます。

Populate 3Dを、SolidpointCollide(Points)につなげます。
さらに、Brepを、SolidpointCollide(Solid)につなげます。
さらに、Falseの情報を、SolidpointCollide(In)につなげます。
今回は、Boolean Toggleを使用しています。
これにより、モデルの外側に衝突判定が起きるようになります。
さらに、Trueの情報を、SolidpointCollide(Uni)につなげます。
これにより、衝突によってモデルに影響が出なくなります。
SolidpointCollideのこれらの設定をすることで、点とモデルが衝突するようになります。
その後、Populate 3Dを、Load(P)につなげます。
これにより、Negativeで方向がマイナスが掛けられ逆方向になり、真下方向のベクトルを取得できます。
その後、Negativeを、Load(FV)につなげます。
これにより、各点に真下方向の荷重がかかるようになります。
その後、Populate 3Dを、SphereCollide(Points)につなげます。
さらに、半径の数値を、SphereCollide(R)につなげます。
今回は、50をつなげています。
これにより、各点が半径50で、点が衝突するようになります。
その後、Floorを用意します。
これにより、高さ0の位置で点が止まるようになります。

その後、SolidpointCollide・Load・SphereCollide・Floorを、BouncySolver(GoalObjects)につなげます。
さらに、Buttonを、BouncySolver(Reset)につなげます。
これにより、ボタンを押すことで、解析を実行することができます。
さらに、閾値(どの程度移動しなくなったら解析を終了するかの値)を、BouncySolver(Threshold)につなげます。
今回は、5をつなげています。
この値を設定しないと、解析が終わらない、もしくは解析が非常に長くなってしまいます。
さらに、TrueかFalseの情報を、BouncySolver(On)につなげます。
Trueの場合、解析が実行できる状態になります。
Falseの場合、解析が実行できない状態になります。
最初は、Falseの状態にしています。
これで、モデルと点が衝突できるように設定をすることができました。
解析を実行する
解析を実行していきます。

BouncySolver(On)の状態を、Trueにします。

その後、Buttonのボタンを押します。


すると、上の画像のように、真上から点が落ちてきて解析が始まります。

解析が終了すると、Convergedが表示されます。

SphereCollideで半径を指定しているので、点の間に間隔があることが分かります。
これで、流水分析ができました。
今回は以上になります。
Comment