計算科学

科学的問題を解決するためにコンピュータを使用する科学者のためのQ&A

2
Crank-Nicolsonは、反応-拡散-移流(対流)方程式の安定した離散化スキームですか?
私は、PDEの一般的な離散化スキームにあまり精通していません。Crank-Nicolsonは拡散方程式を離散化するための一般的なスキームであることを知っています。移流項にも適していますか? 私は反応-拡散-移流方程式を解くのに興味があります。 ∂u∂t+∇⋅(vu−D∇u)=f∂u∂t+∇⋅(vu−D∇u)=f\frac{\partial u}{\partial t} + \nabla \cdot \left( \boldsymbol{v} u - D\nabla u \right) = f ここで、は物質拡散係数で、は速度です。DDDvuuuvv\boldsymbol{v} 私の特定のアプリケーションでは、方程式は次の形式で記述できます。 ∂u∂t=D∂2u∂x2Diffusion+v∂u∂xAdvection (convection)+f(x,t)Reaction∂u∂t=D∂2u∂x2⏟Diffusion+v∂u∂x⏟Advection (convection)+f(x,t)⏟Reaction\frac{\partial u}{\partial t} = \underbrace{D\frac{\partial^2 u}{\partial x^2}}_{\textrm{Diffusion}} + \underbrace{\boldsymbol{v}\frac{\partial u}{\partial x}}_{\textrm{Advection (convection)}} + \underbrace{f(x,t)}_{\textrm{Reaction}} これが私が適用したクランク・ニコルソン方式です、 あなたはn + 1j- UnjΔ トン= D [ 1 - β(Δは、xは)2(unj − 1− 2 unj+ …

9
浮動小数点データの圧縮
浮動小数点科学データを圧縮するために特別に設計されたツールはありますか? 関数がスムーズである場合、その関数を表す数値の間には明らかに多くの相関関係があるため、データは十分に圧縮されるはずです。ただし、バイナリ浮動小数点データを圧縮/ gzip圧縮しても、圧縮はうまくいきません。浮動小数点データを圧縮するために特別に開発された方法があるのだろうか。 要件: ロスレス圧縮、または保持する最小桁数を指定する可能性(アプリケーションdoubleによっては、必要floatな精度よりも高い精度が必要な場合があります)。 十分にテストされた作業ツール(つまり、理論的な方法を説明する論文だけではありません)。 1D数値データ(時系列など)の圧縮に適しています クロスプラットフォーム(Windowsで動作する必要があります) それは高速でなければなりません---できればgzipよりも遅くないことが望ましいです。数値をASCIIとして保存している場合、ファイルをgzipすることで、読み取りと処理を高速化できます(操作がI / Oにバインドされている可能性があるため)。 私は特に、実際にそのようなツールを使用した人々から話を聞きたいです。

10
SVDの堅牢なアルゴリズム
行列のSVDを計算するための簡単なアルゴリズムは何ですか?2×22×22 \times 2 理想的には、数値的に堅牢なアルゴリズムが欲しいのですが、単純な実装とそれほど単純ではない実装の両方を見てみたいと思います。Cコードが受け入れられました。 論文やコードへの参照はありますか?

10
ソフトウェアに対して選択するライセンスに関する推奨事項と経験
ソフトウェアの開発者は、作業の目標に応じて適切なライセンスを選択することができます。 誰がソフトウェアのライセンスを選択するかについて、いくつかの推奨事項/経験を提供できますか? すべてのコード化された作業をオープンソースコードとして「与える」ことの長所と短所は何ですか? 研究コードの恩恵を受けたい産業のプレーヤーに対処する方法は?
26 software 

2
反復線形ソルバーが収束しないのはなぜですか?
KSP(PETScの線形ソルバーパッケージ)から事前に条件付けされたKrylovメソッドを使用して、偏微分方程式の離散化と線形化によって得られるようなスパース線形システムを解くと、何が問題になる可能性がありますか? 私の問題で何が問題になっているのかを判断するには、どのような手順を踏めばよいですか? 線形システムを正常かつ効率的に解決するために、どのような変更を加えることができますか?

3
FortranコンパイラをMacにインストールするにはどうすればよいですか?(OS X 10.x、x> = 4)
関連質問:科学計算とHPCでのMac OSの状態 計算科学のかなりの数のソフトウェアパッケージがFortranで記述されており、Fortranはなくなりません。他のソフトウェアパッケージをビルドするには、Fortranコンパイラも必要です(注目すべき例の1つはSciPyです)。 ただし、Mac OS XにはFortranコンパイラが含まれていません。Fortranコンパイラをマシンにインストールする方法は?
25 software  fortran 

6
非常に大きなリンクグラフの視覚化
非常に大きな有向リンクグラフを視覚化するツールを探しています。現在、〜2,000,000のノードと〜1000万のエッジがあります。私はいくつかの異なることを試しましたが、ほとんどの場合、10万ノードのグラフを作成するのにも数時間かかります 私が試したこと: gephiで1日過ごしましたが、80Kノードを追加するのに約1時間かかり、アプリケーションはほとんど役に立たなくなります。 助言がありますか? インタラクティブな視覚化はプラスになります。

4
困難な振動積分の数値積分の方法
以下の積分を数値的に評価する必要があります。 ∫∞0s i n c′(x r )r E(r )−−−−√dr∫0∞sinc′(xr)rE(r)dr\int_0^\infty \mathrm{sinc}'(xr) r \sqrt{E(r)} dr ここで、、と。ここで、は第2種の修正ベッセル関数です。私の特定のケースでは、、およびです。のx∈R+λ、κ、ν>0Kλ=0.00313κ=0.00825ν=0.33E(r )= r4(λ κ2+ r2−−−−−−√)- ν- 5 / 2K- ν- 5 / 2(λ κ2+ r2−−−−−−√)E(r)=r4(λκ2+r2)−ν−5/2K−ν−5/2(λκ2+r2)E(r) = r^4 (\lambda\sqrt{\kappa^2+r^2})^{-\nu-5/2} K_{-\nu-5/2}(\lambda\sqrt{\kappa^2+r^2})X ∈ R+x∈R+x \in \mathbb{R}_+λ 、κ 、ν> 0λ,κ,ν>0\lambda, \kappa, \nu >0KKKλ = 0.00313λ=0.00313\lambda = 0.00313κ = 0.00825κ=0.00825\kappa = 0.00825ν= …


5
シンボリック式から数値的に正確な浮動小数点Cルーチンを自動生成できるソフトウェアはありますか?
実変数の実関数が与えられた場合、IEEE 754算術を搭載したマシンのすべての入力で関数を計算するための数値的に正確なコードを自動的に生成できるソフトウェアはありますか? たとえば、評価される実関数が次の場合: ソフトウェアは、致命的なキャンセルと、特定の入力セットの出力テーブル検索を考慮して、計算精度の低下を回避します。 あるいは、純粋なテーブルベースのルックアップルーチンを生成して、特定の関数を高精度で計算できるソフトウェアはありますか?

3
BFGS vs.共役勾配法
最適化のためにBFGSと共役勾配を選択する際に考慮すべきことは何ですか?これらの変数に適合させようとしている関数は指数関数です。ただし、実際の目的関数には、とりわけ統合が含まれており、それが役立つ場合は非常にコストがかかります。

2
数値積分器に関して「シンプレクティック」とは何を意味し、SciPyのodeintはそれらを使用しますか?
このコメントで私は書いた: ...デフォルトのSciPyインテグレータ。シンプレクティック法のみを使用していると仮定しています。 odeintここでは、「非スティッフ(Adams)メソッド」または「スティッフ(BDF)メソッド」のいずれかを使用するSciPyを参照しています。ソースによると: def odeint(func, y0, t, args=(), Dfun=None, col_deriv=0, full_output=0, ml=None, mu=None, rtol=None, atol=None, tcrit=None, h0=0.0, hmax=0.0, hmin=0.0, ixpr=0, mxstep=0, mxhnil=0, mxordn=12, mxords=5, printmessg=0): """ Integrate a system of ordinary differential equations. Solve a system of ordinary differential equations using lsoda from the FORTRAN library odepack. Solves the initial …

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} …

3
FEM離散化の弱い形式を導出する際に、部品による統合を使用する目的は何ですか?
PDEの強力な形式からFEM形式に移行する場合、最初に変分形式を述べることで常にこれを行う必要があるようです。これを行うには、強力な形式に何らかの(ソボレフ)空間の要素を掛けて、地域全体に統合します。これは受け入れられます。私が理解していないのは、なぜグリーンの式を使用する必要があるのか​​(1回または数回)です。 私は主にポアソンの方程式を扱ってきたので、例として(同種のディリクレ境界条件で)それをとると、 −∇2uu=f,u∈Ω=0,u∈∂Ω−∇2u=f,u∈Ωu=0,u∈∂Ω \begin{align} -\nabla^2u &= f,\quad u\in\Omega \\ u &= 0, \quad u\in\partial\Omega \end{align} 変分形式を形成する正しい方法は ∫Ωfvdx⃗ =−∫Ω∇2uvdx⃗ =∫Ω∇u⋅∇vdx⃗ −∫∂Ωn⃗ ⋅∇uvds⃗ =∫Ω∇u⋅∇vdx⃗ .∫Ωfvdx→=−∫Ω∇2uvdx→=∫Ω∇u⋅∇vdx→−∫∂Ωn→⋅∇uvds→=∫Ω∇u⋅∇vdx→. \begin{align} \int_\Omega fv\,\mathrm{d}\vec{x} &= -\int_\Omega\nabla^2 uv\,\mathrm{d}\vec{x} \\ &=\int_\Omega\nabla u\cdot\nabla v\,\mathrm{d}\vec{x} - \int_{\partial\Omega}\vec{n}\cdot\nabla u v\,\mathrm{d}\vec{s} \\ &=\int_\Omega\nabla u\cdot\nabla v\,\mathrm{d}\vec{x}. \end{align} しかし、最初の行の式を使用できないのは、FEMフォームを取得するために使用できる変分形式ではないのですか?双線形および線形形式b(u,v)=(∇2u,v)b(u,v)=(∇2u,v)b(u,v)=(\nabla^2 u, v)およびl(v)=(f,v)l(v)=(f,v)l(v)=(f, v)ませんか?ここでの問題は、線形基底関数(形状関数)を使用すると、剛性マトリックスがヌルマトリックス(反転不可)になるため、問題が発生することですか?しかし、非線形形状関数を使用するとどうなりますか?まだグリーンの式を使用する必要がありますか?する必要がない場合:推奨されますか?そうでない場合、変則的ではあるが弱くない定式化がありますか? ここで、高階微分を持つPDEがあるとしましょう。これは、グリーンの公式の使用方法に応じて、多くの可能な変分形式があることを意味しますか そして、それらはすべて(異なる)FEM近似につながりますか?

5
PETScとTrilinosの主な違いは何ですか?
私の知る限り、米国エネルギー省の計算科学ソフトウェアフレームワークの2つの大きなジェネリックは、 PETScとTrilinosです。言語の違い(CとC ++)を超えて、一見似ているように見えます。2つのフレームワークの主な違いは何ですか?また、どちらを選択するのに影響する要因は何ですか?(制度的バイアスと既存のインフラストラクチャを無視します。)

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