流体シミュレーションを行いたいのですが


作り方は教えてください。
どのような、ソフトが最適でしょうか?
ソフトの知識は殆どありませんが、シミュレーションで使う計算はできるものとしてください。

理想は下記のHPのようなシミュレーションです。
http://www-in.aut.ac.jp/~minemura/pub/Flow/BetaFlow/BetaFlow.html

加えて、
・オフラインで作用できること
・フリーソフト、安価なソフトの組合わせで計算できる
・シミュレーションの形状を任意の形に変更できる
・各パラメーターを変更できる

回答の条件
  • 1人2回まで
  • 13歳以上
  • 登録:2011/04/24 22:23:46
  • 終了:2011/04/26 22:30:14

回答(3件)

id:TransFreeBSD No.1

TransFreeBSD回答回数667ベストアンサー獲得回数2682011/04/25 03:27:18

ポイント30pt

一口に流体シミュレーションと言っても多岐にわたります。

熱の移動や影響、気液混合など混相流、非ニュートン流体等々をどこまで考慮するか、それらにより計算量は爆発的に増えますので、目的によっては地球シミュレーターのようなスパコンが利用されています。逆に言えば、用途等から前提条件を設けて単純化したり、局部に絞ってみたり、あと、CG用だったり、また、有限要素法とか粒子法など、それをどう数値解析するかで様々な手法がある様です。

ですので「どのようなソフトが最適か?」と言われても、専門でやってる人ほど答えにくいのではないかと思います。

と、前置きしつつ、リンク先のページ(といってもjavaは実行出来ないのでシミュレーション結果は見てませんが)によると非圧縮粘性流体でリアルタイムでやってるくらいだから、基本的なシミュレーターでOKなのかな?と、素人ですがググって見ました。あと、以下にあげるのは基本的に数値解析部で、別途モデリングや前処理を行うソフト等が必要になると思います。その辺は各ソフトのヘルプやチュートリアルにあるかと思います。


まず二つ。二次元つまり断面のみの物です。いずれも有限要素法によるものの様に思います。例のリンクのものは有限差分法で、その二つがどのくらい違うのかは知りません。

次に、ちょっと違う方向性の、3DCGアニメーションを作成するBlenderというソフトによる方法です。格子ボルツマン法を使用しているようです。

格子ボルツマン法を使ったソフトウェアについては英語版wikipediaにリンクがありました。

次に粒子法によるものです。英語版wikipediaにはソフトへのリンクがありました。CGアニメーションで流体を扱うための他、銀河や星雲等の動きの解析などにも使われているような感じです(その辺は良く分かりません)。

あと、最後に本格的なものを。このレベルになると複数のパソコンやスパコンを使用する分散並列処理に対応していてOSもlinux前提だったりするようです(一部Windows環境でもコンパイル出来たりするようですが)。

id:pomki_chi

ご回答ありがとうございます。

自分の質問がまずかったのですが、ご理解いただき多岐にわたるリンクを付けていただきありがとうございます。

内容としては、家庭用PCで有限要素法をベースにもう一度、勉強したいと考えておりますが・・・

(手の届く範囲なのかどうか(自分の頭がついていくのか)・・・)

シミュレーションとしては、会社では3次元、2次元ともに高価なものを取り扱っているものの・・

もう位置どゼロからやり直したいと思い・・・


今回は

家庭での勉強としての計算をメインとして考えております。


流体シミュレーションにもいろいろあるので

おすすめのソフトやHPを教えていただければと思い質問させていただきました。


BASIC、javaなどを用いたシミュレーションの本など出回っているのですが

流体の場合ですと、各種の計算方法(LESや粒子法)もあり

どの言語のどのソフトで作るべき?PCの制約?(並列計算?スパコン?)わからないことも多々あり


おすすめを教えていただきたいと・・・

出来心で・・・


血迷っているのですが

シミュレーションの本当の理想は地球ごと!宇宙ごと!まとめて計算!!

ですが・・・

技術者としては、いらないものを省いて、軽く!早く!

経験値と理屈、実際と計算が必要なのは分かってきたので、勉強したいなと・・・

2011/04/25 20:41:10
id:Baku7770 No.2

Baku7770回答回数2832ベストアンサー獲得回数1812011/04/25 13:14:41

ポイント30pt

 どこまで流体の数値シミュレーションを理解されているか解りませんが、ターゲットのHPではBFC(境界適合座標系)を使っているため、

>・フリーソフト、安価なソフトの組合わせで計算できる

>・シミュレーションの形状を任意の形に変更できる

 これが実際は矛盾しています。

>ソフトの知識は殆どありませんが、シミュレーションで使う計算はできるものとしてください。

 本当に理解されているのならFreeのFORTRANコンパイラが幾つも提供されていますので、それを利用されてはいかがでしょうか。

http://www.thefreecountry.com/compilers/fortran.shtml

 ただし、例えば圧縮機の数値シミュレーションの草分け的存在であるカッツァニスのようにプログラムらしきものは公開されていますが、そのままでは使い物にはなりません。

id:pomki_chi

ご回答ありがとうございます。

質問文の不足が多く、申し訳ございません

>ソフトの知識は殆どありませんが、シミュレーションで使う計算はできるものとしてください。

勉強として、シミュレーションを行いたいと考えているので

理解は後追いで・・(きっと苦労すると思いますが・・・覚悟の上で・・)

少し調べてみると、FORTRANという物をよく見かけるのですが

やっぱり計算には強いのでしょうかね?

2011/04/25 20:23:33
id:Baku7770 No.3

Baku7770回答回数2832ベストアンサー獲得回数1812011/04/26 00:45:00

ポイント20pt

 #a2です。補足します。

 数値流体計算における有限要素法って、まだメジャーなんですかね?1990年代には廃れたと思っていたのですが。

 

>少し調べてみると、FORTRANという物をよく見かけるのですが

>やっぱり計算には強いのでしょうかね?

 ついにFORTRANもそこまで落ちぶれてしまいましたか(笑)

 1990年代後半でもかなり資産が残っていたりしたものですが。大型計算機が主流だった時代には、COBOLかFORTRANしかなかったですからね。言語自体が数値計算に強いわけではなく、ライブラリが豊富だったんですよ。

 三角関数みたいな関数も標準で持っていましたしね。ライブラリで覚えているのは誤差関数を使ってみたら誤差が大きいので、自分で作り直してみたなんてことがありました。

 現在ならBasicでもある程度の関数は揃えてくれていますので、それはそれでいいと考えます。

 他のコメントにも言及しておきますと、

>どの言語のどのソフトで作るべき?PCの制約?(並列計算?スパコン?)わからないことも多々あり

 特に個人で勉強される分には低価格で入手できることもそうですが、実現にはメモリをどこまで使えるかが重要です。私の諸先輩方が苦労された、1950年代後半から1970年代前半はメモリが使えませんでしたからね。

 ある文献を読んでいたら、「階差法」とあってメモリを大量に使用すると書いてある。解らないから他の学部の先生に聞いてみたら、

「こりゃ差分法だよ。640kなんてパソコンでも積んでいる」

と大笑いされたのを思い出しました。

 並列計算やスパコンは意識されなくても、いいでしょう。形状を詳細に記述して、計算回数を増やした時の逃げ道だとお考え下さい。

 最後に、HPですが「棚橋隆彦」で検索してみると面白いものが見つかります。

id:pomki_chi

ご回答ありがとうございました。

有限要素法による、流体計算は・・・

有限要素法自体がメジャーなので勉強しやすそうという判断基準で、勉強してみようと思ったところです。

そんなに、必要に迫られて、会社に提出するとかそういう話ではないので

資料のおおい計算方法を選んでみました。

おはなし、教えていただいた

「棚橋隆彦」先生の資料も合わせてみると

シミュレーションの発展の歴史そのものもなかなか面白そうですね。

どの程度一般に公開されているのかわかりませんが・・・

いろいろ教えていただきありがとうございます。

2011/04/26 22:28:14
  • id:pomki_chi
    ご回答ありがとうございます。

    質問分が不足しておりました・・・


    ・家庭用のPCで、動く


    を前提としてください。


    回答の途中に”勉強したい”と書いてありますが、それにかかわらず


    ・簡単な入力操作で動く(メッシュをautocad、パラメーターをエクセルで入力とか・・)
    ・解析の結果が見やすい

    とかとか
    おすすめの操作方法や、面白いソフト、HPなど回答していただければ幸いです。







  • id:TransFreeBSD
    ちょっと的が外れていましたね。
    シミュレーターを作りたいという事だと、本格的に作るにはC/C++かFORTRANですね。
    FORTRANは古くから大型の計算機とかスパコンで使われてきた経緯があって、数値計算ではよく使われています。しかし、ほかの分野ではほぼ使われていません。そのため、大規模計算が必要な分野では情報が多いですが、パソコンで使うばあいの情報は少ないです。
    CおよびC++は汎用性が高く高速なので多くのアプリケーションを作るのに使われています。市販CAEソフトもCやC++という場合が多いかもしれません。ただ、汎用的・実用的である分泥臭い事も多く、学習には向かないかもしれません。
    Windowsで実用になるソフトを作るという場合はおそらくC++になると思いますが、いきなりだと途方に暮れるだけのな気がします。
    じゃあどうすればというと、私には本で…としかいえないのでコメントにしておきます。
  • id:pomki_chi
    コメントでも引き続きご回答ありがとうございます。

    将来性とか、知識の流用とか考えると・・・選べなくなるので
    決め打ちで”コレ”ってソフト、計算方法を選ばないといけないと思うのですが
    判断基準(自分の知識)がないので、
    見た目?面白そう?という趣味、嗜好で決めようと思い質問させていただきました。

    ご回答いただき、自分の知識の無さも実感できましたし
    質問の甲斐がありました。



    今後ともどうぞよろしくお願い致します。
  • id:Baku7770
     高額ポイントありがとうございました。

     1990年代前半に東大の月尾先生が講演で仮想風洞という言葉をお使いになられていたのを思い出して、仮想風洞でググってみるとこれでも結構面白い内容が出てきます。
     もっとも月尾先生は流体のシミュレーションは専門ではありませんからね。私の知っている範囲で、国内だと先述の棚橋先生、九大の妹尾先生、東北大の大宮司先生がオーソリティです。

     基本的に数値流体は、境界の流速0という初期条件で微分方程式を解くだけの内容なんですね。で、今回質問文を拝見していて悩んだのが、一体何のシミュレーションをしたいのかなということでした。
     例えば、圧縮機は流体にエネルギーを与える。ターボチャージャーは流体からエネルギーを貰う。となれば、方程式が逆になるんですね。他にも流体が圧縮性なのか非圧縮なのか粘性を考慮するのかと色々な要素を組み入れなければいけません。

     で、問題なのは境界の流速0という条件がありますから、物体の形状をどれだけ正確に表現できるかなんですね。有限要素法だと、格子点で与えるしかありませんので、その点がネックとなります。

     言語は個人ですから、ひとつで良いでしょう。ただし、参考資料に使われている言語との違いは気をつけてください。
     良くあるのが、繰り返しの中で、条件を満たさない場合でも一回は計算するもしくはしないです。

     環境的に例えば国会図書館や、大手大学の図書館が使えるなら、資料は簡単に入手できます。頑張って下さい。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません