本發(fā)明屬于計(jì)算機(jī)并行領(lǐng)域,具體涉及一種交錯(cuò)網(wǎng)格有限差分正演模擬優(yōu)化的方法。
背景技術(shù):
:波動(dòng)方程數(shù)值模擬不僅能保持地震波的運(yùn)動(dòng)學(xué)特征,而且還能保持地震波的動(dòng)力學(xué)特征,可用于檢驗(yàn)地震數(shù)據(jù)處理的效果,目前有限差分法在波動(dòng)方程數(shù)值模擬中具有較大的優(yōu)越性及廣泛性,交錯(cuò)網(wǎng)格有限差分法綜合其在占用內(nèi)存、計(jì)算精度、計(jì)算效率和并行算法實(shí)現(xiàn)等方面的特點(diǎn),與有限元法、虛譜法等比較還是具有相當(dāng)?shù)膬?yōu)勢。但是,如圖1所示,目前的交錯(cuò)網(wǎng)格有限差分三維彈性波正演數(shù)值模擬的數(shù)據(jù)交換量及通訊量都很大,傳統(tǒng)的方法只實(shí)現(xiàn)了進(jìn)程級(jí)的并行,達(dá)不到內(nèi)存共享,不能減少通信時(shí)間,從而降低了交錯(cuò)網(wǎng)格有限差分的三維波動(dòng)方程的求解效率。針對(duì)上述技術(shù)問題,現(xiàn)有技術(shù)中尚無良好解決方案。技術(shù)實(shí)現(xiàn)要素:本發(fā)明的目的在于解決上述現(xiàn)有技術(shù)中存在的難題,提供一種交錯(cuò)網(wǎng)格有限差分正演模擬優(yōu)化的方法,通過采用多線程和多進(jìn)程的并行算法,將數(shù)據(jù)量和運(yùn)算量分散到多個(gè)進(jìn)程、線程上。進(jìn)程內(nèi)的計(jì)算由于共享了內(nèi)存,可以有效降低邊界數(shù)據(jù)交換的通信時(shí)間,提高交錯(cuò)網(wǎng)格有限差分進(jìn)行三維彈性波正演數(shù)值模擬的數(shù)據(jù)交換及通訊的效率,從而提高交錯(cuò)網(wǎng)格有限差分三維正演模擬的運(yùn)行效率。本發(fā)明是通過以下技術(shù)方案實(shí)現(xiàn)的:本發(fā)明提供了一種交錯(cuò)網(wǎng)格有限差分正演模擬優(yōu)化的方法,包括:獲取三維空間的模型區(qū)域節(jié)點(diǎn)的內(nèi)存資源,并根據(jù)高階交錯(cuò)網(wǎng)格有限差分正演模擬的計(jì)算參數(shù)確定進(jìn)程的網(wǎng)格規(guī)模,其中每個(gè)所述進(jìn)程具有獨(dú)立的內(nèi)存空間;根據(jù)每個(gè)所述進(jìn)程內(nèi)的模型區(qū)域,以及x、y、z三個(gè)方向的網(wǎng)格規(guī)模,利用卷簾式分配建立多線程的數(shù)據(jù)模型;以及每個(gè)所述線程計(jì)算自己區(qū)域內(nèi)的數(shù)據(jù)模型,以及通過同步操作進(jìn)行每個(gè)時(shí)間片下每個(gè)數(shù)據(jù)模型區(qū)域立方體六個(gè)面上數(shù)據(jù)的共享。進(jìn)一步地,該方法包括:將所述三維空間的模型區(qū)域劃分成多個(gè)子區(qū)域,以及針對(duì)每個(gè)所述子區(qū)域分配一個(gè)所述進(jìn)程。進(jìn)一步地,每個(gè)所述子區(qū)域具有至少一個(gè)所述節(jié)點(diǎn)。進(jìn)一步地,所述計(jì)算參數(shù)包括:x、y、z三個(gè)方向中每個(gè)方向上的網(wǎng)格點(diǎn)數(shù)、進(jìn)程數(shù)以及有限差分的階數(shù)。進(jìn)一步地,將x、y、z三個(gè)方向中每個(gè)方向上的網(wǎng)格點(diǎn)數(shù)的積除以x、y、z三個(gè)方向中每個(gè)方向上的進(jìn)程數(shù)的積所得到的商作為所述進(jìn)程的網(wǎng)格規(guī)模。進(jìn)一步地,利用所述卷簾式分配將多個(gè)所述線程分配到每個(gè)所述進(jìn)程,其中,依次循環(huán)將多個(gè)所述線程分配到所述每個(gè)進(jìn)程。進(jìn)一步地,每個(gè)循環(huán)的所述線程的最大數(shù)量小于或等于計(jì)算所采用的微處理器的核數(shù)。進(jìn)一步地,每個(gè)時(shí)間片下,每個(gè)所述進(jìn)程內(nèi)的各線程并發(fā)地計(jì)算自己區(qū)域內(nèi)的數(shù)據(jù)模型,當(dāng)一個(gè)進(jìn)程內(nèi)所有計(jì)算線程都執(zhí)行結(jié)束時(shí),交換當(dāng)前時(shí)間片下該進(jìn)程數(shù)據(jù)模型區(qū)域立方體六個(gè)面上的邊界數(shù)據(jù)。進(jìn)一步地,所述計(jì)算參數(shù)包括x、y、z三個(gè)方向中每個(gè)方向上的網(wǎng)格間距,以及該方法還包括根據(jù)所述網(wǎng)格間距和波的傳播時(shí)長以及時(shí)間步長間隔確定總的步長數(shù)目,以劃分時(shí)間片。與現(xiàn)有技術(shù)相比,本發(fā)明的有益效果是:本發(fā)明中每個(gè)進(jìn)程具有獨(dú)立的內(nèi)存空間,并在每個(gè)時(shí)間片下每個(gè)數(shù)據(jù)模型區(qū)域立方體六個(gè)面上進(jìn)行數(shù)據(jù)共享,在一定程度上提高了交錯(cuò)網(wǎng)格有限差分進(jìn)行三維彈性波正演數(shù)值模擬的數(shù)據(jù)交換及通訊的效率,從而提高了該方法的運(yùn)行效率,是一種快速有效的交錯(cuò)網(wǎng)格有限差分三維正演模擬方法。附圖說明附圖是用來提供對(duì)本發(fā)明的進(jìn)一步理解,并且構(gòu)成說明書的一部分,與下面的具體實(shí)施方式一起用于解釋本發(fā)明,但并不構(gòu)成對(duì)本發(fā)明的限制。在附圖中:圖1示出交錯(cuò)網(wǎng)格有限差分三維正演模擬傳統(tǒng)算法;圖2示出本發(fā)明實(shí)施方式提供的交錯(cuò)網(wǎng)格有限差分正演模擬優(yōu)化的方法流程圖;圖3示出示例的三維空間劃分示意圖;圖4示出數(shù)據(jù)模型區(qū)域立方體數(shù)據(jù)共享示意圖;圖5示出交錯(cuò)網(wǎng)格的網(wǎng)格幾何關(guān)系示意圖;以及圖6示出優(yōu)化后的交錯(cuò)網(wǎng)格有限差分三維正演模擬方法的流程圖。具體實(shí)施方式以下結(jié)合附圖對(duì)本發(fā)明的具體實(shí)施方式進(jìn)行詳細(xì)說明。應(yīng)當(dāng)理解的是,此處所描述的具體實(shí)施方式僅用于說明和解釋本發(fā)明,并不用于限制本發(fā)明。下面結(jié)合附圖對(duì)本發(fā)明作進(jìn)一步詳細(xì)描述:本發(fā)明提供了一種交錯(cuò)網(wǎng)格有限差分正演模擬優(yōu)化的方法,如圖2所示,包括:S201,獲取三維空間的模型區(qū)域節(jié)點(diǎn)的內(nèi)存資源,并根據(jù)高階交錯(cuò)網(wǎng) 格有限差分正演模擬的計(jì)算參數(shù)確定進(jìn)程的網(wǎng)格規(guī)模,其中每個(gè)所述進(jìn)程具有獨(dú)立的內(nèi)存空間;S202,根據(jù)每個(gè)所述進(jìn)程內(nèi)的模型區(qū)域,以及x、y、z三個(gè)方向的網(wǎng)格規(guī)模,利用卷簾式分配建立多線程的數(shù)據(jù)模型;以及S203,每個(gè)所述線程計(jì)算自己區(qū)域內(nèi)的數(shù)據(jù)模型,以及通過同步操作進(jìn)行每個(gè)時(shí)間片下每個(gè)數(shù)據(jù)模型區(qū)域立方體六個(gè)面上數(shù)據(jù)的共享。通過本發(fā)明提供的上述技術(shù)方案,每個(gè)進(jìn)程具有獨(dú)立的內(nèi)存空間,并在每個(gè)時(shí)間片下每個(gè)數(shù)據(jù)模型區(qū)域立方體六個(gè)面上進(jìn)行數(shù)據(jù)共享,在一定程度上提高了交錯(cuò)網(wǎng)格有限差分進(jìn)行三維彈性波正演數(shù)值模擬的數(shù)據(jù)交換及通訊的效率,從而提高了該方法的運(yùn)行效率,是一種快速有效的交錯(cuò)網(wǎng)格有限差分三維正演模擬方法。在實(shí)施方式中,上述方法可以包括:將三維空間的模型區(qū)域劃分成多個(gè)子區(qū)域,以及針對(duì)每個(gè)所述子區(qū)域分配一個(gè)所述進(jìn)程。其中,每個(gè)所述子區(qū)域可以具有至少一個(gè)所述節(jié)點(diǎn)。將三維空間的模型區(qū)域劃分后的每個(gè)子區(qū)域可以被稱為基本處理單元,每個(gè)基本處理單元可以被分配一個(gè)進(jìn)程。在實(shí)施方式中,每個(gè)進(jìn)程具有獨(dú)立的內(nèi)存空間,數(shù)據(jù)(例如,地震數(shù)據(jù))在整個(gè)計(jì)算空間中不重復(fù)占用內(nèi)存,因而提高了內(nèi)存的利用率。每個(gè)進(jìn)程各自獨(dú)立地完成計(jì)算,最終由多個(gè)進(jìn)程共同實(shí)現(xiàn)三維正演模擬。在實(shí)施方式中,計(jì)算參數(shù)可以包括:x、y、z三個(gè)方向中每個(gè)方向上的網(wǎng)格點(diǎn)數(shù)、進(jìn)程數(shù)以及有限差分的階數(shù)??梢詫、y、z三個(gè)方向中每個(gè)方向上的網(wǎng)格點(diǎn)數(shù)的積除以x、y、z三個(gè)方向中每個(gè)方向上的進(jìn)程數(shù)的積所得到的商作為所述進(jìn)程的網(wǎng)格規(guī)模(或稱為網(wǎng)格數(shù)目)。假設(shè)輸入的總的模型規(guī)模為N=NX*NY*NZ,其中NX,NY,NZ分別為x、y和z方向的網(wǎng)格點(diǎn)數(shù)。將模型沿著x、y和z方向分別使用NPROCX、NPROCY和NPROCZ個(gè)進(jìn)程進(jìn)行劃分,則總的進(jìn)程數(shù)為NP=NPROCX*NPROCY*NPROCZ,而每個(gè)子進(jìn)程中的網(wǎng)格規(guī)模為N/NP,即為進(jìn)程的最大模型區(qū)域。在實(shí)施方式中,利用所述卷簾式分配將多個(gè)所述線程分配到每個(gè)所述進(jìn)程,其中,依次循環(huán)將多個(gè)所述線程分配到所述每個(gè)進(jìn)程。每個(gè)循環(huán)的線程的數(shù)量受到提供線程的微處理器的核數(shù)的限制,在實(shí)施方式中,每個(gè)循環(huán)的所述線程的最大數(shù)量小于或等于計(jì)算所采用的微處理器的核數(shù)。假設(shè)輸入的總的模型規(guī)模為N=NX*NY*NZ,其中NX,NY,NZ分別為x、y和z方向的網(wǎng)格點(diǎn)數(shù)。NPROCX、NPROCY和NPROCZ為模型沿著x、y和z方向使用的進(jìn)程數(shù),沿著x方向的網(wǎng)格規(guī)模為NX/NPROCX,沿著y方向的網(wǎng)格規(guī)模為NY/NPROCY,沿著z方向的網(wǎng)格規(guī)模為NZ/NPROCZ,每個(gè)進(jìn)程內(nèi)的模型區(qū)域需要處理的總的網(wǎng)格點(diǎn)數(shù)為NGRIDPOINTS=(NX/NPROCX)*(NY/NPROCY)*(NZ/NPROCZ)。首先獲取計(jì)算節(jié)點(diǎn)的處理器核數(shù)信息NCORES,依據(jù)CPU核數(shù),在進(jìn)程內(nèi)啟動(dòng)多線程的個(gè)數(shù)NTHREADS=NCORES。采用卷簾式分配方式即將NGRIDPOINTS中的第一個(gè)網(wǎng)格點(diǎn)分配給0號(hào)線程,第二個(gè)網(wǎng)格點(diǎn)分配給1號(hào)線程,第NTHREADS個(gè)網(wǎng)格點(diǎn)分配給NTHREADS-1號(hào)線程,第NTHREADS+1個(gè)網(wǎng)格點(diǎn)重新分配給0號(hào)線程,依此類推,網(wǎng)格點(diǎn)數(shù)編號(hào)INDEX-GRID對(duì)應(yīng)的線程編號(hào)INDEX-THREAD等于INDEX-GRID%NTHREADS-1。依據(jù)上述方式可以建立起卷簾式分配的多線程的數(shù)據(jù)模型(%表示求余數(shù))。在實(shí)施方式中,計(jì)算參數(shù)可以包括x、y、z三個(gè)方向中每個(gè)方向上的網(wǎng)格間距,以及該方法還包括根據(jù)所述網(wǎng)格間距和波的傳播時(shí)長以及時(shí)間步長間隔確定總的步長數(shù)目,以劃分時(shí)間片。每個(gè)時(shí)間片下,每個(gè)所述進(jìn)程內(nèi)的各線程并發(fā)地計(jì)算自己區(qū)域內(nèi)的數(shù)據(jù)模型,當(dāng)一個(gè)進(jìn)程內(nèi)所有計(jì)算線程都執(zhí)行結(jié)束時(shí),交換當(dāng)前時(shí)間片下該進(jìn)程數(shù)據(jù)模型區(qū)域立方體六個(gè)面上的邊界數(shù)據(jù),如圖3和圖4所示。圖3中,以NPROCX、NPROCY和NPROCZ都為3的模型劃分方式為例說明數(shù)據(jù)模型立方體中如何進(jìn)行數(shù)據(jù)交換,圖中示出了該模型的三維空間 進(jìn)程劃分方式。在圖3所示的三維空間中,對(duì)于進(jìn)程標(biāo)識(shí)為13的進(jìn)程,有6個(gè)面的數(shù)據(jù)需要進(jìn)行進(jìn)程間的交換,設(shè)六個(gè)面分別稱為頂、底、左、右、前、后。圖4中示出了圖3中進(jìn)程標(biāo)識(shí)為13的進(jìn)程與其6個(gè)方向上需進(jìn)行數(shù)據(jù)交換的鄰近通信進(jìn)程的關(guān)系示意圖。圖6詳細(xì)說明了本發(fā)明的步驟,具體說明如下:(1)MPI主進(jìn)程讀取網(wǎng)格數(shù)等各種模型計(jì)算參數(shù),包括:模型沿著x、y和z方向分別使用的進(jìn)程數(shù)NPROCX、NPROCY、NPROCZ;x、y和z方向的網(wǎng)格點(diǎn)數(shù)NX、NY、NZ;x、y和z方向的網(wǎng)格間距DX、DY、DZ;有限差分的階數(shù)(取值為:2,4,6,8,10,12);需保存的數(shù)據(jù)類型;源信號(hào)子波類型;波的傳播時(shí)長及時(shí)間步長間隔,并廣播給每個(gè)進(jìn)程。本發(fā)明的輸入數(shù)據(jù)包括:計(jì)算參數(shù)配置文件,在該文件中需要詳細(xì)列出上述計(jì)算所需的模型計(jì)算參數(shù),還有接收點(diǎn)位置信息,源信號(hào)類型定義及模型文件定義。(2)各個(gè)節(jié)點(diǎn)進(jìn)程獲取和分析節(jié)點(diǎn)資源。例如,通過Linux系統(tǒng)的文件讀取操作讀取Linux下的處理器相關(guān)信息文件/proc/cpuinfo和系統(tǒng)中關(guān)于當(dāng)前內(nèi)存狀況信息文件/proc/meminfo這兩個(gè)虛擬文件信息獲取節(jié)點(diǎn)的資源信息。根據(jù)選擇的有限差分的階數(shù)(即有限差分的階數(shù))從計(jì)算參數(shù)配置文件中讀取,(取值為:2,4,6,8,10,12)。保存的數(shù)據(jù)類型(質(zhì)點(diǎn)速度、應(yīng)力、旋度和散度)。在舉例的計(jì)算參數(shù)配置文件中對(duì)數(shù)據(jù)類型進(jìn)行了定義,例如,根據(jù)編碼類型選擇,1為保存質(zhì)點(diǎn)速度,2為保存應(yīng)力,3為保存旋度和散度,4為保存速度、應(yīng)力和旋度、散度能量。數(shù)據(jù)交換消耗的內(nèi)存:每個(gè)時(shí)間片下一個(gè)進(jìn)程與其鄰近進(jìn)程需要交換的數(shù)據(jù)量所需最大內(nèi)存量(單位為MB)滿足如下公式:(FDORDER)*4.0*6.0*(max((NX/NPROCX*NZ/NPROCZ), max((NY/NPROCY*NZ/NPROCZ),(NX/NPROCX*NY/NPROCY))))*sizeof(MPI_FLOAT)*pow(2.0,-20.0),其中FDORDER為交錯(cuò)網(wǎng)格有限差分系數(shù)的階數(shù)(取值為:2,4,6,8,10,12)。波場快照及地震記錄大?。翰▓隹煺占暗卣鹩涗洿笮≌加脙?nèi)存滿足公式(單位為MB):2*nseismograms*ntr*ns*sizeof(float)*pow(2.0,-20.0),其中nseismograms值與計(jì)算參數(shù)配置文件有關(guān),只保存質(zhì)點(diǎn)速度時(shí)nseismograms值為3,只保存應(yīng)力時(shí)nseismograms值為1,保存旋度和散度時(shí)nseismograms值為2,保存速度、應(yīng)力和旋度、散度能量時(shí)nseismograms值為6;ntr為接收點(diǎn)個(gè)數(shù);ns為一道的樣點(diǎn)數(shù)。程序狀態(tài)控制數(shù)據(jù)量:通過操作系統(tǒng)線程獲取程序接口(在舉例的程序中是使用pthread庫的程序接口pthread_attr_init()獲取的),把當(dāng)前進(jìn)程中的每個(gè)線程所占用的線程堆棧獲取相加的總數(shù),計(jì)算每個(gè)節(jié)點(diǎn)在x,y,z三個(gè)方向上可以處理的網(wǎng)格數(shù),將上述所需內(nèi)存量求和與節(jié)點(diǎn)的物理內(nèi)存量進(jìn)行比較,如果總和超過物理內(nèi)存量則進(jìn)行參數(shù)的調(diào)整。(3)把這些數(shù)據(jù)規(guī)約到主進(jìn)程。例如,利用MPI的MPI_Reduce函數(shù)進(jìn)行規(guī)約。主進(jìn)程根據(jù)每個(gè)節(jié)點(diǎn)進(jìn)程處理的網(wǎng)格能力。網(wǎng)格能力指主進(jìn)程根據(jù)獲取到的節(jié)點(diǎn)物理資源及x,y,z三個(gè)方向上的處理網(wǎng)格數(shù)與對(duì)應(yīng)的計(jì)算節(jié)點(diǎn)所需內(nèi)存量的關(guān)系,分配給該物理節(jié)點(diǎn)資源所能承受的x,y,z三個(gè)方向上可以處理的網(wǎng)格數(shù),即總的模型計(jì)算需要的內(nèi)存量。計(jì)算需要的內(nèi)存量即反映該網(wǎng)格能力。廣播各個(gè)節(jié)點(diǎn)被分到的模型區(qū)域。其中,對(duì)于模型區(qū)域的劃分,例如,假設(shè)輸入的總的模型規(guī)模為N=NX*NY*NZ,其中NX,NY,NZ分別為x、y和z方向的網(wǎng)格點(diǎn)數(shù)。NPROCX、NPROCY和NPROCZ為模型沿著x、y和z方向使用的進(jìn)程數(shù),沿著x方向的網(wǎng)格規(guī)模為NX/NPROCX,沿著y方向的網(wǎng)格規(guī)模為NY/NPROCY,沿著z方向的網(wǎng)格規(guī)模為NZ/NPROCZ,每個(gè)進(jìn)程內(nèi)的模型區(qū)域需要處理的總的網(wǎng)格點(diǎn)數(shù)為 NGRIDPOINTS=(NX/NPROCX)*(NY/NPROCY)*(NZ/NPROCZ)。(4)根據(jù)模型區(qū)域,每個(gè)節(jié)點(diǎn)進(jìn)程分配計(jì)算所需的內(nèi)存量。(5)每個(gè)節(jié)點(diǎn)進(jìn)程根據(jù)模型區(qū)域和獲取、分析的節(jié)點(diǎn)計(jì)算能力,確定計(jì)算線程數(shù),并把自己的模型區(qū)域再次均衡分配給計(jì)算線程,即線程模型區(qū)域,啟動(dòng)計(jì)算線程。(6)判斷是否還有炮。前面(1)到(5)是對(duì)輸入計(jì)算參數(shù)及物理資源的分析,從而構(gòu)建進(jìn)程模型區(qū)域的過程,從步驟(6)開始的步驟是針對(duì)每一炮的操作,這里是在每一炮操作開始前可以判斷是否還有炮數(shù)據(jù),作為流程判斷條件。需要計(jì)算,是則繼續(xù)下一步執(zhí)行,否則結(jié)束。(7)計(jì)算當(dāng)前炮的位置及獲取子波。在實(shí)施方式中可以這樣獲取子波:依據(jù)計(jì)算參數(shù)配置文件中源信號(hào)的子波類型編碼選擇子波類型:1=ricker子波類型,2=fumue子波類型,3=來自外部信號(hào)文件,4=sin3子波類型。第一種對(duì)應(yīng)的Ricker子波計(jì)算公式:r(τ)=(1-2τ2)exp(-τ2)公式(1)其中,τ=π(t-1.5/fc-td)1.0/fc;]]>第二種對(duì)應(yīng)的Fuchs-M¨uller子波計(jì)算公式:fm(t)=sin(2π(t-td)fc)-0.5sin(4π(t-td)fc)公式(2)其中,如果t∈|td,td+1/fc|,則fm(t)=0;第四種對(duì)應(yīng)的sin3子波計(jì)算公式:s3(t)=0.75πfcsin(π(t+td)fc)3公式(3)其中,如果t∈|td,td+1/fc|,則s3(t)=0。(8)判斷是否當(dāng)前炮的正演模擬時(shí)間結(jié)束,即判斷每一炮下的時(shí)間片 循環(huán)是否結(jié)束。在計(jì)算參數(shù)配置文件中預(yù)先給出波的傳播時(shí)長T及時(shí)間步長間隔DT,T/DT即總的步長數(shù)目,當(dāng)步長數(shù)目全部循環(huán)完則當(dāng)前炮的時(shí)間片循環(huán)結(jié)束,從而當(dāng)前炮的正演模擬時(shí)間結(jié)束。是則跳到(6)執(zhí)行,否則繼續(xù)下一步執(zhí)行。(9)計(jì)算當(dāng)前時(shí)間片(dt)在當(dāng)前線程模型區(qū)域的質(zhì)點(diǎn)速度。其中在(1)中,讀取網(wǎng)格參數(shù)后就可以根據(jù)波的傳播時(shí)長T及時(shí)間步長間隔DT得到總的步長數(shù)目,從而進(jìn)行時(shí)間片劃分?;谟邢薏罘值膹椥圆ú▌?dòng)方程的理論背景及求解過程如下,參考附圖5:描述和分析地震波通過巖石時(shí)的運(yùn)動(dòng)情況首要遵守的即是物理學(xué)上的動(dòng)量守恒定律,基于該定律可推導(dǎo)出如下的一階彈性波的微分方程:ρdvidt+viρ▿vi=-∂pij∂xj+fi---(1)]]>式中:ρ代表介質(zhì)密度;vi,xj,fi分別代表i方向的質(zhì)點(diǎn)速度、坐標(biāo)和體力(i,j∈x,y,z);pij代表第ij個(gè)應(yīng)力(外力),代表i方向的質(zhì)點(diǎn)速度梯度。對(duì)于三維同性彈性介質(zhì)在應(yīng)力作用下,同應(yīng)變之間存在如下的線性關(guān)系:pij=λθδij+2μεij(2)式中:λ和μ稱為拉梅常數(shù),為應(yīng)變張量,θ=ε11+ε22+ε33為體積膨脹系數(shù),δij=1fori=j0else]]>稱為Kronecker記號(hào)。為了求解彈性介質(zhì)方程(1)和(2),可以把速度、應(yīng)力、拉梅常數(shù)的計(jì)算,放在交錯(cuò)網(wǎng)格下的離散的笛卡爾空間坐標(biāo)系 (x=i×dx,y=j(luò)×dy,z=k×dz)和離散的時(shí)間(t=n×dt)中,其幾何關(guān)系如圖5所示。其中dx、dy和dz表示在x、y和z方向上的空間網(wǎng)格點(diǎn)之間的距離,dt表示時(shí)間間隔;NX、NY、NZ和NT分別表示空間網(wǎng)格點(diǎn)數(shù)和時(shí)間間隔數(shù)。最后,把微分算子使用有限差分算子代替。為了適應(yīng)交錯(cuò)網(wǎng)格有限差分具有2N(N=1,2,…)階精度,的4階有限差分具有以下向前、向后差分算子:∂f∂x|i+1/2=1dh[98(fi+1-fi)+124(fi+2-fi-1)]---(3)]]>∂f∂x|i-1/2=1dh[98(fi-fi-1)+124(fi+1-fi-2)]---(4)]]>具有以下中心差分算子[8]:∂f∂x|i-1/2=1dh[98(fi-fi-1)+124(fi+1-fi-2)]---(5)]]>把上述方程(2)~(5)代入方程(1),即可解出一階彈性波微分方程。(10)等待進(jìn)程內(nèi)所有線程計(jì)算結(jié)束,以及把進(jìn)程的模型區(qū)域的邊界質(zhì)點(diǎn)速度,使用MPI-3.0的鄰近集合通信在新構(gòu)建的三維笛卡爾拓?fù)浣Y(jié)構(gòu)中進(jìn)行數(shù)據(jù)交換。首先依據(jù)模型沿著x、y和z方向分配的進(jìn)程數(shù)NPROCX、NPROCY和NPROCZ,利用MPI的創(chuàng)建三維笛卡爾拓?fù)浣Y(jié)構(gòu)的函數(shù)進(jìn)行拓?fù)浣Y(jié)構(gòu)的創(chuàng)建,再利用MPI-3.0的鄰近集合通信函數(shù)一次完成當(dāng)前進(jìn)程與其他相鄰6個(gè)進(jìn)程的交界面數(shù)據(jù)的交換。(11)計(jì)算當(dāng)前時(shí)間片(dt)在當(dāng)前線程模型區(qū)域的應(yīng)力張量。方程及求解如上第(9)步所述。(12)等待進(jìn)程內(nèi)所有線程計(jì)算結(jié)束,以及把進(jìn)程的模型區(qū)域的邊界應(yīng)力張量,使用鄰近集合通信在新構(gòu)建的三維笛卡爾拓?fù)浣Y(jié)構(gòu)中進(jìn)行數(shù)據(jù)交換。例如,首先依據(jù)模型沿著x、y和z方向分配的進(jìn)程數(shù)NPROCX、NPROCY和NPROCZ,利用MPI的創(chuàng)建三維笛卡爾拓?fù)浣Y(jié)構(gòu)的函數(shù)進(jìn)行拓?fù)浣Y(jié)構(gòu)的 創(chuàng)建,再利用MPI-3.0的鄰近集合通信函數(shù)一次完成當(dāng)前進(jìn)程與其他相鄰6個(gè)進(jìn)程的交界面數(shù)據(jù)的交換。(13)根據(jù)需要,在實(shí)施方式中還可以存儲(chǔ)波場快照和地震記錄等相關(guān)數(shù)據(jù)然后跳轉(zhuǎn)到(6)或(8)繼續(xù)執(zhí)行。存儲(chǔ)數(shù)據(jù)可以包括:波場快照數(shù)據(jù),x、y、z三個(gè)方向質(zhì)點(diǎn)速度的波場快照及地震記錄數(shù)據(jù),應(yīng)力張量的波場快照及地震記錄數(shù)據(jù),旋度的波場快照及地震記錄數(shù)據(jù),散度的波場快照及地震記錄數(shù)據(jù)。(14)計(jì)算結(jié)束,釋放各節(jié)點(diǎn)進(jìn)程的資源。本發(fā)明描述了一種利用計(jì)算機(jī)的并行優(yōu)化技術(shù)來達(dá)到提高計(jì)算效率的方法,通過采用多線程和多進(jìn)程的并行技術(shù),對(duì)數(shù)據(jù)域進(jìn)行了進(jìn)程內(nèi)的線程并行計(jì)算,在一定程度上優(yōu)化了交錯(cuò)網(wǎng)格有限差分正演模擬方法的并行效率,提高了三維地震波動(dòng)方程數(shù)值求解的計(jì)算效率。上述技術(shù)方案只是本發(fā)明的一種實(shí)施方式,對(duì)于本領(lǐng)域內(nèi)的技術(shù)人員而言,在本發(fā)明公開了應(yīng)用方法和原理的基礎(chǔ)上,很容易做出各種類型的改進(jìn)或變形,而不僅限于本發(fā)明上述具體實(shí)施方式所描述的方法,因此前面描述的方式只是優(yōu)選的,而并不具有限制性的意義。以上結(jié)合附圖詳細(xì)描述了本發(fā)明的優(yōu)選實(shí)施方式,但是,本發(fā)明并不限于上述實(shí)施方式中的具體細(xì)節(jié),在本發(fā)明的技術(shù)構(gòu)思范圍內(nèi),可以對(duì)本發(fā)明的技術(shù)方案進(jìn)行多種簡單變型,這些簡單變型均屬于本發(fā)明的保護(hù)范圍。另外需要說明的是,在上述具體實(shí)施方式中所描述的各個(gè)具體技術(shù)特征,在不矛盾的情況下,可以通過任何合適的方式進(jìn)行組合。為了避免不必要的重復(fù),本發(fā)明對(duì)各種可能的組合方式不再另行說明。此外,本發(fā)明的各種不同的實(shí)施方式之間也可以進(jìn)行任意組合,只要其不違背本發(fā)明的思想,其同樣應(yīng)當(dāng)視為本發(fā)明所公開的內(nèi)容。當(dāng)前第1頁1 2 3