0

我有一个在 Processing Modflow gui 中创建的现有 MODFLOW2005 模型。我想将此模型导入 flopy 以便能够对模型参数进行敏感性分析,我认为使用 flopy 应该更快。

我可以使用以下方法加载现有的 modflow 模型:

ml = flopy.modflow.Modflow.load("modelnamw.nam", model_ws=model_ws,verbose=True,check=False)

并且可以使用以下方法重命名模型以创建新输出:

ml.name = '新型号'

ml.write_input()

有没有一种方法可以让整个模型保持原样,而只需更改水力传导率 (hy) 参数(保持 bcf 输入的其余部分不变)?

谢谢

4

1 回答 1

2

最简单的方法可能是创建模型的副本(通过更改 model_ws 或给它一个新名称),然后使用修改后的参数创建一个新的 BCF 包。确保将所有未更改的参数传递给新的 BCF 包。

# get the BCF package
bcf = ml.get_package("BCF6")  

# new hy
new_hy = 2.

# don't forget to pass all the unchanged parameters from the old BCF
new_bcf = flopy.modflow.ModflowBcf(ml, laycon=bcf.laycon, hy=new_hy, vcont=bcf.vcont) 

new_bcf.write_file()  # write file
ml.run_model()  # run model with new BCF

也可以仅更改现有对象的参数。为此,将现有bcf.hy对象替换为新Util3d对象。注意:在这种情况下,它是 Util3d,但对于其他参数,它可能是 1D 或 2D。

# get the BCF package
bcf = ml.get_package("BCF6")

# create new util3d object
new_hy_util3d = flopy.utils.Util3d(ml, bcf.hy.array.shape, np.float32, new_hy, "hy")

# replace the old hy with the new object
bcf.hy= new_hy_util3d  

bcf.write_file()  # write file
ml.run_model()  # run model with new hy
于 2020-01-30T12:19:05.940 回答