見出し画像

2020年度第8回デジラボ:Grasshopperのコンポーネント"BullAnt"の紹介

はじめに

北九大藤田研B4の田村です。今回はRhino/Grasshopperで"BullAnt"というコンポーネントをモデル形成したのち、"OpenSees for Grasshopper"というコンポーネントで構造計算をしていきます。

BullAntのインストール

BullAntは以下のリンクからダウウンロードできます。インストール終了すれば、ComponentFolderへの移動はしなくてもGrasshopperに反映されます。

https://www.food4rhino.com/app/bullant

OpenSees for Grasshopperのインストール

OpenSees for Grasshopperは以下のリンクのページの一番下の"OpenSees for Grasshopper"からダウンロードできます。

ダウンロードしたらzipファイルを解凍し、データをComponentFolderに移し再起動したら完了です。

http://esd.env.kitakyu-u.ac.jp/fujita/program.html

BullAntについて

BullAntは鉄骨梁などの部材をモデル化するコマンドがが含まれているため、モデルに部材断面を与えることを容易になります。またトラスを作成するコマンド等も含まれているため解析におけるモデリングの手順を簡単にすることが可能です。

Opensees for Grasshopperについて

Opensees for Grasshopperは構造、地盤工学システムのパフォーマンスをシミュレートするapplicationを開発するためにopen sourceとして公開されているOpenseesをGrasshopper上で扱えるように作られたコンポーネントです。

形状、荷重、部材などを設定することで変形や部材にかかる荷重などを算出することができます。また変数をsliderなどにすることで最適化することも可能です。

トラスのモデル作成

簡単なトラスの平面を作っていきます。

1.グリッドの作成

画像11

初めに上図のようなプログラムでグリッドを作成します。

①Params > Input > Number Slider

②maths > Script > GhPython Script

③Sets > List > Convert list and tree

④OpenSees > Utility > Rational B-spline Surface (RBS)

⑤OpensSees > Utility > FromGridPoints

Python内は以下のようになっており、グリッドの交点となる点を作成しています。

import ghpythonlib.components as gh
import math

P=[]
N=5
M=5
x=X/(N-1)
y=Y/(M-1)

for i in range(int(N)):
   p=[]
   for j in range(int(M)):
       z=0
       p.append(gh.ConstructPoint(x*i,y*j,z))
   P.append(p)

2.トラスの作成

画像10

①Vector > Vector > Unit Z

②Transform > Euclidean > Move

③GG > BullAnt > ggTrussFormCurves

上で作ったグリッドを複製し、Z軸方向に移動させます。NumberSliderの値がZ軸方向の移動距離であり、作るトラスの高さになります。

ggTrussFormCurvesのA,Bに曲線のデータを、Nに分割点の数を挿入します。Tでトラスのタイプを選択します(0=PRATT, 1=WARREN, 2=VIERENDEEL, 3=BROWN, 4=HOME, 5=ONEDIR)。

3.部材断面の挿入

画像11

①Params > Geometry > Curve

②GG > BullAnt > ggCatalogueProfile

③GG > BullAnt > ggCatalogueProp

④GG > BullAnt > ggSweepProfile

ggCatalogueProfileを右クリックし、All Profiles > Japanese > Hot Rolled Beamsから様々なH形鋼の部材断面を取り出すことができます。GG > BullAnt > ggGenerateUnivBeamを使用することで自由に部材断面を設定することも可能です。

挿入後は下図のようになります。

画像4


OpenSees for Grasshopperによる構造計算

続いてOpensees for Grasshopperを用いて作ったトラスのモデルの構造計算をしていきます。

1.Opensees for Grasshopperへ反映

画像11

①Sets > Tree > Flatten Tree

②OpenSees > Utility > Make R and IJ from Geometry

③OpenSees > Visualization > VisualizeStructuralModel (VisualizeModel)

作成したトラスをOpensees for Grasshopperへ反映させます。VisualizeStructuralModel (VisualizeModel)で構造計算するモデルを確認します。Display Option>About beam>No.をonにすることで全てのlineに数字がふられ、すべてのlineが解析の対象になっていることが確認できます。

2.境界条件、荷重の設定

画像11

①OpenSees > PreProcess > SetBoundaryCondition

②Vector > Point > Deconstruct

③OpenSees > PreProcess > SetNodalLoads

SetBoundaryConditionで境界条件を設定します。x,y,zを設定することで任意の点のみに境界条件を設定することができます。今回は4隅の点に境界条件を設定したいのでx,yは0とスパンである、一番初めに設定したNumberSliderに設定します。またzはトラスの下側の点なので0に設定します。

SetNodalLoadsでは荷重を設定できます。こちらも同様にx,y,zを設定することで任意の点に荷重を設定できます。トラスの上面の交点に荷重をかけたいのでMoveで移動させた方のRational B-spline Surface(RBS)の点の情報を利用します。Pzはz軸方向の荷重を設定できます。下方向に荷重をかけたいのでマイナスに設定します。

こちらもDisplay Option>About node>Bndsをonに境界条件が設定されていること、Display Option>About node>P_fをonにすることで荷重が設定されていることが下図のように確認できます。

画像7

3.座屈長さ、部材断面情報の取得、荷重データの整形

画像11

①OpenSees > PreProcess > Clac Element Axis Vector

②OpenSees > Analysis > Calc section performance of an arbitrary section

③OpenSees > PreProcess > Assemble nodal, element, and surface, loads

Clac Element Axis Vectorで座屈長さ、Calc section performance of an arbitrary sectionで部材断面の情報を取得します。Assemble nodal, element, and surface, loadsでは設定した荷重データをOpenSees用に整えます

4.構造計算、結果の視覚化

画像11

①OpenSees > Analysis > Analysis using OpenSees

②OpenSees > Visualization > VisualizeAnalysisResult (VisualizeResult)

Analysis using OpenSeesでOpenSeesを用いた解析を行い、VisualizeAnalysisResultで可視化します。Display Option>About displacementで変形を、Display Option>About reaction forceで反力を、Display Option>About sectional forceで断面力を可視化することができます。

変形について可視化した結果が下図のようになります。

画像10

BullAntによって容易にトラスを作ることができました。また、ggCatalogueProfileに様々な断面情報が入っているため、断面を変更すると解析結果に反映されます。

繋ぎ方等について詳しくは以下の動画を参照してください。

この記事が気に入ったらサポートをしてみませんか?