
O PYSDM é um pacote para simular a dinâmica da população de partículas. Destina -se a servir como um bloco de construção para sistemas de simulação modelando fluxos de fluidos envolvendo uma fase dispersa, com o PYSDM sendo responsável pela representação da fase dispersa. Atualmente, o desenvolvimento está focado em aplicações de física em nuvem atmosférica, em particular na modelagem da dinâmica das partículas imersas em ar úmido usando a abordagem baseada em partículas (também conhecida como Super-Droplet) para representar a microfísica aerossol/nuvem/chuva. O pacote apresenta uma implementação pitônica de alto desempenho do algoritmo Monte-Carlo Method Method Method (SDM) para representar o crescimento colisional (Shima et al. 2009), daí o nome.
A documentação do PYSDM é mantida em: https://open-atmos.github.io/pysdm
Existe um conjunto crescente de notebooks Jupyter, exemplificando como executar vários tipos de cálculos e simulações usando PYSDM. A maioria dos notebooks de exemplo reproduz os resultados e a trama da literatura, veja abaixo uma lista de exemplos e links para os notebooks (que podem ser executados ou visualizados "na nuvem").
Há também um conjunto crescente de tutoriais, também na forma de notebooks de Jupyter. Esses tutoriais destinam -se a fins de ensino e incluem explicações curtas de conceitos microfísicos em nuvem combinados com widgets para executar simulações interativas usando PYSDM. Cada tutorial também vem com um conjunto de perguntas no final que podem ser usadas como problemas de lição de casa. Como os exemplos, esses tutoriais podem ser executados ou visualizados "na nuvem", tornando -a uma maneira especialmente fácil para os alunos começarem.
O PYSDM possui dois back-ends de crise de número paralelo alternativos disponíveis: back-end de CPU com vários threads com base no back-end de NOMBA e GPU, construído sobre o thrustrtc. O back-end Numba ( CPU com alias) apresenta paralelismo multithread para CPUs multi-núcleo, ele usa a técnica de compilação just-in-time com base na infraestrutura LLVM. O back-end ThrustRTC ( GPU aliases) oferece operação residente em GPU do PYSDM que alavancam o modelo de paralelalização do SIMT. O uso do back -end GPU requer hardware nvidia e driver CUDA.
Para uma visão geral dos recursos do PYSDM (e da maneira preferida de citar PYSDM em papéis), consulte nossos jornais Joss:
O PYSDM inclui uma extensão do esquema de SDM para representar o rompimento colisional descrito em De Jong, Mackay et al. 2023.
Para uma lista de palestras e outros materiais sobre PYSDM, bem como uma lista de artigos publicados com simulações PYSDM, consulte o Wiki do projeto.
As dependências PYSDM são: Numpy, Numba, Scipy, Pint, Chempy, Pyevtk, ThrustrTC e Curandrtc.
Para instalar o PYSDM usando pip , use: pip install PySDM (ou pip install git+https://github.com/open-atmos/PySDM.git para obter atualizações além da versão mais recente).
Os usuários do CONDA também podem usar pip , consulte a seção Instalação de pacotes que não sejam da Conda nos documentos do CONDA. As dependências do PYSDM estão disponíveis nos seguintes canais do CONDA:
Para fins de desenvolvimento, sugerimos clonar o repositório e instalá -lo usando pip -e . As dependências no tempo de teste podem ser instaladas com pip -e .[tests] .
Exemplos de PYSDM constituem o pacote PySDM-examples . Os exemplos têm dependências adicionais listadas no arquivo PySDM_examples pacote setup.py . A execução do exemplo Jupyter Notebooks requer que o pacote PySDM_examples seja instalado. As etapas de instalação e lançamento sugeridas são:
git clone https://github.com/open-atmos/PySDM.git
pip install -e PySDM
pip install -e PySDM/examples
jupyter-notebook PySDM/examples/PySDM_examples
Como alternativa, também é possível instalar o pacote de exemplos do Pypi.org usando pip install PySDM-examples (observe que isso não se aplica ao próprio notebooks, apenas os arquivos .py suportados).
Enviando um novo código para o projeto, use de preferência o GitHub Pull Solicys - ele ajuda a manter o registro da autoria de código, rastrear e arquivar o fluxo de trabalho de revisão de código e permite se beneficiar da configuração de integração contínua que automatiza a execução dos testes com o código recém -adicionado.
Presume -se que as contribuições de código impliquem transferência de direitos autorais. Se houver necessidade de fazer uma exceção, indique -o ao criar uma solicitação de tração ou contribuir com código de qualquer outra maneira. De qualquer forma, a licença do código contribuída deve ser compatível com o GPL V3.
Desenvolvendo o código, seguimos o caminho de Python e o princípio do beijo. A Base CodeBase se beneficiou muito das inspeções de código PyCharm e da análise de código preto e ISORT (que fazem parte dos fluxos de trabalho do IC).
Também usamos ganchos pré-comprometidos. No nosso caso, os ganchos modificam os arquivos e os formam novamente. Os ganchos de pré-compromisso podem ser executados localmente e, em seguida, as mudanças resultantes precisam ser encenadas antes de se comprometer. Para configurar os ganchos localmente, instale o pré-compromisso via pip install pre-commit e configure os ganchos Git via pre-commit install (isso precisa ser feito toda vez que você clonará o projeto). Para executar todos os ganchos pré-comprometidos, execute pre-commit run --all-files . O arquivo .pre-commit-config.yaml pode ser modificado caso novos ganchos sejam adicionados ou existentes precisam ser alterados.
Outras dicas abordadas nos desenvolvedores do PYSDM são mantidas no wiki aberto/python-dev-não e no pysdm Howtos.
Questões relativas a qualquer bahaviour incorreto, não intuitivo ou sem documentos do PYSDM são melhores a serem relatadas no rastreador de problemas do GitHub. As solicitações de recursos são gravadas na página Wiki PysDM "Ideas ...".
Incentivamos usar o recurso de discussões do Github (em vez do rastreador de problemas) para buscar suporte para entender, usar e estender o código PYSDM.
Estamos ansiosos por suas contribuições e feedback.
Direitos autorais: Universidade Jagielloniana (2019-2023) e Universidade de Cracóvia (2023 -...)
Licença: GPL V3