梁 萌,吴文鹂,陈 实
(1.中国地质科学院 地球物理地球化学勘查研究所,廊坊 065000;2.国土资源部 地球物理电磁法探测技术重点实验室,廊坊 065000)
电磁法是地球物理勘探应用最为广泛的方法技术,数据处理是电法勘探的重要环节,其效果、质量和效率依赖于数据处理解释软件支持,因此,数据处理解释软件的现状反映数据处理解释技术的水平。随着电法仪器向大深度、多功能方向发展,数据处理软件已由单一方法向多参数、一体化发展。
国外非常重视电法软件开发工作,Zonge公司开发了与其多功能电法仪器相配套的多功能电法数据处理解释软件,软件的功能包含电法子方法的数据预处理、一维反演和二维反演。其优点是软件系统与仪器结合紧密,针对性较强,缺点是软件必须与仪器配套使用缺乏灵活性。另一种是开发比较通用的电法数据处理解释软件系统,EMIGMA和WinGLink软件。EMIGMA软件提供通用框架和界面,用于重力、磁法和电磁法的数据处理和数据成图,包括激电法(IP)、大地电磁法(MT)、可控源电磁法(CSAMT)、瞬变电磁法(TEM)的一维反演及三维正演模拟,IP、CSAMT和MT三维反演;WinGLink软件主要功能包括TDIP和TEM的一维反演,MT一维反演、二维反演和三维正演,CSEM一维反演和三维正演,此软件的突出优势在于MT的数据处理和正反演解释。这些软件的优点是软件集成度高,功能强大,但与数据采集仪器的无缝衔接方面有所欠缺。
国内一些高校和科研院所应用科研成果开发形成处理解释软件。成都理工大学开发的MT-soft,石油大学的电磁勘探资料处理解释一体化系统以及中国地震局地质所的MT-Pioneer软件[1],这几款软件的主要功能为MT的数据预处理和一、二维正反演;吉林大学开发的GeoElectro 电法数据处理系统,软件包括TDIP、CSAMT和TEM,其主要功能模块为TDIP的一维反演和二维反演、CSAMT数据的预处理以及瞬变电磁(TEM)的一维反演。中国地质科学院物化探所的电法工作站软件系统(WEM)集成了直流电阻率/激发极化法、大地电磁法、磁源瞬变电磁法和幅相激电等方法,是集数据输入、数据预处理、正反演解释和成果输出为一体的电法工作站数据处理解释系统[2]。
软件是地球物理勘探数据处理技术的载体[3],因此国外的勘查机构开发的软件一般不对外销售,与仪器配套销售配套的软件在功能上往往不能满足用户需求,需要利用通用软件来补充。伴随国内电磁方法仪器的研制,需要数据处理软件能够支持多种方法的数据处理解释工作,开展电磁探测正反演软件研发工作仍具有现实意义。
电磁探测正反演软件由①数据管理;②人机交互建模;③可视化;④正反演计算等4部分组成。数据管理模块、人机交互建模模块和可视化模块基于Qt框架制作,使用C++语言编写。计算模块主要解决CSAMT、AMT/MT、TDIP和SIP的正反演问题,由FORTRAN和C++语言编写。将以上模块集成形成电磁探测正反演软件,遵从软件工程开发要求,对软件的数据需求与功能需求进行分析。
电磁法数据包括装置参数、测点坐标和实测数据。装置参数与观测方法和仪器有关(CSAMT方法包括发射源坐标信息、频率和电流强度等基本信息);实测数据的内容包含观测坐标和实测数据(CSAMT方法包括观测频率、视电阻率和相位等);TDIP方法包括供电极距、测量极距、视电阻率和视极化率等。
电磁探测正反演软件输出地电模型和正演结果。一维模型包括层厚、电性参数(电阻率)。二维模型和三维模型包括解释区域部分和正演算法要求的扩展区域部分。在程序设计过程中,需要有效地对这些数据进行组织管理,以提高数据处理解释软件的运行效率。
电磁探测正反演软件的具体功能包括①人机交互正演模拟;②反演计算;③数据管理;④人机交互建模;⑤数据可视化。正反演计算的数据处理流程基于用户交互界面实现,软件用户界面由数据和模型可视化模块组成。
不同的电磁法对应的观测数据和装置参数都有区别,不同的算法流程、输出结果和数据量也不同,以文件方式管理很难达到一体化设计要求,则采用数据库技术以工区为单元组织管理实测数据和处理结果。
正反演计算模块包括一维、二维和三维正反演计算,同时要考虑带地形模型的情况,软件运行过程要充分考虑数据、模型的可视性和交互性,特别是在正演过程中要与交互建模结合,形成人机交互正演模拟;反演结果数据保存要完整,可以由软件重新提取、查看和继续反演;可视化需支持正反演结果的屏幕展示,包括测深和剖面曲线、色块图、断面图、立体图像和切片图。
根据电磁探测正反演软件需求,软件系统由数据管理、可视化、人机交互建模和数据处理功能模块组成,可视化和交互建模为公用模块,数据管理和处理模块由各方法的正反演计算需求驱动。软件框架架构采用“低耦合”的方式设计,可减少模块之间的依赖,有利于模块的扩展和更新。系统开发需要兼顾代码编译的跨平台性和资源的复用性[4]。
MT、CSAMT、TDIP和SIP等多种方法在数据处理流程与处理方式存在类同,但采集的数据有差异,在数据处理过程中都需要导入相关的数据信息(模型、测点信息、反演参数等),实时监控处理过程,进行数据处理结果查看和分析。因此,在设计上要突破传统的基于过程化的软件系统框架,采用数据为核心多方式驱动机制来设计开发软件系统,其体系架构如图1所示。基于软件平台架构设计和运行环境(Windows 7和Linux64位操作系统),选取Qt、VS2012、Intel FORTRAN和SQLite为集成开发工具,具体开发工具如表1所示。
表1 开发工具列表
图1 电磁探测正反演软件框架架构图
围绕软件的需求分析和设计,电磁探测正反演软件重点从数据组织与管理、数据处理模块集成、并行计算、建模与可视化等四个技术层面来进行开发,通过人机交互设计对各功能模块进行集成,形成数据管理、处理解释和可视化为一体化软件系统。
考虑到电磁法在数据处理与反演操作流程、数据图示方式等方面存在相似性,其界面布局、流程设计可以类同处理。软件系统的主要用户界面包括数据管理界面、数据预处理界面、正反演界面、数据成图界面,其中数据管理界面为主导界面,其他界面在层次上为平级关系,由数据管理界面驱动显示。
电磁探测正反演软件的用户界面(图2),由参数设置、工区布置、数据多维可视化和模型三维显示等模块组成。用户通过界面设置参数进行反演计算,用户界面提供测点、剖面和区域平面等多种方式查看和分析反演结果。
电磁探测正反演软件以工程为基本单位组织同一工区的装置参数、实测数据和处理结果等。使用C++语言编写模块(类)用于在内存中存储相应数据信息,数据组织模块定义和说明如下。
1)CWorkarea用于组织工区中的所有工程数据信息及测点坐标数据。
2)CProject用于存储工程的装置参数和数据信息。
3)CRecv用于存储工区的坐标数据。
4)CTransmitter基类,用于派生各种发射源类,如偶极源、大定源和中心回线类等。
5)CurrentDipole用于存储偶极源的数据,派生于CTransmitter。
6)dataObject基类,用于派生各种方法类。
7)dataVecMTX_t模板类,派生于dataObject,基于模板的方式可组织各种方法的数据。
8)csamtVec 用于存储CSAMT方法的测点信息,可基于模板类dataVecMTX_t组织工区中的CSAMT方法的数据。
基于以上所示模块可有效组织同一工区的各种方法的数据信息,模块设计及关系如图3所示。
数据处理模块使用FORTRAN和C++语言编写。FORTRAN语言代码使用Intel Fortran编译形成动态库,通过接口由主程序调用,C++语言编写的代码,可由集成程序在源代码级别上编译使用。
程序界面采用多文档方式,各数据处理子界面可以通过主界面启动,考虑到数据处理需要耗费一定资源与时间,在集成设计过程中采用多线程方式,把数据处理计算与界面管理分配到不同的线程中,解决运行过程中界面“堵塞”的情况,在工作线程负责数据处理时,主界面仍可以由用户操作。
以C++语言编写的方法处理模块按照图4所示方式集成。以CSAMT拟二维反演为例,启动1个工作线程在每次完成1个测点的反演计算后,由工作线程给主界面提交信息,主界面根据此信息更新图形表达,以达到监控反演进程和实时查看反演进度的目的。
以FORTRAN语言编写的方法处理模块按照如图5所示方式由相应的方法处理界面使用。以MT二维反演为例,方法处理界面(Mt2DInversionForm)启动2个线程,分别是计算线程(Mt2DinversionThread)和监控线程(Mt2DInversionMonitor),其中计算线程启动动态库(Mt2Di
图2 电磁探测正反演软件界面
图3 数据组织模块设计及关系图
图4 方法处理模块集成方式(C++)
图5 方法处理模块(FORTRAN)集成方式
并行计算可以充分发挥多CPU、多核平台的计算资源优势,提高正反演计算效率。由于先前的一些算法多采用FORTRAN实现,所以上述算法中涉及的并行过程可以采用支持FORTRAN的并行开发包OpenMP或者MPI实现。OpenMP主要用于实现单进程多线程并行计算,其并行过程采用线程实现,多个并行过程数据共享临界区,比较适合程序结构较复杂、中间共享数据结构较多的电法正反演并行计算[5]。MPI用于多进程并行计算,将计算程序分解到网络中的多个计算节点上, 计算进程相互独立[6],可用于工作站集群中进行大规模并行计算[7]。
图6 波数计算程序的OpenMP并行方法
表2 CSAMT二维正演程序运行时间统计表
表3 MT三维反演程序运行时间统计表
将CSAMT二维正演程序封装为单独模块,在其内部实现正演计算的并行化,可采用OPENMP的方式实现波数计算的任务分解(图6),OPENMP的宏定义中将波数值(BS),压缩刚度矩阵(AA,ST),右端项(BB),求解场值(RR),波数索引(IFKK)针对波数计算线程私有化,避免因内存冲突而造成的计算错误。CSAMT二维正演并行程序运算效率和模型规模如表2所示。
经过以上并行验算说明在8核硬件环境下,CSAMT二维正演并行程序计算效率可提高5.13倍。
MT三维反演程序基于MPI并行编程方式实现数据空间反演并行算法,算法中实现了包括三维正演,灵敏度矩阵、叉积矩阵以及模型修改量的并行执行[6]。MT三维反演并行程序运算效率和模型规模如表3所示。经过以上并行验算说明在8核硬件环境下,MT三维反演并行程序计算效率可提高3.59倍。
人机交互建模模块包括一维、二维及三维地电模型的建立和修改,用于电磁法的一维、二维和三维人机交互正演模拟。一维人机交互建模相对实现简单,主要是针对层状模型;二维建模是基于多边形为基本单元,通过屏幕交互操作实现模型的创建、修改,最终剖分成四边形、三角形供二维正反演计算使用[8];三维建模是以多面体为基本单元,进行模型的存储和交互修改,这种方式比较直观,但开发难度大,已在重、磁三维交互模拟中使用[9],建成的多面体模型需要根据电法三维正反演具体情况,将模型剖分成六面体、四面体单元供程序调用。
图7 MT三维反演结果数据的三维可视化
电法数据处理过程剖面、断面和地电模型需要进行实时显示,以增加处理过程的可视化和对数据处理结果的把控[10]。模型和数据的三维可视化是软件开发的难点,这不仅要解决数据的三维可视问题,还要以此为手段来协助数据处理人员对数据进行分析。软件中的三维数据可视化是基于Raycasting与高性能显卡平台搭建而成,可以对超大规模数据进行实时可视化渲染,模块内建三维体素渲染(3DVR)算法[11],通过参数选取可方便地对体数据任意位置作透明性观察,可根据其需求凸显出所关心的位置(地表、异常、断层等)进行重点观察。模块通过友好的交互界面和灵活的接口,实现了切片排列组合显示[12]、三维等值体外形轮廓重建[13]、三维可视化显示及主体轮廓透明显示[14]、通过调节α通道调节感兴趣区突出显示、切片漫游[15]、三维正交切片显示、实时平移旋转放缩操作等。以甘肃柳园三维电磁探测试验区的MT三维反演结果显示为例(如图7所示),反演电性结构与观测区电性特征吻合。
电磁探测正反演软件系统经过集成测试后,已开展了一些实际数据处理试验,在直观性、友好性和易用方面优于同类软件,通过本期研究,在电法软件开发设计方面取得如下认识。
1)软件是地球物理勘探数据处理技术的载体,一体化通用软件平台更符合实际需要,在同一软件平台中实现多种电法的数据管理、数据处理、反演和交互解释功能,不仅可以提高数据处理效率,也为多参数综合解释提供技术支持。
2)电磁法的计算模块使用FORTRAN语言居多,采用OPENMP并行化设计,能有效地提高计算效率,且程序结构改动小,有利于代码资源的复用。在集成过程中,采用多线程方式来集成数据处理模块,可解决因计算资源占用而造成的软件界面堵塞问题,并实时监控数据处理的进度,可以给用户带来良好的使用体验。
3)在电磁探测正反演软件开发过程中引入软件工程,开展软件需求分析与系统设计研究,有利于电法软件处理流程的标准化,以此为基础开展数据管理、处理解释、可视化和人机交互等模块的设计和集成,能减少重复性工作,优化软件开发流程,是软件开发质量的保证。