2020/05/24

クラウドベースの3次元構造解析ツール SkyCiv

Openseesの学習が少し停滞しておりますので、更新滞っております。

Openseesとはあまり関係ありませんが、使えそうなクラウドベースの構造解析ツールをたまたま見つけたので紹介します。その名も、「Sky Civ」です。以下、ページにて詳細を確認できます。(私は、本ソフトの製作者の回し者ではありませんので、悪しからず。。)

https://skyciv.com/

通常構造解析ツールは自分のパソコンにインストールしてそのパソコンでライセンスを取得してしようする形式が基本ですが、これですと、基本的に解析結果を確認できるのでは会社のパソコンのみとなります。
一方、設計者が外出先でちょっと条件を変えた解析結果をすぐ見たいといったニーズはあるかと思います。今回紹介するSky Civはクラウドベースの3次元構造解析ツールで、いつでも、どこでも、ただパソコンさえあれば、構造解析を行うことが可能です。構造設計者にとっては、いつでも仕事に打ち込める環境が整ってしまうということで、ますますワーカホリックが加速されるツールといえます。
本ツールは線形解析、非線形解析、固有値解析に対応しています。
クラウドベースのツールということで、professionalバージョンで109ドル(現在)のサブスクリプションモデルを採用しています。なかなかいいお値段しますが、通常の汎用構造解析ツールと比べると安いのか。。今回は、Freeversion(3次元応力解析の場合、解析モデルのノード10節点以下の制約あり)を少し触ってみました。



解析モデルはウェブブラウザ上で動作するクラウドツールの操作画面にて、節点をクラウド上の表シートにコピペで入力し、表示された節点同士をマウスでつなぐことで簡単に作成できます。その操作性は直感的でかなり良好です。



部材断面も様々なタイプの形状が既に組み込まれており、変更したい寸法部分をクリックして、寸法を入力することで直感的に入力できます。サクサク動きます。



応力解析結果も簡単に確認できました。
計算書も簡易なものですが、ボタン一つでpdfのファイルとして自動出力されます。


また、解析ファイルはクラウド上に保存されますので、どんなPC環境でも常に呼び出すことが可能です。リモートワークにも最適です。今回対象としたモデルはシンプルなフレームモデルだったからか、一般的な構造解析ツールと比較しても、全体的に動きが軽快で操作が快適な印象を受けました。

ソフトウェアを自分のパソコンにインストールしなくてもクラウド上でどこでも解析が行え、結果をどこでも自由に確認できることから、チームで設計を行う上でのコミュニケーションツールとして役立ちそうです。MicrosoftTeamsとの解析結果の連携し、解析結果やコメントを設計チームでスムーズに共有することも可能となっているようです。また、Pythonなどの自作プログラムと組み合わせた高度な活用を想定し、JSON形式によるAPIも装備しています。

さらに、比較的解析時間の大きい複雑なモデルを想定した場合、こうしたクラウド上のツールがスパコン等と連携することで手早く解析できるなどの可能性が考えられ、こうしたクラウドベースのツールの今後の進化にも注視する必要がありそうです。

2020/05/06

トラス要素から梁要素への拡張(Openseesによる3次元応力解析)

前回構築したOpenseesによる3次元フレーム要素の弾性応力解析プログラムについて、補足的に説明します。プログラムのソースはあまり3次元トラス要素のプログラム構成と変わりません。そこで、前回までに構築した3次元トラス要素プログラムの一部を修正したポイントを以下にかいていきます。扱う部材がトラス要素→梁要素となったことで以下のように部材の曲げモーメント、せん断力を考慮する必要がでてきます。修正したポイントはその点に関連するところがほとんどです。



・節点固定度、荷重項を3自由度→6自由度に

トラス要素では部材端がピンのみでしたが、梁要素では部材端が剛接の場合も考えられます。そこで、節点については回転方向の固定、作用力も考慮できるようにする必要がありました。部材の回転を考えない場合、部材固定度、節点荷重も3自由度にて表現されますが、回転の概念が入ってくることで、6自由度となります。そこで、プログラムのインプットにおいて6自由度を考慮できるようにリストの構成等を修正しました。

・要素をトラス要素→梁要素に

トラス要素は軸力のみを伝達することを考えるため、断面積のみを設定する仕様ですが、フレーム要素にした場合曲げも伝達することになるため、部材各方向の断面二次モーメント、ねじれモーメントを設定する必要があります。Openseesでは弾性梁要素として、elasticBeamColumnコマンドにて以下のように部材特性を設定します。

element('elasticBeamColumn', eleTag, *eleNodes, Area, E_mod, G_mod, Jxx, Iy, Iz, transfTag)

eleTag:部材番号
eleNodes:材端の座標
Area:断面積
E_mod:弾性係数
G_mod:せん断弾性係数
Jxx:ねじり断面二次モーメント
Iy:部材座標系y軸方向に対する断面二次モーメント
Iz:部材座標系z軸方向に対する断面二次モーメント
transfTag:部材要素の座標変換に関する設定(後述)

・部材要素の座標変換に関する設定の追加

全体座標系→部材座標系の変換に以下のコマンドを新たに入力する必要がありました。(通常トラス要素の応力解析でもこのような座標変換は行われていることから、あくまでもOpenseesならではの仕様なのかもしれません。)

transfTag = 1
vecxz =0,0,1
geomTransf('Linear', transfTag, vecxz)
’Linear’:線形での座標変換 transfTag:座標変換を定義するタグ(それぞれの部材要素に設定) vecxz:ユーザーが指定する基本ベクトルであり、部材座標系のx軸と並行であってはならない。 (ここでは解析の対象モデルに鉛直部材がないことを想定して、全体座標系のZ軸方向の単位ベクトルを設定)

上記の設定を各部材要素に対してタグを設定することにより当てはめていきます。

・解析結果の出力

トラス要素の応力解析では部材に軸力のみが生じましたが、梁要素では曲げ及びせん断力が各部材の材端に生じるため、各要素の作用力を出力するbasicforceコマンドを適用すると、1部材につき、6個の数値がリストとして出力されます。そこで、それらのデータを整理し、軸力、曲げモーメント、せん断力のそれぞれについて、各部材のアウトプットをグラデーションによる色分布で図化出力できるように修正しました。前回投稿で記載したものです。

plotlyによる図化出力においては、各部材の線グラフのデータにhovertextとして作用力の数値データを埋め込み、マウスをhoverさせることにより、各部材の作用力が直感的に確認できるようにしました。
ただ、このplotly、表示機能を盛り込みすぎると、動作速度が大変遅くなってしまうのが難点ではあります。(本来はグラフ描画ツールなので。。)みたい結果をその都度絞りながら、結果を表示させていくことが現実的な使い方かもしれません。


以上を考慮することにより、Openseesを使いながら、3次元の任意形状の構造モデルを対象とした梁要素の応力解析プログラムが構成できました。トラス要素の構造解析プログラムとあまり構成が変わらないので、ソースコードの記載は割愛します。上記のポイントを押さえながら比較的簡単に拡張できると思いますので、試してみてください。

2020/05/05

Grasshopperによる3次元ジオメトリのOpenseesによる応力解析

今回は、Openseesにより構成した3次元の応力解析プログラムの実務的な利用について考えてみます。特に複雑な形状モデルを対象とする場合、3次元の形状データから、目視や手入力による作業で応力解析プログラムのインプットを作成することを考えると、膨大で複雑な数値データの入力が必要となることから、大変面倒な作業が必要となってしまいます。そこで、近年建築分野で普及が進んでいる3DcadであるRhinoceros+Grasshopperにより作成した形状データをもとにプログラムによるOpenseesの解析入力ファイルの作成にトライしてみます。また、Rhinoceros+Grasshopperによる入力データの作成および解析結果のKaramba3Dによる解析結果の簡単な検証を試みます。

・Rhinoceros+Grasshopperとは
RhinocerosはRobert McNeel & Associates社が開発した3次元CADであり、NURBS局面などの複雑なジオメトリを柔軟に扱えることから、近年、建築分野でも多く活用されています。またGrasshopperはRhinocerosをスクリプトベースで自由に操ることができるツールで、視覚的なアイコンをつなぐことで容易にプログラムが構成できるため、コンピュテーショナルデザインなどに活用されています。さらに近年は世界中のエンジニア・プログラマーにより開発された最適化や応力解析などの多くの外部モデュールが公開されており、その多くがフリーで利用可能となっています。そうしたツールは以下のサイトfood4Rhinoで利用可能となっています。

https://www.food4rhino.com/

・Karamba3Dとは
Grasshopperには、多くの外部機能がPythonのモジュールのように提供されており、Karamba3DはRhinoceros上のジオメトリを用いた応力解析を容易におこなうことができる応力解析モジュールです。近年は有料化されていますが、(unlimitedlicenceで1150ユーロ)多くの構造エンジニアにも使用され始めています。また、最適化ツールなどの機能拡張が日々行われています。

https://www.karamba3d.com/

まず、応力解析の対象とするトラス屋根モデルを以下のように懸垂円筒状のトラスモデルとして作成してみました。作成に当たってはトラス要素のジオメトリを簡便に作成できる外部モデュール(Lunchbox)を使用しています。Lunchboxについても先述したfood4Rhinoにてフリーで弾雨ロードすることが可能です。


Grasshopper上では、上記のようなアイコンをつなげるだけの簡単なコーディングで以下のような複雑なトラスの構造モデルが作成できます。立体的な幾何学を扱うにはとっても便利なツールです。



このような複雑な形状の構造解析モデルの座標や要素の情報を一つ一つinputファイルに記述するのは例えExcelファイルによる記述であってもとても大変です。

しかし、幸いなことに、Grasshopper上ではPythonで書いたプログラムをコンポーネントとして扱うことができるため、作成したジオメトリデータ(line、座標データなど)とPythonを連携させて使用することできます。そこで、Grasshopper上で作成したジオメトリデータをOpenseesの構造解析用のインプットデータとしての節点、要素の数値データに置換するプログラムをPythonで作成し、そのプログラムをつかってOpenseesによる3次元解析プログラムのインプットデータを作成しました。プログラムといっても、Rhinoceros上のジオメトリの節点座標と、各梁要素の材端座標を拾って、input用のデータ書式に再構成するだけのシンプルなものとなります。

例題として、作成した解析モデルの頂部の中心節点に鉛直荷重が加わった場合の応力解析をOpenseesにより行います。
前回可視化に利用したPlotlyにより、Openseesによる応力解析結果を視覚化するとこんな感じになります。


軸力図

軸力図については圧縮材が赤色、引張材が青色となるように設定しました。


最大曲げモーメントの分布図


そして変位図


Karambaによる変位図

上記のOpenseesによる解析結果とKarambaによる解析結果とを比較すると、変形性状は概ね対応していることがわかります。上記では、Grasshopper→Openseesによる応力解析により複雑な形状の構造物の応力解析ができました。Pythonによるコーディングにおいて幾何学形状を扱うことは労力がかかります。そうしたことから、このように幾何学の扱いに長けており、デザイナーによるコーディングも可能なRhinoceros+Grasshopperをデザインなどで使用し、それらの分析にOpenseesを活用するといったスキームは、その間をつなぐ環境がしっかりと構築されれば、建築設計実務でも十分活用できるのではと考えます。