创建与ParFlow水文模型接口的Python包。
pftools的Python项目详细描述
pftools公司
这是一个通过Python接口运行ParFlow的包。这个包允许 用户在Python中构建用于构建数据库(.pfidb文件)的脚本 哪个ParFlow读取为输入。在
如何使用此软件包
- 在
使用以下命令安装:
在pip install pftools
- 在
在您最喜欢的文本编辑器或IDE中打开一个新的Python脚本。在
- 您可以在主ParFlow repo的下面找到示例Python脚本 /parflow/test/python/
- 在
在脚本的顶部,确保包含以下行:
^{pr2}$这将导入包并将运行初始化为对象“runname”
在 - 在
在ParFlow run对象上设置所需的键和值,例如:
runname.FileVersion = 4
注意:对于用户定义的键名,请确保您以前定义过这些名称 你用它们作为密钥名。例如:
runname.GeomInput.Names = 'domain_input'
需要在以下时间之前设置:
在runname.GeomInput.domain_input.InputType = 'SolidFile'
- 在
为键指定值后,可以在 ParFlow运行对象:
validate()
:这将验证一组键/值对并打印验证 信息。这不需要ParFlow。在write(file_name=None, file_format='pfidb')
:这将写入您的键/值 根据您选择的格式与文件配对(默认为ParFlow数据库pfidb
格式)。作为file_format
参数传递的其他可接受格式包括yml
、yaml
、和{}。此方法不需要ParFlow。在 clone(name)
:这将使用给定的name
生成运行的克隆对象。 请参见parflow/test/python/new_features/serial_runs/serial_runs.py
以获取 如何使用这个。在run(working_directory=None, skip_validation=False)
:这将执行write()
方法。如果skip_validation
设置为False
,它还将执行validate()
方法。如果您 想更改将写入输出文件的目录,但是 默认为Python脚本的目录。最后,run()
将执行 帕弗洛。这将打印环境的数据(ParFlow目录, ParFlow版本、工作目录和生成的ParFlow数据库文件)。 {cd18>如果成功运行,将得到一条消息。 否则,您将收到一条消息ParFlow run failed.
,后面是runname.out.txt
文件的内容。在
- 在
完成输入脚本后,保存并通过Python终端运行它 或命令行:
python3 runname.py
可以将以下一个或多个参数附加到运行:
--parflow-directory [None]
:重写的环境变量 ^{--parflow-version [None]
:重写用于验证的ParFlow的源版本 钥匙。在--working-directory [None]
:重写ParFlow运行的工作目录。 这与在run()
方法中指定working_directory
相同。在--skip-validation [False]
:如果设置为True
,则跳过validate()
方法。这是 与在run()
方法中指定skip_validation
相同。在--show-line-error [False]
:显示设置为True
时发生错误的行。在--exit-on-error [False]
:当运行遇到错误时 设置为True
。在--write-yaml [False]
:当设置为True
时,将键/值对写入yaml文件。 这与调用方法runname.write(file_format='yaml)
相同。在-p [0]
:重写Process.Topology.P
的值(必须是整数)。在-q [0]
:重写Process.Topology.Q
的值(必须是整数)。在-r [0]
:重写Process.Topology.R
的值(必须是整数)。在
如何更新此包(仅限开发人员)
这假设您使用的是pftools包的CMake 包含在主ParFlow repo中(参见https://github.com/parflow/parflow)
- 在
更新中的版本号设置.py在
在 - 在
运行以下命令来创建和测试源归档文件和控制盘 包装分发:
在make PythonCreatePackage
- 在
如果分发通过,请运行以下命令来发布这个 分配:
在make PythonPublishPackage
- 在
检查PyPI以确保包更新已正确发布。谢谢 感谢你的贡献!在
在
寻求帮助
如果您对代码有任何问题,请参考 以下选项:
- 用户邮件列表:https://mailman.mines.edu/mailman/listinfo/parflow-users
- ParFlow博客:http://parflow.blogspot.com
- GitHub repo(用于跟踪问题和请求特性):https://github.com/parflow/parflow
- 项目
标签: