梁 萌,吳文鸝,陳 實
(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)在電磁探測正反演軟件開發過程中引入軟件工程,開展軟件需求分析與系統設計研究,有利于電法軟件處理流程的標準化,以此為基礎開展數據管理、處理解釋、可視化和人機交互等模塊的設計和集成,能減少重復性工作,優化軟件開發流程,是軟件開發質量的保證。