計算科学

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

1
ノイマン問題を解決し、レベル数に依存しない収束速度を持つマルチグリッドアルゴリズムはありますか?
マルチグリッド法は通常、レベル上のディリクレ問題を解決します(たとえば、ポイントヤコビやガウスザイデル)。連続有限要素法を使用する場合、小さなディリクレ問題を組み立てるよりも、小さなノイマン問題を組み立てる方がはるかに安価です。BDDC(FETI-DPなど)などの非重複ドメイン分解法は、レベルで「ピン留めされた」ノイマン問題を解決するマルチグリッド法として解釈できます。残念ながら、マルチレベルBDDCの条件数は次のようにスケーリングされます C( 1 + ログ(Hh))2 LC(1+ログ⁡(Hh))2LC \left(1 + \log \left(\frac{H}{h}\right)\right)^{2L} ここで、はレベル数、は粗化率です。対照的に、ディリクレ問題に基づくスムーザーを使用したマルチグリッド法の条件数には、レベル数に依存しない条件数があります。H / hLLLH/ hH/hH/h レベルの独立性を失うことなく、「固定された」ノイマン問題を解決する方法はありますか?
14 pde  multigrid 

3
エージェントベースのモデルを説明するためのベストプラクティス
私は数学生物学/疫学にかなり重点的に取り組んでおり、モデリング/計算科学のほとんどの作業はまだODEのセットに支配されており、明らかにかなり複雑なセットもあります。これらのモデルの利点の1つは、説明と複製がかなり簡単なことです。パラメータ値の表、および方程式自体と、あなたが研究を再現するために必要なすべての方法を、彼らがそれを実装したいと思う方法で誰かに与えました。 しかし、やや複雑なモデルが一般的になり始めています。特に、エージェントベースのモデルは、一連のODEで完全に記述されているとは限らないため、出版物で記述するのが難しく、複製するのが難しいようです。読者が何が起こったのかを理解し、比較的簡単に複製できるようにこれらのモデルを説明する背後に、ガイドラインまたは実際の経験がありますか?


1
MDシミュレーションの複雑さ
私は分子動力学(MD)シミュレーションが初めてです。シミュレーション時間に関する分子動力学シミュレーションの複雑さは何ですか?言い換えると、シミュレーション時間を10ナノ秒から20ナノ秒に増やしたい場合、ランタイムの増加に関して何が期待できますか?

4
大量のデータを処理する方法は?
プラズマダイナミクスのシミュレーションでは、多くの場合、大量の情報が生成されます。シミュレーション中に、少なくとも10個のプロパティについて、(8192x1024x1024x1500)と同じ大きさのグリッド(x、y、z、t)にさまざまな物理的プロパティを記録します。この情報は、シミュレーションの完了後に処理されます。それで私たち プロパティのムービーを作成し、 フーリエ解析を実行し、 平均プロパティを計算します。 できるだけ多くの情報をこのように単純にダンプすることは、小規模なシステムを調査したときにうまく機能しました。これにより、結果とやり取りし、後でそれをどうするかを決定する柔軟性が得られました。また、単純にシミュレーションを実行するために計算リソース(CPU時間)を割り当てることもできました。 フーリエ解析をオンザフライで実行し、長さスケールの選択範囲のみをフィルタリングするプロセスを開始しました。数値的な理由から、実際に必要な長さよりも小さい長さスケールを解決する必要がある場合があります。そのような場合、このフィルターは非常に役立ちます。また、パラレルI / Oオプション、特にパラレルHDF5など、さまざまなパラレルIOライブラリも検討しています。 データ処理の効率を最大化するための戦略は何ですか? その場ですべての分析(映画やプロットなどの後処理を含まない)を実行することに利点はありますか? 私はこの問題が他の研究分野で起こることを想像できます。たとえば、長い間進化する必要がある分子動力学シミュレーションがあるかもしれませんが、興味深いことが起こっている短い瞬間に興味があります。またはCFDでは、初期の開発は遅いかもしれませんが、乱流が始まると、ダイナミクスを監視するためにより高い時間分解能が必要になる場合があります。 シミュレーションから洗練された結果収集の自由に利用可能な例はありますか?


4
同じ構造を持つ2つの異なるVTKファイルに保存された2つのフィールド間の数値の差を計算するにはどうすればよいですか?
構造化されたグリッド形式の2つのVTKファイルがあるとします。構造化されたグリッドは同じであり(同じ順序で同じポイントのリストを持っています)、各VTKファイルに「Phi」と呼ばれるフィールドがあります。同じ構造のグリッドを使用して、3番目のVTKファイルを作成し、最初のVTKファイルのPhiと2番目のVTKファイルのPhiの差であるフィールドをプロットします。 これを手動で行う方法を知っています。2つのVTKファイルの未加工テキストを解析し、データを配列にコピーし、一方の配列を他方から減算し、正しい形式のデータを新しいファイルにダンプできます。この差を計算してVTKにエクスポートするより良い方法はありますか?Python、またはVisItやParaviewのような視覚化ソフトウェアのソリューションは、C ++のようなコンパイルされた言語を使用するよりも望ましいでしょう。 この差を計算する目的は、PDEの解を計算するためのさまざまな数値手法を比較することです。同じソフトウェアを使用してソリューションを生成しているため、生成する各ファイルでフィールドPhiを除くすべてのデータが同じになることを保証できます。

4
混合整数計画問題を解決する最速のソフトウェア(オープンソース)
混合整数プログラミングの問題があります。そして、GLPKをソルバーとして使用しています。しかし、GLPKは線形計画法の問題には適していますが、混合整数計画法にははるかに長い時間が必要であるため、要件を満たしていません。他のソフトウェアを探しています。混合整数プログラミング問題を高速で解決する他の優れたオープンソースツールはありますか?ありがとう!

2
計算科学者が独自のバージョンのstd :: complexを実装する必要があるのはなぜですか?
ような計算科学における良好知らC ++ライブラリの多くの固有、Trilinos、及びdeal.IIは、標準C ++テンプレートヘッダライブラリオブジェクトを使用し、std::complex<>複雑な浮動小数点数を表現します。 ジャックPoulsonのでは答えデフォルトコンストラクタについての質問に、彼は彼が彼の独自の実装を持っていることを指摘std::complexしてエレメンタル「いくつかの理由のために」。それらの理由は何ですか?このアプローチの長所と短所は何ですか?

1
計算物理学で知られる大学
私は計算物理学に非常に興味があり、これらのトピックを研究するのはとても楽しいです。私は1学期を海外に行くことを計画しているので、私はどの大学が計算物理学で知られているのだろうと思っていましたか?特にアメリカの大学に関しては? 計算物理学は物理学の巨大で独立した分野ではなく、理論物理学部門に統合されていることが多いことを知っています。しかし、それにもかかわらず、活発で成長している研究グループに関するヒントや提案を非常に感謝しています。 編集:私が興味のあるトピックについてもう少し詳細を追加するように頼まれました。 私は第4学士学期であり、格子量子場の理論についてはほとんど何も知らないので、それは少し難しいです。ですから、特定の研究分野を好むと言うのは難しいです。 私は、理論的背景が得られたらすぐに専門化できるように、計算物理学に関するいくつかの講義を行ったり、幅広い可能性を提供したりするような種類の大学/学部を見つけたいと思っていました。
14 education 

1
擬似乱数ジェネレータの周期をどのように決定できますか?
線形合同擬似乱数ジェネレーター(PRNG)を使用しているとします。シード、乗算係数(a)、シフト係数(c)およびモジュラス係数(m)が与えられた場合、PRNGの期間をどのように決定できますか?実験/パターン検出アルゴリズムによって決定しますか、またはその期間を計算するための直接的な式はありますか? x0x0x_0 私の質問は特に線形合同法に関するものですが、他のPRNGについても実際に期間がどのように計算されるかについて詳しく知りたいと思います。

2
GPUでODEシステムを解くためのオプション?
ODEの解法システムを「自明な並列処理」設定でGPUに展開したいと思います。たとえば、512の異なるパラメーターセットを使用して感度分析を行います。 理想的には、フォワードオイラーのような固定タイムステップではなく、CVODEのようなスマートアダプティブタイムステップソルバーを使用してODEソルビングを実行したいのですが、CPUの代わりにNVIDIA GPUで実行します。 誰かこれをやったことがありますか?ライブラリはありますか?
14 ode  gpu 

1
計算実験を行うためのガイドラインは何ですか?
物理学、生物学、化学などには、実験を行うためのさまざまなルールセットがあります。どのイベントが関連すると見なされるか、サンプルの汚染を回避する方法、再生プロセスを作成および修正する方法などです。 数値実験の精度と再現性を確保するための標準、プロトコル、およびベストプラクティスとは何ですか?

4
密行列が低ランクかどうかを迅速に判断する
私が取り組んでいるソフトウェアプロジェクトでは、特定の計算は、高密度の低ランクマトリックスに対して非常に簡単です。いくつかの問題の例には、高密度の低ランクマトリックスが含まれていますが、それらは要因としてではなく、完全に与えられているので、低ランク構造を利用したい場合は、ランクをチェックしてマトリックスを分解する必要があります。 問題のマトリックスは通常、完全にまたはほぼ完全に高密度で、nは100から数千までの範囲です。行列のランクが低い場合(5〜10未満など)、SVDを計算し、それを使用して低ランクの因数分解を行うことは労力に値します。ただし、マトリックスのランクが低い場合、労力は無駄になります。 したがって、完全なSVD分解を行うための労力を投資する前に、ランクが低いかどうかを判断するための高速で合理的に信頼できる方法を見つけたいと思います。ランクがカットオフを超えていることが明らかになった場合、プロセスはすぐに停止できます。手順が誤って低ランクであるとマトリックスを宣言した場合、これは大きな問題ではありません。低ランクを確認して低ランクの因数分解を見つけるために完全なSVDを実行しているからです。 私が検討したオプションには、LU分解またはQR分解を示すランクの後にチェックとして完全なSVDが含まれます。他に考慮すべきアプローチはありますか?

2
非常に大きくて非常に疎な隣接行列のすべての固有値を計算する
それぞれ約n〜100000個のノードを持つ2つのグラフがあります。両方のグラフで、各ノードはちょうど3つの他のノードに接続されているため、隣接行列は対称で非常にまばらです。 難しい部分は、隣接行列のすべての固有値が必要ですが、固有ベクトルは必要ないことです。正確に言うと、これは私の生涯に1回(少なくとも私が見る限りでは!)になるので、すべての固有値を取得したいのですが、それらを取得するのに数日待つことは気にしません。 scipyラッパーを試してみましたARPACKが、時間がかかりすぎます。複数のライブラリを見つけましたが、最大/最小の固有値のサブセットを取得するのに最適です。すべての固有値を取得するために、おそらく並列実装で対称スパース行列に機能するライブラリはありますか?

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