5.1.2.1 MODFLOW 的最显著特点是采用了模块化的结构
这里所说的模块化结构是指由一个主程序和一系列具有高度独立性的子程序——即模块所组成的计算机程序结构。它一方面将许多具有类似功能的子程序组合成为子程序包,另一方面用户可以按实际工作需要选用其中某些子程序包对地下水运动进行数值模拟。此外,这种模块化结构使程序易于理解、修改,甚至添加新的子程序包。自从MODFLOW问世以来,已经有许多新的子程序包被开发出来,用来解决MODFLOW本身不能解决的问题。例如,1989年Prudic开发出了模拟河流与含水层之间水力联系的河流子程序包;Leake和Prudic 1988年、Hoffmann和Leake 2003年开发出了模拟由于抽水引起地面沉降的子程序包;Hsieh 和Freckleton 1993年开发出了模拟水平流动障碍(Horizontal flow⁃barri⁃er)的子程序包;Halford和Hanson 2002年开发出了模拟限制降深抽水条件下的混合井流子程序包等。这些新子程序包的加入,大大提高了 MODFLOW 的应用范围。虽然MODFLOW本身仅限于模拟地下水在孔隙介质中的流动,但大量实际工作表明,只要恰当使用,MODFLOW也可以用来解决许多地下水在裂隙介质中的流动问题。不仅如此,经过合理的线性化,Guo 1995年把 MODFLOW 用来解决空气在土壤中的流动问题。Guo 和Bennett 1997年将MODFLOW与其他用于溶质运移模拟的程序结合起来,用来模拟诸如海水入侵等地下水密度为变量的问题。MODFLOW之所以能得到如此广泛的应用,一个很重要的因素就在于其设计上的合理性。参与MODFLOW设计、编程的工作人员大多都是具有丰富实际经验的著名水文地质学家。因此,MODFLOW的使用说明书本身就是一部关于地下水数值模拟方面的教科书,很值得广大水文地质工作者阅读参考[15,16]。
5.1.2.2 离散方法简单
包括空间上的离散、时间上的离散。
在空间的离散上,MODFLOW对含水层采用三个轴向上不等距正交的长方体剖分网格,这种网格的优点在于用户易于准备数据文件,便于文件的规范化输入。
在时间的离散上,MODFLOW模拟系统引入了应力期的概念,可以把整个模拟期划分为外应力(如抽水量、蒸发量、补给量等)保持不变的若干个应力期,每个应力期可再细划分为若干个时间段。比如以季度长度为应力期,以天的倍数为时间段。在同一个应力期中,各时间段既可以等步长,也可以几何序列逐渐增长;通过对有限差分方程组的求解,可得到每个时间段末刻的水头值[9,17]。
5.1.2.3 求解方法多样化
求解的方法可以分为直接求解方法和迭代求解方法。MODFLOW原来含有两种迭代求解子程序包:SIP方法(或称为强隐式法)、SOR方法(或称为逐次超松弛迭代法)。由于MODFLOW的模块化结构,Mary Hill于1990年设计增加了一种新的迭代子程序包,即PCG子程序包,该子程序包采用PCG方法(或称为预调共轭梯度法)迭代求解。
对于MODFLOW的多个求解子程序包,一方面,用户可以根据问题的实际情况选用比较合适的求解方法;另一方面,对于某一特定的实际问题,由于水文地质条件的复杂性,用户选择不同的求解子程序包可能都会收敛,也可能只收敛于一种(或几种)求解方法而不收敛于另一种(或几种)求解方法。通过我国国内多项实践应用,PCG法和SIP法实用可靠,而运用SOR子程序包求解的结果精度低,不宜采用[9,16]。