论文部分内容阅读
近年来,血管变窄甚至堵塞是很多人面临的一个问题,解决这个问题的方法之一就是通过搭建人造血管使得血液在新的人造血管中正常流动,这就涉及人造血管形状设计问题。人造血管形状设计问题属于最优形状设计问题的一种,其描述的是一类约束最优化问题,这些问题是在偏微分方程边值问题的约束下对目标函数进行极小化的过程,其控制变量就是区域的几何形状。在人造血管形状设计问题中,血管的形状设计在数值求解上存在许多困难。首先,血管界面的光滑性必须得到保证。其次,计算区域在问题的求解过程中不断变化,则对应的网格也将发生改变,更新网格的算法十分关键。针对这些问题,我们采取基于三次样条插值的控制点法控制血管的形状,并采取非均匀网格与移动网格方法来提高算法效率。另外我们分别还采取了样条水平集方法与基于径向基函数的水平集方法来求解这一问题。我们的主要结果有:1.给出了人造血管形状设计问题的三次样条逼近算法。不同于传统的采取三角函数等函数表示血管形状,我们采取基于三次样条插值的控制点法来控制血管形状,这样人造血管的形状变化更加灵活,同时其光滑性也不受影响。其中控制点位置的变化由梯度法来控制,同时,在梯度法的初值选择上,我们先在较少控制点下求得此时的最优形状,再把此形状作为初值,选取更多控制点重新使用梯度法迭代得到新的最优人造血管。在网格剖分上,我们采取非均匀的Delauney网格使得在血管壁附近的流体速度计算更加精确。由于血管形状在一直变化,网格也随之发生改变,我们采取移动网格的方法来更新网格,从而避免了重新剖分网格的巨大工作量。在数值例子中,我们首先比较了我们的算法与已有算法的效果和效率,从比较中可以看出我们算法的良好效果以及较高的效率。我们比较了在采用不同个数的控制点时得到的最优血管形状,结果表明,控制点个数增加,目标函数的最优值减小,这说明了增加控制点个数的必要性。同时我们比较了在初值的选择上,选择从较少控制点递增到较多控制点的算法比直接选用较多控制点的算法效率更高。另外,我们还比较了使用均匀网格和非均匀网格、重新剖分网格与运用移动网格方法的效果。数值实验表明,使用非均匀网格在取得较优的血管形状时有一定的优势,而移动网格方法可以有效减少算法的运行时间。2.给出了人造血管形状设计问题的样条水平集方法。由于传统水平集方法经常会产生不光滑的零水平集界面,而在人造血管形状设计问题中,界面的光滑性十分重要,因此我们采取样条水平集方法来重造界面。样条水平集方法就是在传统水平集方法的基础上,利用Hamilton-Jacobi方程迭代得到新的水平集函数之后,利用三次样条插值的方法来重新构造血管界面。水平集方法的优势是在迭代初始网格已经确定了,求解状态方程和伴随方程时,都是在全区域内求解,不需要重新剖分网格。在数值例子中,我们给出了使用样条水平集方法得到的最优血管形状,可以看到样条水平集方法的高效性以及得到的血管是十分光滑的。3.利用了径向基函数水平集方法解人造血管形状设计问题。径向基函数水平集方法是利用径向基函数将水平集函数参数化,参数化后的水平集函数是一系列光滑函数的线性组合,它显然具有良好的光滑性,那么得到的血管界面也必然是光滑的。同时Hamilton-Jacobi方程就会转化为一个常微分方程,在迭代过程中,变量变成了径向基函数的系数,而且由于径向基函数的特性,参数化的水平集函数不会发生太平或者太陡的情况,从而避免了传统水平集方法中的重新初始化过程。在数值例子中,我们给出了利用径向基函数水平集方法求得的最优血管形状,并比较了它与样条水平集方法的效果,结果表明两者都能很好地收敛到最优血管形状,且不依赖于初值的选择,两种方法最终得到的最优血管形状几乎一致。本文的组织结构如下:第一章为人造血管形状设计问题的背景、最优形状设计问题的发展历史和研究现状、人造血管形状设计问题的模型以及有限元方法基础。第二章中,我们给出了Navier-Stokes方程的弱形式,并利用MINI有限元方法进行了离散,构造了它们在参考单元的基函数,以及数值求解过程中的局部以及总体刚度矩阵。并对数值求解中的高斯积分进行了简单的介绍。在第三章中,我们提出了人造血管形状设计问题的三次样条逼近算法,采取了基于三次样条插值的控制点法控制血管边界,并在梯度法的初值选择上做了优化,采取了较少控制点下的最优血管形状作为初值进行计算。在网格剖分上,我们采取了非均匀的Delauney剖分方法,并利用移动网格方法提高了算法的效率。最后的数值例子说明了我们的算法的有效性以及较高的效率。在第四章中,我们给出了人造血管形状设计问题的样条水平集方法以及径向基函数水平集方法。我们首先介绍了传统水平集方法的基础知识,并对人造血管形状设计问题中面对的敏感性分析以及伴随方程的推导进行了说明。由于传统水平集方法可能产生非光滑界面,我们采取样条水平集方法进行界面的光滑化处理,同时也采取径向基函数水平集方法对水平集函数进行参数化以使得水平集函数光滑。数值例子中我们展示了两种方法的效果以及效率。最后,我们对本文进行了总结,并展望了今后的研究工作。