
PYSDM es un paquete para simular la dinámica de la población de partículas. Está destinado a servir como un bloque de construcción para los sistemas de simulación de modelado de flujos de fluidos que involucran una fase dispersa, con PySDM responsable de la representación de la fase dispersa. Actualmente, el desarrollo se centra en aplicaciones de física de la nube atmosférica, en particular en modelar la dinámica de las partículas sumergidas en el aire húmedo utilizando el enfoque basado en partículas (también conocido como super-dropleta) para representar microfísica de aerosol/nube/lluvia. El paquete presenta una implementación de alto rendimiento pitónico del algoritmo Monte-Carlo del Método Super-Droplet (SDM) para representar el crecimiento colisional (Shima et al. 2009), de ahí el nombre.
La documentación de Pysdm se mantiene en: https://open-atmos.github.io/pysdm
Hay un creciente conjunto de cuadernos de ejemplo de Jupyter que ejemplifican cómo realizar varios tipos de cálculos y simulaciones utilizando PySDM. La mayoría de los cuadernos de ejemplo reproducen los resultados y la trama de la literatura, consulte a continuación una lista de ejemplos y enlaces a los cuadernos (que se pueden ejecutar o ver "en la nube").
También hay un creciente conjunto de tutoriales, también en forma de cuadernos Jupyter. Estos tutoriales están destinados a fines de enseñanza e incluyen explicaciones breves de conceptos microfísicos en la nube combinados con widgets para ejecutar simulaciones interactivas utilizando PYSDM. Cada tutorial también viene con un conjunto de preguntas al final que pueden usarse como problemas de tarea. Al igual que los ejemplos, estos tutoriales se pueden ejecutar o ver "en la nube", por lo que es una manera especialmente fácil para que los estudiantes comiencen.
PYSDM tiene dos backends alternativos de inicio paralelo disponible: backend de CPU multiproceso basado en Numba y Backend residente de GPU construido sobre ThrustrTC. El backend Numba ( CPU aliased) presenta un paralelismo multiproceso para las CPU de múltiples núcleos, utiliza la técnica de compilación justo a tiempo basada en la infraestructura LLVM. El backend ThrustRTC ( GPU aliased) ofrece una operación residente de GPU de PYSDM que aprovecha el modelo de paralelización SIMT. El uso del backend GPU requiere hardware NVIDIA y controlador CUDA.
Para obtener una descripción general de las características de PYSDM (y la forma preferida de citar PYSDM en los documentos), consulte nuestros documentos de Joss:
PYSDM incluye una extensión del esquema SDM para representar la ruptura de colisión descrita en De Jong, Mackay et al. 2023.
Para una lista de charlas y otros materiales en Pysdm, así como una lista de artículos publicados con simulaciones PySDM, consulte el Proyecto Wiki.
Las dependencias de PySDM son: Numpy, Numba, Scipy, Pint, Chempy, Pyevtk, ThrustrTC y Curandrtc.
Para instalar PySDM usando pip , use: pip install PySDM (o pip install git+https://github.com/open-atmos/PySDM.git para obtener actualizaciones más allá de la última versión).
Los usuarios de Conda también pueden usar pip , consulte la sección Instalación de paquetes que no sean de Conda en los documentos de Conda. Las dependencias de PYSDM están disponibles en los siguientes canales de condena:
Para fines de desarrollo, sugerimos clonar el repositorio e instalarlo utilizando pip -e . Las dependencias de tiempo de prueba se pueden instalar con pip -e .[tests] .
Los ejemplos de PYSDM constituyen el paquete PySDM-examples . Los ejemplos tienen dependencias adicionales enumeradas en el paquete PySDM_examples setup.py . Ejecutar el ejemplo de los cuadernos Jupyter requiere que se instale el paquete PySDM_examples . Los pasos de instalación y lanzamiento sugeridos son:
git clone https://github.com/open-atmos/PySDM.git
pip install -e PySDM
pip install -e PySDM/examples
jupyter-notebook PySDM/examples/PySDM_examples
Alternativamente, también se puede instalar el paquete de ejemplos desde pypi.org utilizando pip install PySDM-examples (tenga en cuenta que esto no se aplica a los cuadernos en sí, solo los archivos .py de soporte).
Enviar un nuevo código al proyecto, preferiblemente utilice las solicitudes de extracción de GitHub: 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 recientemente agregado.
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 de código Pylint, Black e Isort (que forman parte de los flujos de trabajo de CI).
También usamos ganchos previos al comercio. En nuestro caso, los ganchos modifican los archivos y los vuelven a formatear. Los ganchos previos al comercio se pueden ejecutar localmente, y luego los cambios resultantes deben organizarse antes de comprometerse. Para configurar los ganchos localmente, instale pre-compromiso a través de pip install pre-commit y configurar los ganchos GIT a través de pre-commit install (esto debe hacerse cada vez que clona el proyecto). Para ejecutar todos los ganchos previos al compromiso, ejecute Run pre-commit run --all-files . El archivo .pre-commit-config.yaml se puede modificar en caso de que se agregue nuevos ganchos o se deben alterar los existentes.
Otros sugerencias abordadas en los desarrolladores de PysdM se mantienen en el Wiki de los intentos abiertos/python-devs y en Pysdm Howtos.
Los problemas relacionados con cualquier bahaviour incorrecto, no intuitivo o indocumentado de PYSDM son mejores para ser informados sobre el rastreador de problemas de GitHub. Las solicitudes de funciones se registran en la página "Ideas ..." Pysdm 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 PYSDM.
Esperamos sus contribuciones y comentarios.
Copyright: Jagiellonian University (2019-2023) y AGH University of Krakow (2023 -...)
Licencia: GPL V3