4

球面調和関数を立方デカルト グリッドに補間しようとしています。

球状の疑似スペクトル シミュレーションの出力データには、と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)/2l(の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 に依存しない、スタンドアロンのより直接的な方法が必要です。

これをどのように行うことができるかについて何か考えはありますか? 私はオープンソースのライブラリを使用したいと思っていますが、そうしなくてもよかったと思っています。

前もって感謝します!

4

1 に答える 1

5

これにはライブラリを使用することを強くお勧めします。球面調和関数変換を効率的かつ正確に行うのは難しく、最初の試みが既存のルーチンと同じようにうまくいく可能性は低いです。

同僚が非常に高く評価しているライブラリの 1 つにSHTnsがあります。これは、合成 (逆変換) と任意の点での補間 (任意のシェルの) の両方を行います。Fortranバインディングがあります。何らかの方法で、複数の放射状シェルを自分で処理する必要があります (おそらく、現在行っていることを行うことによって、すべてを球状グリッドに変換し、標準の補間方法を使用して立方体グリッドに到達します)。これを正しく行うのは少し難しいですが、球面調和関数の変換部分よりもはるかに簡単です。

于 2014-06-20T22:17:32.033 に答える