
PYSDM是用於模擬顆粒群體動力學的包裝。它旨在用作模擬系統建模涉及分散階段的流體流的構建塊,而PYSDM負責代表分散階段。目前,該開發集中在大氣雲物理應用上,特別是使用基於粒子的(又稱超級滴滴)方法來建模浸入潮濕空氣中的顆粒動力學,以代表氣溶膠/雲/雨雨微物理學。該軟件包採用了用於代表碰撞增長的超級流行法(SDM)蒙特 - 卡洛算法的Pythonic高性能實現(Shima等,2009),因此該名稱。
PYSDM文檔維護在以下位置:https://open-atmos.github.io/pysdm
有一組越來越多的示例jupyter筆記本示例如何使用PYSDM執行各種類型的計算和模擬。大多數示例筆記本都從文獻中復制結果和繪圖,有關示例和鏈接的列表,請參見下文(可以在雲中執行或查看)。
還有一組越來越多的教程,也有jupyter筆記本的形式。這些教程旨在用於教學目的,並包括對雲微物理概念以及使用PYSDM運行交互式模擬的小部件配對的雲微物理概念的簡短解釋。每個教程還帶有一組問題,可以用作作業問題。像示例一樣,這些教程可以在“雲中”執行或查看,這是學生開始開始的一種特別簡單的方法。
PYSDM有兩個可用的替代並行數字迫使後端:基於numba和GPU居住的後端基於Thrustrtc頂部的多線CPU後端。 Numba後端(Aliased CPU )具有多核CPU的多線程並行性,它使用基於LLVM基礎架構的即時彙編技術。 ThrustRTC後端(Aliased GPU )提供了PYSDM的GPU居住操作,利用SIMT並行模型。使用GPU後端需要NVIDIA硬件和CUDA驅動程序。
有關PYSDM功能的概述(以及在論文中引用PYSDM的首選方法),請參閱我們的Joss論文:
PYSDM包括SDM方案的擴展,以表示De Jong,Mackay等人中描述的碰撞分裂。 2023。
有關PYSDM上的會談和其他材料的列表,以及包含PYSDM模擬的已發表論文列表,請參見Wiki項目。
PYSDM依賴性為:Numpy,Numba,Scipy,Pint,Chempy,Pyevtk,Thrustrtc和Curandrtc。
要使用pip安裝PYSDM,請使用: pip install PySDM (或pip install git+https://github.com/open-atmos/PySDM.git以獲得最新版本以外的更新)。
Conda用戶也可以使用pip ,請參閱Conda文檔中的“安裝非CONDA軟件包”部分。 PYSDM的依賴性可在以下CONDA渠道上找到:
出於開發目的,我們建議使用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
另外,也可以通過使用pip install PySDM-examples從pypi.org安裝示例軟件包(請注意,這不適用於筆記本本身,僅適用於支持.py文件)。
向項目提交新代碼,最好使用github拉動請求 - 它有助於記錄代碼作者身份,跟踪和存檔代碼審查工作流程,並允許從連續的集成設置中受益,該設置可以通過新添加的代碼自動執行測試。
假定代碼貢獻意味著版權轉移。如果需要例外,請在創建拉動請求或以任何其他方式貢獻代碼時表示。無論如何,貢獻代碼的許可必須與GPL V3兼容。
制定代碼,我們遵循Python和Kiss原則的方式。代碼庫大大受益於Pycharm代碼檢查和Pylint,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開發人員和PYSDM Howtos中保持進一步的提示。
關於PYSDM的任何不正確,不直覺或無證的Bahaviour的問題,最好在GitHub問題跟踪器上報告。功能請求記錄在“創意...” PYSDM Wiki頁面中。
我們鼓勵使用GITHUB討論功能(而不是問題跟踪器)來尋求支持,使用和擴展PYSDM代碼。
我們期待您的貢獻和反饋。
版權所有:Jagiellonian大學(2019-2023)&AGH克拉科夫大學(2023 -...)
許可證:GPL V3