y-yosuke / formula-ppoino

A side-by-side two-seater car of the early 2000s formula style
Creative Commons Attribution 4.0 International
2 stars 2 forks source link

CFD Simulation on SimScale #11

Closed y-yosuke closed 7 years ago

y-yosuke commented 8 years ago

SimScale のアカウント(free)を取得したので CFD 用のモデルを作成中 https://github.com/y-yosuke/ppoino-cars/issues/8#issuecomment-230393780

【メモ】

2016-07-12 22 34 17

2016-07-12 22 36 55 2016-07-12 22 37 34

y-yosuke commented 8 years ago

W(Half) : 3.0 [m] x H : 6.0 [m] x L : 30.0 [m](Blockage : 3.6 [%]) だとこんな感じ. 2016-07-12 22 54 00

y-yosuke commented 8 years ago

SimScale にCADデータを上げた.これからメッシュ切りの手順を勉強する. https://www.simscale.com/projects/yosukegb4/fp-023b/

y-yosuke commented 8 years ago

あー External Flow にしたら Box は SimScale 側で設定できるのか. とりあえずこのデータで Internal Flow として今メッシュ切り中.

y-yosuke commented 8 years ago

データは STP で出力したけど Internal Flow としてメッシュ切るのなら STL の方が良いとかあるのかな?それも後々試そう.

y-yosuke commented 8 years ago

automatic で fitness fineness を最も細かそうな very fine にしても粗い.フラップの隙間が潰れてる.

車体周辺だけ細かくしてほしいのだけど automatic では限界かもしれない. もしくは internal flow はそういう切り方をするのかもしれない.

今後試すのは下記あたりか.

2016-07-13 7 59 22

emijah commented 8 years ago

うーん。NSXのCピラーの隙間はあいていたけれども特別ファインなモデルなのだろうか

2016-07-13 8:01 GMT+09:00 Yosuke Yamamoto notifications@github.com:

automatic で fitness を very fine にしても粗い.フラップの隙間が潰れてる. [image: 2016-07-13 7 59 22] https://cloud.githubusercontent.com/assets/3119480/16786467/dea22202-48cf-11e6-99b6-9c86de3e9cc9.png

— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub https://github.com/y-yosuke/formula-ppoino/issues/11#issuecomment-232207608, or mute the thread https://github.com/notifications/unsubscribe/AAXmlSg6qeCy-1lgX6ee8msKrVDJUoCTks5qVBy-gaJpZM4JJstr .

y-yosuke commented 8 years ago

おそらく internal flow が原因だと今のところ考えていて external flow にしたらモデル周辺は細かく切って遠いところは粗く切るのではないかと想像しています. 今日それを試してみます.

y-yosuke commented 8 years ago

あ,YASA 750 のバルジのモデルを入れてない.(ま,メッシュの練習だし... あと,地面のメッシュは細かく切りたいな.

y-yosuke commented 8 years ago

メッシュの切り方,丁寧に書いてあるわ https://www.simscale.com/docs/content/tutorials/tutorial_frontwing.html

y-yosuke commented 8 years ago

ところで SimScale の Core hours 3000 hours って月あたりの時間ということなのか?否か? 4 cores でフルで回したら 4 [core] x 24 [h] x 30 [day] = 2880 [h] で大体それぐらいの時間になるのだけど.

y-yosuke commented 8 years ago

メッシュ粗さの件は internal / external ではなくて automatic / parametric の違いみたいだ. parametric にして領域・面などによってメッシュの疎密を設定する.

y-yosuke commented 8 years ago

良い感じになりもうした. もう少し下流の粗いところを密にした方が良いような気もするが,まずこれでCFDにかけてみよう. 2016-07-13 22 52 08 2016-07-13 22 53 56 2016-07-13 22 55 09 2016-07-13 22 59 04 2016-07-13 23 01 55

y-yosuke commented 8 years ago

で,ノード数が 26109120 になったのだけどシミュレーション計算にかけたら 8 cores ではメモリが足りませんでした.となったので 32 cores で設定し直して再計算中. それでも駄目だったらメッシュの削減をしなくてはならない.

y-yosuke commented 8 years ago

32 cores にしてもメモリが足りないとのことでメッシュを粗く切っているところ.

y-yosuke commented 8 years ago

【メモ】CADデータの受け渡し

emijah commented 8 years ago

;_;)

2016年7月14日 16:57 Yosuke Yamamoto notifications@github.com:

【メモ】CADデータの受け渡し

  • STEP
    • タイヤのような1つの面で大きく曲がっているものの形状の再現性が怪しい.
    • 単位もデータ内に持っているようで [mm] で出力しても [m] に自動的に換算されている.
    • インポートされた面はそれぞれ持って行かれるのでそのまま face set などにできる.
  • STL
    • [mm] で出力したらそのままなので Geometry Operation で 0.001 乗算変換
    • インポートされた面は全体で1つの閉曲面として認識されるので Geometry Operation で切り分け角度指定での面分割が必要

— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/y-yosuke/formula-ppoino/issues/11#issuecomment-232590591, or mute the thread https://github.com/notifications/unsubscribe/AAXmlb7Ahm-TLo6NBQS6wmX8tjhBGm_2ks5qVevngaJpZM4JJstr .

y-yosuke commented 8 years ago

【メモ】

y-yosuke commented 8 years ago

SimScale 上での STL の Surface splitting は Error が出て失敗したので STL は不採用. よって,STEP の変になる面,具体的にはタイアの Surface を Knot に沿って分割して SimScale に読み込んだときの質を確保.

y-yosuke commented 8 years ago

IGES も試したがタイヤのサーフェスがおかしくなるのは STEP と同じで, 更には単位が着いてこないので 0.001 倍しないとならなく, STEP に比べて良いところがないので不採用.

y-yosuke commented 8 years ago

【作業メモ】 Fr Flap も SimScale 上の STEP での形状再現性が低かったので Rhinoceros にて Shrink Trimmed Surface を行って STEP エクスポートのし直し.

y-yosuke commented 8 years ago

1つずつメッシュが正常に切れない問題をつぶしているところ.

面の接続先が誤って認識されているようで,面が折り返ってしまい流体の領域も変になった例 → 接続が駄目だった面の間に CAD 側でフィレットをかけて対処 2016-07-15 23 16 48

y-yosuke commented 8 years ago

もう12年ぐらい前の話だけど当時 SCRYU/Tetra でメッシュ切るのそんなに苦労した記憶がないのに何で?とぐぐったら SCRYU/Tetra の売りはメッシュ切りと当該ページには書いてある.そういうことなの??? http://www.cradle.co.jp/products/scryutetra.html

テトラメッシュでも切ってみるか... (メッシュ切りのテストだけで 3000 core hours を使ってしまうのでは!? という恐怖... orz Left: 74%)

y-yosuke commented 8 years ago

OpenFOAM の方から調べると blockMesh は薄い部分の表現が苦手なようだ.

y-yosuke commented 8 years ago

external flow で Bounding Box と元の CAD Data の組み合わせで流体領域を形成するのだけれども, どこかのメッシュ(フラップとフェンダーの交差部?かタイヤと地面の交差部?)が裏返ってしまって 領域が車体の内外両方になってしまう.

このため internal flow の CAD Data を再び使い,今回は "Hex-dominant automatic for internal flow (only CFD)" ではなく "Hex-dominant parametric (only CFD)" で良い感じにメッシュが切れないか試行中.

y-yosuke commented 8 years ago

"Tetrahedral with layer refinements" でメッシュ切りを試したがエラーが出て切れなかった. 理由はわからないが,今回はこの方向の試行は中止かな.snappyHexMesh の方向でがんばる.

y-yosuke commented 8 years ago

流体領域を CAD Data で形成しておいた方がおかしなことになりにくいようだ.

SimScale 上でライドハイト設定を変えてメッシュが生成されるのがベストだろうが,まともなメッシュが切れないようでは元も子もないので,手間は増えるが予め CAD で流域を形成したデータを複数使うのがセカンドベストかもしれない.

手間と言っても車体モデルを Transfer して流域の Box と Boolean をとるだけだけど. 更には厳密に言うとライドハイトによってサスペンションアームの形が変わるのでそう言った意味ではこれがベストなのかもしれない.

SimScale の CAD データは "Import from Onshape" の機能があるのでライドハイト変化などのパラメトリック要素は Onshape 上で処理をして流体領域を形成して一連のパターンを SimScale にてバッチ解析する作業の流れもありかも.

y-yosuke commented 8 years ago

メッシュ良さげか!? これで解析に流せるかな. https://www.simscale.com/workbench/?pid=4105619712994739995#tab_0-0 Meshes -> Mesh 1 2 2

Nodes (Points) 6,245,308 で大体目標値.

メッシュ全体(手前の面は Hide してる) 流域 Box の周辺が細かいのは勿体ないが CAD のエッジをメッシュに反映する設定 "Feature refinement" が CAD の Surface 全部にかける方法しかないため仕方ないか,というところ. 改めて見ると,車体後流部はもう少し長く,細かくしたいところだが... 2016-07-17 15 24 35

メッシュ拡大 Flap と Wing の隙間の端が怪しいことになってる.改善したいところだが... 2016-07-17 15 27 57

レイヤーの様子(3層) 2016-07-17 15 30 48

領域はちゃんとしているようだ. 2016-07-17 15 32 10

y-yosuke commented 8 years ago

I think snappyHexMesh is not beautiful.

y-yosuke commented 8 years ago

まだメモリーエラーが出るなぁ... (T_T)

y-yosuke commented 8 years ago

やはりメッシュがおかしいような気がする.

SimScale の STEP/IGES → サーフェスメッシュの変換がおかしいのでいろいろな人の Project をみていたら,これ ↓ なんか STL で読み込んでいるのに複数ソリッドが存在している. https://www.simscale.com/projects/pfernandez/perrinn_f1_v5/ ソリッド化した STL だとそれぞれの閉領域が1つのまとまりとして SimScale で認識されるらしい.

STL でもソリッド化というプロセスがあるらしく,それは FreeCAD で出来るらしい. http://monoist.atmarkit.co.jp/mn/articles/1602/12/news011.html

ということで FreeCAD 氏に働いてもらっているところだが... 帰ってこない... orz

y-yosuke commented 8 years ago

複数要素の STL データを SimScale にインポートするために試したことで駄目だったことリスト

emijah commented 8 years ago

うーん、互換性にまだ問題があるんですね

y-yosuke commented 8 years ago

タイヤ&ホイールを回さなければ STL でそのまま出来るようなのですが... このモデルの場合それはちょっと意味ないかなと思うわけです.

y-yosuke commented 8 years ago

3000 core hours は1年あたりとのこと.すぐ使い切りそうだな. "3000 core hours of computing power per year" https://www.simscale.com/forum/t/simscale-plans-pricing/27827

y-yosuke commented 8 years ago

STL で複数の領域があるデータを SimScale にアップロードする方法が分った.

SimScale のフォーラムに書いてあったのだが,それだけでは足りない部分が私の環境ではあったので Rhinoceros で STL 出力してから SimScale にアップロードするまでの手順を書いておく.

How to import more than one geometry (STL), to be meshed in the same project? https://www.simscale.com/forum/t/how-to-import-more-than-one-geometry-stl-to-be-meshed-in-the-same-project/26790

1 . STLファイルのエクスポート(ASCII)

Rhinoceros で分割して利用したいソリッド部分をそれぞれ ASCII で STL 出力 する. 例えば,body, fl-wheel, fr-wheel, rl-wheel, rr-wheel などで分ける. (精度は 0.1mm ぐらいで出力している)

2 . STLファイル内の solid 名の変更

STLファイル内の solid の名称が全て OBJECT になっており,そのままだと SimScale で利用する際に区別がつかなく face の選択ができない. そこで,各 STLファイル をテキストエディタなどで編集してファイルの冒頭と末尾にある次の行を編集して,各 solid が固有の名称を持つようにする.

<変更前>

solid OBJECT
...
endsolid OBJECT

<変更後(例)>

solid OBJECT2
...
endsolid OBJECT2

3 . STLファイルの結合

コマンドラインで次のように cat を実行して複数のSTLファイルを1つのSTLファイルに結合する.

cat 1.stl 2.stl 3.stl 4.stl 5.stl > fp-023b_cfd_combined_rename-OBJECT.stl

4 . ZIP圧縮(必要ならば)

結合したSTLファイルが 300MB を超えるような場合はZIP圧縮をして 300MB 以下にする.

5 . SimScale にアップロード

SimScale の "Upload CAD/mesh" の "Upload geometry" から STL を指定して結合したSTLファイルをアップロードする. アップロードしたデータはSTLファイル上では solid と記述されているものは face として SimScale 側に認識されるようでそれを使って各領域のメッシュ条件や,解析の境界条件として利用する.

アップロードしたデータの様子 2016-07-18 11 39 57

6 . 単位をミリからメートルにスケール変換

"Geometry Operation" → "General CAD" → "Scaling" → "Scaling factor" [ 0.001 ] で [ Start ] この作業は SimScale にアップロードする前に MeshLab などを使って行っても良い.むしろその方が速いし core hours を消費しないので良い. 追記)MeshLab で複数領域の STL を出力できないかもしれない.

さて,やっとここからメッシュ切りのやり直し.

y-yosuke commented 8 years ago

なんや... やれば出来る子やないか...

(でも,細かくしすぎたので再メッシュ) 2016-07-18 15 50 13 2016-07-18 15 51 43 2016-07-18 15 53 15 2016-07-18 15 54 26

y-yosuke commented 8 years ago

メモリーエラーはメモリーエラーにあらず,の場合もあるとのこと. https://www.simscale.com/forum/t/memory-error-whilst-trying-to-simulation/28038/6

y-yosuke commented 8 years ago

今度は粗くしすぎたかなーという感はあるが,とりあえず解析が出来るようにするのが第1目標. 2016-07-18 17 35 55 2016-07-18 17 37 06 2016-07-18 17 37 48 2016-07-18 17 38 36

y-yosuke commented 8 years ago

とりあえず解析で解は収束方向に行った.

6,049,050 nodes で 2000回 の計算を 32 cores で 178min(約3時間 = core hours 3.2% 使用?)

デバッグのためタイヤ&ホイールを回していなかったので回して再度解析する.

タイヤ&ホイールを回していないケースだが解の収束の様子はこんな感じ. 2016-07-19 0 31 25

y-yosuke commented 8 years ago

core hours の 3000 h/year を使い切りそうだったら複数人で free アカウント持ちよりで手分けして解析かな.SimScale 上でブランチ出来るみたいだし.協力者いるカッシーラ?

y-yosuke commented 8 years ago

寝る前に仕込んだのが計算は出来ているのに何故かエラーで結果がダウンロード出来ない状態だった. この原因かは分らないが Simulation Run の名前が原因で起こる場合があるとのこと. 名前は結果が出てから rename するのが吉らしい.

For some reason the / character in the naming of the Simulation Run 1 m/s was the source of the error. As you can see when the run was renamed Run 2 it worked (so your setup was perfectly fine!)

https://www.simscale.com/forum/t/lego-technic-24-hours-race-car-simulation-project-by-pfernandez/4158/6

y-yosuke commented 8 years ago

タイヤ&ホイールを回転させた結果がダウンロード出来なくても Solver Log に Forces and moments の結果は残っているのでコピペ.

計算合っているのだろうか? Cm から考えるに Cl(f) と Cl(r) が逆なような気もしないでもない Cm が逆なのか? 何か設定が間違っているような気もしないでもない.

forces forces00 output:
sum of forces:
pressure : (196.251288684 -198.050836462 -65.3098265119)
viscous : (16.7956659701 -1.11352759496 0.679483712905)
porous : (0 0 0)
sum of moments:
pressure : (75.8217441964 133.719615886 73.5065703079)
viscous : (-0.0170156293263 9.10674333444 10.8821343082)
porous : (0 0 0)
forceCoeffs forceCoeffs01 output:
Cm = 0.0956212772405
Cd = 0.567681285646
Cl = 0.172212910301
Cl(f) = 0.181727732391
Cl(r) = -0.00951482208985
y-yosuke commented 8 years ago

Lift direction を (0,0,-1) では逆か.Downforce direction じゃないしな. Lift direction (0,0,1) でないと座標系がおかしくなりそうだ. Center of rotation もこれで合っているのか??? 2016-07-19 10 06 24

y-yosuke commented 8 years ago

計算時間の感覚は今のメッシュ 6M nodes ぐらいで 32 cores 使うと次ぐらい?

y-yosuke commented 8 years ago

仮に既出の coefficient の計算は合っているとすると前後の空力バランスがアンバランス過ぎるので何か設計上の対策をしなくてはならない.

検討する点を忘れないうちに書いておく.

Clf と Clr が逆だったとするとリアが 100% 以上なのでこれを重心に合わせる感じで 60〜70% まで落としたい.

Clf と Clr が合っている場合はフロント 100% 以上なのであまりあり得ないような気もするがその場合は...

でも,やっぱ計算の設定が間違っているような気がしてならない.

emijah commented 8 years ago

協力しまーす

y-yosuke commented 8 years ago

ありがとうございまーす. core hours あと 1500h ぐらい残っているのでもう少し先だと思いますが, 使い切る前にメッシュ切り・解析の道筋を確定させます.

y-yosuke commented 8 years ago

Cl が小さいので発生モーメントのほとんどはドラッグが原因説 (Clが小さいのは一応意図どおり?)

y-yosuke commented 8 years ago

これはほとんどがフロントのダウンフォースかもしれない. リアボディーの圧力の感じからすると地面から遠いし,ウィングは低いし角度ないしオーバーハングないしで本当にリアダウンフォースがないかもしれない.

Lift direction を (0,0,1) に直してもう一度解析してまた考えるか,空力デバイスをいじって反応をみるか.

fr-wing_top fr-wing_bottom rr-body_top rr-body_bottom

y-yosuke commented 8 years ago

収束の感じからすると1500回の計算で良いように思う.