地震资料处理解释群里有人问:“想做一个三维全波场数值模拟软件,包括声波介质、弹性波介质、黏弹性介质,还有各向异性,目前哪种有限差分算法,速度又高、精度又高、适用性又强且稳定”
对这个问题,张宇做了很好的工作,得到了Hoffman奖。我的粗浅看法如下,供讨论。
对“精度高”的需求,解决方案之一是差分阶数和格式(隐格式、显格式),裴正林的书有解释。
对“速度高”的需求,解决方案依赖于模型大小、硬件、软件、成本以及研发时间。对单炮模拟,二维,弹性波模拟大学本科毕业设计,可望用单机实现。三维,如果不限时间,且三维模型尺度跨度(模型长度与单元长度比值)不大,可用单机CPU实现。如果希望在可容忍的时间内模拟单炮(1个小时),三维模型尺度跨度比较大,也许需要考虑GPU实现。在多炮情况下,如果不考虑成本,CPU集群是个解决方案。GPU实现也有一些难题,其中CPU与GPU之间的PCIE总线,往往是最后的瓶颈。刘红伟和李博做了很多研究。具体模型和计算时间参数,依赖与硬件和CUDA版本,细节会有变化。目前刘红伟的GPU声波三维模拟正通过吉星吉达公司和中科联衡在南阳、库尔勒推广,实践中还有少量问题。
有限差分算法,相同阶数隐格式精度高一些,如果在CPU上实现,用隐格式好。但隐格式在GPU上实现,计算速度不高;用更高阶显格式,与相同精度隐格式比,速度更快。
三维全波场数值模拟软件,包括声波介质、弹性波介质、黏弹性介质,还有各向异性,在选择差分格式时,可能还需要考虑单元存放方式;一种是传统的螺旋坐标存储,一种是多尺度(加密)网格存储,前者算大模型时会有一定困难,后者也许可适应大模型,显格式(甚至积分解)对后者有利,但还需要解决局部网格之间的数据交换。目前对多尺度网格,快速多极算法是一个有潜力的研究方向。
快速多极算法,是基于积分解的算法,用来解多体问题和边界积分方程,可使的矩阵向量乘法从N*N,小降到NlogN。原来由V Rokhlin、CW Chew等人提出和发展,广泛用于天文、材料,据说可以与快速Fourier算法的地位一样高。近两年,我们对此关注,试图把他们的语言和问题与我们的语言和问题对上号。目前在我们领域的研究还很不成熟,需要在基础上创新,不仅仅是技术。这个方法大致的特点是将微分方程的积分解(格林函数)分为远区和近区,矩阵向量相乘时,近区直接在空间域乘,远区在波数域乘,但远区要展开成多极子,并截断。
根据1楼回复,第3段做了一些修改。
对“精度高”的需求,解决方案之一是空间导数的差分逼近的阶数和格式:隐格式、显格式,前者又称为空间导数的紧有限差分格式(compact finite-difference schemes )。时间方向的隐格式需要大矩阵求逆,实践中目前还较少采用。时间方向的显格式,发展了各种辛格式方法,还可能利用快速多极算法。
https://blog.sciencenet.cn/blog-804650-714782.html
上一篇:
给e起个中文译名“易”?下一篇:
从作用量到多尺度计算