問題タブ [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 で無限の計算を修正するには?
私の問題は非常に単純です。解決したい方程式 (コードの最後のセクション) を取得すると、計算は無限になります。メッシュか段差の問題でしょうか。
したがって、私の問題は、2つの類似した3つの偏微分方程式を解くことです。いくつかのパラメーターを変更しましたが、これは常に無限です。
これが私のコードです:
実際、計算は方程式のセクションで終わりがなく、特に最初の 2 つ (cc と ca) では無限です。そして、私が期待しているのは、cc、ca、および phi の進化を示すグラフです。
numerical-methods - FiPyでオイラー・ベルヌーイビーム方程式を解く方法は?
FiPy がどのように機能するかを理解するために、端点が固定されているEuler-Bernoulli ビーム方程式を解きたいと思います。
簡単にするために、 としq(x,t) = sin(x)
ます。
FiPyでそれを定義して解決するにはどうすればよいですか? sin(x)
方程式内の唯一の独立変数に関してソース項を指定する方法は?
python - Fipy で変数が非負になるように強制する
現在、Python で FiPy を使用してセル変数phiに関する微分方程式 ( eq0 ) を解くためにスイープ ループを使用しています。私の方程式は非線形であるため、以下のコードの抜粋に示すように、スイープループを使用しています。
しかし、次のエラーが発生し続けます。
C:\Python27\lib\site-packages\fipy\variables\variable.py:1100: RuntimeWarning: power return self._BinaryOperatorVariable(lambda a,b: pow(a,b), other, value1mattersForUnit=True で無効な値が検出されました)
C:\Python27\lib\site-packages\fipy\variables\variable.py:1186: RuntimeWarning: less_equal return self._BinaryOperatorVariable(lambda a,b: a<=b, other)
トレースバック (最新call last):
.. ファイル "SBM_sphere3.py", 行 59, in
....res0 = eq0.sweep(var=phi, dt=dt)
.. ファイル "C:\Python27\lib\site-packages\ fipy\terms\term.py"、207 行、sweep
....solver._solve()
.. ファイル "C:\Python27\lib\site-packages\fipy\solvers\pysparse\pysparseSolver.py"、行68、_solve
....self で。solve (self.matrix, array, self.RHSvector)
.. ファイル "C:\Python27\lib\site-packages\fipy\solvers\pysparse\linearLUSolver.py"、53 行目、_solve__ 内
....LU = superlu .factorize(L.matrix.to_csr())
..ファイル「C:\Python27\lib\site-packages\pysparse\misc__init__.py」、29行目、newFunc内
....return func(*args, ** kwargs)
.. ファイル "C:\Python27\lib\site-packages\pysparse__init__.py"、47 行目、factorize
....return self.factorizeFnc(*args, **kwargs)
RuntimeError: Factor は厳密に特異です
このエラーは、 eq0に存在する用語 phi^(2/3) が原因であると確信しています。この項を abs(phi)^(2/3) に置き換えると、エラーはなくなります。
スイープ ループは、ある時点でphiのいくつかのセルに対して負の値を返し、整数以外の指数で負の値をパワーすることはできないため、エラーが発生すると仮定します。
だから私の質問は:負の解決策を避けるためにスイープを強制する方法はありますか?
スイープする前に、すべての負の値を 0 に設定する行を含めようとしました。
エラーはまだ残っています (線形化されたシステムを解いた直後に、スイープが係数の新しい行列を計算しようとするためですか?)。
編集: FiPy 3.2でPython 2.7.14を使用しています。クエリに関連すると思われるコードの部分を以下に共有しています。コード全体は非常に拡張されています。いくつかのコンテキスト: サスペンション フローのバランス方程式を解いています。eq0は粒子相の物質収支方程式に対応し、phiは粒子の体積分率です。
関数vantHoffとvan_der_waalsは別のファイルで定義されています。