タグ付けされた質問 「software」

科学的または数値計算に最適なライブラリおよびスタンドアロンソフトウェアに関する質問。

3
計算手法を学ぶための優先事項、大学院生としてライブラリを使用するのと比較して、自分のコードをいつ書くべきですか?
私は大学院で工学の研究を始めており、計算科学プロジェクトに取り組んでいます。ここで、独自のアルゴリズムを実装することの利点と欠点についていくつかの議論があったことに気づきました。独自のアルゴリズムを実装する場合とライブラリを使用する場合の費用便益分析は、大学院生である場合と異なりますか?

1
より高いレイノルズ数のためにCFDソルバーを再実行する必要があるのはなぜですか?
私はウェブサイトで提供されているCavityチュートリアルからOpenFOAMを学び始めました。「2.1.8.2コードの実行」のセクションでさまざまなレイノルズ数を試してみると、「解の時間を増やすことは理にかなっている」ため、チュートリアルではソルバーを再実行するように言われています。しかし、これを行ったとき、クーラント数が低い(0.2)と高い(0.6)のキャビティ内の流れの間に、なんらかの違いを見つけることができませんでした。 シミュレーションを再実行する必要があるかどうかはどうすればわかりますか?

4
代数マルチグリッドコード
代数的マルチグリッド法(AMG)の実装に関する詳細を理解したいと思います。私は「マルチグリッドチュートリアル」を読んでいます。これは非常に優れており、AMGの補間、粗グリッドオペレーター、粗グリッド選択のすべての詳細を説明しています。しかし、コードをいじって読むのと同じだと私は思います。 そこで、SF McCormickの「Multigrid Methods」(SIAM)の最後にある幾何学的マルチグリッドFORTRANコードのような、古典的なAMGの「サンプルコード」を誰かが知っているかどうかを尋ねたいと思います。メソッドの詳細を学ぶためにBoomerAMGのような高品質で量産コードを入手するのは非常に困難です。

4
データベースを使用して大量の結果を処理する必要がありますか?
バックグラウンド: 現在、大量のパラメータ変動実験を行っています。これらはnumpyを使用してPython 2.6以降で実行されています。これらの実験の実行には約2週間かかります。 大まかに私は3つのパラメーター(独立変数)を値の範囲で変化させています。さらに6つの独立変数を修正します(今のところ)4つの従属変数についてレポートしています。 私が変更しているパラメーターの1つは、いくつかのプロセス(およびコンピューター)に分散されています。これらの各パラメーターcsvについて、すべての変数(独立、固定、依存を含む)の値を各行に含む個別のファイルを生成します。すべてのバリエーションで、約80,000行のデータが生成されると予想されます ほとんどの場合、私は従属変数の1つの値だけを見ていますが、予期しないことが起こったときに何が起こっているかを説明できるので、他の変数はそのままにしておきます。 この実験の以前のバージョンでは、2つのパラメーター(それぞれ2つの値のみ)で変化していcsvましたが、このファイルをスプレッドシートプログラムにコピーアンドペーストし、一連のコピーペーストを実行して、興味のある従属変数のみのテーブルを作成しました。 。MS-Excelで厄介なことをして数式で並べ替えること。これは、私が持っていた6つの実験結果セットにとって十分な苦痛でした。この実行が完了するまでに、結果が2桁増えることになります。 質問: 一度終わったら、csvファイルのすべての結果をデータベースにダンプし、興味のある部分を照会できると考えていました。次に、それらの結果を取り、分析のためにスプレッドシートに入れます。グラフを作成し、制御結果に関連するスコアを見つけるなど 私は正しい線に沿って考えていますか?(これは人々がすることですか?) 私のデータベースfooは、MS-Accessを使用していて良かったとしても、最近はかなり錆びています。これにもMS-Accessを使うつもりでした。

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 …

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

1
大きなインデックス配列のテストと視覚化
節点不連続ガラーキン法をすぐに実装し、メッシュと多項式データを前提として、計算する必要がある基本的なインデックス配列を知る前にこれを実行します。 前のコードで遭遇した問題は、内部/外部トレースのインデックス付けなどの計算で行った微妙な間違いでした。単純なテストケースでは発生しなかった問題が大きなメッシュで発生し、境界条件が適切に課されていないため、通常はこれにより不安定なスキームが生成されます(10ステップごとにシミュレーションを監視するだけで、局所的な問題が発生する可能性はありません)。 。 私は、経験豊富な人々が、インデックス配列に対して実行して、それらが正しいことを確信するための優れたテストを知っていることを望んでいます。求積法、導関数などは非常に簡単にテストできますが、他のことはわかりません。 私が過去に行ったいくつかのテストでは、内部法線を外部法線に追加しています。これにより、0または+ -2が得られます。コード変更の結果をすばやく確認できると便利ですが、インデックス作成でこれを行う意味のある方法は考えられません。 また、これらは四角形や六角形にも適用され、曲線要素の可能性があります。動作中のライブラリと比較する既存のコードはあまりありません。 比較するために既存の正解に依存しない、私が書ける優れた単体テストがある場合のボーナスポイント。私は多くの優れたヒューリスティックスで解決します。

1
rotheの方法と線の方法によるPDEの離散化(モジュラー実装)
熱方程式は、FV(またはFEM)を使用して空間で離散化され、半離散方程式が得られます(ODEのシステム)。行の方法と呼ばれるこのアプローチでは、コードを重複させることなく、一時的な離散化から別の離散化に簡単に切り替えることができます。特に、ODEのタイムインテグレーターを簡単に再利用できます。これは、空間離散化をFVからFEに変更することを決定した場合でも、半離散方程式を取得し、時間積分器が機能するため、非常に便利です。 現在、私は同じ問題に対してrotheの方法を実装しようとしています。ただし、時間内での離散化では、まず、使用したいすべての時間的離散化スキームの空間的離散化を書き換える必要があります。これにより、以前使用していたタイムインテグレーターを再利用する必要がなくなり、線の方法またはRotheの方法の両方を使用してPDEを離散化できるモジュラーソフトウェアの作成が非常に複雑になります。 コードを複製せずに両方のアプローチを実装する方法はありますか? 編集: 対流が支配する問題では、FEの離散化には時間と空間の両方で安定化が必要であり、Rotheの方法が「最良の」選択になります。ただし、これはFV / DGメソッドには当てはまりません。 線の方法では、PDEはまず空間で、次に時間で離散化されます。Rotheの方法では、PDEは最初に時間で離散化され、次に空間で離散化されます。3番目の可能性は、空間と時間の両方を同時に離散化することです(時空間離散化とも呼ばれます)。線の方法とRotheの方法についての議論はここにあります。詳細については、DoneaとHuertaによる「フロー問題の有限要素法」という本が参考になります。

3
MATLABユーザー向けのObjective-C / Cocoaを使用したMacでの科学的プログラミング
Objective-Cを使用してMacで科学的なプログラミングを始めたい。複雑な値の波形データをベクトルに格納し、プロットを生成することを容易にするMATLABに非常に精通しています。Objective-C / Cocoa環境で一般的なMATLAB操作(複雑な値の配列の作成やメッシュプロットの生成など)を実装する方法を比較できる優れたリソースがあるかどうか疑問に思っていました。

2
コードベースの全体的な構造を理解する良い方法は何ですか?
他の誰かがオープンソースコードを変更したり、独自のアプリケーション用に特定のものを開発する方法を見つけたりすると、私の仕事で役立つことがあります。ただし、すべてのソフトウェアに適切なドキュメントがあるわけではありません。 コードベースの全体的な構造を理解する良い方法は何ですか? たとえば、どのルーチンがどのルーチンを呼び出すかなどです。この目的のためにDoxygenなどのドキュメントツールを自分で使用する可能性がありますが、もっと良い戦略があるかどうか疑問に思っていましたか?
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.