【发布时间】:2019-04-08 16:46:07
【问题描述】:
我可以使用 flopy.mf6.MFSimulation.load 读取现有的 MODFLOW 6 模拟。现在我想找出它有多少个压力周期,作为一个整数,由 tdis 包中的 nper 定义。最简单的方法是什么?
【问题讨论】:
标签: flopy
我可以使用 flopy.mf6.MFSimulation.load 读取现有的 MODFLOW 6 模拟。现在我想找出它有多少个压力周期,作为一个整数,由 tdis 包中的 nper 定义。最简单的方法是什么?
【问题讨论】:
标签: flopy
所以这里有个技巧,在 MODFLOW 6 的 flopy 类中,所有信息都存储为对象,包括整数、数组、浮点数等。这给了我们一些很好的优势,但它也使一些语法有点困难,虽然我们正在努力改进。
这是一个非常简单的模型:
import flopy
sim = flopy.mf6.MFSimulation()
tdis = flopy.mf6.ModflowTdis(sim, nper=10)
gwf = flopy.mf6.ModflowGwf(sim)
dis = flopy.mf6.ModflowGwfdis(gwf)
如果我们尝试像这样进入 nper:
nper = tdis.nper
print(nper)
然后我们得到repr,看起来像这样:
{internal}
(10)
我们获取实际数据的方式是追加数组:
nper = tdis.nper.array
print(nper)
print(type(nper))
在这种情况下,我们会得到想要的信息:
10
<class 'int'>
对于标量,我们正在考虑更改此行为,使其行为与您想象的一样(直接返回值),但我们尚未实现。
【讨论】:
tdis = MFSimulation.get_package('TDIS') 获得了 TDIS 包。然后我发现我可以通过nper = tdis.nper.get_data() 将 nper 作为 int 获得。看起来tdis.nper.array 调用tdis.nper.get_data()。使用array 比使用get_data() 更可取吗?
mf6 工具与传统 MODFLOW 模型有很大不同。代码库要复杂得多,我还没有完全理解它。