
O pympdata é uma implementação pitônica acelerada por numba de alto desempenho do algoritmo MPData de Smolarkiewicz et al. Utilizado na dinâmica geofísica do fluido e além para resolver numericamente os PDEs generalizados de difusão por convecção em malhas estruturadas 1D, 2D e 3D com transformações de coordenadas.
Em suma, o pympdata resolve numericamente a seguinte equação:
onde campo escalar
A documentação pympData é gerada via pdoc .
Um projeto separado chamado PyMPDATA-MPI descreve como numba-mpi pode ser usado para permitir o paralelismo da memória distribuída em pympdata.applications e fornecer uma validação da implementação e seu desempenho.
Para instalar o pympdata, pode-se usar: pip install PyMPDATA (ou pip install git+https://github.com/open-atmos/PyMPDATA.git para obter atualizações além da versão mais recente). Pympdata depende de NumPy e Numba .
A execução dos testes enviados com o pacote requer pacotes adicionais instalados se o PIP for chamado com: pip install PyMPDATA[tests] .
Os exemplos de pympdata são incluídos com pympdata e localizados na subpasta examples . Eles constituem um pacote python PyMPDATA_examples separado, que também está disponível no Pypi. Os exemplos têm dependências adicionais listadas no arquivo PyMPDATA_examples setup.py . A execução dos exemplos requer que o pacote PyMPDATA_examples seja instalado. Como o pacote de exemplos inclui notebooks Jupyter (e sua execução requer acesso à gravação), as etapas de instalação e lançamento sugeridas são:
git clone https://github.com/open-atmos/PyMPDATA-examples.git
cd PyMPDATA-examples
pip install -e .
jupyter-notebook
Como alternativa, também é possível instalar o pacote de exemplos do Pypi.org usando pip install PyMPDATA-examples .
As principais classes que constituem a interface pympData estão resumidas abaixo.
As Options grupos de grupos de opções de variante de algoritmo, bem como alguns sinalizadores relacionados à implementação.
No pympdata, supõe -se que o domínio da solução se estenda do limite da primeira célula até o limite da última célula (portanto, o primeiro valor do campo escalar está em ScalarField e VectorField implementam a lógica da grade de arakawa-c.
As condições de contorno são implementadas como classes definidas na BoundaryCondition .
A lógica do solucionador iterativo mpData é representada em pympdata pela classe Stepper .
As instâncias da classe Solver são usadas para controlar os dados da solução de integração e acesso. Durante a instanciação, a memória adicional exigida pelo solucionador é alocada de acordo com as opções fornecidas.
Enviando um novo código para o projeto, use de preferência o github Pull Solicys (ou o site de relações públicas do PympData -Exemplos se estiver trabalhando em exemplos) - ajuda a manter o registro da autoria de código, rastrear e arquivar o código 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 adicionado.
A partir de agora, os direitos autorais de toda a base de código Pympdata está na Universidade Jagielloniana (2019-2023) e na Universidade de Cracóvia AGH (2023) - locais de trabalho do mantenedor principal. 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 do código Pylint (as verificações do Pylint fazem parte dos fluxos de trabalho do IC).
Questões relativas a qualquer bahaviour incorreto, não intuitivo ou sem documentos de pympdata são melhores a serem relatadas no rastreador de problemas do GitHub. As solicitações de recursos são gravadas na página "Ideias ..." Pympdata wiki.
Incentivamos usar o recurso de discussões do Github (em vez do rastreador de problemas) para buscar suporte no entendimento, usando e estendendo o código pympData.
Por favor, use a infraestrutura de rastreamento de problemas e dicsussusões do PympData para PyMPDATA-examples . Estamos ansiosos por suas contribuições e feedback.
O desenvolvimento de pympdata foi apoiado pela UE através de uma concessão da Fundação para Ciência Polonês (POIR.04.04.00-00-5E1C/18) e pelo Centro Nacional de Ciências Polonês (Grant nº 2020/39/D/ST10/01220)
Direitos autorais: Universidade Jagielloniana (2019-2023) e Universidade de Cracóvia (2023)
Licença: GPL V3