PyMPDATA | Numba-accelerated Pythonic implementation of MPDATA

 by   open-atmos Python Version: 1.0.16 License: GPL-3.0

kandi X-RAY | PyMPDATA Summary

kandi X-RAY | PyMPDATA Summary

PyMPDATA is a Python library. PyMPDATA has no bugs, it has no vulnerabilities, it has build file available, it has a Strong Copyleft License and it has low support. You can install using 'pip install PyMPDATA' or download it from GitHub, PyPI.

PyMPDATA is a high-performance Numba-accelerated Pythonic implementation of the MPDATA algorithm of Smolarkiewicz et al. used in geophysical fluid dynamics and beyond. MPDATA numerically solves generalised transport equations - partial differential equations used to model conservation/balance laws, scalar-transport problems, convection-diffusion phenomena. As of the current version, PyMPDATA supports homogeneous transport in 1D, 2D and 3D using structured meshes, optionally generalised by employment of a Jacobian of coordinate transformation. PyMPDATA includes implementation of a set of MPDATA variants including the non-oscillatory option, infinite-gauge, divergent-flow, double-pass donor cell (DPDC) and third-order-terms options. It also features support for integration of Fickian-terms in advection-diffusion problems using the pseudo-transport velocity approach. In 2D and 3D simulations, domain-decomposition is used for multi-threaded parallelism. PyMPDATA is engineered purely in Python targeting both performance and usability, the latter encompassing research users', developers' and maintainers' perspectives. From researcher's perspective, PyMPDATA offers hassle-free installation on multitude of platforms including Linux, OSX and Windows, and eliminates compilation stage from the perspective of the user. From developers' and maintainers' perspective, PyMPDATA offers a suite of unit tests, multi-platform continuous integration setup, seamless integration with Python development aids including debuggers and profilers. PyMPDATA design features a custom-built multi-dimensional Arakawa-C grid layer allowing to concisely represent multi-dimensional stencil operations on both scalar and vector fields. The grid layer is built on top of NumPy's ndarrays (using "C" ordering) using the Numba's @njit functionality for high-performance array traversals. It enables one to code once for multiple dimensions, and automatically handles (and hides from the user) any halo-filling logic related with boundary conditions. Numba prange() functionality is used for implementing multi-threading (it offers analogous functionality to OpenMP parallel loop execution directives). The Numba's deviation from Python semantics rendering closure variables as compile-time constants is extensively exploited within PyMPDATA code base enabling the just-in-time compilation to benefit from information on domain extents, algorithm variant used and problem characteristics (e.g., coordinate transformation used, or lack thereof). A separate project called numba-mpi has been developed with the intention to set the stage for future MPI distributed memory parallelism in PyMPDATA. The PyMPDATA-examples package covers a set of examples presented in the form of Jupyer notebooks offering single-click deployment in the cloud using mybinder.org or using colab.research.google.com. The examples reproduce results from several published works on MPDATA and its applications, and provide a validation of the implementation and its performance.
Support
    Quality
      Security
        License
          Reuse

            kandi-support Support

              PyMPDATA has a low active ecosystem.
              It has 20 star(s) with 10 fork(s). There are 2 watchers for this library.
              There were 2 major release(s) in the last 12 months.
              There are 25 open issues and 112 have been closed. On average issues are closed in 284 days. There are 3 open pull requests and 0 closed requests.
              It has a neutral sentiment in the developer community.
              The latest version of PyMPDATA is 1.0.16

            kandi-Quality Quality

              PyMPDATA has no bugs reported.

            kandi-Security Security

              PyMPDATA has no vulnerabilities reported, and its dependent libraries have no vulnerabilities reported.

            kandi-License License

              PyMPDATA is licensed under the GPL-3.0 License. This license is Strong Copyleft.
              Strong Copyleft licenses enforce sharing, and you can use them when creating open source projects.

            kandi-Reuse Reuse

              PyMPDATA releases are available to install and integrate.
              Deployable package is available in PyPI.
              Build file is available. You can build the component from source.
              Installation instructions, examples and code snippets are available.

            Top functions reviewed by kandi - BETA

            kandi's functional review helps you automatically verify the functionalities of the libraries and avoid rework.
            Currently covering the most popular Java, JavaScript and Python libraries. See a Sample of PyMPDATA
            Get all kandi verified functions for this library.

            PyMPDATA Key Features

            No Key Features are available at this moment for PyMPDATA.

            PyMPDATA Examples and Code Snippets

            No Code Snippets are available at this moment for PyMPDATA.

            Community Discussions

            No Community Discussions are available at this moment for PyMPDATA.Refer to stack overflow page for discussions.

            Community Discussions, Code Snippets contain sources that include Stack Exchange Network

            Vulnerabilities

            No vulnerabilities reported

            Install PyMPDATA

            To install PyMPDATA, one may use: pip install PyMPDATA (or pip install git+https://github.com/open-atmos/PyMPDATA.git to get updates beyond the latest release). PyMPDATA depends on NumPy and Numba. Running the tests shipped with the package requires additional packages listed in the test-time-requirements.txt file (which include PyMPDATA-examples, see below).

            Support

            Submitting new code to the project, please preferably use GitHub pull requests (or the PyMPDATA-examples PR site if working on examples) - it helps to keep record of code authorship, track and archive the code review workflow and allows to benefit from the continuous integration setup which automates execution of tests with the newly added code. As of now, the copyright to the entire PyMPDATA codebase is with the Jagiellonian University, and code contributions are assumed to imply transfer of copyright. Should there be a need to make an exception, please indicate it when creating a pull request or contributing code in any other way. In any case, the license of the contributed code must be compatible with GPL v3. Developing the code, we follow The Way of Python and the KISS principle. The codebase has greatly benefited from PyCharm code inspections and Pylint code analysis (Pylint checks are part of the CI workflows). Issues regarding any incorrect, unintuitive or undocumented bahaviour of PyMPDATA are best to be reported on the GitHub issue tracker. Feature requests are recorded in the "Ideas..." PyMPDATA wiki page. We encourage to use the GitHub Discussions feature (rather than the issue tracker) for seeking support in understanding, using and extending PyMPDATA code. Please use the PyMPDATA issue-tracking and dicsussion infrastructure for PyMPDATA-examples as well. We look forward to your contributions and feedback.
            Find more information at:

            Find, review, and download reusable Libraries, Code Snippets, Cloud APIs from over 650 million Knowledge Items

            Find more libraries
            Install
          • PyPI

            pip install PyMPDATA

          • CLONE
          • HTTPS

            https://github.com/open-atmos/PyMPDATA.git

          • CLI

            gh repo clone open-atmos/PyMPDATA

          • sshUrl

            git@github.com:open-atmos/PyMPDATA.git

          • Stay Updated

            Subscribe to our newsletter for trending solutions and developer bootcamps

            Agree to Sign up and Terms & Conditions

            Share this Page

            share link