
PysDMは、粒子集団のダイナミクスをシミュレートするためのパッケージです。これは、分散相を含む流体フローをモデル化するシミュレーションシステムの構成要素として機能することを目的としており、PysDMは分散相の表現を担当します。現在、開発は大気中のクラウド物理アプリケーション、特に粒子ベースの(別名スーパードロップレット)アプローチを使用して湿った空気に浸された粒子のダイナミクスのモデリングに焦点を当てており、エアロゾル/雲/雨微細なものを表しています。このパッケージは、衝突成長を表すためのスーパードロップレット法(SDM)モンテカルロアルゴリズムのPythonic高性能実装(Shima etal。2009)を特徴としているため、名前が付いています。
PYSDMドキュメントは、https://open-atmos.github.io/pysdmで維持されます
PYSDMを使用してさまざまな種類の計算とシミュレーションを実行する方法を例示するJupyterノートブックの模範のセットが増えています。ノートブックのほとんどの例では、結果と文献からのプロットが再現されています。ノートブックへの例とリンクのリスト(「クラウドで」で実行または表示できます)については、以下を参照してください。
また、Jupyterノートブックの形のチュートリアルのセットも増えています。これらのチュートリアルは、教育目的を目的としており、PYSDMを使用してインタラクティブシミュレーションを実行するためのウィジェットと組み合わせたクラウドマイクロディジカル概念の短い説明が含まれています。各チュートリアルには、最後に宿題の問題として使用できる一連の質問があります。例と同様に、これらのチュートリアルは「クラウドで」実行または表示することができ、学生が開始するための特に簡単な方法です。
PysDMには、2つの代替の並列番号を作成できるバックエンドがあります。NumbaとGPU-Residentバックエンドに基づくマルチスレッドCPUバックエンドと、Thrustrtcの上に構築されたGPU居住バックエンドです。 Numbaバックエンド(エイリアスCPU )は、マルチコアCPUのマルチスレッド並列性を備えており、LLVMインフラストラクチャに基づいたジャストインタイムコンパイル手法を使用しています。 ThrustRTCバックエンド(エイリアスGPU )は、SIMT並列化モデルをレバレッジするPysDMのGPU居住操作を提供します。 GPUバックエンドを使用するには、NVIDIAハードウェアとCUDAドライバーが必要です。
PysDM機能の概要(および論文でPysDMを引用するための好ましい方法)については、Joss Papersを参照してください。
PysDMには、De Jong、Mackay et al。 2023。
PysDMに関する講演やその他の資料のリスト、およびPysDMシミュレーションを特徴とする公開された論文のリストについては、プロジェクトWikiを参照してください。
pysDM依存関係は、numpy、numba、scipy、pint、chempy、pyevtk、shrustrtc、curandrtcです。
pipを使用してPysDMをインストールするには、 pip install PySDM (またはpip install git+https://github.com/open-atmos/PySDM.gitをインストールして、最新リリースを超えて更新を取得します)。
Condaユーザーもpipを使用する場合があります。コンドラドキュメントにインストールされていない非コンダパッケージセクションを参照してください。 PysDMの依存関係は、次のコンドラチャネルで入手できます。
開発目的で、リポジトリをクローン化し、 pip -eを使用してインストールすることをお勧めします。テスト時間依存関係はpip -e .[tests]でインストールできます。
PysDMの例はPySDM-examplesパッケージを構成します。例には、 PySDM_examplesパッケージsetup.pyファイルにリストされている追加の依存関係があります。 Jupyterノートブックの例を実行するには、 PySDM_examplesパッケージをインストールする必要があります。提案されたインストールと起動手順は次のとおりです。
git clone https://github.com/open-atmos/PySDM.git
pip install -e PySDM
pip install -e PySDM/examples
jupyter-notebook PySDM/examples/PySDM_examples
または、Pypi.orgのPypi.orgのExamplesパッケージをpip install PySDM-examples使用してインストールすることもできます(これはノートブック自体には適用されず、サポートする.pyファイルのみに注意してください)。
プロジェクトに新しいコードを送信するには、GitHub Pullリクエストを使用してください。コード作成者の記録を保持し、コードレビューワークフローを追跡およびアーカイブし、新しく追加されたコードでテストの実行を自動化する継続的な統合セットアップの恩恵を受けることができます。
コードの寄付は、著作権の転送を暗示すると想定されています。例外を作成する必要がある場合は、プルリクエストを作成したり、他の方法でコードを寄付するときにそれを示してください。いずれにせよ、寄付コードのライセンスはGPL V3と互換性がなければなりません。
コードを開発すると、Pythonの方法とKissの原則に従います。コードベースは、Pycharmコードの検査とPychart、BlackおよびIsortコード分析(すべてCIワークフローの一部です)の恩恵を受けています。
また、コミット前のフックも使用しています。私たちの場合、フックはファイルを変更し、それらを再構築します。コミット前のフックはローカルで実行でき、その後、結果の変更を行う前にステージングする必要があります。フックをローカルにセットアップするには、 pip install pre-commitインストールし、 pre-commit installを介してGitフックをセットアップします(プロジェクトをクローンするたびに行う必要があります)。すべての事前コミットフックを実行するには、 pre-commit run --all-files実行します。 .pre-commit-config.yamlファイルは、新しいフックを追加するか、既存のフックを変更する必要がある場合に変更できます。
PysDM開発者で扱われているさらなるヒントは、オープンアトモス/Python-Dev-Hints WikiおよびPysdm Howtosで維持されています。
Pysdmの誤った、直感的でない、または文書化されていないBahaviourに関する問題は、Github Issueトラッカーで報告するのが最善です。機能リクエストは、「アイデア...」pysdm wikiページに記録されます。
PySDMコードの理解、使用、拡張のサポートを求めるために、GitHubディスカッション機能(問題トラッカーではなく)を使用することをお勧めします。
ご貢献とフィードバックを楽しみにしています。
著作権:ジャギエロニアン大学(2019-2023)&Agh University of Krakow(2023 -...)
ライセンス:GPL V3