
PYSDM - это пакет для моделирования динамики популяции частиц. Он предназначен для того, чтобы служить строительным блоком для моделирования систем моделирования жидкости с участием дисперсной фазы, при этом PYSDM отвечает за представление дисперсной фазы. В настоящее время разработка сосредоточена на приложениях физики атмосферного облака, в частности на моделировании динамики частиц, погруженных в влажный воздух с использованием подхода на основе частиц (AKA Super-Droptlet) для представления микрофизики аэрозоля/облака/дождя. Пакет оснащен питоническим высокопроизводительным реализацией алгоритма Monte-Carlo метода Super-Droplet (SDM) для представления столкновенного роста (Shima et al. 2009), отсюда и название.
Документация PYSDM поддерживается по адресу: https://open-atmos.github.io/pysdm
Растет набор примеров тетрадей Юпитера, демонстрирующих, как выполнять различные типы расчетов и моделирования с использованием PYSDM. Большинство примеров ноутбуков воспроизводят результаты и участок из литературы, см. Ниже список примеров и ссылок на ноутбуки (которые могут быть либо выполнены, либо просмотрены «в облаке»).
Существует также растущий набор учебных пособий, также в форме ноутбуков Юпитера. Эти учебные пособия предназначены для учебных целей и включают короткие объяснения облачных микрофизических концепций в сочетании с виджетами для работы интерактивного моделирования с использованием PYSDM. Каждый урок также поставляется с набором вопросов в конце, которые можно использовать в качестве домашних заданий. Как и примеры, эти учебники могут быть выполнены или просмотрены «в облаке», что делает его особенно простым способом для учащихся.
PYSDM имеет два альтернативных параллельных бэкэнд с подготовкой номеров: многопоточный бэкэнд процессора на основе NUMBA и GPU-резидентного бэкэнда, построенного на вершине Thrustrtc. Бэкэнд Numba (псевдоним CPU ) оснащен многопоточной параллелизмом для многоядерных процессоров, он использует метод компиляции справедливого времени на основе инфраструктуры LLVM. Бэкэнд ThrustRTC (псевдоним GPU ) предлагает оператор-резидентную работу PYSDM, использующую модель параллелизации SIMT. Использование бэкэнда GPU требует оборудования NVIDIA и драйвера CUDA.
Для обзора функций PYSDM (и предпочтительного способа цитирования PYSDM в бумагах), пожалуйста, обратитесь к нашим документам JOSS:
PYSDM включает в себя расширение схемы SDM для представления столкновенного разрыва, описанного в De Jong, Mackay et al. 2023.
Список переговоров и других материалов на PYSDM, а также список опубликованных документов с симуляциями PYSDM, см. Project Wiki.
Зависимости PySDM: Numpy, Numba, Scipy, Pint, Chempy, Pyevtk, Throustrtc и Curandrtc.
Чтобы установить PYSDM с помощью pip , используйте: pip install PySDM (или pip install git+https://github.com/open-atmos/PySDM.git чтобы получить обновления помимо последнего релиза).
Пользователи Conda также могут использовать pip , см. Раздел «Установки неконфекционных пакетов» в документах Conda. Зависимости PYSDM доступны на следующих каналах Conda:
В целях разработки мы предлагаем клонировать репозиторий и установить его с помощью pip -e . Зависимости времени испытания могут быть установлены с помощью pip -e .[tests] .
Примеры PYSDM составляют пакет PySDM-examples . Примеры имеют дополнительные зависимости, перечисленные в файле PySDM_examples setup.py . Запуск примера jupyter Notebooks требует установки пакета PySDM_examples . Предлагаемые шаги установки и запуска:
git clone https://github.com/open-atmos/PySDM.git
pip install -e PySDM
pip install -e PySDM/examples
jupyter-notebook PySDM/examples/PySDM_examples
В качестве альтернативы, можно также установить пакет примеров от pypi.org, используя pip install PySDM-examples (обратите внимание, что это не применяется к самим ноутбукам, только для подтверждающих файлов .py).
Отправляя новый код в проект, предпочтительно используйте запросы на вытягивание GitHub - он помогает вести учет авторства кода, отслеживать и архивировать рабочий процесс проверки кода и позволяет извлечь выгоду из непрерывной настройки интеграции, которая автоматизирует выполнение тестов с помощью вновь добавленного кода.
Предполагается, что взносы кода подразумевают передачу авторского права. Если необходимо сделать исключение, пожалуйста, укажите его при создании запроса на вытяжение или внесение кода любым другим способом. В любом случае, лицензия внесенного кода должна быть совместима с GPL V3.
Разработка кода, мы следуем по пути Python и Принципа KISS. Кодовая база значительно выиграла от инспекций кода Pycharm и анализа кода Black и Isort (все это часть рабочих процессов CI).
Мы также используем крючки с предварительным обменом. В нашем случае крючки изменяют файлы и переформируют их. Предварительные крючки могут работать локально, а затем необходимо установить результирующие изменения перед совершением. Чтобы настроить крючки локально, установите предварительную компанию через pip install pre-commit и установите крючки GIT с помощью pre-commit install (это необходимо делать каждый раз, когда вы клонируете проект). Чтобы запустить все закуски, запустите pre-commit run --all-files . Файл .pre-commit-config.yaml может быть изменен в случае добавления новых крючков или существующих, которые необходимо изменить.
Дальнейшие подсказки, рассматриваемые в разработчиках PYSDM, поддерживаются в вики с открытыми атмос/питоном-девтами и в PYSDM Howtos.
Проблемы, касающиеся любого неверного, неинтуитивного или незарегистрированного бахавиура PYSDM, лучше всего сообщать о трекере выпуска GitHub. Запросы на функции записаны на странице «Идеи ...» PYSDM.
Мы рекомендуем использовать функцию дискуссий GitHub (а не трекер проблемы) для поиска поддержки в понимании, использовании и расширении кода PYSDM.
Мы с нетерпением ждем вашего вклада и отзывов.
Авторские права: Ягеллонский университет (2019-2023) и Ах Университет Кракова (2023 г. -...)
Лицензия: GPL V3