过刊浏览
摘要:地下水数值模拟课程是一门综合性强且涉及数值计算的课程,对于授课对象为非数学专业的本科生而言是一门相当有难度的课程。为提高课堂效率,通过引入具有强大矩阵计算功能和便于操作实现的编程软件MATLAB来实现地下水运动方程的数值计算求解过程,不仅可以增加学生的学习兴趣,还可以培养学生运用编程解决实际问题的能力。
关键词:地下水数值模拟,数值计算,MATLAB
中图分类号:P641.73 文献标识码:A
早在20世纪60年代,地下水数值模拟技术开始得到广泛应用,而到70年代中期,我国也开始广泛引用此方法来解决实际水文地质问题。随着经济社会的发展,不仅对地下水资源量的需求日益增加,对水质的要求也越来越高,地下水资源占据越来越重要的地位。然而,由于对地下水资源的过量开采,最近几十年来对地下水资源的质和量都造成了许多负面影响,如引起水资源枯竭、降落漏斗的形成、海水入侵、地面沉降、土体盐渍化以及工程病害等一系列问题,因此要实现地下水资源的可持续开发利用,地下水数值模拟技术的发展成为一个非常重要的环节。而对应的科研单位和生产单位都迫切需要掌握地下水数值模拟的人才,因此学好这门课程可以为学生在将来求职或继续深造中提升竞争力,为未来的发展打下基础[1-2]。
目前,越来越多开设水文地质与工程地质专业方向的理工科院校将地下水数值模拟课程列入了本科课程计划,培养出来的毕业生也越来越受到了广大用人单位的欢迎。但现阶段地下水数值模拟课程在教授的过程中还普遍发现存在重理论、轻实践、学生学习积极性不高等问题。因此,探讨如何对本课程进行教学改革,最终达到专业人才培养目标有重要的意义。
一、课程特点
地下水数值模拟课程是我校地下水科学与工程和水文与水资源工程两个专业的重要专业课程,是水文地质学科的一个重要组成部分。该课程总学时为40学时,其中,36学时为课堂理论教学,4学时为学生上机实践。课程设定的总体目标是,通过学习本课程要求学生掌握不同水文地质条件下,地下水稳定流动和非稳定流的相关数学模型及常用的数值求解方法。
总体上来说,地下水数值模拟是理论性和实践性都很强的一门课程,除了要求学生进一步深化理解水文地质学的若干基本概念和基本理论,还要掌握有限单元与有限差分数值计算方法的基本思想,并可以用数值计算方法来实现对地下水运动的基本方程的求解。本课程对学生专业相关知识要求较高,需要先修的课程有:高等数学、线性代数、水文地质学基础、地下水动力学等。
课程最突出的特点是基本概念多、数学公式多及实践性要求强。根据课程讲解内容要求学生掌握的地下水流动问题的数值求解的基本方程就涉及承压水一维稳定流、潜水一维稳定流、承压水一维非稳定流、潜水一维非稳定流与承压水二维非稳定流。虽然学生在前期地下水动力学课程学习阶段中对描述地下水运动的基本方程进行了学习,但是对引出有限差分和有限单元法进行离散化并进行求解的学习内容还是有一定的难度。尤其是对描述地下水运动的数学模型采用数值计算方法进行求解的课程要求,对于授课对象为非数学专业的本科生而言是一门相当有难度的课程内容,特别是对数学基础相对比较薄弱一些的学生。在复杂数值计算公式推导与应用过程中,由于涉及数学公式的推导且内容具有抽象性,很容易打击学生的学习积极性与自信心。
前期课堂教学过程主要借助多媒体与板书的相结合的方式,进行相关数值计算过程的推导与展示。在实际教学过程中发现,在刚开始进入讲解有限差分方法及泰勒公式的推广应用内容时,进行地下水运动的数学方程离散化与计算求解的过程中,学生课堂积极性出现了明显降低的现象,课堂讲授推进困难。同时根据课堂提问和作业反馈的情况也直接反映出学生对这部分知识的掌握情况并不理想。
由于本门课程同时还是一门具有实践性的课程,在要求学生完成课堂理论知识学习的基础上,能进一步上机运用地下水数值模拟软件独立完成简单模型的建立与运行。而对应的在上机软件操作过程中由于也直接涉及数值计算算法部分,因此课堂理论知识掌握不牢固还直接影响学生运用软件的学习。
二、MATLAB软件特点
MATLAB (Matrix Laboratory)是Math Works公司推出的一套具有强大数值计算功能(尤其是矩阵计算)与可视化的软件。软件拥有友好的可视化界面,可以通过编制命令流文件进行运行操作或直接借助用户界面开发环境。与其他编程语言相比,如C语言和FORTRAN语言,MATLAB编程语言简练,具有简单易学的特点,大大提高了非数学专业学生的理解与应用能力[3]。同时,不同于大多数软件需要编制程序以实现某些函数的功能,MATLAB软件自带有丰富的库函数足以满足课程数值计算的需求,而且命令流易于学习与方便调试。大量的实践工作也表明,在进行矩阵计算过程中尤其是高阶矩阵求解问题,MATLAB 软件具有明显快捷与易于操作的优势。目前,该软件在本科课堂教学和实践教学过程中都开始得到了推广应用,并取得了不错的教学效果[4-5]。
该软件还具有专门用来研究与求解偏微分方程的工具箱PDE,主要可以用在使用有限单元方法解决椭圆形方程、抛物型方程、双曲型方程和特征值问题。而在边界条件方面也能直接实现狄利克雷边界条件及诺依曼边界条件,也可以实现复杂的边界条件。同时,软件可以借助GUI界面的形式直观形象地进行可视化显示具体计算过程与结果。现阶段,该软件也已经开始在本科教学过程中实现对一些简单的地下水流问题的求解功能[6-8]。
在地下水数值模拟理论课堂讲解过程中,通过多媒体与板书完成对算法原理与过程内容的讲解。而对复杂的线性方程的求解问题,不同于前期课程讲授过程中以教师板书进行繁杂的过程计算,通过编程软件MATLAB来实现具体的求解过程,并进一步借助软件可视化功能,把求解过程与结果在课堂进行形象的展示,以达到降低课程求解过程的难度,减轻学生课程学习的负担和增加自信心的目的。同时,也更容易实现多种算法与对比方案的计算过程与结果展示,通过对比达到启发学生对数值算法的掌握与实际数值模拟软件的学习,并可进一步引导学生MATLAB 软件实际操作[9]。
三、MATLAB 在教学中的应用案例
数值法是一种近似解法。它是以地下水运动微分方程的定解问题为基础,将表示水位随时间和空间连续变化的函数进行离散化,以求得函数在有限节点(或结点)上的近似值。以有限差分数值计算方法为例,其算法的具体实现的过程可以概化为:用渗流区内有限个离散点的集合代替连续的渗流区,在这些离散点上用差商近似地代替微商,将微分方程及其定解条件化为以未知函数(如水位)在离散点上的近似值为未知量的代数方程(称之为差分方程),然后求解差分方程,从而得到微分方程在离散点上的近似解。
在具体教学中,引用典型区域地下水流问题中河渠间地下水的稳定运动的例子,运用有限差分的方法实现求解过程。首先,根据水文地质条件概化完成相应的数学模型的建立。然后,采用有限差分方法通过用单元中心法建立计算网格、建立单元流量平衡方程和解单元流量平衡方程组的过程。最终,基于均衡法实现对实际地下水运动模型转化为数学方程组求解问题。而对于下一步繁杂的矩阵求解问题,引入MATLAB软件以采用其中一种典型算法—迭代法,进行具体数学方程的求解过程的实现。
(1)地下水流问题描述
假设有一潜水含水层为均质且各向同性,含水层底板为水平,渗透系数为100 m/d。在潜水含水层两侧0(左侧边界)与1000m(右侧边界)处有两条长而直且相互平行的河流切穿了含水层隔水底板。假定降水入渗补给潜水含水层在时间和空间上都是均匀分布的,补给强度设为0.005 m3/m2·d。在两条河流的水位分别为10m(左侧)与20m(右侧),且水位不随时间变化条件下。要求分析计算两条河流之间潜水含水层的水位情况。
根据上面问题的描述,通过水文地质条件概化过程把上述潜水的运动问题简化处理成一维稳定流问题,可建立如下的数学模型:
式中:以左侧起始断面为计算起点,h为x处(0 (2)采用迭代法进行计算
迭代法是进行数值计算中常用的一种方法,其基本思想是通过一种逐次逼近的方法,在任意选取了一个初始值的情况下,采用递推公式的形式进行反复迭代计算,直至迭代计算结果满足一定精度要求或设定最大迭代次数为止。而为了便于计算,对边界条件(左侧和右侧河流为给定水头边界条件)中的左侧河流位置设为起始断面,节点编号为0。相应地,右侧河流对应的计算断面位置对应的节点编号为10。采用有限差分的方法对建立的数学模型进行离散化求解,本次计算以100m为剖分单元格的大小,把潜水含水层的求解域划分为具有9个未知节点的网格区域。
因此,通过把整个计算域进行网格剖分,上述地下水运动问题就转化为求解0号和10号节点之间9个未知节点的水位值的问题。通过求解可把上述问题转化成具体有9个方程组的求解问题。通过将非线性方程用线性方程组来近似,然后用迭代法逐渐逼近对方程组进行求解。同时设定不同的初始值方案以对比初始值的选取对计算迭代过程的影响。采用逐次逼近的方法,反复校正,直到满足计算结束条件为止。
设定四种情况的初始值,分别对应各未知节点初始水位值为0m、10m、50m和100m的条件下进行迭代直至达到设定的求解精度(0.00001)或最大迭代次数(500次)。根据设定不同方案的计算结果,把具体的迭代过程在课堂中进行展示,借助图表的形式向学生讲解迭代初始值对计算结果的影响与迭代收敛的过程。对应设定的四种情况的初始值及对应的收敛情况见表1所列。
表1 不同初始值迭代情况
结语
考虑到地下水数值模拟课程的特点及学生在前期课程中对基本原理与运动方程有了一定程度的了解,因此在具体课程授课过程中可以通过多学科交叉融合的方法,通过引入编程软件MATLAB来实现复杂的线性方程的求解过程,以达到降低课程求解过程的难度,减轻学生课程学习的负担和增加自信心的目的;并通过多种算法与对比方案计算过程与结果的展示,可以加深对数值计算方法的理解和数值模拟软件的操作。
这一具体的课程教学改革的实现主要是借助具有强度计算功能并且易于非编程专业学生学习的MATLAB软件来进行实现,同时在后续教学过程中可以继续引入该软件进行简单地下水流问题的可视化应用。
没有PDF文件供下载
关键词:地下水数值模拟,数值计算,MATLAB
中图分类号:P641.73 文献标识码:A
早在20世纪60年代,地下水数值模拟技术开始得到广泛应用,而到70年代中期,我国也开始广泛引用此方法来解决实际水文地质问题。随着经济社会的发展,不仅对地下水资源量的需求日益增加,对水质的要求也越来越高,地下水资源占据越来越重要的地位。然而,由于对地下水资源的过量开采,最近几十年来对地下水资源的质和量都造成了许多负面影响,如引起水资源枯竭、降落漏斗的形成、海水入侵、地面沉降、土体盐渍化以及工程病害等一系列问题,因此要实现地下水资源的可持续开发利用,地下水数值模拟技术的发展成为一个非常重要的环节。而对应的科研单位和生产单位都迫切需要掌握地下水数值模拟的人才,因此学好这门课程可以为学生在将来求职或继续深造中提升竞争力,为未来的发展打下基础[1-2]。
目前,越来越多开设水文地质与工程地质专业方向的理工科院校将地下水数值模拟课程列入了本科课程计划,培养出来的毕业生也越来越受到了广大用人单位的欢迎。但现阶段地下水数值模拟课程在教授的过程中还普遍发现存在重理论、轻实践、学生学习积极性不高等问题。因此,探讨如何对本课程进行教学改革,最终达到专业人才培养目标有重要的意义。
一、课程特点
地下水数值模拟课程是我校地下水科学与工程和水文与水资源工程两个专业的重要专业课程,是水文地质学科的一个重要组成部分。该课程总学时为40学时,其中,36学时为课堂理论教学,4学时为学生上机实践。课程设定的总体目标是,通过学习本课程要求学生掌握不同水文地质条件下,地下水稳定流动和非稳定流的相关数学模型及常用的数值求解方法。
总体上来说,地下水数值模拟是理论性和实践性都很强的一门课程,除了要求学生进一步深化理解水文地质学的若干基本概念和基本理论,还要掌握有限单元与有限差分数值计算方法的基本思想,并可以用数值计算方法来实现对地下水运动的基本方程的求解。本课程对学生专业相关知识要求较高,需要先修的课程有:高等数学、线性代数、水文地质学基础、地下水动力学等。
课程最突出的特点是基本概念多、数学公式多及实践性要求强。根据课程讲解内容要求学生掌握的地下水流动问题的数值求解的基本方程就涉及承压水一维稳定流、潜水一维稳定流、承压水一维非稳定流、潜水一维非稳定流与承压水二维非稳定流。虽然学生在前期地下水动力学课程学习阶段中对描述地下水运动的基本方程进行了学习,但是对引出有限差分和有限单元法进行离散化并进行求解的学习内容还是有一定的难度。尤其是对描述地下水运动的数学模型采用数值计算方法进行求解的课程要求,对于授课对象为非数学专业的本科生而言是一门相当有难度的课程内容,特别是对数学基础相对比较薄弱一些的学生。在复杂数值计算公式推导与应用过程中,由于涉及数学公式的推导且内容具有抽象性,很容易打击学生的学习积极性与自信心。
前期课堂教学过程主要借助多媒体与板书的相结合的方式,进行相关数值计算过程的推导与展示。在实际教学过程中发现,在刚开始进入讲解有限差分方法及泰勒公式的推广应用内容时,进行地下水运动的数学方程离散化与计算求解的过程中,学生课堂积极性出现了明显降低的现象,课堂讲授推进困难。同时根据课堂提问和作业反馈的情况也直接反映出学生对这部分知识的掌握情况并不理想。
由于本门课程同时还是一门具有实践性的课程,在要求学生完成课堂理论知识学习的基础上,能进一步上机运用地下水数值模拟软件独立完成简单模型的建立与运行。而对应的在上机软件操作过程中由于也直接涉及数值计算算法部分,因此课堂理论知识掌握不牢固还直接影响学生运用软件的学习。
二、MATLAB软件特点
MATLAB (Matrix Laboratory)是Math Works公司推出的一套具有强大数值计算功能(尤其是矩阵计算)与可视化的软件。软件拥有友好的可视化界面,可以通过编制命令流文件进行运行操作或直接借助用户界面开发环境。与其他编程语言相比,如C语言和FORTRAN语言,MATLAB编程语言简练,具有简单易学的特点,大大提高了非数学专业学生的理解与应用能力[3]。同时,不同于大多数软件需要编制程序以实现某些函数的功能,MATLAB软件自带有丰富的库函数足以满足课程数值计算的需求,而且命令流易于学习与方便调试。大量的实践工作也表明,在进行矩阵计算过程中尤其是高阶矩阵求解问题,MATLAB 软件具有明显快捷与易于操作的优势。目前,该软件在本科课堂教学和实践教学过程中都开始得到了推广应用,并取得了不错的教学效果[4-5]。
该软件还具有专门用来研究与求解偏微分方程的工具箱PDE,主要可以用在使用有限单元方法解决椭圆形方程、抛物型方程、双曲型方程和特征值问题。而在边界条件方面也能直接实现狄利克雷边界条件及诺依曼边界条件,也可以实现复杂的边界条件。同时,软件可以借助GUI界面的形式直观形象地进行可视化显示具体计算过程与结果。现阶段,该软件也已经开始在本科教学过程中实现对一些简单的地下水流问题的求解功能[6-8]。
在地下水数值模拟理论课堂讲解过程中,通过多媒体与板书完成对算法原理与过程内容的讲解。而对复杂的线性方程的求解问题,不同于前期课程讲授过程中以教师板书进行繁杂的过程计算,通过编程软件MATLAB来实现具体的求解过程,并进一步借助软件可视化功能,把求解过程与结果在课堂进行形象的展示,以达到降低课程求解过程的难度,减轻学生课程学习的负担和增加自信心的目的。同时,也更容易实现多种算法与对比方案的计算过程与结果展示,通过对比达到启发学生对数值算法的掌握与实际数值模拟软件的学习,并可进一步引导学生MATLAB 软件实际操作[9]。
三、MATLAB 在教学中的应用案例
数值法是一种近似解法。它是以地下水运动微分方程的定解问题为基础,将表示水位随时间和空间连续变化的函数进行离散化,以求得函数在有限节点(或结点)上的近似值。以有限差分数值计算方法为例,其算法的具体实现的过程可以概化为:用渗流区内有限个离散点的集合代替连续的渗流区,在这些离散点上用差商近似地代替微商,将微分方程及其定解条件化为以未知函数(如水位)在离散点上的近似值为未知量的代数方程(称之为差分方程),然后求解差分方程,从而得到微分方程在离散点上的近似解。
在具体教学中,引用典型区域地下水流问题中河渠间地下水的稳定运动的例子,运用有限差分的方法实现求解过程。首先,根据水文地质条件概化完成相应的数学模型的建立。然后,采用有限差分方法通过用单元中心法建立计算网格、建立单元流量平衡方程和解单元流量平衡方程组的过程。最终,基于均衡法实现对实际地下水运动模型转化为数学方程组求解问题。而对于下一步繁杂的矩阵求解问题,引入MATLAB软件以采用其中一种典型算法—迭代法,进行具体数学方程的求解过程的实现。
(1)地下水流问题描述
假设有一潜水含水层为均质且各向同性,含水层底板为水平,渗透系数为100 m/d。在潜水含水层两侧0(左侧边界)与1000m(右侧边界)处有两条长而直且相互平行的河流切穿了含水层隔水底板。假定降水入渗补给潜水含水层在时间和空间上都是均匀分布的,补给强度设为0.005 m3/m2·d。在两条河流的水位分别为10m(左侧)与20m(右侧),且水位不随时间变化条件下。要求分析计算两条河流之间潜水含水层的水位情况。
根据上面问题的描述,通过水文地质条件概化过程把上述潜水的运动问题简化处理成一维稳定流问题,可建立如下的数学模型:
式中:以左侧起始断面为计算起点,h为x处(0
迭代法是进行数值计算中常用的一种方法,其基本思想是通过一种逐次逼近的方法,在任意选取了一个初始值的情况下,采用递推公式的形式进行反复迭代计算,直至迭代计算结果满足一定精度要求或设定最大迭代次数为止。而为了便于计算,对边界条件(左侧和右侧河流为给定水头边界条件)中的左侧河流位置设为起始断面,节点编号为0。相应地,右侧河流对应的计算断面位置对应的节点编号为10。采用有限差分的方法对建立的数学模型进行离散化求解,本次计算以100m为剖分单元格的大小,把潜水含水层的求解域划分为具有9个未知节点的网格区域。
因此,通过把整个计算域进行网格剖分,上述地下水运动问题就转化为求解0号和10号节点之间9个未知节点的水位值的问题。通过求解可把上述问题转化成具体有9个方程组的求解问题。通过将非线性方程用线性方程组来近似,然后用迭代法逐渐逼近对方程组进行求解。同时设定不同的初始值方案以对比初始值的选取对计算迭代过程的影响。采用逐次逼近的方法,反复校正,直到满足计算结束条件为止。
设定四种情况的初始值,分别对应各未知节点初始水位值为0m、10m、50m和100m的条件下进行迭代直至达到设定的求解精度(0.00001)或最大迭代次数(500次)。根据设定不同方案的计算结果,把具体的迭代过程在课堂中进行展示,借助图表的形式向学生讲解迭代初始值对计算结果的影响与迭代收敛的过程。对应设定的四种情况的初始值及对应的收敛情况见表1所列。
表1 不同初始值迭代情况
水位值(m) | h1 | h2 | h3 | h4 | h5 | h6 | h7 | h8 | h9 | |
初始值 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | |
情况一 | 收敛值 | 11.56 | 12.94 | 14.17 | 15.28 | 16.27 | 17.17 | 17.98 | 18.72 | 19.39 |
迭代次数 | 246 | |||||||||
情况二 | 初始值 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
收敛值 | 11.56 | 12.94 | 14.18 | 15.28 | 16.27 | 17.17 | 17.98 | 18.72 | 19.39 | |
迭代次数 | 242 | |||||||||
情况三 | 初始值 | 50 | 50 | 50 | 50 | 50 | 50 | 50 | 50 | 50 |
收敛值 | 11.56 | 12.94 | 14.18 | 15.28 | 16.27 | 17.17 | 17.98 | 18.72 | 19.39 | |
迭代次数 | 282 | |||||||||
情况四 | 初始值 | 100 | 100 | 100 | 100 | 100 | 100 | 100 | 100 | 100 |
收敛值 | 11.56 | 12.94 | 14.18 | 15.28 | 16.27 | 17.17 | 17.98 | 18.72 | 19.39 | |
迭代次数 | 300 |
结语
考虑到地下水数值模拟课程的特点及学生在前期课程中对基本原理与运动方程有了一定程度的了解,因此在具体课程授课过程中可以通过多学科交叉融合的方法,通过引入编程软件MATLAB来实现复杂的线性方程的求解过程,以达到降低课程求解过程的难度,减轻学生课程学习的负担和增加自信心的目的;并通过多种算法与对比方案计算过程与结果的展示,可以加深对数值计算方法的理解和数值模拟软件的操作。
这一具体的课程教学改革的实现主要是借助具有强度计算功能并且易于非编程专业学生学习的MATLAB软件来进行实现,同时在后续教学过程中可以继续引入该软件进行简单地下水流问题的可视化应用。
没有PDF文件供下载