大地电磁三维反演云计算系统toPeak的设计与实现
2022-08-04刘钟尹陈小斌蔡军涛崔腾发赵国泽欧阳飚
刘钟尹 陈小斌 蔡军涛 崔腾发 赵国泽 汤 吉 欧阳飚
1)中国地震局地质研究所,地震动力学国家重点实验室,北京 100029
2)应急管理部国家自然灾害防治研究院,北京 100085
0 引言
经过数十年的发展,大地电磁(MT)二维反演技术已经发展得十分成熟,无论是算法程序还是应用软件都已实用化。在专业软件方面,国外的GeoTools(Compagnie Générale de Géophysique,2013)和WinGLink(Schlumberger,2013)等以及国内的MTPioneer(陈小斌等,2004)等在各生产单位、大学和科研院所都拥有大量用户。在专业软件的帮助下,许多研究得以更顺利、更方便地产出成果(蔡军涛等,2010a,b;叶涛等,2013;陈小斌等,2014,2017b,2019;郭春玲等,2018)。
与二维反演相比,MT三维反演有着数据预处理简单、模型与实际情况接近、反演结果更加可靠和稳定等优点,是当前的研究热点和前沿课题之一,该方法也必将取代当前主流的二维反演方法。随着计算机计算能力的提高和反演技术的突破(Maddenetal.,1989;Newmanetal.,2000;Siripunvarapornetal.,2005),MT三维反演技术在近几年有了很大发展,从最开始的理论测试研究转变为现在的逐渐应用于实际资料的解释。Siripunvaraporn等(2005,2009)开发了基于三维数据空间算法(Data Space Occam)的WSINV程序;而后,Kelbert等(2008,2014)实现了基于非线性共轭梯度(NLCG)的ModEM程序。后者避免了灵敏度矩阵的计算和储存,极大地减少了内存需求、提高了反演速度,是目前应用最为广泛的三维反演算法程序。由于反演的初始模型从二维提升到三维,测线也提升为测面,三维反演的计算量非常大,WSINV和ModEM都采用了并行编程,以更好地利用计算资源,提高反演速度。
依托于目前国内互联网的良好环境(网络费用低廉、网络速度快、网络覆盖全),加上各类计算服务中心和超算的建立,近年来以互联网和并行计算为支撑的云计算发展势头迅猛。相比云计算系统,单位自行搭建的计算服务器往往存在维护成本高昂、计算资源有限等问题,因此石油勘探、天气预报、建模仿真、动画渲染、科研计算等计算量和数据量大的行业逐渐从自建服务器转移到了云计算系统。
有别于已基本实现实际使用功能的三维反演算法程序,三维反演应用还处在早期阶段。以目前使用较多的Unsworth团队开发的MATLAB脚本集M3DET(Turkoglu,2009)为例,其提供了多个脚本文件,包括生成反演所需的数据、模型和参数文件,结果模型和拟合曲线显示等功能,用户需要手动调用脚本生成的所需文件,然后再登陆超算计算集群,自行上传数据进行反演计算,所有反演流程由多种软件协同完成,用户需要熟练使用多种软件,并且需掌握Linux命令行的使用,对使用者要求较高。类似于正演试错法,所有流程需自己手动完成,不仅工作量大、操作复杂,还需考虑长期有效保存和管理种类繁复的反演数据,是最原始的云计算方法。
基于此,我们采用Delphi语言开发了大地电磁三维反演云计算系统——toPeak。其由云端和客户端组成,不仅能实现数据的长效管理,还可通过网络自动化连接云端进行反演计算。用户无需了解与Linux和超算计算相关的复杂命令,即可在Windows平台通过鼠标可视化交互操作完成大地电磁三维反演,实现反演的云计算。
1 需求分析与系统设计
我们的设计目标是实现一套基于服务端-客户端(C/S)的云计算系统平台,在完善反演数据管理的基础上,于云端集成现今最前沿的大地电磁三维反演算法程序,通过互联网连接实现大地电磁三维反演的全部功能。该系统应具备数据长期保存的可靠性、可视化交互操作的便利性、长期运行的稳定性、功能算法的易于扩展性、软件的可维护性和生命周期长等特点。
图1 大地电磁三维反演云计算系统的结构Fig.1 Structure of the three-dimensional magnetotelluric inversion cloud computing system.
结合设计目标和需求分析设计整个系统结构,如图1 所示。服务端部署于超级计算机系统(超算)上,包括大地电磁三维反演算法程序(ModEM、WSINV等),借助超算强大的并行计算资源,基于接收的反演数据进行反演任务,并对反演结果数据的储存进行配置和管理。结合互联网连接,服务端成为计算云端,可通过网络传输数据,进行反演云计算。客户端部署于Windows端,由Windows可视化数据集成处理软件和中间件组成,是一个胖客户端(thick client)。可视化软件实现了三维反演的数据准备、模型构建、反演计算控制和结果管理等功能;中间件基于SSH协议封装了客户端与服务端之间通过互联网连接实现的命令交互和数据传输功能。
在任务分配上,云端用于大计算量的三维反演并行运算,客户端用于反演数据集的管理编辑和连接云端进行反演数据传输以及反演控制。由于不承担计算任务,客户端对于电脑性能的要求很低,只需要Windows XP及以上版本的系统、保持互联网连接且能正常访问云端即可随时随地进行大地电磁三维反演操作。这种 “本地数据管理+云端计算”的模式与当前云计算的趋势一致。
2 系统各部分的介绍
2.1 服务端
2.1.1 算法介绍
在部署于超算上的服务端中,大地电磁三维反演算法程序是服务端的核心部分,该部分集成了当前最先进的三维反演并行算法——WSINV和ModEM。
WSINV(数据空间Occam反演算法)是Siripunvaraporn等(2005,2009)基于Occam反演算法将目标函数计算迭代式从模型空间(M×M)变换到数据空间(N×N)实现的。在大部分情况下,数据参数量(N)远小于模型参数量(M),且相差好几个数量级。相比于传统模型空间的Occam反演算法,数据空间的Occam反演算法除继承了Occam算法稳定性好、细节分辨率高、收敛次数少等优点之外,还大大减少了运算量和内存消耗。但是,该算法仍需储存和计算全部的灵敏度矩阵,总体而言,内存消耗仍然较大。其在一次迭代中需要对测点进行数次正演,测点越多、单次迭代所需计算量越大。
ModEM(非线性共轭梯度反演算法)是Kelbert等(2008,2014)基于非线性共轭梯度(NLCG)法实现的反演算法。其采用共轭梯度(CG)方法直接最小化反演目标函数,避免计算和存储灵敏度矩阵,极大地减小了内存存储消耗和运算量。其在一次迭代计算中仅需2次附加的正演及1次数据拟合的正演,总共仅需3次正演。
超算的最大特点是计算节点多,并行程序能够充分利用计算资源来提高计算速度。大地电磁正演具有天然的并行性,在正演过程中,不同频率的正演计算是完全独立的,2种极化源(X极化源和Y极化源)的计算也是完全独立的。无论是WSINV还是ModEM,它们都采用Message Passing Interface(MPI)接口来实现程序的并行化,程序并行策略都是单个极化源、单个频率用一个独立的进程进行计算。如对40个频点的观测数据进行正演计算时需要2个极化源,则可以采用80个核同时并行计算,再加1个协调处理核,即采用81个计算核即可实现完美的并行计算。
2.1.2 数据结构
在服务端,除了最核心的计算程序外,还需要搭建一个良好的数据结构与之配套。三维反演计算会产生大量的结果文件,对于服务端来说,是一个 “一对多”的情况,会有很多用户连接到同一个服务端进行三维反演计算,进而产生更多的结果文件。因此,设计搭建一个合理的数据储存结构,是保证服务端正常运行的关键之一。
图2 显示了服务端的数据储存结构。首先,针对不同的用户账号设置不同的用户文件夹,以保证各个用户之间的数据互不干扰。其次,针对每个用户,在其用户文件夹下生成一个数据储存的根目录,所有的数据和参数文件都存放于该根目录文件夹下,按照 “数据工程—反演作业—数据文件” 3个层级进行存放,层次分明。
图2 服务端的数据储存结构Fig.2 Server data storage structure.
至此,服务端设计完毕,它定位于云端的计算和储存部分,部署了反演算法程序,用于进行三维反演运算,并对反演结果进行储存和管理。
2.2 互联网
2.2.1 设计原理
作为云端两大组成部分(服务端和互联网)之一,互联网部分基于当今的网络环境,围绕服务端进行功能封装,实现服务端与客户端的连接。
从云端的计算和储存的定位进行分析。针对计算,互联网部分需要实现控制计算开始和停止、计算过程监测等功能;针对储存,互联网部分需要实现数据的上传、下载和删除等功能。由于互联网部分所有功能都要在公开网络环境中进行,为了保证数据的安全,采用加密的网络传输协议SSH。
现行的超算计算集群均部署了作业资源管理系统,用于管理和分配并行程序的计算和资源(段新华等,2009),所有计算控制操作都基于该系统。目前国内主流的超算所使用的资源管理系统不尽相同,如“天河1号”和“天河2号”使用SLURM(Yooetal.,2003),“神威太湖之光”使用Sunway(Fuetal.,2016),而小规模的计算集群一般采用PBS(Henderson,1995)和SLURM,如中国地震局地质研究所自建的计算集群就采用PBS系统。这些作业资源管理系统所包含的功能大体一致,都可实现计算任务的提交、查看、停止和删除,计算资源的查看和分配等功能,但不同的作业资源系统具体的操作命令有很大的不同。
至此,从服务端出发,基于SSH协议,互联网部分针对不同的超算,实现了控制计算和数据传输的功能并对其进行封装,实现云端的连接部分。服务端和互联网部分共同构成了完整的云端。
2.2.2 中间件
上节提到不同的作业资源管理系统有不一样的操作命令。为使互联网部分适配不同超算,同时保证系统的扩展性,我们依托于IP WorksSSH控件,以多态的形式实现了一个中间件,针对不同作业资源管理系统所实现的控制计算和数据传输功能进行了抽象和封装,对外提供一致的API接口函数(图3)。
图3 中间件的封装与多态Fig.3 The encapsulation and polymorphism of the middleware.
图3 中,TInvBase为中间件的基类,其内声明了中间件的所有方法并实现了一部分,包括开始、停止反演,获取反演信息,获取反演作业列表,上传、下载反演数据,获取计算集群节点信息等。斜体字为抽象方法或虚方法,留待派生类中实现。图3 第2排列出了从基类派生出的多个派生类,它们分别对应不同的超算、计算集群,这些计算集群有不同的架构,采用了不同的作业资源管理系统,故也采用不同的代码实现相同的功能。在具体使用时,只需要声明一个基类变量,再根据实际情况采用工厂方法模式(Gammaetal.,1994)将其实例化为不同类型的派生类对象,即可使用一个变量完成对不同超算、计算集群的操作。再添加新的超算时,只需要从基类派生,然后实现指定的基类抽象方法或虚方法,就能完成对新添加超算的控制操作。
通过该中间件,无论针对哪个超算计算集群,只需调用统一的API接口函数,即可实现控制计算和数据传输的功能,非常简洁方便。中间件默认已经添加配置了“天河1号”、“ 天河2号”、“神威太湖之光”等超算,这些平台接入后可直接使用;此外,在接口不变的情况下也可很方便地添加其他超算计算集群。
2.3 客户端
客户端包括Windows可视化数据集成处理软件和中间件。由于前文已经介绍了中间件,这里主要介绍Windows可视化数据集成处理软件,即整个云计算系统中用户直接接触操作的部分。
2.3.1 系统框架
区别于一般单线流程的算法程序,客户端软件在面向对象程序设计思想(Object Oriented Programming,OOP)的基础上进行设计,它继承了MTPioneer(简称MTP)软件以数据为核心的设计思路(陈小斌等,2004),利用数据工程对象封装储存了所有MT数据、处理与解释结果。之后围绕该数据工程实现数据处理反演等操作,再利用可视化技术将这些处理反演的过程及结果以图形的形式显示出来。图4 直观地展示了这种思想,同时也展示了软件的主要功能,所有操作都围绕着数据工程进行。
图4 客户端主要的设计思想Fig.4 Main design idea of client.
图5 客户端的架构Fig.5 Structure of client.
从程序设计角度来看,遵循 “高内聚、低耦合”的原则,客户端软件由3部分组成:数据层、逻辑层和显示层(图5)。其中数据层为客户端的核心部分,包含原始数据和所有反演结果数据;逻辑层围绕着数据层,包含客户端软件的主要处理和反演功能;显示层为软件最外层的部分,用于数据处理、解释的过程以及结果的显示。
2.3.2 功能介绍
(1)数据的储存与管理
使用客户端软件时,需要新建数据工程或打开已有的数据工程,软件所有的操作都基于数据工程(图6),能够很方便地实现对不同MT数据的建立、打开、保存或导出新工程等功能。数据工程有3种创建途径,可基于EDI功率谱文件、MTP导出的阻抗倾子文件以及视电阻率相位文件建立。在创建数据工程时,可一次建立整个工程,也可只建立部分测点,再根据需求继续添加测点数据。
图6 客户端的数据工程结构Fig.6 Client’s data project structure.
在客户端软件中,根据建立数据工程的不同方式,可导入不同类型的数据。阻抗倾子以及视电阻率相位均可被导入作为原始数据,既可兼容只有视电阻率相位的老旧数据,也能够使用完备的阻抗倾子数据进行更多处理操作。数据工程包括4个部分:工程信息、原始数据、结果数据和配置文件,每个数据工程就是一个完备的数据集。基于此数据集,用户可持续性地针对该工区进行数据处理、编辑、反演等操作,也可以很方便地把数据工程复制到U盘等设备或上传到同步云盘,随时开展工作。
(2)云端配置与应用
图7 云端配置与应用功能Fig.7 Function of cloud configuration and application.
为便于连接和使用云端进行云计算,客户端软件实现了完整的云端配置与应用功能(图7)。首先,云端配置功能实现了客户端对云端超算连接和运行参数的设置及储存,用户可以很方便地添加新的云端信息,使客户端软件能够正常连接云端。其次,基于中间件实现了查看云端超算计算节点资源和计算设置等功能,用户可连接指定的云端,查看上面的计算资源,然后设置反演计算所需要的计算资源(计算节点数和核数)。最后,仍基于中间件实现了在云端进行反演计算的功能,包括从客户端提交反演任务、上传数据到云端及发送命令开始反演,计算并监控反演计算过程,反演结束后可从云端下载反演结果。
依托于可视化交互操作界面,用户可以很方便地对云端配置进行管理,除了默认的云端配置外,也能手动添加新的云端超算,适用范围很广。客户端通过中间件与云端实现了连接,由于中间件良好的封装和多态设计,区别于其他现有软件输入命令进行云端远程操作的模式,用户只需用鼠标点击相关按钮,即可实现包括提交反演任务、查看反演流程、停止反演、取回反演数据等操作,且所有云端和反演信息都在软件界面上以图形直观地显示。
图8 初始模型构建功能Fig.8 Function of initial model building.
(3)初始模型构建
在大地电磁三维反演中,初始模型是一个重要的参数。一个合适的初始模型能够使反演收敛速度更快,使反演结果更合理,而易用的初始模型构建功能则能够帮用户更容易地构建理想的初始模型。客户端软件的初始模型构建主要包含了4种模型的自动构建功能(图8):构建均匀半空间模型、原反演网格模型插值构建模型、印模法构建模型和构建带地形模型,足以满足用户的不同需求。
首先,可实现最基本的构建均匀半空间模型的功能。基于用户选择的参与反演的测点,自动对测点所在区域进行二维网格剖分生成XY平面核心区域网格,向外按照一定步长延拓生成延展区网格,向Z轴方向按照一定步长生成垂直网格,所有生成的网格单元的电阻率值都相同。构建所用到的参数,包括XY平面核心区域网格单元大小、延展区网格数和增长步长、垂直网格深度分界和增长步长、模型电阻率值等都能任意进行修改,模型构建非常灵活。
其次,可实现原反演网格模型插值构建模型的功能。一次反演很难得到最终的反演结果,往往需要将结果模型作为初始模型重新编辑,再多次反演才能得到最后结果。在已有反演结果模型的前提下,可重新设计初始模型网格,然后用结果模型在初始模型网格下进行插值,得到新的模型。
再次,可实现印模法构建模型功能。一般情况下,用原反演网格模型插值构建得到的初始模型直接进行反演是不太推荐的方法,因为反演结果中可能存在很多局部的小异常和 “挂面条”现象,这些小异常中可能存在假异常,而 “挂面条”现象更会影响反演结果。印模法选定特定的深度,将印模深度以下的模型设置为均匀半空间模型,印模深度以上的模型采用加权求和的方式求得新的电阻率值,至此得到既在浅部保留已有反演结果主要轮廓、又在深部去除 “挂面条”现象的初始模型。用户在进行印模法操作时可设置印模深度、印模电阻率和印模加权求和方式,其中加权求和方式有开方加权、线性加权和平方加权3种,从开方到平方加权,对模型的修改依次减小。
最后,可实现带地形模型构建功能。当反演区域地形起伏变化较大时,用带地形的初始模型进行反演,其结果要比不带地形模型的反演更为合理。目前为三维模型添加地形信息是一个难题,我们实现的带地形模型构建功能可通过导入规则网格化的地形信息构建带地形模型,十分简便。构建带地形模型的前提是要准备好反演区域的地形信息,用户对准备好的地形信息文件进行规则网格化后,即可将其导入生成带地形的模型,并以三维显示的方式查看地形情况。同时可根据计算精度修改模型的地形部分垂直单元网格来调整地形的垂直分辨率,也可实现对水体的导入和修改。
除以上4项主要功能外,在初始模型构建部分还能通过多种方式对模型进行手动微调,结合这些功能,用户能很方便地构建自己想要的模型,不仅可进行反演计算,也可进行正演验证。
(4)多种数据图形的显示、编辑与输出
客户端软件能够对多种数据进行显示和编辑,包括测点分布图(经纬度坐标和相对直角坐标)、测点的视电阻率相位数据、测点的阻抗倾子数据、测点的模型曲线、模型显示、模型地形信息三维显示、反演结果拟合曲线和反演收敛曲线等。用户可以在客户端中对数据进行图形化并查看,也可以制作或导出图形文本文件,使用其他专业图片编辑软件进行修改和编辑。
(5)多种数据的输入、输出功能
客户端软件提供了多种数据和模型的输入、输出接口:
提供了多种数据参数的输出接口(原始阻抗倾子、原始视电阻率相位、阻抗倾子响应、视电阻率相位响应、测点反演模型值、坐标转换等),方便用户导出数据,使用Surfer或Grapher等专业软件绘制图件。
提供了三维反演结果模型的输出接口,输出模型文件采用4列 “xyzv”模式排列,可输出经纬度模型或相对直角坐标的模型,方便用户采用toPeer(陈小斌等研发的专门针对大地电磁三维反演结果的三维可视化绘图软件)、Voxler或Tecplot等专业三维成图软件进行模型绘制、解释等后续操作。
提供了断层的输入、输出接口,用户可输入断层数据,并在测点分布图上进行显示,也可裁剪反演区域内的断层数据并输出,以便在toPeer等软件中显示三维反演结果时进行断层显示。
3 操作方法
3.1 操作流程
图9 toPeak操作流程示意图Fig.9 Workflow of toPeak.
如图9 所示,使用云计算系统toPeak进行三维MT反演的主要流程包括以下几步:首先,在客户端导入数据并建立数据工程后,根据测点分布和数据质量情况,对数据进行旋转、处理和筛选操作,构建出理想的初始模型,完成一系列反演参数的设置。之后连接云端,设计云计算的节点数和核数,提交反演任务,监控反演流程并查看当前的反演信息,下载任意次迭代的结果数据。最后,在反演结果显示界面查看所有反演情况,包括收敛曲线、单点拟合曲线、平面拟合情况等。对于多次的反演结果,可选定其中一个作为反演结果,将该次反演的所有设置和结果导入到客户端主界面中作为下一次反演时数据筛选和参数设置的依据,同时也可将反演结果模型以文本文件的形式导出,用其他专业的三维显示软件进行查看和解释。
3.2 功能演示
图10a、b显示了测点在经纬度下和相对直角坐标下的分布情况,通过鼠标框选参与反演计算的测点。在相对直角坐标系显示状态下,能对测点坐标和阻抗倾子数据进行旋转,尽可能减少构建初始模型时产生的废网格。
图10 部分功能的示意图Fig.10 Software’s functions.a 测点分布经纬度显示;b 测点分布相对直角坐标显示;c 初始模型构建;d 地形显示;e 反演数据拟合显示;f 反演拟合残差显示
图10c 显示了初始模型构建部分中模型电阻率的分布情况。模型在计算域(每个单元网格的大小一致)或物理域(每个单元网格按照实际大小设置)下进行显示,用户可构建出均匀半空间模型,也可通过原反演网格模型插值和印模法对模型进行修改,还能通过导入地形信息构建带地形的模型,最后也可使用鼠标调整模型的电阻率值。
图10d 显示了带地形模型的地形情况。图中以3D的形式显示了模型的地形情况,其内也包括测点分布,用户可以很方便地旋转、拖动、缩放显示的地形图像,查看模型的地形是否符合预期。
图10e 显示了反演结果数据的拟合情况。该图显示了测点参与计算频率的拟合情况(散点表示实测数据,曲线表示拟合曲线),通过勾选上面的显示设置项,可动态显示不同测点的拟合情况,查看各个测点的数据拟合质量,为下次反演提供数据筛选的依据。
图10f 显示了反演结果界面中数据拟合的残差情况。该图在平面上显示了测点的拟合情况,通过勾选上面的显示设置项,可动态显示不同条件下测点的平面拟合情况,可为筛选数据进行下次反演提供一定的依据。
图11 部分功能的示意图Fig.11 Software’s function.a 选择云端计算节点和计算核;b 云端任意数据工程指定反演任务的拟合情况;c 当前数据工程指定反演的实时计算信息
图11a 显示了云端计算节点和计算核的选择情况。在向云端提交反演任务前,需要设置反演任务运行所需要的节点CPU,目前有2种方式可供选择:整体选择节点数和核数(每个节点参与计算的核数相同)以及选择指定节点和对应的核数(对每个节点参与计算的核进行单独设置)。
图11b 显示了云端任意数据工程指定反演任务的拟合情况。用户通过点击左侧的云端上已存在的反演任务名来获取指定反演任务的计算信息。计算信息包括反演基本信息、RMS拟合曲线、正则化因子λ更新情况和反演日志。
图11c 显示了当前数据工程指定反演的实时计算信息。用户通过下拉菜单选择反演任务来获取该反演的实时计算信息。计算信息包括反演基本信息、RMS拟合曲线、正则化因子λ的更新情况和反演日志。通过取回数据按钮可取回迭代结果,在结果显示部分做进一步操作。
4 三维反演案例
由于toPeak大大降低了三维反演的门槛,在其研发成型后,很快得到了推广应用,基于该系统有多个成果发表(陈小斌等,2017a;崔腾发,2019;邓琰,2019;蔡军涛等,2020;崔腾发等,2020;赵凌强等,2020),也帮助完成了多个项目。图12 展示了某地震构造区的三维反演结果,从中可以看出明显的高、低阻交错特征和横向上壳内高导层明显的不均匀性,可能与该地区历史上曾经发生的一次大型构造变形运动有关。图13 展示了某油田大地电磁剖面的三维反演结果,三维反演解决了该研究中二维反演结果与已知的地质资料矛盾的问题。图14 展示了已开挖的某铁路隧道的AMT老数据三维反演结果,反演结果与已知地质资料非常一致。
图12 某地震地壳的三维电性结构分布图(崔腾发等,2020)Fig.12 Three-dimensional electrical structure distribution map of crust of an earthquake(CUI Teng-fa et al.,2020).
图13 某油田MT剖面的三维反演结果Fig.13 Three-dimensional inversion result of MT profile of an oilfield.
图14 某铁路隧道AMT数据的三维反演结果Fig.14 Three-dimensional inversion result of AMT data of a railway tunnel.
5 结论
本文介绍了自主研发的大地电磁三维反演云计算系统——toPeak。该系统在设计过程中充分使用了面向对象的程序设计技巧和模块化的设计风格,由客户端和云端共同构成了完整的三维MT反演软件云系统。以此作为平台,只需要修改少量代码,即可挂载各种三维MT反演计算程序并连接各种超算计算集群。
作为一款专业软件,toPeak以数据工程为核心,以可视化操作为包装,实现了流程化三维MT反演的全部功能,大大降低了三维MT反演难度,促进了三维MT反演的实用化。
虽然目前toPeak实现了三维反演操作的全部功能,但还远达不到完善的程度。随着MT理论不断深入研究和计算软硬件技术不断发展,更多新技术和新算法将不断出现,我们也将对toPeak进行长期的完善维护和功能升级,以跟上技术发展的脚步。
致谢文中使用的三维反演算法程序ModEM由Egbert、Kelbert和Meqbel开发并授权下载使用;三维反演算法程序WSINV为赵国泽研究员自该程序作者Siripunvaraporn处购买;长江大学和中铁第一勘察设计院集团有限公司提供了部分三维测试数据。在此一并表示感谢!