OpenVSPで翼の変形を解析するためのFEAモデルを作成する
はじめに
OpenVSPでスキンの変形を解析するためのFEAモデルを作成する
最終的にはこんな感じのものができる

ここで作成した.inpファイルに、別途作成するpythonプログラムで分布荷重を書き加えて、CalculiXでFEMの解析を行う

↓公式ドキュメント
↓インストール
↓参考リンク
https://openvsp.org/wiki/lib/exe/fetch.php?media=workshop20:openvsp_structures_modeling.pdf
↓参考文献
それではいってみよう
翼のモデルを作る
OpenVSPを開く

Geom Browser
でWing
を選択し、Add
をクリックする

デフォルトの翼のモデル(WingGeom
)が追加される

今回は半裁モデルを作成するので、XForm
のタブに移動して、Symmetry
>Planar
>XZ
のチェックを外す

Plan
のタブに移動して、Span
を2.6、Chord
を1.0に設定する

Sect
のタブに移動してRoot C
を1.0、Tip C
を1.0、Sweep
を0.0に設定する

Airfoil
のタブに移動して、T/C
を0.12、Camber
を0.04、CamberLoc
を0.4に設定する(ようするにNACA4412)
Airfoil Section
の数字を切り替えて、RootとTip両方に設定する

(翼の端部が開いたモデルが欲しい場合は、Plan
のタブに移動して、Root Cap Type
とTip Cap Type
を両方ともNone
にする)
ここまででWingGeom
の作成は完了である

FEAのモードに切り替える
メニューからAnalysis
>Structure
>FEA Structure
をクリックする

FEA Structure
のウィンドウが開く
Structure
のタブに移動して、Geom
で先程作ったWingGeom
が選択されていることを確認し、Add Structure
をクリックする
FEA Output Unit System
でSI (kg, m)
を選択する

Part
のタブに移動すると、Skin
というパーツが追加されている
これはWingGeom
からFEMモデルを作成するとデフォルトで追加されるパーツで、これをベースに、いろいろなパーツを足してモデルを作成していく

Skin
を選択してEDIT
をクリックすると、パーツの編集ウィンドウが開く

Materialを追加する
Material
のタブに移動して、Add Material
をクリックし、新しい材料を追加する
Name
をわかりやすいものに変更し、Input
に密度、ヤング率を入力する
今回はリブとプランクに30倍発泡スチロールを設定するので、EPS30
という名前でMaterial
を追加した
CFRPもデフォルトでいくつか用意されているが、新たに追加した


バルサについてはデフォルトのMaterialを使用することにする
ShellのPropertyを追加する
Property
のタブに移動して、Shell要素やBeam要素の設定を行う
今回はBeam要素は使わない(使い方がわからない)ので、すでに登録されているDefaultBeam
というプロパティはDelete Property
で削除する
DefaultShell
を選択し、Property Name
、Material
、Length Unit
、Thickness
を設定する
プロパティを追加したい場合はAdd Property
で行う
今回は以下のプロパティを設定した
Name | Type | Material | Thickness [m] | 備考 |
EPS_Rib | Shell | EPS30 | 0.008 | リブ |
EPS_Skin | Shell | EPS30 | 0.002 | プランク |
CFRP_Spar | Shell | CFRP | 0.00141 | 主桁、(90,0,±45)sの疑似等方性積層 |
TE_CAP | Shell | Balsa LTR | 0.001 | 後縁材 |




リブを追加する
Part
タブに移動して、Type
でRibArray
を選び、Add
をクリックする
Edit Part
をクリックするとFEA Part Edit
のウィンドウが開くので、以下のように設定する(スパン方向位置 0.1 [m] から 2.6 [m] まで 0.2 [m] 間隔でリブを設定)

General
のShow
/Hide
で表示を切り替えることができる
追加後はこんな感じ

スキンの端にリブを配置するとメッシュ作成がバグる
対処方法は以下の通り
- スキンの端から少し離れた場所にリブを置いて、リブからスキン端までのメッシュを消去する(この記事のやり方)
- スキンの端にSubsurfaceのLineを追加して、翼端のCAPをリブとして代用する(リブのPropertyはSkinと同じになる)
https://openvsp.org/wiki/doku.php?id=feamesh
スパーを追加する
Part
タブに移動して、Type
でSpar
を選び、Add
をクリックする
Edit Part
をクリックするとFEA Part Edit
のウィンドウが開くので、以下のように設定する
なお、今回は鳥コン滑空機のCFRPパイプを2本の桁とスキンからなるボックス桁で置き換え、断面二次モーメントおよびねじれ定数が同じになるように寸法を決定した
追加後はこんな感じ

Subsurfaceを追加する
デフォルトのSkin
をプランク、ボックス桁上下面、フィルム、後縁材に分割し、端のリブより外側のSkin
のメッシュを削除するためにSubsurface
を追加していく
後縁材のSubsurfaceを追加する
Part
タブに移動して、Type
でRectangle
を選び、Add
をクリックする
Edit Part
をクリックするとFEA Part Edit
のウィンドウが開くので、以下のように設定する
追加後はこんな感じ

フィルムのSubsurfaceを追加する
Part
タブに移動して、Type
でRectangle
を選び、Add
をクリックする
Edit Part
をクリックするとFEA Part Edit
のウィンドウが開くので、以下のように設定する
Elements
でDelete Shell
を選択することで、Subsurface内のメッシュを削除している
上側のスキンのW Length
は数値をベタ打ちしたが、下面側のスキンのW Length
は始点がSpar_Rear
と一致するようにスライダーを用いて数値を微調整した
(Spar
の位置設定に用いたLocation
はコードラインに沿った距離だが、W Length
は翼表面の曲線に沿った距離なので、きれいな数値で一致しない)

追加後はこんな感じ

桁の上下面のSubsurfaceを追加する
やり方はフィルムのときとほぼ同じ
Part
タブに移動して、Type
でRectangle
を選び、Add
をクリックする
Edit Part
をクリックするとFEA Part Edit
のウィンドウが開くので、以下のように設定する


追加後はこんな感じ

端のリブから外側のスキンを削除する
やり方はフィルムのときとほぼ同じ
Part
タブに移動して、Type
でRectangle
を選び、Add
をクリックする
Edit Part
をクリックするとFEA Part Edit
のウィンドウが開くので、以下のように設定する
Elements
でDelete Shell
を選択することで、Subsurface内のメッシュを削除している
U Length
についてはフィルムのSubsurfaceと同様、スライダーと限界ズームを使って微調整している
追加後はこんな感じ

Subsurfaceの順番を並び替える
Partタブに移動する
SubsurfaceはFEA Part Selection
の下から順に上書き適用されていくので、翼根と翼端のメッシュの削除を行うSubsurfaceはフィルムと後縁材のSubsurfaceよりも上にする必要がある
FEA Part Selection
でRoot_Trim
とTip_Trim
を選択し、左側の▲▼で順序を変えることができる

境界条件指定用の参照点を追加する
今回は翼根の3点を用いて境界条件を設定するので、そのための参照点を追加する
Part
タブに移動して、Type
でFiexed Point
を選び、Add
をクリックする
Edit Part
をクリックするとFEA Part Edit
のウィンドウが開くので、以下のように設定する
Abs X
とAbs Y
は数値のベタ打ちだが、Abs Z
は例のごとくスライダーと限界ズームを使って微調整している
(Type
>On Part
のU Location
とW Location
を使うと、OpenVSP上ではいい感じに見えるが書き出したメッシュがバグる)
追加後はこんな感じ

境界条件を追加する
追加したFixed Point
に対して境界条件を設定する
BCs
タブに移動して、Type
でPart
を選び、追加したFixed Point
を選択してAdd BC
をクリックする
Degrees Of Freedom
の中から、固定したい自由度にチェックを入れる
今回は以下のように設定した
メッシュを作成して出力する
Mesh
のタブに移動し、メッシュを作成して出力する
ウィンドウの1番下のIntersect and Mesh
をクリックするとその時点の設定でのメッシュが作成される
メッシュを細かくしすぎるとバグるのでほどほどに
ステップ1: 最大エッジ長の設定
Mesh Control
で、Max Edge Len
を最初に調整するMin Edge Len
とMax Gap
を非常に大きな値に設定し、Num Circle Segments
を非常に低い値に設定する(これですべてのセルの大きさがMax Edge Len
の値で決定される)- メッシュの最小解像度が良い感じになるまで、
Max Edge Len
を調整する(1番粗くていい場所のメッシュの大きさを決める)
今回はリブ区間0.2mが10分割されるよう、Max Edge Len
はAbs
で0.02に設定した


メッシュが多いとシンプルに計算に時間がかかるので、最初はこれくらいの粗さで試計算するのがいいかもしれない


ステップ3: 最小エッジ長の設定
Min Edge Len
を設定する(一般的にはMax Edge Len
の10〜20倍小さい値に設定する)Min Edge Len
を調整して、メッシュの細部が必要な解像度を持つようにする(今度は逆にメッシュが1番細かくなってほしいところの細かさを設定する)
今回はBest Practiceに従ってMax Edge Len
の20倍小さい値にするため、Min Edge Len
をRel
で0.05に設定した(まだMax Gap
やNum Circle Segments
をいじっていないのでメッシュの見た目は変わらない)


ステップ4: 許容最大ギャップと円周セグメント数の設定
Max Gap
またはNum Circle Segments
のどちらか一方を設定する。どちらも「滑らかに定義されたモデルと角ばったメッシュとの間の誤差の許容値」を設定するパラメータであり、お互いに同じことを設定できるので、個人の好みに応じてどちらかを選ぶMax Gap
はモデルとメッシュ間の最大許容誤差の絶対値を設定する(直観的なパラメータだが、絶対的な値なのでモデルのスケールに応じて都度設定しなおす必要がある)Num Circle Segments
は曲率のある面を何分割のメッシュとしてモデル化するかを設定する(相対的な値なのでモデルのスケールによらないが、直観的には分かりにくい)- 両者のパラメータは互いに干渉してしまうので、選ばなかったオプションの値を、非常に大きな値(
Max Gap
の場合)または非常に小さな値(Num Circle Segments
の場合)に設定して、効果を無効にする
今回はNum Circle Segments
を16に設定してみた


Before&After


ステップ5: 成長率制限の設定
Growth Ratio
を調整して、メッシュの三角形がどれだけ速く成長できるかを設定する- このパラメーターは、他のパラメーターによって制限されない場合に適用され、複雑な部分から離れる際のメッシュの滑らかな成長を制御する
よくわからないので今回はデフォルトの1.3のままにしておく
ステップ6: メッシュの生成とエクスポート
- すべての設定が完了したら、
Intersect and Mesh
をクリックしてメッシュを生成する - 出力ウィンドウでメッシュ生成の進行状況を確認し、エラーや警告メッセージがないかチェックする
FEM
タブに移動し、FEM Export
で出力したいファイルの形式を選択して、Mesh
タブに戻りExport FEM
をクリックすれば、今回作成したモデルが.vsp3
ファイルがあるのと同じディレクトリに出力される


Subsurfaceの設定をするときのスライダーの微調整が甘いと、メッシュを生成したときに下の画像の右側に示すような細長いメッシュが生成されてしまう
CalculixでFEM解析をする際にエラーとしてはじかれてしまうので注意


以上
おわりに
OpenVSPで翼の変形を解析するためのFEAモデルを作成した
ここで作成したモデルを使って、CalculixでFEMの解析を行う
↓関連記事
コメント