層流
目次
はじめに
流体の解析と挙動は科学と工学において基本的な重要性がある.このモノグラフでは偏微分方程式を使った流体のモデル化の基本を紹介する.流体力学解析を行うのに必要な方程式および境界条件を導出し説明する.
流体はそれぞれ空気や水のような気相および液相の物質である.「流体」という言葉は液体と気体の両方を包含する.流体の反対は固体であり,その違いを示す特性は流体は静止時にせん断力に抵抗できないということである.流体は容器の形になる.流体と固体の間の境界線は必ずしもはっきりとはしていない.例えば,アスファルトは通常固体と考えられるが,長時間経つと流体のように振舞い始める.
これら3つの流れの様式の違いは,慣性力と粘性力の比であるレイノルズ数 で与えられる.これは流体流れに乱流が生じるかどうかを予測するために使われる.乱流は大きいレイノルズ数で特徴づけられ,層流はレイノルズ数が小さいときに発生する.クリープ流という言葉は非常に小さいレイノルズ数を持つ流れに使われる.レイノルズ数の概念は後でより詳しく説明する.また,レイノルズ数が大きいまたは小さいということは何を意味するのかについても触れる.
偏微分方程式(PDE)を使って流体をモデル化することだけが流体のモデル化の方法ではない.他の方法として常微分方程式(ODE)を設定するというものがある.Wolfram System Modelerではこのアプローチに従っている.大雑把に言うとSystem Modelerのアプローチは管の中の流れのような大きな流れの系の相互作用により適しており,偏微分方程式のアプローチは特定の流体流れ挙動の細かい解析に適している.両方のアプローチを組み合せて使った方がよい場合もある.
ここで取るアプローチは,入門セクションでは単独の流体流れであるドリブンキャビティ流れの例を使って,利用できるさまざまな流体流れの解析タイプ機能を紹介する.その後で根底にあるアイディアと概念をより理論的に説明する.理論的背景は,さまざまな解析タイプに対する直感ができるとより理解しやすくなる.それから利用可能な境界条件を説明する.
流体解析の目標は,制約条件下の流体のベクトル値の流速を求めることである.他に,非圧縮性流体と圧縮性流体のどちらを考えるかによって,それぞれスカラー圧力場やスカラー密度場を求めるということもある.流体挙動の解析と解釈は問題となる流れ挙動についてよりよい品質の工学設計を行うのに役立つ.例えば物体のある部分では十分な流れがないことがある.このような部分を特定し改善することができる.
流体解析は通常段階を追って行われる.まず,流体が流れる物体では,幾何学的モデルを作成する必要がある.幾何学的モデルは通常コンピュータ支援設計(CAD)プロセスで作成される.CADモデルはインポートすることも製品内で作成することもできる.形状をインポートする場合,DXF,STL,STEP等の一般的なファイル形式がサポートされている.これらの形状はImportでインポートすることができる.他の方法として,例えばOpenCascadeLinkを使って製品内で幾何学的モデルを作成するというものがある.幾何学的モデルが使えるようになると,どのような解析を行うかを考える必要がある.現在サポートされている解析タイプは静的で時間依存の流体解析である.次のステップは境界条件と制約条件の設定である.問題となっている流体の材料特性によってさらにPDEモデルが指定される.PDEモデルが完全に指定されると,それに続く有限要素法が調査中の所望の数量を計算する.その後この数量は後処理される.可視化されることもあれば導出される数量が計算されることもある.このノートブックはCADモデル生成以外のすべての必要なステップを示す.
そのようなモデリングプロセスは最終的にNDSolveおよびParametricNDSolveで解くことのできるPDE系になる.
このノートブックで示すシミュレーション結果のアニメーションの多くはRasterizeを呼び出して生成されている.これによってこのノートブックが必要とするディスク容量を減らしている.欠点は,アニメーションの視覚的品質が呼び出さない場合よりも劣るということである.高品質のグラフィックスが入手したい場合は,Rasterizeの呼出しを削除するかコメントアウトするかするとよい.
このチュートリアル全体で使われている記号とそれに対応する単位は用語集セクションにまとめてある.
このノートブックで示すシミュレーション結果のアニメーションの多くはRasterizeを呼び出して生成されている.これによってこのノートブックが必要とするディスク容量を減らしている.欠点は,アニメーションの視覚的品質が呼び出さない場合よりも劣るということである.高品質のグラフィックスが入手したい場合は,Rasterizeの呼出しを削除するかコメントアウトするかするとよい.
このチュートリアル全体で使われている記号とそれに対応する単位は用語集セクションにまとめてある.
概要的な例と解析タイプ
このモノグラフは,実際の方程式や理論よりもワークフローを重視する概要的な例から始める.この例では細い管の中のグリセロールの流れを考える.
従属速度変数 , はそれぞれ 方向, 方向の変位を表す. は圧力である.
ここで化学実体を使う.その代りに材料特性を指定することもできる.
方向の流入速度は境界条件で規定される.これは 従属変数の流入プロファイルを領域の左側に指定することで行える.領域の下と上の部分には壁面境界条件を指定する.これを行うためには,これらの部分の および 成分を0に設定する.領域の右側には流出条件を設定する.ここで圧力 は任意に0に設定する.一般にそれぞれの従属変数にはディリクレ条件かロビン型ノイマンを指定する.ノイマン0のような純粋なノイマン値では不十分である.この場合方程式の解は定数までしか正しくない.
速度が圧力よりも高次で補間されると安定解が見付かる.NDSolveを使うと,それぞれの従属変数の補間次数が指定できる.ほとんどの場合"InterpolationOrder"の指定は必要ではないが,流体流れに有限要素法を使う場合はこれが標準的な方法であり,Wolfram言語ではこのように行う.この設定はP2P1型またはQ2Q1型の要素と呼ばれるものに対応しており,これらの要素はTaylor–Hood(テイラー・フード)要素としても知られる."InterpolationOrder"を使わないと,すべての変数に対して二次補間を使うことになり,不安定性につながる.
多くの場合メッシュを生成する必要はなく,形状をソルバに渡すだけで十分である.
これがワークフローの概要である.次のセクションではそれぞれのステップをもう少し詳しく説明する.
定常解析
このドリブンキャビティの例では,流体力学の古典的なベンチマークを調べる[6].矩形領域が流体で満たされている.上部にはコンベアーベルトのように,正の 方向に一定の流速で流体を流す装置がある.残りの辺は壁面であり滑りなしの条件を持つ.滑りなしとは壁面協会の速度が 方向と 方向の両方で0ということである.左下角には基準圧条件がある.
流体で満たされた矩形領域で,上部は 方向に速度 で流れる.他のすべての辺は壁面であり,滑りなし境界条件()が設定されている.
このドリブンキャビティは時間非依存の定常モデルとしてモデル化される.従属速度変数 と ,従属圧力変数 を設定する.独立変数は空間変数の と である.
標準的なテキストではこの例をさまざまなレイノルズ数 を使って提示している.他のすべてが同じままだと,レイノルズ数 の値だけによって流れのパターンが変化する.
基準圧点は「穏やかな」部分,つまりおもしろい挙動から離れた部分に適用する.
返された解は, 方向の速度プロファイルである 速度プロファイル, 方向の速度プロファイルである 速度プロファイル,圧力分布 を制約する.解を可視化する方法はいくつかある.
NDSolveに与える"InterpolationOrder"メソッドオプションは,両方の速度が2次で補間され圧力が1次で補間されることを指定する."InterpolationOrder"オプションの指定は,有限要素でテイラー・フード要素として知られるものと同等であり,解の安定化に役立つ.残念ながら特定のPDEに対してこのオプションを自動的に設定する方法はないので,FluidFlowPDEComponentのようにナビエストークス方程式に基づく流体流れPDEについてはこのオプションを設定するようお勧めする.
後処理
一般的な可視化テクニック
計算された圧力はスカラー場なので,他のスカラー場のように可視化することができる.これを可視化するには等高線プロットまたは密度プロットが向いている.
速度場はベクトル値場である.ここではベクトルプロット,流線プロット,線積分畳み込みプロットが可視化に向いている.
パラメトリック解析
次のステップとして,さまざまなレイノルズ数に対する流れ場を比較する.ParametricNDSolveはNDSolveと同じように使えるが,パラメータを指定することができる.パラメータに数値を入れると,ParametricNDSolveは数値解を計算する関数を返す.この場合はレイノルズ数をパラメータとして使う.
NDSolveを使った前の例では,{uVel,vVel,pressure}の形式のリストに解を保存した.ここではすべてのシミュレーションの解を変数 solutions に保存する.解のベクトルのそれぞれの項目には 場, 場,圧力 の補間関数が含まれている.
レイノルズ数が大きすぎると,PDEが非常に強非線形になるため,非線形PDEの収束が妨げられる.FindRootはNDSolve内で非線形方程式を最終的に解く関数なので,収束の失敗は通常FindRootからのメッセージで知らされる.しかし望みがないわけではない.モデルが収束する範囲を拡張するために取る手段がいくつかある.
収束の失敗を回避する方法はいろいろあり,セクション「流体流れモデルの収束」で説明してある.ここでは解析に使われるメッシュを詳しく見てみる.上の例ではメッシュは自動的に生成された.一つの方法は,手元の問題により適したメッシュを使うことである.「より適した」というのは手元の問題によって異なる.この例では 速度場と 速度場の勾配は上部と右側壁面で最も大きい.
ここで生成するメッシュは,急勾配においてより細かい解像度を持つことによって急勾配を反映する.流れ勾配が壁面で高くなるのを見ると,それを向上する可能な方法はグレーデッドメッシュを使うことである.これは関数ToGradedMeshを使って行うことができる.これにより境界での微調整をしながら全体的な要素数をそれほど増やさないでおける.MeshRefinementFunctionを使う等の別の調整方法も使える.メッシュ生成処理についての詳細は「要素メッシュの生成」チュートリアルに記載されている.
勾配メッシュでは,全体的な要素数を減らすと同時に壁面付近の要素密度を増加させた.
アニメーションの品質を向上させる方法についてはこちらをご覧いただきたい.
ドリブンキャビティは一般的な流体力学のベンチマーク問題[6]なので,数値シミュレーションを比較する文献データが存在する.
ドリブンキャビティの例におけるより大きいレイノルズ数の計算は「流体流れモデルの収束」セクションを参照のこと.
時間依存解析
次のワークフローの例として,時間依存のドリブンキャビティの例を解く.ここでは流体は最初静止しており,駆動装置は時間とともに強化される.その他はすべて同じままである.
流入境界条件が初期条件と一貫するようにするために,時間経過とともに流入をスムーズに増加させるヘルパー関数を作成する.
アニメーションの品質を向上させる方法についてはこちらを参照されたい.
方程式
流体流れのシミュレーションを行う場合の最初のステップは,どのフローレジームが想定されるかを分類することである.このために流れ挙動のさまざまな面を捉える特性数を使う.一つの特性はレイノルズ数 で行われる.レイノルズ数は流体の内部力の粘度に対する割合である.
ここで []は動粘度, []は密度, []は典型的な流速, []は代表長さである.レイノルズ数はおおよそどのようなタイプの流れが想定できるかを示してくれる.
の流れはクリープ流れレジームである.レイノルズ数が 等と大きい場合の流れでは,乱流となり得る.どのレイノルズ数で流れが層流から乱流に変化するかは,その流れの指定による.例えば管の中では で乱流になる可能性がある.それとは逆に平板上の流れは で乱流になることがある.
水と比べ,蜂蜜は粘性流体である.流体の粘性が大きいほど,層流挙動を示す可能性が高い.一方気体は粘性が低いためレイノルズ数は無限に近付く.したがって,ほとんどの分野では気体は非粘性と考えられている.つまり簡単に言うと気体の粘性は0と想定される.気体は非粘性流体とも呼ばれる.しかしこのような想定が不可能な分野もある.
粘性層流はナビエストークス方程式というベクトル値の方程式の組で記述される.広範な流体流れ現象は,層流以上でさえもナビエストークス方程式で記述することができる.ナビエストークス方程式は流体力学において包括的な方程式である.ナビエストークス方程式は偏微分方程式の集合であり,関心の対象となっているフローレジームによってさまざまな形式で存在する.
非粘性流れはオイラー方程式で記述することができるが,ここでは扱わない.
ナビエストークス方程式は運動量方程式と連続方程式の組合せである.
圧縮性流体流れの運動方程式は粘性応力テンソル (単位は[])で表されるベクトル値の方程式である:
粘性応力テンソル の定義を運動方程式に挿入すると以下が得られる:
ナビエストークス運動方程式の形式の中には以下のような第二粘度または体積粘度と呼ばれる追加の項 を含む場合がある:
運動方程式の単位は,単位[]の力密度である.運動保存は実質的に流体についての運動の第二法則である.これは方程式を少し並べ替えると分かる:
運動方程式はほとんどの場合,質量保存を記述する質量連続方程式と一緒に解く:
ここで密度 は従属変数であり流体流れ速度ベクトルは である.
ナビエストークス方程式は,領域の最小の幾何学的特徴が流体の分子の平均自由行程よりずっと大きい場合のみ有効である.
ナビエストークス方程式は圧縮性,弱圧縮性,非圧縮性の流れに使える.弱圧縮性の流れとは,密度に対する圧力の依存性が無視でき,基準圧力で評価されるものである.
質量密度 の定数値では,質量連続方程式は体積連則方程式 に簡約され,それによって粘性応力テンソルは に簡約される. が定数のとき,発散は なのでを と書くことができる.
成分形式で書いた非圧縮性ナビエストークス方程式は以下で与えられる:
ニュートン流れと非ニュートン流れ
非ニュートン流体の粘性は適用される力で変化する.水や蜂蜜等のニュートン流体の場合,粘性は水をどのくらいかき混ぜるかによって粘性は変化しない.非ニュートン流体では,攪拌の量で粘性が変化する.材料によっては混ぜられると混ぜにくくなるものもあれば混ぜやすくなるものもある.実際すべての気体およびほとんどの液体はニュートニアンと考えられる.非ニュートン流体にはペンキ,血液,水とでんぷんの混合液,液体ポリマー等がある.
次のセクションでは,さまざまな非ニュートン流体流れモデルを紹介する.まず圧縮性ナビエストークス方程式の変形を始める:
ここで単位[1/s]のひずみ速度テンソル を定義することができる:
このひずみ速度は固体力学で定義した微小ひずみ測定によく似ている.固体力学では従属変数 は単位[m]の変位であり, は微小ひずみを定義する.流体力学では従属変数 は単位[m/s]の速度, はひずみ速度テンソルである.ひずみ速度テンソルは速度テンソル,ひずみテンソルと言われることもある.
ニュートン流体の粘性応力テンソル (単位[Pa])は以下である:
非ニュートン流体では応力ひずみ速度関係は非線形である.この非線形性は見かけ粘度 で表すことができる.見かけ粘度はせん断速度 (単位は[1/s])の関数である.見かけ粘度 は実効粘度とも呼ばれる.
簡単にするために,一般性についての制約することなく, 項のない非圧縮性非ニュートン流体を仮定すると以下が得られる:
せん断速度を計算する関数は次のように実装され,PDEModels`コンテキストの中にある:
ShearRate[strainRate_] :=
Sqrt[2 * TensorContract[strainRate * strainRate, {{1}, {2}}]];
動粘度は温度と圧力に依存することがあり,非ニュートン流体では動粘度はさらにせん断速度にも依存する.
さまざまな非ニュートン構成モデルを使って見かけ粘度 を表す.以下の非ニュートン流体流れモデルを実装する:
以下で示すモデルにはすべてパラメータ pars に"FluidDynamicsMaterialModel"の項目が必要である.
ベキ乗則
ここで はデフォルトの動粘度 になる因数である.基準せん断速度 はデフォルトの1 [1/s]である.デフォルトの最小せん断速度 は [1/s]に設定される.スカラー は指数である.のとき,ニュートン流体が得られベキ乗則が一般化ニュートン流体モデルを実装する.のときはせん断減粘流体(擬塑性流体とも呼ばれる)となる.ペンキ,血液,ケチャップはこのカテゴリに属する.のときは,せん断増粘流体(ダイラタント流体とも呼ばれる)となる.せん断増粘流体の例としては,水とコーンスターチの混合液や流砂がある.
ここで使うモデルは文献で通常みられる元のは少し異なっている.もとのモデルはせん断速度がゼロになるときの粘性無限大を予測する.実際の流体では,せん断速度は一定値 になりやすい.もとの式のこの欠点を避けるための式がここで与えたものである.ベキ乗則の欠点はニュートンのプラトーが記述できないことである.Carreauモデルではできる.
ニュートン流体のせん断増粘流れとせん断減粘流れについてのひずみ速度とせん断応力の比較.
せん断減粘流体では,ひずみ速度が増大すると見かけ粘度が減少し,せん断増粘流体ではひずみ速度の増大で見かけ粘度が増大することが分かる.
非ニュートン流体に対するベキ乗則モデルの実際の実装は以下に示す通りである.このモデルの構築方法は,他のニュートン流体モデルの構築の例として使うことができる.
ApparentViscosity["PowerLaw", vars_, pars_, data__]:=
Module[
{model, strainRate, shearRate, m, apparentViscosity, minShearRate, n, refShearRate},
model = pars["FluidDynamicsMaterialModel"]["PowerLaw"];
minShearRate = model["MinimalShearRate"];
refShearRate = model["ReferenceShearRate"];
n = model["Exponent"];
m = model["PowerLawViscosity"];
strainRate = "StrainRate" /. data;
shearRate = PDEModels`ShearRate[strainRate];
apparentViscosity = m * (Max[shearRate, minShearRate]/refShearRate)^(n-1);
apparentViscosity
]
ベキ乗則の例
ここの例題では動粘度が指定されている.密度が1として与えられているので,動粘度は粘度 に等しい.
実験するために,ベキ乗則指数 およびベキ乗則因数 を記号パラメータにする.
流入プロファイルを{1/2,0}として与え,流出での圧力を0に設定する.壁面は滑りなしとする.
Carreau
Carreauモデルも一般化ニュートン流れモデルを実装する.これはポリマー流れをモデル化するのに便利である.Carreauモデルは次を実装する:
ここで は無限せん断速度粘度, は零せん断速度粘度, は緩和時間(単位は[s]), はベキ乗則の指数, はニュートンモデルとベキ乗則モデルの間の移行を制御する移行指数である.または のとき,このモデルはニュートン流体の標準モデルに還元される.ではCarreauモデルはニュートン流れに還元される.ではCarreauモデルはベキ乗則モデルに近付く.
ここで示すモデルは,通常Carreau-Yasudaモデルと呼ばれるCarreauモデルの一般化である.もとのCarreauモデルはデフォルト設定の で得られる.
Carreauモデルを使うと非常に小さいせん断速度についても非常に大きいせん断速度についてもニュートンプラトーの記述が可能である.ニュートンプラトーは非ニュートン流体と関連のある現象である.このような流体は非常に小さいせん断速度では一定粘性を示す.これは第一プラトーと言われる.第二プラトーはせん断速度が非常に大きい場合に見られる.
"TransitionExponent"パラメータはオプショナルである.これが与えられていない場合は,デフォルト値の が使われる.
非ニュートン流れに対する実際のCarreauモデルの実装は以下に示す.このモデルの構築方法は,他の非ニュートン流れモデルの構築の例として使うことができる.
ApparentViscosity["Carreau", vars_, pars_, data__] :=
Module[
{model, mu0, muInf, n, a, lambda, strainRate, shearRate, apparentViscosity},
model = pars["FluidDynamicsMaterialModel"]["Carreau"];
mu0 = model["ZeroShearRateViscosity"];
muInf = model["InfiniteShearRateViscosity"];
n = model["PowerLawExponent"];
a = model["TransitionExponent"];
lambda = model["Lambda"];
strainRate = "StrainRate" /. data;
shearRate = ShearRate[strainRate + $MachineEpsilon];
apparentViscosity = muInf + (mu0 - muInf) *
(1 + (lambda * shearRate)^a )^((n - 1)/a);
apparentViscosity
]
モデルのパラメータを詳しく見ていこう.以下ではパラメータの選択がどのように見かけの粘度に影響を及ぼすかを示すいくつかのプロットを提示する.最初に,固定されたデフォルトのパラメータを持つモデルを考えてから,パラメータを1つずつ変化させ,その結果の見かけの粘度を比較する.これにより,パラメータの選択がどのようにモデルに影響を与えるかが分かる.パラメータのデフォルトとして以下の値を選ぶ:
最初に変化させるパラメータは である.このパラメータは,せん断速度がゼロのときに流体の粘度を記述するために使われる.せん断速度がゼロということは流体の速度が一定ということである.
このプロットから,小さいせん断速度 のとき が見かけの粘度 に影響を及ぼしていることが分かる.せん断速度が1/4くらいのところまで,あまり目立たないがプロットはプラトーを示している.その後 は減少する.せん断速度 の値が高くなると,見かけの粘度 に対する の影響力は小さくなり,せん断速度がさらに大きくなると以下のプロットで示されるようにほぼ無視できるほどになっていく.
せん断速度 が大きい値になると,プロットに第二プラトーが見られる.せん断速度がゼロのときの粘度 も第二プラトーに達する速さに影響を与える.
その一方でパラメータ μ∞はせん断速度が大きいときの粘度の挙動を記述する.これは,せん断速度が無限大になる場合に見かけの粘度が収束する値である.
プロットから,せん断速度 が増加するに従って見かけの粘度 μappに対する μ∞の影響が大きくなることが分かる.せん断速度の値をもっと大きくすることでよりよい洞察が得られる.
このプロットから,せん断速度が十分大きければ μ∞の値が重要な役割を果たしていることが分かる.これは無限での見かけの粘度の値を制御する.
パラメータ はベキ乗則の指数を表す.に近い値では,モデルはニュートン流体の動作に似ている. の値が1より小さいと,見かけの粘度は になる. の値が1より大きいと,モデルはベキ乗則モデルと類似した動作を見せ,見かけの粘度は ±∞になる.ここで符号は の符号に依存する.
パラメータ がどのくらいの速さで見かけの粘度を増加または減少させるかを制御しているのが分かる. の影響は,せん断速度 が上昇するにつれて大きくなる.
このプロットでは,見かけの粘度 が に収束する速さに影響を与えているのがベキ乗則指数 であることが分かる.プロット内では,に関連付けられた曲線でさえも,すべての曲線が に収束することに注意する. の値が1に近いので収束が遅いだけである.
パラメータ は緩和時間である.これはモデルが に近付く速さを制御する.
ベキ乗則指数 とは異なり、緩和時間 はせん断速度が非常に小さいときでも重要な役割を果たす.
緩和時間 は見かけの粘度が に近付く速さを制御する.これはベキ乗則指数 に似ているが,異なる点は が小さい値のせん断速度にも大きな影響を与えるという点である.
最後のパラメータ はニュートン挙動から非ニュートン挙動への移行の速度を制御する. の値を大きくすると,モデルがニュートン挙動から非ニュートン挙動に移行するときのせん断速度の閾値が大きくなる.
パラメータ a が第一プラトーの長さを制御しているのが分かる.しかし,一旦閾値を超えて流体が非ニュートン領域に入ると,見かけの粘度 は素早く同じ値に収束する.
クロス
クロスモデルは実験的モデルであり,ポリマー溶解や高分子溶液に便利である.クロスベキ乗則をモデル化するためにCarreauモデルを使うことができる:
Bingham-Papanastasiou
Bingham-Papanastasiouモデルは粘塑性材料に便利である.Bingham-Papanastasiouモデルは以下を実装する:
非ニュートン流れに対する実際のBingham-Papanastasiouモデルの実装は以下に示す通りである.このモデルの構築方法は,別の非ニュートン流れモデルの構築の例として使うことができる.
ApparentViscosity["Bingham-Papanastasiou", vars_, pars_, data__]:=
Module[
{model, mup, sigma, m, strainRate, shearRate, apparentViscosity},
model = pars["FluidDynamicsMaterialModel"]["Bingham-Papanastasiou"];
mup = model["PlasticViscosity"];
sigma = model["YieldStress"];
m = model["ShearRateFactor"];
strainRate = "StrainRate" /. data;
shearRate = PDEModels`ShearRate[strainRate + $MachineEpsilon];
apparentViscosity = mup + sigma/shearRate * (1 - Exp[-m * shearRate]);
apparentViscosity
]
Herschel-Bulkley-Papanastasiou
Herschel-Bulkley-Papanastasiouモデルは以下を実装する:
このモデルはベキ乗則を使ってBingham-Papanastasiouモデルの塑性粘度を計算する.ベキ乗則とBingham-Papanastasiouモデルのパラメータは,ベキ乗則で計算される"PlasticViscosity"を除いてすべて指定することができる."MinimalShearRate"は-∞に設定される.
ApparentViscosity["Herschel-Bulkley-Papanastasiou", vars_, pars_, data__]:=
Module[
{model, powerLawPars, mup, binghamPapanastasiouPars, apparentViscosity},
model = pars["FluidDynamicsMaterialModel"]["Herschel-Bulkley-Papanastasiou"];
powerLawPars = pars;
powerLawPars["FluidDynamicsMaterialModel"] = <|"PowerLaw" -> model|>;
mup = ApparentViscosity["PowerLaw", vars, powerLawPars, data];
binghamPapanastasiouPars = pars;
model["PlasticViscosity"] = mup;
binghamPapanastasiouPars["FluidDynamicsMaterialModel"] =
<|"Bingham-Papanastasiou"-> model|>;
apparentViscosity = ApparentViscosity["Bingham-Papanastasiou", vars,
binghamPapanastasiouPars, data];
apparentViscosity
]
カスタムの見かけ粘度モデル
好きなモデルがこれまでになかった場合は,カスタムの粘度モデルを指定することで使うことができる.
関数 myApparentViscosity は以下のシグネチャを持つ:
myApparentViscosity[_, vars_, pars_, data__]:=
Module[{},
....
]
関数 myApparentViscosity は見かけ粘度に対してスカラー値を返す.このモノグラフで紹介されている他のモデルは,見かけ粘度関数を書くためのテンプレートとして使うことができる.
カスタムの粘性応力テンソル
は関数 myViscousStressTensor に置き換えることができる.
関数 myViscousStressTensor は以下のシグネチャを持つ:
myViscousStressTensor[vars_, pars_, data__]:=
Module[{},
....
]
関数 myViscousStressTensor は粘性応力テンソルを返す.
粘弾性流体の流れ
粘弾性流体の流れでは,非圧縮性流れに対する粘性応力テンソル (単位[Pa])は以下で与えられる:
ここで は粘弾性応力テンソルである.粘弾性流体の流れを含む方程式はすぐに数値的に不安定になるため,安定化手法が必要になる.このバージョンのNDSolveには安定化手法が装備されていないので,粘弾性流体の流れは現在実装されない.
エネルギー輸送 - 非等温流れ
温度差がどのように流体の流れに影響を及ぼすのか,あるいは熱がどのように流体流れとともに輸送されるのかについて理解したいと思うことがあるだろう.このために,ナビエストークス方程式と熱移動方程式を結合する:
ここで は絶対温度(単位[]), は特定の圧力における非熱容量(単位[]), は熱伝導率(単位[]), は熱源密度(単位[])である.熱方程式の詳細および導出については「熱移動」モノグラフをご覧いただきたい.熱源の中には粘性加熱 または圧力変化によって記述される項がある.どちらも無視できることが多いが必要であれば加えられる.
重要な点は温度変化が密度の変化を引き起こすということである.体積が増加すると重量が減少し流体が上昇する.温度依存の浮力は上昇する.
ブシネスク近似
熱方程式とナビエストークス方程式の結合をモデル化する最も簡単なものがブシネスク近似であり,以下の仮定に基づいている[2, p.126]:
が導入されており, は重力場である.積 は浮力寄与である.さらに簡約するために,ブシネスク近似は密度 と温度 の間に線形関係を仮定する:
ここで は熱膨張係数, と は基準値である.実際,方程式は における一次テイラー展開である. と の間の線形関係は [4]の純水のような特別な場合には二次関数に近いもので置換する必要がある.
ブシネスク近似は流れ方程式と熱移動モデルの間の結合を提供する.温度差は流体流れを駆動することができる.流体流れが 等温ならば ということであり,流体は静止したままである.しかし一つの壁面が熱せられると,浮力によって流体流れができる.
ブシネスク近似を使うときは注意が必要である.変化する材料パラメータは浮力項の密度 だけである.つまり,その他の密度,動粘度 ,熱膨張係数 ,非熱容量 ,熱伝導率 はすべて区間 で一定なのである.ブシネスク近似は圧力は一定であると仮定する.浮力項の密度はが展開点であるテイラー展開である.
上で指摘した制約は非常に厳しいので,条件が満足していることを確認する必要がある.以下の分類を導出した[2; 5]:
以下の例は水に対するこの手法を表す[2, p. 133].近似がいつ有効であるかを推定するために,上からの不等式をコード化する.
および の水では以下のパラメータになる[5]:
圧力を考えるときも同じことができる[5].材料定数を含む数量を積分する場合は,浮力項で使われる温度依存の密度 ではなく,のような基準値を使う必要がある[4].
レイリー・ベナール対流
ブシネスク近似の応用として,レイリー・ベナール対流を紹介する.この例では流体で満たされた矩形領域を使う.壁面は断熱されており上面と底面はそれぞれ冷却・加熱されている.まず領域といくつかのパラメータを指定する.
ブシネスク近似を使う熱方程式と結合した粘性ナビエストークス方程式を設定する.指定された材料パラメータを使う.
調整されたメッシュを使い,速度 と および温度 を二次で補間し圧力 を一次で補間しながら,時間積分の進行状況とPDEを解くのにかかる合計時間を監視する.
流体流れの熱移動の例はモデルコレクションの「浮力流れ」で見られる.ここではレイノルズ数ベースのモデルが使われている.2つ目の例「熱交換器」では標準モデルが使われている.「熱分解」は熱,質量,流体の輸送の組合せを示している.
流れ境界条件
流体流れモデルの幾何学的領域は有限である.領域の境界では流れが埋め込まれている環境をモデル化する境界条件が必要である.境界条件は境界の壁面や領域への流入,領域からの流出を記述する.境界条件を簡単に説明するためには,いくつかの用語を導入するのが便利である. が境界に垂直な速度成分を表し, が境界に接線方向である速度成分を表すとしよう. と は法線方向における両方の成分の導関数を表す.
先に紹介したリッドドリブンキャビティの例のように, 軸と 軸に平行な2D形状を考える.ここでは垂直境界と水平境界の2つがある.垂直境界では:
ピンクで示された垂直境界では,垂直流体流れ成分 と水平流体流れ成分 がある.
ピンクで示された水平境界では,垂直流体流れ成分 と水平流体流れ成分 がある.
座標軸に平行ではない境界の場合は,成分 と を と から計算する必要がある.
流入条件
ここで と は速度ベクトルに垂直,水平な成分である.流入条件を指定するために と が与えられる.通常の流入プロファイルは以下である:
ここで覚えておかなければならないのは,流入条件は隣接する境界条件と矛盾していてはならないということである.例えば,入口の境界における流入プロファイルが0ならば,滑りなし壁面境界条件を使うことができる.入口の境界における流入プロファイルが非零ならば,隣接する滑りなし壁面境界条件を使うと,ソルバがモデルを収束するのが不可能ではないとしても難しくなる.場合によっては境界の流入条件が非零のときは,滑り壁面境界条件を使った方がよいことがある.
Fitを使うと放物型流入プロファイルが簡単に作成できる.の流入と最大流入速度1[]が与えられたとする.
流出条件
流出は出口とも呼ばれる.両方の速度成分は法線に対して一定のままである:
壁面条件
壁面は流体を含む任意の不透水境界である.壁面境界での条件の一つは,流体は壁面を通過できないということである.したがって,最小必要条件は以下になる:
この最小必要条件が満たされたときだけ滑り条件と言う.2つ目の条件は,追加的に壁面条件に接線方向の流体流れはないというものである.この2つ目の場合は滑りなし条件と言う.
壁面境界条件が流入境界条件と一致していることに注意を払う必要がある.詳細は「流入条件」のセクションを参照のこと.
滑りなし
通常の壁面境界条件は滑りなし条件である.滑りなしとはまず壁面を通過する流体がなく,次に流体が壁面に付着しているというものである.2つ目の条件は境界の摩擦をモデル化する.つまり以下を意味する:
これはDirichletConditionで設定することができる.
滑りなしの例
この例は滑りなし壁面境界条件の応用を示す.2つの半円板が切り取られた矩形の流れ領域がある.左側は流入プロファイルがあり右側は流出条件がある.領域の残りの部分は滑りなし境界条件としてモデル化された壁面である.
滑り
滑りにおいても壁面を通過する流体はないが,滑りなし条件と異なり摩擦による損失はない.つまり以下が言える:
牽引
ここで は全応力である.全応力とは粘性応力 に圧力成分を足したものである.
ここで は牽引値ベクトルである.すべての項を置き換えると以下が得られる:
境界条件のタイプはNeumannValueで指定することができる.
牽引の例
次の例はアニュラス領域における規定された牽引境界条件を持つ流れを考える.辺の外側 には滑りなし境界条件がある.これにより 方向と 方向の流体速度が0,に設定される.
内側の境界 では,速度を定義する代りに牽引を規定する.応力ベクトル の牽引は次で与えられる:
ここで は として与えられる単位半径ベクトル, は で与えられる単位接線ベクトルである. と はそれぞれ 方向 方向の直交単位ベクトルである.この例では の法線方向と の接線方向に牽引を設定する.つまり,内側境界に接線方向の流れだけで,横切る流れはない.
内面ではクロス積を持つ外向きの単位法線 から接線単位法線を計算することができる.
方向, 方向のクロス積の第1成分と第2成分をそれぞれ抽出するためにIndexedを使う.
同様に,内面の単位法線ベクトルは であり単位接線は なので,接線単位法線はとして与えることもできる.
圧力についての境界条件を指定しないと,圧力値は浮き,NDSolveは十分な境界条件が指定されていないという警告を発する.
牽引境界条件が動作することを検証するためには,速度の動径成分と接線成分を計算し,それをすべての について でプロットすることができる.動径速度についてはに比例する解が想定され,接線速度についてはに比例する解が想定される.
次に内側境界における法線応力とせん断応力を計算し,それらが規定の牽引境界条件と一致するかをチェックする.全応力テンソルは以下で与えられる:
初期条件
流体流れモデルの収束
流体流れPDEは収束が難しいことがある.このセクションはNDSolveが流体流れモデルの解を見付けられないときに試すヒントを提供する.ここで示すメソッドを組み合せることもできる.
初期シード(種)
通常非線形のソルバには最初の推測,つまり開始するためのシードが必要である.このシードが解から遠すぎるとソルバは収束しないことがある.ソルバが収束する半径のことを収束半径と言う.初期シードが近いほど最終的な解はよくなる.
反復ステップ
ここでは小さいレイノルズ数の流れ場の解を使って,大きいレイノルズ数の計算のシードにする.このためにパラメトリック関数を使う.
従属変数を指定することでソルバが最適化された方程式系を作成することができる.
方程式の変更
最初はばかばかしく聞こえるかもしれないが,なぜ方程式を変更するのだろうか?より安定したより還元された方程式集合を使うことが可能な場合がある.それからその解を完全な方程式のシードとして使うことができる.
ストークス方程式
初期シードが指定されていないと,ソルバはすべての従属変数について0を仮定する.流体力学の場合,速度場に対して初期速度0が使われ圧力が使われると,実際ストークスタイプの方程式を解いていることになる.
参考文献
1. Simple Fields of Physics; Backstrom, G.; 2006; GB Publishing; ISBN 91-975553-0-4
2. Numerische Simulation in der Strömungsmechanik; Griebel M. et al.; 1995; Vieweg; ISBN 3-528-06761-6
3. The Efficient Engineer; https://www.youtube.com/watch?v=VvDJyhYSJv8; retrieved 2022/12/05
4. On the use and misuse of the Oberbeck–Boussinesq approximation; Barletta, A.; Celli, M; Rees, D.A.S; https://arxiv.org/abs/2202.10981v2; retrieved 2023/03/21
5. The validity of the Boussinesq approximation for liquids and gases; Gray, D.; Giorini, A.; International Journal of Heat and Mass Transfer Volume 19, Issue 5, May 1976, Pages 545-551; https://doi.org/10.1016/0017-9310(76)90168-X
6. “High-Re Solutions for Incompressible Flow Using the Navier-Stokes Equations and a Multigrid Method; Ghia, U., Ghia, K.N., Shin, C.T.; Journal of Computational Physics vol. 48, pp. 387–411, 1982.; https://doi.org/10.1016/0021-9991(82)90058-4