![見出し画像](https://assets.st-note.com/production/uploads/images/36382126/rectangle_large_type_2_2fe9b189c552ef49401f3eeb3d4de9f9.png?width=1200)
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.グリッドの作成
初めに上図のようなプログラムでグリッドを作成します。
①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.トラスの作成
①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.部材断面の挿入
①Params > Geometry > Curve
②GG > BullAnt > ggCatalogueProfile
③GG > BullAnt > ggCatalogueProp
④GG > BullAnt > ggSweepProfile
ggCatalogueProfileを右クリックし、All Profiles > Japanese > Hot Rolled Beamsから様々なH形鋼の部材断面を取り出すことができます。GG > BullAnt > ggGenerateUnivBeamを使用することで自由に部材断面を設定することも可能です。
挿入後は下図のようになります。
OpenSees for Grasshopperによる構造計算
続いてOpensees for Grasshopperを用いて作ったトラスのモデルの構造計算をしていきます。
1.Opensees for Grasshopperへ反映
①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.境界条件、荷重の設定
①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にすることで荷重が設定されていることが下図のように確認できます。
3.座屈長さ、部材断面情報の取得、荷重データの整形
①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.構造計算、結果の視覚化
①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で断面力を可視化することができます。
変形について可視化した結果が下図のようになります。
BullAntによって容易にトラスを作ることができました。また、ggCatalogueProfileに様々な断面情報が入っているため、断面を変更すると解析結果に反映されます。
繋ぎ方等について詳しくは以下の動画を参照してください。