Public Instance methods
Interpolate_w( w_data, alon, alat ) result(Interpolate_array00_w)
Function : |
|
Interpolate_array00_w : | real(8)
|
w_data(2*(nm-m+1)) : | real(8), intent(IN)
|
alon : | real(8), intent(IN)
|
alat : | real(8), intent(IN)
|
緯度 alat, 経度 alon における関数値を その球面調和変換係数 w_data
から補間計算する
Original external subprogram is w_wave_module_sjpack#Interpolate_w
a_Interpolate_wa( wa_data, alon, alat ) result(a_Interpolate_array00_wa)
Function : |
|
a_Interpolate_array00_wa(size(wa_data,2)) : | real(8)
|
wa_data(:,:) : | real(8), intent(IN)
|
alon : | real(8), intent(IN)
|
alat : | real(8), intent(IN)
|
緯度 alon, 経度 alat における関数値を その球面調和変換係数 wa_data
から補間計算する
Original external subprogram is wa_wave_interpolate_module_sjpack#a_Interpolate_wa
l_nm( n, marray ) result(l_nm_array01)
Function : |
|
l_nm_array01(size(marray)) : | integer
|
n : | integer, intent(in)
|
marray(:) : | integer, intent(in)
|
スペクトルデータの格納位置
全波数(n)と東西波数(m)からそのスペクトルデータの格納位置を返す.
第 1 引数 n が整数, 第 2 引数 marray が整数 1 次元配列の場合, marray
と同じ大きさの 1 次元整数配列を返す.
Original external subprogram is w_wave_module_sjpack#l_nm
l_nm( n_in, m_in ) result(l_nm_array00)
Function : |
|
l_nm_array00 : | integer
|
n_in : | integer, intent(in)
|
m_in : | integer, intent(in)
|
全波数(n)と東西波数(m)からそのスペクトルデータの格納位置を返す.
引数 n,m がともに整数値の場合, 整数値を返す.
Original external subprogram is w_wave_module_sjpack#l_nm
l_nm( narray, m_in ) result(l_nm_array10)
Function : |
|
l_nm_array10(size(narray)) : | integer
|
narray(:) : | integer, intent(in)
|
m_in : | integer, intent(in)
|
全波数(n)と東西波数(m)からそのスペクトルデータの格納位置を返す.
第 1 引数 narray が整数 1 次元配列, 第 2 引数 m が整数の場合, narray
と同じ大きさの 1 次元整数配列を返す.
Original external subprogram is w_wave_module_sjpack#l_nm
l_nm( narray, marray ) result(l_nm_array11)
Function : |
|
l_nm_array11(size(narray)) : | integer
|
narray(:) : | integer, intent(in)
|
marray(:) : | integer, intent(in)
|
全波数(n)と東西波数(m)からそのスペクトルデータの格納位置を返す.
第 1,2 引数 narray, marray がともに整数 1 次元配列の場合, narray, marray
と同じ大きさの 1 次元整数配列を返す. narray, marray
は同じ大きさでなければならない.
Original external subprogram is w_wave_module_sjpack#l_nm
nm_l( l ) result(nm_l_int)
Function : |
|
nm_l_int(2) : | integer
|
l : | integer, intent(in)
|
スペクトルデータの格納位置(l)から全波数(n)と東西波数(m)を返す.
引数 l が整数値の場合, 対応する全波数と帯状波数を 長さ 2 の 1
次元整数値を返す. nm_l(1)
が全波数, nm_l(2)
が帯状波数である.
Original external subprogram is w_wave_module_sjpack#nm_l
nm_l( larray ) result(nm_l_array)
Function : |
|
nm_l_array(size(larray),2) : | integer
|
larray(:) : | integer, intent(in)
|
スペクトルデータの格納位置(l)から全波数(n)と東西波数(m)を返す.
引数 larray が整数 1 次元配列の場合, larray に対応する n, m を格納した 2
次元整数配列を返す. nm_l_array(:,1) が全波数, nm_l_array(:,2)
が帯状波数である.
Original external subprogram is w_wave_module_sjpack#nm_l
rn
Variable : |
|
rn(:,:) : | real(8), allocatable
: | ラプラシアン演算用配列(w_module
と互換性を保つため)
スペクトルデータのラプラシアンを計算するための係数
配列のサイズは(2*(nm-m+1), 2)
r(L,1) には L 番目の格納位置のスペクトルに対するラプラシアン計算の 係数
-n(n+1) の値が格納されている.
|
|
Original external subprogram is w_wave_module_sjpack#rn
w_DLon_w( w_data ) result(w_DLon_w)
Function : |
|
w_DLon_w(2*(nn-m+1)) : | real(8)
: | (out) 入力スペクトルデータのラプラシアン
|
|
w_data(2*(nn-m+1)) : | real(8), intent(in)
|
入力スペクトルデータに経度微分∂/∂λを作用する.
スペクトルデータの経度微分とは, 対応する格子点データに
経度微分を作用させたデータのスペクトル変換のことである.
Original external subprogram is w_wave_module_sjpack#w_DLon_w
w_DivLat_xy( xy_data ) result(w_DivLat_xy)
Function : |
|
w_DivLat_xy(2*(nm-m+1)) : | real(8)
: | (out) 格子点データを発散型緯度微分したスペクトルデータ
|
|
xy_data(0:im-1,1:jm) : | real(8), intent(in)
|
格子点データに発散型緯度微分 1/cosφ・∂(f cosφ)/∂φ を作用させて
スペクトルデータに変換して返す(1 層用).
Original external subprogram is w_wave_module_sjpack#w_DivLat_xy
w_DivLon_xy( xy_data ) result(w_DivLon_xy)
Function : |
|
w_DivLon_xy(2*(nm-m+1)) : | real(8)
: | (out) 格子点データを発散型経度微分したスペクトルデータ
|
|
xy_data(0:im-1,1:jm) : | real(8), intent(in)
|
格子点データに発散型経度微分 1/cosφ・∂/∂λ を作用させて
スペクトルデータに変換して返す(1 層用).
Original external subprogram is w_wave_module_sjpack#w_DivLon_xy
w_Div_xy_xy( xy_u, xy_v ) result(w_Div_xy_xy)
Function : |
|
w_Div_xy_xy(2*(nm-m+1)) : | real(8)
: | (out) 2 つの入力格子点データをベクトル成分とする発散のスペクトルデータ
|
|
xy_u(0:im-1,1:jm) : | real(8), intent(in)
|
xy_v(0:im-1,1:jm) : | real(8), intent(in)
|
2 つの入力格子点データをベクトル成分とする発散を計算し,
スペクトルデータとして返す(1 層用).
Original external subprogram is w_wave_module_sjpack#w_Div_xy_xy
w_LaplaInv_w( w_data ) result(w_LaplaInv_w)
Function : |
|
w_LaplaInv_w(2*(nm-m+1)) : | real(8)
|
w_data(2*(nm-m+1)) : | real(8), intent(in)
|
入力スペクトルデータに逆ラプラシアン
▽^{-2}
=[1/cos^2φ・∂^2/∂λ^2 + 1/cosφ・∂/∂φ(cosφ∂/∂φ)]^{-1}
を作用する(1 層用).
スペクトルデータの逆ラプラシアンとは, 対応する格子点データに
逆ラプラシアンを作用させたデータのスペクトル変換のことである.
Original external subprogram is w_wave_module_sjpack#w_LaplaInv_w
w_Lapla_w( w_data ) result(w_Lapla_w)
Function : |
|
w_Lapla_w(2*(nm-m+1)) : | real(8)
: | (out) 入力スペクトルデータのラプラシアン
|
|
w_data(2*(nm-m+1)) : | real(8), intent(in)
|
入力スペクトルデータにラプラシアン
▽^2 = 1/cos^2φ・∂^2/∂λ^2 + 1/cosφ・∂/∂φ(cosφ∂/∂φ)
を作用する(1 層用).
スペクトルデータのラプラシアンとは, 対応する格子点データに
ラプラシアンを作用させたデータのスペクトル変換のことである.
Original external subprogram is w_wave_module_sjpack#w_Lapla_w
w_xy( xy_data, [ipow], [iflag] ) result(w_xy)
Function : |
|
w_xy(2*(nn-m+1)) : | real(8)
|
xy_data(0:im-1,1:jm) : | real(8), intent(in)
|
ipow : | integer, intent(in), optional
: | (in) 変換時に同時に作用させる 1/cosφ の次数. 省略時は 0.
|
|
iflag : | integer, intent(in), optional
: | 変換の種類
0 : 通常の正変換
-1 : 経度微分を作用させた正変換
1 : 緯度微分 1/cosφ・∂(f cos^2φ)/∂φ を作用させた正変換
2 : sinφを作用させた正変換
省略時は 0.
|
|
格子データからスペクトルデータへ(正)変換する(1 層用).
Original external subprogram is w_wave_module_sjpack#w_xy
wa_DLon_wa( wa_data ) result(wa_DLon_wa)
Function : |
|
wa_DLon_wa(2*(nm-m+1),size(wa_data,2)) : | real(8)
|
wa_data(:,:) : | real(8), intent(in)
|
スペクトルデータに経度微分 ∂/∂λ を作用させる(多層用).
スペクトルデータの経度微分とは, 対応する格子点データに
経度微分∂/∂λを作用させたデータのスペクトル変換のことである.
Original external subprogram is wa_wave_deriv_module_sjpack#wa_DLon_wa
wa_DivLambda_xya( xya_data ) result(wa_DivLambda_xya)
wa_DivLat_xya( xya_data ) result(wa_DivLat_xya)
Function : |
|
wa_DivLat_xya(2*(nm-m+1),size(xya_data,3)) : | real(8)
: | (out) 格子点データを発散型緯度微分したスペクトルデータ
|
|
xya_data(0:,:,:) : | real(8), intent(in)
|
格子点データに発散型緯度微分 1/cosφ・∂(f cosφ)/∂φ を作用させて
スペクトルデータに変換して返す(多層用).
Original external subprogram is wa_wave_deriv_module_sjpack#wa_DivLat_xya
wa_DivLon_xya( xya_data ) result(wa_DivLon_xya)
wa_DivMu_xya( xya_data ) result(wa_DivMu_xya)
Function : |
|
wa_DivMu_xya(2*(nm-m+1),size(xya_data,3)) : | real(8)
: | (out) 格子点データを発散型緯度微分したスペクトルデータ
|
|
xya_data(0:,:,:) : | real(8), intent(in)
|
格子点データに発散型緯度微分 ∂/∂μ (μ=sinφ)を作用させて
スペクトルデータに変換して返す(多層用).
Original external subprogram is wa_wave_deriv_module_sjpack#wa_DivMu_xya
wa_Div_xya_xya( xya_u, xya_v ) result(wa_Div_xya_xya)
Function : |
|
wa_Div_xya_xya((nm+1)**2,size(xya_u,3)) : | real(8)
: | (out) 2 つの入力格子点データをベクトル成分とする発散のスペクトルデータ
|
|
xya_u(0:,:,:) : | real(8), intent(in)
|
xya_v(0:,:,:) : | real(8), intent(in)
|
2 つの入力格子点データをベクトル成分とする発散を計算し,
スペクトルデータとして返す(多層用).
Original external subprogram is wa_wave_deriv_module_sjpack#wa_Div_xya_xya
モジュールの終了処理(割り付け配列の解放)をおこなう.
解像度を変更する際にはこのサブルーチンを呼んで終了処理を
おこなったのちに再度 wa_Initial
で初期設定しなければ ならない.
[Source]
subroutine wa_Finalize
!
! モジュールの終了処理(割り付け配列の解放)をおこなう.
!
! 解像度を変更する際にはこのサブルーチンを呼んで終了処理を
! おこなったのちに再度 wa_Initial で初期設定しなければ
! ならない.
!
call w_Finalize
call wa_base_Finalize
call MessageNotify('M','wa_Finalize', 'wa_wave_module_sjpack (2014/05/18) is finalized')
end subroutine wa_Finalize
Subroutine : |
|
n_in : | integer,intent(in)
|
m_in : | integer,intent(in)
|
i_in : | integer,intent(in)
|
j_in : | integer,intent(in)
|
k_in : | integer,intent(in)
|
スペクトル変換の格子点数, 波数, 最大データ数(層数)および OPENMP
使用時の最大スレッド数を設定する.
他の関数を呼ぶ前に, 最初にこのサブルーチンを呼んで初期設定を
しなければならない.
SNPACK 用 wa_initial
との互換性のために引数 k_in が用意されているが,
このパラメターによって同時に処理できる変数の数(層数)を制限される事はない.
[Source]
subroutine wa_Initial(n_in,m_in,i_in,j_in,k_in)
!
! スペクトル変換の格子点数, 波数, 最大データ数(層数)および
! OPENMP 使用時の最大スレッド数を設定する.
!
! 他の関数を呼ぶ前に, 最初にこのサブルーチンを呼んで初期設定を
! しなければならない.
!
! SNPACK 用 wa_initial との互換性のために引数 k_in が用意されているが,
! このパラメターによって同時に処理できる変数の数(層数)を制限される事はない.
!
integer,intent(in) :: i_in ! 格子点数(東西)
integer,intent(in) :: j_in ! 格子点数(南北)
integer,intent(in) :: n_in ! 切断波数
integer,intent(in) :: m_in ! 東西波数
integer,intent(in) :: k_in ! 最大データ数(層数)
call w_Initial(n_in,m_in,i_in,j_in)
call wa_base_Initial(k_in)
call MessageNotify('M','wa_initial', 'wa_wave_module_sjpack (2014/05/18) is initialized')
end subroutine wa_Initial
wa_LaplaInv_wa( wa_data ) result(wa_LaplaInv_wa)
Function : |
|
wa_LaplaInv_wa(2*(nm-m+1),size(wa_data,2)) : | real(8)
|
wa_data(:,:) : | real(8), intent(in)
|
入力スペクトルデータに逆ラプラシアン
▽^{-2}
=[1/cos^2φ・∂^2/∂λ^2 + 1/cosφ・∂/∂φ(cosφ∂/∂φ)]^{-1}
を作用する(多層用).
スペクトルデータの逆ラプラシアンとは, 対応する格子点データに
逆ラプラシアンを作用させたデータのスペクトル変換のことである.
Original external subprogram is wa_wave_deriv_module_sjpack#wa_LaplaInv_wa
wa_Lapla_wa( wa_data ) result(wa_Lapla_wa)
Function : |
|
wa_data(:,:) : | real(8), intent(in)
|
入力スペクトルデータにラプラシアン
▽^2 = 1/cos^2φ・∂^2/∂λ^2 + 1/cosφ・∂/∂φ(cosφ∂/∂φ)
を作用する(多層用).
スペクトルデータのラプラシアンとは, 対応する格子点データに
ラプラシアンを作用させたデータのスペクトル変換のことである.
Original external subprogram is wa_wave_deriv_module_sjpack#wa_Lapla_wa
wa_xya( xya_data, [ipow], [iflag] ) result(wa_xya)
Function : |
|
wa_xya(2*(nm-m+1),size(xya_data,3)) : | real(8)
: | (out) スペクトルデータ(2*(nm-m+1),:)
|
|
xya_data(0:,:,:) : | real(8), intent(in)
: | (in) 格子点データ(0:im-1,1:jm,:)
|
|
ipow : | integer, intent(in), optional
: | (in) 変換時に同時に作用させる 1/cosφ の次数. 省略時は 0.
|
|
iflag : | integer, intent(in), optional
: | 変換の種類
0 : 通常の正変換
-1 : 経度微分を作用させた正変換
1 : 緯度微分 1/cosφ・∂(f cos^2φ)/∂φ を作用させた正変換
2 : sinφを作用させた正変換
省略時は 0.
|
|
格子点 -> 球面調和関数スペクトル
格子データからスペクトルデータへ(正)変換する(多層用).
Original external subprogram is wa_wave_base_module_sjpack#wa_xya
xy_GradLat_w( w_data ) result(xy_GradLat_w)
Function : |
|
xy_GradLat_w(0:im-1,1:jm) : | real(8)
: | (out) スペクトルデータを勾配型緯度微分した格子点データ
|
|
w_data(2*(nm-m+1)) : | real(8), intent(in)
|
スペクトルデータに勾配型緯度微分 ∂/∂φ を作用させて
格子点データに変換して返す(1 層用).
Original external subprogram is w_wave_module_sjpack#xy_GradLat_w
xy_GradLon_w( w_data ) result(xy_GradLon_w)
Function : |
|
xy_GradLon_w(0:im-1,1:jm) : | real(8)
: | (out) スペクトルデータを勾配型経度微分した格子点データ
|
|
w_data(2*(nm-m+1)) : | real(8), intent(in)
|
スペクトルデータに勾配型経度微分 1/cosφ・∂/∂λ を
作用させた格子点データを返す(1 層用).
Original external subprogram is w_wave_module_sjpack#xy_GradLon_w
xy_w( w_data, [ipow], [iflag] ) result(xy_w)
Function : |
|
xy_w(0:im-1,1:jm) : | real(8)
|
w_data(2*(nn-m+1)) : | real(8), intent(in)
|
ipow : | integer, intent(in), optional
: | (in) 作用させる 1/cosφ の次数. 省略時は 0.
|
|
iflag : | integer, intent(in), optional
: | (in) 変換の種類
0 : 通常の正変換
-1 : 経度微分を作用させた逆変換
1 : 緯度微分 cosφ・∂/∂φ を作用させた逆変換
2 : sinφを作用させた逆変換
省略時は 0.
|
|
スペクトルデータから格子データへ変換する(1 層用).
Original external subprogram is w_wave_module_sjpack#xy_w
xya_GradLambda_wa( wa_data ) result(xya_GradLambda_wa)
xya_GradLat_wa( wa_data ) result(xya_GradLat_wa)
xya_GradLon_wa( wa_data ) result(xya_GradLon_wa)
xya_GradMu_wa( wa_data ) result(xya_GradMu_wa)
xya_wa( wa_data, [ipow], [iflag] ) result(xya_wa)
Function : |
|
xya_wa(0:im-1,1:jm,size(wa_data,2)) : | real(8)
: | (out) 格子点データ(0:im-1,1:jm,:)
|
|
wa_data(:,:) : | real(8), intent(in)
: | (in) スペクトルデータ((nm+1)*(nm+1),:)
|
|
ipow : | integer, intent(in), optional
: | (in) 作用させる 1/cosφ の次数. 省略時は 0.
|
|
iflag : | integer, intent(in), optional
: | (in) 変換の種類
0 : 通常の正変換
-1 : 経度微分を作用させた逆変換
1 : 緯度微分 cosφ・∂/∂φ を作用させた逆変換
2 : sinφを作用させた逆変換
省略時は 0.
|
|
球面調和関数スペクトル -> 格子点
スペクトルデータから格子データへ変換する(多層用).
Original external subprogram is wa_wave_base_module_sjpack#xya_wa