タグ付けされた質問 「boundary-conditions」

偏微分方程式を使用して特定の現象をモデル化するために必要な条件の選択や適切性に関する質問。

1
移流拡散方程式に適用されるノイマン境界条件を使用する場合の物理量の保存
異なる境界条件を適用すると、移流拡散方程式の異なる動作が理解できません。私の動機は、拡散と移流のもとでの実際の物理量(粒子密度)のシミュレーションです。粒子密度は、端から流出しない限り、内部で保存する必要があります。この論理により、システムの両端に(左側および右側)などのノイマン境界条件を適用すると、システムは「閉じる」、つまり境界でのフラックスがゼロの場合、粒子は逃げることができません。∂ϕ∂x=0∂ϕ∂x=0\frac{\partial \phi}{\partial x}=0 以下のすべてのシミュレーションでは、Crank-Nicolson離散化を移流拡散方程式に適用し、すべてのシミュレーションには境界条件があります。ただし、行列の最初と最後の行(境界条件の行)については、内部値に関係なくを変更できます。これにより、エンドポイントが完全に暗黙的になります。∂ϕ∂x=0∂ϕ∂x=0\frac{\partial \phi}{\partial x}=0ββ\beta 以下に4つの異なる構成について説明しますが、そのうちの1つだけが期待したものです。最後に、実装について説明します。 拡散のみの制限 ここでは、速度をゼロに設定すると移流項がオフになります。 拡散のみ、すべてのポイントでββ\boldsymbol{\beta} = 0.5(Crank-Niscolson) パルス面積が減少することからわかるように、量は保存されません。 拡散のみ、内部ポイントで = 0.5(クランクニコルソン)、境界で = 1(完全暗黙)ββ\boldsymbol{\beta}ββ\boldsymbol{\beta} 境界で完全に暗黙的な方程式を使用することで、期待どおりの結果が得られます。粒子が逃げません これは、粒子が拡散するにつれて保存される領域で確認できます。なぜ選択する必要があり境界点では、状況の物理学に影響を与えますか?これはバグですか、それとも予想ですか?ββ\beta 拡散と移流 移流項が含まれる場合、境界のの値は解に影響を与えないようです。ただし、境界が「開いている」ように見えるすべての場合、つまり粒子は境界から逃げることができます。これはなぜですか?ββ\beta すべてのポイントでの = 0.5(Crank-Niscolson)による移流と拡散ββ\boldsymbol{\beta} 内点での = 0.5(Crank-Niscolson)、および境界での = 1(完全暗黙)による移流と拡散ββ\boldsymbol{\beta}ββ\boldsymbol{\beta} 移流拡散方程式の実装 移流拡散方程式から始めて、 ∂ϕ∂t=D∂2ϕ∂x2+v∂ϕ∂x∂ϕ∂t=D∂2ϕ∂x2+v∂ϕ∂x \frac{\partial \phi}{\partial t} = D\frac{\partial^2 \phi}{\partial x^2} + \boldsymbol{v}\frac{\partial \phi}{\partial x} Crank-Nicolsonを使用して書くと、 ϕn+1j−ϕnjΔt=D[1−β(Δx)2(ϕnj−1−2ϕnj+ϕnj+1)+β(Δx)2(ϕn+1j−1−2ϕn+1j+ϕn+1j+1)]+v[1−β2Δx(ϕnj+1−ϕnj−1)+β2Δx(ϕn+1j+1−ϕn+1j−1)]ϕjn+1−ϕjnΔt=D[1−β(Δx)2(ϕj−1n−2ϕjn+ϕj+1n)+β(Δx)2(ϕj−1n+1−2ϕjn+1+ϕj+1n+1)]+v[1−β2Δx(ϕj+1n−ϕj−1n)+β2Δx(ϕj+1n+1−ϕj−1n+1)] \frac{\phi_{j}^{n+1} - \phi_{j}^{n}}{\Delta t} …

4
Galerkin法で境界条件を組み込む方法
私はPDEを解くためのGalerkinの方法に関するウェブ上のいくつかのリソースを読んでいますが、何かについて明確ではありません。以下は、私が理解したことに関する私自身の説明です。 次の境界値問題(BVP)を検討してください。 L[u(x,y)]=0on(x,y)∈Ω,S[u]=0on(x,y)∈∂ΩL[u(x,y)]=0on(x,y)∈Ω,S[u]=0on(x,y)∈∂ΩL[u(x,y)]=0 \quad \text{on}\quad (x,y)\in\Omega, \qquad S[u]=0 \quad \text{on} \quad (x,y)\in\partial\Omega ここで、LLL微分演算子線形2次であり、Ω⊂R2Ω⊂R2\Omega\subset\mathbb{R}^2、BVPのドメインである∂Ω∂Ω\partial\Omegaドメインの境界であり、そしてSSS微分演算子線形1次です。次の形式の近似としてu(x,y)u(x,y)u(x,y)を期待します。 u(x,y)≈∑i=1Naigi(x,y)u(x,y)≈∑i=1Naigi(x,y)u(x,y)\approx \sum_{i=1}^N a_i g_i(x,y) ここで、はuを近似するために使用する関数のセットです。BVPに置き換える:gigig_iuuu ∑iaiL[gi(x,y)]=R(a1,...,aN,x,y)∑iaiL[gi(x,y)]=R(a1,...,aN,x,y)\sum_i a_i L[g_i(x,y)]=R(a_1,...,a_N,x,y) 近似は正確ではないため、残差は正確にゼロではありません。ガラーキン-リッツローリー法では、最小R必要とすることによって機能を近似のセットに対しての⟨ R 、G 、I ⟩ = 0。したがってRRRRRR⟨R,gi⟩=0⟨R,gi⟩=0\langle R,g_i \rangle = 0 ⟨R,gi⟩=∑j=1Naj⟨L[gj],gi⟩=0⟨R,gi⟩=∑j=1Naj⟨L[gj],gi⟩=0\langle R,g_i \rangle = \sum_{j=1}^N a_j \langle L[g_j],g_i \rangle = 0 したがって、係数を見つけるには、行列方程式を解く必要があります。aiaia_i ⎛⎝⎜⟨L[g1],g1⟩…⟨L[g1],gN⟩………⟨L[gN],g1⟩…⟨L[gN],gN⟩⎞⎠⎟⎛⎝⎜a1…aN⎞⎠⎟=0(⟨L[g1],g1⟩…⟨L[gN],g1⟩………⟨L[g1],gN⟩…⟨L[gN],gN⟩)(a1…aN)=0\left( \begin{array}{ccc} \left\langle L\left[g_1\right],g_1\right\rangle & \ldots …

1
数値解析におけるニッチェの方法の一般的な考え方は何ですか?
ニッチェの方法は、ラグランジュ乗数を使用せずにディリクレ型境界条件または摩擦境界条件との接触を弱い方法で考慮することができるため、非常に魅力的な方法であることを知っています。また、その利点は、ディリクレ境界条件をノイマン境界条件と同様に弱い項に変換することですが、実装がモデルに依存しているという事実によって支払われます。 しかし、私には一般的すぎるようです。この方法のより具体的なアイデアを教えていただけますか?簡単な例をいただければ幸いです。

2
ノイマン境界条件でポアソン方程式有限差分行列を書く
有限差分アプローチを使用してポアソン方程式を解くことに興味があります。ノイマン境界条件で行列方程式を書く方法をよりよく理解したいと思います。誰かが以下をレビューしますか、それは正しいですか? 有限差分行列 ポアソン方程式 ∂2u (x )∂バツ2= d( x )∂2あなたは(バツ)∂バツ2=d(バツ) \frac{\partial^2u(x)}{\partial x^2} = d(x) 有限差分行列方程式で近似できます。 1(Δは、xは)2M ∙ u^= d^1(△バツ)2M∙あなたは^=d^ \frac{1}{(\Delta x)^2} \textbf{M}\bullet \hat u = \hat d ここで、は行列で、およびは(列)ベクトルです。 N × N uは dは 1 × NのMM\textbf{M}n × nn×nn \times nあなたは^あなたは^\hat ud^d^\hat d1 × n1×n1 \times n ノイマン境界条件の追加 ノイマン境界条件は、境界で既知のフラックスを強制します(ここでは、境界がである左側に適用します)。x = 0バツ=0x=0 ∂u …

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 …

4
有限差分法によって離散化された移流方程式の境界条件
有限差分法を使用してPDEを解くときに境界条件を選択する方法を説明するのに役立つリソースを見つけようとしています。 私が現在アクセスできるすべての本とメモは、同様のことを言っています: 境界が存在する場合の安定性を管理する一般規則は、入門テキストとしては複雑すぎます。彼らは洗練された数学的な機械を必要とします (A.イセル微分方程式の数値解析の最初のコース) たとえば、移流方程式に2段階のリープフロッグ法を実装しようとする場合: あなたはn + 1私= あなたn − 1私+ μ (uni + 1- Uni − 1)あなたは私n+1=あなたは私n−1+μ(あなたは私+1n−あなたは私−1n)u_i^{n+1} = u_i^{n-1} + \mu (u_{i+1}^n - u_{i-1}^n) MATLABを使用して M = 100; N = 100; mu = 0.5; c = [mu 0 -mu]; f = @(x)(exp(-100*(x-0.5).^2)); u = zeros (M, N); x = …

2
] 0,1 [の熱方程式の周期境界条件
私たちは一次元でスムーズな初期条件と熱方程式を考えてみましょう: ∂tu=∂xxu∂tu=∂xxu \partial_t u = \partial_{xx} u 開区間で]0,1[]0,1[]0,1[、と私たちは有限差分を数値的にそれを解決したいと仮定しましょう。 問題を適切に解決するには、x=0x=0x=0およびで境界条件を付与する必要があることを知っていx=1x=1x=1ます。ディリクレまたはノイマンがうまく機能することを知っています。 最初のケースでNNN内点xk=kN+1xk=kN+1x_k=\frac{k}{N+1}のためにk=1,⋯,Nk=1,⋯,Nk=1,\cdots,N、その後、私はNNN未知数を:uk=u(xk)uk=u(xk)u_k=u(x_k)のためのk=1,⋯,Nk=1,⋯,Nk=1,\cdots,N、のでuuu境界で規定されています。 2番目のケースでは、N+2N+2N+2未知数実際にありu0,⋯,uN+1u0,⋯,uN+1u_0,\cdots,u_{N+1}、境界でラプラシアンを離散化するために(同種の)ノイマンBCを使用する方法を知っています。x−1x−1x_{-1}およびxN+2xN+2x_{N+2}および等式: u1−u−12h=0=uN+2−uN2hu1−u−12h=0=uN+2−uN2h\frac{u_1-u_{-1}}{2 h} = 0 = \frac{u_{N+2}-u_N}{2 h} 私の質問は、定期的なBCについてです。私は1つの方程式を使用することができると感じている、すなわち が、おそらく2、そして私が使用する ∂ Xのu (0 )= ∂ X Uを(1 )u(0)=u(1)u(0)=u(1)u(0) = u(1)∂xu(0)=∂xu(1)∂xu(0)=∂xu(1)\partial_x u(0) = \partial_x u(1) しかし、私にはわかりません。どれだけの未知数を持っているべきか、私にもわかりません。それは、?N+1N+1N+1

3
有限差分法を使用するときに曲線境界条件を処理する方法は?
私は自分でPDEを数値的に解くことについて学ぼうとしています。 FDMはPDEの多くの数値的手法の基礎であると聞いたので、私はしばらくの間、差分法(FDM)から始めました。これまでのところ、FDMの基本的な理解があり、ライブラリとインターネットで見つけた資料を使用して、通常の地域にある簡単なPDEのコードを書くことができましたが、奇妙なことに、これらの資料はほとんど話せませんこのような不規則な、湾曲した、奇妙な境界の処理について。 さらに、曲線の境界に対処する簡単な方法を見たことはありません。たとえば、これまで見てきた最も詳細な議論(主にp71の3.4およびp199の6.4 )を含む書籍「偏微分方程式の数値解法-はじめに(Morton K.、Mayers D)」は、私にとって本当に面倒でイライラする外挿。 それで、タイトルが尋ねたように、湾曲した境界に関して、FDMを使用するとき、通常人々はそれをどのように扱いますか?言い換えれば、最も一般的な治療法は何ですか?それともPDEのタイプに依存しますか? (少なくとも比較的)エレガントで高精度の曲線境界に対処する方法はありますか?または、それは避けられない痛みですか? 私も尋ねたいのですが、人々は実際に湾曲した境界に実際にFDMを使用していますか?そうでない場合、一般的な方法は何ですか? 任意の助けをいただければ幸いです。

2
有限の違いがある堅固なメカニズム:「コーナーノード」の処理方法
固体力学の線形境界条件のコーディングに関する質問があります(線形弾性)。特別な場合には、有限差分(3D)を使用する必要があります。私はこのトピックに非常に新しいので、おそらく以下の質問のいくつかは非常に基本的なものかもしれません。 特定の問題につながるために、まず、既に実装したものを示したいと思います(わかりやすくするために、2Dのみを使用します)。 1)私は、次の離散有するdi v (σ)= 0div(σ)=0div(\sigma) = 0発散の第一の成分を示す、∂σx x∂バツ+ ∂σx y∂y= 0∂σxx∂x+∂σxy∂y=0\frac{\partial\sigma_{xx}}{\partial x} + \frac{\partial\sigma_{xy}}{\partial y} = 0: スタッガードでないグリッドを使用しているため、UxとUyは同じ場所で定義されます。 2.)次のステップは、「ゴーストノード」を使用する境界の処理です。σ∙ n = t∗σ∙n=t∗\sigma \bullet n = t^*によると、t∗t∗t^*は境界の応力です。 (λ + 2 μ )∂うんバツ∂バツ+ λ ∂うんy∂y= σ∗x x(λ+2μ)∂Ux∂x+λ∂Uy∂y=σxx∗(\lambda + 2\mu)\frac{\partial U_x}{\partial x} + \lambda \frac{\partial U_y}{\partial y} = \sigma_{xx}^*σ∗x xσxx∗\sigma_{xx}^* μ ∂うんバツ∂y+ …

4
初期値と最終値の制約を持つ結合ODEを解く
私の質問の本質は次のとおりです。2つのODEのシステムがあります。1つには初期値制約があり、もう1つには最終値制約があります。これは、いくつかの変数に初期値制約があり、他の変数に最終値制約がある単一のシステムと考えることができます。 詳細は次のとおりです。 私は、線形動的システムを駆動するために、連続時間の有限水平LQRコントローラーを使用しようとしています。Pythonエコシステムを引き続き使用したいと思います。 システムは、形態であるに、被写体X (0 )= X 0バツ˙(t )= A x (t )+ B u (t )x˙(t)=Ax(t)+Bu(t)\dot{x}(t) = Ax(t) + Bu(t)x (0 )= x0x(0)=x0x(0)=x_0 LQRソリューションは、x (t )で線形の最適な制御入力u(t)がu (t )= K (t )x (t )であるような行列生成します。K(t )K(t)K(t)x (t )x(t)x(t)u (t )= K(t )x (t )u(t)=K(t)x(t)u(t) = K(t)x(t) ここで、K(t )= R− 1BTP(t )K(t)=R−1BTP(t)K(t) …

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
グローバルスパース有限要素スティフネスマトリックスでディリクレ境界条件を効率的に実装する方法
グローバルスパース有限要素行列のディリクレ境界条件が実際に効率的に実装される方法を知りたいです。たとえば、グローバルな有限要素行列が次のとおりだったとします K= ⎡⎣⎢⎢⎢⎢⎢⎢520− 102410001632− 1037000203⎤⎦⎥⎥⎥⎥⎥⎥と右側のベクトルb = ⎡⎣⎢⎢⎢⎢⎢⎢b 1b 2b 3b 4b 5⎤⎦⎥⎥⎥⎥⎥⎥K=[520−102410001632−1037000203]と右側のベクトルb=[b1b2b3b4b5]K = \begin{bmatrix} 5 & 2 & 0 & -1 & 0 \\ 2 & 4 & 1 & 0 & 0 \\ 0 & 1 & 6 & 3 & 2 \\ -1 & 0 & 3 & …

2
境界条件チェビシェフ微分
チェビシェフ差別化を実装するときに、境界を扱う経験がある人がいるのではないかと思っていました。 私は現在、非スリップ境界条件を実装して、非圧縮性ナビエストークス方程式を3Dで解決しようとしています。これは、u(:、:、1)とuを設定するのと同じくらい簡単で、境界で流れがゼロであることを確認するためです。 (:、:、N)= 0は、教科書に示されているように、計算のすべての段階で(vとwについても同様に)示されます。これは、境界に流れがゼロであることによって境界の隣のポイントがどのように影響を受けるかを考慮していないようであり、アプローチがあまりに単純すぎるように見えます。 助けることができる人に感謝します。

1
周期的な境界条件を持つシュレディンガー方程式
以下について、いくつか質問があります。 私は、クランクニコルソンの離散化を使用して1Dでシュレディンガー方程式を解き、続いて結果の三重対角行列を反転させようとしています。私の問題は周期的な境界条件の問題に発展したため、シャーマンモリソンアルゴリズムを使用するようにコードを変更しました。 仮定しv、私は三重対角行列を反転したいとき、各時間ステップでの私のRHSです。のサイズvは、スペース上にあるグリッドポイントの数です。私が設定するv[0]とv[-1]、私の定期的な状況で必要とされるように、お互いに関して、私の方程式は爆発します。なぜこれが起こっているのかわかりません。私はpython2.7とscipyの組み込みのsolve_bandedを使用して方程式を解いています。 これは私の2番目の質問につながります。Pythonは私が最もよく知っている言語であるため使用しましたが、(numpyとscipyによって提供される最適化を使用しても)かなり遅いと感じます。C ++に慣れているので、C ++を使用してみました。BLAS最適化されるGSLを使用すると思いましたが、複雑なベクトルを作成したり、そのような複雑な値のベクトルで三重対角行列を解いたりするためのドキュメントが見つかりませんでした。 私は、波動関数間の結合を含めるために後で一般化する最も簡単な方法であり、したがってオブジェクト指向言語に固執していると思うので、プログラムにオブジェクトを入れたいと思います。 三重対角行列ソルバーを手動で作成することもできましたが、Pythonで作成すると問題が発生しました。細かく細かいタイムステップで長い時間をかけて進化していくと、エラーが蓄積し、無意味なものになってしまいました。これを念頭に置いて、組み込みのメソッドを使用することにしました。 アドバイスは大歓迎です。 編集:関連するコードスニペットは次のとおりです。この表記法は、Wikipediaのページの三重対角行列(TDM)方程式から借用したものです。vは、各タイムステップでのクランクニコルソンアルゴリズムのRHSです。ベクトルa、b、cはTDMの対角線です。定期的なケースの修正されたアルゴリズムは、CFD Wikiからのものです。少し名前を変更しました。彼らがu、vと呼んでいるものをU、V(大文字)と呼んでいます。私はqを補数、yを一時的なソリューション、実際のソリューションをself.currentStateと呼んでいます。ここでv [0]とv [-1]の割り当てが問題を引き起こしているため、コメント化されています。ガンマの要素は無視してかまいません。これらは、ボーズアインシュタイン凝縮のモデル化に使用される非線形因子です。 for T in np.arange(self.timeArraySize): for i in np.arange(0,self.spaceArraySize-1): v[i] = Y*self.currentState[i+1] + (1-2*Y)*self.currentState[i] + Y*self.currentState[i-1] - 1j*0.5*self.timeStep*potential[i]*self.currentState[i] - self.gamma*1j*0.5*self.timeStep*(abs(self.currentState[i])**2)*self.currentState[i] b[i] = 1+2*Y + 1j*0.5*self.timeStep*potential[i] + self.gamma*self.timeStep*1j*0.5*(abs(self.currentState[i])**2) #v[0] = Y*self.currentState[1] + (1-2*Y)*self.currentState[0] + Y*self.currentState[-1] - 1j*0.5*self.timeStep*potential[0]*self.currentState[0]# - self.gamma*1j*0.5*self.timeStep*(abs(self.currentState[0])**2)*self.currentState[0] …

1
高速フーリエ変換を使用して混合境界条件で2Dポアソン問題を解決するには、どのフーリエ級数が必要ですか?
境界条件がすべて1つのタイプである場合、高速フーリエ変換を使用してポアソン問題を解くことができると聞きました。ディリクレの正弦級数、ノイマンの余弦、および周期の両方です。2Dの長方形のドメインを考えて、2つの反対側に周期的な境界条件があり、他の2つにはディリクレ条件があるとします。この問題を効率的に解決するために、高速フーリエ変換を適用できますか?もしそうなら、指数形式は十分ではないでしょうか?そうでない場合、この状況に対してどのソルバーをお勧めしますか?

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.