加载用FloPy MODFLOW创建的MNW2包时出错

2024-05-16 13:36:07 发布

您现在位置:Python中文网/ 问答频道 /正文

我无法加载使用FloPy从头开始创建的MNW2包,使用节点数据和应力周期数据重新排列(使用losstype='general')

我回到Jupyter笔记本flopy3_mnw2package_example:我坚持这个例子,只更改了节点数据的定义,替换了笔记本的[3]中的:

node_data = pd.DataFrame([[1, 1, 9.5, 7.1, 'well1', 'skin', -1, 0, 0, 0, 1., 2., 5., 6.2],
                         [1, 1, 7.1, 5.1, 'well1', 'skin', -1, 0, 0, 0, 0.5, 2., 5., 6.2],
                         [3, 3, 9.1, 3.7, 'well2', 'skin', -1, 0, 0, 0, 1., 2., 5., 4.1]], 
             columns=['i', 'j', 'ztop', 'zbotm', 'wellid', 'losstype', 'pumploc', 'qlimit', 'ppflag', 'pumpcap', 
                    'rw', 'rskin', 'kskin', 'zpump'])

使用losstype='general'版本:

node_data = pd.DataFrame([[1, 1, 9.5, 7.1, 'well1', 'general', 1., 0., 0., 2.0],
                        [1, 1, 7.1, 5.1, 'well1', 'general', 0.5, 0., 0., 2.0],
                        [3, 3, 9.1, 3.7, 'well2', 'general', 1., 0., 0., 2.0]], 
             columns=['i', 'j', 'ztop', 'zbotm', 'wellid', 'losstype', 'rw', 'B', 'C', 'P'])

在创建mnw对象(在[7]中)之后,我编写输入文件并尝试使用以下方法加载MNW2包:

m.write_input()
flopy.modflow.Modflow.load('data/mnw2example.nam', load_only = 'mnw2', verbose=True)

但我得到了以下错误:

---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-122-fb0de1b45d14> in <module>
----> 1 flopy.modflow.Modflow.load('data/mnw2example.nam', load_only = 'mnw2', verbose=True)

C:\tools\Anaconda3\lib\site-packages\flopy\modflow\mf.py in load(f, version, exe_name, verbose, model_ws, load_only, forgive, check)
    800                         else:
    801                             item.package.load(item.filehandle, ml,
--> 802                                               ext_unit_dict=ext_unit_dict)
    803                         files_successfully_loaded.append(item.filename)
    804                         if ml.verbose:

C:\tools\Anaconda3\lib\site-packages\flopy\modflow\mfmnw2.py in load(f, model, nper, gwt, nsol, ext_unit_dict)
   1230         for i in range(mnwmax):
   1231             # create a Mnw object by parsing dataset 2
-> 1232             mnwobj = _parse_2(f)
   1233             # populate stress period data table for each well object
   1234             # this is filled below under dataset 4

C:\tools\Anaconda3\lib\site-packages\flopy\modflow\mfmnw2.py in _parse_2(f)
   1824                hlim=hlim, qcut=qcut, qfrcmn=qfrcmn, qfrcmx=qfrcmx,
   1825                hlift=hlift, liftq0=liftq0, liftqmax=liftqmax, hwtol=hwtol,
-> 1826                liftn=liftn, qn=qn)
   1827 
   1828 

C:\tools\Anaconda3\lib\site-packages\flopy\modflow\mfmnw2.py in __init__(self, wellid, nnodes, nper, losstype, pumploc, qlimit, ppflag, pumpcap, rw, rskin, kskin, B, C, P, cwc, pp, k, i, j, ztop, zbotm, node_data, stress_period_data, pumplay, pumprow, pumpcol, zpump, hlim, qcut, qfrcmn, qfrcmx, hlift, liftq0, liftqmax, hwtol, liftn, qn, mnwpackage)
    426         # build recarray of node data from MNW2 input file
    427         if node_data is None:
--> 428             self.make_node_data()
    429         else:
    430             self._set_attributes_from_node_data()

C:\tools\Anaconda3\lib\site-packages\flopy\modflow\mfmnw2.py in make_node_data(self)
    450         names = Mnw.get_item2_names(self)
    451         for n in names:
--> 452             node_data[n] = self.__dict__[n]
    453         self.node_data = node_data
    454 

ValueError: cannot copy sequence with size 0 to array axis with dimension 2

在保存losstype='skin'版本时,加载MNW2包没有问题,因此我不知道这是否是我的节点_数据中的问题?但我想我定义了losstype='general'所需的所有参数

谢谢你的帮助


Tags: inpyselfnodedatalibpackagessite