我刚刚浏览了 flopy 网站 ( https://flopy.readthedocs.io/en/latest/_notebooks/tutorial01_seawat.html ) 上的 SEAWAT 教程,我有一种感觉,当我阅读压力期和注意力集中的时间步长时,输出很奇怪。
本教程的以下几行在这里很重要:
dis = flopy.modflow.ModflowDis(...,nper=1,perlen=1.5,nstp=15)
和
btn = flopy.mt3d.Mt3dBtn(...,nprs=-5,nprobs=10,nprmas=10,dt0=0.001)
如果我理解正确的话,我有一个长度为 1.5 天的压力期,它分为 15 个时间步进行流量计算。对于传输,选择 0.001 天的时间步长,其中每 5 天保存一次作为输出。这将导致 300 个步骤被保存。
当我访问数据时
ucnobj = bf.UcnFile("MT3D001.UCN", model=swt)
ucnobj.get_kstpkper()
它为传输输出(时间步长,压力周期)的元组。我得到了 300 个值,这是预期的,但是其中只有 15 个是唯一的。(0,0), (1,0), (2,0), ..., (14,0) 分别重复 20 次。而且由于我有很多重复项,因此实际上不可能使用
ucnobj.get_data(kstpkper=(14,0))
例如。get_data() 函数似乎是基于流模拟而不是传输模拟。访问浓度数据的唯一方法是使用时间参数。这真的是它应该如何工作的吗?因为这使得 get_kstpkper() 函数以及 get_data() 函数的 kstpkper 参数看起来毫无用处。
也许我只是错过/误解了一些东西......如果你能帮助我理解这一点,我将不胜感激:)