計算科学

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

1
複数の非同期転送のMPIポリシー
MPIでの複数の非同期非同期転送のポリシーは何ですか? いくつかの開いている非同期irecv操作を持つプログラムがあります。発生する可能性のある転送(対応するものisendが呼び出された)が、まだ準備ができisendていない(対応するものがまだ呼び出されていない)他の転送を待機していることがわかりました。明らかに、この非効率性はネットワークの競合に起因するものではありません。ネットワークが不必要にアイドル状態になっています。 私のプログラムは次のようになります。 マシン1 call irecv(variable A from machine 2) call irecv(variable B from machine 2) call irecv(variable C from machine 2) call wait(variable C from machine 2) call do_important_work_with(variable C) .... マシン2 call isend(variable C to machine 1) call isend(variable B to machine 1) call do a bunch of …

1
時間微分を追加し、時間をかけて行進することにより、この時間に依存しないPDEを解決できますか?
このPDEを解決したい: 現在、ADIメソッドを使用して時間微分(部分d /部分t)を含む非常に類似したpdeのpdeソリューションを自動的に生成するコードがあります。 接続されたpdeを時間微分を含むpdeで近似する方法があるかどうか疑問に思いますか? 一次元のpdesにはアプローチがあることを知っています。たとえば、添付されたpdeですべてのY導関数を削除した場合、pdeは、時間導関数を追加し、拡散項に大きな数を乗算することで、暗黙的なステップと1ステップを使用して近似できます。 助けていただければ幸いです、ありがとう、ロブ
8 pde 

2
(自己)教育のための簡単なMHDシミュレーションコード
電磁流体力学の問題を解くための超単純な計算コードが欲しいのですが。高精度でもパフォーマンスでも問題ではありません。プラズマの定性的な振る舞いを視覚的に探求するだけではありません。私にとって重要なのは: 一般性-MHDの特定のサブ問題に特化すべきではありません 動作させるのは簡単 -インストールが難しいライブラリは必要ありません。入力はわかりやすく、いくつかの例で十分に文書化されています 読みやすく、変更しやすい -コードを読んで、MHDソリューションについて学ぶことができます。このコードを独自のMHDコード開発の開始点として使用できます。 このNavier stokesソルバーと同じくらい簡単なものが最適です python-numpyまたはjavaが最適ですが、C ++またはFortranは私にとって大きな問題ではありません。 今まで私は見つけました: 一部のライブラリ(MHD-Hermesとpython-mhd)はpythonにありますが、ドキュメントや使用例がないようです。 そして、これは 無料、高速、シンプル、そして効率的なTVD MHDコードで、frotranにありますが、400行しかありません 私は自分で何かを書くことを考えていましたが、同様のものがすでに利用可能であることを確認したいと思います。上のリンクからNavier-Stokesソルバーを取得し、FFTポアソンソルバー(またはParticle Mesh Ewald)によって電位と磁気ポテンシャルを導入するだけで、かなり簡単になると思います。

1
SLEPcを使用した線形安定性解析から大規模な非エルミート一般化固有値問題を解く
一般化された行列問題があります。線形安定性解析問題のスペクトル法からのです。私の行列Bは対角で正の半定値です。Aは非エルミートで複雑です。Ax=λBxAx=λBxA x = \lambda B x 私の問題は、SLEPcの一般化された固有値ソルバーを使用すると、「LU分解のピボットがゼロ」というエラーが発生することです。以下の残りの部分は、問題の詳細とこれまでに試したものです。助けてくれてありがとう! 問題の詳細 行列は最大で約48000 x 48000になり、固有値を見つけたいと思います。私が興味を持っている固有値は、0 + 0iの近くに実数部が最も大きいものです。理想的には、それらが内部にある場合(つまり、スペクトル内の正の実部がより大きい他の固有値がある場合)でもそれらを見つけられるようにしたいです。ただし、すべての固有値が対象の固有値以外の実部<0である問題に対して機能させることができれば幸いです。 現時点では、scipy linalg.eigおよびsparse.eigs関数を使用しています。私の知る限り、これらはそれぞれLAPACKとARPACKを使用して重い作業を行います。私は、SLEPcライブラリを使用することで、より良いパフォーマンスを達成できるかどうかを確認することにしました。これが悪い決定であるならば、私に知らせてください! SLEPc固有値ソルバーでPETScを使用したいと思います。私は、チュートリアルの一部として提供されている例を使用してSLEPcを試しました。演習7(http://www.grycap.upv.es/slepc/handson/handson3.html)は、ファイルから行列AおよびBを読み取り、解を出力します。提供されたマトリックスを使用してこれを正常に動作させました。ただし、問題の小さいサイズのテストバージョン(6000x6000)に置き換えると、指定したコマンドライン引数に応じてさまざまなエラーが発生します。 私が抱えている主な問題は、「LU分解のピボットがゼロ」というエラーです。デフォルト設定を使用する場合。 これは、Bにゼロの行が含まれているという事実に関連していると思いますが、線形代数の私の理解はやや基本的です。これは本当ですか? petscのWebサイトで提案されているオプション、-pc_factor_shift_type NONZEROなどを設定しようとしましたが、これらのオプションが使用されなかったという追加の警告が表示されます これは前提条件の問題であると想定したので、-eps_targetを0.1に設定し、-st_type sinvertとshiftを指定した場合と指定しない場合の両方を試しました。それでも同じエラーが発生します。 次に、-st_pc_type jacobiとst_pc_type bjacobiを試しました。jacobiは実行されますが、固有値は生成されません。ブロックjacobiはLU分解を実行し、同じエラーを再度表示します。 デフォルトの方法はkrylov-schurなので、-eps_type gdおよび-eps_type jdオプションを使用して実験しました。残念ながら、これらはナンセンス固有値を生成するようですが、scipyでLAPACKを使用して解決すると、スペクトルにまったく表示されません。 私の行列の問題は特異ではないことを知っています。なぜなら、私はscipyを使用してそれを解くことができるからです。 これらすべての異なるソルバーの動作を理解するために、PETSCとSLEPCのマニュアル以外に読む必要がある本/ガイドを知っていますか? コマンドラインオプションがない場合の出力を以下に示します。 私の最初の投稿を読んでいただきありがとうございます。 よろしく、トビー SLEPcからのターミナル出力 tobymac:SLEPC toby $ mpiexec ./ex7 -f1 LHS-N7-M40-Re0.0-b0.1-Wi5.0-amp0.02.petsc -f2 RHS-N7-M40-Re0.0-b0.1- Wi5.0-amp0.02.petsc -eps_view ファイルに保存されている一般化された固有問題。 [0] PETSC ERROR:---------------------エラーメッセージ--------------------- --------------- …

4
メッセージの受信をMPIプロセスに通知する効率的な方法は何ですか?
ではMPI、他のプロセスからメッセージを受信する必要があることをプロセスのグループに通知するための組み込みメカニズムはありますか? 私のアプリケーションでは、すべてのプロセスが既知のランクID(各反復で変更される可能性がある)を持つプロセスのグループにデータを送信する必要がありますが、メッセージを受信するプロセスのランクはわかりません。ありとあらゆるプロセスに問い合わせることなくこれを実現するポータブルな、できれば組み込みの方法はありますか?
8 mpi 

3
非定常CFDシミュレーションの精度に対する時間ステップ値の重要性
概観 私の理解では、正確な結果を得るには、時間ステップ(h-最小メッシュ要素、v-速度)を使用する必要があります。Δt&lt;hvΔt&lt;hv\Delta t < \frac{h}{v} しかし、これはシミュレーションの精度にとって本当に重要なのでしょうか。独立したメッシュを持つことと同じくらい重要ですか? タイムステップに依存しないソリューションのようなものさえありますか?非常に小さい実際には解の精度に悪影響を及ぼす可能性がありますか?ΔtΔt\Delta t 速度が重要な計算最適化を実行しています。を使用するのにどれだけの正当性がありますか?Δt&gt;hvΔt&gt;hv\Delta t > \frac{h}{v} また、が0から60 m / sに変化する過渡シミュレーションを実行しています。最小の sに設定する必要があります(動的に変更することはできません)?。vvvΔt≈0.0007Δt≈0.0007\Delta t \approx 0.0007ΔtΔt\Delta t 問題の詳細 オイラーオイラーモデル(Fluent™)を使用して、流動層での粒子と空気の相互作用をシミュレートしています。

2
3次元Delaunay三角形分割の適切なデータ構造とアルゴリズム
私は3Dデローニー三角形分割(E3のランダムポイント)の目標を達成するためにいくつかの貧弱なコードを作成しましたが、時間がかかり、5つのポイントが1つの球で正確に(または丸め誤差が原因で)ある場合、私のコードはこの状況を適切に処理できません。 四面体のリストと点のリスト、および四面体とその近傍との関係のリストである基本的なデータ構造を使用します。アルゴリズムはインクリメンタル挿入です。 誰かがどの種類のデータ構造とアルゴリズムを優先するべきか教えてもらえますか?クアッドエッジのデータ構造をこの状況で使用できますか?このトピックに関する論文を読んだとき、このデータ構造は3Dアプリケーションには適していない可能性があります(厳密に言えば、3Dマニホールドアプリケーションには適していませんか?分割統治はより良いアルゴリズムですか?ありがとう!

2
関数の相対誤差が与えられた場合の導関数の相対誤差の境界
関数仮定相対誤差に結合するように計算することができることである、すなわち及び 、それぞれ計算され、正確な値であり及びR f −(x )= f (x )(1 + r )f − f f | r | ≤ RfffRRRf−(x)=f(x)(1+r)f−(x)=f(x)(1+r)f^-(x) = f(x)(1+r)f−f−f^-ffffff|r|≤R|r|≤R|r| \leq R 次の微分近似の相対誤差を、一般的なに対してとでしたいR fhhhRRRfff f′(x)f′′(x)≈f(x+h)−f(x−h)2h≈f(x+h)−2f(x)+f(x−h)h2f′(x)≈f(x+h)−f(x−h)2hf″(x)≈f(x+h)−2f(x)+f(x−h)h2\begin{align*} f^{'}(x) &\approx \frac{f(x+h)-f(x-h)}{2h}\\ f^{''}(x)&\approx \frac{f(x+h)-2f(x)+f(x-h)}{h^2} \end{align*} ラルストンとラビノウィッツでは、境界はそれぞれRhRh\frac{R}{h}と 4Rh24Rh2\frac{4R}{h^2}与えられます。しかし、これは証明されておらず、リチャードソン外挿についての説明の一部として言及されています。 その証明に関するアイデアはありますか?

2
メッシュ独立性調査:独立メッシュは本当に最高のメッシュですか?
私はメッシュ独立性研究を行っています。メッシュ1から始めて、メッシュ内のセルの数を2倍にするたびにメッシュ4に進みます。並行して、計算結果を実験データと比較しています。M. 1は悪い結果を示しています。M. 2は、大幅な改善と実験結果との良好な一致を示しています。M. 3及びM. 4だけわずかに異なるからである農産物同じ結果、M. 2。その場合、最終的なメッシュとしてM. 3を選択することは賢明に思えます。しかし、結果はスムーズすぎて、Mによって生成された詳細の一部が失われているようです。2 (そして実験で観察された)。 実際にある種の過剰補正はありますか?メッシュに依存しないソリューションが必ずしも最善のソリューションではない可能性がありますか?

4
シンプレックス法を実現可能な内部ポイントから開始するにはどうすればよいですか?
線形計画問題の実行可能な解決策を生成する1つのアルゴリズムがあります。ただし、これはコーナーポイントではない可能性が非常に高いです。このため、制限付きシンプレックスソルバーの最初の実行可能なソリューションとして直接使用することはできません。このソリューションから使用可能なコーナーポイントを効率的に見つけるにはどうすればよいですか? 簡単に言うと、実現可能な内部ポイントからシンプレックス法を開始するにはどうすればよいですか?

1
ショートリーウェラー有限差分法
Shortley-Weller有限差分法の簡単でわかりやすい説明へのリンクを教えてもらえますか?私はそれをグーグルにしようとしました、しかし私が得るすべては(アクセスできない)学術出版物です。ヴォルフガングハックブッシュの本「楕円微分方程式」の専用の章(4.8)も読んでみましたが、かなり難しいと思いました。ありがとうございました クリスチャンクラソンへ:答えてくれてありがとう。しかし、まだ理解できていないことがあります。この方法を任意の境界に適用するために何をしなければならないのですか(たとえば、流れの非対称翼など)。

2
電磁気学のためのオープンソース3D FEMソルバー(Time-Harmonic Maxwell)
3D時間調和Maxwellの方程式に適した(正確/高速/使いやすい)優れたオープンソースFEMソルバーがあるかどうか疑問に思っていました。X / Y次元で数波長、Z次元で数十波長のシステムをシミュレーションするので、比較的小さなサイズの問題が発生します。私の誘電体はすべて均質で完全に長方形(ボックス)です。 オンラインで検索したところ、さまざまな成熟したオープンソースFEMパッケージが見つかりましたが、Maxwellをサポートしていないようです。どんな提案も大歓迎です!

1
(本から)この結果を再現する方法は?
興味のある結果は、「同期:非線形科学における普遍的な概念」ページ図ます。この投稿の最後には、特有のフラグメントも示されています。33333333314.314.314.3 したがって、基本的には、初期条件(横軸)の1次元配列に適用されるこの散逸性結合があり、時間(縦軸)とともに変化します。正確な初期条件がわからないので、同じ結果が得られないことに気づきましたが、それはこの投稿のポイントではありません。 実際の問題は、進化の法則をどのように適用するかわかりません。単一の反復を受ける初期条件がある場合、結果は基本的にそれらの初期条件の関数になります...問題のこの関数(手順)は何ですか? MatLabで計算できるようになりたいです。確かにそこにいくらか関連する標準関数がなければなりません...

2
セル/要素はいくつ必要ですか?
私はCFDモデリングで比較的新しいです。長方形のボックス(l×w×h=120×80×8l×w×h=120×80×8l \times w \times h = 120\times 80 \times8 m)のVOFモデルを作成し、長い間入口(w×h=10×8w×h=10×8w\times h = 10\times 8)を作成しています側。 圧力出口はボックスの上面です(l×w=120×80l×w=120×80l\times w=120\times 80 m)。箱は最初555 mの水で満たされています。入口での水は、入口を通って流入され、速度:周り0.10.10.1へ0.010.010.01メートル/秒 ボックス内のフローパターンを適切に示すために、セル/要素はいくつ必要ですか?

1
LSEの解の事前調整と精度への影響
数値解析に関する私のコースでは、線形方程式系の前処理の主な主な動機は、そのLSEの反復ソルバーの収束率を上げることであると教えられました。 しかし、計算された解の精度に影響はありますか? GolubとVan Loanによる行列計算(p。122)にある、ガウスの消去法の計算解の精度に関する結果を覚えています。(特定のノルムに関する)条件数は、そのアルゴリズムによって計算される数値解の精度に実際に影響します。 例えば、共役勾配法によって得られる解についても、同様のことが当てはまると期待できます。私はこれを計算実験で観察したと思います。いくつかの停止基準が満たされるまで(長い)条件なしのシステムで共役勾配法を実行すると、計算された解は依然として高い残差を示しました。したがって、条件数が少ないほど実行時間が短くなるだけでなく、計算されたソリューションの残差(またはエラー)も低くなるのではないかと思います。これは必然的に数値の安定性の問題であり、不正確な算術で作業する必要があることに注意してください。 (私はmath.SEでも同じ質問をしましたが、このサイトの方が適切かもしれません。)

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