梁 萌,吳文鸝,陳 實
(1.中國地質(zhì)科學院 地球物理地球化學勘查研究所,廊坊 065000;2.國土資源部 地球物理電磁法探測技術重點實驗室,廊坊 065000)
電磁法是地球物理勘探應用最為廣泛的方法技術,數(shù)據(jù)處理是電法勘探的重要環(huán)節(jié),其效果、質(zhì)量和效率依賴于數(shù)據(jù)處理解釋軟件支持,因此,數(shù)據(jù)處理解釋軟件的現(xiàn)狀反映數(shù)據(jù)處理解釋技術的水平。隨著電法儀器向大深度、多功能方向發(fā)展,數(shù)據(jù)處理軟件已由單一方法向多參數(shù)、一體化發(fā)展。
國外非常重視電法軟件開發(fā)工作,Zonge公司開發(fā)了與其多功能電法儀器相配套的多功能電法數(shù)據(jù)處理解釋軟件,軟件的功能包含電法子方法的數(shù)據(jù)預處理、一維反演和二維反演。其優(yōu)點是軟件系統(tǒng)與儀器結合緊密,針對性較強,缺點是軟件必須與儀器配套使用缺乏靈活性。另一種是開發(fā)比較通用的電法數(shù)據(jù)處理解釋軟件系統(tǒng),EMIGMA和WinGLink軟件。EMIGMA軟件提供通用框架和界面,用于重力、磁法和電磁法的數(shù)據(jù)處理和數(shù)據(jù)成圖,包括激電法(IP)、大地電磁法(MT)、可控源電磁法(CSAMT)、瞬變電磁法(TEM)的一維反演及三維正演模擬,IP、CSAMT和MT三維反演;WinGLink軟件主要功能包括TDIP和TEM的一維反演,MT一維反演、二維反演和三維正演,CSEM一維反演和三維正演,此軟件的突出優(yōu)勢在于MT的數(shù)據(jù)處理和正反演解釋。這些軟件的優(yōu)點是軟件集成度高,功能強大,但與數(shù)據(jù)采集儀器的無縫銜接方面有所欠缺。
國內(nèi)一些高校和科研院所應用科研成果開發(fā)形成處理解釋軟件。成都理工大學開發(fā)的MT-soft,石油大學的電磁勘探資料處理解釋一體化系統(tǒng)以及中國地震局地質(zhì)所的MT-Pioneer軟件[1],這幾款軟件的主要功能為MT的數(shù)據(jù)預處理和一、二維正反演;吉林大學開發(fā)的GeoElectro 電法數(shù)據(jù)處理系統(tǒng),軟件包括TDIP、CSAMT和TEM,其主要功能模塊為TDIP的一維反演和二維反演、CSAMT數(shù)據(jù)的預處理以及瞬變電磁(TEM)的一維反演。中國地質(zhì)科學院物化探所的電法工作站軟件系統(tǒng)(WEM)集成了直流電阻率/激發(fā)極化法、大地電磁法、磁源瞬變電磁法和幅相激電等方法,是集數(shù)據(jù)輸入、數(shù)據(jù)預處理、正反演解釋和成果輸出為一體的電法工作站數(shù)據(jù)處理解釋系統(tǒng)[2]。
軟件是地球物理勘探數(shù)據(jù)處理技術的載體[3],因此國外的勘查機構開發(fā)的軟件一般不對外銷售,與儀器配套銷售配套的軟件在功能上往往不能滿足用戶需求,需要利用通用軟件來補充。伴隨國內(nèi)電磁方法儀器的研制,需要數(shù)據(jù)處理軟件能夠支持多種方法的數(shù)據(jù)處理解釋工作,開展電磁探測正反演軟件研發(fā)工作仍具有現(xiàn)實意義。
電磁探測正反演軟件由①數(shù)據(jù)管理;②人機交互建模;③可視化;④正反演計算等4部分組成。數(shù)據(jù)管理模塊、人機交互建模模塊和可視化模塊基于Qt框架制作,使用C++語言編寫。計算模塊主要解決CSAMT、AMT/MT、TDIP和SIP的正反演問題,由FORTRAN和C++語言編寫。將以上模塊集成形成電磁探測正反演軟件,遵從軟件工程開發(fā)要求,對軟件的數(shù)據(jù)需求與功能需求進行分析。
電磁法數(shù)據(jù)包括裝置參數(shù)、測點坐標和實測數(shù)據(jù)。裝置參數(shù)與觀測方法和儀器有關(CSAMT方法包括發(fā)射源坐標信息、頻率和電流強度等基本信息);實測數(shù)據(jù)的內(nèi)容包含觀測坐標和實測數(shù)據(jù)(CSAMT方法包括觀測頻率、視電阻率和相位等);TDIP方法包括供電極距、測量極距、視電阻率和視極化率等。
電磁探測正反演軟件輸出地電模型和正演結果。一維模型包括層厚、電性參數(shù)(電阻率)。二維模型和三維模型包括解釋區(qū)域部分和正演算法要求的擴展區(qū)域部分。在程序設計過程中,需要有效地對這些數(shù)據(jù)進行組織管理,以提高數(shù)據(jù)處理解釋軟件的運行效率。
電磁探測正反演軟件的具體功能包括①人機交互正演模擬;②反演計算;③數(shù)據(jù)管理;④人機交互建模;⑤數(shù)據(jù)可視化。正反演計算的數(shù)據(jù)處理流程基于用戶交互界面實現(xiàn),軟件用戶界面由數(shù)據(jù)和模型可視化模塊組成。
不同的電磁法對應的觀測數(shù)據(jù)和裝置參數(shù)都有區(qū)別,不同的算法流程、輸出結果和數(shù)據(jù)量也不同,以文件方式管理很難達到一體化設計要求,則采用數(shù)據(jù)庫技術以工區(qū)為單元組織管理實測數(shù)據(jù)和處理結果。
正反演計算模塊包括一維、二維和三維正反演計算,同時要考慮帶地形模型的情況,軟件運行過程要充分考慮數(shù)據(jù)、模型的可視性和交互性,特別是在正演過程中要與交互建模結合,形成人機交互正演模擬;反演結果數(shù)據(jù)保存要完整,可以由軟件重新提取、查看和繼續(xù)反演;可視化需支持正反演結果的屏幕展示,包括測深和剖面曲線、色塊圖、斷面圖、立體圖像和切片圖。
根據(jù)電磁探測正反演軟件需求,軟件系統(tǒng)由數(shù)據(jù)管理、可視化、人機交互建模和數(shù)據(jù)處理功能模塊組成,可視化和交互建模為公用模塊,數(shù)據(jù)管理和處理模塊由各方法的正反演計算需求驅(qū)動。軟件框架架構采用“低耦合”的方式設計,可減少模塊之間的依賴,有利于模塊的擴展和更新。系統(tǒng)開發(fā)需要兼顧代碼編譯的跨平臺性和資源的復用性[4]。
MT、CSAMT、TDIP和SIP等多種方法在數(shù)據(jù)處理流程與處理方式存在類同,但采集的數(shù)據(jù)有差異,在數(shù)據(jù)處理過程中都需要導入相關的數(shù)據(jù)信息(模型、測點信息、反演參數(shù)等),實時監(jiān)控處理過程,進行數(shù)據(jù)處理結果查看和分析。因此,在設計上要突破傳統(tǒng)的基于過程化的軟件系統(tǒng)框架,采用數(shù)據(jù)為核心多方式驅(qū)動機制來設計開發(fā)軟件系統(tǒng),其體系架構如圖1所示?;谲浖脚_架構設計和運行環(huán)境(Windows 7和Linux64位操作系統(tǒng)),選取Qt、VS2012、Intel FORTRAN和SQLite為集成開發(fā)工具,具體開發(fā)工具如表1所示。
表1 開發(fā)工具列表
圖1 電磁探測正反演軟件框架架構圖
圍繞軟件的需求分析和設計,電磁探測正反演軟件重點從數(shù)據(jù)組織與管理、數(shù)據(jù)處理模塊集成、并行計算、建模與可視化等四個技術層面來進行開發(fā),通過人機交互設計對各功能模塊進行集成,形成數(shù)據(jù)管理、處理解釋和可視化為一體化軟件系統(tǒng)。
考慮到電磁法在數(shù)據(jù)處理與反演操作流程、數(shù)據(jù)圖示方式等方面存在相似性,其界面布局、流程設計可以類同處理。軟件系統(tǒng)的主要用戶界面包括數(shù)據(jù)管理界面、數(shù)據(jù)預處理界面、正反演界面、數(shù)據(jù)成圖界面,其中數(shù)據(jù)管理界面為主導界面,其他界面在層次上為平級關系,由數(shù)據(jù)管理界面驅(qū)動顯示。
電磁探測正反演軟件的用戶界面(圖2),由參數(shù)設置、工區(qū)布置、數(shù)據(jù)多維可視化和模型三維顯示等模塊組成。用戶通過界面設置參數(shù)進行反演計算,用戶界面提供測點、剖面和區(qū)域平面等多種方式查看和分析反演結果。
電磁探測正反演軟件以工程為基本單位組織同一工區(qū)的裝置參數(shù)、實測數(shù)據(jù)和處理結果等。使用C++語言編寫模塊(類)用于在內(nèi)存中存儲相應數(shù)據(jù)信息,數(shù)據(jù)組織模塊定義和說明如下。
1)CWorkarea用于組織工區(qū)中的所有工程數(shù)據(jù)信息及測點坐標數(shù)據(jù)。
2)CProject用于存儲工程的裝置參數(shù)和數(shù)據(jù)信息。
3)CRecv用于存儲工區(qū)的坐標數(shù)據(jù)。
4)CTransmitter基類,用于派生各種發(fā)射源類,如偶極源、大定源和中心回線類等。
5)CurrentDipole用于存儲偶極源的數(shù)據(jù),派生于CTransmitter。
6)dataObject基類,用于派生各種方法類。
7)dataVecMTX_t模板類,派生于dataObject,基于模板的方式可組織各種方法的數(shù)據(jù)。
8)csamtVec 用于存儲CSAMT方法的測點信息,可基于模板類dataVecMTX_t組織工區(qū)中的CSAMT方法的數(shù)據(jù)。
基于以上所示模塊可有效組織同一工區(qū)的各種方法的數(shù)據(jù)信息,模塊設計及關系如圖3所示。
數(shù)據(jù)處理模塊使用FORTRAN和C++語言編寫。FORTRAN語言代碼使用Intel Fortran編譯形成動態(tài)庫,通過接口由主程序調(diào)用,C++語言編寫的代碼,可由集成程序在源代碼級別上編譯使用。
程序界面采用多文檔方式,各數(shù)據(jù)處理子界面可以通過主界面啟動,考慮到數(shù)據(jù)處理需要耗費一定資源與時間,在集成設計過程中采用多線程方式,把數(shù)據(jù)處理計算與界面管理分配到不同的線程中,解決運行過程中界面“堵塞”的情況,在工作線程負責數(shù)據(jù)處理時,主界面仍可以由用戶操作。
以C++語言編寫的方法處理模塊按照圖4所示方式集成。以CSAMT擬二維反演為例,啟動1個工作線程在每次完成1個測點的反演計算后,由工作線程給主界面提交信息,主界面根據(jù)此信息更新圖形表達,以達到監(jiān)控反演進程和實時查看反演進度的目的。
以FORTRAN語言編寫的方法處理模塊按照如圖5所示方式由相應的方法處理界面使用。以MT二維反演為例,方法處理界面(Mt2DInversionForm)啟動2個線程,分別是計算線程(Mt2DinversionThread)和監(jiān)控線程(Mt2DInversionMonitor),其中計算線程啟動動態(tài)庫(Mt2Di
圖2 電磁探測正反演軟件界面
圖3 數(shù)據(jù)組織模塊設計及關系圖
圖4 方法處理模塊集成方式(C++)
圖5 方法處理模塊(FORTRAN)集成方式
并行計算可以充分發(fā)揮多CPU、多核平臺的計算資源優(yōu)勢,提高正反演計算效率。由于先前的一些算法多采用FORTRAN實現(xiàn),所以上述算法中涉及的并行過程可以采用支持FORTRAN的并行開發(fā)包OpenMP或者MPI實現(xiàn)。OpenMP主要用于實現(xiàn)單進程多線程并行計算,其并行過程采用線程實現(xiàn),多個并行過程數(shù)據(jù)共享臨界區(qū),比較適合程序結構較復雜、中間共享數(shù)據(jù)結構較多的電法正反演并行計算[5]。MPI用于多進程并行計算,將計算程序分解到網(wǎng)絡中的多個計算節(jié)點上, 計算進程相互獨立[6],可用于工作站集群中進行大規(guī)模并行計算[7]。
圖6 波數(shù)計算程序的OpenMP并行方法
表2 CSAMT二維正演程序運行時間統(tǒng)計表
表3 MT三維反演程序運行時間統(tǒng)計表
將CSAMT二維正演程序封裝為單獨模塊,在其內(nèi)部實現(xiàn)正演計算的并行化,可采用OPENMP的方式實現(xiàn)波數(shù)計算的任務分解(圖6),OPENMP的宏定義中將波數(shù)值(BS),壓縮剛度矩陣(AA,ST),右端項(BB),求解場值(RR),波數(shù)索引(IFKK)針對波數(shù)計算線程私有化,避免因內(nèi)存沖突而造成的計算錯誤。CSAMT二維正演并行程序運算效率和模型規(guī)模如表2所示。
經(jīng)過以上并行驗算說明在8核硬件環(huán)境下,CSAMT二維正演并行程序計算效率可提高5.13倍。
MT三維反演程序基于MPI并行編程方式實現(xiàn)數(shù)據(jù)空間反演并行算法,算法中實現(xiàn)了包括三維正演,靈敏度矩陣、叉積矩陣以及模型修改量的并行執(zhí)行[6]。MT三維反演并行程序運算效率和模型規(guī)模如表3所示。經(jīng)過以上并行驗算說明在8核硬件環(huán)境下,MT三維反演并行程序計算效率可提高3.59倍。
人機交互建模模塊包括一維、二維及三維地電模型的建立和修改,用于電磁法的一維、二維和三維人機交互正演模擬。一維人機交互建模相對實現(xiàn)簡單,主要是針對層狀模型;二維建模是基于多邊形為基本單元,通過屏幕交互操作實現(xiàn)模型的創(chuàng)建、修改,最終剖分成四邊形、三角形供二維正反演計算使用[8];三維建模是以多面體為基本單元,進行模型的存儲和交互修改,這種方式比較直觀,但開發(fā)難度大,已在重、磁三維交互模擬中使用[9],建成的多面體模型需要根據(jù)電法三維正反演具體情況,將模型剖分成六面體、四面體單元供程序調(diào)用。
圖7 MT三維反演結果數(shù)據(jù)的三維可視化
電法數(shù)據(jù)處理過程剖面、斷面和地電模型需要進行實時顯示,以增加處理過程的可視化和對數(shù)據(jù)處理結果的把控[10]。模型和數(shù)據(jù)的三維可視化是軟件開發(fā)的難點,這不僅要解決數(shù)據(jù)的三維可視問題,還要以此為手段來協(xié)助數(shù)據(jù)處理人員對數(shù)據(jù)進行分析。軟件中的三維數(shù)據(jù)可視化是基于Raycasting與高性能顯卡平臺搭建而成,可以對超大規(guī)模數(shù)據(jù)進行實時可視化渲染,模塊內(nèi)建三維體素渲染(3DVR)算法[11],通過參數(shù)選取可方便地對體數(shù)據(jù)任意位置作透明性觀察,可根據(jù)其需求凸顯出所關心的位置(地表、異常、斷層等)進行重點觀察。模塊通過友好的交互界面和靈活的接口,實現(xiàn)了切片排列組合顯示[12]、三維等值體外形輪廓重建[13]、三維可視化顯示及主體輪廓透明顯示[14]、通過調(diào)節(jié)α通道調(diào)節(jié)感興趣區(qū)突出顯示、切片漫游[15]、三維正交切片顯示、實時平移旋轉(zhuǎn)放縮操作等。以甘肅柳園三維電磁探測試驗區(qū)的MT三維反演結果顯示為例(如圖7所示),反演電性結構與觀測區(qū)電性特征吻合。
電磁探測正反演軟件系統(tǒng)經(jīng)過集成測試后,已開展了一些實際數(shù)據(jù)處理試驗,在直觀性、友好性和易用方面優(yōu)于同類軟件,通過本期研究,在電法軟件開發(fā)設計方面取得如下認識。
1)軟件是地球物理勘探數(shù)據(jù)處理技術的載體,一體化通用軟件平臺更符合實際需要,在同一軟件平臺中實現(xiàn)多種電法的數(shù)據(jù)管理、數(shù)據(jù)處理、反演和交互解釋功能,不僅可以提高數(shù)據(jù)處理效率,也為多參數(shù)綜合解釋提供技術支持。
2)電磁法的計算模塊使用FORTRAN語言居多,采用OPENMP并行化設計,能有效地提高計算效率,且程序結構改動小,有利于代碼資源的復用。在集成過程中,采用多線程方式來集成數(shù)據(jù)處理模塊,可解決因計算資源占用而造成的軟件界面堵塞問題,并實時監(jiān)控數(shù)據(jù)處理的進度,可以給用戶帶來良好的使用體驗。
3)在電磁探測正反演軟件開發(fā)過程中引入軟件工程,開展軟件需求分析與系統(tǒng)設計研究,有利于電法軟件處理流程的標準化,以此為基礎開展數(shù)據(jù)管理、處理解釋、可視化和人機交互等模塊的設計和集成,能減少重復性工作,優(yōu)化軟件開發(fā)流程,是軟件開發(fā)質(zhì)量的保證。