
Pympdata是Smolarkiewicz等人的MPDATA算法的高性能Numba加速Pythonic实现。用于地球物理流体动力学及以后的数值求解具有坐标转换的1D,2D和3D结构化网格中的广义对流扩散PDE。
简而言之,pympdata数值求解以下方程:
标量字段
PYMPDATA文档是通过pdoc生成的。
一个名为PyMPDATA-MPI的单独项目描述了如何使用numba-mpi在pympdata中启用分布式内存并行性,并提供对实现及其性能的验证。
要安装pympdata,可以使用: pip install PyMPDATA (或pip install git+https://github.com/open-atmos/PyMPDATA.git以超过最新版本的更新)。 pympdata取决于NumPy和Numba 。
运行包装的测试需要如果调用PIP,则需要安装的其他软件包: pip install PyMPDATA[tests] 。
pympdata示例与pympdata捆绑在一起,并位于examples文件夹中。它们构成了一个单独的PyMPDATA_examples python软件包,该软件包也可以在PYPI上找到。这些示例在PyMPDATA_examples package setup.py文件中列出了其他依赖关系。运行示例需要安装PyMPDATA_examples软件包。由于示例软件包包括jupyter笔记本电脑(及其执行需要写入访问),因此建议的安装和启动步骤是:
git clone https://github.com/open-atmos/PyMPDATA-examples.git
cd PyMPDATA-examples
pip install -e .
jupyter-notebook
另外,也可以使用pip install PyMPDATA-examples从pypi.org安装示例软件包。
构成PYMPDATA接口的关键类如下所述。
Options类别组算法变体选项以及某些与实现相关的标志。
在pympdata中,假定解决方案域从第一个单元的边界延伸到最后一个单元的边界(因此,第一个标量场值是在ScalarField和VectorField类实施了Arakawa-c交错的网格逻辑。
边界条件作为BoundaryCondition条件定义的类实现。
MPDATA迭代求解器的逻辑由Stepper类在Pympdata中表示。
Solver类的实例用于控制集成和访问解决方案数据。在实例化期间,根据所提供的选项分配求解器所需的其他内存。
向项目提交新代码,最好使用github拖拉请求(或pympdata -examples pr网站(如果使用示例)) - 它有助于记录代码作者身份,跟踪和存档代码审核工作流程,并允许从连续的集成设置中受益,该设置可自动执行具有新添加的代码的测试。
截至目前,整个Pympdata代码库的版权均在Jagiellonian University(2019-2023)和Krakow University(2023年) - 主要维护者的工作场所。假定代码贡献意味着版权转移。如果需要例外,请在创建拉动请求或以任何其他方式贡献代码时表示。无论如何,贡献代码的许可必须与GPL V3兼容。
制定代码,我们遵循Python和Kiss原则的方式。代码库大大受益于Pycharm代码检查和皮层代码分析(Pylint检查是CI工作流程的一部分)。
关于Pympdata的任何不正确,不直觉或无证件的Bahaviour的问题,最好在GitHub Disears Tracker上报告。功能请求记录在“想法...” pympdata Wiki页面中。
我们鼓励使用GitHub讨论功能(而不是问题跟踪器)来寻求支持,使用和扩展Pympdata代码。
请为PyMPDATA-examples使用Pympdata问题跟踪和Dicsussion基础设施。我们期待您的贡献和反馈。
欧盟通过授予波兰科学基金会(POIR.04.04.04.04.04.00-00-5E1C/18)和波兰国家科学中心(授予2020/39/D/ST10/01220),得到了Pympdata的发展(POIR.04.04.04.04.04.04.04.04.04.04.04.04.04.04.04.04.04.04.04.04.04.04.04.04.04.04.04.04.04.04.04.04.04.04.04.04.04.04.04.04.04.04.04.04.04.04.04.04.04.04.39/
版权所有:Jagiellonian大学(2019-2023)&AGH克拉科夫大学(2023年)
许可证:GPL V3