問題タブ [fipy]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - FiPy 内部伝導境界条件
私は FiPy の初心者で、3D ボリューム内のポテンシャルのポアソン方程式を解いています。サーフェス境界条件では問題なく機能しますが、内部に導体を配置する必要があります。これは一定のポテンシャル サーフェスになり、内部サーフェスに potential.constrain を使用できないことを認識しています。
ドキュメントでは、ImplicitSourceTerm を表面を定義するマスクと共に使用することを提案していますが、これを使用して電位を一定に制限したり、同様に電場を表面に垂直に制限したりする方法は明らかではありません。これは可能ですか?
助けてくれてありがとう。
python - FiPy と Mayavi を使用して 3D で拡散方程式を解く
解決することに興味があります。
以下は機能していますが、いくつか質問があります。
- FiPy でパフォーマンスを向上させることは可能ですか?
nx, ny, nz
計算時間が長いにもかかわらず、ここではビンが非常に小さいように感じます。配列が非常に大きい理由がわかりません。X, Y, and Z
[0..nx, 0..ny, 0..nz]
最初のフレームで拡大されていることに注意してください。すべてのプロットに自動的に範囲を強制するにはどうすればよいですか?1.0
最初のフレームのデータは、値が で囲まれた点の球です0.0
。勾配があるように見えるのはなぜですか? Mayaviは補間していますか?もしそうなら、どうすればこれを無効にできますか?
コード:
経過時間:68.2秒
python - FiPy ソースターム 濃度非依存性
結合された 2 つの 1D 移流分散反応方程式を解こうとしています。
と
ここで、v、k、およびアルファは定数です。
Ca2+ の平衡濃度 ([Ca2+]Eq) は [CO2] に非線形に依存します。これを数式に組み込むために、CellVariable CaEq を作成しました。式は次のとおりです。
そして、次の方法で CaEq を計算しています。
関数 concCaEqFromPCO2 は、ルート検索によって [CO2] と温度から [Ca2+]Eq を見つけます。
ソルバーを実行すると、次のエラーが表示されます。係数はベクトル値でなければなりません。これは、v が整数に設定されている場合に発生します。それをタプルに設定すると、alpha*CaEq: bad operand for unary -: 'tuple' の行で別のエラーが発生します。
これを解決する方法はありますか?または、より一般的には、変数の 1 つに非線形依存関係を組み込む簡単な方法はありますか?
python - Python でソースを使用して偏微分方程式を解く
FiPy を使用して、生物学に触発された問題に対処しています。
基本的に、さまざまなポイントにソースとシンクがある 2D 平面を表現したいと考えています。ソースは固定速度で基質を放出し (異なるソースは異なる速度を持つことができます)、シンクは固定速度で基質を消費します (異なるシンクは異なる速度を持つことができます)。私のコード:
これはうまく機能しますが、FiPy はソースを「再生不可能」として扱い、最終的には予想どおり、空間全体に均一な濃度が得られます。別の方法は、以下を削除することでした:
式を次のように変更します。
ソースとシンクが決して変更されないことを考えると、これは「無限の」ソースとシンクを提供しました。ただし、次を使用して定常状態を解こうとすると
私は得る:
そして方程式は解けません。ただし、もう一度使用して「段階的に」解決する場合:
私が期待するものに似た素敵な写真が得られます:
定常状態の解を得ることができるように、それぞれ異なる排出/消費率を持つ異なる空間位置にあるソース/シンクで初期設定を指定する方法についてのアドバイスはありますか?
ありがとう!
python - Fipy で複数の偏微分方程式を解く
Fipyを使用して、Python で偏微分方程式系を解こうとしています。少なくとも 3 つの PDE のシステムがあります。
このようなシステムを解決するには、どのアプローチが最適か疑問に思っていましたか? Fipy は、偏微分方程式系の結合アプローチと非結合アプローチの両方をサポートしています。最初に、Fipy が 2 つ以上の連立方程式をサポートしているかどうか、もしサポートしていない場合 (またはサポートしている場合)、そのようなシステムを解決する最良の方法は何ですか?
どうもありがとう。
pde - PDE を適切な Fipy 構文に変換する
FiPy で次の式をコーディングする方法を考えていました。
(誰かが興味を持っている場合は、このタイプのモデルから来ています). 右側の 3 番目の項を FiPy コードに変換するのに少し問題があります。この例では、A と B は両方とも変数です。
私はフォームの何かを試しました:
しかし、変数ではないものを .getGrad() できないと思います。どんな助けでも大歓迎です。どうもありがとう!
python - Fipyでノイマン(面に垂直な固定フラックス)境界条件をどのように指定しますか?
面内のフラックスのコンポーネントを制約せずに、fipy メッシュの境界面に法線方向のフラックスを特定の値に明示的に設定するにはどうすればよいですか?
ノイマン境界条件は、(1) 境界面に垂直な磁束の固定成分、または (2) 面での磁束の完全な仕様として指定できます。デフォルトの fipy 条件は前者 (値 = 0) ですが、明示的なメソッド (faceGrad.constrain) は後者です。この問題は、次のコードを fipy拡散.mesh20x20 の例の最後に追加し、さまざまな面のグラデーション結果に注意することで理解できます。
physics - FiPy で Scharfetter-Gummel スキームを使用して方程式を解くにはどうすればよいですか?
FiPy を使用して太陽電池をシミュレートしようとしていますが、単純なテスト ケースでも妥当な結果を得るのに苦労しています。
私のテストの問題は、平衡状態の暗闇での突然の 1D pn ホモ接合です。方程式の支配系は、追加の生成または再結合のない半導体方程式です。
ポアソン方程式は、電子 ( n )、正孔 ( p )、ドナー ( N D )、およびアクセプター ( N A )の密度が与えられると、誘電率εを持つ半導体の電界 ( φ ) を決定します。電子はq :
∇² φ = q ( p − n + N D − N A ) / ε
電子と正孔は、移動度 ( μ ) と拡散定数 ( D )に応じて、電流密度Jでドリフトおよび拡散します。
J n = qμ n n E + qD n ∇n
J p = qμ p p E − qD p ∇n
システム内の電荷の進化は、電子と正孔の連続方程式で説明されます。
∂n/∂t = (∇・J n ) / q
∂p/∂t = − (∇・J p ) / q
これは、FiPy の標準形式で次のように表現できます。
∂n/∂t = μ n ∇·(− n ∇ φ ) + D n ∇² n
∂p/∂t = − ( μ p ∇·(− p ∇ φ ) − D p ∇² n )
FiPy の問題を解決するには、まずモジュールをインポートして物理パラメーターを定義します。
次に、メッシュ、ソリューション変数、およびドーピング プロファイルを作成します。
次に、セルの中心にいくつかの初期値を設定し、すべてのパラメーターにディリクレ境界条件を課します。
ポアソン方程式を次のように表します。
としての連続方程式
方程式を結合してスイープして解く:
メッシュ サイズ、時間ステップ、時間ステップ数、スイープ数などのさまざまな値を試してみました。多少の変動は見られますが、現実的な解決策を提供する一連の条件を見つけることができませんでした。問題はおそらく現在の用語の表現にあると思います。
通常、これらの方程式を解く場合、電流密度は、直接離散化ではなく、Scharfetter-Gummel (SG) 離散化スキームを使用して近似されます。SG 方式では、セル面を通過する電子電流密度 ( J ) は、セルKおよびLのいずれかの側の中心で定義された電位 ( φ ) および電荷密度 ( n )の値の関数として近似されます。
J n,KL = qμ n V T [ B ( δφ/V T ) n L − B (− δφ/V T ) n K )
ここで、qは電子の電荷、μ nは電子移動度、V Tは熱電圧、δφ = φ L − φ K、B ( x ) はベルヌーイ関数x /( e x −1) です。
FiPy でスキームを実装する方法は、私には明らかではありません。があるのを見てきましたがscharfetterGummelFaceVariable
、この問題に適しているか意図されているかをドキュメントから判断できません。コードを見ると、係数e φ Lを掛けたベルヌーイ関数のみを計算しているように見えます。scharfetterGummelFaceVariable
この種の問題を解決するために を直接使用することは可能ですか? もしそうなら、どのように?そうでない場合、FiPy を使用して半導体デバイスをシミュレートできる代替アプローチはありますか?