
Pympdata est une mise en œuvre pythonique à haute performance numérisée de l'algorithme MPDATA de Smolarkiewicz et al. Utilisé dans la dynamique du liquide géophysique et au-delà pour résoudre numériquement les PDE généralisés à convection généralisée dans des maillages structurés 1D, 2D et 3D avec des transformations de coordonnées.
En bref, Pympdata résout numériquement l'équation suivante:
où le champ scalaire
La documentation Pympdata est générée via pdoc .
Un projet distinct appelé PyMPDATA-MPI montre comment numba-mpi peut être utilisé pour permettre le parallélisme de la mémoire distribuée dans Pympdata.Applications, et fournir une validation de la mise en œuvre et de ses performances.
Pour installer Pympdata, on peut utiliser: pip install PyMPDATA (ou pip install git+https://github.com/open-atmos/PyMPDATA.git pour obtenir des mises à jour au-delà de la dernière version). Pympdata dépend de NumPy et Numba .
L'exécution des tests expédiés avec le package nécessite des packages supplémentaires installés si PIP est invoqué avec: pip install PyMPDATA[tests] .
Les exemples de pympdata sont regroupés avec des pympdata et situés dans le sous-dossier examples . Ils constituent un package PyMPDATA_examples Python séparé qui est également disponible chez PYPI. Les exemples ont des dépendances supplémentaires répertoriées dans le fichier package Package setup.py PyMPDATA_examples . L'exécution des exemples nécessite l'installation du package PyMPDATA_examples . Étant donné que le package d'exemples comprend des cahiers de jupyter (et que leur exécution nécessite un accès en écriture), les étapes d'installation et de lancement suggérées sont:
git clone https://github.com/open-atmos/PyMPDATA-examples.git
cd PyMPDATA-examples
pip install -e .
jupyter-notebook
Alternativement, on peut également installer le package d'exemples à partir de PYPI.org en utilisant pip install PyMPDATA-examples .
Les classes clés constituant l'interface Pympdata sont résumées ci-dessous.
Les classes Options regroupent les deux options de variantes d'algorithme ainsi que certains indicateurs liés à l'implémentation.
À Pympdata, le domaine de la solution est supposé s'étendre de la limite de la première cellule à la frontière de la dernière cellule (ainsi la première valeur de champ scalaire est à ScalarField et VectorField implémentent la logique de grille décalée Arakawa-C.
Les conditions aux limites sont mises en œuvre en tant que classes définies dans BoundaryCondition .
La logique du solveur itérative MPDATA est représentée dans Pympdata par la classe Stepper .
Des instances de la classe Solver sont utilisées pour contrôler les données de solution d'intégration et d'accès. Pendant l'instanciation, la mémoire supplémentaire requise par le solveur est allouée en fonction des options fournies.
En soumettant un nouveau code au projet, veuillez de préférence utiliser les demandes GitHub Pull (ou le site Pympdata Exemples PR si vous travaillez sur des exemples) - 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é.
À l'heure actuelle, le droit d'auteur de l'ensemble de la base de code Pympdata est avec l'Université Jagiellonie (2019-2023) et l'Université AGH de Cracovie (2023) - lieux de travail du mainteneur principal. 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 du code Pylint (les vérifications de Pylint font partie des flux de travail CI).
Des problèmes concernant tout bahaviour incorrect, non intuitif ou sans papiers de Pympdata sont préférés pour être signalés sur le tracker du problème GitHub. 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 tracker de problème) pour rechercher un soutien dans la compréhension, l'utilisation et l'extension du code Pympdata.
Veuillez utiliser les infrastructures de suivi des problèmes et de dicsussions de Pympdata pour PyMPDATA-examples . Nous attendons avec impatience vos contributions et vos commentaires.
Le développement de Pympdata a été soutenu par l'UE par le biais d'une subvention de la Fondation for Polish Science (Poir.04.04.00-00-5E1C / 18) et par le Polish National Science Center (subvention n ° 2020/39 / D / ST10 / 01220)
Copyright: Jagiellonian University (2019-2023) & AGH University of Crakow (2023)
Licence: GPL V3