タグ付けされた質問 「finite-volume」

有限体積法を使用した偏微分方程式の離散化について説明します。

3
有限要素法と有限体積法の概念的な違いは何ですか?
有限差分法と有限体積法の間には明らかな違いがあります(方程式の点定義からセル全体の積分平均に移行します)。しかし、FEMとFVMは非常によく似ています。両方とも積分形式と平均セルを使用します。 FVMではないことを行うFEMメソッドは何ですか?FEMの背景を少し読みましたが、方程式は弱い形式で書かれていることを理解しています。これにより、このメソッドはFVMとは少し異なる状態になります。しかし、違いが何であるかを概念レベルで理解していません。FEMは、セル内で未知のものがどのように変化するかに関して何らかの仮定をしますが、これもFVMで行うことはできませんか? 私は主に1Dの観点から来ているので、FEMには複数の次元で利点があるのでしょうか? このトピックに関する情報は、ネット上であまり見つけていません。ウィキペディアにはFEMと有限差分法との違いに関するセクションがありますが、それについてはhttp://en.wikipedia.org/wiki/Finite_element_method#Comparison_to_the_finite_difference_methodを参照してください。

3

1
有限体積法を使用する場合、境界条件はどのように適用する必要がありますか?
前の質問から、この不均一な有限体積メッシュに境界条件を適用しようとしていますが、 ドメインのlhs(にロビン型の境界条件を適用したいので、x=xL)バツ=バツL)x=x_L) σL=(dux+au)∣∣∣x=xLσL=(dあなたはバツ+aあなたは)|バツ=バツL \sigma_L = \left( d u_x + a u \right) \bigg|_{x=x_L} ここで、は境界値です。はそれぞれ境界、移流、拡散で定義される係数です。の誘導体であり、境界で評価および、我々が解決される変数です。 A 、D 、U X = ∂ UσLσL\sigma_La,da、da, d UUux=∂u∂xあなたはバツ=∂あなたは∂バツu_x = \frac{\partial u}{\partial x}uあなたはuuあなたはu 可能なアプローチ 上記の有限体積メッシュにこの境界条件を実装する2つの方法を考えることができます。 ゴーストセルアプローチ。 ゴーストセルを含む有限差分としてをします。σ Lが = D U 1 - U 0uxあなたはバツu_xσL=du1−u0h−+au(xL)σL=dあなたは1−あなたは0h−+aあなたは(バツL) \sigma_L = d \frac{u_1 - u_0}{h_{-}} + a u(x_L) A.次に、ポイントおよびを使用した線形補間を使用して、中間値を見つけます。x 1 …

2
非構造化セル中心FVM CFDコードに適したデータ型は何ですか?
非構造化セルベースの有限体積CFDでのセルブラウジングの効率的なデータ構造に関するアドバイスに興味があります。 (ドルフィン cfdコードで)遭遇した1つの例は、このようになります(関連するセグメントを表示します) したがって、各セルの面の数が格納される配列NFacesがあります。次に、ローカルからセルへの面番号をグローバルな面番号にマップするCFace配列。\ begin {listing} do ip = 1、Ncel ... do j = 1、NFaces(ip) k = CFace(ip、j) ipp = Face(k)%cell1 inn = Face(k)%cell2 if(inn > 0)その後 !内部\ end {listing}\ begin {listing} do ip = 1、Ncel ... do j = 1、NFaces(ip)k = CFace(ip、j)ipp = Face(k)%cell1 inn = Face(k)%cell2 if(inn > …

2
有限ボリュームコードのデータ構造:配列とクラス
磁気流体力学(MHD)の有限ボリュームコードを記述する必要があります。以前に数値コードを書いたことがありますが、この規模ではありません。クラスでデータ構造(オブジェクト指向アプローチ)を使用するか、速度、スケーラビリティなどの点で異なるプロパティに複数の配列を使用するか、どちらが良い選択かを尋ねたかっただけです。Pythonでコードを記述し、数値的に集中的な部分にはfortranを使用します。 Pythonのクラスの例は次のようになります class Cell: def __init__(self, x, y, z, U): 配列は単純に次のように定義できます x[nx][ny][nz] y[nx][ny][nz] z[nx][ny][nz] U[nx][ny][nz] 等

3
有限体積の一次風上スキームで非定数係数をどのように扱うべきですか?
保存形式の移流方程式から始めます。 あなたはt= (a (x )u )バツut=(a(x)u)x u_t = (a(x)u)_x ここでは空間に依存する速度であり、uは保存されている種の濃度です。a (x )a(x)a(x)あなたはuu 流束の離散化(流束がメッシュポイント間のセルのエッジで定義される)を与えると、 u t = 1f= a (x )uf=a(x)uf=a(x)uあなたはt= 1h(fj − 12− fj + 12)ut=1h(fj−12−fj+12) u_t = \frac{1}{h}\left( f_{j-{\frac{1}{2}}} - f_{j+{\frac{1}{2}}} \right) 一次風上を使用して、フラックスを次のように近似します。 これは、 ut=1fj − 12= a (xj − 12)あなたj − 1fj + 12= a (xj + 12)あなたjfj−12=a(xj−12)uj−1fj+12=a(xj+12)uj …

3
有限体積法によるポアソン方程式へのディリクレ境界条件の適用
セル中心の不均一グリッドで有限体積法を使用する場合、ディリクレ条件が通常どのように適用されるかを知りたいのですが、 現在の実装では、最初のセルの値を固定して境界条件を課しています。 φ1= gD(xL)φ1=gD(バツL) \phi_1 = g_D(x_L) ここで、は解変数であり、はドメインのlhsにおけるディリクレ境界条件値です(NB)。ただし、境界条件はセル自体の値ではなくセル面の値を修正する必要があるため、これは正しくありません。私が実際に適用する必要があるのは、G D(XのL)のx L ≡ X 1 / 2φφ\phigD(xL)gD(バツL)g_D(x_L) バツL≡ のx1 / 2バツL≡バツ1/2x_L \equiv x_{1/2} φL= gD(xL)φL=gD(バツL) \phi_{L} = g_D(x_L) たとえば、ポアソン方程式を解いてみましょう。 0 = (ϕバツ)バツ+ ρ (x )0=(φバツ)バツ+ρ(バツ) 0 = (\phi_x)_x + \rho(x) 初期条件と境界条件で、 ρ = − 1gD(xL)= 0gN(xR)= 0ρ=−1gD(バツL)=0gN(バツR)=0\rho=-1\\ g_D(x_L)=0 \\ g_N(x_R)=0 (ここで、は右側のノイマン境界条件です)。gN(xR)gN(バツR)g_N(x_R) 数値解がセル変数の値を境界条件値()に固定したことに注目してください。これには、ソリューション全体を上方にシフトする効果があります。多数のメッシュポイントを使用することで影響を最小限に抑えることができますが、これは問題の適切な解決策ではありません。gD(xL)= …

2
微分形式と二次有限体積法の間の関係
今日、微分形式の理論について読んだとき、それが二次有限体積法(FVM)をどれほど思い出させてくれるかに感銘を受けました。 私はこの方法をほんのささいに考えているのか、それとも深いつながりがあるのか​​を理解するのに苦労しています。 さて、微分形式は、表面を通る流体のフラックスのような、2次FVMに深く根ざしたいくつかの概念を一般化するのに役立ちます。次に、(ストークスの)積分定理は微分形式の理論における中心的なオブジェクトの1つです。証明には、多様体上の微分形式の統合が含まれます-シンプレックス(三角形、四面体など)が出現します。マニホールドは実際には、直線エッジのセルを使用して流体が通過する滑らかな形状を表すのと同じ方法でテッセレーションされます。 これらは類似したもののほんの一部です。実際、微分形式について読むと、FVMについて考えるのをやめられなくなったのです。 2次の有限体積法は、実際には微分形式理論の計算による表現を表していますか?

1
不連続ガラーキンスキームのCFL条件
私は、のタイプの保存則の線形システムの解決のためにADER-Discontinuous Galerkinスキームを実装し、CFL条件が非常に制限的であることを観察しました。参考文献では、時間ステップの上限を見つけることができます。ここで、はセルサイズ、は次元およびは多項式の最大次数です。∂tU+ A ∂バツU+ B ∂yU= 0∂tU+A∂xU+B∂yU=0\partial_t U + A \partial_x U + B \partial_y U=0 時間DNΔのT ≤ Hd(2 N+ 1 )λmは、XがΔt≤hd(2N+1)λmax\Delta t \leq \frac{h}{d(2N+1)\lambda_{max}}hhhdddNNN この問題を回避する方法はありますか?私はWENO-ADER有限ボリュームスキームを使用しており、CFLの制限ははるかに緩和されました。たとえば、5次のスキームでは、DGを使用する場合は0.04未満のCFLを課す必要がありますが、WENO-ADER FVスキームではCFL = 0.4を使用できます。 たとえば、計算空気力学(線形化オイラー方程式)または同様のアプリケーション(ガス力学、浅水域、電磁流体力学)で、ADER-FVではなくDGスキームを使用する理由は何ですか。スキームの全体的な計算コストは​​、はるかに低いタイムステップにもかかわらず、ADER-FVの計算コストと同じですか? これについての考えや提案は大歓迎です。

2
不均一メッシュ(1Dのみ)有限体積法でポアソン方程式を解くときの固有のエラー
私は最後の数日間このエラーをデバッグしようとしましたが、続行する方法について誰かがアドバイスを持っているかどうか疑問に思いました。 未知のものがセルの中心で定義され、セルの面でフラックスが定義されている不均一な有限体積メッシュ上のステップ電荷分布(静電/半導体物理学における一般的な問題)のポアソン方程式を解きます。 0=(ϕx)x+ρ(x)0=(ϕx)x+ρ(x) 0 = (\phi_x)_x + \rho(x) 電荷プロファイル(ソース項)は、 ρ(x)=⎧⎩⎨−1,1,0,if −1≤x≤0if 0≤x≤1otherwiseρ(x)={−1,if −1≤x≤01,if 0≤x≤10,otherwise \rho(x)= \begin{cases} -1,& \text{if } -1 \leq x \leq 0\\ 1,& \text{if } 0 \leq x \leq 1\\ 0, & \text{otherwise} \end{cases} 境界条件は、 ϕ(xL)=0∂ϕ∂x∣∣∣xR=0ϕ(xL)=0∂ϕ∂x|xR=0 \phi(x_L)=0 \\ \frac{\partial\phi}{\partial x}\bigg|_{x_R}=0 ドメインは、。[−10,10][−10,10][-10,10] 私は移流拡散反応方程式を解くために開発されたコードを使用しています(ここで自分のノートを参照して自分で書きましたhttp://danieljfarrell.github.io/FVM)。移流拡散反応方程式は、ポアソン方程式のより一般的なケースです。実際、移流速度をゼロに設定し、過渡項を削除することで、ポアソン方程式を復元できます。 このコードは、均一、非均一、ランダムグリッドのさまざまな状況でテストされており、常に、移流拡散拡散方程式の合理的なソリューション(http://danieljfarrell.github.io/FVM/examples.html)を生成します。 Ω8Ω8\Omega_8Ω9Ω9\Omega_9 この問題を引き起こしている可能性のあるアイデアは何ですか?離散化に関する詳細情報が役立つかどうか教えてください(この質問にあまり詳細を詰め込みたくありませんでした)。

1
CFDのハイブリッド空間スキーム:ブレンディングとスイッチングの欠点?
特定の領域で両方の流束を計算する必要があるために余分な計算コストが発生することを除いて、有限体積法でハイブリッドスキームの2つの流束評価をブレンドすることには欠点がありますか?フラックス評価は次のようになります。 Fi + 12= Λi + 12Fci + 12+ (1 - Λi + 12)Fあなたi + 12Fi+12=Λi+12Fi+12c+(1−Λi+12)Fi+12u\mathbf{F}_{i+\frac12} = \Lambda_{i+\frac12} \mathbf{F}^c_{i+\frac12} + (1 - \Lambda_{i+\frac12}) \mathbf{F}^u_{i+\frac12} スイッチは、アプリケーションに応じて、圧力および/または密度勾配センサーに基づいています。は中心的なスキーム(McCormack、compactなど)であり、F uはMUSCL再構成によるフラックス差分分割のような風上スキームです。私は連続関数を使用して2つの方式をブレンドしていた場合にすべての問題は保守的な性質、数字の面であるΛ単純でスキームを切り替えるとは対照的に、Λ 0または1のいずれかとして評価さ?FcFc\mathbf{F}^cFあなたFu\mathbf{F}^uΛΛ\LambdaΛΛ\Lambda

1
OpenFoamとFiPy
私が取り組んでいるプロジェクトの有限ボリュームの自動化ソリューションパッケージを学習して利用する必要があり、それをこれら2つのパッケージに絞り込みました。両方のパッケージの経験があり、比較についてコメントできる人がいるかどうか疑問に思っていました。両方のパッケージの同様の目標を考えると、オンラインで比較する方法があまり見つからないことに少し驚いています。 私の感じでは、FiPyはPythonベースなので学習/実装が簡単ですが、OpenFoamは広く採用されているため、より堅牢で機能が豊富なのではないでしょうか。どちらのパッケージにも、非常に信頼できる組織があります。

1
rotheの方法と線の方法によるPDEの離散化(モジュラー実装)
熱方程式は、FV(またはFEM)を使用して空間で離散化され、半離散方程式が得られます(ODEのシステム)。行の方法と呼ばれるこのアプローチでは、コードを重複させることなく、一時的な離散化から別の離散化に簡単に切り替えることができます。特に、ODEのタイムインテグレーターを簡単に再利用できます。これは、空間離散化をFVからFEに変更することを決定した場合でも、半離散方程式を取得し、時間積分器が機能するため、非常に便利です。 現在、私は同じ問題に対してrotheの方法を実装しようとしています。ただし、時間内での離散化では、まず、使用したいすべての時間的離散化スキームの空間的離散化を書き換える必要があります。これにより、以前使用していたタイムインテグレーターを再利用する必要がなくなり、線の方法またはRotheの方法の両方を使用してPDEを離散化できるモジュラーソフトウェアの作成が非常に複雑になります。 コードを複製せずに両方のアプローチを実装する方法はありますか? 編集: 対流が支配する問題では、FEの離散化には時間と空間の両方で安定化が必要であり、Rotheの方法が「最良の」選択になります。ただし、これはFV / DGメソッドには当てはまりません。 線の方法では、PDEはまず空間で、次に時間で離散化されます。Rotheの方法では、PDEは最初に時間で離散化され、次に空間で離散化されます。3番目の可能性は、空間と時間の両方を同時に離散化することです(時空間離散化とも呼ばれます)。線の方法とRotheの方法についての議論はここにあります。詳細については、DoneaとHuertaによる「フロー問題の有限要素法」という本が参考になります。
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.