基于高可伸缩非结构化网格的python表面处理框架

quagmire的Python项目详细描述


泥潭

quagmire是一个python表面处理框架,用于在高度并行、分解的结构化和非结构化网格上构建侵蚀和沉积模型。

Quagmire分为三个主要类,它们从较低层继承方法和属性。

Quagmire hierarchy

Surface Processes类继承自Topology类,而Topology类又继承自Trimesh或PixMesh,具体取决于网格的类型。

安装

安装quagmire需要numpy和fortran编译器,最好是gfortran

  • python setup.py build
    • 如果更改Fortran编译器,则可能需要添加 运行setup.py时的标志config_fc --fcompiler=<compiler name> (参见文档中的numpy.distutils)。
  • python setup.py install

依赖关系

运行此代码需要安装以下软件包:

  • python 3.7.x及以上版本
  • numpy 1.9及以上
  • scipy 0.15及以上
  • mpi4py
  • petsc4py
  • stripy
  • h5py(可选-用于保存并行数据)
  • matplotlib(可选-用于可视化)

petsc安装

petsc通过python前端petsc4py被广泛使用。在使用quagmire之前,需要在本地计算机上配置并安装petsc。您可以使用pip安装petsc4py及其依赖项。

[sudo] pip install numpy mpi4py
[sudo] pip install petsc petsc4py

如果失败,则必须手动编译这些文件。

HDF5安装

这是一个可选的安装,但是对于保存分布在多个进程中的数据非常有用。如果要从source编译hdf5,则应使用--enable-parallel标志配置它:

CC=/usr/local/mpi/bin/mpicc ./configure --enable-parallel --enable-shared --prefix=<install-directory>
make	# build the library
make check	# verify the correctness
make install

然后,在安装h5py时可以指向此安装目录。

用法

泥潭是高度可扩展的。tests子目录中的所有python脚本都可以并行运行,例如

mpirun -np 4 python stream_power.py

其中,-np标志后面的数字指定处理器的数量。

教程

有关示例的教程可以在notebooks子目录中找到。这些是可以在本地运行的jupyter笔记本。我们建议安装FFmpeg以在某些笔记本中创建视频。

笔记本中包含的主题包括:

网格划分

  • 方形网格
  • 椭圆网格
  • 网格优化(例如,劳埃德网格改进)
  • 泊松盘采样
  • 网格变量
  • 泥潭功能接口(需要基本网格)

流算法

  • 单条和多条下坡路
  • 累积流量

侵蚀和沉积

  • 长程流模型
  • 短程扩散演化

景观演变

  • 显式时间步进和数值稳定性
  • 景观平衡指标
  • 基底隆起

发行说明v0.5.0b

这是该代码的第一次正式“发布”

更改摘要

  • 引入quagmire.function,它是一个类似于黑社会函数的惰性评估对象的集合
  • 引入网格变量,该变量包装PetSC数据向量并提供与泥潭函数的互操作性
  • 为自动适当更新矩阵的地形更改提供上下文管理器支持
  • 使所有网格变量数据数组仅显示,适当大小的numpy数组的赋值除外(这是为了确保并行信息的正确同步)。
  • 各种@property定义,用于处理更改需要重新生成数据结构的情况
  • 使许多mesh方法私有化并通过函数公开它们
    • 上游积分是网格上的函数
    • 上游/下游平滑是通过网格函数
    • rbf平滑构建了一个提供函数接口的管理器

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java无法使用JAXB配置Moxy   java如何让我的简单Swing telnet客户端正确显示字符?   java中从可运行线程调用主线程的多线程处理   java数据源。EBJ3会话bean中的getConnection()   使用java和正则表达式从xml文件提取值时出现问题   java定制Jersy胡须Mvc   在Java中,“限制并发”是什么意思?   java有没有更干净的方法可以在这里使用Optional,而不在三个地方返回“NA”?   java Tomcat启动,然后崩溃,除非我打电话   java理解客户机和服务器   java时间戳将在视图对象>实体转换期间丢失   如何在java中返回布尔值(基元)?   java使用spring mvc设置日志记录,希望仅对我的代码进行跟踪/调试   用Jackson解析嵌套对象