Public Instance methods
AvrLat_y( y_data ) result(AvrLat_y)
Function : |
|
AvrLat_y : | real(8)
|
y_data(1:jm) : | real(8), intent(in)
|
1 次元(Y)格子点データの緯度(Y)方向平均.
実際には格子点データ各点毎に y_Y_Weight をかけた総和を計算し, y_Y_Weight
の総和で割ることで平均している.
Original external subprogram is la_module#AvrLat_y
AvrLat_y( y_data ) result(AvrLat_y)
Function : |
|
AvrLat_y : | real(8)
|
y_data(1:jm) : | real(8), intent(in)
|
1 次元(Y)格子点データの緯度(Y)方向平均.
実際には格子点データ各点毎に y_Y_Weight をかけた総和を計算し, y_Y_Weight
の総和で割ることで平均している.
Original external subprogram is la_module#AvrLat_y
AvrLat_y( y_data ) result(AvrLat_y)
Function : |
|
AvrLat_y : | real(8)
|
y_data(1:jm) : | real(8), intent(in)
|
1 次元(Y)格子点データの緯度(Y)方向平均.
実際には格子点データ各点毎に y_Y_Weight をかけた総和を計算し, y_Y_Weight
の総和で割ることで平均している.
Original external subprogram is la_module#AvrLat_y
AvrLat_y( y_data ) result(AvrLat_y)
Function : |
|
AvrLat_y : | real(8)
|
y_data(1:jm) : | real(8), intent(in)
|
1 次元(Y)格子点データの緯度(Y)方向平均.
実際には格子点データ各点毎に y_Y_Weight をかけた総和を計算し, y_Y_Weight
の総和で割ることで平均している.
Original external subprogram is w_zonal_module#AvrLat_y
AvrLat_y( y_data ) result(AvrLat_y)
Function : |
|
AvrLat_y : | real(8)
|
y_data(1:jm) : | real(8), intent(in)
|
1 次元(Y)格子点データの緯度(Y)方向平均.
実際には格子点データ各点毎に y_Y_Weight をかけた総和を計算し, y_Y_Weight
の総和で割ることで平均している.
Original external subprogram is w_zonal_module#AvrLat_y
AvrLat_y( y_data ) result(AvrLat_y)
Function : |
|
AvrLat_y : | real(8)
|
y_data(1:jm) : | real(8), intent(in)
|
1 次元(Y)格子点データの緯度(Y)方向平均.
実際には格子点データ各点毎に y_Y_Weight をかけた総和を計算し, y_Y_Weight
の総和で割ることで平均している.
Original external subprogram is w_zonal_module#AvrLat_y
AvrLonLat_xy( xy_data ) result(AvrLonLat_xy)
Function : |
|
AvrLonLat_xy : | real(8)
|
xy_data(0:im-1,1:jm) : | real(8), intent(in)
|
2 次元緯度経度格子点データの全領域平均(1 層用).
実際には格子点データ各点毎に x_X_Weight, y_Y_Weight をかけた 総和を計算し,
x_X_Weight*y_Y_Weight の総和で割ることで平均している.
Original external subprogram is w_zonal_module#AvrLonLat_xy
AvrLonLat_xy( xy_data ) result(AvrLonLat_xy)
Function : |
|
AvrLonLat_xy : | real(8)
|
xy_data(0:im-1,1:jm) : | real(8), intent(in)
|
2 次元緯度経度格子点データの全領域平均(1 層用).
実際には格子点データ各点毎に x_X_Weight, y_Y_Weight をかけた 総和を計算し,
x_X_Weight*y_Y_Weight の総和で割ることで平均している.
Original external subprogram is w_zonal_module#AvrLonLat_xy
AvrLonLat_xy( xy_data ) result(AvrLonLat_xy)
Function : |
|
AvrLonLat_xy : | real(8)
|
xy_data(0:im-1,1:jm) : | real(8), intent(in)
|
2 次元緯度経度格子点データの全領域平均(1 層用).
実際には格子点データ各点毎に x_X_Weight, y_Y_Weight をかけた 総和を計算し,
x_X_Weight*y_Y_Weight の総和で割ることで平均している.
Original external subprogram is w_zonal_module#AvrLonLat_xy
AvrLon_x( x_data ) result(AvrLon_x)
Function : |
|
AvrLon_x : | real(8)
|
x_data(0:im-1) : | real(8), intent(in)
|
1 次元(X)格子点データの経度(X)方向平均(1 層用).
実際には格子点データ各点毎に x_X_Weight をかけた総和を計算し, x_X_Weight
の総和で割ることで平均している.
Original external subprogram is w_zonal_module#AvrLon_x
AvrLon_x( x_data ) result(AvrLon_x)
Function : |
|
AvrLon_x : | real(8)
|
x_data(0:im-1) : | real(8), intent(in)
|
1 次元(X)格子点データの経度(X)方向平均(1 層用).
実際には格子点データ各点毎に x_X_Weight をかけた総和を計算し, x_X_Weight
の総和で割ることで平均している.
Original external subprogram is w_zonal_module#AvrLon_x
AvrLon_x( x_data ) result(AvrLon_x)
Function : |
|
AvrLon_x : | real(8)
|
x_data(0:im-1) : | real(8), intent(in)
|
1 次元(X)格子点データの経度(X)方向平均(1 層用).
実際には格子点データ各点毎に x_X_Weight をかけた総和を計算し, x_X_Weight
の総和で割ることで平均している.
Original external subprogram is w_zonal_module#AvrLon_x
IntLat_y( y_data ) result(IntLat_y)
Function : |
|
IntLat_y : | real(8)
|
y_data(1:jm) : | real(8), intent(in)
|
1 次元緯度(Y)格子点データの Y 方向積分.
実際には格子点データ各点毎に y_Y_Weight をかけた総和を計算している.
Original external subprogram is la_module#IntLat_y
IntLat_y( y_data ) result(IntLat_y)
Function : |
|
IntLat_y : | real(8)
|
y_data(1:jm) : | real(8), intent(in)
|
1 次元緯度(Y)格子点データの Y 方向積分.
実際には格子点データ各点毎に y_Y_Weight をかけた総和を計算している.
Original external subprogram is la_module#IntLat_y
IntLat_y( y_data ) result(IntLat_y)
Function : |
|
IntLat_y : | real(8)
|
y_data(1:jm) : | real(8), intent(in)
|
1 次元緯度(Y)格子点データの Y 方向積分.
実際には格子点データ各点毎に y_Y_Weight をかけた総和を計算している.
Original external subprogram is la_module#IntLat_y
IntLat_y( y_data ) result(IntLat_y)
Function : |
|
IntLat_y : | real(8)
|
y_data(1:jm) : | real(8), intent(in)
|
1 次元緯度(Y)格子点データの Y 方向積分.
実際には格子点データ各点毎に y_Y_Weight をかけた総和を計算している.
Original external subprogram is w_zonal_module#IntLat_y
IntLat_y( y_data ) result(IntLat_y)
Function : |
|
IntLat_y : | real(8)
|
y_data(1:jm) : | real(8), intent(in)
|
1 次元緯度(Y)格子点データの Y 方向積分.
実際には格子点データ各点毎に y_Y_Weight をかけた総和を計算している.
Original external subprogram is w_zonal_module#IntLat_y
IntLat_y( y_data ) result(IntLat_y)
Function : |
|
IntLat_y : | real(8)
|
y_data(1:jm) : | real(8), intent(in)
|
1 次元緯度(Y)格子点データの Y 方向積分.
実際には格子点データ各点毎に y_Y_Weight をかけた総和を計算している.
Original external subprogram is w_zonal_module#IntLat_y
IntLonLat_xy( xy_data ) result(IntLonLat_xy)
Function : |
|
IntLonLat_xy : | real(8)
|
xy_data(0:im-1,1:jm) : | real(8), intent(in)
: | (in) 2 次元経度緯度格子点データ(0:im-1,1:jm)
|
|
2 次元緯度経度格子点データの全領域積分(1 層用).
実際には格子点データ各点毎に x_X_Weight, y_Y_Weight をかけた
総和を計算している.
Original external subprogram is w_zonal_module#IntLonLat_xy
IntLonLat_xy( xy_data ) result(IntLonLat_xy)
Function : |
|
IntLonLat_xy : | real(8)
|
xy_data(0:im-1,1:jm) : | real(8), intent(in)
: | (in) 2 次元経度緯度格子点データ(0:im-1,1:jm)
|
|
2 次元緯度経度格子点データの全領域積分(1 層用).
実際には格子点データ各点毎に x_X_Weight, y_Y_Weight をかけた
総和を計算している.
Original external subprogram is w_zonal_module#IntLonLat_xy
IntLonLat_xy( xy_data ) result(IntLonLat_xy)
Function : |
|
IntLonLat_xy : | real(8)
|
xy_data(0:im-1,1:jm) : | real(8), intent(in)
: | (in) 2 次元経度緯度格子点データ(0:im-1,1:jm)
|
|
2 次元緯度経度格子点データの全領域積分(1 層用).
実際には格子点データ各点毎に x_X_Weight, y_Y_Weight をかけた
総和を計算している.
Original external subprogram is w_zonal_module#IntLonLat_xy
IntLon_x( x_data ) result(IntLon_x)
Function : |
|
IntLon_x : | real(8)
|
x_data(0:im-1) : | real(8), intent(in)
|
1 次元経度(X)格子点データの X 方向積分(1 層用).
実際には格子点データ各点毎に x_X_Weight をかけた総和を計算している.
Original external subprogram is w_zonal_module#IntLon_x
IntLon_x( x_data ) result(IntLon_x)
Function : |
|
IntLon_x : | real(8)
|
x_data(0:im-1) : | real(8), intent(in)
|
1 次元経度(X)格子点データの X 方向積分(1 層用).
実際には格子点データ各点毎に x_X_Weight をかけた総和を計算している.
Original external subprogram is w_zonal_module#IntLon_x
IntLon_x( x_data ) result(IntLon_x)
Function : |
|
IntLon_x : | real(8)
|
x_data(0:im-1) : | real(8), intent(in)
|
1 次元経度(X)格子点データの X 方向積分(1 層用).
実際には格子点データ各点毎に x_X_Weight をかけた総和を計算している.
Original external subprogram is w_zonal_module#IntLon_x
Interpolate_w( w_data, alon, alat ) result(Interpolate_w)
Interpolate_w( w_data, alon, alat ) result(Interpolate_w)
Interpolate_w( w_data, alon, alat ) result(Interpolate_w)
a_AvrLat_ya( ya_data ) result(a_AvrLat_ya)
Function : |
|
a_AvrLat_ya(size(ya_data,2)) : | real(8)
|
ya_data(:,:) : | real(8), intent(in)
: | (in) 緯度鉛直格子点データ(1:jm,:)
|
|
2 次元緯度鉛直格子点データの緯度(Y)方向平均.
実際には格子点データ各点毎に y_Y_Weight をかけた総和を計算し, y_Y_Weight
の総和で割ることで平均している.
Original external subprogram is la_module#a_AvrLat_ya
a_AvrLat_ya( ya_data ) result(a_AvrLat_ya)
Function : |
|
a_AvrLat_ya(size(ya_data,2)) : | real(8)
|
ya_data(:,:) : | real(8), intent(in)
: | (in) 緯度鉛直格子点データ(1:jm,:)
|
|
2 次元緯度鉛直格子点データの緯度(Y)方向平均.
実際には格子点データ各点毎に y_Y_Weight をかけた総和を計算し, y_Y_Weight
の総和で割ることで平均している.
Original external subprogram is la_module#a_AvrLat_ya
a_AvrLat_ya( ya_data ) result(a_AvrLat_ya)
Function : |
|
a_AvrLat_ya(size(ya_data,2)) : | real(8)
|
ya_data(:,:) : | real(8), intent(in)
: | (in) 緯度鉛直格子点データ(1:jm,:)
|
|
2 次元緯度鉛直格子点データの緯度(Y)方向平均.
実際には格子点データ各点毎に y_Y_Weight をかけた総和を計算し, y_Y_Weight
の総和で割ることで平均している.
Original external subprogram is la_module#a_AvrLat_ya
Function : |
|
a_AvrLonLat_xya(size(xya_data,3)) : | real(8)
|
xya_data(0:,:,:) : | real(8), intent(in)
: | (in) 2 次元経度緯度格子点データの並び(0:im-1,1:jm,*)
|
|
2 次元緯度経度格子点データの全領域平均(多層用).
実際には格子点データ各点毎に x_X_Weight, y_Y_Weight をかけた 総和を計算し,
x_X_Weight*y_Y_Weight の総和で割ることで平均している.
[Source]
function a_AvrLonLat_xya(xya_data)
!
! 2 次元緯度経度格子点データの全領域平均(多層用).
!
! 実際には格子点データ各点毎に x_X_Weight, y_Y_Weight をかけた
! 総和を計算し, x_X_Weight*y_Y_Weight の総和で割ることで平均している.
!
real(8), intent(in) :: xya_data(0:,:,:)
!(in) 2 次元経度緯度格子点データの並び(0:im-1,1:jm,*)
real(8) :: a_AvrLonLat_xya(size(xya_data,3))
!(out) 平均値の並び(*)
a_AvrLonLat_xya = a_AvrLon_xa(xa_AvrLat_xya(xya_data))
end function a_AvrLonLat_xya
Function : |
|
a_AvrLonLat_xya(size(xya_data,3)) : | real(8)
|
xya_data(0:,:,:) : | real(8), intent(in)
: | (in) 2 次元経度緯度格子点データの並び(0:im-1,1:jm,*)
|
|
2 次元緯度経度格子点データの全領域平均(多層用).
実際には格子点データ各点毎に x_X_Weight, y_Y_Weight をかけた 総和を計算し,
x_X_Weight*y_Y_Weight の総和で割ることで平均している.
[Source]
function a_AvrLonLat_xya(xya_data)
!
! 2 次元緯度経度格子点データの全領域平均(多層用).
!
! 実際には格子点データ各点毎に x_X_Weight, y_Y_Weight をかけた
! 総和を計算し, x_X_Weight*y_Y_Weight の総和で割ることで平均している.
!
real(8), intent(in) :: xya_data(0:,:,:)
!(in) 2 次元経度緯度格子点データの並び(0:im-1,1:jm,*)
real(8) :: a_AvrLonLat_xya(size(xya_data,3))
!(out) 平均値の並び(*)
a_AvrLonLat_xya = a_AvrLon_xa(xa_AvrLat_xya(xya_data))
end function a_AvrLonLat_xya
Function : |
|
a_AvrLon_xa(size(xa_data,2)) : | real(8)
|
xa_data(0:,:) : | real(8), intent(in)
: | (in) 1 次元経度(X)格子点データの並び(0:im-1,*)
|
|
経度平均
1 次元(X)格子点データの経度(X)方向平均(多層用).
実際には格子点データ各点毎に x_X_Weight をかけた総和を計算し, x_X_Weight
の総和で割ることで平均している.
[Source]
function a_AvrLon_xa(xa_data) ! 経度平均
!
! 1 次元(X)格子点データの経度(X)方向平均(多層用).
!
! 実際には格子点データ各点毎に x_X_Weight をかけた総和を計算し,
! x_X_Weight の総和で割ることで平均している.
!
real(8), intent(in) :: xa_data(0:,:)
!(in) 1 次元経度(X)格子点データの並び(0:im-1,*)
real(8) :: a_AvrLon_xa(size(xa_data,2))
!(out) 平均値の並び(*)
a_AvrLon_xa = a_IntLon_xa(xa_data)/sum(x_Lon_Weight)
end function a_AvrLon_xa
Function : |
|
a_AvrLon_xa(size(xa_data,2)) : | real(8)
|
xa_data(0:,:) : | real(8), intent(in)
: | (in) 1 次元経度(X)格子点データの並び(0:im-1,*)
|
|
経度平均
1 次元(X)格子点データの経度(X)方向平均(多層用).
実際には格子点データ各点毎に x_X_Weight をかけた総和を計算し, x_X_Weight
の総和で割ることで平均している.
[Source]
function a_AvrLon_xa(xa_data) ! 経度平均
!
! 1 次元(X)格子点データの経度(X)方向平均(多層用).
!
! 実際には格子点データ各点毎に x_X_Weight をかけた総和を計算し,
! x_X_Weight の総和で割ることで平均している.
!
real(8), intent(in) :: xa_data(0:,:)
!(in) 1 次元経度(X)格子点データの並び(0:im-1,*)
real(8) :: a_AvrLon_xa(size(xa_data,2))
!(out) 平均値の並び(*)
a_AvrLon_xa = a_IntLon_xa(xa_data)/sum(x_Lon_Weight)
end function a_AvrLon_xa
a_IntLat_ya( ya_data ) result(a_IntLat_ya)
Function : |
|
a_IntLat_ya(size(ya_data,2)) : | real(8)
|
ya_data(:,:) : | real(8), intent(in)
: | (in) 緯度鉛直格子点データ(1:jm,:)
|
|
2 次元緯度鉛直格子点データの緯度方向積分.
実際には格子点データ各点毎に y_Y_Weight をかけた総和を計算している.
Original external subprogram is la_module#a_IntLat_ya
a_IntLat_ya( ya_data ) result(a_IntLat_ya)
Function : |
|
a_IntLat_ya(size(ya_data,2)) : | real(8)
|
ya_data(:,:) : | real(8), intent(in)
: | (in) 緯度鉛直格子点データ(1:jm,:)
|
|
2 次元緯度鉛直格子点データの緯度方向積分.
実際には格子点データ各点毎に y_Y_Weight をかけた総和を計算している.
Original external subprogram is la_module#a_IntLat_ya
a_IntLat_ya( ya_data ) result(a_IntLat_ya)
Function : |
|
a_IntLat_ya(size(ya_data,2)) : | real(8)
|
ya_data(:,:) : | real(8), intent(in)
: | (in) 緯度鉛直格子点データ(1:jm,:)
|
|
2 次元緯度鉛直格子点データの緯度方向積分.
実際には格子点データ各点毎に y_Y_Weight をかけた総和を計算している.
Original external subprogram is la_module#a_IntLat_ya
Function : |
|
a_IntLonLat_xya(size(xya_data,3)) : | real(8)
|
xya_data(0:,:,:) : | real(8), intent(in)
: | (in) 2 次元経度緯度格子点データの並び(0:im-1,1:jm,*)
|
|
2 次元緯度経度格子点データの全領域積分(多層用).
実際には格子点データ各点毎に x_X_Weight, y_Y_Weight をかけた
総和を計算している.
[Source]
function a_IntLonLat_xya(xya_data)
!
! 2 次元緯度経度格子点データの全領域積分(多層用).
!
! 実際には格子点データ各点毎に x_X_Weight, y_Y_Weight をかけた
! 総和を計算している.
!
real(8), intent(in) :: xya_data(0:,:,:)
!(in) 2 次元経度緯度格子点データの並び(0:im-1,1:jm,*)
real(8) :: a_IntLonLat_xya(size(xya_data,3))
!(out) 積分されたデータの並び(*)
a_IntLonLat_xya = a_IntLon_xa(xa_IntLat_xya(xya_data))
end function a_IntLonLat_xya
Function : |
|
a_IntLonLat_xya(size(xya_data,3)) : | real(8)
|
xya_data(0:,:,:) : | real(8), intent(in)
: | (in) 2 次元経度緯度格子点データの並び(0:im-1,1:jm,*)
|
|
2 次元緯度経度格子点データの全領域積分(多層用).
実際には格子点データ各点毎に x_X_Weight, y_Y_Weight をかけた
総和を計算している.
[Source]
function a_IntLonLat_xya(xya_data)
!
! 2 次元緯度経度格子点データの全領域積分(多層用).
!
! 実際には格子点データ各点毎に x_X_Weight, y_Y_Weight をかけた
! 総和を計算している.
!
real(8), intent(in) :: xya_data(0:,:,:)
!(in) 2 次元経度緯度格子点データの並び(0:im-1,1:jm,*)
real(8) :: a_IntLonLat_xya(size(xya_data,3))
!(out) 積分されたデータの並び(*)
a_IntLonLat_xya = a_IntLon_xa(xa_IntLat_xya(xya_data))
end function a_IntLonLat_xya
Function : |
|
a_IntLon_xa(size(xa_data,2)) : | real(8)
|
xa_data(0:,:) : | real(8), intent(in)
: | (in) 1 次元経度(X)格子点データの並び(0:im-1,*)
|
|
経度積分
1 次元経度(X)格子点データの X 方向積分(多層用).
実際には格子点データ各点毎に x_X_Weight をかけた総和を計算している.
[Source]
function a_IntLon_xa(xa_data) ! 経度積分
!
! 1 次元経度(X)格子点データの X 方向積分(多層用).
!
! 実際には格子点データ各点毎に x_X_Weight をかけた総和を計算している.
!
real(8), intent(in) :: xa_data(0:,:)
!(in) 1 次元経度(X)格子点データの並び(0:im-1,*)
real(8) :: a_IntLon_xa(size(xa_data,2))
!(out) 積分値の並び(*)
integer :: i
a_IntLon_xa = 0.0D0
do i=0,im-1
a_IntLon_xa = a_IntLon_xa + xa_data(i,:) * x_Lon_Weight(i)
enddo
end function a_IntLon_xa
Function : |
|
a_IntLon_xa(size(xa_data,2)) : | real(8)
|
xa_data(0:,:) : | real(8), intent(in)
: | (in) 1 次元経度(X)格子点データの並び(0:im-1,*)
|
|
経度積分
1 次元経度(X)格子点データの X 方向積分(多層用).
実際には格子点データ各点毎に x_X_Weight をかけた総和を計算している.
[Source]
function a_IntLon_xa(xa_data) ! 経度積分
!
! 1 次元経度(X)格子点データの X 方向積分(多層用).
!
! 実際には格子点データ各点毎に x_X_Weight をかけた総和を計算している.
!
real(8), intent(in) :: xa_data(0:,:)
!(in) 1 次元経度(X)格子点データの並び(0:im-1,*)
real(8) :: a_IntLon_xa(size(xa_data,2))
!(out) 積分値の並び(*)
integer :: i
a_IntLon_xa = 0.0D0
do i=0,im-1
a_IntLon_xa = a_IntLon_xa + xa_data(i,:) * x_Lon_Weight(i)
enddo
end function a_IntLon_xa
Function : |
|
a_Interpolate_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
から補間計算する
[Source]
function a_Interpolate_wa(wa_data,alon,alat)
!
! 緯度 alon, 経度 alat における関数値を
! その球面調和変換係数 wa_data から補間計算する
!
real(8), intent(IN) :: wa_data(:,:) ! スペクトルデータ
real(8), intent(IN) :: alon ! 補間する位置(経度)
real(8), intent(IN) :: alat ! 補間する位置(緯度)
real(8) :: a_Interpolate_wa(size(wa_data,2)) ! 補間した値
integer :: k
do k=1,size(wa_data,2)
a_Interpolate_wa(k) = Interpolate_w(wa_data(:,k),alon,alat)
enddo
end function a_Interpolate_wa
Function : |
|
a_Interpolate_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
から補間計算する
[Source]
function a_Interpolate_wa(wa_data,alon,alat)
!
! 緯度 alon, 経度 alat における関数値を
! その球面調和変換係数 wa_data から補間計算する
!
real(8), intent(IN) :: wa_data(:,:) ! スペクトルデータ
real(8), intent(IN) :: alon ! 補間する位置(経度)
real(8), intent(IN) :: alat ! 補間する位置(緯度)
real(8) :: a_Interpolate_wa(size(wa_data,2)) ! 補間した値
integer :: k
do k=1,size(wa_data,2)
a_Interpolate_wa(k) = Interpolate_w(wa_data(:,k),alon,alat)
enddo
end function a_Interpolate_wa
l_nm( n, m ) result(l_nm_array00)
Function : |
|
l_nm_array00 : | integer
|
n : | integer, intent(in)
|
m : | integer, intent(in)
|
全波数(n)と東西波数(m,ダミー)からそのスペクトルデータの格納位置を返す.
引数 n,m がともに整数値の場合, 整数値を返す.
Original external subprogram is w_zonal_module#l_nm
l_nm( n, m ) result(l_nm_array00)
Function : |
|
l_nm_array00 : | integer
|
n : | integer, intent(in)
|
m : | integer, intent(in)
|
全波数(n)と東西波数(m,ダミー)からそのスペクトルデータの格納位置を返す.
引数 n,m がともに整数値の場合, 整数値を返す.
Original external subprogram is w_zonal_module#l_nm
l_nm( n, m ) result(l_nm_array00)
Function : |
|
l_nm_array00 : | integer
|
n : | integer, intent(in)
|
m : | integer, intent(in)
|
全波数(n)と東西波数(m,ダミー)からそのスペクトルデータの格納位置を返す.
引数 n,m がともに整数値の場合, 整数値を返す.
Original external subprogram is w_zonal_module#l_nm
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_zonal_module#l_nm
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_zonal_module#l_nm
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_zonal_module#l_nm
l_nm( narray, m ) result(l_nm_array10)
Function : |
|
l_nm_array10(size(narray)) : | integer
|
narray(:) : | integer, intent(in)
|
m : | integer, intent(in)
|
全波数(n)と東西波数(m,ダミー)からそのスペクトルデータの格納位置を返す.
第 1 引数 narray が整数 1 次元配列, 第 2 引数 m が整数の場合, narray
と同じ大きさの 1 次元整数配列を返す.
Original external subprogram is w_zonal_module#l_nm
l_nm( narray, m ) result(l_nm_array10)
Function : |
|
l_nm_array10(size(narray)) : | integer
|
narray(:) : | integer, intent(in)
|
m : | integer, intent(in)
|
全波数(n)と東西波数(m,ダミー)からそのスペクトルデータの格納位置を返す.
第 1 引数 narray が整数 1 次元配列, 第 2 引数 m が整数の場合, narray
と同じ大きさの 1 次元整数配列を返す.
Original external subprogram is w_zonal_module#l_nm
l_nm( narray, m ) result(l_nm_array10)
Function : |
|
l_nm_array10(size(narray)) : | integer
|
narray(:) : | integer, intent(in)
|
m : | integer, intent(in)
|
全波数(n)と東西波数(m,ダミー)からそのスペクトルデータの格納位置を返す.
第 1 引数 narray が整数 1 次元配列, 第 2 引数 m が整数の場合, narray
と同じ大きさの 1 次元整数配列を返す.
Original external subprogram is w_zonal_module#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_zonal_module#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_zonal_module#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_zonal_module#l_nm
n_EnergyFromStreamfunc_w( w_Strfunc ) result(n_EnergyFromStreamfunc_w)
Function : |
|
n_EnergyFromStreamfunc_w : | real(8), dimension(0:nm)
: | (out) エネルギースペクトル (水平全波数 n 空間)
|
|
w_Strfunc(:) : | real(8), intent(in)
|
流線関数のスペクトルデータから各全波数のエネルギー成分(スペクトル)を
計算する(1 層用).
* 全波数 n の流線関数のスペクトル成分ψ(n,m) から
エネルギースペクトルはΣ[m=-nm]^nm(1/2)n(n+1)ψ(n,m)^2
と計算される.
* 全てのエネルギースペクトル成分の和に 4πをかけたものが
球面上での全エネルギーに等しい.
Original external subprogram is w_zonal_module#n_EnergyFromStreamfunc_w
n_EnergyFromStreamfunc_w( w_Strfunc ) result(n_EnergyFromStreamfunc_w)
Function : |
|
n_EnergyFromStreamfunc_w : | real(8), dimension(0:nm)
: | (out) エネルギースペクトル (水平全波数 n 空間)
|
|
w_Strfunc(:) : | real(8), intent(in)
|
流線関数のスペクトルデータから各全波数のエネルギー成分(スペクトル)を
計算する(1 層用).
* 全波数 n の流線関数のスペクトル成分ψ(n,m) から
エネルギースペクトルはΣ[m=-nm]^nm(1/2)n(n+1)ψ(n,m)^2
と計算される.
* 全てのエネルギースペクトル成分の和に 4πをかけたものが
球面上での全エネルギーに等しい.
Original external subprogram is w_zonal_module#n_EnergyFromStreamfunc_w
n_EnergyFromStreamfunc_w( w_Strfunc ) result(n_EnergyFromStreamfunc_w)
Function : |
|
n_EnergyFromStreamfunc_w : | real(8), dimension(0:nm)
: | (out) エネルギースペクトル (水平全波数 n 空間)
|
|
w_Strfunc(:) : | real(8), intent(in)
|
流線関数のスペクトルデータから各全波数のエネルギー成分(スペクトル)を
計算する(1 層用).
* 全波数 n の流線関数のスペクトル成分ψ(n,m) から
エネルギースペクトルはΣ[m=-nm]^nm(1/2)n(n+1)ψ(n,m)^2
と計算される.
* 全てのエネルギースペクトル成分の和に 4πをかけたものが
球面上での全エネルギーに等しい.
Original external subprogram is w_zonal_module#n_EnergyFromStreamfunc_w
n_EnstrophyFromStreamfunc_w( w_Strfunc ) result(n_EnstrophyFromStreamfunc_w)
流線関数のスペクトルデータから各全波数のエネルギー成分(スペクトル)を
計算する(1 層用)
- 全波数 n の流線関数のスペクトル成分ψ(n,m) からエンストロフィー
スペクトルはΣ[m=-nm]^nm(1/2)n^2(n+1)^2ψ(n,m)^2 と計算される.
- 全てのエネルギースペクトル成分の和に 4π/R^2 をかけたものが
球面上での全エンストフィーに等しい.
Original external subprogram is w_zonal_module#n_EnstrophyFromStreamfunc_w
n_EnstrophyFromStreamfunc_w( w_Strfunc ) result(n_EnstrophyFromStreamfunc_w)
流線関数のスペクトルデータから各全波数のエネルギー成分(スペクトル)を
計算する(1 層用)
- 全波数 n の流線関数のスペクトル成分ψ(n,m) からエンストロフィー
スペクトルはΣ[m=-nm]^nm(1/2)n^2(n+1)^2ψ(n,m)^2 と計算される.
- 全てのエネルギースペクトル成分の和に 4π/R^2 をかけたものが
球面上での全エンストフィーに等しい.
Original external subprogram is w_zonal_module#n_EnstrophyFromStreamfunc_w
n_EnstrophyFromStreamfunc_w( w_Strfunc ) result(n_EnstrophyFromStreamfunc_w)
流線関数のスペクトルデータから各全波数のエネルギー成分(スペクトル)を
計算する(1 層用)
- 全波数 n の流線関数のスペクトル成分ψ(n,m) からエンストロフィー
スペクトルはΣ[m=-nm]^nm(1/2)n^2(n+1)^2ψ(n,m)^2 と計算される.
- 全てのエネルギースペクトル成分の和に 4π/R^2 をかけたものが
球面上での全エンストフィーに等しい.
Original external subprogram is w_zonal_module#n_EnstrophyFromStreamfunc_w
Function : |
|
na_EnergyFromStreamfunc_wa : | real(8), dimension(0:nm,size(wa_Strfunc,2))
: | (out) エネルギースペクトル (水平全波数 n 空間)
|
|
wa_Strfunc(:,:) : | real(8), intent(in)
|
流線関数のスペクトルデータから各全波数のエネルギー成分(スペクトル)を
計算する(多層用).
* 全波数 n の流線関数のスペクトル成分ψ(n,m) から
エネルギースペクトルはΣ[m=-nm]^nm(1/2)n(n+1)ψ(n,m)^2
と計算される.
* 全てのエネルギースペクトル成分の和に 4πをかけたものが
球面上での全エネルギーに等しい.
[Source]
function na_EnergyFromStreamfunc_wa(wa_Strfunc)
!
! 流線関数のスペクトルデータから各全波数のエネルギー成分(スペクトル)を
! 計算する(多層用).
!
! * 全波数 n の流線関数のスペクトル成分ψ(n,m) から
! エネルギースペクトルはΣ[m=-nm]^nm(1/2)n(n+1)ψ(n,m)^2
! と計算される.
!
! * 全てのエネルギースペクトル成分の和に 4πをかけたものが
! 球面上での全エネルギーに等しい.
!
real(8), intent(in) :: wa_Strfunc(:,:)
!(in) 流線関数(スペクトルデータ)
real(8), dimension(0:nm,size(wa_Strfunc,2)) :: na_EnergyFromStreamfunc_wa
!(out) エネルギースペクトル (水平全波数 n 空間)
integer :: n
do n=0,nm
na_EnergyFromStreamfunc_wa(n,:) = 0.5 * n*(n+1) * wa_StrFunc(l_nm(n,0),:)**2
enddo
end function na_EnergyFromStreamfunc_wa
Function : |
|
na_EnergyFromStreamfunc_wa : | real(8), dimension(0:nm,size(wa_Strfunc,2))
: | (out) エネルギースペクトル (水平全波数 n 空間)
|
|
wa_Strfunc(:,:) : | real(8), intent(in)
|
流線関数のスペクトルデータから各全波数のエネルギー成分(スペクトル)を
計算する(多層用).
* 全波数 n の流線関数のスペクトル成分ψ(n,m) から
エネルギースペクトルはΣ[m=-nm]^nm(1/2)n(n+1)ψ(n,m)^2
と計算される.
* 全てのエネルギースペクトル成分の和に 4πをかけたものが
球面上での全エネルギーに等しい.
[Source]
function na_EnergyFromStreamfunc_wa(wa_Strfunc)
!
! 流線関数のスペクトルデータから各全波数のエネルギー成分(スペクトル)を
! 計算する(多層用).
!
! * 全波数 n の流線関数のスペクトル成分ψ(n,m) から
! エネルギースペクトルはΣ[m=-nm]^nm(1/2)n(n+1)ψ(n,m)^2
! と計算される.
!
! * 全てのエネルギースペクトル成分の和に 4πをかけたものが
! 球面上での全エネルギーに等しい.
!
real(8), intent(in) :: wa_Strfunc(:,:)
!(in) 流線関数(スペクトルデータ)
real(8), dimension(0:nm,size(wa_Strfunc,2)) :: na_EnergyFromStreamfunc_wa
!(out) エネルギースペクトル (水平全波数 n 空間)
integer :: n
do n=0,nm
na_EnergyFromStreamfunc_wa(n,:) = 0.5 * n*(n+1) * wa_StrFunc(l_nm(n,0),:)**2
enddo
end function na_EnergyFromStreamfunc_wa
Function : |
|
na_EnstrophyFromStreamfunc_wa : | real(8), dimension(0:nm,size(wa_Strfunc,2))
: | エンストロフィースペクトル (out) エンストロフィースペクトル(水平全波数 n
空間)
|
|
wa_Strfunc(:,:) : | real(8), intent(in)
|
流線関数のスペクトルデータから各全波数のエネルギー成分(スペクトル)を
計算する(多層用)
- 全波数 n の流線関数のスペクトル成分ψ(n,m) からエンストロフィー
スペクトルはΣ[m=-nm]^nm(1/2)n^2(n+1)^2ψ(n,m)^2 と計算される.
- 全てのエネルギースペクトル成分の和に 4π/R^2 をかけたものが
球面上での全エンストフィーに等しい.
[Source]
function na_EnstrophyFromStreamfunc_wa(wa_Strfunc) !
!
! 流線関数のスペクトルデータから各全波数のエネルギー成分(スペクトル)を
! 計算する(多層用)
!
! * 全波数 n の流線関数のスペクトル成分ψ(n,m) からエンストロフィー
! スペクトルはΣ[m=-nm]^nm(1/2)n^2(n+1)^2ψ(n,m)^2 と計算される.
!
! * 全てのエネルギースペクトル成分の和に 4π/R^2 をかけたものが
! 球面上での全エンストフィーに等しい.
!
real(8), intent(in) :: wa_Strfunc(:,:)
!(in) 流線関数(スペクトルデータ)
real(8), dimension(0:nm,size(wa_Strfunc,2)) :: na_EnstrophyFromStreamfunc_wa ! エンストロフィースペクトル
!(out) エンストロフィースペクトル(水平全波数 n 空間)
integer :: n
do n=0,nm
na_EnstrophyFromStreamfunc_wa(n,:) = 0.5 * n**2 * (n+1)**2 * wa_StrFunc(l_nm(n,0),:)**2
enddo
end function na_EnstrophyFromStreamfunc_wa
Function : |
|
na_EnstrophyFromStreamfunc_wa : | real(8), dimension(0:nm,size(wa_Strfunc,2))
: | エンストロフィースペクトル (out) エンストロフィースペクトル(水平全波数 n
空間)
|
|
wa_Strfunc(:,:) : | real(8), intent(in)
|
流線関数のスペクトルデータから各全波数のエネルギー成分(スペクトル)を
計算する(多層用)
- 全波数 n の流線関数のスペクトル成分ψ(n,m) からエンストロフィー
スペクトルはΣ[m=-nm]^nm(1/2)n^2(n+1)^2ψ(n,m)^2 と計算される.
- 全てのエネルギースペクトル成分の和に 4π/R^2 をかけたものが
球面上での全エンストフィーに等しい.
[Source]
function na_EnstrophyFromStreamfunc_wa(wa_Strfunc) !
!
! 流線関数のスペクトルデータから各全波数のエネルギー成分(スペクトル)を
! 計算する(多層用)
!
! * 全波数 n の流線関数のスペクトル成分ψ(n,m) からエンストロフィー
! スペクトルはΣ[m=-nm]^nm(1/2)n^2(n+1)^2ψ(n,m)^2 と計算される.
!
! * 全てのエネルギースペクトル成分の和に 4π/R^2 をかけたものが
! 球面上での全エンストフィーに等しい.
!
real(8), intent(in) :: wa_Strfunc(:,:)
!(in) 流線関数(スペクトルデータ)
real(8), dimension(0:nm,size(wa_Strfunc,2)) :: na_EnstrophyFromStreamfunc_wa ! エンストロフィースペクトル
!(out) エンストロフィースペクトル(水平全波数 n 空間)
integer :: n
do n=0,nm
na_EnstrophyFromStreamfunc_wa(n,:) = 0.5 * n**2 * (n+1)**2 * wa_StrFunc(l_nm(n,0),:)**2
enddo
end function na_EnstrophyFromStreamfunc_wa
nm_EnergyFromStreamfunc_w( w_Strfunc ) result(nm_EnergyFromStreamfunc_w)
Function : |
|
nm_EnergyFromStreamfunc_w : | real(8), dimension(0:nm,-nm:nm)
: | (out) エネルギースペクトル(水平全波数 n, 帯状波数 m 空間)
|
|
w_Strfunc(:) : | real(8), intent(in)
|
流線関数のスペクトルデータからエネルギーの球面調和函数成分
(スペクトル)を計算する(1 層用).
* 全波数 n, 帯状波数 m の流線関数のスペクトル成分ψ(n,m) から
エネルギースペクトルは (1/2)n(n+1)ψ(n,m)^2 と計算される.
* 全てのエネルギースペクトル成分の和に4πをかけたものが球面上での
全エネルギーに等しい.
* データの存在しない全波数 n, 帯状波数 m の配列には欠損値が格納される.
欠損値の値はモジュール変数 w_spectrum_VMiss によって設定できる
(初期値は -999.0)
Original external subprogram is w_zonal_module#nm_EnergyFromStreamfunc_w
nm_EnergyFromStreamfunc_w( w_Strfunc ) result(nm_EnergyFromStreamfunc_w)
Function : |
|
nm_EnergyFromStreamfunc_w : | real(8), dimension(0:nm,-nm:nm)
: | (out) エネルギースペクトル(水平全波数 n, 帯状波数 m 空間)
|
|
w_Strfunc(:) : | real(8), intent(in)
|
流線関数のスペクトルデータからエネルギーの球面調和函数成分
(スペクトル)を計算する(1 層用).
* 全波数 n, 帯状波数 m の流線関数のスペクトル成分ψ(n,m) から
エネルギースペクトルは (1/2)n(n+1)ψ(n,m)^2 と計算される.
* 全てのエネルギースペクトル成分の和に4πをかけたものが球面上での
全エネルギーに等しい.
* データの存在しない全波数 n, 帯状波数 m の配列には欠損値が格納される.
欠損値の値はモジュール変数 w_spectrum_VMiss によって設定できる
(初期値は -999.0)
Original external subprogram is w_zonal_module#nm_EnergyFromStreamfunc_w
nm_EnergyFromStreamfunc_w( w_Strfunc ) result(nm_EnergyFromStreamfunc_w)
Function : |
|
nm_EnergyFromStreamfunc_w : | real(8), dimension(0:nm,-nm:nm)
: | (out) エネルギースペクトル(水平全波数 n, 帯状波数 m 空間)
|
|
w_Strfunc(:) : | real(8), intent(in)
|
流線関数のスペクトルデータからエネルギーの球面調和函数成分
(スペクトル)を計算する(1 層用).
* 全波数 n, 帯状波数 m の流線関数のスペクトル成分ψ(n,m) から
エネルギースペクトルは (1/2)n(n+1)ψ(n,m)^2 と計算される.
* 全てのエネルギースペクトル成分の和に4πをかけたものが球面上での
全エネルギーに等しい.
* データの存在しない全波数 n, 帯状波数 m の配列には欠損値が格納される.
欠損値の値はモジュール変数 w_spectrum_VMiss によって設定できる
(初期値は -999.0)
Original external subprogram is w_zonal_module#nm_EnergyFromStreamfunc_w
nm_EnstrophyFromStreamfunc_w( w_Strfunc ) result(nm_EnstrophyFromStreamfunc_w)
nm_EnstrophyFromStreamfunc_w( w_Strfunc ) result(nm_EnstrophyFromStreamfunc_w)
nm_EnstrophyFromStreamfunc_w( w_Strfunc ) result(nm_EnstrophyFromStreamfunc_w)
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_zonal_module#nm_l
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_zonal_module#nm_l
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_zonal_module#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_zonal_module#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_zonal_module#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_zonal_module#nm_l
Function : |
|
nma_EnergyFromStreamfunc_wa : | real(8), dimension(0:nm,-nm:nm,size(wa_Strfunc,2))
: | (out) エネルギースペクトル(水平全波数 n, 帯状波数 m 空間)
|
|
wa_Strfunc(:,:) : | real(8), intent(in)
|
流線関数のスペクトルデータからエネルギーの球面調和函数成分
(スペクトル)を計算する(多層用).
* 全波数 n, 帯状波数 m の流線関数のスペクトル成分ψ(n,m) から
エネルギースペクトルは (1/2)n(n+1)ψ(n,m)^2 と計算される.
* 全てのエネルギースペクトル成分の和に4πをかけたものが球面上での
全エネルギーに等しい.
* データの存在しない全波数 n, 帯状波数 m の配列には欠損値が格納される.
欠損値の値はモジュール変数 wa_spectrum_VMiss によって設定できる
(初期値は -999.0)
[Source]
function nma_EnergyFromStreamfunc_wa(wa_Strfunc)
!
! 流線関数のスペクトルデータからエネルギーの球面調和函数成分
! (スペクトル)を計算する(多層用).
!
! * 全波数 n, 帯状波数 m の流線関数のスペクトル成分ψ(n,m) から
! エネルギースペクトルは (1/2)n(n+1)ψ(n,m)^2 と計算される.
!
! * 全てのエネルギースペクトル成分の和に4πをかけたものが球面上での
! 全エネルギーに等しい.
!
! * データの存在しない全波数 n, 帯状波数 m の配列には欠損値が格納される.
! 欠損値の値はモジュール変数 wa_spectrum_VMiss によって設定できる
! (初期値は -999.0)
!
real(8), intent(in) :: wa_Strfunc(:,:)
!(in) 流線関数(スペクトルデータ)
real(8), dimension(0:nm,-nm:nm,size(wa_Strfunc,2)) :: nma_EnergyFromStreamfunc_wa
!(out) エネルギースペクトル(水平全波数 n, 帯状波数 m 空間)
integer :: n, m
nma_EnergyFromStreamfunc_wa = wa_spectrum_VMiss
do n=0,nm
do m=1,n
nma_EnergyFromStreamfunc_wa(n,m,:) = 0.0D0
nma_EnergyFromStreamfunc_wa(n,-m,:) = 0.0D0
enddo
nma_EnergyFromStreamfunc_wa(n,0,:) = 0.5 * n*(n+1) * wa_Strfunc(l_nm(n,0),:)**2
enddo
end function nma_EnergyFromStreamfunc_wa
Function : |
|
nma_EnergyFromStreamfunc_wa : | real(8), dimension(0:nm,-nm:nm,size(wa_Strfunc,2))
: | (out) エネルギースペクトル(水平全波数 n, 帯状波数 m 空間)
|
|
wa_Strfunc(:,:) : | real(8), intent(in)
|
流線関数のスペクトルデータからエネルギーの球面調和函数成分
(スペクトル)を計算する(多層用).
* 全波数 n, 帯状波数 m の流線関数のスペクトル成分ψ(n,m) から
エネルギースペクトルは (1/2)n(n+1)ψ(n,m)^2 と計算される.
* 全てのエネルギースペクトル成分の和に4πをかけたものが球面上での
全エネルギーに等しい.
* データの存在しない全波数 n, 帯状波数 m の配列には欠損値が格納される.
欠損値の値はモジュール変数 wa_spectrum_VMiss によって設定できる
(初期値は -999.0)
[Source]
function nma_EnergyFromStreamfunc_wa(wa_Strfunc)
!
! 流線関数のスペクトルデータからエネルギーの球面調和函数成分
! (スペクトル)を計算する(多層用).
!
! * 全波数 n, 帯状波数 m の流線関数のスペクトル成分ψ(n,m) から
! エネルギースペクトルは (1/2)n(n+1)ψ(n,m)^2 と計算される.
!
! * 全てのエネルギースペクトル成分の和に4πをかけたものが球面上での
! 全エネルギーに等しい.
!
! * データの存在しない全波数 n, 帯状波数 m の配列には欠損値が格納される.
! 欠損値の値はモジュール変数 wa_spectrum_VMiss によって設定できる
! (初期値は -999.0)
!
real(8), intent(in) :: wa_Strfunc(:,:)
!(in) 流線関数(スペクトルデータ)
real(8), dimension(0:nm,-nm:nm,size(wa_Strfunc,2)) :: nma_EnergyFromStreamfunc_wa
!(out) エネルギースペクトル(水平全波数 n, 帯状波数 m 空間)
integer :: n, m
nma_EnergyFromStreamfunc_wa = wa_spectrum_VMiss
do n=0,nm
do m=1,n
nma_EnergyFromStreamfunc_wa(n,m,:) = 0.0D0
nma_EnergyFromStreamfunc_wa(n,-m,:) = 0.0D0
enddo
nma_EnergyFromStreamfunc_wa(n,0,:) = 0.5 * n*(n+1) * wa_Strfunc(l_nm(n,0),:)**2
enddo
end function nma_EnergyFromStreamfunc_wa
Function : |
|
nma_EnstrophyFromStreamfunc_wa : | real(8), dimension(0:nm,-nm:nm,size(wa_Strfunc,2))
: | エンストロフィースペクトル (水平全波数 n, 帯状波数 m 空間)
|
|
wa_Strfunc(:,:) : | real(8), intent(in)
|
流線関数のスペクトルデータからエンストロフィーの球面調和函数成分
(スペクトル)を計算する(多層用).
[Source]
function nma_EnstrophyFromStreamfunc_wa(wa_Strfunc) !
!
! 流線関数のスペクトルデータからエンストロフィーの球面調和函数成分
! (スペクトル)を計算する(多層用).
!
! * 全波数 n, 帯状波数 m の流線関数のスペクトル成分ψ(n,m) から
! エンストロフィースペクトルは (1/2)n^2(n+1)^2ψ(n,m)^2 と計算される.
!
! * 全てのエンストロフィースペクトル成分の和に4π/R^2をかけたものが
! 球面上での全エンストロフィーに等しい. ここで R は球面の半径である.
!
! * データの存在しない全波数 n, 帯状波数 m の配列には欠損値が格納される.
! 欠損値の値はモジュール変数 wa_spectrum_VMiss によって設定できる
! (初期値は -999.0)
!
real(8), intent(in) :: wa_Strfunc(:,:)
!(in) 流線関数(スペクトルデータ)
real(8), dimension(0:nm,-nm:nm,size(wa_Strfunc,2)) :: nma_EnstrophyFromStreamfunc_wa
! エンストロフィースペクトル (水平全波数 n, 帯状波数 m 空間)
integer :: n, m
nma_EnstrophyFromStreamfunc_wa = wa_spectrum_VMiss
do n=0,nm
do m=1,n
nma_EnstrophyFromStreamfunc_wa(n,m,:) = 0.0
nma_EnstrophyFromStreamfunc_wa(n,-m,:) = 0.0
enddo
nma_EnstrophyFromStreamfunc_wa(n,0,:) = 0.5 * n**2 * (n+1)**2 * wa_Strfunc(l_nm(n,0),:)**2
enddo
end function nma_EnstrophyFromStreamfunc_wa
Function : |
|
nma_EnstrophyFromStreamfunc_wa : | real(8), dimension(0:nm,-nm:nm,size(wa_Strfunc,2))
: | エンストロフィースペクトル (水平全波数 n, 帯状波数 m 空間)
|
|
wa_Strfunc(:,:) : | real(8), intent(in)
|
流線関数のスペクトルデータからエンストロフィーの球面調和函数成分
(スペクトル)を計算する(多層用).
[Source]
function nma_EnstrophyFromStreamfunc_wa(wa_Strfunc) !
!
! 流線関数のスペクトルデータからエンストロフィーの球面調和函数成分
! (スペクトル)を計算する(多層用).
!
! * 全波数 n, 帯状波数 m の流線関数のスペクトル成分ψ(n,m) から
! エンストロフィースペクトルは (1/2)n^2(n+1)^2ψ(n,m)^2 と計算される.
!
! * 全てのエンストロフィースペクトル成分の和に4π/R^2をかけたものが
! 球面上での全エンストロフィーに等しい. ここで R は球面の半径である.
!
! * データの存在しない全波数 n, 帯状波数 m の配列には欠損値が格納される.
! 欠損値の値はモジュール変数 wa_spectrum_VMiss によって設定できる
! (初期値は -999.0)
!
real(8), intent(in) :: wa_Strfunc(:,:)
!(in) 流線関数(スペクトルデータ)
real(8), dimension(0:nm,-nm:nm,size(wa_Strfunc,2)) :: nma_EnstrophyFromStreamfunc_wa
! エンストロフィースペクトル (水平全波数 n, 帯状波数 m 空間)
integer :: n, m
nma_EnstrophyFromStreamfunc_wa = wa_spectrum_VMiss
do n=0,nm
do m=1,n
nma_EnstrophyFromStreamfunc_wa(n,m,:) = 0.0
nma_EnstrophyFromStreamfunc_wa(n,-m,:) = 0.0
enddo
nma_EnstrophyFromStreamfunc_wa(n,0,:) = 0.5 * n**2 * (n+1)**2 * wa_Strfunc(l_nm(n,0),:)**2
enddo
end function nma_EnstrophyFromStreamfunc_wa
w_DLon_w( w_data ) result(w_DLon_w)
Function : |
|
w_DLon_w(nm+1) : | real(8)
|
w_data(nm+1) : | real(8), intent(in)
|
スペクトルデータに経度微分 ∂/∂λ を作用させる(1 層用).
スペクトルデータの経度微分とは, 対応する格子点データに
経度微分∂/∂λを作用させたデータのスペクトル変換のことである.
Original external subprogram is w_zonal_module#w_DLon_w
w_DLon_w( w_data ) result(w_DLon_w)
Function : |
|
w_DLon_w(nm+1) : | real(8)
|
w_data(nm+1) : | real(8), intent(in)
|
スペクトルデータに経度微分 ∂/∂λ を作用させる(1 層用).
スペクトルデータの経度微分とは, 対応する格子点データに
経度微分∂/∂λを作用させたデータのスペクトル変換のことである.
Original external subprogram is w_zonal_module#w_DLon_w
w_DLon_w( w_data ) result(w_DLon_w)
Function : |
|
w_DLon_w(nm+1) : | real(8)
|
w_data(nm+1) : | real(8), intent(in)
|
スペクトルデータに経度微分 ∂/∂λ を作用させる(1 層用).
スペクトルデータの経度微分とは, 対応する格子点データに
経度微分∂/∂λを作用させたデータのスペクトル変換のことである.
Original external subprogram is w_zonal_module#w_DLon_w
w_DivLambda_xy( xy_data ) result(w_DivLambda_xy)
Function : |
|
w_DivLambda_xy(nm+1) : | real(8)
: | (out) 格子点データを発散型経度微分したスペクトルデータ
|
|
xy_data(0:im-1,1:jm) : | real(8), intent(in)
|
格子点データに発散型経度微分 1/(1-μ^2)・∂/∂λ (μ=sinφ)
を作用させてスペクトルデータに変換して返す(1 層用).
Original external subprogram is w_zonal_module#w_DivLambda_xy
w_DivLambda_xy( xy_data ) result(w_DivLambda_xy)
Function : |
|
w_DivLambda_xy(nm+1) : | real(8)
: | (out) 格子点データを発散型経度微分したスペクトルデータ
|
|
xy_data(0:im-1,1:jm) : | real(8), intent(in)
|
格子点データに発散型経度微分 1/(1-μ^2)・∂/∂λ (μ=sinφ)
を作用させてスペクトルデータに変換して返す(1 層用).
Original external subprogram is w_zonal_module#w_DivLambda_xy
w_DivLambda_xy( xy_data ) result(w_DivLambda_xy)
Function : |
|
w_DivLambda_xy(nm+1) : | real(8)
: | (out) 格子点データを発散型経度微分したスペクトルデータ
|
|
xy_data(0:im-1,1:jm) : | real(8), intent(in)
|
格子点データに発散型経度微分 1/(1-μ^2)・∂/∂λ (μ=sinφ)
を作用させてスペクトルデータに変換して返す(1 層用).
Original external subprogram is w_zonal_module#w_DivLambda_xy
w_DivLat_xy( xy_data ) result(w_DivLat_xy)
Function : |
|
w_DivLat_xy(nm+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_zonal_module#w_DivLat_xy
w_DivLat_xy( xy_data ) result(w_DivLat_xy)
Function : |
|
w_DivLat_xy(nm+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_zonal_module#w_DivLat_xy
w_DivLat_xy( xy_data ) result(w_DivLat_xy)
Function : |
|
w_DivLat_xy(nm+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_zonal_module#w_DivLat_xy
w_DivLon_xy( xy_data ) result(w_DivLon_xy)
Function : |
|
w_DivLon_xy(nm+1) : | real(8)
: | (out) 格子点データを発散型経度微分したスペクトルデータ
|
|
xy_data(0:im-1,1:jm) : | real(8), intent(in)
|
格子点データに発散型経度微分 1/cosφ・∂/∂λ を作用させて
スペクトルデータに変換して返す(1 層用).
Original external subprogram is w_zonal_module#w_DivLon_xy
w_DivLon_xy( xy_data ) result(w_DivLon_xy)
Function : |
|
w_DivLon_xy(nm+1) : | real(8)
: | (out) 格子点データを発散型経度微分したスペクトルデータ
|
|
xy_data(0:im-1,1:jm) : | real(8), intent(in)
|
格子点データに発散型経度微分 1/cosφ・∂/∂λ を作用させて
スペクトルデータに変換して返す(1 層用).
Original external subprogram is w_zonal_module#w_DivLon_xy
w_DivLon_xy( xy_data ) result(w_DivLon_xy)
Function : |
|
w_DivLon_xy(nm+1) : | real(8)
: | (out) 格子点データを発散型経度微分したスペクトルデータ
|
|
xy_data(0:im-1,1:jm) : | real(8), intent(in)
|
格子点データに発散型経度微分 1/cosφ・∂/∂λ を作用させて
スペクトルデータに変換して返す(1 層用).
Original external subprogram is w_zonal_module#w_DivLon_xy
w_DivMu_xy( xy_data ) result(w_DivMu_xy)
Function : |
|
w_DivMu_xy(nm+1) : | real(8)
: | (out) 格子点データを発散型緯度微分したスペクトルデータ
|
|
xy_data(0:im-1,1:jm) : | real(8), intent(in)
|
格子点データに発散型緯度微分 ∂/∂μ (μ=sinφ)を作用させて
スペクトルデータに変換して返す(1 層用).
Original external subprogram is w_zonal_module#w_DivMu_xy
w_DivMu_xy( xy_data ) result(w_DivMu_xy)
Function : |
|
w_DivMu_xy(nm+1) : | real(8)
: | (out) 格子点データを発散型緯度微分したスペクトルデータ
|
|
xy_data(0:im-1,1:jm) : | real(8), intent(in)
|
格子点データに発散型緯度微分 ∂/∂μ (μ=sinφ)を作用させて
スペクトルデータに変換して返す(1 層用).
Original external subprogram is w_zonal_module#w_DivMu_xy
w_DivMu_xy( xy_data ) result(w_DivMu_xy)
Function : |
|
w_DivMu_xy(nm+1) : | real(8)
: | (out) 格子点データを発散型緯度微分したスペクトルデータ
|
|
xy_data(0:im-1,1:jm) : | real(8), intent(in)
|
格子点データに発散型緯度微分 ∂/∂μ (μ=sinφ)を作用させて
スペクトルデータに変換して返す(1 層用).
Original external subprogram is w_zonal_module#w_DivMu_xy
w_Div_xy_xy( xy_u, xy_v ) result(w_Div_xy_xy)
Function : |
|
w_Div_xy_xy(nm+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_zonal_module#w_Div_xy_xy
w_Div_xy_xy( xy_u, xy_v ) result(w_Div_xy_xy)
Function : |
|
w_Div_xy_xy(nm+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_zonal_module#w_Div_xy_xy
w_Div_xy_xy( xy_u, xy_v ) result(w_Div_xy_xy)
Function : |
|
w_Div_xy_xy(nm+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_zonal_module#w_Div_xy_xy
w_Jacobian_w_w( w_a, w_b ) result(w_Jacobian_w_w)
Function : |
|
w_Jacobian_w_w(nm+1) : | real(8)
: | (out) 2 つのスペクトルデータのヤコビアン
|
|
w_a(nm+1) : | real(8), intent(in)
|
w_b(nm+1) : | real(8), intent(in)
|
2 つのスペクトルデータにヤコビアン
J(f,g) = ∂f/∂λ・∂g/∂μ - ∂g/∂λ・∂f/∂μ
= ∂f/∂λ・1/cosφ・∂g/∂φ
- ∂g/∂λ・1/cosφ・∂f/∂φ
を作用させる(1 層用).
Original external subprogram is w_zonal_module#w_Jacobian_w_w
w_Jacobian_w_w( w_a, w_b ) result(w_Jacobian_w_w)
Function : |
|
w_Jacobian_w_w(nm+1) : | real(8)
: | (out) 2 つのスペクトルデータのヤコビアン
|
|
w_a(nm+1) : | real(8), intent(in)
|
w_b(nm+1) : | real(8), intent(in)
|
2 つのスペクトルデータにヤコビアン
J(f,g) = ∂f/∂λ・∂g/∂μ - ∂g/∂λ・∂f/∂μ
= ∂f/∂λ・1/cosφ・∂g/∂φ
- ∂g/∂λ・1/cosφ・∂f/∂φ
を作用させる(1 層用).
Original external subprogram is w_zonal_module#w_Jacobian_w_w
w_Jacobian_w_w( w_a, w_b ) result(w_Jacobian_w_w)
Function : |
|
w_Jacobian_w_w(nm+1) : | real(8)
: | (out) 2 つのスペクトルデータのヤコビアン
|
|
w_a(nm+1) : | real(8), intent(in)
|
w_b(nm+1) : | real(8), intent(in)
|
2 つのスペクトルデータにヤコビアン
J(f,g) = ∂f/∂λ・∂g/∂μ - ∂g/∂λ・∂f/∂μ
= ∂f/∂λ・1/cosφ・∂g/∂φ
- ∂g/∂λ・1/cosφ・∂f/∂φ
を作用させる(1 層用).
Original external subprogram is w_zonal_module#w_Jacobian_w_w
w_LaplaInv_w( l_data ) result(l_LaplaInv_l)
Function : |
|
l_LaplaInv_l(0:nn) : | real(8)
|
l_data(0:nn) : | real(8), intent(in)
|
入力スペクトルデータに逆ラプラシアン
▽^{-2}
=[1/cosφ・∂/∂φ(cosφ∂/∂φ)]^{-1}
を作用する.
スペクトルデータの逆ラプラシアンとは, 対応する格子点データに
逆ラプラシアンを作用させたデータのスペクトル変換のことである.
Original external subprogram is w_zonal_module#w_LaplaInv_w
w_LaplaInv_w( l_data ) result(l_LaplaInv_l)
Function : |
|
l_LaplaInv_l(0:nn) : | real(8)
|
l_data(0:nn) : | real(8), intent(in)
|
入力スペクトルデータに逆ラプラシアン
▽^{-2}
=[1/cosφ・∂/∂φ(cosφ∂/∂φ)]^{-1}
を作用する.
スペクトルデータの逆ラプラシアンとは, 対応する格子点データに
逆ラプラシアンを作用させたデータのスペクトル変換のことである.
Original external subprogram is w_zonal_module#w_LaplaInv_w
w_LaplaInv_w( l_data ) result(l_LaplaInv_l)
Function : |
|
l_LaplaInv_l(0:nn) : | real(8)
|
l_data(0:nn) : | real(8), intent(in)
|
入力スペクトルデータに逆ラプラシアン
▽^{-2}
=[1/cosφ・∂/∂φ(cosφ∂/∂φ)]^{-1}
を作用する.
スペクトルデータの逆ラプラシアンとは, 対応する格子点データに
逆ラプラシアンを作用させたデータのスペクトル変換のことである.
Original external subprogram is w_zonal_module#w_LaplaInv_w
w_Lapla_w( l_data ) result(l_Lapla_l)
Function : |
|
l_Lapla_l(0:nn) : | real(8)
: | (out) 入力スペクトルデータのラプラシアン
|
|
l_data(0:nn) : | real(8), intent(in)
|
入力スペクトルデータにラプラシアン
▽^2 = 1/cosφ・∂/∂φ(cosφ∂/∂φ)
を作用する.
スペクトルデータのラプラシアンとは, 対応する格子点データに
ラプラシアンを作用させたデータのスペクトル変換のことである.
Original external subprogram is w_zonal_module#w_Lapla_w
w_Lapla_w( l_data ) result(l_Lapla_l)
Function : |
|
l_Lapla_l(0:nn) : | real(8)
: | (out) 入力スペクトルデータのラプラシアン
|
|
l_data(0:nn) : | real(8), intent(in)
|
入力スペクトルデータにラプラシアン
▽^2 = 1/cosφ・∂/∂φ(cosφ∂/∂φ)
を作用する.
スペクトルデータのラプラシアンとは, 対応する格子点データに
ラプラシアンを作用させたデータのスペクトル変換のことである.
Original external subprogram is w_zonal_module#w_Lapla_w
w_Lapla_w( l_data ) result(l_Lapla_l)
Function : |
|
l_Lapla_l(0:nn) : | real(8)
: | (out) 入力スペクトルデータのラプラシアン
|
|
l_data(0:nn) : | real(8), intent(in)
|
入力スペクトルデータにラプラシアン
▽^2 = 1/cosφ・∂/∂φ(cosφ∂/∂φ)
を作用する.
スペクトルデータのラプラシアンとは, 対応する格子点データに
ラプラシアンを作用させたデータのスペクトル変換のことである.
Original external subprogram is w_zonal_module#w_Lapla_w
w_StreamPotential2Vector( w_Psi, w_Chi, xy_U, xy_V )
Subroutine : |
|
w_Psi(nm+1) : | real(8), intent(in)
|
w_Chi(nm+1) : | real(8), intent(in)
|
xy_U(0:im-1,1:jm) : | real(8), intent(out)
|
xy_V(0:im-1,1:jm) : | real(8), intent(out)
: | (out) 速度緯度成分
u cosφ = - cosφ∂ψ/∂φ の計算
|
|
流線・ポテンシャル(スペクトルデータ)から速度場(格子データ)に (逆)変換する(1
層用)
u cosφ = ∂χ/∂λ - cosφ∂ψ/∂φ,
v cosφ = cosφ∂χ/∂φ + ∂ψ/∂λ
Original external subprogram is w_zonal_module#w_StreamPotential2Vector
w_StreamPotential2Vector( w_Psi, w_Chi, xy_U, xy_V )
Subroutine : |
|
w_Psi(nm+1) : | real(8), intent(in)
|
w_Chi(nm+1) : | real(8), intent(in)
|
xy_U(0:im-1,1:jm) : | real(8), intent(out)
|
xy_V(0:im-1,1:jm) : | real(8), intent(out)
: | (out) 速度緯度成分
u cosφ = - cosφ∂ψ/∂φ の計算
|
|
流線・ポテンシャル(スペクトルデータ)から速度場(格子データ)に (逆)変換する(1
層用)
u cosφ = ∂χ/∂λ - cosφ∂ψ/∂φ,
v cosφ = cosφ∂χ/∂φ + ∂ψ/∂λ
Original external subprogram is w_zonal_module#w_StreamPotential2Vector
w_StreamPotential2Vector( w_Psi, w_Chi, xy_U, xy_V )
Subroutine : |
|
w_Psi(nm+1) : | real(8), intent(in)
|
w_Chi(nm+1) : | real(8), intent(in)
|
xy_U(0:im-1,1:jm) : | real(8), intent(out)
|
xy_V(0:im-1,1:jm) : | real(8), intent(out)
: | (out) 速度緯度成分
u cosφ = - cosφ∂ψ/∂φ の計算
|
|
流線・ポテンシャル(スペクトルデータ)から速度場(格子データ)に (逆)変換する(1
層用)
u cosφ = ∂χ/∂λ - cosφ∂ψ/∂φ,
v cosφ = cosφ∂χ/∂φ + ∂ψ/∂λ
Original external subprogram is w_zonal_module#w_StreamPotential2Vector
w_Vector2VorDiv( xy_U, xy_V, w_Vor, w_Div )
Subroutine : |
|
xy_U(0:im-1,1:jm) : | real(8), intent(in)
|
xy_V(0:im-1,1:jm) : | real(8), intent(in)
|
w_Vor(nm+1) : | real(8), intent(out)
|
w_Div(nm+1) : | real(8), intent(out)
: | (out) 速度ポテンシャル
ζ = - 1/cosφ ∂(u cosφ)/∂φ の計算
|
|
速度場(格子データ)から渦度・発散(スペクトルデータ)に (正)変換する(1 層用)
ζ = 1/cosφ∂v/∂λ - 1/cosφ ∂(u cosφ)/∂φ
D = 1/cosφ∂u/∂λ + 1/cosφ ∂(v cosφ)/∂φ
Original external subprogram is w_zonal_module#w_Vector2VorDiv
w_Vector2VorDiv( xy_U, xy_V, w_Vor, w_Div )
Subroutine : |
|
xy_U(0:im-1,1:jm) : | real(8), intent(in)
|
xy_V(0:im-1,1:jm) : | real(8), intent(in)
|
w_Vor(nm+1) : | real(8), intent(out)
|
w_Div(nm+1) : | real(8), intent(out)
: | (out) 速度ポテンシャル
ζ = - 1/cosφ ∂(u cosφ)/∂φ の計算
|
|
速度場(格子データ)から渦度・発散(スペクトルデータ)に (正)変換する(1 層用)
ζ = 1/cosφ∂v/∂λ - 1/cosφ ∂(u cosφ)/∂φ
D = 1/cosφ∂u/∂λ + 1/cosφ ∂(v cosφ)/∂φ
Original external subprogram is w_zonal_module#w_Vector2VorDiv
w_Vector2VorDiv( xy_U, xy_V, w_Vor, w_Div )
Subroutine : |
|
xy_U(0:im-1,1:jm) : | real(8), intent(in)
|
xy_V(0:im-1,1:jm) : | real(8), intent(in)
|
w_Vor(nm+1) : | real(8), intent(out)
|
w_Div(nm+1) : | real(8), intent(out)
: | (out) 速度ポテンシャル
ζ = - 1/cosφ ∂(u cosφ)/∂φ の計算
|
|
速度場(格子データ)から渦度・発散(スペクトルデータ)に (正)変換する(1 層用)
ζ = 1/cosφ∂v/∂λ - 1/cosφ ∂(u cosφ)/∂φ
D = 1/cosφ∂u/∂λ + 1/cosφ ∂(v cosφ)/∂φ
Original external subprogram is w_zonal_module#w_Vector2VorDiv
w_VectorCosLat2VorDiv( xy_UCosLat, xy_VCosLat, w_Vor, w_Div )
Subroutine : |
|
xy_UCosLat(0:im-1,1:jm) : | real(8), intent(in)
|
xy_VCosLat(0:im-1,1:jm) : | real(8), intent(in)
|
w_Vor(nm+1) : | real(8), intent(out)
|
w_Div(nm+1) : | real(8), intent(out)
: | (out) 速度ポテンシャル
ζ = - 1/cosφ ∂(u cosφ)/∂φ の計算
|
|
速度場(格子データ)から渦度・発散(スペクトルデータ)に (正)変換する(1 層用)
ζ = 1/cosφ∂v/∂λ - 1/cosφ ∂(u cosφ)/∂φ
D = 1/cosφ∂u/∂λ + 1/cosφ ∂(v cosφ)/∂φ
Original external subprogram is w_zonal_module#w_VectorCosLat2VorDiv
w_VectorCosLat2VorDiv( xy_UCosLat, xy_VCosLat, w_Vor, w_Div )
Subroutine : |
|
xy_UCosLat(0:im-1,1:jm) : | real(8), intent(in)
|
xy_VCosLat(0:im-1,1:jm) : | real(8), intent(in)
|
w_Vor(nm+1) : | real(8), intent(out)
|
w_Div(nm+1) : | real(8), intent(out)
: | (out) 速度ポテンシャル
ζ = - 1/cosφ ∂(u cosφ)/∂φ の計算
|
|
速度場(格子データ)から渦度・発散(スペクトルデータ)に (正)変換する(1 層用)
ζ = 1/cosφ∂v/∂λ - 1/cosφ ∂(u cosφ)/∂φ
D = 1/cosφ∂u/∂λ + 1/cosφ ∂(v cosφ)/∂φ
Original external subprogram is w_zonal_module#w_VectorCosLat2VorDiv
w_VectorCosLat2VorDiv( xy_UCosLat, xy_VCosLat, w_Vor, w_Div )
Subroutine : |
|
xy_UCosLat(0:im-1,1:jm) : | real(8), intent(in)
|
xy_VCosLat(0:im-1,1:jm) : | real(8), intent(in)
|
w_Vor(nm+1) : | real(8), intent(out)
|
w_Div(nm+1) : | real(8), intent(out)
: | (out) 速度ポテンシャル
ζ = - 1/cosφ ∂(u cosφ)/∂φ の計算
|
|
速度場(格子データ)から渦度・発散(スペクトルデータ)に (正)変換する(1 層用)
ζ = 1/cosφ∂v/∂λ - 1/cosφ ∂(u cosφ)/∂φ
D = 1/cosφ∂u/∂λ + 1/cosφ ∂(v cosφ)/∂φ
Original external subprogram is w_zonal_module#w_VectorCosLat2VorDiv
w_xy( xy_data, [ipow], [iflag] ) result(w_xy)
Function : |
|
w_xy(nm+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/cosφ・∂(f cos^2φ)/∂φ を作用させた正変換
-1 : 緯度微分を作用させた正変換
2 : sinφを作用させた正変換
省略時は 0.
|
|
格子データからスペクトルデータへ(正)変換する(1 層用).
Original external subprogram is w_zonal_module#w_xy
w_xy( xy_data, [ipow], [iflag] ) result(w_xy)
Function : |
|
w_xy(nm+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/cosφ・∂(f cos^2φ)/∂φ を作用させた正変換
-1 : 緯度微分を作用させた正変換
2 : sinφを作用させた正変換
省略時は 0.
|
|
格子データからスペクトルデータへ(正)変換する(1 層用).
Original external subprogram is w_zonal_module#w_xy
w_xy( xy_data, [ipow], [iflag] ) result(w_xy)
Function : |
|
w_xy(nm+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/cosφ・∂(f cos^2φ)/∂φ を作用させた正変換
-1 : 緯度微分を作用させた正変換
2 : sinφを作用させた正変換
省略時は 0.
|
|
格子データからスペクトルデータへ(正)変換する(1 層用).
Original external subprogram is w_zonal_module#w_xy
Function : |
|
wa_DLon_wa(nm+1,size(wa_data,2)) : | real(8)
|
wa_data(:,:) : | real(8), intent(in)
|
スペクトルデータに経度微分 ∂/∂λ を作用させる(多層用).
スペクトルデータの経度微分とは, 対応する格子点データに
経度微分∂/∂λを作用させたデータのスペクトル変換のことである.
[Source]
function wa_DLon_wa(wa_data)
!
! スペクトルデータに経度微分 ∂/∂λ を作用させる(多層用).
!
! スペクトルデータの経度微分とは, 対応する格子点データに
! 経度微分∂/∂λを作用させたデータのスペクトル変換のことである.
!
real(8), intent(in) :: wa_data(:,:)
!(in) 入力スペクトルデータ
real(8) :: wa_DLon_wa(nm+1,size(wa_data,2))
!(out) スペクトルデータの経度微分
wa_DLon_wa = 0.0D0
end function wa_DLon_wa
Function : |
|
wa_DLon_wa(nm+1,size(wa_data,2)) : | real(8)
|
wa_data(:,:) : | real(8), intent(in)
|
スペクトルデータに経度微分 ∂/∂λ を作用させる(多層用).
スペクトルデータの経度微分とは, 対応する格子点データに
経度微分∂/∂λを作用させたデータのスペクトル変換のことである.
[Source]
function wa_DLon_wa(wa_data)
!
! スペクトルデータに経度微分 ∂/∂λ を作用させる(多層用).
!
! スペクトルデータの経度微分とは, 対応する格子点データに
! 経度微分∂/∂λを作用させたデータのスペクトル変換のことである.
!
real(8), intent(in) :: wa_data(:,:)
!(in) 入力スペクトルデータ
real(8) :: wa_DLon_wa(nm+1,size(wa_data,2))
!(out) スペクトルデータの経度微分
wa_DLon_wa = 0.0D0
end function wa_DLon_wa
Function : |
|
wa_DivLambda_xya(nm+1,size(xya_data,3)) : | real(8)
: | (out) 格子点データを発散型経度微分したスペクトルデータ
|
|
xya_data(0:,:,:) : | real(8), intent(in)
|
格子点データに発散型経度微分 1/(1-μ^2)・∂/∂λ (μ=sinφ)
を作用させてスペクトルデータに変換して返す(多層用).
[Source]
function wa_DivLambda_xya(xya_data)
!
! 格子点データに発散型経度微分 1/(1-μ^2)・∂/∂λ (μ=sinφ)
! を作用させてスペクトルデータに変換して返す(多層用).
!
real(8), intent(in) :: xya_data(0:,:,:)
!(in) 入力格子点データ
real(8) :: wa_DivLambda_xya(nm+1,size(xya_data,3))
!(out) 格子点データを発散型経度微分したスペクトルデータ
wa_DivLambda_xya = wa_xya(xya_data,ipow=2,iflag=-1)
end function wa_DivLambda_xya
Function : |
|
wa_DivLambda_xya(nm+1,size(xya_data,3)) : | real(8)
: | (out) 格子点データを発散型経度微分したスペクトルデータ
|
|
xya_data(0:,:,:) : | real(8), intent(in)
|
格子点データに発散型経度微分 1/(1-μ^2)・∂/∂λ (μ=sinφ)
を作用させてスペクトルデータに変換して返す(多層用).
[Source]
function wa_DivLambda_xya(xya_data)
!
! 格子点データに発散型経度微分 1/(1-μ^2)・∂/∂λ (μ=sinφ)
! を作用させてスペクトルデータに変換して返す(多層用).
!
real(8), intent(in) :: xya_data(0:,:,:)
!(in) 入力格子点データ
real(8) :: wa_DivLambda_xya(nm+1,size(xya_data,3))
!(out) 格子点データを発散型経度微分したスペクトルデータ
wa_DivLambda_xya = wa_xya(xya_data,ipow=2,iflag=-1)
end function wa_DivLambda_xya
Function : |
|
wa_DivLat_xya(nm+1,size(xya_data,3)) : | real(8)
: | (out) 格子点データを発散型緯度微分したスペクトルデータ
|
|
xya_data(0:,:,:) : | real(8), intent(in)
|
格子点データに発散型緯度微分 1/cosφ・∂(f cosφ)/∂φ を作用させて
スペクトルデータに変換して返す(多層用).
[Source]
function wa_DivLat_xya(xya_data)
!
! 格子点データに発散型緯度微分 1/cosφ・∂(f cosφ)/∂φ を作用させて
! スペクトルデータに変換して返す(多層用).
!
real(8), intent(in) :: xya_data(0:,:,:)
!(in) 入力格子点データ
real(8) :: wa_DivLat_xya(nm+1,size(xya_data,3))
!(out) 格子点データを発散型緯度微分したスペクトルデータ
wa_DivLat_xya = wa_xya(xya_data,ipow=1,iflag=1)
end function wa_DivLat_xya
Function : |
|
wa_DivLat_xya(nm+1,size(xya_data,3)) : | real(8)
: | (out) 格子点データを発散型緯度微分したスペクトルデータ
|
|
xya_data(0:,:,:) : | real(8), intent(in)
|
格子点データに発散型緯度微分 1/cosφ・∂(f cosφ)/∂φ を作用させて
スペクトルデータに変換して返す(多層用).
[Source]
function wa_DivLat_xya(xya_data)
!
! 格子点データに発散型緯度微分 1/cosφ・∂(f cosφ)/∂φ を作用させて
! スペクトルデータに変換して返す(多層用).
!
real(8), intent(in) :: xya_data(0:,:,:)
!(in) 入力格子点データ
real(8) :: wa_DivLat_xya(nm+1,size(xya_data,3))
!(out) 格子点データを発散型緯度微分したスペクトルデータ
wa_DivLat_xya = wa_xya(xya_data,ipow=1,iflag=1)
end function wa_DivLat_xya
Function : |
|
wa_DivLon_xya(nm+1,size(xya_data,3)) : | real(8)
: | (out) 格子点データを発散型経度微分したスペクトルデータ
|
|
xya_data(0:,:,:) : | real(8), intent(in)
|
格子点データに発散型経度微分 1/cosφ・∂/∂λ を作用させて
スペクトルデータに変換して返す(多層用).
[Source]
function wa_DivLon_xya(xya_data)
!
! 格子点データに発散型経度微分 1/cosφ・∂/∂λ を作用させて
! スペクトルデータに変換して返す(多層用).
!
real(8), intent(in) :: xya_data(0:,:,:)
!(in) 入力格子点データ
real(8) :: wa_DivLon_xya(nm+1,size(xya_data,3))
!(out) 格子点データを発散型経度微分したスペクトルデータ
wa_DivLon_xya = wa_xya(xya_data,ipow=1,iflag=-1)
end function wa_DivLon_xya
Function : |
|
wa_DivLon_xya(nm+1,size(xya_data,3)) : | real(8)
: | (out) 格子点データを発散型経度微分したスペクトルデータ
|
|
xya_data(0:,:,:) : | real(8), intent(in)
|
格子点データに発散型経度微分 1/cosφ・∂/∂λ を作用させて
スペクトルデータに変換して返す(多層用).
[Source]
function wa_DivLon_xya(xya_data)
!
! 格子点データに発散型経度微分 1/cosφ・∂/∂λ を作用させて
! スペクトルデータに変換して返す(多層用).
!
real(8), intent(in) :: xya_data(0:,:,:)
!(in) 入力格子点データ
real(8) :: wa_DivLon_xya(nm+1,size(xya_data,3))
!(out) 格子点データを発散型経度微分したスペクトルデータ
wa_DivLon_xya = wa_xya(xya_data,ipow=1,iflag=-1)
end function wa_DivLon_xya
Function : |
|
wa_DivMu_xya(nm+1,size(xya_data,3)) : | real(8)
: | (out) 格子点データを発散型緯度微分したスペクトルデータ
|
|
xya_data(0:,:,:) : | real(8), intent(in)
|
格子点データに発散型緯度微分 ∂/∂μ (μ=sinφ)を作用させて
スペクトルデータに変換して返す(多層用).
[Source]
function wa_DivMu_xya(xya_data)
!
! 格子点データに発散型緯度微分 ∂/∂μ (μ=sinφ)を作用させて
! スペクトルデータに変換して返す(多層用).
!
real(8), intent(in) :: xya_data(0:,:,:)
!(in) 入力格子点データ
real(8) :: wa_DivMu_xya(nm+1,size(xya_data,3))
!(out) 格子点データを発散型緯度微分したスペクトルデータ
wa_DivMu_xya = wa_xya(xya_data,ipow=2,iflag=1)
end function wa_DivMu_xya
Function : |
|
wa_DivMu_xya(nm+1,size(xya_data,3)) : | real(8)
: | (out) 格子点データを発散型緯度微分したスペクトルデータ
|
|
xya_data(0:,:,:) : | real(8), intent(in)
|
格子点データに発散型緯度微分 ∂/∂μ (μ=sinφ)を作用させて
スペクトルデータに変換して返す(多層用).
[Source]
function wa_DivMu_xya(xya_data)
!
! 格子点データに発散型緯度微分 ∂/∂μ (μ=sinφ)を作用させて
! スペクトルデータに変換して返す(多層用).
!
real(8), intent(in) :: xya_data(0:,:,:)
!(in) 入力格子点データ
real(8) :: wa_DivMu_xya(nm+1,size(xya_data,3))
!(out) 格子点データを発散型緯度微分したスペクトルデータ
wa_DivMu_xya = wa_xya(xya_data,ipow=2,iflag=1)
end function wa_DivMu_xya
Function : |
|
wa_Div_xya_xya(nm+1,size(xya_u,3)) : | real(8)
: | (out) 2 つの入力格子点データをベクトル成分とする発散のスペクトルデータ
|
|
xya_u(0:,:,:) : | real(8), intent(in)
|
xya_v(0:,:,:) : | real(8), intent(in)
|
2 つの入力格子点データをベクトル成分とする発散を計算し,
スペクトルデータとして返す(多層用).
[Source]
function wa_Div_xya_xya(xya_u,xya_v)
!
! 2 つの入力格子点データをベクトル成分とする発散を計算し,
! スペクトルデータとして返す(多層用).
!
real(8), intent(in) :: xya_u(0:,:,:)
!(in) ベクトル経度成分の格子点データ
real(8), intent(in) :: xya_v(0:,:,:)
!(in) ベクトル緯度成分の格子点データ
real(8) :: wa_Div_xya_xya(nm+1,size(xya_u,3))
!(out) 2 つの入力格子点データをベクトル成分とする発散のスペクトルデータ
wa_Div_xya_xya = wa_DivLon_xya(xya_u) + wa_DivLat_xya(xya_v)
end function wa_Div_xya_xya
Function : |
|
wa_Div_xya_xya(nm+1,size(xya_u,3)) : | real(8)
: | (out) 2 つの入力格子点データをベクトル成分とする発散のスペクトルデータ
|
|
xya_u(0:,:,:) : | real(8), intent(in)
|
xya_v(0:,:,:) : | real(8), intent(in)
|
2 つの入力格子点データをベクトル成分とする発散を計算し,
スペクトルデータとして返す(多層用).
[Source]
function wa_Div_xya_xya(xya_u,xya_v)
!
! 2 つの入力格子点データをベクトル成分とする発散を計算し,
! スペクトルデータとして返す(多層用).
!
real(8), intent(in) :: xya_u(0:,:,:)
!(in) ベクトル経度成分の格子点データ
real(8), intent(in) :: xya_v(0:,:,:)
!(in) ベクトル緯度成分の格子点データ
real(8) :: wa_Div_xya_xya(nm+1,size(xya_u,3))
!(out) 2 つの入力格子点データをベクトル成分とする発散のスペクトルデータ
wa_Div_xya_xya = wa_DivLon_xya(xya_u) + wa_DivLat_xya(xya_v)
end function wa_Div_xya_xya
wa_Finalize( )
モジュールの終了処理(割り付け配列の解放)をおこなう.
解像度を変更する際にはこのサブルーチンを呼んで終了処理を
おこなったのちに再度 w_Initial で初期設定しなければ ならない.
Original external subprogram is w_zonal_module#w_Finalize
wa_Finalize( )
モジュールの終了処理(割り付け配列の解放)をおこなう.
解像度を変更する際にはこのサブルーチンを呼んで終了処理を
おこなったのちに再度 w_Initial で初期設定しなければ ならない.
Original external subprogram is w_zonal_module#w_Finalize
wa_Finalize( )
モジュールの終了処理(割り付け配列の解放)をおこなう.
解像度を変更する際にはこのサブルーチンを呼んで終了処理を
おこなったのちに再度 w_Initial で初期設定しなければ ならない.
Original external subprogram is w_zonal_module#w_Finalize
Subroutine : |
|
n_in : | integer,intent(in)
|
i_in : | integer,intent(in)
|
j_in : | integer,intent(in)
|
k_in : | integer,intent(in)
|
np_in : | integer,intent(in), optional
|
スペクトル変換の格子点数, 波数, 最大データ数(層数)および OPENMP
使用時の最大スレッド数を設定する.
他の関数を呼ぶ前に, 最初にこのサブルーチンを呼んで初期設定を
しなければならない.
最大データ層数は wa_module
との互換性のためにおいている.
実際にはこの設定以上の層数のデータも正しく取り扱える.
np_in は wa_module
との互換性のためにおいているだけである. OPENMP 計算は実装されていない.
[Source]
subroutine wa_Initial(n_in,i_in,j_in,k_in,np_in)
!
! スペクトル変換の格子点数, 波数, 最大データ数(層数)および
! OPENMP 使用時の最大スレッド数を設定する.
!
! 他の関数を呼ぶ前に, 最初にこのサブルーチンを呼んで初期設定を
! しなければならない.
!
! 最大データ層数は wa_module との互換性のためにおいている.
! 実際にはこの設定以上の層数のデータも正しく取り扱える.
!
! np_in は wa_module との互換性のためにおいているだけである.
! OPENMP 計算は実装されていない.
!
integer,intent(in) :: i_in ! 格子点数(東西)
integer,intent(in) :: j_in ! 格子点数(南北)
integer,intent(in) :: n_in ! 切断波数
integer,intent(in) :: k_in ! 最大データ数(層数)
integer,intent(in), optional :: np_in ! OPENMP での最大スレッド数
call w_Initial(n_in,i_in,j_in)
call la_Initial(n_in,j_in,l_init=.false.)
nm = n_in
im = i_in
jm = j_in
km = k_in
call MessageNotify('M','wa_initial', 'wa_zonal_module (2013/02/24) is initialized')
end subroutine wa_Initial
Subroutine : |
|
n_in : | integer,intent(in)
|
i_in : | integer,intent(in)
|
j_in : | integer,intent(in)
|
k_in : | integer,intent(in)
|
np_in : | integer,intent(in), optional
|
スペクトル変換の格子点数, 波数, 最大データ数(層数)および OPENMP
使用時の最大スレッド数を設定する.
他の関数を呼ぶ前に, 最初にこのサブルーチンを呼んで初期設定を
しなければならない.
最大データ層数は wa_module
との互換性のためにおいている.
実際にはこの設定以上の層数のデータも正しく取り扱える.
np_in は wa_module
との互換性のためにおいているだけである. OPENMP 計算は実装されていない.
[Source]
subroutine wa_Initial(n_in,i_in,j_in,k_in,np_in)
!
! スペクトル変換の格子点数, 波数, 最大データ数(層数)および
! OPENMP 使用時の最大スレッド数を設定する.
!
! 他の関数を呼ぶ前に, 最初にこのサブルーチンを呼んで初期設定を
! しなければならない.
!
! 最大データ層数は wa_module との互換性のためにおいている.
! 実際にはこの設定以上の層数のデータも正しく取り扱える.
!
! np_in は wa_module との互換性のためにおいているだけである.
! OPENMP 計算は実装されていない.
!
integer,intent(in) :: i_in ! 格子点数(東西)
integer,intent(in) :: j_in ! 格子点数(南北)
integer,intent(in) :: n_in ! 切断波数
integer,intent(in) :: k_in ! 最大データ数(層数)
integer,intent(in), optional :: np_in ! OPENMP での最大スレッド数
call w_Initial(n_in,i_in,j_in)
call la_Initial(n_in,j_in,l_init=.false.)
nm = n_in
im = i_in
jm = j_in
km = k_in
call MessageNotify('M','wa_initial', 'wa_zonal_module (2013/02/24) is initialized')
end subroutine wa_Initial
Function : |
|
wa_Jacobian_wa_wa(nm+1,size(wa_a,2)) : | real(8)
: | (out) 2 つのスペクトルデータのヤコビアン
|
|
wa_a(:,:) : | real(8), intent(in)
|
wa_b(:,:) : | real(8), intent(in)
|
2 つのスペクトルデータにヤコビアン
J(f,g) = ∂f/∂λ・∂g/∂μ - ∂g/∂λ・∂f/∂μ
= ∂f/∂λ・1/cosφ・∂g/∂φ
- ∂g/∂λ・1/cosφ・∂f/∂φ
を作用させる(多層用).
[Source]
function wa_Jacobian_wa_wa(wa_a,wa_b)
! 2 つのスペクトルデータにヤコビアン
!
! J(f,g) = ∂f/∂λ・∂g/∂μ - ∂g/∂λ・∂f/∂μ
! = ∂f/∂λ・1/cosφ・∂g/∂φ
! - ∂g/∂λ・1/cosφ・∂f/∂φ
!
! を作用させる(多層用).
!
real(8), intent(in) :: wa_a(:,:)
!(in) 1つ目の入力スペクトルデータ
real(8), intent(in) :: wa_b(:,:)
!(in) 2つ目の入力スペクトルデータ
real(8) :: wa_Jacobian_wa_wa(nm+1,size(wa_a,2))
!(out) 2 つのスペクトルデータのヤコビアン
integer :: k
do k=1,size(wa_a,2)
wa_Jacobian_wa_wa(:,k) = w_Jacobian_w_w(wa_a(:,k),wa_b(:,k))
end do
end function wa_Jacobian_wa_wa
Function : |
|
wa_Jacobian_wa_wa(nm+1,size(wa_a,2)) : | real(8)
: | (out) 2 つのスペクトルデータのヤコビアン
|
|
wa_a(:,:) : | real(8), intent(in)
|
wa_b(:,:) : | real(8), intent(in)
|
2 つのスペクトルデータにヤコビアン
J(f,g) = ∂f/∂λ・∂g/∂μ - ∂g/∂λ・∂f/∂μ
= ∂f/∂λ・1/cosφ・∂g/∂φ
- ∂g/∂λ・1/cosφ・∂f/∂φ
を作用させる(多層用).
[Source]
function wa_Jacobian_wa_wa(wa_a,wa_b)
! 2 つのスペクトルデータにヤコビアン
!
! J(f,g) = ∂f/∂λ・∂g/∂μ - ∂g/∂λ・∂f/∂μ
! = ∂f/∂λ・1/cosφ・∂g/∂φ
! - ∂g/∂λ・1/cosφ・∂f/∂φ
!
! を作用させる(多層用).
!
real(8), intent(in) :: wa_a(:,:)
!(in) 1つ目の入力スペクトルデータ
real(8), intent(in) :: wa_b(:,:)
!(in) 2つ目の入力スペクトルデータ
real(8) :: wa_Jacobian_wa_wa(nm+1,size(wa_a,2))
!(out) 2 つのスペクトルデータのヤコビアン
integer :: k
do k=1,size(wa_a,2)
wa_Jacobian_wa_wa(:,k) = w_Jacobian_w_w(wa_a(:,k),wa_b(:,k))
end do
end function wa_Jacobian_wa_wa
wa_LaplaInv_wa( la_data ) result(la_LaplaInv_la)
Function : |
|
la_LaplaInv_la(0:nm,size(la_data,2)) : | real(8)
|
la_data(:,:) : | real(8), intent(in)
: | (in) 入力スペクトルデータ(0:nm,:)
|
|
入力スペクトルデータに逆ラプラシアン
▽^{-2}
=[1/cosφ・∂/∂φ(cosφ∂/∂φ)]^{-1}
を作用する(多層用).
スペクトルデータの逆ラプラシアンとは, 対応する格子点データに
逆ラプラシアンを作用させたデータのスペクトル変換のことである.
Original external subprogram is la_module#la_LaplaInv_la
wa_LaplaInv_wa( la_data ) result(la_LaplaInv_la)
Function : |
|
la_LaplaInv_la(0:nm,size(la_data,2)) : | real(8)
|
la_data(:,:) : | real(8), intent(in)
: | (in) 入力スペクトルデータ(0:nm,:)
|
|
入力スペクトルデータに逆ラプラシアン
▽^{-2}
=[1/cosφ・∂/∂φ(cosφ∂/∂φ)]^{-1}
を作用する(多層用).
スペクトルデータの逆ラプラシアンとは, 対応する格子点データに
逆ラプラシアンを作用させたデータのスペクトル変換のことである.
Original external subprogram is la_module#la_LaplaInv_la
wa_LaplaInv_wa( la_data ) result(la_LaplaInv_la)
Function : |
|
la_LaplaInv_la(0:nm,size(la_data,2)) : | real(8)
|
la_data(:,:) : | real(8), intent(in)
: | (in) 入力スペクトルデータ(0:nm,:)
|
|
入力スペクトルデータに逆ラプラシアン
▽^{-2}
=[1/cosφ・∂/∂φ(cosφ∂/∂φ)]^{-1}
を作用する(多層用).
スペクトルデータの逆ラプラシアンとは, 対応する格子点データに
逆ラプラシアンを作用させたデータのスペクトル変換のことである.
Original external subprogram is la_module#la_LaplaInv_la
wa_Lapla_wa( la_data ) result(la_Lapla_la)
Function : |
|
la_Lapla_la(0:nm,size(la_data,2)) : | real(8)
: | (out) 入力スペクトルデータのラプラシアン
|
|
la_data(:,:) : | real(8), intent(in)
: | (in) 入力スペクトルデータ(0:nm,:)
|
|
入力スペクトルデータにラプラシアン
▽^2 = 1/cosφ・∂/∂φ(cosφ∂/∂φ)
を作用する(多層用).
スペクトルデータのラプラシアンとは, 対応する格子点データに
ラプラシアンを作用させたデータのスペクトル変換のことである.
Original external subprogram is la_module#la_Lapla_la
wa_Lapla_wa( la_data ) result(la_Lapla_la)
Function : |
|
la_Lapla_la(0:nm,size(la_data,2)) : | real(8)
: | (out) 入力スペクトルデータのラプラシアン
|
|
la_data(:,:) : | real(8), intent(in)
: | (in) 入力スペクトルデータ(0:nm,:)
|
|
入力スペクトルデータにラプラシアン
▽^2 = 1/cosφ・∂/∂φ(cosφ∂/∂φ)
を作用する(多層用).
スペクトルデータのラプラシアンとは, 対応する格子点データに
ラプラシアンを作用させたデータのスペクトル変換のことである.
Original external subprogram is la_module#la_Lapla_la
wa_Lapla_wa( la_data ) result(la_Lapla_la)
Function : |
|
la_Lapla_la(0:nm,size(la_data,2)) : | real(8)
: | (out) 入力スペクトルデータのラプラシアン
|
|
la_data(:,:) : | real(8), intent(in)
: | (in) 入力スペクトルデータ(0:nm,:)
|
|
入力スペクトルデータにラプラシアン
▽^2 = 1/cosφ・∂/∂φ(cosφ∂/∂φ)
を作用する(多層用).
スペクトルデータのラプラシアンとは, 対応する格子点データに
ラプラシアンを作用させたデータのスペクトル変換のことである.
Original external subprogram is la_module#la_Lapla_la
Subroutine : |
|
wa_Psi(:,:) : | real(8), intent(in)
: | (in) 流線関数((nm+1)*(nm+1),:)
|
|
wa_Chi(:,:) : | real(8), intent(in)
: | (in) 速度ポテンシャル((nm+1)*(nm+1),:)
|
|
xya_U(0:im-1,1:jm,size(wa_Psi,2)) : | real(8), intent(out)
: | (out) 速度経度成分(0:im-1,1:jm,:)
|
|
xya_V(0:im-1,1:jm,size(wa_Psi,2)) : | real(8), intent(out)
: | (out) 速度緯度成分(0:im-1,1:jm,:)
|
|
流線・ポテンシャル(スペクトルデータ)から速度場(格子データ)に
(逆)変換する(多層用)
スペクトル変換を用いず微分を計算するために, 変換回数が 2 回ですむ.
u cosφ = ∂χ/∂λ - cosφ∂ψ/∂φ,
v cosφ = cosφ∂χ/∂φ + ∂ψ/∂λ
[Source]
subroutine wa_StreamPotential2Vector(wa_Psi, wa_Chi, xya_U, xya_V)
!
! 流線・ポテンシャル(スペクトルデータ)から速度場(格子データ)に
! (逆)変換する(多層用)
!
! スペクトル変換を用いず微分を計算するために, 変換回数が 2 回ですむ.
!
! u cosφ = ∂χ/∂λ - cosφ∂ψ/∂φ,
! v cosφ = cosφ∂χ/∂φ + ∂ψ/∂λ
!
real(8), intent(in) :: wa_Psi(:,:)
!(in) 流線関数((nm+1)*(nm+1),:)
real(8), intent(in) :: wa_Chi(:,:)
!(in) 速度ポテンシャル((nm+1)*(nm+1),:)
real(8), intent(out) :: xya_U(0:im-1,1:jm,size(wa_Psi,2))
!(out) 速度経度成分(0:im-1,1:jm,:)
real(8), intent(out) :: xya_V(0:im-1,1:jm,size(wa_Psi,2))
!(out) 速度緯度成分(0:im-1,1:jm,:)
integer :: k
do k=1,size(wa_Psi,2)
call w_StreamPotential2Vector ( wa_Psi(:,k), wa_Chi(:,k), xya_U(:,:,k), xya_V(:,:,k) )
enddo
end subroutine wa_StreamPotential2Vector
Subroutine : |
|
wa_Psi(:,:) : | real(8), intent(in)
: | (in) 流線関数((nm+1)*(nm+1),:)
|
|
wa_Chi(:,:) : | real(8), intent(in)
: | (in) 速度ポテンシャル((nm+1)*(nm+1),:)
|
|
xya_U(0:im-1,1:jm,size(wa_Psi,2)) : | real(8), intent(out)
: | (out) 速度経度成分(0:im-1,1:jm,:)
|
|
xya_V(0:im-1,1:jm,size(wa_Psi,2)) : | real(8), intent(out)
: | (out) 速度緯度成分(0:im-1,1:jm,:)
|
|
流線・ポテンシャル(スペクトルデータ)から速度場(格子データ)に
(逆)変換する(多層用)
スペクトル変換を用いず微分を計算するために, 変換回数が 2 回ですむ.
u cosφ = ∂χ/∂λ - cosφ∂ψ/∂φ,
v cosφ = cosφ∂χ/∂φ + ∂ψ/∂λ
[Source]
subroutine wa_StreamPotential2Vector(wa_Psi, wa_Chi, xya_U, xya_V)
!
! 流線・ポテンシャル(スペクトルデータ)から速度場(格子データ)に
! (逆)変換する(多層用)
!
! スペクトル変換を用いず微分を計算するために, 変換回数が 2 回ですむ.
!
! u cosφ = ∂χ/∂λ - cosφ∂ψ/∂φ,
! v cosφ = cosφ∂χ/∂φ + ∂ψ/∂λ
!
real(8), intent(in) :: wa_Psi(:,:)
!(in) 流線関数((nm+1)*(nm+1),:)
real(8), intent(in) :: wa_Chi(:,:)
!(in) 速度ポテンシャル((nm+1)*(nm+1),:)
real(8), intent(out) :: xya_U(0:im-1,1:jm,size(wa_Psi,2))
!(out) 速度経度成分(0:im-1,1:jm,:)
real(8), intent(out) :: xya_V(0:im-1,1:jm,size(wa_Psi,2))
!(out) 速度緯度成分(0:im-1,1:jm,:)
integer :: k
do k=1,size(wa_Psi,2)
call w_StreamPotential2Vector ( wa_Psi(:,k), wa_Chi(:,k), xya_U(:,:,k), xya_V(:,:,k) )
enddo
end subroutine wa_StreamPotential2Vector
Subroutine : |
|
xya_U(0:,:,:) : | real(8), intent(in)
: | (in) 速度経度成分(0:im-1,1:jm,:)
|
|
xya_V(0:,:,:) : | real(8), intent(in)
: | (in) 速度緯度成分(0:im-1,1:jm,:)
|
|
wa_Vor(nm+1,size(xya_U,3)) : | real(8), intent(out)
|
wa_Div(nm+1,size(xya_U,3)) : | real(8), intent(out)
|
速度場(格子データ)から渦度・発散(スペクトルデータ)に (正)変換する(多層用)
スペクトル変換を用いず微分を計算するために, 変換回数が 2 回ですむ.
ζ = 1/cosφ∂v/∂λ - 1/cosφ ∂(u cosφ)/∂φ
D = 1/cosφ∂u/∂λ + 1/cosφ ∂(v cosφ)/∂φ
[Source]
subroutine wa_Vector2VorDiv(xya_U, xya_V, wa_Vor, wa_Div)
!
! 速度場(格子データ)から渦度・発散(スペクトルデータ)に
! (正)変換する(多層用)
!
! スペクトル変換を用いず微分を計算するために, 変換回数が 2 回ですむ.
!
! ζ = 1/cosφ∂v/∂λ - 1/cosφ ∂(u cosφ)/∂φ
! D = 1/cosφ∂u/∂λ + 1/cosφ ∂(v cosφ)/∂φ
!
real(8), intent(in) :: xya_U(0:,:,:)
!(in) 速度経度成分(0:im-1,1:jm,:)
real(8), intent(in) :: xya_V(0:,:,:)
!(in) 速度緯度成分(0:im-1,1:jm,:)
real(8), intent(out) :: wa_Vor(nm+1,size(xya_U,3))
!(out) 流線関数
real(8), intent(out) :: wa_Div(nm+1,size(xya_U,3))
!(out) 速度ポテンシャル
integer :: k
do k=1,size(xya_U,3)
call w_Vector2VorDiv (xya_U(:,:,k), xya_V(:,:,k), wa_Vor(:,k), wa_Div(:,k))
enddo
end subroutine wa_Vector2VorDiv
Subroutine : |
|
xya_U(0:,:,:) : | real(8), intent(in)
: | (in) 速度経度成分(0:im-1,1:jm,:)
|
|
xya_V(0:,:,:) : | real(8), intent(in)
: | (in) 速度緯度成分(0:im-1,1:jm,:)
|
|
wa_Vor(nm+1,size(xya_U,3)) : | real(8), intent(out)
|
wa_Div(nm+1,size(xya_U,3)) : | real(8), intent(out)
|
速度場(格子データ)から渦度・発散(スペクトルデータ)に (正)変換する(多層用)
スペクトル変換を用いず微分を計算するために, 変換回数が 2 回ですむ.
ζ = 1/cosφ∂v/∂λ - 1/cosφ ∂(u cosφ)/∂φ
D = 1/cosφ∂u/∂λ + 1/cosφ ∂(v cosφ)/∂φ
[Source]
subroutine wa_Vector2VorDiv(xya_U, xya_V, wa_Vor, wa_Div)
!
! 速度場(格子データ)から渦度・発散(スペクトルデータ)に
! (正)変換する(多層用)
!
! スペクトル変換を用いず微分を計算するために, 変換回数が 2 回ですむ.
!
! ζ = 1/cosφ∂v/∂λ - 1/cosφ ∂(u cosφ)/∂φ
! D = 1/cosφ∂u/∂λ + 1/cosφ ∂(v cosφ)/∂φ
!
real(8), intent(in) :: xya_U(0:,:,:)
!(in) 速度経度成分(0:im-1,1:jm,:)
real(8), intent(in) :: xya_V(0:,:,:)
!(in) 速度緯度成分(0:im-1,1:jm,:)
real(8), intent(out) :: wa_Vor(nm+1,size(xya_U,3))
!(out) 流線関数
real(8), intent(out) :: wa_Div(nm+1,size(xya_U,3))
!(out) 速度ポテンシャル
integer :: k
do k=1,size(xya_U,3)
call w_Vector2VorDiv (xya_U(:,:,k), xya_V(:,:,k), wa_Vor(:,k), wa_Div(:,k))
enddo
end subroutine wa_Vector2VorDiv
Subroutine : |
|
xya_UCosLat(0:,:,:) : | real(8), intent(in)
: | (in) 速度経度成分 * cos(lat) (0:im-1,1:jm,:)
|
|
xya_VCosLat(0:,:,:) : | real(8), intent(in)
: | (in) 速度緯度成分 * cos(lat) (0:im-1,1:jm,:)
|
|
wa_Vor(nm+1,size(xya_UCosLat,3)) : | real(8), intent(out)
|
wa_Div(nm+1,size(xya_UCosLat,3)) : | real(8), intent(out)
|
速度場(格子データ)から渦度・発散(スペクトルデータ)に (正)変換する(多層用)
スペクトル変換を用いず微分を計算するために, 変換回数が 2 回ですむ.
ζ = 1/cosφ∂v/∂λ - 1/cosφ ∂(u cosφ)/∂φ
D = 1/cosφ∂u/∂λ + 1/cosφ ∂(v cosφ)/∂φ
[Source]
subroutine wa_VectorCosLat2VorDiv(xya_UCosLat, xya_VCosLat, wa_Vor, wa_Div)
!
! 速度場(格子データ)から渦度・発散(スペクトルデータ)に
! (正)変換する(多層用)
!
! スペクトル変換を用いず微分を計算するために, 変換回数が 2 回ですむ.
!
! ζ = 1/cosφ∂v/∂λ - 1/cosφ ∂(u cosφ)/∂φ
! D = 1/cosφ∂u/∂λ + 1/cosφ ∂(v cosφ)/∂φ
!
real(8), intent(in) :: xya_UCosLat(0:,:,:)
!(in) 速度経度成分 * cos(lat) (0:im-1,1:jm,:)
real(8), intent(in) :: xya_VCosLat(0:,:,:)
!(in) 速度緯度成分 * cos(lat) (0:im-1,1:jm,:)
real(8), intent(out) :: wa_Vor(nm+1,size(xya_UCosLat,3))
!(out) 流線関数
real(8), intent(out) :: wa_Div(nm+1,size(xya_UCosLat,3))
!(out) 速度ポテンシャル
integer :: k
do k=1,size(xya_UCosLat,3)
call w_VectorCosLat2VorDiv (xya_UCosLat(:,:,k), xya_VCosLat(:,:,k), wa_Vor(:,k), wa_Div(:,k))
enddo
end subroutine wa_VectorCosLat2VorDiv
Subroutine : |
|
xya_UCosLat(0:,:,:) : | real(8), intent(in)
: | (in) 速度経度成分 * cos(lat) (0:im-1,1:jm,:)
|
|
xya_VCosLat(0:,:,:) : | real(8), intent(in)
: | (in) 速度緯度成分 * cos(lat) (0:im-1,1:jm,:)
|
|
wa_Vor(nm+1,size(xya_UCosLat,3)) : | real(8), intent(out)
|
wa_Div(nm+1,size(xya_UCosLat,3)) : | real(8), intent(out)
|
速度場(格子データ)から渦度・発散(スペクトルデータ)に (正)変換する(多層用)
スペクトル変換を用いず微分を計算するために, 変換回数が 2 回ですむ.
ζ = 1/cosφ∂v/∂λ - 1/cosφ ∂(u cosφ)/∂φ
D = 1/cosφ∂u/∂λ + 1/cosφ ∂(v cosφ)/∂φ
[Source]
subroutine wa_VectorCosLat2VorDiv(xya_UCosLat, xya_VCosLat, wa_Vor, wa_Div)
!
! 速度場(格子データ)から渦度・発散(スペクトルデータ)に
! (正)変換する(多層用)
!
! スペクトル変換を用いず微分を計算するために, 変換回数が 2 回ですむ.
!
! ζ = 1/cosφ∂v/∂λ - 1/cosφ ∂(u cosφ)/∂φ
! D = 1/cosφ∂u/∂λ + 1/cosφ ∂(v cosφ)/∂φ
!
real(8), intent(in) :: xya_UCosLat(0:,:,:)
!(in) 速度経度成分 * cos(lat) (0:im-1,1:jm,:)
real(8), intent(in) :: xya_VCosLat(0:,:,:)
!(in) 速度緯度成分 * cos(lat) (0:im-1,1:jm,:)
real(8), intent(out) :: wa_Vor(nm+1,size(xya_UCosLat,3))
!(out) 流線関数
real(8), intent(out) :: wa_Div(nm+1,size(xya_UCosLat,3))
!(out) 速度ポテンシャル
integer :: k
do k=1,size(xya_UCosLat,3)
call w_VectorCosLat2VorDiv (xya_UCosLat(:,:,k), xya_VCosLat(:,:,k), wa_Vor(:,k), wa_Div(:,k))
enddo
end subroutine wa_VectorCosLat2VorDiv
Function : |
|
wa_xya(nm+1,size(xya_data,3)) : | real(8)
|
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 : 緯度微分を作用させた正変換
2 : sinφを作用させた正変換
省略時は 0.
|
|
格子点 -> 球面調和関数スペクトル
格子データからスペクトルデータへ(正)変換する(多層用).
[Source]
function wa_xya(xya_data,ipow,iflag) ! 格子点 -> 球面調和関数スペクトル
!
! 格子データからスペクトルデータへ(正)変換する(多層用).
!
real(8), intent(in) :: xya_data(0:,:,:)
!(in) 格子点データ(0:im-1,1:jm,:)
real(8) :: wa_xya(nm+1,size(xya_data,3))
!(out) スペクトルデータ(nm+1,:)
integer, intent(in), optional :: ipow
!(in) 変換時に同時に作用させる 1/cosφ の次数. 省略時は 0.
integer, intent(in), optional :: iflag
! 変換の種類
! 0 : 通常の正変換
! -1 : 経度微分を作用させた正変換
! 1 : 緯度微分を作用させた正変換
! 2 : sinφを作用させた正変換
! 省略時は 0.
integer, parameter :: ipow_default = 0 ! スイッチデフォルト値
integer, parameter :: iflag_default = 0 ! スイッチデフォルト値
integer ipval, ifval
real(8) :: xya_work(0:im-1,1:jm,size(xya_data,3))
! 格子点データ作業配列
if (present(ipow)) then
ipval = ipow
else
ipval = ipow_default
endif
if (present(iflag)) then
ifval = iflag
else
ifval = iflag_default
endif
xya_work = xya_data/spread(cos(xy_Lat)**ipval,3,size(xya_data,3))
if ( ifval == -1 ) then ! 経度微分は 0
wa_xya = 0.0D0
else if ( ifval == 1 ) then ! 緯度微分
xya_work = xya_work * spread(cos(xy_Lat),3,size(xya_data,3))
wa_xya = wa_DivLat_ya(xya_work(0,:,:))
else if ( ifval == 2 ) then ! sinφ をかけた正変換
xya_work = xya_work * spread(sin(xy_Lat),3,size(xya_data,3))
wa_xya = wa_ya(xya_work(0,:,:))
else
wa_xya = wa_ya(xya_work(0,:,:))
endif
end function wa_xya
Function : |
|
wa_xya(nm+1,size(xya_data,3)) : | real(8)
|
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 : 緯度微分を作用させた正変換
2 : sinφを作用させた正変換
省略時は 0.
|
|
格子点 -> 球面調和関数スペクトル
格子データからスペクトルデータへ(正)変換する(多層用).
[Source]
function wa_xya(xya_data,ipow,iflag) ! 格子点 -> 球面調和関数スペクトル
!
! 格子データからスペクトルデータへ(正)変換する(多層用).
!
real(8), intent(in) :: xya_data(0:,:,:)
!(in) 格子点データ(0:im-1,1:jm,:)
real(8) :: wa_xya(nm+1,size(xya_data,3))
!(out) スペクトルデータ(nm+1,:)
integer, intent(in), optional :: ipow
!(in) 変換時に同時に作用させる 1/cosφ の次数. 省略時は 0.
integer, intent(in), optional :: iflag
! 変換の種類
! 0 : 通常の正変換
! -1 : 経度微分を作用させた正変換
! 1 : 緯度微分を作用させた正変換
! 2 : sinφを作用させた正変換
! 省略時は 0.
integer, parameter :: ipow_default = 0 ! スイッチデフォルト値
integer, parameter :: iflag_default = 0 ! スイッチデフォルト値
integer ipval, ifval
real(8) :: xya_work(0:im-1,1:jm,size(xya_data,3))
! 格子点データ作業配列
if (present(ipow)) then
ipval = ipow
else
ipval = ipow_default
endif
if (present(iflag)) then
ifval = iflag
else
ifval = iflag_default
endif
xya_work = xya_data/spread(cos(xy_Lat)**ipval,3,size(xya_data,3))
if ( ifval == -1 ) then ! 経度微分は 0
wa_xya = 0.0D0
else if ( ifval == 1 ) then ! 緯度微分
xya_work = xya_work * spread(cos(xy_Lat),3,size(xya_data,3))
wa_xya = wa_DivLat_ya(xya_work(0,:,:))
else if ( ifval == 2 ) then ! sinφ をかけた正変換
xya_work = xya_work * spread(sin(xy_Lat),3,size(xya_data,3))
wa_xya = wa_ya(xya_work(0,:,:))
else
wa_xya = wa_ya(xya_work(0,:,:))
endif
end function wa_xya
x_AvrLat_xy( xy_data ) result(x_AvrLat_xy)
Function : |
|
x_AvrLat_xy(im) : | real(8)
: | (out) 平均された 1 次元経度(X)格子点データ
|
|
xy_data(0:im-1,1:jm) : | real(8), intent(in)
: | (in) 2 次元経度緯度格子点データ(0:im-1,1:jm)
|
|
2 次元緯度経度格子点データの緯度(Y)方向平均(1 層用).
実際には格子点データ各点毎に y_Y_Weight をかけた総和を計算し, y_Y_Weight
の総和で割ることで平均している.
Original external subprogram is w_zonal_module#x_AvrLat_xy
x_AvrLat_xy( xy_data ) result(x_AvrLat_xy)
Function : |
|
x_AvrLat_xy(im) : | real(8)
: | (out) 平均された 1 次元経度(X)格子点データ
|
|
xy_data(0:im-1,1:jm) : | real(8), intent(in)
: | (in) 2 次元経度緯度格子点データ(0:im-1,1:jm)
|
|
2 次元緯度経度格子点データの緯度(Y)方向平均(1 層用).
実際には格子点データ各点毎に y_Y_Weight をかけた総和を計算し, y_Y_Weight
の総和で割ることで平均している.
Original external subprogram is w_zonal_module#x_AvrLat_xy
x_AvrLat_xy( xy_data ) result(x_AvrLat_xy)
Function : |
|
x_AvrLat_xy(im) : | real(8)
: | (out) 平均された 1 次元経度(X)格子点データ
|
|
xy_data(0:im-1,1:jm) : | real(8), intent(in)
: | (in) 2 次元経度緯度格子点データ(0:im-1,1:jm)
|
|
2 次元緯度経度格子点データの緯度(Y)方向平均(1 層用).
実際には格子点データ各点毎に y_Y_Weight をかけた総和を計算し, y_Y_Weight
の総和で割ることで平均している.
Original external subprogram is w_zonal_module#x_AvrLat_xy
x_IntLat_xy( xy_data ) result(x_IntLat_xy)
Function : |
|
x_IntLat_xy(0:im-1) : | real(8)
: | (out) 積分された 1 次元経度(X)格子点データ
|
|
xy_data(0:im-1,1:jm) : | real(8), intent(in)
: | (in) 2 次元経度緯度格子点データ(0:im-1,1:jm)
|
|
2 次元緯度経度格子点データの緯度(Y)方向積分(1 層用).
実際には格子点データ各点毎に y_Y_Weight をかけた総和を計算している.
Original external subprogram is w_zonal_module#x_IntLat_xy
x_IntLat_xy( xy_data ) result(x_IntLat_xy)
Function : |
|
x_IntLat_xy(0:im-1) : | real(8)
: | (out) 積分された 1 次元経度(X)格子点データ
|
|
xy_data(0:im-1,1:jm) : | real(8), intent(in)
: | (in) 2 次元経度緯度格子点データ(0:im-1,1:jm)
|
|
2 次元緯度経度格子点データの緯度(Y)方向積分(1 層用).
実際には格子点データ各点毎に y_Y_Weight をかけた総和を計算している.
Original external subprogram is w_zonal_module#x_IntLat_xy
x_IntLat_xy( xy_data ) result(x_IntLat_xy)
Function : |
|
x_IntLat_xy(0:im-1) : | real(8)
: | (out) 積分された 1 次元経度(X)格子点データ
|
|
xy_data(0:im-1,1:jm) : | real(8), intent(in)
: | (in) 2 次元経度緯度格子点データ(0:im-1,1:jm)
|
|
2 次元緯度経度格子点データの緯度(Y)方向積分(1 層用).
実際には格子点データ各点毎に y_Y_Weight をかけた総和を計算している.
Original external subprogram is w_zonal_module#x_IntLat_xy
Function : |
|
xa_AvrLat_xya(0:im-1,size(xya_data,3)) : | real(8)
: | (out) 平均された 1 次元経度(X)格子点データの並び(im,*)
|
|
xya_data(0:,:,:) : | real(8), intent(in)
: | (in) 2 次元経度緯度格子点データの並び(0:im-1,1:jm,*)
|
|
2 次元緯度経度格子点データの緯度(Y)方向平均(多層用).
実際には格子点データ各点毎に y_Y_Weight をかけた総和を計算し, y_Y_Weight
の総和で割ることで平均している.
[Source]
function xa_AvrLat_xya(xya_data)
!
! 2 次元緯度経度格子点データの緯度(Y)方向平均(多層用).
!
! 実際には格子点データ各点毎に y_Y_Weight をかけた総和を計算し,
! y_Y_Weight の総和で割ることで平均している.
!
real(8), intent(in) :: xya_data(0:,:,:)
!(in) 2 次元経度緯度格子点データの並び(0:im-1,1:jm,*)
real(8) :: xa_AvrLat_xya(0:im-1,size(xya_data,3))
!(out) 平均された 1 次元経度(X)格子点データの並び(im,*)
xa_AvrLat_xya = xa_IntLat_xya(xya_data)/sum(y_Lat_Weight)
end function xa_AvrLat_xya
Function : |
|
xa_AvrLat_xya(0:im-1,size(xya_data,3)) : | real(8)
: | (out) 平均された 1 次元経度(X)格子点データの並び(im,*)
|
|
xya_data(0:,:,:) : | real(8), intent(in)
: | (in) 2 次元経度緯度格子点データの並び(0:im-1,1:jm,*)
|
|
2 次元緯度経度格子点データの緯度(Y)方向平均(多層用).
実際には格子点データ各点毎に y_Y_Weight をかけた総和を計算し, y_Y_Weight
の総和で割ることで平均している.
[Source]
function xa_AvrLat_xya(xya_data)
!
! 2 次元緯度経度格子点データの緯度(Y)方向平均(多層用).
!
! 実際には格子点データ各点毎に y_Y_Weight をかけた総和を計算し,
! y_Y_Weight の総和で割ることで平均している.
!
real(8), intent(in) :: xya_data(0:,:,:)
!(in) 2 次元経度緯度格子点データの並び(0:im-1,1:jm,*)
real(8) :: xa_AvrLat_xya(0:im-1,size(xya_data,3))
!(out) 平均された 1 次元経度(X)格子点データの並び(im,*)
xa_AvrLat_xya = xa_IntLat_xya(xya_data)/sum(y_Lat_Weight)
end function xa_AvrLat_xya
Function : |
|
xa_IntLat_xya(0:im-1,size(xya_data,3)) : | real(8)
: | (out) 積分された 1 次元経度(X)格子点データの並び
|
|
xya_data(0:,:,:) : | real(8), intent(in)
: | (in) 2 次元経度緯度格子点データの並び(0:im-1,1:jm,*)
|
|
2 次元緯度経度格子点データの緯度(Y)方向積分(多層用).
実際には格子点データ各点毎に y_Y_Weight をかけた総和を計算している.
[Source]
function xa_IntLat_xya(xya_data)
!
! 2 次元緯度経度格子点データの緯度(Y)方向積分(多層用).
!
! 実際には格子点データ各点毎に y_Y_Weight をかけた総和を計算している.
!
real(8), intent(in) :: xya_data(0:,:,:)
!(in) 2 次元経度緯度格子点データの並び(0:im-1,1:jm,*)
real(8) :: xa_IntLat_xya(0:im-1,size(xya_data,3))
!(out) 積分された 1 次元経度(X)格子点データの並び
Integer :: j
xa_IntLat_xya = 0.0D0
do j=1,jm
xa_IntLat_xya = xa_IntLat_xya + xya_data(:,j,:) * y_Lat_Weight(j)
enddo
end function xa_IntLat_xya
Function : |
|
xa_IntLat_xya(0:im-1,size(xya_data,3)) : | real(8)
: | (out) 積分された 1 次元経度(X)格子点データの並び
|
|
xya_data(0:,:,:) : | real(8), intent(in)
: | (in) 2 次元経度緯度格子点データの並び(0:im-1,1:jm,*)
|
|
2 次元緯度経度格子点データの緯度(Y)方向積分(多層用).
実際には格子点データ各点毎に y_Y_Weight をかけた総和を計算している.
[Source]
function xa_IntLat_xya(xya_data)
!
! 2 次元緯度経度格子点データの緯度(Y)方向積分(多層用).
!
! 実際には格子点データ各点毎に y_Y_Weight をかけた総和を計算している.
!
real(8), intent(in) :: xya_data(0:,:,:)
!(in) 2 次元経度緯度格子点データの並び(0:im-1,1:jm,*)
real(8) :: xa_IntLat_xya(0:im-1,size(xya_data,3))
!(out) 積分された 1 次元経度(X)格子点データの並び
Integer :: j
xa_IntLat_xya = 0.0D0
do j=1,jm
xa_IntLat_xya = xa_IntLat_xya + xya_data(:,j,:) * y_Lat_Weight(j)
enddo
end function xa_IntLat_xya
xy_GradLambda_w( w_data ) result(xy_GradLambda_w)
xy_GradLambda_w( w_data ) result(xy_GradLambda_w)
xy_GradLambda_w( w_data ) result(xy_GradLambda_w)
xy_GradLat_w( w_data ) result(xy_GradLat_w)
Function : |
|
xy_GradLat_w(0:im-1,1:jm) : | real(8)
: | (out) スペクトルデータを勾配型緯度微分した格子点データ
|
|
w_data(nm+1) : | real(8), intent(in)
|
スペクトルデータに勾配型緯度微分 ∂/∂φ を作用させて
格子点データに変換して返す(1 層用).
Original external subprogram is w_zonal_module#xy_GradLat_w
xy_GradLat_w( w_data ) result(xy_GradLat_w)
Function : |
|
xy_GradLat_w(0:im-1,1:jm) : | real(8)
: | (out) スペクトルデータを勾配型緯度微分した格子点データ
|
|
w_data(nm+1) : | real(8), intent(in)
|
スペクトルデータに勾配型緯度微分 ∂/∂φ を作用させて
格子点データに変換して返す(1 層用).
Original external subprogram is w_zonal_module#xy_GradLat_w
xy_GradLat_w( w_data ) result(xy_GradLat_w)
Function : |
|
xy_GradLat_w(0:im-1,1:jm) : | real(8)
: | (out) スペクトルデータを勾配型緯度微分した格子点データ
|
|
w_data(nm+1) : | real(8), intent(in)
|
スペクトルデータに勾配型緯度微分 ∂/∂φ を作用させて
格子点データに変換して返す(1 層用).
Original external subprogram is w_zonal_module#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(nm+1) : | real(8), intent(in)
|
スペクトルデータに勾配型経度微分 1/cosφ・∂/∂λ を
作用させた格子点データを返す(1 層用).
Original external subprogram is w_zonal_module#xy_GradLon_w
xy_GradLon_w( w_data ) result(xy_GradLon_w)
Function : |
|
xy_GradLon_w(0:im-1,1:jm) : | real(8)
: | (out) スペクトルデータを勾配型経度微分した格子点データ
|
|
w_data(nm+1) : | real(8), intent(in)
|
スペクトルデータに勾配型経度微分 1/cosφ・∂/∂λ を
作用させた格子点データを返す(1 層用).
Original external subprogram is w_zonal_module#xy_GradLon_w
xy_GradLon_w( w_data ) result(xy_GradLon_w)
Function : |
|
xy_GradLon_w(0:im-1,1:jm) : | real(8)
: | (out) スペクトルデータを勾配型経度微分した格子点データ
|
|
w_data(nm+1) : | real(8), intent(in)
|
スペクトルデータに勾配型経度微分 1/cosφ・∂/∂λ を
作用させた格子点データを返す(1 層用).
Original external subprogram is w_zonal_module#xy_GradLon_w
xy_GradMu_w( w_data ) result(xy_GradMu_w)
Function : |
|
xy_GradMu_w(0:im-1,1:jm) : | real(8)
: | (out) スペクトルデータを勾配型緯度微分した格子点データ
|
|
w_data(nm+1) : | real(8), intent(in)
|
スペクトルデータに勾配型緯度微分 (1-μ^2)∂/∂μ (μ=sinφ)
を作用させて格子点データに変換して返す(1 層用).
Original external subprogram is w_zonal_module#xy_GradMu_w
xy_GradMu_w( w_data ) result(xy_GradMu_w)
Function : |
|
xy_GradMu_w(0:im-1,1:jm) : | real(8)
: | (out) スペクトルデータを勾配型緯度微分した格子点データ
|
|
w_data(nm+1) : | real(8), intent(in)
|
スペクトルデータに勾配型緯度微分 (1-μ^2)∂/∂μ (μ=sinφ)
を作用させて格子点データに変換して返す(1 層用).
Original external subprogram is w_zonal_module#xy_GradMu_w
xy_GradMu_w( w_data ) result(xy_GradMu_w)
Function : |
|
xy_GradMu_w(0:im-1,1:jm) : | real(8)
: | (out) スペクトルデータを勾配型緯度微分した格子点データ
|
|
w_data(nm+1) : | real(8), intent(in)
|
スペクトルデータに勾配型緯度微分 (1-μ^2)∂/∂μ (μ=sinφ)
を作用させて格子点データに変換して返す(1 層用).
Original external subprogram is w_zonal_module#xy_GradMu_w
xy_w( w_data, [ipow], [iflag] ) result(xy_w)
Function : |
|
xy_w(0:im-1,1:jm) : | real(8)
|
w_data(nm+1) : | real(8), intent(in)
|
ipow : | integer, intent(in), optional
: | (in) 作用させる 1/cosφ の次数. 省略時は 0.
|
|
iflag : | integer, intent(in), optional
: | (in) 変換の種類
0 : 通常の正変換
1 : 緯度微分 cosφ・∂/∂φ を作用させた逆変換
-1 : 経度微分を作用させた逆変換
2 : sinφを作用させた逆変換(非実装)
省略時は 0.
|
|
スペクトルデータから格子データへ変換する(1 層用).
Original external subprogram is w_zonal_module#xy_w
xy_w( w_data, [ipow], [iflag] ) result(xy_w)
Function : |
|
xy_w(0:im-1,1:jm) : | real(8)
|
w_data(nm+1) : | real(8), intent(in)
|
ipow : | integer, intent(in), optional
: | (in) 作用させる 1/cosφ の次数. 省略時は 0.
|
|
iflag : | integer, intent(in), optional
: | (in) 変換の種類
0 : 通常の正変換
1 : 緯度微分 cosφ・∂/∂φ を作用させた逆変換
-1 : 経度微分を作用させた逆変換
2 : sinφを作用させた逆変換(非実装)
省略時は 0.
|
|
スペクトルデータから格子データへ変換する(1 層用).
Original external subprogram is w_zonal_module#xy_w
xy_w( w_data, [ipow], [iflag] ) result(xy_w)
Function : |
|
xy_w(0:im-1,1:jm) : | real(8)
|
w_data(nm+1) : | real(8), intent(in)
|
ipow : | integer, intent(in), optional
: | (in) 作用させる 1/cosφ の次数. 省略時は 0.
|
|
iflag : | integer, intent(in), optional
: | (in) 変換の種類
0 : 通常の正変換
1 : 緯度微分 cosφ・∂/∂φ を作用させた逆変換
-1 : 経度微分を作用させた逆変換
2 : sinφを作用させた逆変換(非実装)
省略時は 0.
|
|
スペクトルデータから格子データへ変換する(1 層用).
Original external subprogram is w_zonal_module#xy_w
Function : |
|
xya_GradLambda_wa(0:im-1,1:jm,size(wa_data,2)) : | real(8)
: | (out) スペクトルデータを勾配型経度微分した格子点データ
|
|
wa_data(:,:) : | real(8), intent(in)
|
スペクトルデータに勾配型経度微分 ∂/∂λ を作用する(多層用).
[Source]
function xya_GradLambda_wa(wa_data)
!
! スペクトルデータに勾配型経度微分 ∂/∂λ を作用する(多層用).
!
real(8), intent(in) :: wa_data(:,:)
!(in) 入力スペクトルデータ
real(8) :: xya_GradLambda_wa(0:im-1,1:jm,size(wa_data,2))
!(out) スペクトルデータを勾配型経度微分した格子点データ
xya_GradLambda_wa = xya_wa(wa_data,ipow=0,iflag=-1)
end function xya_GradLambda_wa
Function : |
|
xya_GradLambda_wa(0:im-1,1:jm,size(wa_data,2)) : | real(8)
: | (out) スペクトルデータを勾配型経度微分した格子点データ
|
|
wa_data(:,:) : | real(8), intent(in)
|
スペクトルデータに勾配型経度微分 ∂/∂λ を作用する(多層用).
[Source]
function xya_GradLambda_wa(wa_data)
!
! スペクトルデータに勾配型経度微分 ∂/∂λ を作用する(多層用).
!
real(8), intent(in) :: wa_data(:,:)
!(in) 入力スペクトルデータ
real(8) :: xya_GradLambda_wa(0:im-1,1:jm,size(wa_data,2))
!(out) スペクトルデータを勾配型経度微分した格子点データ
xya_GradLambda_wa = xya_wa(wa_data,ipow=0,iflag=-1)
end function xya_GradLambda_wa
Function : |
|
xya_GradLat_wa(0:im-1,1:jm,size(wa_data,2)) : | real(8)
: | (out) スペクトルデータを勾配型緯度微分した格子点データ
|
|
wa_data(:,:) : | real(8), intent(in)
|
スペクトルデータに勾配型緯度微分 ∂/∂φ を作用させて
格子点データに変換して返す(多層用).
[Source]
function xya_GradLat_wa(wa_data)
!
! スペクトルデータに勾配型緯度微分 ∂/∂φ を作用させて
! 格子点データに変換して返す(多層用).
!
real(8), intent(in) :: wa_data(:,:)
!(in) 入力スペクトルデータ
real(8) :: xya_GradLat_wa(0:im-1,1:jm,size(wa_data,2))
!(out) スペクトルデータを勾配型緯度微分した格子点データ
xya_GradLat_wa = xya_wa(wa_data,ipow=1,iflag=1)
end function xya_GradLat_wa
Function : |
|
xya_GradLat_wa(0:im-1,1:jm,size(wa_data,2)) : | real(8)
: | (out) スペクトルデータを勾配型緯度微分した格子点データ
|
|
wa_data(:,:) : | real(8), intent(in)
|
スペクトルデータに勾配型緯度微分 ∂/∂φ を作用させて
格子点データに変換して返す(多層用).
[Source]
function xya_GradLat_wa(wa_data)
!
! スペクトルデータに勾配型緯度微分 ∂/∂φ を作用させて
! 格子点データに変換して返す(多層用).
!
real(8), intent(in) :: wa_data(:,:)
!(in) 入力スペクトルデータ
real(8) :: xya_GradLat_wa(0:im-1,1:jm,size(wa_data,2))
!(out) スペクトルデータを勾配型緯度微分した格子点データ
xya_GradLat_wa = xya_wa(wa_data,ipow=1,iflag=1)
end function xya_GradLat_wa
Function : |
|
xya_GradLon_wa(0:im-1,1:jm,size(wa_data,2)) : | real(8)
: | (out) スペクトルデータを勾配型経度微分した格子点データ
|
|
wa_data(:,:) : | real(8), intent(in)
|
スペクトルデータに勾配型経度微分 1/cosφ・∂/∂λ を
作用させた格子点データを返す(多層用).
[Source]
function xya_GradLon_wa(wa_data)
!
! スペクトルデータに勾配型経度微分 1/cosφ・∂/∂λ を
! 作用させた格子点データを返す(多層用).
!
real(8), intent(in) :: wa_data(:,:)
!(in) 入力スペクトルデータ
real(8) :: xya_GradLon_wa(0:im-1,1:jm,size(wa_data,2))
!(out) スペクトルデータを勾配型経度微分した格子点データ
xya_GradLon_wa = xya_wa(wa_data,ipow=1,iflag=-1)
end function xya_GradLon_wa
Function : |
|
xya_GradLon_wa(0:im-1,1:jm,size(wa_data,2)) : | real(8)
: | (out) スペクトルデータを勾配型経度微分した格子点データ
|
|
wa_data(:,:) : | real(8), intent(in)
|
スペクトルデータに勾配型経度微分 1/cosφ・∂/∂λ を
作用させた格子点データを返す(多層用).
[Source]
function xya_GradLon_wa(wa_data)
!
! スペクトルデータに勾配型経度微分 1/cosφ・∂/∂λ を
! 作用させた格子点データを返す(多層用).
!
real(8), intent(in) :: wa_data(:,:)
!(in) 入力スペクトルデータ
real(8) :: xya_GradLon_wa(0:im-1,1:jm,size(wa_data,2))
!(out) スペクトルデータを勾配型経度微分した格子点データ
xya_GradLon_wa = xya_wa(wa_data,ipow=1,iflag=-1)
end function xya_GradLon_wa
Function : |
|
xya_GradMu_wa(0:im-1,1:jm,size(wa_data,2)) : | real(8)
: | (out) スペクトルデータを勾配型緯度微分した格子点データ
|
|
wa_data(:,:) : | real(8), intent(in)
|
スペクトルデータに勾配型緯度微分 (1-μ^2)∂/∂μ (μ=sinφ)
を作用させて格子点データに変換して返す(多層用).
[Source]
function xya_GradMu_wa(wa_data)
!
! スペクトルデータに勾配型緯度微分 (1-μ^2)∂/∂μ (μ=sinφ)
! を作用させて格子点データに変換して返す(多層用).
!
real(8), intent(in) :: wa_data(:,:)
!(in) 入力スペクトルデータ
real(8) :: xya_GradMu_wa(0:im-1,1:jm,size(wa_data,2))
!(out) スペクトルデータを勾配型緯度微分した格子点データ
xya_GradMu_wa = xya_wa(wa_data,ipow=0,iflag=1)
end function xya_GradMu_wa
Function : |
|
xya_GradMu_wa(0:im-1,1:jm,size(wa_data,2)) : | real(8)
: | (out) スペクトルデータを勾配型緯度微分した格子点データ
|
|
wa_data(:,:) : | real(8), intent(in)
|
スペクトルデータに勾配型緯度微分 (1-μ^2)∂/∂μ (μ=sinφ)
を作用させて格子点データに変換して返す(多層用).
[Source]
function xya_GradMu_wa(wa_data)
!
! スペクトルデータに勾配型緯度微分 (1-μ^2)∂/∂μ (μ=sinφ)
! を作用させて格子点データに変換して返す(多層用).
!
real(8), intent(in) :: wa_data(:,:)
!(in) 入力スペクトルデータ
real(8) :: xya_GradMu_wa(0:im-1,1:jm,size(wa_data,2))
!(out) スペクトルデータを勾配型緯度微分した格子点データ
xya_GradMu_wa = xya_wa(wa_data,ipow=0,iflag=1)
end function xya_GradMu_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)
|
ipow : | integer, intent(in), optional
: | (in) 作用させる 1/cosφ の次数. 省略時は 0.
|
|
iflag : | integer, intent(in), optional
: | (in) 変換の種類
0 : 通常の正変換
1 : 緯度微分 cosφ・∂/∂φ を作用させた逆変換
-1 : 経度微分を作用させた逆変換
2 : sinφを作用させた逆変換(非実装)
省略時は 0.
|
|
スペクトルデータから格子データへ変換する(多層用).
[Source]
function xya_wa(wa_data,ipow,iflag)
!
! スペクトルデータから格子データへ変換する(多層用).
!
real(8), intent(in) :: wa_data(:,:)
!(in) スペクトルデータ(nm+1,:)
!
real(8) :: xya_wa(0:im-1,1:jm,size(wa_data,2))
!(out) 格子点データ(0:im-1,1:jm,:)
integer, intent(in), optional :: ipow
!(in) 作用させる 1/cosφ の次数. 省略時は 0.
integer, intent(in), optional :: iflag
!(in) 変換の種類
! 0 : 通常の正変換
! 1 : 緯度微分 cosφ・∂/∂φ を作用させた逆変換
! -1 : 経度微分を作用させた逆変換
! 2 : sinφを作用させた逆変換(非実装)
! 省略時は 0.
!
integer, parameter :: ipow_default = 0
integer, parameter :: iflag_default = 0
integer ipval, ifval, i
if (present(ipow)) then
ipval = ipow
else
ipval = ipow_default
endif
if (present(iflag)) then
ifval = iflag
else
ifval = iflag_default
endif
if ( ifval == -1 ) then ! 経度微分は 0
xya_wa = 0.0D0
else if ( ifval == 1 ) then ! 緯度微分
do i=0,im-1
xya_wa(i,:,:) = ya_GradLat_wa(wa_data) * spread(cos(y_Lat),2,size(wa_data,2))
enddo
else if ( ifval == 2 ) then ! sinφ をかけた逆変換
do i=0,im-1
xya_wa(i,:,:) = ya_wa(wa_data)
enddo
xya_wa = xya_wa * spread(sin(xy_Lat),3,size(wa_data,2))
else
do i=0,im-1
xya_wa(i,:,:) = ya_wa(wa_data)
enddo
endif
if ( ipval /= 0 ) then
xya_wa = xya_wa/spread(cos(xy_Lat)**ipval,3,size(wa_data,2))
end if
end function 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)
|
ipow : | integer, intent(in), optional
: | (in) 作用させる 1/cosφ の次数. 省略時は 0.
|
|
iflag : | integer, intent(in), optional
: | (in) 変換の種類
0 : 通常の正変換
1 : 緯度微分 cosφ・∂/∂φ を作用させた逆変換
-1 : 経度微分を作用させた逆変換
2 : sinφを作用させた逆変換(非実装)
省略時は 0.
|
|
スペクトルデータから格子データへ変換する(多層用).
[Source]
function xya_wa(wa_data,ipow,iflag)
!
! スペクトルデータから格子データへ変換する(多層用).
!
real(8), intent(in) :: wa_data(:,:)
!(in) スペクトルデータ(nm+1,:)
!
real(8) :: xya_wa(0:im-1,1:jm,size(wa_data,2))
!(out) 格子点データ(0:im-1,1:jm,:)
integer, intent(in), optional :: ipow
!(in) 作用させる 1/cosφ の次数. 省略時は 0.
integer, intent(in), optional :: iflag
!(in) 変換の種類
! 0 : 通常の正変換
! 1 : 緯度微分 cosφ・∂/∂φ を作用させた逆変換
! -1 : 経度微分を作用させた逆変換
! 2 : sinφを作用させた逆変換(非実装)
! 省略時は 0.
!
integer, parameter :: ipow_default = 0
integer, parameter :: iflag_default = 0
integer ipval, ifval, i
if (present(ipow)) then
ipval = ipow
else
ipval = ipow_default
endif
if (present(iflag)) then
ifval = iflag
else
ifval = iflag_default
endif
if ( ifval == -1 ) then ! 経度微分は 0
xya_wa = 0.0D0
else if ( ifval == 1 ) then ! 緯度微分
do i=0,im-1
xya_wa(i,:,:) = ya_GradLat_wa(wa_data) * spread(cos(y_Lat),2,size(wa_data,2))
enddo
else if ( ifval == 2 ) then ! sinφ をかけた逆変換
do i=0,im-1
xya_wa(i,:,:) = ya_wa(wa_data)
enddo
xya_wa = xya_wa * spread(sin(xy_Lat),3,size(wa_data,2))
else
do i=0,im-1
xya_wa(i,:,:) = ya_wa(wa_data)
enddo
endif
if ( ipval /= 0 ) then
xya_wa = xya_wa/spread(cos(xy_Lat)**ipval,3,size(wa_data,2))
end if
end function xya_wa
y_AvrLon_xy( xy_data ) result(y_AvrLon_xy)
Function : |
|
y_AvrLon_xy(1:jm) : | real(8)
: | (out) 平均された 1 次元緯度(Y)格子点
|
|
xy_data(0:im-1,1:jm) : | real(8), intent(in)
: | (in) 2 次元経度緯度格子点データ(0:im-1,1:jm)
|
|
2 次元緯度経度格子点データの経度(X)方向平均(1 層用).
実際には格子点データ各点毎に x_X_Weight をかけた総和を計算し, x_X_Weight
の総和で割ることで平均している.
Original external subprogram is w_zonal_module#y_AvrLon_xy
y_AvrLon_xy( xy_data ) result(y_AvrLon_xy)
Function : |
|
y_AvrLon_xy(1:jm) : | real(8)
: | (out) 平均された 1 次元緯度(Y)格子点
|
|
xy_data(0:im-1,1:jm) : | real(8), intent(in)
: | (in) 2 次元経度緯度格子点データ(0:im-1,1:jm)
|
|
2 次元緯度経度格子点データの経度(X)方向平均(1 層用).
実際には格子点データ各点毎に x_X_Weight をかけた総和を計算し, x_X_Weight
の総和で割ることで平均している.
Original external subprogram is w_zonal_module#y_AvrLon_xy
y_AvrLon_xy( xy_data ) result(y_AvrLon_xy)
Function : |
|
y_AvrLon_xy(1:jm) : | real(8)
: | (out) 平均された 1 次元緯度(Y)格子点
|
|
xy_data(0:im-1,1:jm) : | real(8), intent(in)
: | (in) 2 次元経度緯度格子点データ(0:im-1,1:jm)
|
|
2 次元緯度経度格子点データの経度(X)方向平均(1 層用).
実際には格子点データ各点毎に x_X_Weight をかけた総和を計算し, x_X_Weight
の総和で割ることで平均している.
Original external subprogram is w_zonal_module#y_AvrLon_xy
y_IntLon_xy( xy_data ) result(y_IntLon_xy)
Function : |
|
y_IntLon_xy(1:jm) : | real(8)
: | (out) 積分された 1 次元緯度(Y)格子点データ
|
|
xy_data(0:im-1,1:jm) : | real(8), intent(in)
: | (in) 2 次元経度緯度格子点データ(0:im-1,1:jm)
|
|
2 次元緯度経度格子点データの経度(X)方向積分(1 層用).
実際には格子点データ各点毎に x_X_Weight をかけた総和を計算している.
Original external subprogram is w_zonal_module#y_IntLon_xy
y_IntLon_xy( xy_data ) result(y_IntLon_xy)
Function : |
|
y_IntLon_xy(1:jm) : | real(8)
: | (out) 積分された 1 次元緯度(Y)格子点データ
|
|
xy_data(0:im-1,1:jm) : | real(8), intent(in)
: | (in) 2 次元経度緯度格子点データ(0:im-1,1:jm)
|
|
2 次元緯度経度格子点データの経度(X)方向積分(1 層用).
実際には格子点データ各点毎に x_X_Weight をかけた総和を計算している.
Original external subprogram is w_zonal_module#y_IntLon_xy
y_IntLon_xy( xy_data ) result(y_IntLon_xy)
Function : |
|
y_IntLon_xy(1:jm) : | real(8)
: | (out) 積分された 1 次元緯度(Y)格子点データ
|
|
xy_data(0:im-1,1:jm) : | real(8), intent(in)
: | (in) 2 次元経度緯度格子点データ(0:im-1,1:jm)
|
|
2 次元緯度経度格子点データの経度(X)方向積分(1 層用).
実際には格子点データ各点毎に x_X_Weight をかけた総和を計算している.
Original external subprogram is w_zonal_module#y_IntLon_xy
Function : |
|
ya_AvrLon_xya(1:jm,size(xya_data,3)) : | real(8)
: | (out) 平均された 1 次元緯度(Y)格子点の並び(1:jm,*)
|
|
xya_data(0:,:,:) : | real(8), intent(in)
: | (in) 2 次元経度緯度格子点データの並び(0:im-1,1:jm,*)
|
|
2 次元緯度経度格子点データの経度(X)方向平均(多層用).
実際には格子点データ各点毎に x_X_Weight をかけた総和を計算し, x_X_Weight
の総和で割ることで平均している.
[Source]
function ya_AvrLon_xya(xya_data)
!
! 2 次元緯度経度格子点データの経度(X)方向平均(多層用).
!
! 実際には格子点データ各点毎に x_X_Weight をかけた総和を計算し,
! x_X_Weight の総和で割ることで平均している.
!
real(8), intent(in) :: xya_data(0:,:,:)
!(in) 2 次元経度緯度格子点データの並び(0:im-1,1:jm,*)
real(8) :: ya_AvrLon_xya(1:jm,size(xya_data,3))
!(out) 平均された 1 次元緯度(Y)格子点の並び(1:jm,*)
ya_AvrLon_xya = ya_IntLon_xya(xya_data)/sum(x_Lon_Weight)
end function ya_AvrLon_xya
Function : |
|
ya_AvrLon_xya(1:jm,size(xya_data,3)) : | real(8)
: | (out) 平均された 1 次元緯度(Y)格子点の並び(1:jm,*)
|
|
xya_data(0:,:,:) : | real(8), intent(in)
: | (in) 2 次元経度緯度格子点データの並び(0:im-1,1:jm,*)
|
|
2 次元緯度経度格子点データの経度(X)方向平均(多層用).
実際には格子点データ各点毎に x_X_Weight をかけた総和を計算し, x_X_Weight
の総和で割ることで平均している.
[Source]
function ya_AvrLon_xya(xya_data)
!
! 2 次元緯度経度格子点データの経度(X)方向平均(多層用).
!
! 実際には格子点データ各点毎に x_X_Weight をかけた総和を計算し,
! x_X_Weight の総和で割ることで平均している.
!
real(8), intent(in) :: xya_data(0:,:,:)
!(in) 2 次元経度緯度格子点データの並び(0:im-1,1:jm,*)
real(8) :: ya_AvrLon_xya(1:jm,size(xya_data,3))
!(out) 平均された 1 次元緯度(Y)格子点の並び(1:jm,*)
ya_AvrLon_xya = ya_IntLon_xya(xya_data)/sum(x_Lon_Weight)
end function ya_AvrLon_xya
Function : |
|
ya_IntLon_xya(1:jm,size(xya_data,3)) : | real(8)
: | (out) 積分された 1 次元緯度(Y)格子点データの並び
|
|
xya_data(0:,:,:) : | real(8), intent(in)
: | (in) 2 次元経度緯度格子点データの並び(0:im-1,1:jm,*)
|
|
2 次元緯度経度格子点データの経度(X)方向積分(多層用).
実際には格子点データ各点毎に x_X_Weight をかけた総和を計算している.
[Source]
function ya_IntLon_xya(xya_data)
!
! 2 次元緯度経度格子点データの経度(X)方向積分(多層用).
!
! 実際には格子点データ各点毎に x_X_Weight をかけた総和を計算している.
!
real(8), intent(in) :: xya_data(0:,:,:)
!(in) 2 次元経度緯度格子点データの並び(0:im-1,1:jm,*)
real(8) :: ya_IntLon_xya(1:jm,size(xya_data,3))
!(out) 積分された 1 次元緯度(Y)格子点データの並び
integer :: i
ya_IntLon_xya = 0.0D0
do i=0,im-1
ya_IntLon_xya = ya_IntLon_xya + xya_data(i,:,:) * x_Lon_Weight(i)
enddo
end function ya_IntLon_xya
Function : |
|
ya_IntLon_xya(1:jm,size(xya_data,3)) : | real(8)
: | (out) 積分された 1 次元緯度(Y)格子点データの並び
|
|
xya_data(0:,:,:) : | real(8), intent(in)
: | (in) 2 次元経度緯度格子点データの並び(0:im-1,1:jm,*)
|
|
2 次元緯度経度格子点データの経度(X)方向積分(多層用).
実際には格子点データ各点毎に x_X_Weight をかけた総和を計算している.
[Source]
function ya_IntLon_xya(xya_data)
!
! 2 次元緯度経度格子点データの経度(X)方向積分(多層用).
!
! 実際には格子点データ各点毎に x_X_Weight をかけた総和を計算している.
!
real(8), intent(in) :: xya_data(0:,:,:)
!(in) 2 次元経度緯度格子点データの並び(0:im-1,1:jm,*)
real(8) :: ya_IntLon_xya(1:jm,size(xya_data,3))
!(out) 積分された 1 次元緯度(Y)格子点データの並び
integer :: i
ya_IntLon_xya = 0.0D0
do i=0,im-1
ya_IntLon_xya = ya_IntLon_xya + xya_data(i,:,:) * x_Lon_Weight(i)
enddo
end function ya_IntLon_xya