问题标签 [flopy]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
743 浏览

python - 如何将未格式化的 fortran 文件(modflow 输出)转换为 numpy 数组

我有一个扩展名为 hds 的 modflow 输出文件。文件的谷歌驱动器链接。它是一个未格式化的 fortran 文件。我需要将其转换为 numpy 数组,我尝试过:

github 代码链接:https ://github.com/Kirubaharan/hydrology/blob/master/gw_tut.py

我正在尝试来自此链接的教程。由于我在 linux 上,我不能使用 flopy 的方法从文件中获取输出数组。所以我正在尝试使用 np.fromfile,但我在获取输出时遇到了问题。

我的输出现在是这样的:

我只包含了几行输出。

有关标头信息,您可以参考他们的源代码:https ://github.com/modflowpy/flopy/blob/master/flopy/utils/binaryfile.py#L30g

0 投票
1 回答
110 浏览

python - Python 2.7 子进程

我有一个使用名为 flopy 的包的 python 脚本。我的脚本会为一个 fortran 可执行文件生成一系列输入。Flopy 将这些写入文本文件,然后调用 fortran 可执行文件,后者使用文本文件运行模型。

我使用的是 mac (OSX),我从 python.org 下载了 python 2.7——即我没有使用 Apple 系统版本的 python。我使用的 python 版本在 Library/Frameworks/Python.Frameworks/

如果我从终端窗口调用它,我可以运行我的脚本(通过输入:

但是,如果我通过 IDLE(我下载的 python 附带的版本)运行我的脚本,它会返回一个错误:

文件“mfnwt”绝对存在。我确定我遗漏了一些明显的东西,但是我需要做些什么来允许 IDLE 通过它使用的 shell 运行程序/子进程吗?谢谢。

0 投票
1 回答
199 浏览

python - 为什么 Flopy 给出相同的结果?

我尝试使用flopy,因此我可以尝试使用 python 和modflow运行一些优化程序。Modflow 需要处理大量数据,我们使用不同的文件提供这些信息。

我们提供输入和软盘运行 modflow

我的麻烦是, flopy 似乎无视输入文件并给出相同的结果,无论我给出什么输入。

这是代码:

现在,即使我更改了 EVT、RCH 或 WEL 信息,结果也是一样的。我什至尝试不包含上述文件,但结果仍然相同。任何指针?

0 投票
1 回答
560 浏览

python - 使用 flopy 从 MODFLOW-USG 二进制输出中提取磁头

我正在寻找一种从 MODFLOW-USG 二进制头部保存文件中提取模拟头部的方法。Flopy 似乎支持使用 flopy.utils.binaryfile 模块的操作,但我无法进行简单的测试。下面的代码应该返回包含在 hds 文件中的所有时间输出的列表,但只返回第一个时间步的单个值。flopy 是否支持从非结构化网格头保存文件中提取数据?

0 投票
1 回答
175 浏览

python - 使用 FloPy 从 MODFLOW-2000 二进制输出中提取沉降数据

我正在使用 MODFLOW-2000 运行地面沉降模型。但是,沉降文件的输出是二进制数据。有什么方法可以使用 python 脚本将其转换为文本,因为我正在为模型做数百个场景。

0 投票
1 回答
274 浏览

python-2.7 - 运行 flopy.modflow.HeadObservation 时出错:ValueError:不能从结构转换为非结构,除非结构只有一个字段

我正在使用 Flopy 在 Python 2.7 中设置 MODFLOW 模型。我正在尝试通过 HOB 包添加头部观察。以下示例代码直接取自https://modflowpy.github.io/flopydoc/mfhob.html的函数文档:

使用该函数的示例代码,我收到以下错误:

显示回溯的错误消息屏幕截图

当我尝试为我的模型创建头部观察时,我得到了同样的错误,这是稳态并且有一些不同的输入值。不幸的是,我无法找到一个可以与之比较的工作示例。有任何想法吗?

编辑:jdhughes 的代码就像一个魅力;但是我也忽略了将 Flopy 更新到最新版本 - 我尝试先更新 numpy,但直到我将 Flopy 从 3.2.8 更新到 3.2.9 才摆脱 ValueError。现在可以用了,谢谢!!!

0 投票
2 回答
215 浏览

python - 软盘中压力期数据中的井号和其他注释

我想为我的井文件分配一个注释掉的井 ID 号(也对 ghb 单元执行相同的操作),但我找不到任何关于如何执行此操作的信息。

我写了一些东西来创建我自己的 ghb 文件,但是如果我尝试将它加载回我的软盘 mf 类,然后用 mf.write_input() 将它写出我的其他包,注释不会留下,它会被覆盖。

我知道在 mf.wrtie_input() 中我可以指定要写出的包,如果我拿走我之前制作的 ghb 文件(或井文件),那么原始文件不会被写入哪个好。

但我想知道是否有办法直接为每个包的压力周期数据添加注释,以便我可以将它全部包含在软盘类中。

谢谢

0 投票
1 回答
61 浏览

flopy - 旋转图 - 软盘

我正在使用函数,例如:ml.dis.top.plot(). 我想旋转这些数字并删除标题。我怎样才能做到这一点?

plt.title('')似乎适用于标题,但我无法旋转这些数字。这是脚本的一部分:

0 投票
1 回答
335 浏览

python - 使用 Flopy 截断 CBB 文件

我有兴趣在一定数量的压力期后截断二进制 MODFLOW CBB 文件。使用 Flopy 二进制文件实用程序,我已经能够理解如何解压缩二进制文件并将值提取到数组中。但是,尚不清楚我是否可以直接使用 Flopy 实用程序来创建新的二进制文件。Flopy 是否有一个实用程序可以帮助将 CBB 文件的一部分写入新的二进制文件?新的 CBB 文件将用作 MODPATH 的输入,因此 CBB 文件的格式需要保持不变。

仅使用 Flopy,我觉得我接近获得所需的结果。我确信有 Python 特定的库可用于获得所需的结果,但我想我会看看我是否可以先使用 Flopy 到达那里。

这是我到目前为止所研究的:

CBB.list_records() 的第一个和最后一个压力期的输出:

……

我希望将所有这些预算条款保留在新的二进制文件中,但希望删除上一个压力期(本例中的压力期 6)的所有条款。

我尝试将压力期数据查询到一个数组中,然后使用下面的代码将此数据写入一个新的二进制文件。我遇到了这段代码的内存问题。此处处理的示例 CBB 文件 (~460 mb) 比我最终想要处理的 CBB (~55 gb) 小得多。对于我正在尝试做的事情,似乎不需要将文件读取到数组中。

我的另一个想法是逐行读取 CBB 文件并只写出我需要的数据。这将需要对标题行进行解码以确定当前的压力期,以了解何时停止写入数据。我无法解码标题信息来做到这一点。

谢谢!

0 投票
1 回答
40 浏览

flopy - 具有“打开/关闭”的二元选项[(BINARY)]" 已在 MODFLOW 6 软盘中实现?

MODFLOW 6 IO pdf (mf6io.pdf) 的第 20 页描述了可在 BEGIN PERIOD / END PERIOD 块中用于列表输入的 OPEN/CLOSE 选项。我对软盘的测试发现我可以读取外部 ASCII 文件,但不能读取二进制文件。当我使用调试器进入代码时,我找不到任何可以处理“(BINARY)”选项的代码。有问题的代码似乎在“加载”方法中的 mfpackage.py 中(如下)。MODFLOW 6 软盘中是否实现了“OPEN/CLOSE [(BINARY)]”的二进制选项?