
PympData es una implementación pitónica de alto rendimiento de Numba del algoritmo MPData de Smolararkiewicz et al. Utilizado en la dinámica de fluidos geofísicos y más allá para resolver numéricamente PDE generalizados de difusión de convección en mallas estructuradas 1D, 2D y 3D con transformaciones de coordenadas.
En resumen, PympData resuelve numéricamente la siguiente ecuación:
Donde el campo escalar
La documentación de PympData se genera a través de pdoc .
Un proyecto separado llamado PyMPDATA-MPI muestra cómo se puede utilizar numba-mpi para habilitar el paralelismo de memoria distribuida en las aplicaciones de pympdata, y proporcionar una validación de la implementación y su rendimiento.
Para instalar PympData, uno puede usar: pip install PyMPDATA (o pip install git+https://github.com/open-atmos/PyMPDATA.git para obtener actualizaciones más allá de la última versión). Pympdata depende de NumPy y Numba .
La ejecución de las pruebas enviadas con el paquete requiere paquetes adicionales que se instalan si PIP se invoca con: pip install PyMPDATA[tests] .
Los ejemplos de pympdata se agrupan con pympdata y se encuentran en la subcarpeta examples . Constituyen un paquete PyMPDATA_examples PympData separado que también está disponible en PYPI. Los ejemplos tienen dependencias adicionales enumeradas en el archivo del paquete PyMPDATA_examples setup.py . Ejecutar los ejemplos requiere que se instale el paquete PyMPDATA_examples . Dado que el paquete de ejemplos incluye cuadernos Jupyter (y su ejecución requiere acceso de escritura), los pasos de instalación y lanzamiento sugeridos son:
git clone https://github.com/open-atmos/PyMPDATA-examples.git
cd PyMPDATA-examples
pip install -e .
jupyter-notebook
Alternativamente, también se puede instalar el paquete de ejemplos desde pypi.org utilizando pip install PyMPDATA-examples .
Las clases clave que constituyen la interfaz PympData se resumen a continuación.
La clase Options agrupa las opciones de variantes de algoritmo, así como algunas banderas relacionadas con la implementación.
En pympData, se supone que el dominio de la solución se extiende desde el límite de la primera célula hasta el límite de la última célula (por lo tanto, el primer valor de campo escalar está en ScalarField y VectorField implementan la lógica de cuadrícula escalonada Arakawa-C.
Las condiciones límite se implementan como clases definidas en BoundaryCondition .
La lógica del solucionador iterativo MPDATA está representada en PympData por la clase Stepper .
Las instancias de la clase Solver se utilizan para controlar los datos de la solución de integración y acceso. Durante la instancia, la memoria adicional requerida por el solucionador se asigna de acuerdo con las opciones proporcionadas.
Enviar un nuevo código al proyecto, preferiblemente utilice las solicitudes de extracción de GitHub (o el sitio de PMPData -Examples PR si trabaja en ejemplos): ayuda a mantener el registro de la autoría del código, rastrear y archivar el flujo de trabajo de revisión del código y permite beneficiarse de la configuración de integración continua que automatiza la ejecución de las pruebas con el código recién agregado.
A partir de ahora, los derechos de autor de toda la base de código de PympData es con la Universidad Jagiellonian (2019-2023) y la Universidad de Krakow de Agh (2023 en adelante) - Lugares de trabajo del mantenedor principal. Se supone que las contribuciones del código implican la transferencia de derechos de autor. Si es necesario hacer una excepción, indíquelo al crear una solicitud de extracción o contribuir con código de cualquier otra manera. En cualquier caso, la licencia del código contribuido debe ser compatible con GPL V3.
Desarrollando el código, seguimos el camino de Python y el principio de beso. La base de código se ha beneficiado enormemente de las inspecciones de código PyCharm y el análisis del código Pylint (las verificaciones de pylint son parte de los flujos de trabajo del CI).
Los problemas relacionados con cualquier bahaviour incorrecto, no intuitivo o indocumentado de PympData son mejores para ser informados sobre el rastreador de problemas de GitHub. Las solicitudes de funciones se registran en la página "Ideas ..." Pympdata Wiki.
Alentamos a usar la función de discusiones de GitHub (en lugar del rastreador de problemas) para buscar apoyo en la comprensión, usar y extender el código de PympData.
Utilice la infraestructura de rastreo de problemas de PympData e infraestructura de Dicsussion para PyMPDATA-examples . Esperamos sus contribuciones y comentarios.
El desarrollo de PympData fue apoyado por la UE a través de una subvención de la Fundación para la Ciencia Polaca (Poir.04.04.00-00-5e1c/18) y por el Centro Nacional de Ciencias de Polaco (subvención no. 2020/39/d/ST10/01220)
Copyright: Jagiellonian University (2019-2023) y AGH University of Krakow (2023 en adelante)
Licencia: GPL V3