
PYSDM adalah paket untuk mensimulasikan dinamika populasi partikel. Ini dimaksudkan untuk berfungsi sebagai blok bangunan untuk sistem simulasi pemodelan aliran cairan yang melibatkan fase yang tersebar, dengan PYSDM bertanggung jawab atas representasi fase yang tersebar. Saat ini, pengembangan ini difokuskan pada aplikasi fisika awan atmosfer, khususnya pada pemodelan dinamika partikel yang direndam dalam udara lembab menggunakan pendekatan berbasis partikel (alias super-droplet) untuk mewakili aerosol/cloud/hujan mikrofisika. Paket ini memiliki implementasi kinerja tinggi pythonic dari algoritma Method-Droplet Method (SDM) Monte-Carlo untuk mewakili pertumbuhan tabrakan (Shima et al. 2009), karenanya namanya.
Dokumentasi PYSDM dipertahankan di: https://open-atmos.github.io/pysdm
Ada satu set yang berkembang dari contoh notebook Jupyter yang mencontohkan cara melakukan berbagai jenis perhitungan dan simulasi menggunakan PYSDM. Sebagian besar contoh notebook mereproduksi hasil dan plot dari literatur, lihat di bawah untuk daftar contoh dan tautan ke notebook (yang dapat dieksekusi atau dilihat "di cloud").
Ada juga satu set tutorial yang berkembang, juga dalam bentuk buku catatan Jupyter. Tutorial ini dimaksudkan untuk tujuan pengajaran dan termasuk penjelasan singkat tentang konsep mikrofisika cloud yang dipasangkan dengan widget untuk menjalankan simulasi interaktif menggunakan PYSDM. Setiap tutorial juga dilengkapi dengan serangkaian pertanyaan di akhir yang dapat digunakan sebagai masalah pekerjaan rumah. Seperti contoh, tutorial ini dapat dieksekusi atau dilihat "di cloud" menjadikannya cara yang sangat mudah bagi siswa untuk memulai.
PYSDM memiliki dua alternatif backends-crunching paralel yang tersedia: backend CPU multi-threaded berdasarkan NUMBA dan backend resident GPU yang dibangun di atas Thrustrtc. Numba Backend (Aliased CPU ) memiliki paralelisme multi-threaded untuk CPU multi-core, ia menggunakan teknik kompilasi just-in-time berdasarkan infrastruktur LLVM. Backend ThrustRTC (Aliased GPU ) menawarkan operasi PYSDM residen GPU yang memanfaatkan model paralelisasi SIMT. Menggunakan backend GPU membutuhkan perangkat keras NVIDIA dan driver CUDA.
Untuk gambaran umum fitur PYSDM (dan cara yang lebih disukai untuk mengutip PYSDM di makalah), silakan merujuk ke Joss Papers kami:
PYSDM mencakup perpanjangan skema SDM untuk mewakili perpisahan tabrakan yang dijelaskan dalam De Jong, Mackay et al. 2023.
Untuk daftar pembicaraan dan materi lainnya di PYSDM serta daftar makalah yang diterbitkan yang menampilkan simulasi PYSDM, lihat proyek Wiki.
Ketergantungan PYSDM adalah: numpy, numba, scipy, pint, chempy, pyevtk, thrustrtc dan curandrtc.
Untuk menginstal PYSDM menggunakan pip , gunakan: pip install PySDM (atau pip install git+https://github.com/open-atmos/PySDM.git untuk mendapatkan pembaruan di luar rilis terbaru).
Pengguna Conda juga dapat menggunakan pip , lihat bagian Paket Non-Conda di Conda Docs. Ketergantungan PYSDM tersedia di saluran Conda berikut:
Untuk tujuan pengembangan, kami menyarankan mengkloning repositori dan memasangnya menggunakan pip -e . Ketergantungan waktu uji dapat dipasang dengan pip -e .[tests] .
Contoh PYSDM merupakan paket PySDM-examples . Contoh -contoh memiliki dependensi tambahan yang tercantum dalam file PySDM_examples setup.py file. Menjalankan Contoh Jupyter Notebooks memerlukan paket PySDM_examples untuk diinstal. Langkah instal dan peluncuran yang disarankan adalah:
git clone https://github.com/open-atmos/PySDM.git
pip install -e PySDM
pip install -e PySDM/examples
jupyter-notebook PySDM/examples/PySDM_examples
Sebagai alternatif, seseorang juga dapat menginstal paket contoh dari pypi.org dengan menggunakan pip install PySDM-examples (perhatikan bahwa ini tidak berlaku untuk notebook itu sendiri, hanya file .py pendukung).
Mengajukan kode baru ke proyek, lebih disukai menggunakan permintaan tarik github - ini membantu untuk menyimpan catatan kepengarangan kode, melacak dan mengarsipkan alur kerja tinjauan kode dan memungkinkan untuk mendapatkan manfaat dari pengaturan integrasi kontinu yang mengotomatiskan pelaksanaan tes dengan kode yang baru ditambahkan.
Kontribusi kode diasumsikan menyiratkan transfer hak cipta. Jika ada kebutuhan untuk membuat pengecualian, harap tunjukkan saat membuat permintaan tarik atau berkontribusi kode dengan cara lain. Dalam kasus apa pun, lisensi kode yang disumbangkan harus kompatibel dengan GPL V3.
Mengembangkan kode, kami mengikuti jalan Python dan prinsip ciuman. Basis kode ini sangat diuntungkan dari inspeksi kode Pycharm dan analisis kode Pylint, Black dan Isort (yang semuanya merupakan bagian dari alur kerja CI).
Kami juga menggunakan kait pra-komit. Dalam kasus kami, kait memodifikasi file dan format ulang. Kait pra-komit dapat dijalankan secara lokal, dan kemudian perubahan yang dihasilkan perlu dipentaskan sebelum berkomitmen. Untuk mengatur kait secara lokal, instal pra-komit melalui pip install pre-commit dan atur kait git melalui pre-commit install (ini perlu dilakukan setiap kali Anda mengkloning proyek). Untuk menjalankan semua kait pra-berkomitmen, jalankan pre-commit run --all-files . File .pre-commit-config.yaml dapat dimodifikasi jika kait baru harus ditambahkan atau yang ada perlu diubah.
Petunjuk lebih lanjut yang dibahas pada pengembang PYSDM dipertahankan di wiki terbuka-atmos/python-dev-hints dan di PYSDM Howtos.
Masalah tentang Bahaviour PYSDM yang salah, tidak intuitif atau tidak berdokumen adalah yang terbaik untuk dilaporkan pada pelacak masalah GitHub. Permintaan fitur direkam dalam halaman Wiki "Ide ..." PYSDM.
Kami mendorong untuk menggunakan fitur Diskusi GitHub (daripada pelacak masalah) untuk mencari dukungan dalam memahami, menggunakan dan memperluas kode PYSDM.
Kami menantikan kontribusi dan umpan balik Anda.
Hak Cipta: Universitas Jagiellonian (2019-2023) & AGH University of Krakow (2023 -...)
Lisensi: GPL v3