球面調和関数を立方デカルト グリッドに補間しようとしています。
球状の疑似スペクトル シミュレーションの出力データには、とNr
の間の動径レベルがrMin
ありrMax
、それぞれに経度と緯度の一連の有限次球面調和関数が含まれています。球面調和関数は、三角形の切り捨てによってNi
緯度と経度を含む物理的な球面グリッドにマッピングされます。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
2*rMax
球状ドメインが完全に内側に収まるように、データをスペクトル表現から edge-length の立方デカルト グリッドに補間する正確かつ効率的な方法を探しています。ただし、球内で補間したいだけです。r<rMin
またはに対応する点についてrMax<r
は、立方体グリッドにOUTSIDE_DOMAIN
値が必要です。
現在、データをスペクトル表現 (球面ハーモニクス: foo(Nr,nlm)
) から物理表現 (球面グリッド: ) に変換し、IDL のQHULLfoo(Nr,Ni,Nj)
ルーチンを使用して、物理的な球面グリッドから物理的な立方体グリッド ( ) (立方体グリッドの場合に注意してください)。foo(Nx,Ny,Nz)
Nx==Ny==Nz
私のデータのサイズは既存のコード (IDL で記述) が処理できるサイズよりも大きく、私の目的には球状空間への変換は不要です。たとえば、IDL に依存しない、スタンドアロンのより直接的な方法が必要です。
これをどのように行うことができるかについて何か考えはありますか? 私はオープンソースのライブラリを使用したいと思っていますが、そうしなくてもよかったと思っています。
前もって感謝します!