我試圖插入一個立方,笛卡爾網格的球諧函數。如何將(r,球諧)空間中表示的數據插值到常規笛卡爾網格(F90)?
我的球形,僞光譜模擬的輸出數據具有rMin
和rMax
,每個之間Nr
徑向水平包含一組有限次球面諧波爲經度和緯度的。球面諧波通過三角截斷被映射到包含緯度和Nj
經度的物理球形網格。
域如下:
- 徑向水平:
rMin <= r(k) <= rMax
,具有索引1 <= k <= Nr
- 球面諧波(三角截斷,在不脫離變換混疊):
Nm = (Nj-1)/3
0 <= m <= Nm
m <= l <= Nm
nlm == (nm+1)*(nm+2)/2
(的l
總數,m
組合)
數據數組:
- 光譜形式:
complex*16, dimension(1:nlm, 1:Nr) :: foo_spectral
- 笛卡爾形式:
real*8, dimension(1:Nx, 1:Ny, 1:Nz) :: foo_cartesian
I」米尋找一個acc從而將數據從其譜表示內插到具有邊長爲2*rMax
的立方笛卡爾網格,從而使球形域完全適合於內部。然而,我只想在範圍內插入,對於與r<rMin
或rMax<r
對應的點,立方網格應具有OUTSIDE_DOMAIN
值。
目前,我必須從它的頻譜表示的數據(球諧函數:foo(Nr,nlm)
)變換爲物理表示(球形格:foo(Nr,Ni,Nj)
),然後使用在IDL一個QHULL例程從物理的,球形的網格來進行內插物理立方格(foo(Nx,Ny,Nz)
)(注意立方格表示Nx==Ny==Nz
)。
我的數據大小大於我現有的代碼(用IDL編寫)可以處理的大小,並且轉換爲球形空間對於我的目的是不必要的。例如,我想要一個更直接的獨立方法 - 不依賴於IDL。
有關如何做到這一點的任何想法?我願意使用開源庫,但不用必須這樣做。
在此先感謝!
忘記編碼 - 如果有人可以提供一種方法來使用高級數學進行這種轉換,我可以找出使其發生的代碼。 :-) – jvriesem