首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >运行flopy.modflow.HeadObservation: ValueError:无法从结构转换到非结构的错误,除非结构只有一个字段

运行flopy.modflow.HeadObservation: ValueError:无法从结构转换到非结构的错误,除非结构只有一个字段
EN

Stack Overflow用户
提问于 2018-10-02 20:21:56
回答 1查看 303关注 0票数 2

我使用Flopy在Python2.7中建立一个MODFLOW模型。我试图通过滚刀包添加头部观察。下面的示例代码直接取自https://modflowpy.github.io/flopydoc/mfhob.html的函数文档

代码语言:javascript
复制
    import flopy
    model = flopy.modflow.Modflow()
    dis = flopy.modflow.ModflowDis(model, nlay=1, nrow=11, ncol=11,
                                   nper=2, perlen=[1,1])
    obs = flopy.modflow.mfhob.HeadObservation(model, layer=0, row=5,
                                              column=5, 
                                              time_series_data=[[1.,54.4], 
                                                                [2., 55.2]])

使用此函数的示例代码,我将得到以下错误:

代码语言:javascript
复制
    ValueError: Can't cast from structure to non-structure, except if the structure only has a single field.

当我试图为我的模型创建一个头部观测时,我得到了同样的错误,这个模型是稳态的,并且有一些不同的输入值。不幸的是,我还没有找到一个可以比较的例子。有什么想法吗?

编辑:jdhughes的代码工作起来很有魅力;但我也忽略了将Flopy更新到最近的版本--我试着首先更新numpy,但是直到我将Flopy从3.2.8更新到3.2.9,才摆脱了ValueError。现在开始工作了,谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-10-03 17:22:35

您需要创建一个或多个HeadObservation类型的实例,并将其传递给ModflowHob。下面是一个有两个观察地点的例子。

代码语言:javascript
复制
# create a new hob object
obs_data = []

# observation location 1
tsd = [[1., 1.], [87163., 2.], [348649., 3.],
       [871621., 4.], [24439070., 5.], [24439072., 6.]]
names = ['o1.1', 'o1.2', 'o1.3', 'o1.4', 'o1.5', 'o1.6']
obs_data.append(flopy.modflow.HeadObservation(mf, layer=0, row=2, column=0,
                                              time_series_data=tsd,
                                              names=names, obsname='o1'))
# observation location 2
tsd = [[0., 126.938], [87163., 126.904], [871621., 126.382],
       [871718.5943, 115.357], [871893.7713, 112.782]]
names = ['o2.1', 'o2.2', 'o2.3', 'o2.4', 'o2.5']
obs_data.append(flopy.modflow.HeadObservation(mf, layer=0, row=3, column=3,
                                              time_series_data=tsd,
                                              names=names, obsname='o2'))
hob = flopy.modflow.ModflowHob(mf, iuhobsv=51, obs_data=obs_data)

将提交一个问题来更新文档和文档字符串。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52615855

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档