基于高可伸缩非结构化网格的python表面处理框架
quagmire的Python项目详细描述
泥潭
quagmire是一个python表面处理框架,用于在高度并行、分解的结构化和非结构化网格上构建侵蚀和沉积模型。
Quagmire分为三个主要类,它们从较低层继承方法和属性。
Surface Processes类继承自Topology类,而Topology类又继承自Trimesh或PixMesh,具体取决于网格的类型。
安装
安装quagmire需要numpy和fortran编译器,最好是gfortran。
python setup.py build
- 如果更改Fortran编译器,则可能需要添加
运行setup.py时的标志
config_fc --fcompiler=<compiler name>
(参见文档中的numpy.distutils)。
- 如果更改Fortran编译器,则可能需要添加
运行setup.py时的标志
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平滑构建了一个提供函数接口的管理器