
PYSDM ist ein Paket zur Simulation der Dynamik der Partikelpopulation. Es soll als Baustein für Simulationssysteme dienen, die Flüssigkeitsströme modellieren, die eine dispergierte Phase beinhalten, wobei PYSDM für die Darstellung der dispergierten Phase verantwortlich ist. Derzeit konzentriert sich die Entwicklung auf Atmosphärische Wolkenphysikanwendungen, insbesondere auf die Modellierung der Dynamik von Partikeln, die in feuchte Luft unter Verwendung des partikelbasierten Ansatzes (AKA Super-Droplet) zur Darstellung von Aerosol/Wolken-/Regenmikrophysik eingetaucht sind. Das Paket verfügt über eine pythonische Hochleistungs-Implementierung des Monte-Carlo-Algorithmus (Super-Droplet-Methode) zur Darstellung des Kollisionswachstums (Shima et al. 2009), daher der Name.
Die PYSDM-Dokumentation wird unter: https://open-atmos.github.io/pysdm aufrechterhalten
Es gibt ein wachsendes Beispiel für Jupyter -Notizbücher, die veranschaulicht werden, wie verschiedene Arten von Berechnungen und Simulationen unter Verwendung von PYSDM durchgeführt werden. Die meisten Beispiel -Notizbücher reproduzieren Ergebnisse und Diagramm aus der Literatur. Weitere Beispiele und Links zu den Notebooks (die entweder ausgeführt oder angezeigt werden können "in der Cloud").
Es gibt auch wachsende Tutorials, ebenfalls in Form von Jupyter -Notizbüchern. Diese Tutorials sind für Lehrzwecke bestimmt und enthalten kurze Erklärungen von mikrophysikalischen Konzepten von Cloud -Konzepten, die mit Widgets zum Ausführen interaktiven Simulationen unter Verwendung von PYSDM gepaart sind. Jedes Tutorial enthält auch eine Reihe von Fragen am Ende, die als Hausaufgabenprobleme verwendet werden können. Wie bei den Beispielen können diese Tutorials ausgeführt oder "in der Cloud" ausgeführt oder angezeigt werden, was es für die Schüler zu einer besonders einfachen Möglichkeit macht, loszulegen.
PYSDM verfügt über zwei alternative parallele Nummern, die Backends zur Verfügung stehen: Multi-Thread-CPU-Backend basiert auf NUMBA und GPU-Resident-Backend, das auf Throustrtc basiert. Das Numba Backend (Aliased CPU ) verfügt über eine Multi-Thread-Parallelität für Multi-Core-CPUs und verwendet die Just-in-Time-Kompilierungstechnik basierend auf der LLVM-Infrastruktur. Der ThrustRTC Backend (Aliased GPU ) bietet GPU-Resident von PYSDM, das das SIMT-Parallelisierungsmodell nutzt. Die Verwendung des GPU -Backend erfordert NVIDIA -Hardware und CUDA -Treiber.
Eine Übersicht über PYSDM -Funktionen (und die bevorzugte Möglichkeit, PYSDM in Papieren zu zitieren) finden Sie in unseren Joss Papers:
PYSDM enthält eine Erweiterung des SDM -Schemas, um die in De Jong, Mackay et al. 2023.
Eine Liste von Gesprächen und anderen Materialien auf PYSDM sowie eine Liste der veröffentlichten Artikel mit PYSDM -Simulationen finden Sie im Projekt Wiki.
PYSDM -Abhängigkeiten sind: Numpy, Numba, Scipy, Pint, Chempy, Pyevtk, Thrustrtc und Curandrtc.
Um PYSDM mit pip zu installieren, verwenden Sie: pip install PySDM (oder pip install git+https://github.com/open-atmos/PySDM.git um Updates über die neueste Version hinaus zu erhalten).
Conda-Benutzer können auch pip verwenden und den Abschnitt "Nicht-Conda-Pakete" in den Conda-Dokumenten installieren. Die Abhängigkeiten von PYSDM sind in den folgenden Conda -Kanälen erhältlich:
Für Entwicklungszwecke empfehlen wir, das Repository zu klonen und mit pip -e zu installieren. Testzeitabhängigkeiten können mit pip -e .[tests] .
PYSDM-Beispiele bilden das PySDM-examples Paket. Die Beispiele haben zusätzliche Abhängigkeiten, die in der Datei PySDM_examples paket setup.py aufgeführt sind. Ausführen des Beispiels für Jupyter -Notizbücher erfordert, dass das PySDM_examples -Paket installiert wird. Die vorgeschlagenen Installations- und Startschritte sind:
git clone https://github.com/open-atmos/PySDM.git
pip install -e PySDM
pip install -e PySDM/examples
jupyter-notebook PySDM/examples/PySDM_examples
Alternativ kann man das Beispielpaket von pypi.org auch mithilfe pip install PySDM-examples installieren (beachten Sie, dass dies nicht für Notebooks selbst gelten, sondern nur für die unterstützenden .py-Dateien).
Senden Sie einen neuen Code an das Projekt, verwenden Sie bitte vorzugsweise Github Pull -Anfragen - es hilft, den Code -Codes -Autorschaft zu behalten, den Code -Überprüfungs -Workflow zu verfolgen und zu archivieren und von der kontinuierlichen Integrations -Setup zu profitieren, die die Ausführung von Tests mit dem neu hinzugefügten Code automatisiert.
Es wird angenommen, dass Codebeiträge die Übertragung des Urheberrechts implizieren. Sollte eine Ausnahme erforderlich sein, geben Sie diese bitte an, wenn Sie eine Pull -Anfrage erstellen oder Code auf andere Weise beitragen. In jedem Fall muss die Lizenz des mitgesteuerten Code mit GPL V3 kompatibel sein.
Wir entwickeln den Code und folgen dem Weg von Python und dem Kussprinzip. Die Codebasis hat stark von Pycharm -Code -Inspektionen und Pyndin-, Black- und ISORT -Codeanalyse (die alle Teil der CI -Workflows sind) profitiert.
Wir verwenden auch Pre-Commit-Haken. In unserem Fall ändern die Hooks Dateien und formatieren Sie sie neu. Die Pre-Commit-Haken können lokal ausgeführt werden, und dann müssen die daraus resultierenden Änderungen vor dem Verhalten inszeniert werden. Um die Hooks lokal einzurichten, installieren Sie die Vorkommot über pip install pre-commit und richten Sie die Git-Hooks über pre-commit install ein (dies muss jedes Mal durchgeführt werden, wenn Sie das Projekt klonen). Um alle Vorkommiten auszuführen, laufen Sie pre-commit run --all-files . Die .pre-commit-config.yaml Datei kann geändert werden, falls neue Hooks hinzugefügt werden sollen oder vorhandene geändert werden müssen.
Weitere Hinweise, die bei PYSDM-Entwicklern behandelt werden, werden im Open-Atmos/Python-Dev-Hinweis Wiki und in PysDM Howtos aufrechterhalten.
Fragen zu falschen, unintuitiven oder undokumentierten Bahaviour von PYSDM sind am besten im GitHub -Problemverfolger gemeldet. Feature -Anfragen werden auf der Seite "Ideen ..." PysDM Wiki aufgezeichnet.
Wir ermutigen, die Funktion der GitHub -Diskussionen (anstelle des Problems) zu verwenden, um Unterstützung beim Verständnis, Verwenden und Erweitern von PYSDM -Code zu erhalten.
Wir freuen uns auf Ihre Beiträge und Ihr Feedback.
Copyright: Jagiellonian University (2019-2023) & AGH University of Krakow (2023 -...)
Lizenz: GPL v3