
Le PYSDM est un ensemble pour simuler la dynamique de la population de particules. Il est destiné à servir de bloc de construction pour les systèmes de simulation modélisant les flux de fluide impliquant une phase dispersée, PySDM étant responsable de la représentation de la phase dispersée. Actuellement, le développement est axé sur les applications de physique des nuages atmosphériques, en particulier sur la modélisation de la dynamique des particules immergées dans de l'air humide en utilisant l'approche basée sur les particules (aka super-droplet) pour représenter les aérosols / nuages / pluie. Le package dispose d'une implémentation pythonique haute performance de l'algorithme Monte-Carlo de la méthode Super-Droplet (SDM) pour représenter la croissance collisionnelle (Shima et al. 2009), d'où le nom.
La documentation PYSDM est maintenue à: https://open-atmos.github.io/pysdm
Il existe un ensemble croissant d'exemples de cahiers de jupyter illustrant comment effectuer différents types de calculs et de simulations à l'aide de PYSDM. La plupart des exemples de cahiers reproduisent les résultats et l'intrigue de la littérature, voir ci-dessous pour une liste d'exemples et de liens vers les ordinateurs portables (qui peuvent être exécutés ou affichés "dans le cloud").
Il existe également un ensemble croissant de tutoriels, également sous la forme de cahiers Jupyter. Ces tutoriels sont destinés à des fins d'enseignement et comprennent de courtes explications des concepts microphysiques de nuages associés à des widgets pour exécuter des simulations interactives à l'aide de PYSDM. Chaque tutoriel est également livré avec un ensemble de questions à la fin qui peuvent être utilisées comme problèmes de devoirs. Comme les exemples, ces tutoriels peuvent être exécutés ou visualisés "dans le cloud", ce qui en fait un moyen particulièrement facile pour les étudiants de commencer.
PYSDM possède deux backends parallèles de nombres parallèles disponibles: le backend CPU multi-thread basé sur le backend Numba et résident GPU construit au-dessus de Thrustrtc. Le backend Numba ( CPU aliasé) dispose d'un parallélisme multi-thread pour des processeurs multi-core, il utilise la technique de compilation juste à temps basée sur l'infrastructure LLVM. Le backend ThrustRTC ( GPU aliasé) offre un fonctionnement résident au GPU de PYSDM en tirant parti du modèle de parallélisation SIMT. L'utilisation du backend GPU nécessite du matériel NVIDIA et du pilote CUDA.
Pour un aperçu des fonctionnalités PYSDM (et la façon préférée de citer PYSDM dans les articles), veuillez vous référer à nos papiers Joss:
PYSDM comprend une extension du schéma SDM pour représenter la rupture collisionnelle décrite dans De Jong, Mackay et al. 2023.
Pour une liste de conférences et autres documents sur PYSDM ainsi qu'une liste d'articles publiés mettant en vedette des simulations PYSDM, voir le Wiki du projet.
Les dépendances PYSDM sont: Numpy, Numba, Scipy, Pint, Chempy, Pyevtk, Thrustrtc et Curandrtc.
Pour installer PYSDM à l'aide pip , utilisez: pip install PySDM (ou pip install git+https://github.com/open-atmos/PySDM.git pour obtenir des mises à jour au-delà de la dernière version).
Les utilisateurs de Conda peuvent également utiliser pip , voir la section Installation de packages non-conda dans les documents conda. Les dépendances de PYSDM sont disponibles sur les canaux Conda suivants:
À des fins de développement, nous suggérons de cloner le référentiel et de l'installer en utilisant pip -e . Les dépendances à temps de test peuvent être installées avec pip -e .[tests] .
Les exemples PYSDM constituent le package PySDM-examples . Les exemples ont des dépendances supplémentaires répertoriées dans le fichier package PySDM_examples setup.py . L'exécution de l'exemple de carnets de jupyter nécessite l'installation du package PySDM_examples . Les étapes d'installation et de lancement suggérées sont:
git clone https://github.com/open-atmos/PySDM.git
pip install -e PySDM
pip install -e PySDM/examples
jupyter-notebook PySDM/examples/PySDM_examples
Alternativement, on peut également installer le package d'exemples à partir de PYPI.org en utilisant pip install PySDM-examples (notez que cela ne s'applique pas aux ordinateurs portables lui-même, uniquement les fichiers .py prenant en charge).
En soumettant un nouveau code au projet, veuillez de préférence utiliser les demandes GitHub Pull - il aide à tenir compte de la paternité de code, de suivre et d'archiver le flux de travail de révision du code et permet de bénéficier de la configuration d'intégration continue qui automatise l'exécution des tests avec le code nouvellement ajouté.
Les contributions du code sont supposées impliquer le transfert du droit d'auteur. Si vous avez besoin de faire une exception, veuillez l'indiquer lors de la création d'une demande de traction ou du code contribuant d'une autre manière. Dans tous les cas, la licence du code contribué doit être compatible avec GPL V3.
Développement du code, nous suivons la voie de Python et du principe du baiser. La base de code a grandement bénéficié des inspections de code PyCharm et de l'analyse de code noir et isorte (qui font toutes partie des flux de travail CI).
Nous utilisons également des crochets pré-engagés. Dans notre cas, les crochets modifient les fichiers et les reformatent. Les crochets pré-engagés peuvent être exécutés localement, puis les modifications résultantes doivent être mise en scène avant de s'engager. Pour configurer les crochets localement, installez pré-engagement via pip install pre-commit et configurez les crochets GIT via pre-commit install (cela doit être fait chaque fois que vous clonez le projet). Pour exécuter tous les crochets de pré-engagement, exécutez Run pre-commit run --all-files . Le fichier .pre-commit-config.yaml peut être modifié au cas où de nouveaux crochets doivent être ajoutés ou que ceux existants doivent être modifiés.
D'autres conseils abordés chez les développeurs PYSDM sont maintenus dans le wiki ouvert-atmos / python-dev
Les problèmes concernant tout bahaviour incorrect, non intuitif ou sans papiers de PYSDM sont les meilleurs à être signalés sur le tracker GitHub Issue. Les demandes de fonctionnalités sont enregistrées dans la page Wiki "Idées ...".
Nous encourageons à utiliser la fonction de discussions GitHub (plutôt que le suivi du problème) pour rechercher un soutien dans la compréhension, l'utilisation et l'extension du code PYSDM.
Nous attendons avec impatience vos contributions et vos commentaires.
Copyright: Jagiellonian University (2019-2023) et AGH University of Crakow (2023 -...)
Licence: GPL V3