【问题标题】:How would I get the number of stress periods in a MODFLOW 6 simulation?如何获得 MODFLOW 6 模拟中的压力周期数?
【发布时间】:2019-04-08 16:46:07
【问题描述】:

我可以使用 flopy.mf6.MFSimulation.load 读取现有的 MODFLOW 6 模拟。现在我想找出它有多少个压力周期,作为一个整数,由 tdis 包中的 nper 定义。最简单的方法是什么?

【问题讨论】:

    标签: flopy


    【解决方案1】:

    所以这里有个技巧,在 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 模型,使用新的mf6 工具与传统 MODFLOW 模型有很大不同。代码库要复杂得多,我还没有完全理解它。
    • 你是对的。 .get_data() 方法比 .array 属性更有意义,尤其是对于标量变量。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-09-10
    • 2022-01-08
    • 1970-01-01
    • 1970-01-01
    • 2015-07-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多