番外篇7_Geoist之球面網(wǎng)格模型

內(nèi)容摘要:在番外篇1的時(shí)候,我們?cè)?jīng)談到了Tesseroid的單元定義。但是沒有提到怎么生成該單元的網(wǎng)格。該類型網(wǎng)格單元可以直接采用經(jīng)緯度坐標(biāo)來剖分,對(duì)于解決大尺度的問題更方便,因此我們說說網(wǎng)格生成批處理方法,TesseroidMesh類的使用。

1、Tesseroid網(wǎng)格

在Geosit中的inversion模塊mesh.py里的TesseroidMesh類,實(shí)現(xiàn)了Tesseroid單元的自動(dòng)網(wǎng)格剖分。在球坐標(biāo)系下,Tesseroid形式的單元,直接經(jīng)緯度剖分網(wǎng)格即可,不用變換為直角坐標(biāo)。這對(duì)大尺度模型解釋時(shí)候常常是有用的,圖1是該網(wǎng)格的示意圖。

圖1 Tesseroid網(wǎng)格示意圖

2、網(wǎng)格數(shù)據(jù)生成

在Geoist中,inversion模塊下geometry.py定義了各種幾何單元類型,mesh.py是以不同單元剖分網(wǎng)格的批處理類實(shí)現(xiàn)。已經(jīng)實(shí)現(xiàn)的幾種類型見下表。

單元 網(wǎng)格 類型
Prism PrismMesh 六面體
Tesseroid TesseroidMesh 球面六面體
Prism PrismRelief 起伏界面
Square SquareMesh 2D正方形
Sphere PointGrid 點(diǎn)源-球體

實(shí)例化后的網(wǎng)格對(duì)象,都可以通過addprop的方法添加屬性。同時(shí),如果需要得到這個(gè)網(wǎng)格對(duì)象中每個(gè)單元的幾何屬性,也可以使用for循環(huán)通過遍歷實(shí)現(xiàn)(for cell in mesh: ...)。

下面是定義一個(gè)TesseroidMesh,并添加每個(gè)單元屬性的過程。具體代碼如下:

from geoist import gridder
from geoist.pfm import giutils
from geoist.inversion import mesh

w, e = -2, 2
s, n = -2, 2
bounds = (w, e, s, n, 500000, 0)

x, y = gridder.regular((w, e, s, n), (50, 50))
height = (250000 +
          -100000 * giutils.gaussian2d(x, y, 1, 5, x0=-1, y0=-1, angle=-60) +
          250000 * giutils.gaussian2d(x, y, 1, 1, x0=0.8, y0=1.7))

mesh = mesh.TesseroidMesh(bounds, (20, 50, 50))
mesh.addprop('density', (2670 for i in range(mesh.size)))
mesh.carvetopo(x, y, height)    

一句話總結(jié):今天以TesseroidMesh入手,簡單總結(jié)了一下場源剖分常用的單元定義和離散化(網(wǎng)格)剖分方法。地球物理以場求源的過程中,經(jīng)常需要將場源進(jìn)行離散化處理,進(jìn)一步計(jì)算格林函數(shù)矩陣,然后再求解,以上這些內(nèi)容都非?;A(chǔ),萬丈高樓平地起,明白原理和邏輯后,很快你就可以寫出非常優(yōu)秀的代碼啦。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容