• ベストアンサー

有限体積法を利用するメリット

CFD初心者です. 一次元の熱の拡散の計算など(dT/dt=K*d^2T/dx^2)の場合,時間項は前進差分,拡散項は中間差分で解くことが一般的なようですが,熱流動関連の参考書を見ますと,熱流動の場合は差分法ではなく,有限体積法で解くのが一般的のようです. が,そもそも有限体積法と,通常の差分法との違い,なぜ,差分法ではいけないのかが,いまいち,クリアにわからず,混乱気味です. 教えていただけませんでしょうか.お願いします.

質問者が選んだベストアンサー

  • ベストアンサー
  • tera_tora
  • ベストアンサー率50% (145/285)
回答No.1

おっしゃるとおり、差分法では、そのような方法で解くのが一般的でしょう。ちなみに有限体積法を用いても差分法を用いても別にどちらでも構いません。解法が正しく機能する形であればどちらでも良いでしょう。ただ、汎用CFDソフトやソースコードなどは有限体積法を採用しているところが多いように気がします。工学分野では、経験的に有限体積法を選択するところもあります。それに習って有限体積法という空気があるのではないでしょうか。 簡単に言ってしまえば有限体積法は積分形式の方程式を離散化したもので、差分法は微分形式の式を離散化したものです。質量保存、NS方程式、エネルギ保存式などは基本的に微分形式で書かれることが多いので差分法のほうがイメージとして結びつきやすいように思います。 有限体積法の基本書としてパタンカー著(水谷先生訳)の「コンピュータによる熱移動と流れの数値解析」が基本書のようです(自分は差分法を使うので有限体積法のすばらしい良い本というのはよく知りませんが、少なくともこの本は読みました)。差分法の本はいっぱいあると思いますので、敢えてここでは紹介しません。もし詳しく知りたいのであれば東京大学出版が出している「数値流体力学ハンドブック」などを参考にされ、引用文献を取り寄せてみてはいかがでしょう?

asa_hikawa
質問者

お礼

ありがとうございました. 流れのシミュレーションの本は数冊,図書館で探したのですが,皆が皆,同じような方法で解いているわけではないようで,何をどうすれば対象領域の流れが解けるのか,疑問の連続でした. まずは,「コンピュータによる熱移動と流れの数値解析」を手元に基礎を勉強します.

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • 拡散方程式の数値計算(有限差分法)による解き方

    下記の拡散方程式を数値計算(有限差分法)で解き方について教えてください。 拡散方程式 D∂^2C(x,y,t)/∂x^2+u∂C(x,y,t)/∂x=∂C(x,y,t)/∂t 境界条件 D∂C(x,y,t)/∂x=(K/β-u)×C(x,y,t)-KC'(y,t) at x=0 初期条件 C(x,y,0)=Co at t=0 質量保存則 ∂C'(y,t)/∂y=4/vd(K/β×C(0,y,t)-KC'(y,t) ) ---------------------------------------------------------- また、可能であれば、有限差分法以外にも数値解法(有限要素法、有限体積法など)があると思いますが、拡散方程式を解く場合、どの解法が一般的に適しているのか教えてください! よろしくお願い申し上げます。

  • 流体解析(ナビエ・ストークスでベナール対流の非定常解析)について

    連続の式,Navier-Storksとエネルギー方程式をHSMAC法にてベナール対流の非定常解析をしていますが、困っています。二次元、縦横比8:1の長方形領域にて、左の加熱面付近が”振動”しているようなのです。これが原因で非対称となり、時間が発展すると渦が奇数個になってしまいます。離散化はEular陽解法、移流項は一次風上差分、拡散項は中心差分を行っています。2次元の移流拡散方程式(移流項は中心差分)の安定条件は満たすようにDTを決めています。どうればよいでしょうか。

  • 熱伝導の有限要素法

    下の問題なのですが、資料が英語という事もあってどう手をつけてよいかすらまるで分かりません。 以下の熱伝導問題の有限要素式を導け。壁は熱伝導率係数がkA,kBの2つの物質A,Bから成る。内部発熱Qは両方の物質の中で起こる。境界条件はx = 0でT = 0,x = 2LでdT/dx = 0。未知の温度のT1,T2,T3を持つ2つの1次要素と以下の関数の最小化を使う。 Π = ∫[L](1/2)k(dT/dx)^2dx - ∫[L]TQdx [L]は積分区間 x = 2LでdT/dx = 0は自動的に満たされる。 原文は英語なのでおかしな訳があるかもしれませんので、原文と図付きの画像を添付しました。 どなたかご回答よろしくお願いします。

  • 数値解析の刻み幅

    偏微分方程式を数値解析にて解く場合, 差分法を使って解こうとすると, dtやdxを設定してやる必要があると思います. たとえば, δa/δt = -δa/δx + a*cos(x) + (a^2+b^2)*a δb/δt = -δb/δx + b*cos(x) + (a^2+b^2)*b っていう方程式を解こうと考えた場合, (仮に初期条件を孤立波としておく) とりあえず線形項を考慮して,dt/dx<<1 は満たす必要があると思いますが,非線形項を含む場合は どのようにdtやdxを決定してやればいいのでしょうか? dxは小さければ小さいほど良いというのは聞いたことがあるのですが・・・ テキトーに決定してやるのでいいのでしょうか?

  • 数値解析の手法(差分法)について

    現在、とある2元の1階偏微分方程式(解はu,vでそれぞれ右と左に進行する波)を数値解析によって解こうと考えています。 数値解析の手段として、差分法がよく用いられると思いますが、 現在、私は、場所に関してはuは後退差分、vは前進差分を使い、 時間に関しては前進差分を使って解いています。 ネットでは場所に関しては中心差分、時間に関してはルンゲ=クッタやリープフロッグなどが 使われていることが多く、私もこの2つを用いて解いてみました。 偏微分方程式には線形項が含まれていたため、 線形問題に対する制約であるΔt/Δx << 1は最低満たすように刻み幅をいろいろ取り、 計算時間も辞さず計算機を動かしてみましたが、 ノイズが消えず、解析解に限りなく近づくには至りませんでした。。 Δt/Δx=0.0001なども試したのですが・・・ そこで、諦めて違う差分法を試し、 場所に関して、uは後退差分、vは前進差分を使い、 時間に関しては前進差分を使って見たところ、 Δt/Δx=0.01程度で解析解に近い、なかなか精度の良い数値解を得ることが出来ました。 2次の差分では上手くいかず、1次の差分だとわりかし上手くいく・・・ 精度的には中心差分やルンゲ=クッタなどの方がいいと思うのですが・・ 正直不思議でなりませんでした。。。 最初に試した差分法のコードミスかと思い、何回もコードを確認し直しましたが、 やはり解析解に近づくには至りませんでした。 こんなことってあるのでしょうか?? 差分法でも場合によって使い分ける必要があるということでしょうか・・? その場合分けするときの指標など、知っておられる方、教えて頂けると助かります。 問題によって

  • 熱伝導方程式を差分法で解くプログラム

    前回熱伝導方程式の差分法の解き方について質問させて頂いたものです。 https://sp.okwave.jp/qa/q9363032.html 回答ありがとうございました。おかげさまで差分法で解くプログラムを書くことができました。 書けたのは良いのですが、間違っている可能性が大きいです。 私の考えでは、安定性条件を満たしていれば dt,dxを小さくすればするほど、収束温度は変わらず計算精度が高くなっていくと思ったのですが、 私の書いたプログラムではdxdtの値を変えると収束温度まで変わってしまいます。 プログラムに関しても初心者なので説明が難しいのですが、やはり収束温度が値によって変わるということはプログラムがどこか間違っているということでしょうか。 度々すみませんが、回答いただけるとありがたいです。よろしくお願いいたします。

  • n次元の体積の求め方

    n次元ユークリッド空間で、   x1≧0, x2≧0,… xn≧0, x1+x2+…+xn ≦ a (aは正定数) を満たす領域の体積を考えます。私はこれを   ∫(0~a)dxn∫(0~a - xn)dxn-1 …∫(0~a -(xn+…+x2))dx1  =∫(0~a)dxn∫(0~a - xn)dxn-1 …∫(0~a -(xn+…+x3))dx2(a -(xn+…+x2))  =…  =a^n/n! として求めました。(http://oshiete1.goo.ne.jp/kotaeru.php3?q=1057646参照) n=2, 3 の場合にこれが正しいことは容易に確かめられます。自分の回答のことで無責任ですが、一般のnの場合になぜこのような積分で体積が求められるのでしょうか。また、被積分関数が1でないなら積分も必要と思いますが、被積分関数が1の場合は単なる体積です。積分を使わずにこの体積を幾何学的に直感的に説明する方法はないのでしょうか。

  • 物理シミュレーションにおける有限要素法について

    物理シミュレーション技法に有限要素法というものがあります。私は有限差分法とか境界要素法でのプログラミングの経験はありますが、有限要素法はありません。勉強中です。 そこで1つ教えて頂きたいことがあります。方程式に加速度項がある、すなわち動的な問題を考えています。加速度項はすなわち、質量×加速度=力ということで、質量と関連しています。 そこで、加速度項には質量行列というものができます。(このあたりは込み入っているので原理を理解している方・経験者の方への質問となりますが) この質量行列は対称行列になりますが、対角行列ではありません。ところが、突然その質量行列を対称行列に変えて(質量集中行列という)それを使って計算するという風になってしまいます。 えっ?何故?と問いたくなりますが、経験的にそれでよい、場合によってはその方がいい結果が出るなどと説明されています(説明ではなく説得)。ネットに出ている資料では有限要素法は経験学問であり、実績としてそれがいい結果を出しているなどと書いているのです。対角行列の方が取り扱いが簡単になり、結果が早いだろうというのは想像できます。メモリも大量に必要ないですし。対角行列だったらすでに行列計算の必要はなく、ちょっとした割り算で答えが出てしまいます。 このようなこと(対角行列での置き換え)が可能なことを何らかの演繹的な説明なしに受け入れるのは難しい感じがします。どのように理解すればいいのでしょうか。こだわりがないとラクになるのですが、変だなと思って先に進むのをためらっています。システム全体の対角化だったら分かりますが、質量行列だけ対角化したものを使うということです。 少し調べると、”それ(質量集中行列化)が問題だから、このような(いろいろテクニックを駆使)工夫をした”、というような文献も出てきます。私は質量集中行列化はFEMの原理を理解する上で大いに問題だと思っているのですが。 込み入った質問で申し訳ありませんが、回答をよろしくお願いします。

  • 方程式の無次元化と差分法

    数値計算の無次元化(規格化)でわからないところがあるので、おわかりになる方がいらっしゃいましたら、お教えいただけないでしょうか。 ナビエストークスなどを無次元化する際に、代表的な値として、 空間スケールL、速度V、圧力P、密度ρを導入するとします。 その結果、無次元化された方程式を得ることができると思います。 無次元量をチルダを用いて表すことが多いと思いますが、チルダを取ると、見た目には無次元化の前後で変わりがない場合がありますよね。 その場合の差分法についてがちょっとわからないのです。 例えば、L=10[km]とします。 また、j番目のグリッドは x_j = j dx と表せると思います。このときx_j = 1というのはx_j = L = 10 [km]であり、j = 10の時dx = 0.1、すなわち解像度は1kmという考えで良いのでしょうか? x_j = j dx でdx = 1という場合は、解像度dx = 10[km]ということですよね? 物理学でよく半値幅で規格化する、という言葉を聞くのですが、わからなくなってしまって.... 例えばL = 10[km]で規格化した場合かつdx = 1だった場合はx_j = j dx = 10 * 1=10 = 100[km]ということになるのでしょうか。 無次元化しなくても良いじゃないかというご意見もあるかと思うのですが、私の理解が正しいかどうか、お教えいただけますと幸いです。 よろしくお願いいたします。

  • 微分の問題です、助けてください。

    参考書に、答えが[略]になっていて困っています。 問題は、 「x=at^4 に対して、3つの差分の違いを調べて見なさい。 (1)前進差分を求めなさい。 (2)中心差分を求めなさい。 (3)後進差分を求めなさい。 (4)Δt→0 では、3つの差分はどれも等しく、微分dx(t)/dt に収束することを見なさい。 (5)0<Δ≪1のとき、微分からの誤差がもっとも小さいのはどの差分であるか。」 という問題でした。答えを教えてください! 私は、数学が苦手で、答えだけを見てもわからないことが多々あるので、できれば、式の過程や、説明を教えてくれるととても助かります。 よろしくお願いします。