
Pympdata adalah implementasi pythonic yang dipercepat NUMBA dari algoritma MPData dari Smolarkiewicz et al. Digunakan dalam dinamika fluida geofisika dan di luar untuk pemecahan numerik PDE difusi konveksi secara numerik dalam jerat terstruktur 1D, 2D dan 3D dengan transformasi koordinat.
Singkatnya, pympdata secara numerik memecahkan persamaan berikut:
dimana bidang skalar
Dokumentasi Pympdata dihasilkan melalui pdoc .
Sebuah proyek terpisah yang disebut PyMPDATA-MPI menggambarkan bagaimana numba-mpi dapat digunakan untuk mengaktifkan paralelisme memori terdistribusi dalam PympData.Applications, dan memberikan validasi implementasi dan kinerjanya.
Untuk menginstal Pympdata, orang dapat menggunakan: pip install PyMPDATA (atau pip install git+https://github.com/open-atmos/PyMPDATA.git untuk mendapatkan pembaruan di luar rilis terbaru). Pympdata tergantung pada NumPy dan Numba .
Menjalankan tes yang dikirimkan dengan paket memerlukan paket tambahan yang dipasang jika PIP dipanggil dengan: pip install PyMPDATA[tests] .
Contoh Pympdata dibundel dengan pympdata dan terletak di subfolder examples . Mereka merupakan paket python PyMPDATA_examples terpisah yang juga tersedia di PYPI. Contoh -contoh memiliki dependensi tambahan yang tercantum dalam file pack.py PyMPDATA_examples setup.py . Menjalankan contoh membutuhkan paket PyMPDATA_examples untuk diinstal. Karena Paket Contoh termasuk Jupyter Notebooks (dan eksekusi mereka memerlukan akses menulis), langkah instal dan peluncuran yang disarankan adalah:
git clone https://github.com/open-atmos/PyMPDATA-examples.git
cd PyMPDATA-examples
pip install -e .
jupyter-notebook
Atau, seseorang juga dapat menginstal paket contoh dari pypi.org dengan menggunakan pip install PyMPDATA-examples .
Kelas -kelas utama yang merupakan antarmuka PympData dirangkum di bawah ini.
Kelompok kelas Options baik baik opsi varian algoritma maupun beberapa bendera terkait implementasi.
Dalam pympdata, domain larutan diasumsikan meluas dari batas sel pertama ke batas sel terakhir (dengan demikian nilai bidang skalar pertama ada di ScalarField dan VectorField menerapkan logika grid Arakawa-C yang terhuyung-huyung.
Kondisi batas diimplementasikan sebagai kelas yang ditentukan dalam BoundaryCondition .
Logika pemecah iteratif mpdata diwakili dalam pympdata oleh kelas Stepper .
Contoh kelas Solver digunakan untuk mengontrol data solusi integrasi dan mengakses. Selama instantiasi, memori tambahan yang dibutuhkan oleh pemecah dialokasikan sesuai dengan opsi yang disediakan.
Mengirimkan kode baru ke proyek, lebih disukai menggunakan permintaan tarik gitub (atau situs PympData -icamples PR jika mengerjakan contoh) - ini membantu untuk mencatat catatan Kode, melacak, dan mengarsipkan Code Review Workflow dan memungkinkan untuk mendapatkan manfaat dari pengaturan integrasi berkelanjutan yang mengotomatiskan pelaksanaan pengujian dengan kode tambahan yang baru.
Sampai sekarang, hak cipta untuk seluruh basis kode Pympdata adalah dengan Universitas Jagiellonian (2019-2023) dan AGH University of Krakow (2023 dan seterusnya) - tempat kerja pemelihara utama. 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 (pemeriksaan pylint adalah bagian dari alur kerja CI).
Masalah mengenai bahaviour Pympdata yang salah, tidak intuitif atau tidak berdokumen adalah yang terbaik untuk dilaporkan pada pelacak masalah GitHub. Permintaan fitur direkam dalam halaman wiki "Ide ..." Pympdata.
Kami mendorong untuk menggunakan fitur diskusi GitHub (daripada pelacak masalah) untuk mencari dukungan dalam memahami, menggunakan dan memperluas kode PympData.
Harap gunakan infrastruktur pelacakan isu Pympdata dan Dicsussion untuk PyMPDATA-examples juga. Kami menantikan kontribusi dan umpan balik Anda.
Pengembangan Pympdata didukung oleh UE melalui hibah Yayasan untuk Ilmu Polandia (Poir.04.04.00-00-5E1C/18) dan oleh Pusat Ilmu Nasional Polandia (hibah no. 2020/39/d/ST10/01220)
Hak Cipta: Universitas Jagiellonian (2019-2023) & AGH University of Krakow (2023 dan seterusnya)
Lisensi: GPL v3