修改flopy包后如何写新的输入文件?

时间:2019-11-05 17:24:40

标签: flopy

我尝试加载(如果存在),更新并在flopy中写入新的输入文件。我尝试了很多事情,但是我做不到。这是我的代码:

rchFile = os.path.join(modflowModel.model_ws, "hydrogeology.rch")

info = modflowModel.get_nrow_ncol_nlay_nper()
if "RCH" in modflowModel.get_package_list():
    rchObject = ModflowRch.load(rchFile, modflowModel)
    rchData = rchObject.rech
else:
    rchData = dict()
    for ts in range(info[3]):
        rchData[ts] = np.zeros((info[0], info[1]))

for feat in iterator:
    for ts in range(info[3]):
        currValue = "random value"
        rchData[ts][feat["row"]-1, feat["column"]-1] = currValue

rchObject = ModflowRch(modflowModel, nrchop=3, ipakcb=None, rech=rchData, irch=0, extension='rch', unitnumber=None, filenames="hydrogeology.rch")

rchPath = os.path.join(modflowModel.model_ws, 'rch.shp')
rchObject.export(f=rchPath)
# rchObject.write_file()
# modflowModel.add_package(rchObject)
modflowModel.write_input() 

modflowModel是和flopy.modflow.Modflow对象。代码末尾的注释是我尝试编写更新的新输入但不起作用的行。

2 个答案:

答案 0 :(得分:2)

当您说它不起作用时,您究竟会遇到什么错误?我通常用flopy修改强制包,如下所示:

m = flopy.modflow.Modflow.load()
for kper in range(m.nper):
    arr = m.rch.rech[kper].array
    arr *= 0.8 # or something
    m.rch.rech[kper] = arr

答案 1 :(得分:0)

我发现了我的错误。 modflowModel.write_input()运作良好。加载模型对象Modflow.load(...)时出现问题。现在,我可以在需要的地方加载模型。因为如果我再加载另一个py等,可能会使我model_ws感到困惑。