Public Instance methods
AvrLatRad_vr( vr ) result(AvrLatRad_vr)
Function : |
|
AvrLatRad_vr : | real(8)
|
vr : | real(8), dimension(1:jc,km), intent(in)
: | (in) 2 次元緯度動径(子午面)格子点データ
|
|
緯度動径(子午面)積分
2 次元(VR)格子点データの緯度動径(子午面)平均
2 次元データ f(φ,r) に対して
∫f(φ,r) r^2cosφ dφdr /(2(r[o]^3-r[i]^3)/3)
を計算する.
Original external subprogram is wq_mpi_module#AvrLatRad_vr
AvrLatRad_vz( vz ) result(AvrLatRad_vz)
Function : |
|
AvrLatRad_vz : | real(8)
|
vz : | real(8), dimension(jc,0:km),
intent(in)
: | (in) 2 次元緯度動径(子午面)格子点データ
|
|
緯度動径(子午面)積分
2 次元(VZ)格子点データの緯度動径(子午面)平均
2 次元データ f(φ,r) に対して
∫f(φ,r) r^2cosφ dφdr /(2(r[o]^3-r[i]^3)/3)
を計算する.
Original external subprogram is wt_mpi_module#AvrLatRad_vz
AvrLatRad_yr( yr ) result(AvrLatRad_yr)
Function : |
|
AvrLatRad_yr : | real(8)
|
yr : | real(8), dimension(1:jm,km), intent(in)
: | (in) 2 次元緯度動径(子午面)格子点データ
|
|
緯度動径(子午面)積分
2 次元(YR)格子点データの緯度動径(子午面)平均
2 次元データ f(φ,r) に対して
∫f(φ,r) r^2cosφ dφdr /(2(r[o]^3-r[i]^3)/3)
を計算する.
Original external subprogram is wq_mpi_module#AvrLatRad_yr
AvrLatRad_yz( yz ) result(AvrLatRad_yz)
Function : |
|
AvrLatRad_yz : | real(8)
|
yz : | real(8), dimension(1:jm,0:km), intent(in)
: | (in) 2 次元緯度動径(子午面)格子点データ
|
|
緯度動径(子午面)積分
2 次元(YZ)格子点データの緯度動径(子午面)平均
2 次元データ f(φ,r) に対して
∫f(φ,r) r^2cosφ dφdr /(2(r[o]^3-r[i]^3)/3)
を計算する.
Original external subprogram is wt_mpi_module#AvrLatRad_yz
AvrLat_v( v_data ) result(AvrLat_v)
Function : |
|
AvrLat_v : | real(8)
|
v_data(jc) : | real(8), intent(in)
|
1 次元(Y)格子点データの緯度(Y)方向平均(1 層用).
実際には格子点データ各点毎に v_Y_Weight をかけた総和を計算し, v_Y_Weight
の総和で割ることで平均している.
Original external subprogram is wq_mpi_module#AvrLat_v
AvrLat_v( v_data ) result(AvrLat_v)
Function : |
|
AvrLat_v : | real(8)
|
v_data(jc) : | real(8), intent(in)
|
1 次元(Y)格子点データの緯度(Y)方向平均(1 層用).
実際には格子点データ各点毎に v_Y_Weight をかけた総和を計算し, v_Y_Weight
の総和で割ることで平均している.
Original external subprogram is wt_mpi_module#AvrLat_v
AvrLat_y( y_data ) result(AvrLat_y)
Function : |
|
AvrLat_y : | real(8)
|
y_data(1:jm) : | real(8), intent(in)
|
1 次元(Y)格子点データの緯度(Y)方向平均(1 層用).
実際には格子点データ各点毎に y_Y_Weight をかけた総和を計算し, y_Y_Weight
の総和で割ることで平均している.
Original external subprogram is wq_mpi_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)方向平均(1 層用).
実際には格子点データ各点毎に y_Y_Weight をかけた総和を計算し, y_Y_Weight
の総和で割ることで平均している.
Original external subprogram is wt_mpi_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)方向平均(1 層用).
実際には格子点データ各点毎に y_Y_Weight をかけた総和を計算し, y_Y_Weight
の総和で割ることで平均している.
Original external subprogram is wq_mpi_module#AvrLat_y
AvrLonLatRad_xvr( xvr ) result(AvrLonLatRad_xvr)
Function : |
|
AvrLonLatRad_xvr : | real(8)
|
xvr : | real(8), dimension(0:im-1,1:jc,km), intent(in)
|
緯度経度動径(全球)積分
3 次元格子点データの緯度経度動径(全球)積分
3 次元データ f(λ,φ,r) に対して
∫f(λ,φ,r) r^2cosφ dλdφdr /(4π(r[o]^3-r[i]^3)/3)
を計算する.
Original external subprogram is wq_mpi_module#AvrLonLatRad_xvr
AvrLonLatRad_xvz( xvz ) result(AvrLonLatRad_xvz)
緯度経度動径(全球)積分
3 次元格子点データの緯度経度動径(全球)積分
3 次元データ f(λ,φ,r) に対して
∫f(λ,φ,r) r^2cosφ dλdφdr /(4π(r[o]^3-r[i]^3)/3)
を計算する.
Original external subprogram is wt_mpi_module#AvrLonLatRad_xvz
AvrLonLatRad_xyr( xyr ) result(AvrLonLatRad_xyr)
Function : |
|
AvrLonLatRad_xyr : | real(8)
|
xyr : | real(8), dimension(0:im-1,1:jm,km), intent(in)
|
緯度経度動径(全球)積分
3 次元格子点データの緯度経度動径(全球)積分
3 次元データ f(λ,φ,r) に対して
∫f(λ,φ,r) r^2cosφ dλdφdr /(4π(r[o]^3-r[i]^3)/3)
を計算する.
Original external subprogram is wq_mpi_module#AvrLonLatRad_xyr
AvrLonLatRad_xyz( xyz ) result(AvrLonLatRad_xyz)
Function : |
|
AvrLonLatRad_xyz : | real(8)
|
xyz : | real(8), dimension(0:im-1,1:jm,0:km), intent(in)
|
緯度経度動径(全球)積分
3 次元格子点データの緯度経度動径(全球)積分
3 次元データ f(λ,φ,r) に対して
∫f(λ,φ,r) r^2cosφ dλdφdr /(4π(r[o]^3-r[i]^3)/3)
を計算する.
Original external subprogram is wt_mpi_module#AvrLonLatRad_xyz
AvrLonLat_xv( xv_data ) result(AvrLonLat_xv)
Function : |
|
AvrLonLat_xv : | real(8)
|
xv_data(0:im-1,jc) : | real(8), intent(in)
: | (in) 2 次元経度緯度格子点データ(0:im-1,jc)
|
|
2 次元緯度経度格子点データの全領域平均(1 層用).
実際には格子点データ各点毎に x_X_Weight, v_Y_Weight をかけた 総和を計算し,
x_X_Weight*v_Y_Weight の総和で割ることで平均している.
Original external subprogram is wq_mpi_module#AvrLonLat_xv
AvrLonLat_xv( xv_data ) result(AvrLonLat_xv)
Function : |
|
AvrLonLat_xv : | real(8)
|
xv_data(0:im-1,jc) : | real(8), intent(in)
: | (in) 2 次元経度緯度格子点データ(0:im-1,jc)
|
|
2 次元緯度経度格子点データの全領域平均(1 層用).
実際には格子点データ各点毎に x_X_Weight, v_Y_Weight をかけた 総和を計算し,
x_X_Weight*v_Y_Weight の総和で割ることで平均している.
Original external subprogram is wt_mpi_module#AvrLonLat_xv
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 wq_mpi_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 wt_mpi_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 wq_mpi_module#AvrLonLat_xy
AvrLonRad_xr( xr ) result(AvrLonRad_xr)
Function : |
|
AvrLonRad_xr : | real(8)
|
xr : | real(8), dimension(0:im-1,km), intent(in)
|
経度動径(緯度円)積分
2 次元(XR)格子点データの経度動径平均
2 次元データ f(λ,r) に対して
∫f(λ,r) r^2dλdr /(2π(r[o]^3-r[i]^3)/3)
を計算する.
Original external subprogram is wq_mpi_module#AvrLonRad_xr
AvrLonRad_xz( xz ) result(AvrLonRad_xz)
Function : |
|
AvrLonRad_xz : | real(8)
|
xz : | real(8), dimension(0:im-1,0:km), intent(in)
|
経度動径(緯度円)積分
2 次元(XZ)格子点データの経度動径平均
2 次元データ f(λ,r) に対して
∫f(λ,r) r^2dλdr /(2π(r[o]^3-r[i]^3)/3)
を計算する.
Original external subprogram is wt_mpi_module#AvrLonRad_xz
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 wq_mpi_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 wt_mpi_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 wq_mpi_module#AvrLon_x
AvrRad_r( z ) result(AvrRad_r)
Function : |
|
AvrRad_r : | real(8)
|
z : | real(8), dimension(km), intent(in)
|
1 次元(Z)格子点データの動径方向域平均.
1 次元データ f(r) に対して ∫f(r) r^2dr /((r[o]^3-r[i]^3)/3) を 計算する.
Original external subprogram is wq_mpi_module#AvrRad_r
AvrRad_z( z ) result(AvrRad_z)
Function : |
|
AvrRad_z : | real(8)
|
z : | real(8), dimension(0:km), intent(in)
|
1 次元(Z)格子点データの動径方向域平均.
1 次元データ f(r) に対して ∫f(r) r^2dr /((r[o]^3-r[i]^3)/3) を 計算する.
Original external subprogram is wt_mpi_module#AvrRad_z
IntLatRad_vr( vr ) result(IntLatRad_vr)
Function : |
|
IntLatRad_vr : | real(8)
|
vr : | real(8), dimension(1:jc,km), intent(in)
: | (in) 2 次元緯度動径(子午面)格子点データ
|
|
2 次元(VR)格子点データの緯度動径積分(子午面)および平均
2 次元データ f(φ,r) に対して ∫f(φ,r) r^2cosφ dφdr を計算する.
Original external subprogram is wq_mpi_module#IntLatRad_vr
IntLatRad_vz( vz ) result(IntLatRad_vz)
Function : |
|
IntLatRad_vz : | real(8)
|
vz : | real(8), dimension(jc,0:km),
intent(in)
: | (in) 2 次元緯度動径(子午面)格子点データ
|
|
2 次元(VZ)格子点データの緯度動径積分(子午面)および平均
2 次元データ f(φ,r) に対して ∫f(φ,r) r^2cosφ dφdr を計算する.
Original external subprogram is wt_mpi_module#IntLatRad_vz
IntLatRad_yr( yr ) result(IntLatRad_yr)
Function : |
|
IntLatRad_yr : | real(8)
|
yr : | real(8), dimension(1:jm,km), intent(in)
: | (in) 2 次元緯度動径(子午面)格子点データ
|
|
2 次元(YR)格子点データの緯度動径積分(子午面)および平均
2 次元データ f(φ,r) に対して ∫f(φ,r) r^2cosφ dφdr を計算する.
Original external subprogram is wq_mpi_module#IntLatRad_yr
IntLatRad_yz( yz ) result(IntLatRad_yz)
Function : |
|
IntLatRad_yz : | real(8)
|
yz : | real(8), dimension(1:jm,0:km), intent(in)
: | (in) 2 次元緯度動径(子午面)格子点データ
|
|
2 次元(YZ)格子点データの緯度動径積分(子午面)および平均
2 次元データ f(φ,r) に対して ∫f(φ,r) r^2cosφ dφdr を計算する.
Original external subprogram is wt_mpi_module#IntLatRad_yz
IntLat_v( v_data ) result(IntLat_v)
Function : |
|
IntLat_v : | real(8)
|
v_data(jc) : | real(8), intent(in)
|
1 次元緯度(Y)格子点データの Y 方向積分(1 層用).
実際には格子点データ各点毎に v_Y_Weight をかけた総和を計算している.
Original external subprogram is wq_mpi_module#IntLat_v
IntLat_v( v_data ) result(IntLat_v)
Function : |
|
IntLat_v : | real(8)
|
v_data(jc) : | real(8), intent(in)
|
1 次元緯度(Y)格子点データの Y 方向積分(1 層用).
実際には格子点データ各点毎に v_Y_Weight をかけた総和を計算している.
Original external subprogram is wt_mpi_module#IntLat_v
IntLat_y( y_data ) result(IntLat_y)
Function : |
|
IntLat_y : | real(8)
|
y_data(1:jm) : | real(8), intent(in)
|
1 次元緯度(Y)格子点データの Y 方向積分(1 層用).
実際には格子点データ各点毎に y_Y_Weight をかけた総和を計算している.
Original external subprogram is wq_mpi_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 方向積分(1 層用).
実際には格子点データ各点毎に y_Y_Weight をかけた総和を計算している.
Original external subprogram is wt_mpi_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 方向積分(1 層用).
実際には格子点データ各点毎に y_Y_Weight をかけた総和を計算している.
Original external subprogram is wq_mpi_module#IntLat_y
IntLonLatRad_xvr( xvr ) result(IntLonLatRad_xvr)
Function : |
|
IntLonLatRad_xvr : | real(8)
|
xvr : | real(8), dimension(0:im-1,1:jc,km), intent(in)
|
緯度経度動径(全球)積分
3 次元格子点データの緯度経度動径(全球)積分
3 次元データ f(λ,φ,r) に対して
∫f(λ,φ,r) r^2cosφ dλdφdr
を計算する.
Original external subprogram is wq_mpi_module#IntLonLatRad_xvr
IntLonLatRad_xvz( xvz ) result(IntLonLatRad_xvz)
緯度経度動径(全球)積分
3 次元格子点データの緯度経度動径(全球)積分
3 次元データ f(λ,φ,r) に対して
∫f(λ,φ,r) r^2cosφ dλdφdr
を計算する.
Original external subprogram is wt_mpi_module#IntLonLatRad_xvz
IntLonLatRad_xyr( xyr ) result(IntLonLatRad_xyr)
Function : |
|
IntLonLatRad_xyr : | real(8)
|
xyr : | real(8), dimension(0:im-1,1:jm,km), intent(in)
|
緯度経度動径(全球)積分
3 次元格子点データの緯度経度動径(全球)積分
3 次元データ f(λ,φ,r) に対して
∫f(λ,φ,r) r^2cosφ dλdφdr
を計算する.
Original external subprogram is wq_mpi_module#IntLonLatRad_xyr
IntLonLatRad_xyz( xyz ) result(IntLonLatRad_xyz)
Function : |
|
IntLonLatRad_xyz : | real(8)
|
xyz : | real(8), dimension(0:im-1,1:jm,0:km), intent(in)
|
緯度経度動径(全球)積分
3 次元格子点データの緯度経度動径(全球)積分
3 次元データ f(λ,φ,r) に対して
∫f(λ,φ,r) r^2cosφ dλdφdr
を計算する.
Original external subprogram is wt_mpi_module#IntLonLatRad_xyz
IntLonLat_xv( xv_data ) result(IntLonLat_xv)
Function : |
|
IntLonLat_xv : | real(8)
|
xv_data(0:im-1,jc) : | real(8), intent(in)
: | (in) 2 次元経度緯度格子点データ(0:im-1,jc)
|
|
2 次元緯度経度格子点データの全領域積分(1 層用).
実際には格子点データ各点毎に x_X_Weight, v_V_Weight をかけた
総和を計算している.
Original external subprogram is wq_mpi_module#IntLonLat_xv
IntLonLat_xv( xv_data ) result(IntLonLat_xv)
Function : |
|
IntLonLat_xv : | real(8)
|
xv_data(0:im-1,jc) : | real(8), intent(in)
: | (in) 2 次元経度緯度格子点データ(0:im-1,jc)
|
|
2 次元緯度経度格子点データの全領域積分(1 層用).
実際には格子点データ各点毎に x_X_Weight, v_V_Weight をかけた
総和を計算している.
Original external subprogram is wt_mpi_module#IntLonLat_xv
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 wq_mpi_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 wt_mpi_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 wq_mpi_module#IntLonLat_xy
IntLonRad_xr( xr ) result(IntLonRad_xr)
Function : |
|
IntLonRad_xr : | real(8)
|
xr : | real(8), dimension(0:im-1,km), intent(in)
|
経度動径(緯度円)積分
2 次元(XR)格子点データの経度動径積分
2 次元データ f(λ,r) に対して∫f(λ,r) r^2dλdr を計算する.
Original external subprogram is wq_mpi_module#IntLonRad_xr
IntLonRad_xz( xz ) result(IntLonRad_xz)
Function : |
|
IntLonRad_xz : | real(8)
|
xz : | real(8), dimension(0:im-1,0:km), intent(in)
|
経度動径(緯度円)積分
2 次元(XZ)格子点データの経度動径積分
2 次元データ f(λ,r) に対して∫f(λ,r) r^2dλdr を計算する.
Original external subprogram is wt_mpi_module#IntLonRad_xz
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 wq_mpi_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 wt_mpi_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 wq_mpi_module#IntLon_x
IntRad_r( z ) result(IntRad_r)
Function : |
|
IntRad_r : | real(8)
|
z : | real(8), dimension(km), intent(in)
|
動径積分
1 次元(Z)格子点データの動径方向域積分.
1 次元データ f(r) に対して ∫f(r) r^2dr を計算する.
Original external subprogram is wq_mpi_module#IntRad_r
IntRad_z( z ) result(IntRad_z)
Function : |
|
IntRad_z : | real(8)
|
z : | real(8), dimension(0:km), intent(in)
|
動径積分
1 次元(Z)格子点データの動径方向域積分.
1 次元データ f(r) に対して ∫f(r) r^2dr を計算する.
Original external subprogram is wt_mpi_module#IntRad_z
Interpolate_wt( wt_data, alon, alat, arad ) result(Interpolate_wt)
Function : |
|
Interpolate_wt : | real(8)
|
wt_data((nm+1)**2,0:km) : | real(8), intent(IN)
|
alon : | real(8), intent(IN)
|
alat : | real(8), intent(IN)
|
arad : | real(8), intent(IN)
|
緯度 alon, 経度 alat 動径 arad における関数値を その球面調和変換係数
wa_data から補間計算する
Original external subprogram is wt_mpi_module#Interpolate_wt
at_Dr_at( at_data ) result(at_Dx_at)
Function : |
|
at_Dx_at : | real(8), dimension(size(at_data,1),0:size(at_data,2)-1)
|
at_data : | real(8), dimension(:,0:), intent(in)
|
入力チェビシェフデータに X 微分を作用する(2 次元配列用).
チェビシェフデータの X 微分とは, 対応する格子点データに X 微分を
作用させたデータのチェビシェフ変換のことである.
Original external subprogram is wt_mpi_module#at_Dr_at
at_az( ag_data ) result(at_ag)
Function : |
|
at_ag : | real(8), dimension(size(ag_data,1),0:km)
|
ag_data : | real(8), dimension(:,:), intent(in)
|
格子データからチェビシェフデータへ変換する(2 次元配列用).
Original external subprogram is wt_mpi_module#at_az
az_at( at_data ) result(ag_at)
Function : |
|
ag_at : | real(8), dimension(size(at_data,1),0:im)
|
at_data : | real(8), dimension(:,:), intent(in)
|
チェビシェフデータから格子データへ変換する(2 次元配列用).
Original external subprogram is wt_mpi_module#az_at
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 wq_mpi_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 wt_mpi_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 wq_mpi_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 wq_mpi_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 wt_mpi_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 wq_mpi_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 wq_mpi_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 wt_mpi_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 wq_mpi_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 wq_mpi_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 wt_mpi_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 wq_mpi_module#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 wq_mpi_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 wt_mpi_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 wq_mpi_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 wq_mpi_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 wt_mpi_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 wq_mpi_module#nm_l
nmr_PoloidalEnergySpectrum_wq( wq_POLPOT ) result(nmr_PoloidalEnergySpectrum_wq)
Function : |
|
nmr_PoloidalEnergySpectrum_wq : | real(8), dimension(0:nm,-nm:nm,km)
: | (out) エネルギースペクトルポロイダル成分
|
|
wq_POLPOT : | real(8), dimension((nm+1)*(nm+1),0:lm), intent(in)
|
ポロイダルポテンシャルから, ポロイダルエネルギーの 球面調和函数全波数 n,
帯状波数 m の各成分を計算する.
* 全波数 n, 帯状波数 m のポロイダルポテンシャルのスペクトル成分
φ(n,m,r)から全波数 n, 帯状波数 m 成分のポロイダルエネルギー
スペクトルは
(1/2)n(n+1)4πr^2{[d(rφ(n,m,r))/dr]^2 + n(n+1)φ(n,m,r)^2}
と計算される.
* 全てのエネルギースペクトル成分の和を動径積分したもの(r^2の重み無し)
が球殻内での全エネルギーに等しい.
* データの存在しない全波数 n, 帯状波数 m の配列には欠損値が格納される.
欠損値の値はモジュール変数 wq_VMiss によって設定できる
(初期値は -999.0)
Original external subprogram is wq_mpi_module#nmr_PoloidalEnergySpectrum_wq
nmr_ToroidalEnergySpectrum_wq( wq_TORPOT ) result(nmr_ToroidalEnergySpectrum_wq)
Function : |
|
nmr_ToroidalEnergySpectrum_wq : | real(8), dimension(0:nm,-nm:nm,km)
: | (out) エネルギースペクトルトロイダル成分
|
|
wq_TORPOT : | real(8), dimension((nm+1)*(nm+1),0:lm), intent(in)
|
トロイダルポテンシャルから, トロイダルエネルギーの 球面調和函数全波数 n,
帯状波数 m の各成分を計算する
* 全波数 n, 帯状波数 m のトロイダルポテンシャルのスペクトル成分
ψ(n,m,r)から全波数 n, 帯状波数 m 成分のトロイダルエネルギー
スペクトルは (1/2)n(n+1)4πr^2ψ(n,m,r)^2 と計算される.
* 全てのエネルギースペクトル成分の和を動径積分したもの(r^2の重み無し)
が球殻内での全エネルギーに等しい.
* データの存在しない全波数 n, 帯状波数 m の配列には欠損値が格納される.
wq_VMiss によって設定できる (初期値は -999.0)
Original external subprogram is wq_mpi_module#nmr_ToroidalEnergySpectrum_wq
nmz_PoloidalEnergySpectrum_wt( wt_POLPOT ) result(nmz_PoloidalEnergySpectrum_wt)
Function : |
|
nmz_PoloidalEnergySpectrum_wt : | real(8), dimension(0:nm,-nm:nm,0:km)
: | (out) エネルギースペクトルポロイダル成分
|
|
wt_POLPOT : | real(8), dimension((nm+1)*(nm+1),0:lm), intent(in)
|
ポロイダルポテンシャルから, ポロイダルエネルギーの 球面調和函数全波数 n,
帯状波数 m の各成分を計算する.
* 全波数 n, 帯状波数 m のポロイダルポテンシャルのスペクトル成分
φ(n,m,r)から全波数 n, 帯状波数 m 成分のポロイダルエネルギー
スペクトルは
(1/2)n(n+1)4πr^2{[d(rφ(n,m,r))/dr]^2 + n(n+1)φ(n,m,r)^2}
と計算される.
* 全てのエネルギースペクトル成分の和を動径積分したもの(r^2の重み無し)
が球殻内での全エネルギーに等しい.
* データの存在しない全波数 n, 帯状波数 m の配列には欠損値が格納される.
欠損値の値はモジュール変数 wt_VMiss によって設定できる
(初期値は -999.0)
Original external subprogram is wt_mpi_module#nmz_PoloidalEnergySpectrum_wt
nmz_ToroidalEnergySpectrum_wt( wt_TORPOT ) result(nmz_ToroidalEnergySpectrum_wt)
Function : |
|
nmz_ToroidalEnergySpectrum_wt : | real(8), dimension(0:nm,-nm:nm,0:km)
: | (out) エネルギースペクトルトロイダル成分
|
|
wt_TORPOT : | real(8), dimension((nm+1)*(nm+1),0:lm), intent(in)
|
トロイダルポテンシャルから, トロイダルエネルギーの 球面調和函数全波数 n,
帯状波数 m の各成分を計算する
* 全波数 n, 帯状波数 m のトロイダルポテンシャルのスペクトル成分
ψ(n,m,r)から全波数 n, 帯状波数 m 成分のトロイダルエネルギー
スペクトルは (1/2)n(n+1)4πr^2ψ(n,m,r)^2 と計算される.
* 全てのエネルギースペクトル成分の和を動径積分したもの(r^2の重み無し)
が球殻内での全エネルギーに等しい.
* データの存在しない全波数 n, 帯状波数 m の配列には欠損値が格納される.
wt_VMiss によって設定できる (初期値は -999.0)
Original external subprogram is wt_mpi_module#nmz_ToroidalEnergySpectrum_wt
nr_PoloidalEnergySpectrum_wq( wq_POLPOT ) result(nr_PoloidalEnergySpectrum_wq)
Function : |
|
nr_PoloidalEnergySpectrum_wq : | real(8), dimension(0:nm,km)
: | (out) エネルギースペクトルポロイダル成分
|
|
wq_POLPOT : | real(8), dimension((nm+1)*(nm+1),0:lm), intent(in)
|
ポロイダルポテンシャルから, ポロイダルエネルギーの
球面調和函数全波数の各成分を計算する
* 全波数 n, 帯状波数 m のポロイダルポテンシャルのスペクトル成分
φ(n,m,r)から全波数 n 成分のポロイダルエネルギースペクトルは
Σ[m=-n]^n ((1/2)n(n+1)4πr^2{[d(rφ(n,m,r))/dr]^2
+ n(n+1)φ(n,m,r)^2}
と計算される.
* 全ての全波数に対してのエネルギースペクトル成分の和を動径積分したもの
(r^2の重み無し)が球殻内での全エネルギーに等しい.
Original external subprogram is wq_mpi_module#nr_PoloidalEnergySpectrum_wq
nr_ToroidalEnergySpectrum_wq( wq_TORPOT ) result(nr_ToroidalEnergySpectrum_wq)
Function : |
|
nr_ToroidalEnergySpectrum_wq : | real(8), dimension(0:nm,km)
: | (out) エネルギースペクトルトロイダル成分
|
|
wq_TORPOT : | real(8), dimension((nm+1)*(nm+1),0:lm), intent(in)
|
トロイダルポテンシャルから, トロイダルエネルギーの
球面調和函数全波数の各成分を計算する.
* 全波数 n, 帯状波数 m のトロイダルポテンシャルのスペクトル成分
ψ(n,m,r)から全波数 n 成分のトロイダルエネルギースペクトルは
Σ[m=-n]^n(1/2)n(n+1)4πr^2ψ(n,m,r)^2 と計算される.
- 全てのエネルギースペクトル成分の和を動径積分したもの(r^2の重み無し)
が球殻内での全エネルギーに等しい.
Original external subprogram is wq_mpi_module#nr_ToroidalEnergySpectrum_wq
nz_PoloidalEnergySpectrum_wt( wt_POLPOT ) result(nz_PoloidalEnergySpectrum_wt)
Function : |
|
nz_PoloidalEnergySpectrum_wt : | real(8), dimension(0:nm,0:km)
: | (out) エネルギースペクトルポロイダル成分
|
|
wt_POLPOT : | real(8), dimension((nm+1)*(nm+1),0:lm), intent(in)
|
ポロイダルポテンシャルから, ポロイダルエネルギーの
球面調和函数全波数の各成分を計算する
* 全波数 n, 帯状波数 m のポロイダルポテンシャルのスペクトル成分
φ(n,m,r)から全波数 n 成分のポロイダルエネルギースペクトルは
Σ[m=-n]^n ((1/2)n(n+1)4πr^2{[d(rφ(n,m,r))/dr]^2
+ n(n+1)φ(n,m,r)^2}
と計算される.
* 全ての全波数に対してのエネルギースペクトル成分の和を動径積分したもの
(r^2の重み無し)が球殻内での全エネルギーに等しい.
Original external subprogram is wt_mpi_module#nz_PoloidalEnergySpectrum_wt
nz_ToroidalEnergySpectrum_wt( wt_TORPOT ) result(nz_ToroidalEnergySpectrum_wt)
Function : |
|
nz_ToroidalEnergySpectrum_wt : | real(8), dimension(0:nm,0:km)
: | (out) エネルギースペクトルトロイダル成分
|
|
wt_TORPOT : | real(8), dimension((nm+1)*(nm+1),0:lm), intent(in)
|
トロイダルポテンシャルから, トロイダルエネルギーの
球面調和函数全波数の各成分を計算する.
* 全波数 n, 帯状波数 m のトロイダルポテンシャルのスペクトル成分
ψ(n,m,r)から全波数 n 成分のトロイダルエネルギースペクトルは
Σ[m=-n]^n(1/2)n(n+1)4πr^2ψ(n,m,r)^2 と計算される.
- 全てのエネルギースペクトル成分の和を動径積分したもの(r^2の重み無し)
が球殻内での全エネルギーに等しい.
Original external subprogram is wt_mpi_module#nz_ToroidalEnergySpectrum_wt
q_Rad2Inv_q( q_data ) result(q_r2Inv_q)
Function : |
|
q_r2Inv_q : | real(8), dimension(0:km)
|
q_data : | real(8), dimension(:), intent(in)
|
入力スペクトルデータに対して積 r^2 のスペクトル係数 を計算する(1
次元配列用).
Original external subprogram is wq_mpi_module#q_Rad2Inv_q
q_Rad2_q( q_data ) result(q_r2_q)
Function : |
|
q_r2_q : | real(8), dimension(0:km)
|
q_data : | real(8), dimension(:), intent(in)
|
入力スペクトルデータに対して積 r^2 のスペクトル係数 を計算する(1
次元配列用).
Original external subprogram is wq_mpi_module#q_Rad2_q
q_RadDRad_q( q_data ) result(q_rDr_q)
Function : |
|
q_rDr_q : | real(8), dimension(0:km)
|
q_data : | real(8), dimension(:), intent(in)
|
入力スペクトルデータに r(d/dR) 微分を作用する(1 次元配列用).
スペクトルデータの r(d/dR) 微分とは, 対応する格子点データに R 微分を
作用させたデータのスペクトル変換のことである.
Original external subprogram is wq_mpi_module#q_RadDRad_q
r_AvrLat_vr( vr ) result(r_AvrLat_vr)
Function : |
|
r_AvrLat_vr : | real(8), dimension(km)
: | (out) 緯度平均された 1 次元動径格子点データ
|
|
vr : | real(8), dimension(1:jc,km), intent(in)
: | (in) 2 次元緯度動径(子午面)格子点データ
|
|
2 次元(VR)格子点データの緯度方向域平均.
2 次元データ f(φ,r) に対して ∫f(φ,r) cosφ dφ/2 を計算する.
Original external subprogram is wq_mpi_module#r_AvrLat_vr
r_AvrLat_yr( yr ) result(r_AvrLat_yr)
Function : |
|
r_AvrLat_yr : | real(8), dimension(km)
: | (out) 緯度平均された 1 次元動径格子点データ
|
|
yr : | real(8), dimension(1:jm,km), intent(in)
: | (in) 2 次元緯度動径(子午面)格子点データ
|
|
2 次元(YR)格子点データの緯度方向域平均.
2 次元データ f(φ,r) に対して ∫f(φ,r) cosφ dφ/2 を計算する.
Original external subprogram is wq_mpi_module#r_AvrLat_yr
r_AvrLonLat_xvr( xvr ) result(r_AvrLonLat_xvr)
Function : |
|
r_AvrLonLat_xvr : | real(8), dimension(km)
: | (out) 緯度経度(水平, 球面)平均された 1 次元動径格子点データ
|
|
xvr : | real(8), dimension(0:im-1,1:jc,km), intent(in)
|
緯度経度(水平)積分
3 次元格子点データの緯度経度(水平, 球面)積分
3 次元データ f(λ,φ,r) に対して
∫f(λ,φ,r) cosφ dλdφ /4π
を計算する.
Original external subprogram is wq_mpi_module#r_AvrLonLat_xvr
r_AvrLonLat_xyr( xyr ) result(r_AvrLonLat_xyr)
Function : |
|
r_AvrLonLat_xyr : | real(8), dimension(km)
: | (out) 緯度経度(水平, 球面)平均された 1 次元動径格子点データ
|
|
xyr : | real(8), dimension(0:im-1,1:jm,km), intent(in)
|
緯度経度(水平)積分
3 次元格子点データの緯度経度(水平, 球面)積分
3 次元データ f(λ,φ,r) に対して
∫f(λ,φ,r) cosφ dλdφ /4π
を計算する.
Original external subprogram is wq_mpi_module#r_AvrLonLat_xyr
r_AvrLon_xr( xr ) result(r_AvrLon_xr)
Function : |
|
r_AvrLon_xr : | real(8), dimension(km)
: | (out) 経度平均された 1 次元動径格子点データ
|
|
xr : | real(8), dimension(0:im-1,km), intent(in)
|
経度(帯状)積分
2 次元(XR)格子点データの経度方向平均.
2 次元データ f(λ,r) に対して ∫f(λ,r)dλ/2π を計算する.
Original external subprogram is wq_mpi_module#r_AvrLon_xr
r_IntLat_vr( vr ) result(r_IntLat_vr)
Function : |
|
r_IntLat_vr : | real(8), dimension(km)
: | (out) 緯度積分された 1 次元動径格子点データ
|
|
vr : | real(8), dimension(1:jc,km), intent(in)
: | (in) 2 次元緯度動径(子午面)格子点データ
|
|
緯度積分
2 次元(VR)格子点データの緯度方向域積分.
2 次元データ f(φ,r) に対して∫f(φ,r) cosφ dφ を計算する.
Original external subprogram is wq_mpi_module#r_IntLat_vr
r_IntLat_yr( yr ) result(r_IntLat_yr)
Function : |
|
r_IntLat_yr : | real(8), dimension(km)
: | (out) 緯度積分された 1 次元動径格子点データ
|
|
yr : | real(8), dimension(1:jm,km), intent(in)
: | (in) 2 次元緯度動径(子午面)格子点データ
|
|
緯度積分
2 次元(YR)格子点データの緯度方向域積分.
2 次元データ f(φ,r) に対して∫f(φ,r) cosφ dφ を計算する.
Original external subprogram is wq_mpi_module#r_IntLat_yr
r_IntLonLat_xvr( xvr ) result(r_IntLonLat_xvr)
Function : |
|
r_IntLonLat_xvr : | real(8), dimension(km)
: | (out) 緯度経度(水平, 球面)積分された 1 次元動径格子点データ
|
|
xvr : | real(8), dimension(0:im-1,1:jc,km), intent(in)
|
緯度経度(水平)積分
3 次元格子点データの緯度経度(水平, 球面)積分
3 次元データ f(λ,φ,r) に対して
∫f(λ,φ,r) cosφ dλdφ
を計算する.
Original external subprogram is wq_mpi_module#r_IntLonLat_xvr
r_IntLonLat_xyr( xyr ) result(r_IntLonLat_xyr)
Function : |
|
r_IntLonLat_xyr : | real(8), dimension(km)
: | (out) 緯度経度(水平, 球面)積分された 1 次元動径格子点データ
|
|
xyr : | real(8), dimension(0:im-1,1:jm,km), intent(in)
|
緯度経度(水平)積分
3 次元格子点データの緯度経度(水平, 球面)積分
3 次元データ f(λ,φ,r) に対して
∫f(λ,φ,r) cosφ dλdφ
を計算する.
Original external subprogram is wq_mpi_module#r_IntLonLat_xyr
r_IntLon_xr( xr ) result(r_IntLon_xr)
Function : |
|
r_IntLon_xr : | real(8), dimension(km)
: | (out) 経度積分された 1 次元動径格子点データ
|
|
xr : | real(8), dimension(0:im-1,km), intent(in)
|
2 次元(XR)格子点データの経度方向積分.
2 次元データ f(λ,r) に対して ∫f(λ,r)dλ を計算する.
Original external subprogram is wq_mpi_module#r_IntLon_xr
t_Dr_t( t_data ) result(t_Dx_t)
Function : |
|
t_Dx_t : | real(8), dimension(size(t_data))
|
t_data : | real(8), dimension(:), intent(in)
|
入力チェビシェフデータに X 微分を作用する(1 次元配列用).
チェビシェフデータの X 微分とは, 対応する格子点データに X 微分を
作用させたデータのチェビシェフ変換のことである.
Original external subprogram is wt_mpi_module#t_Dr_t
v_AvrLonRad_xvr( xvr ) result(v_AvrLonRad_xvr)
Function : |
|
v_AvrLonRad_xvr : | real(8), dimension(1:jc)
: | (out) 経度動径(緯度円)平均された 1 次元緯度格子点データ
|
|
xvr : | real(8), dimension(0:im-1,1:jc,km), intent(in)
|
経度動径(緯度円)積分
3 次元格子点データの経度動径(緯度円)平均.
3 次元データ f(λ,φ,r) に対して
∫f(λ,φ,r) r^2dλdr /(2π(r[o]^3-r[i]^3)/3)
を計算する.
Original external subprogram is wq_mpi_module#v_AvrLonRad_xvr
v_AvrLonRad_xvz( xvz ) result(v_AvrLonRad_xvz)
Function : |
|
v_AvrLonRad_xvz : | real(8), dimension(jc)
: | (out) 経度動径(緯度円)平均された 1 次元緯度格子点データ
|
|
xvz : | real(8), dimension(0:im-1,jc,0:km), intent(in)
|
経度動径(緯度円)積分
3 次元格子点データの経度動径(緯度円)平均.
3 次元データ f(λ,φ,r) に対して
∫f(λ,φ,r) r^2dλdr /(2π(r[o]^3-r[i]^3)/3)
を計算する.
Original external subprogram is wt_mpi_module#v_AvrLonRad_xvz
v_AvrLon_xv( xv_data ) result(v_AvrLon_xv)
Function : |
|
v_AvrLon_xv(jc) : | real(8)
: | (out) 平均された 1 次元緯度(Y)格子点
|
|
xv_data(0:im-1,jc) : | real(8), intent(in)
: | (in) 2 次元経度緯度格子点データ(0:im-1,jc)
|
|
2 次元緯度経度格子点データの経度(X)方向平均(1 層用).
実際には格子点データ各点毎に x_X_Weight をかけた総和を計算し, x_X_Weight
の総和で割ることで平均している.
Original external subprogram is wq_mpi_module#v_AvrLon_xv
v_AvrLon_xv( xv_data ) result(v_AvrLon_xv)
Function : |
|
v_AvrLon_xv(jc) : | real(8)
: | (out) 平均された 1 次元緯度(Y)格子点
|
|
xv_data(0:im-1,jc) : | real(8), intent(in)
: | (in) 2 次元経度緯度格子点データ(0:im-1,jc)
|
|
2 次元緯度経度格子点データの経度(X)方向平均(1 層用).
実際には格子点データ各点毎に x_X_Weight をかけた総和を計算し, x_X_Weight
の総和で割ることで平均している.
Original external subprogram is wt_mpi_module#v_AvrLon_xv
v_AvrRad_vr( vr ) result(v_AvrRad_vr)
Function : |
|
v_AvrRad_vr : | real(8), dimension(1:jc)
: | (out) 動径平均された 1 次元緯度格子点データ
|
|
vr : | real(8), dimension(1:jc,km), intent(in)
: | (in) 2 次元緯度動径(子午面)格子点データ
|
|
2 次元(VR)格子点データの動径方向域平均.
2 次元データ f(φ,r) に対して ∫f(φ,r) r^2dr /((r[o]^3-r[i]^3)/3)
を計算する.
Original external subprogram is wq_mpi_module#v_AvrRad_vr
v_AvrRad_vz( vz ) result(v_AvrRad_vz)
Function : |
|
v_AvrRad_vz : | real(8), dimension(jc)
: | (out) 動径平均された 1 次元緯度格子点データ
|
|
vz : | real(8), dimension(jc,0:km),
intent(in)
: | (in) 2 次元緯度動径(子午面)格子点データ
|
|
2 次元(VZ)格子点データの動径方向域平均.
2 次元データ f(φ,r) に対して ∫f(φ,r) r^2dr /((r[o]^3-r[i]^3)/3)
を計算する.
Original external subprogram is wt_mpi_module#v_AvrRad_vz
v_IntLonRad_xvr( xvr ) result(v_IntLonRad_xvr)
Function : |
|
v_IntLonRad_xvr : | real(8), dimension(1:jc)
: | (out) 経度動径(緯度円)積分された 1 次元緯度格子点データ
|
|
xvr : | real(8), dimension(0:im-1,1:jc,km), intent(in)
|
3 次元格子点データの経度動径(緯度円)積分.
3 次元データ f(λ,φ,r) に対して∫f(λ,φ,r) r^2dλdr を計算する.
Original external subprogram is wq_mpi_module#v_IntLonRad_xvr
v_IntLonRad_xvz( xvz ) result(v_IntLonRad_xvz)
Function : |
|
v_IntLonRad_xvz : | real(8), dimension(jc)
: | (out) 経度動径(緯度円)積分された 1 次元緯度格子点データ
|
|
xvz : | real(8), dimension(0:im-1,jc,0:km), intent(in)
|
3 次元格子点データの経度動径(緯度円)積分.
3 次元データ f(λ,φ,r) に対して∫f(λ,φ,r) r^2dλdr を計算する.
Original external subprogram is wt_mpi_module#v_IntLonRad_xvz
v_IntLon_xv( xv_data ) result(v_IntLon_xv)
Function : |
|
v_IntLon_xv(jc) : | real(8)
: | (out) 積分された 1 次元緯度(Y)格子点データ
|
|
xv_data(0:im-1,jc) : | real(8), intent(in)
: | (in) 2 次元経度緯度格子点データ(0:im-1,jc)
|
|
2 次元緯度経度格子点データの経度(X)方向積分(1 層用).
実際には格子点データ各点毎に x_X_Weight をかけた総和を計算している.
Original external subprogram is wq_mpi_module#v_IntLon_xv
v_IntLon_xv( xv_data ) result(v_IntLon_xv)
Function : |
|
v_IntLon_xv(jc) : | real(8)
: | (out) 積分された 1 次元緯度(Y)格子点データ
|
|
xv_data(0:im-1,jc) : | real(8), intent(in)
: | (in) 2 次元経度緯度格子点データ(0:im-1,jc)
|
|
2 次元緯度経度格子点データの経度(X)方向積分(1 層用).
実際には格子点データ各点毎に x_X_Weight をかけた総和を計算している.
Original external subprogram is wt_mpi_module#v_IntLon_xv
v_IntRad_vr( vr ) result(v_IntRad_vr)
Function : |
|
v_IntRad_vr : | real(8), dimension(1:jc)
: | (out) 動径積分された 1 次元緯度格子点データ
|
|
vr : | real(8), dimension(1:jc,km), intent(in)
: | (in) 2 次元緯度動径(子午面)格子点データ
|
|
動径積分
2 次元(VR)格子点データの動径方向域積分.
2 次元データ f(φ,r) に対して∫f(φ,r) r^2dr を計算する.
Original external subprogram is wq_mpi_module#v_IntRad_vr
v_IntRad_vz( vz ) result(v_IntRad_vz)
Function : |
|
v_IntRad_vz : | real(8), dimension(jc)
: | (out) 動径積分された 1 次元緯度格子点データ
|
|
vz : | real(8), dimension(jc,0:km),
intent(in)
: | (in) 2 次元緯度動径(子午面)格子点データ
|
|
動径積分
2 次元(VZ)格子点データの動径方向域積分.
2 次元データ f(φ,r) に対して∫f(φ,r) r^2dr を計算する.
Original external subprogram is wt_mpi_module#v_IntRad_vz
vr_AvrLon_xvr( xvr ) result(vr_AvrLon_xvr)
Function : |
|
vr_AvrLon_xvr : | real(8), dimension(1:jc,km)
: | (out) 経度方向(帯状)平均された 2 次元子午面格子点データ
|
|
xvr : | real(8), dimension(0:im-1,1:jc,km), intent(in)
|
経度(帯状)積分
3 次元格子点データの経度方向(帯状)平均.
3 次元データ f(λ,φ,r) に対して ∫f(λ,φ,r)dλ/2π を計算する.
Original external subprogram is wq_mpi_module#vr_AvrLon_xvr
vr_IntLon_xvr( xvr ) result(vr_IntLon_xvr)
Function : |
|
vr_IntLon_xvr : | real(8), dimension(1:jc,km)
: | (out) 経度方向(帯状)積分された 2 次元子午面格子点データ
|
|
xvr : | real(8), dimension(0:im-1,1:jc,km), intent(in)
|
経度(帯状)積分
3 次元格子点データの経度方向(帯状)積分.
3 次元データ f(λ,φ,r) に対して ∫f(λ,φ,r)dλ を計算する.
Original external subprogram is wq_mpi_module#vr_IntLon_xvr
vz_AvrLon_xvz( xvz ) result(vz_AvrLon_xvz)
Function : |
|
vz_AvrLon_xvz : | real(8), dimension(jc,0:km)
: | (out) 経度方向(帯状)平均された 2 次元子午面格子点データ
|
|
xvz : | real(8), dimension(0:im-1,jc,0:km), intent(in)
|
経度(帯状)積分
3 次元格子点データの経度方向(帯状)平均.
3 次元データ f(λ,φ,r) に対して ∫f(λ,φ,r)dλ/2π を計算する.
Original external subprogram is wt_mpi_module#vz_AvrLon_xvz
vz_IntLon_xvz( xvz ) result(vz_IntLon_xvz)
Function : |
|
vz_IntLon_xvz : | real(8), dimension(jc,0:km)
: | (out) 経度方向(帯状)積分された 2 次元子午面格子点データ
|
|
xvz : | real(8), dimension(0:im-1,jc,0:km), intent(in)
|
経度(帯状)積分
3 次元格子点データの経度方向(帯状)積分.
3 次元データ f(λ,φ,r) に対して ∫f(λ,φ,r)dλ を計算する.
Original external subprogram is wt_mpi_module#vz_IntLon_xvz
w_xv( xv_data, [ipow], [iflag] ) result(w_xv)
Function : |
|
w_xv((nm+1)*(nm+1)) : | real(8)
|
xv_data(0:im-1,jc) : | real(8), intent(in)
|
ipow : | integer, intent(in), optional
: | (in) 変換時に同時に作用させる 1/cosφ の次数. 省略時は 0.
|
|
iflag : | integer, intent(in), optional
: | 変換の種類
0 : 通常の正変換
1 : 経度微分を作用させた正変換
-1 : 緯度微分を作用させた正変換
2 : sinφを作用させた正変換
省略時は 0.
|
|
格子データからスペクトルデータへ(正)変換する(1 層用).
Original external subprogram is wq_mpi_module#w_xv
w_xv( xv_data, [ipow], [iflag] ) result(w_xv)
Function : |
|
w_xv((nm+1)*(nm+1)) : | real(8)
|
xv_data(0:im-1,jc) : | real(8), intent(in)
|
ipow : | integer, intent(in), optional
: | (in) 変換時に同時に作用させる 1/cosφ の次数. 省略時は 0.
|
|
iflag : | integer, intent(in), optional
: | 変換の種類
0 : 通常の正変換
1 : 経度微分を作用させた正変換
-1 : 緯度微分を作用させた正変換
2 : sinφを作用させた正変換
省略時は 0.
|
|
格子データからスペクトルデータへ(正)変換する(1 層用).
Original external subprogram is wt_mpi_module#w_xv
w_xy( xy_data, [ipow], [iflag] ) result(w_xy)
Function : |
|
w_xy((nm+1)*(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 : 緯度微分 1/cosφ・∂(f cos^2φ)/∂φ を作用させた正変換
2 : sinφを作用させた正変換
省略時は 0.
|
|
格子データからスペクトルデータへ(正)変換する(1 層用).
Original external subprogram is wq_mpi_module#w_xy
w_xy( xy_data, [ipow], [iflag] ) result(w_xy)
Function : |
|
w_xy((nm+1)*(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 : 緯度微分 1/cosφ・∂(f cos^2φ)/∂φ を作用させた正変換
2 : sinφを作用させた正変換
省略時は 0.
|
|
格子データからスペクトルデータへ(正)変換する(1 層用).
Original external subprogram is wt_mpi_module#w_xy
w_xy( xy_data, [ipow], [iflag] ) result(w_xy)
Function : |
|
w_xy((nm+1)*(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 : 緯度微分 1/cosφ・∂(f cos^2φ)/∂φ を作用させた正変換
2 : sinφを作用させた正変換
省略時は 0.
|
|
格子データからスペクトルデータへ(正)変換する(1 層用).
Original external subprogram is wq_mpi_module#w_xy
wq_Boundary( wq, [value], [cond] )
Subroutine : |
|
wq : | real(8), dimension((nm+1)*(nm+1),0:lm),intent(inout)
: | (inout) 境界条件を適用するデータ. 修正された値を返す.
|
|
value : | real(8), dimension((nm+1)*(nm+1)), intent(in), optional
: | (in) 境界での 値/勾配 分布を水平スペクトル変換したものを与える.
省略時は値/勾配 0 となる.
|
|
cond : | character(len=1), intent(in), optional
: | (in) 境界条件. 省略時は ‘D‘
D : 外側ディリクレ条件
N : 外側ノイマン条件
|
|
スペクトルデータにディリクレ・ノイマン境界条件を適用する Chebyshev
空間での境界条件適用(タウ法)
チェビシェフ空間において境界条件を満たすべく高次の係数を
定める方法をとっている(タウ法).
Original external subprogram is wq_mpi_module#wq_Boundary
wq_BoundaryTau( wq, [value], [cond] )
Subroutine : |
|
wq : | real(8), dimension((nm+1)*(nm+1),0:lm),intent(inout)
: | (inout) 境界条件を適用するデータ. 修正された値を返す.
|
|
value : | real(8), dimension((nm+1)*(nm+1)), intent(in), optional
: | (in) 境界での 値/勾配 分布を水平スペクトル変換したものを与える.
省略時は値/勾配 0 となる.
|
|
cond : | character(len=1), intent(in), optional
: | (in) 境界条件. 省略時は ‘D‘
D : 外側ディリクレ条件
N : 外側ノイマン条件
|
|
スペクトルデータにディリクレ・ノイマン境界条件を適用する Chebyshev
空間での境界条件適用(タウ法)
チェビシェフ空間において境界条件を満たすべく高次の係数を
定める方法をとっている(タウ法).
Original external subprogram is wq_mpi_module#wq_BoundaryTau
wq_KxRGrad_wq( wq ) result(wq_KxRGrad_wq)
Function : |
|
wq_KxRGrad_wq : | real(8), dimension((nm+1)*(nm+1),0:lm)
: | (out) 経度微分を作用された 2 次元スペクトルデータ
|
|
wq : | real(8), dimension((nm+1)*(nm+1),0:lm), intent(in)
: | (in) 2 次元球面調和函数チェビシェフスペクトルデータ
|
|
入力スペクトルデータに経度微分 k×r・▽ = ∂/∂λを作用する.
Original external subprogram is wq_mpi_module#wq_KxRGrad_wq
wq_L2Inv_wq( wq ) result(wq_L2Inv_wq)
Function : |
|
wq_L2Inv_wq : | real(8), dimension((nm+1)*(nm+1),0:lm)
: | (out) L^2 演算子の逆演算を作用された 2 次元スペクトルデータ
|
|
wq : | real(8), dimension((nm+1)*(nm+1),0:lm), intent(in)
: | (in) 2 次元球面調和函数チェビシェフスペクトルデータ
|
|
入力スペクトルデータに L^2 演算子の逆演算(-逆水平ラプラシアン)を 作用する.
スペクトルデータに L^2 演算子を作用させる関数 wq_L2_wq の逆計算を 行う関数である.
Original external subprogram is wq_mpi_module#wq_L2Inv_wq
wq_L2_wq( wq ) result(wq_L2_wq)
Function : |
|
wq_L2_wq : | real(8), dimension((nm+1)*(nm+1),0:lm)
: | (out) L^2 演算子を作用された 2 次元スペクトルデータ
|
|
wq : | real(8), dimension((nm+1)*(nm+1),0:lm), intent(in)
: | (in) 2 次元球面調和函数チェビシェフスペクトルデータ
|
|
入力スペクトルデータに L^2 演算子(=-水平ラプラシアン)を作用する.
L^2 演算子は単位球面上の水平ラプラシアンの逆符号にあたる.
入力スペクトルデ ータに対応する格子点データに演算子
L^2 = -1/cos^2φ・∂^2/∂λ^2 - 1/cosφ・∂/∂φ(cosφ∂/∂φ)
を作用させたデータのスペクトル変換が返される.
Original external subprogram is wq_mpi_module#wq_L2_wq
wq_LaplaPol2PolTau_wq( wq, [cond], [new] ) result(wq_LaplaPol2PolTau_wq)
Function : |
|
wq_LaplaPol2PolTau_wq : | real(8), dimension((nm+1)*(nm+1),0:lm)
|
wq : | real(8), dimension((nm+1)*(nm+1),0:lm),intent(in)
|
cond : | character(len=1), intent(in), optional
: | (in) 境界条件スイッチ. 省略時は ‘R‘
R : 上側粘着条件
F : 上側応力なし条件
|
|
new : | logical, intent(IN), optional
: | (in) true だと境界条件計算用行列を強制的に新たに作る.
default は false.
|
|
速度ポロイダルポテンシャルΦを▽^2Φから計算する.
スペクトル空間で境界条件を適用している(タウ法).
速度ポロイダルポテンシャルΦを f = ▽^2Φから定める式は
▽^2Φ = f
Φ = const. at Boundary.
∂Φ/∂r = 0 at Boundary (粘着条件)
or ∂^2Φ/∂r^2 = 0 at Boundary (応力なし条件)
最初に呼ばれるときはオプショナル引数 new に関係なく行列が設定される.
Original external subprogram is wq_mpi_module#wq_LaplaPol2PolTau_wq
wq_LaplaPol2Pol_wq( wq, [cond], [new] ) result(wq_LaplaPol2PolTau_wq)
Function : |
|
wq_LaplaPol2PolTau_wq : | real(8), dimension((nm+1)*(nm+1),0:lm)
|
wq : | real(8), dimension((nm+1)*(nm+1),0:lm),intent(in)
|
cond : | character(len=1), intent(in), optional
: | (in) 境界条件スイッチ. 省略時は ‘R‘
R : 上側粘着条件
F : 上側応力なし条件
|
|
new : | logical, intent(IN), optional
: | (in) true だと境界条件計算用行列を強制的に新たに作る.
default は false.
|
|
速度ポロイダルポテンシャルΦを▽^2Φから計算する.
スペクトル空間で境界条件を適用している(タウ法).
速度ポロイダルポテンシャルΦを f = ▽^2Φから定める式は
▽^2Φ = f
Φ = const. at Boundary.
∂Φ/∂r = 0 at Boundary (粘着条件)
or ∂^2Φ/∂r^2 = 0 at Boundary (応力なし条件)
最初に呼ばれるときはオプショナル引数 new に関係なく行列が設定される.
Original external subprogram is wq_mpi_module#wq_LaplaPol2Pol_wq
wq_Lapla_wq( wq ) result(wq_Lapla_wq)
Function : |
|
wq_Lapla_wq : | real(8), dimension((nm+1)*(nm+1),0:lm)
: | (out) ラプラシアンを作用された水平スペクトルデータ
|
|
wq : | real(8), dimension((nm+1)*(nm+1),0:lm), intent(in)
: | (in) 2 次元球面調和函数チェビシェフスペクトルデータ
|
|
入力スペクトルデータにラプラシアン
▽^2 = 1/r^2 cos^2φ・∂^2/∂λ^2
+ 1/r^2 cosφ・∂/∂φ(cosφ∂/∂φ)
+ 1/r^2 ∂/∂r (r^2 ∂/∂r)
[1/r^2 (r∂/∂r)(r∂/∂r) + 1/r^2(r∂/∂r)]
を作用する.
スペクトルデータのラプラシアンとは, 対応する格子点データに
ラプラシアンを作用させたデータのスペクトル変換のことである.
Original external subprogram is wq_mpi_module#wq_Lapla_wq
wq_PolMagBoundary( wq_POL, [new] )
Subroutine : |
|
wq_POL : | real(8), dimension((nm+1)*(nm+1),0:lm),intent(inout)
: | (inout) 境界条件を適用するデータ. 修正された値を返す.
|
|
new : | logical, intent(IN), optional
: | (in) true だと境界条件計算用行列を強制的に新たに作る.
default は false.
|
|
磁場ポロイダルポテンシャルに対して境界条件を適用する. Chebyshev
空間での境界条件適用
チェビシェフ空間において境界条件を満たすべく高次の係数を定める方法を
とっている(タウ法). 現在のところ境界物質が非電気伝導体の場合のみ
対応している. その場合, 磁場ポロイダルポテンシャルの各水平スペクトル 成分 h
にたいして境界条件が与えられ,
* 外側境界 : dh/dr + (n+1)h/r = 0
である. ここで n は h の水平全波数である.
最初に呼ばれるときはオプショナル引数 new に関係なく行列が設定される.
Original external subprogram is wq_mpi_module#wq_PolMagBoundary
wq_PolmagBoundaryTau( wq_POL, [new] )
Subroutine : |
|
wq_POL : | real(8), dimension((nm+1)*(nm+1),0:lm),intent(inout)
: | (inout) 境界条件を適用するデータ. 修正された値を返す.
|
|
new : | logical, intent(IN), optional
: | (in) true だと境界条件計算用行列を強制的に新たに作る.
default は false.
|
|
磁場ポロイダルポテンシャルに対して境界条件を適用する. Chebyshev
空間での境界条件適用
チェビシェフ空間において境界条件を満たすべく高次の係数を定める方法を
とっている(タウ法). 現在のところ境界物質が非電気伝導体の場合のみ
対応している. その場合, 磁場ポロイダルポテンシャルの各水平スペクトル 成分 h
にたいして境界条件が与えられ,
* 外側境界 : dh/dr + (n+1)h/r = 0
である. ここで n は h の水平全波数である.
最初に呼ばれるときはオプショナル引数 new に関係なく行列が設定される.
Original external subprogram is wq_mpi_module#wq_PolmagBoundaryTau
wq_Potential2Rotation( xyr_RotVLON, xyr_RotVLAT, xyr_RotVRAD, wq_TORPOT, wq_POLPOT )
Subroutine : |
|
xyr_RotVLON : | real(8), dimension(0:im-1,1:jm,km), intent(OUT)
|
xyr_RotVLAT : | real(8), dimension(0:im-1,1:jm,km), intent(OUT)
|
xyr_RotVRAD : | real(8), dimension(0:im-1,1:jm,km), intent(OUT)
|
wq_TORPOT : | real(8), dimension((nm+1)*(nm+1),0:lm), intent(in)
|
wq_POLPOT : | real(8), dimension((nm+1)*(nm+1),0:lm), intent(in)
|
トロイダルポロイダルポテンシャルΨ,Φで表される非発散ベクトル場
v = ▽x(Ψr) + ▽x▽x(Φr)
に対して, その回転
▽xv = ▽x▽x(Ψr) + ▽x▽x▽x(Φr) = ▽x▽x(Ψr) - ▽x((▽^2Φ)r)
を計算する.
Original external subprogram is wq_mpi_module#wq_Potential2Rotation
wq_Potential2RotationMPI( xvr_RotVLON, xvr_RotVLAT, xvr_RotVRAD, wq_TORPOT, wq_POLPOT )
Subroutine : |
|
xvr_RotVLON : | real(8), dimension(0:im-1,1:jc,km), intent(OUT)
|
xvr_RotVLAT : | real(8), dimension(0:im-1,1:jc,km), intent(OUT)
|
xvr_RotVRAD : | real(8), dimension(0:im-1,1:jc,km), intent(OUT)
|
wq_TORPOT : | real(8), dimension((nm+1)*(nm+1),0:lm), intent(in)
|
wq_POLPOT : | real(8), dimension((nm+1)*(nm+1),0:lm), intent(in)
|
トロイダルポロイダルポテンシャルΨ,Φで表される非発散ベクトル場
v = ▽x(Ψr) + ▽x▽x(Φr)
に対して, その回転
▽xv = ▽x▽x(Ψr) + ▽x▽x▽x(Φr) = ▽x▽x(Ψr) - ▽x((▽^2Φ)r)
を計算する.
Original external subprogram is wq_mpi_module#wq_Potential2RotationMPI
wq_Potential2Vector( xyr_VLON, xyr_VLAT, xyr_VRAD, wq_TORPOT, wq_POLPOT )
Subroutine : |
|
xyr_VLON : | real(8), dimension(0:im-1,1:jm,km)
|
xyr_VLAT : | real(8), dimension(0:im-1,1:jm,km)
|
xyr_VRAD : | real(8), dimension(0:im-1,1:jm,km)
|
wq_TORPOT : | real(8), dimension((nm+1)*(nm+1),0:lm), intent(in)
|
wq_POLPOT : | real(8), dimension((nm+1)*(nm+1),0:lm), intent(in)
|
トロイダルポロイダルポテンシャルΨ,Φで表される非発散ベクトル場
v = ▽x(Ψr) + ▽x▽x(Φr)
の各成分を計算する
Original external subprogram is wq_mpi_module#wq_Potential2Vector
wq_Potential2VectorMPI( xvr_VLON, xvr_VLAT, xvr_VRAD, wq_TORPOT, wq_POLPOT )
Subroutine : |
|
xvr_VLON : | real(8), dimension(0:im-1,1:jc,km)
|
xvr_VLAT : | real(8), dimension(0:im-1,1:jc,km)
|
xvr_VRAD : | real(8), dimension(0:im-1,1:jc,km)
|
wq_TORPOT : | real(8), dimension((nm+1)*(nm+1),0:lm), intent(in)
|
wq_POLPOT : | real(8), dimension((nm+1)*(nm+1),0:lm), intent(in)
|
トロイダルポロイダルポテンシャルΨ,Φで表される非発散ベクトル場
v = ▽x(Ψr) + ▽x▽x(Φr)
の各成分を計算する
Original external subprogram is wq_mpi_module#wq_Potential2VectorMPI
wq_QOperatorMPI_wq( wq ) result(wq_QOperatorMPI_wq)
Function : |
|
wq_QOperatorMPI_wq : | real(8), dimension((nm+1)*(nm+1),0:lm)
: | (out) Q 演算子を作用された 2 次元スペクトルデータ
|
|
wq : | real(8), dimension((nm+1)*(nm+1),0:lm), intent(in)
: | (in) 2 次元球面調和函数チェビシェフスペクトルデータ
|
|
入力スペクトルデータに対応する格子点データに演算子
Q=(k・▽-1/2(L2 k・▽+ k・▽L2))
を作用させたデータのスペクトル変換が返される.
Original external subprogram is wq_mpi_module#wq_QOperatorMPI_wq
wq_QOperator_wq( wq ) result(wq_QOperator_wq)
Function : |
|
wq_QOperator_wq : | real(8), dimension((nm+1)*(nm+1),0:lm)
: | (out) Q 演算子を作用された 2 次元スペクトルデータ
|
|
wq : | real(8), dimension((nm+1)*(nm+1),0:lm), intent(in)
: | (in) 2 次元球面調和函数チェビシェフスペクトルデータ
|
|
入力スペクトルデータに対応する格子点データに演算子
Q=(k・▽-1/2(L2 k・▽+ k・▽L2))
を作用させたデータのスペクトル変換が返される.
Original external subprogram is wq_mpi_module#wq_QOperator_wq
wq_Rad2Inv_wq( aq_data ) result(aq_r2Inv_aq)
Function : |
|
aq_r2Inv_aq : | real(8), dimension(size(aq_data,1),0:size(aq_data,2)-1)
|
aq_data : | real(8), dimension(:,0:), intent(in)
|
入力スペクトルデータに対して積 r^-2 のスペクトル係数 を計算する(2
次元配列用).
a_n^m = aq_r2Inv_aq/sqrt(Inm), b_n^m = aq_data/sqrt(Inm)
b_n^m = (n-|m|)(n+|m|+beta-1)/((2n+gamma-5)(2n+gamma-3)) a_n-2^m
+ (2n(n+gamma-1) + 2|m|(|m|+beta-1)+(gamma-3)(beta+1)
/((2n+gamma+1)(2n+gamma-3)) a_n^m
+ (n-|m|+gamma-beta)(n+|m|+gamma-1)
/((2n+gamma+3)(2n+gamma+1)) a_n+2^m
Original external subprogram is wq_mpi_module#wq_Rad2Inv_wq
wq_Rad2_wq( aq_data ) result(aq_r2_aq)
Function : |
|
aq_r2_aq : | real(8), dimension(size(aq_data,1),0:size(aq_data,2)-1)
|
aq_data : | real(8), dimension(:,0:), intent(in)
|
入力スペクトルデータに対して積 r^2 のスペクトル係数 を計算する(2
次元配列用).
a_n^m = aq_data/sqrt(Inm), b_n^m = aq_rDr_aq/sqrt(Inm)
b_n^m = (n-|m|)(n+|m|+beta-1)/((2n+gamma-5)(2n+gamma-3)) a_n-2^m
+ (2n(n+gamma-1) + 2|m|(|m|+beta-1)+(gamma-3)(beta+1)
/((2n+gamma+1)(2n+gamma-3)) a_n^m
+ (n-|m|+gamma-beta)(n+|m|+gamma-1)
/((2n+gamma+3)(2n+gamma+1)) a_n+2^m
Original external subprogram is wq_mpi_module#wq_Rad2_wq
wq_RadDRad_wq( aq_data ) result(aq_rDr_aq)
Function : |
|
aq_rDr_aq : | real(8), dimension(size(aq_data,1),0:size(aq_data,2)-1)
|
aq_data : | real(8), dimension(:,0:), intent(in)
|
入力スペクトルデータに対して微分 r(d/dr) のスペクトル係数 を計算する(2
次元配列用).
a_n = aq_data/sqrt(Inm), b_n = aq_rDr_aq/sqrt(Inm)
b_n = (2n+gamma-1)/(2n+gamma+3)b_n+2
+ (2n+gamma-1)(n+gamma+1)/(2n+gamma+3)a_n+2 + n a_n
Original external subprogram is wq_mpi_module#wq_RadDRad_wq
wq_RadRotRot_xvr_xvr_xvr( xvr_VLON, xvr_VLAT, xvr_VRAD ) result(wq_RadRotRot_xvr_xvr_xvr)
Function : |
|
wq_RadRotRot_xvr_xvr_xvr : | real(8), dimension((nm+1)*(nm+1),0:lm)
: | (out) ベクトル v の r・(▽×▽×v)
|
|
xvr_VLON : | real(8), dimension(0:im-1,1:jc,km), intent(in)
|
xvr_VLAT : | real(8), dimension(0:im-1,1:jc,km), intent(in)
|
xvr_VRAD : | real(8), dimension(0:im-1,1:jc,km), intent(in)
|
ベクトル v に対して r・(▽×▽×v) を計算する.
第 1, 2, 3 引数(v[λ], v[φ], v[r])がそれぞれベクトルの経度成分, 緯度成分,
動径成分を表す.
r・(▽×▽×v) = 1/r ∂/∂r (r・( 1/cosφ・∂v[λ]/∂λ
+ 1/cosφ・∂(v[φ] cosφ)/∂φ ) )
+ L^2 v[r]/r
のスペクトルデータが返される.
Original external subprogram is wq_mpi_module#wq_RadRotRot_xvr_xvr_xvr
wq_RadRotRot_xyr_xyr_xyr( xyr_VLON, xyr_VLAT, xyr_VRAD ) result(wq_RadRotRot_xyr_xyr_xyr)
Function : |
|
wq_RadRotRot_xyr_xyr_xyr : | real(8), dimension((nm+1)*(nm+1),0:lm)
: | (out) ベクトル v の r・(▽×▽×v)
|
|
xyr_VLON : | real(8), dimension(0:im-1,1:jm,km), intent(in)
|
xyr_VLAT : | real(8), dimension(0:im-1,1:jm,km), intent(in)
|
xyr_VRAD : | real(8), dimension(0:im-1,1:jm,km), intent(in)
|
ベクトル v に対して r・(▽×▽×v) を計算する.
第 1, 2, 3 引数(v[λ], v[φ], v[r])がそれぞれベクトルの経度成分, 緯度成分,
動径成分を表す.
r・(▽×▽×v) = 1/r ∂/∂r (r・( 1/cosφ・∂v[λ]/∂λ
+ 1/cosφ・∂(v[φ] cosφ)/∂φ ) )
+ L^2 v[r]/r
のスペクトルデータが返される.
Original external subprogram is wq_mpi_module#wq_RadRotRot_xyr_xyr_xyr
wq_RotDRad_wr( wr ) result(wq_RotDRad_wr)
Function : |
|
wq_RotDRad_wr : | real(8), dimension((nm+1)*(nm+1),0:lm)
: | (out) 回転型動径微分を作用された水平スペクトル動径格子点データ
|
|
wr : | real(8), dimension((nm+1)*(nm+1),km), intent(in)
: | (in) 2 次元球面調和函数チェビシェフスペクトルデータ
|
|
入力スペクトルデータに回転型動径微分
1/r ∂(r.)/∂r = ∂(.)/∂r + (.)/r
を作用する.
スペクトルデータの回転型動径微分とは, 対応する格子点データに
回転型動径微分を作用させたデータのスペクトル変換のことである.
Original external subprogram is wq_mpi_module#wq_RotDRad_wr
wq_TorBoundary( wq_TORPOT, [value], [cond], [new] )
Subroutine : |
|
wq_TORPOT : | real(8), dimension((nm+1)*(nm+1),0:lm),intent(inout)
: | (inout) 境界条件を適用するデータ. 修正された値を返す.
|
|
value : | real(8), dimension((nm+1)*(nm+1)), intent(in), optional
: | (in) 両端境界でのトロイダルポテンシャル
粘着条件の時のみ有効
|
|
cond : | character(len=1), intent(in), optional
: | (in) 境界条件スイッチ. 省略時は ‘R‘
R : 上側粘着条件
F : 上側応力なし条件
|
|
new : | logical, intent(IN), optional
: | (in) true だと境界条件計算用行列を強制的に新たに作る.
default は false.
|
|
速度トロイダルポテンシャルに対して境界条件を適用する. Chebyshev
空間での境界条件適用.
速度トロイダルポテンシャルΨに対して与えられる境界条件は
* 粘着条件 : Ψ = Ψb(lon,lat). Ψb は境界球面での速度分布.
default は 0(静止状態).
* 応力なし条件 : ∂(Ψ/r)/∂r = 0.
最初に呼ばれるときはオプショナル引数 new に関係なく行列が設定される.
Original external subprogram is wq_mpi_module#wq_TorBoundary
wq_TorBoundaryTau( wq_TORPOT, [value], [cond], [new] )
Subroutine : |
|
wq_TORPOT : | real(8), dimension((nm+1)*(nm+1),0:lm),intent(inout)
: | (inout) 境界条件を適用するデータ. 修正された値を返す.
|
|
value : | real(8), dimension((nm+1)*(nm+1)), intent(in), optional
: | (in) 両端境界でのトロイダルポテンシャル
粘着条件の時のみ有効
|
|
cond : | character(len=1), intent(in), optional
: | (in) 境界条件スイッチ. 省略時は ‘R‘
R : 上側粘着条件
F : 上側応力なし条件
|
|
new : | logical, intent(IN), optional
: | (in) true だと境界条件計算用行列を強制的に新たに作る.
default は false.
|
|
速度トロイダルポテンシャルに対して境界条件を適用する. Chebyshev
空間での境界条件適用.
速度トロイダルポテンシャルΨに対して与えられる境界条件は
* 粘着条件 : Ψ = Ψb(lon,lat). Ψb は境界球面での速度分布.
default は 0(静止状態).
* 応力なし条件 : ∂(Ψ/r)/∂r = 0.
最初に呼ばれるときはオプショナル引数 new に関係なく行列が設定される.
Original external subprogram is wq_mpi_module#wq_TorBoundaryTau
wq_TorMagBoundary( wq_TOR, [new] )
Subroutine : |
|
wq_TOR : | real(8), dimension((nm+1)*(nm+1),0:lm),intent(inout)
: | (inout) 境界条件を適用するデータ. 修正された値を返す.
|
|
new : | logical, intent(IN), optional
: | (in) true だと境界条件計算用行列を強制的に新たに作る.
default は false.
|
|
Original external subprogram is wq_mpi_module#wq_TorMagBoundary
wq_TormagBoundaryTau( wq_TOR, [new] )
Subroutine : |
|
wq_TOR : | real(8), dimension((nm+1)*(nm+1),0:lm),intent(inout)
: | (inout) 境界条件を適用するデータ. 修正された値を返す.
|
|
new : | logical, intent(IN), optional
: | (in) true だと境界条件計算用行列を強制的に新たに作る.
default は false.
|
|
Original external subprogram is wq_mpi_module#wq_TormagBoundaryTau
wq_wr( wr ) result(wq_wr)
Function : |
|
wq_wr : | real(8), dimension((nm+1)*(nm+1),0:lm)
: | (out) 2 次元球面調和函数チェビシェフスペクトルデータ
|
|
wr : | real(8), dimension((nm+1)*(nm+1),km), intent(in)
: | (in) 2 次元球面調和函数スペクトル・動径格子点データ
|
|
水平スペクトル・動径格子点データからスペクトルデータへ(正)変換する.
Original external subprogram is wq_mpi_module#wq_wr
wq_xvr( xvr ) result(wq_xvr)
Function : |
|
wq_xvr : | real(8), dimension((nm+1)*(nm+1),0:lm)
: | (out) 2 次元球面調和函数チェビシェフスペクトルデータ
|
|
xvr : | real(8), dimension(0:im-1,1:jc,km), intent(in)
|
3 次元格子点データからスペクトルデータへ(正)変換する.
Original external subprogram is wq_mpi_module#wq_xvr
wq_xyr( xyr ) result(wq_xyr)
Function : |
|
wq_xyr : | real(8), dimension((nm+1)*(nm+1),0:lm)
: | (out) 2 次元球面調和函数チェビシェフスペクトルデータ
|
|
xyr : | real(8), dimension(0:im-1,1:jm,km), intent(in)
|
3 次元格子点データからスペクトルデータへ(正)変換する.
Original external subprogram is wq_mpi_module#wq_xyr
wr_BoundaryGrid( wr, [value], [cond] )
Subroutine : |
|
wr : | real(8), dimension((nm+1)*(nm+1),km),intent(inout)
: | (inout) 境界条件を適用するデータ. 修正された値を返す.
|
|
value : | real(8), dimension((nm+1)*(nm+1)), intent(in), optional
: | (in) 境界での 値/勾配 分布を水平スペクトル変換したものを与える.
省略時は値/勾配 0 となる.
|
|
cond : | character(len=1), intent(in), optional
: | (in) 境界条件. 省略時は ‘D‘
D : 外側ディリクレ条件
N : 外側ノイマン条件
|
|
スペクトルデータにディリクレ・ノイマン境界条件を適用する
実空間での境界条件適用
鉛直実格子点空間において内部領域の値と境界条件を満たすように
条件を課している(選点法).
Original external subprogram is wq_mpi_module#wr_BoundaryGrid
wr_DivLat_xvr( xvr ) result(wr_DivLat_xvr)
Function : |
|
wr_DivLat_xvr : | real(8), dimension((nm+1)*(nm+1),km)
: | (out) 発散型緯度微分を作用された水平スペクトル動径格子点データ
|
|
xvr : | real(8), dimension(0:im-1,1:jc,km), intent(in)
|
格子データに発散型緯度微分 1/rcosφ・∂(f cosφ)/∂φ を
作用させたスペクトルデータを返す.
Original external subprogram is wq_mpi_module#wr_DivLat_xvr
wr_DivLat_xyr( xyr ) result(wr_DivLat_xyr)
Function : |
|
wr_DivLat_xyr : | real(8), dimension((nm+1)*(nm+1),km)
: | (out) 発散型緯度微分を作用された水平スペクトル動径格子点データ
|
|
xyr : | real(8), dimension(0:im-1,1:jm,km), intent(in)
|
格子データに発散型緯度微分 1/rcosφ・∂(f cosφ)/∂φ を
作用させたスペクトルデータを返す.
Original external subprogram is wq_mpi_module#wr_DivLat_xyr
wr_DivLon_xvr( xvr ) result(wr_DivLon_xvr)
Function : |
|
wr_DivLon_xvr : | real(8), dimension((nm+1)*(nm+1),km)
: | (out) 発散型経度微分を作用された水平スペクトル動径格子点データ
|
|
xvr : | real(8), dimension(0:im-1,1:jc,km), intent(in)
|
格子点データに発散型経度微分 1/rcosφ・∂/∂λ を作用させた
スペクトルデータを返す.
Original external subprogram is wq_mpi_module#wr_DivLon_xvr
wr_DivLon_xyr( xyr ) result(wr_DivLon_xyr)
Function : |
|
wr_DivLon_xyr : | real(8), dimension((nm+1)*(nm+1),km)
: | (out) 発散型経度微分を作用された水平スペクトル動径格子点データ
|
|
xyr : | real(8), dimension(0:im-1,1:jm,km), intent(in)
|
格子点データに発散型経度微分 1/rcosφ・∂/∂λ を作用させた
スペクトルデータを返す.
Original external subprogram is wq_mpi_module#wr_DivLon_xyr
wr_DivRad_wq( wq ) result(wr_DivRad_wq)
Function : |
|
wr_DivRad_wq : | real(8), dimension((nm+1)*(nm+1),km)
: | (out) 発散型動径微分を作用された水平スペクトル動径格子点データ
|
|
wq : | real(8), dimension((nm+1)*(nm+1),0:lm), intent(in)
: | (in) 2 次元球面調和函数チェビシェフスペクトルデータ
|
|
入力スペクトルデータに発散型動径微分
1/r^2 ∂/∂r (r^2 .)= ∂/∂r + 2/r
を作用する.
スペクトルデータの発散型動径微分とは, 対応する格子点データに
発散型動径微分を作用させたデータのスペクトル変換のことである.
Original external subprogram is wq_mpi_module#wr_DivRad_wq
wr_DivRad_xvr( xvr ) result(wr_DivRad_xvr)
Function : |
|
wr_DivRad_xvr : | real(8), dimension((nm+1)*(nm+1),km)
: | (out) 発散型動径微分を作用された水平スペクトル動径格子点データ
|
|
xvr : | real(8), dimension(0:im-1,jc,km), intent(in)
: | (in) 2 次元球面調和函数チェビシェフスペクトルデータ
|
|
格子点データに発散型動径微分
1/r^2 ∂/∂r (r^2 = ∂/∂r + 2/= 1/r∂/∂(r.) + 1/r
を作用する.
この関数の入力は動径次数と水平全波数の偶奇性が異なっていることを
仮定している. 偶奇性が一致している場合には wr_DigRad_wq を使用すること.
Original external subprogram is wq_mpi_module#wr_DivRad_xvr
wr_DivRad_xyr( xyr ) result(wr_DivRad_xyr)
Function : |
|
wr_DivRad_xyr : | real(8), dimension((nm+1)*(nm+1),km)
: | (out) 発散型動径微分を作用された水平スペクトル動径格子点データ
|
|
xyr : | real(8), dimension(0:im-1,jm,km), intent(in)
: | (in) 2 次元球面調和函数チェビシェフスペクトルデータ
|
|
格子点データに発散型動径微分
1/r^2 ∂/∂r (r^2 = ∂/∂r + 2/= 1/r∂/∂(r.) + 1/r
を作用する.
この関数の入力は動径次数と水平全波数の偶奇性が異なっていることを
仮定している. 偶奇性が一致している場合には wr_DigRad_wq を使用すること.
Original external subprogram is wq_mpi_module#wr_DivRad_xyr
wr_Div_xvr_xvr_xvr( xvr_Vlon, xvr_Vlat, xvr_Vrad ) result(wr_Div_xvr_xvr_xvr)
Function : |
|
wr_Div_xvr_xvr_xvr : | real(8), dimension((nm+1)*(nm+1),km)
|
xvr_Vlon : | real(8), dimension(0:im-1,1:jc,km), intent(in)
|
xvr_Vlat : | real(8), dimension(0:im-1,1:jc,km), intent(in)
|
xvr_Vrad : | real(8), dimension(0:im-1,1:jc,km), intent(in)
|
べクトル成分である 3 つの格子データに発散を作用させた
スペクトルデータを返す.
第 1, 2 ,3 引数(u,v,w)がそれぞれベクトルの経度成分, 緯度成分,
動径成分を表し, 発散は
1/rcosφ・∂u/∂λ + 1/rcosφ・∂(v cosφ)/∂φ
+ 1/r^2 ∂/∂r (r^2 w)
と計算される.
第3成分の動径次数と水平全波数の偶奇性がずれていることを仮定している.
Original external subprogram is wq_mpi_module#wr_Div_xvr_xvr_xvr
wr_Div_xyr_xyr_xyr( xyr_Vlon, xyr_Vlat, xyr_Vrad ) result(wr_Div_xyr_xyr_xyr)
Function : |
|
wr_Div_xyr_xyr_xyr : | real(8), dimension((nm+1)*(nm+1),km)
|
xyr_Vlon : | real(8), dimension(0:im-1,1:jm,km), intent(in)
|
xyr_Vlat : | real(8), dimension(0:im-1,1:jm,km), intent(in)
|
xyr_Vrad : | real(8), dimension(0:im-1,1:jm,km), intent(in)
|
べクトル成分である 3 つの格子データに発散を作用させた
スペクトルデータを返す.
第 1, 2 ,3 引数(u,v,w)がそれぞれベクトルの経度成分, 緯度成分,
動径成分を表し, 発散は
1/rcosφ・∂u/∂λ + 1/rcosφ・∂(v cosφ)/∂φ
+ 1/r^2 ∂/∂r (r^2 w)
と計算される.
第3成分の動径次数と水平全波数の偶奇性がずれていることを仮定している.
Original external subprogram is wq_mpi_module#wr_Div_xyr_xyr_xyr
wr_PolmagBoundaryGrid( wr_POL, [new] )
Subroutine : |
|
wr_POL : | real(8), dimension((nm+1)*(nm+1),km),intent(inout)
: | (inout) 境界条件を適用するデータ. 修正された値を返す.
|
|
new : | logical, intent(IN), optional
: | (in) true だと境界条件計算用行列を強制的に新たに作る.
default は false.
|
|
磁場ポロイダルポテンシャルに対して境界条件を適用する.
鉛直実空間での境界条件適用.
鉛直実格子点空間において内部領域の値と境界条件を満たすように
条件を課している(選点法).
現在のところ境界物質が非電気伝導体の場合のみ対応している. その場合,
磁場ポロイダルポテンシャルの各水平スペクトル成分 h に
たいして境界条件が与えられ,
* 外側境界 : dh/dr + (n+1)h/r = 0
である. ここで n は h の水平全波数である.
最初に呼ばれるときはオプショナル引数 new に関係なく行列が設定される.
Original external subprogram is wq_mpi_module#wr_PolmagBoundaryGrid
wr_RadRotRot_xvr_xvr_xvr( xvr_VLON, xvr_VLAT, xvr_VRAD ) result(wr_RadRotRot_xvr_xvr_xvr)
Function : |
|
wr_RadRotRot_xvr_xvr_xvr : | real(8), dimension((nm+1)*(nm+1),km)
: | (out) ベクトル v の r・(▽×▽×v)
|
|
xvr_VLON : | real(8), dimension(0:im-1,1:jc,km), intent(in)
|
xvr_VLAT : | real(8), dimension(0:im-1,1:jc,km), intent(in)
|
xvr_VRAD : | real(8), dimension(0:im-1,1:jc,km), intent(in)
|
ベクトル v に対して r・(▽×▽×v) を計算する.
第 1, 2, 3 引数(v[λ], v[φ], v[r])がそれぞれベクトルの経度成分, 緯度成分,
動径成分を表す.
r・(▽×▽×v) = 1/r ∂/∂r (r・( 1/cosφ・∂v[λ]/∂λ
+ 1/cosφ・∂(v[φ] cosφ)/∂φ ) )
+ L^2 v[r]/r
のスペクトルデータが返される.
Original external subprogram is wq_mpi_module#wr_RadRotRot_xvr_xvr_xvr
wr_RadRotRot_xyr_xyr_xyr( xyr_VLON, xyr_VLAT, xyr_VRAD ) result(wr_RadRotRot_xyr_xyr_xyr)
Function : |
|
wr_RadRotRot_xyr_xyr_xyr : | real(8), dimension((nm+1)*(nm+1),km)
: | (out) ベクトル v の r・(▽×▽×v)
|
|
xyr_VLON : | real(8), dimension(0:im-1,1:jm,km), intent(in)
|
xyr_VLAT : | real(8), dimension(0:im-1,1:jm,km), intent(in)
|
xyr_VRAD : | real(8), dimension(0:im-1,1:jm,km), intent(in)
|
ベクトル v に対して r・(▽×▽×v) を計算する.
第 1, 2, 3 引数(v[λ], v[φ], v[r])がそれぞれベクトルの経度成分, 緯度成分,
動径成分を表す.
r・(▽×▽×v) = 1/r ∂/∂r (r・( 1/cosφ・∂v[λ]/∂λ
+ 1/cosφ・∂(v[φ] cosφ)/∂φ ) )
+ L^2 v[r]/r
のスペクトルデータが返される.
Original external subprogram is wq_mpi_module#wr_RadRotRot_xyr_xyr_xyr
wr_RadRot_xvr_xvr( xvr_VLON, xvr_VLAT ) result(wr_RadRot_xvr_xvr)
Function : |
|
wr_RadRot_xvr_xvr : | real(8), dimension((nm+1)*(nm+1),km)
: | (out) ベクトルの渦度と動径ベクトルの内積
|
|
xvr_VLON : | real(8), dimension(0:im-1,1:jc,km), intent(in)
|
xvr_VLAT : | real(8), dimension(0:im-1,1:jc,km), intent(in)
|
r・(▽×v)
ベクトルの渦度と動径ベクトルの内積 r・(▽×v) を計算する.
第 1, 2 引数(v[λ], v[φ])がそれぞれベクトルの経度成分, 緯度成分を表す.
r・(▽×v) = 1/cosφ・∂v[φ]/∂λ - 1/cosφ・∂(v[λ] cosφ)/∂φ
のスペクトル データが返される.
Original external subprogram is wq_mpi_module#wr_RadRot_xvr_xvr
wr_RadRot_xyr_xyr( xyr_VLON, xyr_VLAT ) result(wr_RadRot_xyr_xyr)
Function : |
|
wr_RadRot_xyr_xyr : | real(8), dimension((nm+1)*(nm+1),km)
: | (out) ベクトルの渦度と動径ベクトルの内積
|
|
xyr_VLON : | real(8), dimension(0:im-1,1:jm,km), intent(in)
|
xyr_VLAT : | real(8), dimension(0:im-1,1:jm,km), intent(in)
|
r・(▽×v)
ベクトルの渦度と動径ベクトルの内積 r・(▽×v) を計算する.
第 1, 2 引数(v[λ], v[φ])がそれぞれベクトルの経度成分, 緯度成分を表す.
r・(▽×v) = 1/cosφ・∂v[φ]/∂λ - 1/cosφ・∂(v[λ] cosφ)/∂φ
のスペクトル データが返される.
Original external subprogram is wq_mpi_module#wr_RadRot_xyr_xyr
wr_RotDRad_wq( wq ) result(wr_RotDRad_wq)
Function : |
|
wr_RotDRad_wq : | real(8), dimension((nm+1)*(nm+1),km)
: | (out) 回転型動径微分を作用された水平スペクトル動径格子点データ
|
|
wq : | real(8), dimension((nm+1)*(nm+1),0:lm), intent(in)
: | (in) 2 次元球面調和函数チェビシェフスペクトルデータ
|
|
入力スペクトルデータに回転型動径微分
1/r ∂(r.)/∂r = ∂(.)/∂r + (.)/r
を作用する.
スペクトルデータの回転型動径微分とは, 対応する格子点データに
回転型動径微分を作用させたデータのスペクトル変換のことである.
Original external subprogram is wq_mpi_module#wr_RotDRad_wq
wr_RotDRad_wr( wr ) result(wr_RotDRad_wr)
Function : |
|
wr_RotDRad_wr : | real(8), dimension((nm+1)*(nm+1),km)
: | (out) 回転型動径微分を作用された水平スペクトル動径格子点データ
|
|
wr : | real(8), dimension((nm+1)*(nm+1),km), intent(in)
: | (in) 2 次元球面調和函数チェビシェフスペクトルデータ
|
|
入力スペクトルデータに回転型動径微分
1/r ∂(r.)/∂r = ∂(.)/∂r + (.)/r
を作用する.
スペクトルデータの回転型動径微分とは, 対応する格子点データに
回転型動径微分を作用させたデータのスペクトル変換のことである.
Original external subprogram is wq_mpi_module#wr_RotDRad_wr
wr_RotRad_xvr_xvr( xvr_Vlat, xvr_Vlon ) result(wr_RotRad_xvr_xvr)
Function : |
|
wr_RotRad_xvr_xvr : | real(8), dimension((nm+1)*(nm+1),km)
|
xvr_Vlat : | real(8), dimension(0:im-1,1:jc,km), intent(in)
|
xvr_Vlon : | real(8), dimension(0:im-1,1:jc,km), intent(in)
|
ベクトルの緯度成分, 経度成分である第 1, 2 引数 Vlat, Vlon に対して
ベクトル場の回転の動径成分
1/rcosφ・∂Vlat/∂λ - 1/rcosφ・∂(Vlon cosφ)/∂φ
を計算する.
Original external subprogram is wq_mpi_module#wr_RotRad_xvr_xvr
wr_RotRad_xyr_xyr( xyr_Vlat, xyr_Vlon ) result(wr_RotRad_xyr_xyr)
Function : |
|
wr_RotRad_xyr_xyr : | real(8), dimension((nm+1)*(nm+1),km)
|
xyr_Vlat : | real(8), dimension(0:im-1,1:jm,km), intent(in)
|
xyr_Vlon : | real(8), dimension(0:im-1,1:jm,km), intent(in)
|
ベクトルの緯度成分, 経度成分である第 1, 2 引数 Vlat, Vlon に対して
ベクトル場の回転の動径成分
1/rcosφ・∂Vlat/∂λ - 1/rcosφ・∂(Vlon cosφ)/∂φ
を計算する.
Original external subprogram is wq_mpi_module#wr_RotRad_xyr_xyr
wr_TorBoundaryGrid( wr_TORPOT, [value], [cond], [new] )
Subroutine : |
|
wr_TORPOT : | real(8), dimension((nm+1)*(nm+1),km),intent(inout)
: | (inout) 境界条件を適用するデータ. 修正された値を返す.
|
|
value : | real(8), dimension((nm+1)*(nm+1)), intent(in), optional
: | (in) 両端境界でのトロイダルポテンシャル
粘着条件の時のみ有効
|
|
cond : | character(len=1), intent(in), optional
: | (in) 境界条件スイッチ. 省略時は ‘R‘
R : 上側粘着条件
F : 上側応力なし条件
|
|
new : | logical, intent(IN), optional
: | (in) true だと境界条件計算用行列を強制的に新たに作る.
default は false.
|
|
速度トロイダルポテンシャルに対して境界条件を適用する.
実空間での境界条件適用
鉛直実格子点空間において内部領域の値と境界条件を満たすように
条件を課している(選点法).
速度トロイダルポテンシャルΨに対して与えられる境界条件は
* 粘着条件 : Ψ = Ψb(lon,lat). Ψb は境界球面での速度分布.
default は 0 (静止状態).
* 応力なし条件 : ∂(Ψ/r)/∂r = 0.
最初に呼ばれるときはオプショナル引数 new に関係なく行列が設定される.
Original external subprogram is wq_mpi_module#wr_TorBoundaryGrid
wr_TormagBoundaryGrid( wr_TOR, [new] )
Subroutine : |
|
wr_TOR : | real(8), dimension((nm+1)*(nm+1),km),intent(inout)
: | (inout) 境界条件を適用するデータ. 修正された値を返す.
|
|
new : | logical, intent(IN), optional
: | (in) (ダミー) true だと境界条件計算用行列を強制的に新たに作る.
default は false.
|
|
磁場トロイダルポテンシャルに対して境界条件を適用する.
鉛直実空間での境界条件適用.
鉛直実格子点空間において内部領域の値と境界条件を満たすように
条件を課している(選点法).
現在のところ境界物質が非電気伝導体の場合のみ対応している. その場合,
磁場トロイダルポテンシャルの境界条件は
外側
wq_psi = 0 at the outer boundary
であるので wq_Boundary
で対応可能だが, 将来のため別途作成しておく
最初に呼ばれるときはオプショナル引数 new に関係なく行列が設定される.
Original external subprogram is wq_mpi_module#wr_TormagBoundaryGrid
wr_wq( wq ) result(wr_wq)
Function : |
|
wr_wq : | real(8), dimension((nm+1)*(nm+1),km)
: | (out) 2 次元球面調和函数スペクトル・動径格子点データ
|
|
wq : | real(8), dimension((nm+1)*(nm+1),0:lm), intent(in)
: | (in) 2 次元球面調和函数チェビシェフスペクトルデータ
|
|
スペクトルデータから水平スペクトル・動径格子点データへ(正)変換する.
Original external subprogram is wq_mpi_module#wr_wq
wr_xvr( xvr ) result(wr_xvr)
Function : |
|
wr_xvr : | real(8), dimension((nm+1)*(nm+1),km)
: | (out) 2 次元球面調和函数スペクトル・動径格子点データ
|
|
xvr : | real(8), dimension(0:im-1,1:jc,km), intent(in)
|
3 次元格子データから水平スペクトル・動径格子点データへ(正)変換する.
Original external subprogram is wq_mpi_module#wr_xvr
wr_xyr( xyr ) result(wr_xyr)
Function : |
|
wr_xyr : | real(8), dimension((nm+1)*(nm+1),km)
: | (out) 2 次元球面調和函数スペクトル・動径格子点データ
|
|
xyr : | real(8), dimension(0:im-1,1:jm,km), intent(in)
|
3 次元格子データから水平スペクトル・動径格子点データへ(正)変換する.
Original external subprogram is wq_mpi_module#wr_xyr
wt_Boundaries( wt, [values], [cond] )
Subroutine : |
|
wt : | real(8), dimension((nm+1)*(nm+1),0:lm),intent(inout)
: | (inout) 境界条件を適用するデータ. 修正された値を返す.
|
|
values : | real(8), dimension((nm+1)*(nm+1),2), intent(in), optional
: | (in) 境界での 値/勾配 分布を水平スペクトル変換したものを与える.
省略時は値/勾配 0 となる.
|
|
cond : | character(len=2), intent(in), optional
: | (in) 境界条件. 省略時は ‘DD‘
DD : 両端ディリクレ条件
DN : 上端ディリクレ, 下端ノイマン条件
ND : 上端ノイマン, 下端ディリクレ条件
NN : 両端ノイマン条件
|
|
スペクトルデータにディリクレ・ノイマン境界条件を適用する Chebyshev
空間での境界条件適用(タウ法)
チェビシェフ空間において境界条件を満たすべく高次の係数を
定める方法をとっている(タウ法).
Original external subprogram is wt_mpi_module#wt_Boundaries
wt_BoundariesGrid( wt, [values], [cond] )
Subroutine : |
|
wt : | real(8), dimension((nm+1)*(nm+1),0:lm),intent(inout)
: | (inout) 境界条件を適用するデータ. 修正された値を返す.
|
|
values : | real(8), dimension((nm+1)*(nm+1),2), intent(in), optional
: | (in) 境界での 値/勾配 分布を水平スペクトル変換したものを与える.
省略時は値/勾配 0 となる.
|
|
cond : | character(len=2), intent(in), optional
: | (in) 境界条件. 省略時は ‘DD‘
DD : 両端ディリクレ条件
DN : 上端ディリクレ, 下端ノイマン条件
ND : 上端ノイマン, 下端ディリクレ条件
NN : 両端ノイマン条件
|
|
スペクトルデータにディリクレ・ノイマン境界条件を適用する
実空間での境界条件適用
鉛直実格子点空間において内部領域の値と境界条件を満たすように
条件を課している(選点法). このルーチンを用いるためには wt_Initial
にて設定するチェビシェフ切断波数(lm)と鉛直格子点数(km)を
等しくしておく必要がある.
Original external subprogram is wt_mpi_module#wt_BoundariesGrid
wt_BoundariesTau( wt, [values], [cond] )
Subroutine : |
|
wt : | real(8), dimension((nm+1)*(nm+1),0:lm),intent(inout)
: | (inout) 境界条件を適用するデータ. 修正された値を返す.
|
|
values : | real(8), dimension((nm+1)*(nm+1),2), intent(in), optional
: | (in) 境界での 値/勾配 分布を水平スペクトル変換したものを与える.
省略時は値/勾配 0 となる.
|
|
cond : | character(len=2), intent(in), optional
: | (in) 境界条件. 省略時は ‘DD‘
DD : 両端ディリクレ条件
DN : 上端ディリクレ, 下端ノイマン条件
ND : 上端ノイマン, 下端ディリクレ条件
NN : 両端ノイマン条件
|
|
スペクトルデータにディリクレ・ノイマン境界条件を適用する Chebyshev
空間での境界条件適用(タウ法)
チェビシェフ空間において境界条件を満たすべく高次の係数を
定める方法をとっている(タウ法).
Original external subprogram is wt_mpi_module#wt_BoundariesTau
wt_DRad_wt( wt ) result(wt_DRad_wt)
Function : |
|
wt_DRad_wt : | real(8), dimension((nm+1)*(nm+1),0:lm)
: | (in) 動径微分された2 次元球面調和函数チェビシェフスペクトルデータ
|
|
wt : | real(8), dimension((nm+1)*(nm+1),0:lm), intent(in)
: | (in) 2 次元球面調和函数チェビシェフスペクトルデータ
|
|
入力スペクトルデータに動径微分 ∂/∂r を作用する.
スペクトルデータの動径微分とは, 対応する格子点データに動径微分を
作用させたデータのスペクトル変換のことである.
Original external subprogram is wt_mpi_module#wt_DRad_wt
wt_DivLat_xvz( xvz ) result(wt_DivLat_xvz)
Function : |
|
wt_DivLat_xvz : | real(8), dimension((nm+1)*(nm+1),0:lm)
: | (out) 発散型緯度微分を作用された 2 次元スペクトルデータ
|
|
xvz : | real(8), dimension(0:im-1,jc,0:km), intent(in)
|
格子データに発散型緯度微分 1/rcosφ・∂(f cosφ)/∂φ を
作用させたスペクトルデータを返す.
Original external subprogram is wt_mpi_module#wt_DivLat_xvz
wt_DivLat_xyz( xyz ) result(wt_DivLat_xyz)
Function : |
|
wt_DivLat_xyz : | real(8), dimension((nm+1)*(nm+1),0:lm)
: | (out) 発散型緯度微分を作用された 2 次元スペクトルデータ
|
|
xyz : | real(8), dimension(0:im-1,1:jm,0:km), intent(in)
|
格子データに発散型緯度微分 1/rcosφ・∂(f cosφ)/∂φ を
作用させたスペクトルデータを返す.
Original external subprogram is wt_mpi_module#wt_DivLat_xyz
wt_DivLon_xvz( xvz ) result(wt_DivLon_xvz)
Function : |
|
wt_DivLon_xvz : | real(8), dimension((nm+1)*(nm+1),0:lm)
: | (out) 発散型経度微分を作用された 2 次元スペクトルデータ
|
|
xvz : | real(8), dimension(0:im-1,jc,0:km), intent(in)
|
格子点データに発散型経度微分 1/rcosφ・∂/∂λ を作用させた
スペクトルデータを返す.
Original external subprogram is wt_mpi_module#wt_DivLon_xvz
wt_DivLon_xyz( xyz ) result(wt_DivLon_xyz)
Function : |
|
wt_DivLon_xyz : | real(8), dimension((nm+1)*(nm+1),0:lm)
: | (out) 発散型経度微分を作用された 2 次元スペクトルデータ
|
|
xyz : | real(8), dimension(0:im-1,1:jm,0:km), intent(in)
|
格子点データに発散型経度微分 1/rcosφ・∂/∂λ を作用させた
スペクトルデータを返す.
Original external subprogram is wt_mpi_module#wt_DivLon_xyz
wt_DivRad_wt( wt ) result(wt_DivRad_wt)
Function : |
|
wt_DivRad_wt : | real(8), dimension((nm+1)*(nm+1),0:lm)
: | (out) 発散型動径微分を作用された 2 次元スペクトルデータ
|
|
wt : | real(8), dimension((nm+1)*(nm+1),0:lm), intent(in)
: | (in) 2 次元球面調和函数チェビシェフスペクトルデータ
|
|
入力スペクトルデータに発散型動径微分
1/r^2 ∂/∂r (r^2 .)= ∂/∂r + 2/r
を作用する.
スペクトルデータの発散型動径微分とは, 対応する格子点データに
発散型動径微分を作用させたデータのスペクトル変換のことである.
Original external subprogram is wt_mpi_module#wt_DivRad_wt
wt_Div_xvz_xvz_xvz( xvz_Vlon, xvz_Vlat, xvz_Vrad ) result(wt_Div_xvz_xvz_xvz)
Function : |
|
wt_Div_xvz_xvz_xvz : | real(8), dimension((nm+1)*(nm+1),0:lm)
|
xvz_Vlon : | real(8), dimension(0:im-1,jc,0:km), intent(in)
|
xvz_Vlat : | real(8), dimension(0:im-1,jc,0:km), intent(in)
|
xvz_Vrad : | real(8), dimension(0:im-1,jc,0:km), intent(in)
|
べクトル成分である 3 つの格子データに発散を作用させた
スペクトルデータを返す.
第 1, 2 ,3 引数(u,v,w)がそれぞれベクトルの経度成分, 緯度成分,
動径成分を表し, 発散は
1/rcosφ・∂u/∂λ + 1/rcosφ・∂(v cosφ)/∂φ
+ 1/r^2 ∂/∂r (r^2 w)
と計算される.
Original external subprogram is wt_mpi_module#wt_Div_xvz_xvz_xvz
wt_Div_xyz_xyz_xyz( xyz_Vlon, xyz_Vlat, xyz_Vrad ) result(wt_Div_xyz_xyz_xyz)
Function : |
|
wt_Div_xyz_xyz_xyz : | real(8), dimension((nm+1)*(nm+1),0:lm)
|
xyz_Vlon : | real(8), dimension(0:im-1,1:jm,0:km), intent(in)
|
xyz_Vlat : | real(8), dimension(0:im-1,1:jm,0:km), intent(in)
|
xyz_Vrad : | real(8), dimension(0:im-1,1:jm,0:km), intent(in)
|
べクトル成分である 3 つの格子データに発散を作用させた
スペクトルデータを返す.
第 1, 2 ,3 引数(u,v,w)がそれぞれベクトルの経度成分, 緯度成分,
動径成分を表し, 発散は
1/rcosφ・∂u/∂λ + 1/rcosφ・∂(v cosφ)/∂φ
+ 1/r^2 ∂/∂r (r^2 w)
と計算される.
Original external subprogram is wt_mpi_module#wt_Div_xyz_xyz_xyz
wt_KxRGrad_wt( wt ) result(wt_KxRGrad_wt)
Function : |
|
wt_KxRGrad_wt : | real(8), dimension((nm+1)*(nm+1),0:lm)
: | (out) 経度微分を作用された 2 次元スペクトルデータ
|
|
wt : | real(8), dimension((nm+1)*(nm+1),0:lm), intent(in)
: | (in) 2 次元球面調和函数チェビシェフスペクトルデータ
|
|
入力スペクトルデータに経度微分 k×r・▽ = ∂/∂λを作用する.
Original external subprogram is wt_mpi_module#wt_KxRGrad_wt
wt_L2Inv_wt( wt ) result(wt_L2Inv_wt)
Function : |
|
wt_L2Inv_wt : | real(8), dimension((nm+1)*(nm+1),0:lm)
: | (out) L^2 演算子の逆演算を作用された 2 次元スペクトルデータ
|
|
wt : | real(8), dimension((nm+1)*(nm+1),0:lm), intent(in)
: | (in) 2 次元球面調和函数チェビシェフスペクトルデータ
|
|
入力スペクトルデータに L^2 演算子の逆演算(-逆水平ラプラシアン)を 作用する.
スペクトルデータに L^2 演算子を作用させる関数 wt_L2_wt の逆計算を 行う関数である.
Original external subprogram is wt_mpi_module#wt_L2Inv_wt
wt_L2_wt( wt ) result(wt_L2_wt)
Function : |
|
wt_L2_wt : | real(8), dimension((nm+1)*(nm+1),0:lm)
: | (out) L^2 演算子を作用された 2 次元スペクトルデータ
|
|
wt : | real(8), dimension((nm+1)*(nm+1),0:lm), intent(in)
: | (in) 2 次元球面調和函数チェビシェフスペクトルデータ
|
|
入力スペクトルデータに L^2 演算子(=-水平ラプラシアン)を作用する.
L^2 演算子は単位球面上の水平ラプラシアンの逆符号にあたる.
入力スペクトルデ ータに対応する格子点データに演算子
L^2 = -1/cos^2φ・∂^2/∂λ^2 - 1/cosφ・∂/∂φ(cosφ∂/∂φ)
を作用させたデータのスペクトル変換が返される.
Original external subprogram is wt_mpi_module#wt_L2_wt
wt_LaplaPol2PolGrid_wt( wt, [cond], [new] ) result(wt_LaplaPol2PolGrid_wt)
Function : |
|
wt_LaplaPol2PolGrid_wt : | real(8), dimension((nm+1)*(nm+1),0:lm)
|
wt : | real(8), dimension((nm+1)*(nm+1),0:lm),intent(in)
|
cond : | character(len=2), intent(in), optional
: | (in) 境界条件スイッチ. 省略時は ‘RR‘
RR : 両端粘着条件
RF : 上端粘着, 下端応力なし条件
FR : 上端応力なし, 下端粘着条件
FF : 両端応力なし条件
|
|
new : | logical, intent(IN), optional
: | (in) true だと境界条件計算用行列を強制的に新たに作る.
default は false.
|
|
速度ポロイダルポテンシャルΦを▽^2Φから計算する.
チェビシェフ格子点空間で境界条件を適用している.
この関数を用いるためには wt_Initial にて設定する
チェビシェフ切断波数(lm)と鉛直格子点数(km)を等しく しておく必要がある.
速度ポロイダルポテンシャルΦを f = ▽^2Φから定める式は
▽^2Φ = f
Φ = const. at boundaries.
∂Φ/∂r = 0 at boundaries (粘着条件)
or ∂^2Φ/∂r^2 = 0 at boundaries (応力なし条件)
最初に呼ばれるときはオプショナル引数 new に関係なく行列が設定される.
最終的にチェビシェフ係数の解が欲しい場合には, wz_LaplaPol2Pol_wz に
比べてチェビシェフ — 格子点変換が 1 回分少なくて済む.
Original external subprogram is wt_mpi_module#wt_LaplaPol2PolGrid_wt
wt_LaplaPol2PolTau_wt( wt, [cond], [new] ) result(wt_LaplaPol2PolTau_wt)
Function : |
|
wt_LaplaPol2PolTau_wt : | real(8), dimension((nm+1)*(nm+1),0:lm)
|
wt : | real(8), dimension((nm+1)*(nm+1),0:lm),intent(in)
|
cond : | character(len=2), intent(in), optional
: | (in) 境界条件スイッチ. 省略時は ‘RR‘
RR : 両端粘着条件
RF : 上端粘着, 下端応力なし条件
FR : 上端応力なし, 下端粘着条件
FF : 両端応力なし条件
|
|
new : | logical, intent(IN), optional
: | (in) true だと境界条件計算用行列を強制的に新たに作る.
default は false.
|
|
速度ポロイダルポテンシャルΦを▽^2Φから計算する.
チェビシェフタウ法で境界条件を適用している.
速度ポロイダルポテンシャルΦを f = ▽^2Φから定める式は
▽^2Φ = f
Φ = const. at boundaries.
∂Φ/∂r = 0 at boundaries (粘着条件)
or ∂^2Φ/∂r^2 = 0 at boundaries (応力なし条件)
最初に呼ばれるときはオプショナル引数 new に関係なく行列が設定される.
Original external subprogram is wt_mpi_module#wt_LaplaPol2PolTau_wt
wt_LaplaPol2Pol_wt( wt, [cond], [new] ) result(wt_LaplaPol2PolTau_wt)
Function : |
|
wt_LaplaPol2PolTau_wt : | real(8), dimension((nm+1)*(nm+1),0:lm)
|
wt : | real(8), dimension((nm+1)*(nm+1),0:lm),intent(in)
|
cond : | character(len=2), intent(in), optional
: | (in) 境界条件スイッチ. 省略時は ‘RR‘
RR : 両端粘着条件
RF : 上端粘着, 下端応力なし条件
FR : 上端応力なし, 下端粘着条件
FF : 両端応力なし条件
|
|
new : | logical, intent(IN), optional
: | (in) true だと境界条件計算用行列を強制的に新たに作る.
default は false.
|
|
速度ポロイダルポテンシャルΦを▽^2Φから計算する.
チェビシェフタウ法で境界条件を適用している.
速度ポロイダルポテンシャルΦを f = ▽^2Φから定める式は
▽^2Φ = f
Φ = const. at boundaries.
∂Φ/∂r = 0 at boundaries (粘着条件)
or ∂^2Φ/∂r^2 = 0 at boundaries (応力なし条件)
最初に呼ばれるときはオプショナル引数 new に関係なく行列が設定される.
Original external subprogram is wt_mpi_module#wt_LaplaPol2Pol_wt
wt_Lapla_wt( wt ) result(wt_Lapla_wt)
Function : |
|
wt_Lapla_wt : | real(8), dimension((nm+1)*(nm+1),0:lm)
: | (out) ラプラシアンを作用された 2 次元スペクトルデータ
|
|
wt : | real(8), dimension((nm+1)*(nm+1),0:lm), intent(in)
: | (in) 2 次元球面調和函数チェビシェフスペクトルデータ
|
|
入力スペクトルデータにラプラシアン
▽^2 = 1/r^2 cos^2φ・∂^2/∂λ^2
+ 1/r^2 cosφ・∂/∂φ(cosφ∂/∂φ)
+ 1/r^2 ∂/∂r (r^2 ∂/∂r)
を作用する.
スペクトルデータのラプラシアンとは, 対応する格子点データに
ラプラシアンを作用させたデータのスペクトル変換のことである.
Original external subprogram is wt_mpi_module#wt_Lapla_wt
wt_PolMagBoundaries( wt_POL, [new] )
Subroutine : |
|
wt_POL : | real(8), dimension((nm+1)*(nm+1),0:lm),intent(inout)
: | (inout) 境界条件を適用するデータ. 修正された値を返す.
|
|
new : | logical, intent(IN), optional
: | (in) true だと境界条件計算用行列を強制的に新たに作る.
default は false.
|
|
磁場ポロイダルポテンシャルに対して境界条件を適用する. Chebyshev
空間での境界条件適用
チェビシェフ空間において境界条件を満たすべく高次の係数を定める方法を
とっている(タウ法). 現在のところ境界物質が非電気伝導体の場合のみ
対応している. その場合, 磁場ポロイダルポテンシャルの各水平スペクトル 成分 h
にたいして境界条件が与えられ,
* 外側境界 : dh/dr + (n+1)h/r = 0
* 内側境界 : dh/dr - nh/r = 0
である. ここで n は h の水平全波数である.
最初に呼ばれるときはオプショナル引数 new に関係なく行列が設定される.
Original external subprogram is wt_mpi_module#wt_PolMagBoundaries
wt_PolmagBoundariesGrid( wt_POL, [new] )
Subroutine : |
|
wt_POL : | real(8), dimension((nm+1)*(nm+1),0:lm),intent(inout)
: | (inout) 境界条件を適用するデータ. 修正された値を返す.
|
|
new : | logical, intent(IN), optional
: | (in) true だと境界条件計算用行列を強制的に新たに作る.
default は false.
|
|
磁場ポロイダルポテンシャルに対して境界条件を適用する.
鉛直実空間での境界条件適用.
鉛直実格子点空間において内部領域の値と境界条件を満たすように
条件を課している(選点法). このルーチンを用いるためには wt_Initial
にて設定するチェビシェフ切断波数(lm)と鉛直格子点数(km)を
等しくしておく必要がある.
現在のところ境界物質が非電気伝導体の場合のみ対応している. その場合,
磁場ポロイダルポテンシャルの各水平スペクトル成分 h に
たいして境界条件が与えられ,
* 外側境界 : dh/dr + (n+1)h/r = 0
* 内側境界 : dh/dr - nh/r = 0
である. ここで n は h の水平全波数である.
最初に呼ばれるときはオプショナル引数 new に関係なく行列が設定される.
Original external subprogram is wt_mpi_module#wt_PolmagBoundariesGrid
wt_PolmagBoundariesTau( wt_POL, [new] )
Subroutine : |
|
wt_POL : | real(8), dimension((nm+1)*(nm+1),0:lm),intent(inout)
: | (inout) 境界条件を適用するデータ. 修正された値を返す.
|
|
new : | logical, intent(IN), optional
: | (in) true だと境界条件計算用行列を強制的に新たに作る.
default は false.
|
|
磁場ポロイダルポテンシャルに対して境界条件を適用する. Chebyshev
空間での境界条件適用
チェビシェフ空間において境界条件を満たすべく高次の係数を定める方法を
とっている(タウ法). 現在のところ境界物質が非電気伝導体の場合のみ
対応している. その場合, 磁場ポロイダルポテンシャルの各水平スペクトル 成分 h
にたいして境界条件が与えられ,
* 外側境界 : dh/dr + (n+1)h/r = 0
* 内側境界 : dh/dr - nh/r = 0
である. ここで n は h の水平全波数である.
最初に呼ばれるときはオプショナル引数 new に関係なく行列が設定される.
Original external subprogram is wt_mpi_module#wt_PolmagBoundariesTau
wt_Potential2Rotation( xyz_RotVLON, xyz_RotVLAT, xyz_RotVRAD, wt_TORPOT, wt_POLPOT )
Subroutine : |
|
xyz_RotVLON : | real(8), dimension(0:im-1,1:jm,0:km), intent(OUT)
|
xyz_RotVLAT : | real(8), dimension(0:im-1,1:jm,0:km), intent(OUT)
|
xyz_RotVRAD : | real(8), dimension(0:im-1,1:jm,0:km), intent(OUT)
|
wt_TORPOT : | real(8), dimension((nm+1)*(nm+1),0:lm), intent(in)
|
wt_POLPOT : | real(8), dimension((nm+1)*(nm+1),0:lm), intent(in)
|
トロイダルポロイダルポテンシャルΨ,Φで表される非発散ベクトル場
v = ▽x(Ψr) + ▽x▽x(Φr)
に対して, その回転
▽xv = ▽x▽x(Ψr) + ▽x▽x▽x(Φr) = ▽x▽x(Ψr) - ▽x((▽^2Φ)r)
を計算する.
Original external subprogram is wt_mpi_module#wt_Potential2Rotation
wt_Potential2RotationMPI( xvz_RotVLON, xvz_RotVLAT, xvz_RotVRAD, wt_TORPOT, wt_POLPOT )
Subroutine : |
|
xvz_RotVLON : | real(8), dimension(0:im-1,jc,0:km), intent(OUT)
|
xvz_RotVLAT : | real(8), dimension(0:im-1,jc,0:km), intent(OUT)
|
xvz_RotVRAD : | real(8), dimension(0:im-1,jc,0:km), intent(OUT)
|
wt_TORPOT : | real(8), dimension((nm+1)*(nm+1),0:lm), intent(in)
|
wt_POLPOT : | real(8), dimension((nm+1)*(nm+1),0:lm), intent(in)
|
トロイダルポロイダルポテンシャルΨ,Φで表される非発散ベクトル場
v = ▽x(Ψr) + ▽x▽x(Φr)
に対して, その回転
▽xv = ▽x▽x(Ψr) + ▽x▽x▽x(Φr) = ▽x▽x(Ψr) - ▽x((▽^2Φ)r)
を計算する.
Original external subprogram is wt_mpi_module#wt_Potential2RotationMPI
wt_Potential2Vector( xyz_VLON, xyz_VLAT, xyz_VRAD, wt_TORPOT, wt_POLPOT )
Subroutine : |
|
xyz_VLON : | real(8), dimension(0:im-1,1:jm,0:km)
|
xyz_VLAT : | real(8), dimension(0:im-1,1:jm,0:km)
|
xyz_VRAD : | real(8), dimension(0:im-1,1:jm,0:km)
|
wt_TORPOT : | real(8), dimension((nm+1)*(nm+1),0:lm), intent(in)
|
wt_POLPOT : | real(8), dimension((nm+1)*(nm+1),0:lm), intent(in)
|
トロイダルポロイダルポテンシャルΨ,Φで表される非発散ベクトル場
v = ▽x(Ψr) + ▽x▽x(Φr)
の各成分を計算する
Original external subprogram is wt_mpi_module#wt_Potential2Vector
wt_Potential2VectorMPI( xvz_VLON, xvz_VLAT, xvz_VRAD, wt_TORPOT, wt_POLPOT )
Subroutine : |
|
xvz_VLON : | real(8), dimension(0:im-1,jc,0:km)
|
xvz_VLAT : | real(8), dimension(0:im-1,jc,0:km)
|
xvz_VRAD : | real(8), dimension(0:im-1,jc,0:km)
|
wt_TORPOT : | real(8), dimension((nm+1)*(nm+1),0:lm), intent(in)
|
wt_POLPOT : | real(8), dimension((nm+1)*(nm+1),0:lm), intent(in)
|
トロイダルポロイダルポテンシャルΨ,Φで表される非発散ベクトル場
v = ▽x(Ψr) + ▽x▽x(Φr)
の各成分を計算する
Original external subprogram is wt_mpi_module#wt_Potential2VectorMPI
wt_QOperatorMPI_wt( wt ) result(wt_QOperatorMPI_wt)
Function : |
|
wt_QOperatorMPI_wt : | real(8), dimension((nm+1)*(nm+1),0:lm)
: | (out) Q 演算子を作用された 2 次元スペクトルデータ
|
|
wt : | real(8), dimension((nm+1)*(nm+1),0:lm), intent(in)
: | (in) 2 次元球面調和函数チェビシェフスペクトルデータ
|
|
入力スペクトルデータに対応する格子点データに演算子
Q=(k・▽-1/2(L2 k・▽+ k・▽L2))
を作用させたデータのスペクトル変換が返される.
Original external subprogram is wt_mpi_module#wt_QOperatorMPI_wt
wt_QOperator_wt( wt ) result(wt_QOperator_wt)
Function : |
|
wt_QOperator_wt : | real(8), dimension((nm+1)*(nm+1),0:lm)
: | (out) Q 演算子を作用された 2 次元スペクトルデータ
|
|
wt : | real(8), dimension((nm+1)*(nm+1),0:lm), intent(in)
: | (in) 2 次元球面調和函数チェビシェフスペクトルデータ
|
|
入力スペクトルデータに対応する格子点データに演算子
Q=(k・▽-1/2(L2 k・▽+ k・▽L2))
を作用させたデータのスペクトル変換が返される.
Original external subprogram is wt_mpi_module#wt_QOperator_wt
wt_RadRotRot_xvz_xvz_xvz( xvz_VLON, xvz_VLAT, xvz_VRAD ) result(wt_RadRotRot_xvz_xvz_xvz)
Function : |
|
wt_RadRotRot_xvz_xvz_xvz : | real(8), dimension((nm+1)*(nm+1),0:lm)
: | (out) ベクトル v の r・(▽×▽×v)
|
|
xvz_VLON : | real(8), dimension(0:im-1,jc,0:km), intent(in)
|
xvz_VLAT : | real(8), dimension(0:im-1,jc,0:km), intent(in)
|
xvz_VRAD : | real(8), dimension(0:im-1,jc,0:km), intent(in)
|
ベクトル v に対して r・(▽×▽×v) を計算する.
第 1, 2, 3 引数(v[λ], v[φ], v[r])がそれぞれベクトルの経度成分, 緯度成分,
動径成分を表す.
r・(▽×▽×v) = 1/r ∂/∂r (r・( 1/cosφ・∂v[λ]/∂λ
+ 1/cosφ・∂(v[φ] cosφ)/∂φ ) )
+ L^2 v[r]/r
のスペクトルデータが返される.
Original external subprogram is wt_mpi_module#wt_RadRotRot_xvz_xvz_xvz
wt_RadRotRot_xyz_xyz_xyz( xyz_VLON, xyz_VLAT, xyz_VRAD ) result(wt_RadRotRot_xyz_xyz_xyz)
Function : |
|
wt_RadRotRot_xyz_xyz_xyz : | real(8), dimension((nm+1)*(nm+1),0:lm)
: | (out) ベクトル v の r・(▽×▽×v)
|
|
xyz_VLON : | real(8), dimension(0:im-1,1:jm,0:km), intent(in)
|
xyz_VLAT : | real(8), dimension(0:im-1,1:jm,0:km), intent(in)
|
xyz_VRAD : | real(8), dimension(0:im-1,1:jm,0:km), intent(in)
|
ベクトル v に対して r・(▽×▽×v) を計算する.
第 1, 2, 3 引数(v[λ], v[φ], v[r])がそれぞれベクトルの経度成分, 緯度成分,
動径成分を表す.
r・(▽×▽×v) = 1/r ∂/∂r (r・( 1/cosφ・∂v[λ]/∂λ
+ 1/cosφ・∂(v[φ] cosφ)/∂φ ) )
+ L^2 v[r]/r
のスペクトルデータが返される.
Original external subprogram is wt_mpi_module#wt_RadRotRot_xyz_xyz_xyz
wt_RadRot_xvz_xvz( xvz_VLON, xvz_VLAT ) result(wt_RadRot_xvz_xvz)
Function : |
|
wt_RadRot_xvz_xvz : | real(8), dimension((nm+1)*(nm+1),0:lm)
: | (out) ベクトルの渦度と動径ベクトルの内積
|
|
xvz_VLON : | real(8), dimension(0:im-1,jc,0:km), intent(in)
|
xvz_VLAT : | real(8), dimension(0:im-1,jc,0:km), intent(in)
|
r・(▽×v)
ベクトルの渦度と動径ベクトルの内積 r・(▽×v) を計算する.
第 1, 2 引数(v[λ], v[φ])がそれぞれベクトルの経度成分, 緯度成分を表す.
r・(▽×v) = 1/cosφ・∂v[φ]/∂λ - 1/cosφ・∂(v[λ] cosφ)/∂φ
のスペクトル データが返される.
Original external subprogram is wt_mpi_module#wt_RadRot_xvz_xvz
wt_RadRot_xyz_xyz( xyz_VLON, xyz_VLAT ) result(wt_RadRot_xyz_xyz)
Function : |
|
wt_RadRot_xyz_xyz : | real(8), dimension((nm+1)*(nm+1),0:lm)
: | (out) ベクトルの渦度と動径ベクトルの内積
|
|
xyz_VLON : | real(8), dimension(0:im-1,1:jm,0:km), intent(in)
|
xyz_VLAT : | real(8), dimension(0:im-1,1:jm,0:km), intent(in)
|
r・(▽×v)
ベクトルの渦度と動径ベクトルの内積 r・(▽×v) を計算する.
第 1, 2 引数(v[λ], v[φ])がそれぞれベクトルの経度成分, 緯度成分を表す.
r・(▽×v) = 1/cosφ・∂v[φ]/∂λ - 1/cosφ・∂(v[λ] cosφ)/∂φ
のスペクトル データが返される.
Original external subprogram is wt_mpi_module#wt_RadRot_xyz_xyz
wt_RotRad_wt( wt ) result(wt_RotRad_wt)
Function : |
|
wt_RotRad_wt : | real(8), dimension((nm+1)*(nm+1),0:lm)
: | (out) 回転型動径微分を作用された 2 次元スペクトルデータ
|
|
wt : | real(8), dimension((nm+1)*(nm+1),0:lm), intent(in)
: | (in) 2 次元球面調和函数チェビシェフスペクトルデータ
|
|
入力スペクトルデータに回転型動径微分
1/r ∂(r.)/∂r = ∂(.)/∂r + (.)/r
を作用する.
スペクトルデータの回転型動径微分とは, 対応する格子点データに
回転型動径微分を作用させたデータのスペクトル変換のことである.
Original external subprogram is wt_mpi_module#wt_RotRad_wt
wt_RotRad_xvz_xvz( xvz_Vlat, xvz_Vlon ) result(wt_RotRad_xvz_xvz)
Function : |
|
wt_RotRad_xvz_xvz : | real(8), dimension((nm+1)*(nm+1),0:lm)
|
xvz_Vlat : | real(8), dimension(0:im-1,jc,0:km), intent(in)
|
xvz_Vlon : | real(8), dimension(0:im-1,jc,0:km), intent(in)
|
ベクトルの緯度成分, 経度成分である第 1, 2 引数 Vlat, Vlon に対して
ベクトル場の回転の動径成分
1/rcosφ・∂Vlat/∂λ - 1/rcosφ・∂(Vlon cosφ)/∂φ
を計算する.
Original external subprogram is wt_mpi_module#wt_RotRad_xvz_xvz
wt_RotRad_xyz_xyz( xyz_Vlat, xyz_Vlon ) result(wt_RotRad_xyz_xyz)
Function : |
|
wt_RotRad_xyz_xyz : | real(8), dimension((nm+1)*(nm+1),0:lm)
|
xyz_Vlat : | real(8), dimension(0:im-1,1:jm,0:km), intent(in)
|
xyz_Vlon : | real(8), dimension(0:im-1,1:jm,0:km), intent(in)
|
ベクトルの緯度成分, 経度成分である第 1, 2 引数 Vlat, Vlon に対して
ベクトル場の回転の動径成分
1/rcosφ・∂Vlat/∂λ - 1/rcosφ・∂(Vlon cosφ)/∂φ
を計算する.
Original external subprogram is wt_mpi_module#wt_RotRad_xyz_xyz
wt_TorBoundaries( wt_TORPOT, [values], [cond], [new] )
Subroutine : |
|
wt_TORPOT : | real(8), dimension((nm+1)*(nm+1),0:lm),intent(inout)
: | (inout) 境界条件を適用するデータ. 修正された値を返す.
|
|
values : | real(8), dimension((nm+1)*(nm+1),2), intent(in), optional
: | (in) 両端境界でのトロイダルポテンシャル
粘着条件の時のみ有効
|
|
cond : | character(len=2), intent(in), optional
: | (in) 境界条件スイッチ. 省略時は ‘RR‘
RR : 両端粘着条件
RF : 上端粘着, 下端応力なし条件
FR : 上端応力なし, 下端粘着条件
FF : 両端応力なし条件
|
|
new : | logical, intent(IN), optional
: | (in) true だと境界条件計算用行列を強制的に新たに作る.
default は false.
|
|
速度トロイダルポテンシャルに対して境界条件を適用する. Chebyshev
空間での境界条件適用.
速度トロイダルポテンシャルΨに対して与えられる境界条件は
* 粘着条件 : Ψ = Ψb(lon,lat). Ψb は境界球面での速度分布.
default は 0(静止状態).
* 応力なし条件 : ∂(Ψ/r)/∂r = 0.
最初に呼ばれるときはオプショナル引数 new に関係なく行列が設定される.
Original external subprogram is wt_mpi_module#wt_TorBoundaries
wt_TorBoundariesGrid( wt_TORPOT, [values], [cond], [new] )
Subroutine : |
|
wt_TORPOT : | real(8), dimension((nm+1)*(nm+1),0:lm),intent(inout)
: | (inout) 境界条件を適用するデータ. 修正された値を返す.
|
|
values : | real(8), dimension((nm+1)*(nm+1),2), intent(in), optional
: | (in) 両端境界でのトロイダルポテンシャル
粘着条件の時のみ有効
|
|
cond : | character(len=2), intent(in), optional
: | (in) 境界条件スイッチ. 省略時は ‘RR‘
RR : 両端粘着条件
RF : 上端粘着, 下端応力なし条件
FR : 上端応力なし, 下端粘着条件
FF : 両端応力なし条件
|
|
new : | logical, intent(IN), optional
: | (in) true だと境界条件計算用行列を強制的に新たに作る.
default は false.
|
|
速度トロイダルポテンシャルに対して境界条件を適用する.
実空間での境界条件適用
鉛直実格子点空間において内部領域の値と境界条件を満たすように
条件を課している(選点法). このルーチンを用いるためには wt_Initial
にて設定するチェビシェフ切断波数(lm)と鉛直格子点数(km)を
等しくしておく必要がある.
速度トロイダルポテンシャルΨに対して与えられる境界条件は
* 粘着条件 : Ψ = Ψb(lon,lat). Ψb は境界球面での速度分布.
default は 0 (静止状態).
* 応力なし条件 : ∂(Ψ/r)/∂r = 0.
最初に呼ばれるときはオプショナル引数 new に関係なく行列が設定される.
Original external subprogram is wt_mpi_module#wt_TorBoundariesGrid
wt_TorBoundariesTau( wt_TORPOT, [values], [cond], [new] )
Subroutine : |
|
wt_TORPOT : | real(8), dimension((nm+1)*(nm+1),0:lm),intent(inout)
: | (inout) 境界条件を適用するデータ. 修正された値を返す.
|
|
values : | real(8), dimension((nm+1)*(nm+1),2), intent(in), optional
: | (in) 両端境界でのトロイダルポテンシャル
粘着条件の時のみ有効
|
|
cond : | character(len=2), intent(in), optional
: | (in) 境界条件スイッチ. 省略時は ‘RR‘
RR : 両端粘着条件
RF : 上端粘着, 下端応力なし条件
FR : 上端応力なし, 下端粘着条件
FF : 両端応力なし条件
|
|
new : | logical, intent(IN), optional
: | (in) true だと境界条件計算用行列を強制的に新たに作る.
default は false.
|
|
速度トロイダルポテンシャルに対して境界条件を適用する. Chebyshev
空間での境界条件適用.
速度トロイダルポテンシャルΨに対して与えられる境界条件は
* 粘着条件 : Ψ = Ψb(lon,lat). Ψb は境界球面での速度分布.
default は 0(静止状態).
* 応力なし条件 : ∂(Ψ/r)/∂r = 0.
最初に呼ばれるときはオプショナル引数 new に関係なく行列が設定される.
Original external subprogram is wt_mpi_module#wt_TorBoundariesTau
wt_TorMagBoundaries( wt_TOR, [new] )
Subroutine : |
|
wt_TOR : | real(8), dimension((nm+1)*(nm+1),0:lm),intent(inout)
: | (inout) 境界条件を適用するデータ. 修正された値を返す.
|
|
new : | logical, intent(IN), optional
: | (in) true だと境界条件計算用行列を強制的に新たに作る.
default は false.
|
|
Original external subprogram is wt_mpi_module#wt_TorMagBoundaries
wt_TormagBoundariesGrid( wt_TOR, [new] )
Subroutine : |
|
wt_TOR : | real(8), dimension((nm+1)*(nm+1),0:lm),intent(inout)
: | (inout) 境界条件を適用するデータ. 修正された値を返す.
|
|
new : | logical, intent(IN), optional
: | (in) true だと境界条件計算用行列を強制的に新たに作る.
default は false.
|
|
磁場トロイダルポテンシャルに対して境界条件を適用する.
鉛直実空間での境界条件適用.
鉛直実格子点空間において内部領域の値と境界条件を満たすように
条件を課している(選点法). このルーチンを用いるためには wt_Initial
にて設定するチェビシェフ切断波数(lm)と鉛直格子点数(km)を
等しくしておく必要がある.
現在のところ境界物質が非電気伝導体の場合のみ対応している. その場合,
磁場トロイダルポテンシャルの境界条件は
外側
wt_psi = 0 at the outer boundary
内側
wt_psi = 0 at the inner boundary
であるので wt_Boundaries
で対応可能だが, 将来のため別途作成しておく
最初に呼ばれるときはオプショナル引数 new に関係なく行列が設定される.
Original external subprogram is wt_mpi_module#wt_TormagBoundariesGrid
wt_TormagBoundariesTau( wt_TOR, [new] )
Subroutine : |
|
wt_TOR : | real(8), dimension((nm+1)*(nm+1),0:lm),intent(inout)
: | (inout) 境界条件を適用するデータ. 修正された値を返す.
|
|
new : | logical, intent(IN), optional
: | (in) true だと境界条件計算用行列を強制的に新たに作る.
default は false.
|
|
Original external subprogram is wt_mpi_module#wt_TormagBoundariesTau
wt_VGradV( xyz_VGRADV_LON, xyz_VGRADV_LAT, xyz_VGRADV_RAD, xyz_VLON, xyz_VLAT, xyz_VRAD )
Subroutine : |
|
xyz_VGRADV_LON : | real(8), dimension(0:im-1,1:jm,0:km),intent(out)
|
xyz_VGRADV_LAT : | real(8), dimension(0:im-1,1:jm,0:km),intent(out)
|
xyz_VGRADV_RAD : | real(8), dimension(0:im-1,1:jm,0:km),intent(out)
|
xyz_VLON : | real(8), dimension(0:im-1,1:jm,0:km),intent(in)
|
xyz_VLAT : | real(8), dimension(0:im-1,1:jm,0:km),intent(in)
|
xyz_VRAD : | real(8), dimension(0:im-1,1:jm,0:km),intent(in)
|
ベクトル場の v・▽v を計算する.
ベクトル場 v=(v[λ],v[φ],v[r]) に対するv・▽vの各成分は
次のように計算される.
(v・▽v)[λ] = ▽・(v[λ]v) + v[λ]v[r]/r - v[λ]v[φ]tan(φ)/r
(v・▽v)[φ] = ▽・(v[φ]v) + v[φ]v[r]/r - v[λ]^2tan(φ)/r
(v・▽v)[r] = ▽・(v[r]v) + (v[λ]^2+v[φ]^2)/r
非発散速度場に対してはポテンシャルから wt_Potential2Rotation を
用いて回転を計算し, 恒等式 v・▽v = ▽(v[2^/2) - vx▽xv を
用いる方がよいだろう.
Original external subprogram is wt_mpi_module#wt_VGradV
wt_wz( wz ) result(wt_wz)
Function : |
|
wt_wz : | real(8), dimension((nm+1)*(nm+1),0:lm)
: | (out) 2 次元球面調和函数チェビシェフスペクトルデータ
|
|
wz : | real(8), dimension((nm+1)*(nm+1),0:km), intent(in)
: | (in) 2 次元球面調和函数スペクトル・動径格子点データ
|
|
水平スペクトル・動径格子点データからスペクトルデータへ(正)変換する.
Original external subprogram is wt_mpi_module#wt_wz
wt_xvz( xvz ) result(wt_xvz)
Function : |
|
wt_xvz : | real(8), dimension((nm+1)*(nm+1),0:lm)
: | (out) 2 次元球面調和函数チェビシェフスペクトルデータ
|
|
xvz : | real(8), dimension(0:im-1,jc,0:km), intent(in)
|
3 次元格子点データからスペクトルデータへ(正)変換する.
Original external subprogram is wt_mpi_module#wt_xvz
wt_xyz( xyz ) result(wt_xyz)
Function : |
|
wt_xyz : | real(8), dimension((nm+1)*(nm+1),0:lm)
: | (out) 2 次元球面調和函数チェビシェフスペクトルデータ
|
|
xyz : | real(8), dimension(0:im-1,1:jm,0:km), intent(in)
|
3 次元格子点データからスペクトルデータへ(正)変換する.
Original external subprogram is wt_mpi_module#wt_xyz
wtq_PolMagBoundaries( wt_Pol, wq_Pol, [new] )
Subroutine : |
|
wt_Pol : | real(8), dimension((nm+1)*(nm+1),0:lmo),intent(inout)
: | (inout) 境界条件を適用するデータ. 修正された値を返す.
|
|
wq_Pol : | real(8), dimension((nm+1)*(nm+1),0:lmi),intent(inout)
: | (inout) 境界条件を適用するデータ. 修正された値を返す.
|
|
new : | logical, intent(IN), optional
: | (in) true だと境界条件計算用行列を強制的に新たに作る.
default は false.
|
|
磁場ポロイダルポテンシャルに対して境界条件を適用する. Chebyshev
空間での境界条件適用
チェビシェフ空間において境界条件を満たすべく高次の係数を定める方法を
とっている(タウ法). 現在のところ外側境界物質が非電気伝導体の場合のみ
対応している. その場合, 磁場トロイダルポテンシャルの境界条件は
現在のところ外側境界物質が非電気伝導体の場合のみ対応している. その場合,
磁場トロイダルポテンシャルの境界条件は
外側
dPol_o/dr +(n+1)/r Pol_o= 0 at the outer boundary
球—球殻境界
Pol_o = Phi_i, DrDPol_o = DrDPol_i at the boundary
最初に呼ばれるときはオプショナル引数 new に関係なく行列が設定される.
Alias for wtq_PolMagBoundariesTau
Subroutine : |
|
wz_Pol : | real(8), dimension((nm+1)*(nm+1),0:kmo),intent(inout)
: | (inout) 境界条件を適用するデータ. 修正された値を返す.
|
|
wr_Pol : | real(8), dimension((nm+1)*(nm+1),kmi),intent(inout)
: | (inout) 境界条件を適用するデータ. 修正された値を返す.
|
|
new : | logical, intent(IN), optional
: | (in) true だと境界条件計算用行列を強制的に新たに作る.
default は false.
|
|
磁場ポロイダルポテンシャルに対して境界条件を適用する.
鉛直実空間での境界条件適用.
鉛直実格子点空間において内部領域の値と境界条件を満たすように
条件を課している(選点法).
現在のところ境界物質が非電気伝導体の場合のみ対応している. その場合,
磁場トロイダルポテンシャルの境界条件は
外側
dPol_o/dr +(n+1)/r Pol_o= 0 at the outer boundary
球—球殻境界
Pol_o = Phi_i, DrDPol_o = DrDPol_i at the boundary
最初に呼ばれるときはオプショナル引数 new に関係なく行列が設定される.
[Source]
subroutine wtq_PolmagBoundariesGrid(wz_Pol,wr_Pol,new)
!
! 磁場ポロイダルポテンシャルに対して境界条件を適用する.
! 鉛直実空間での境界条件適用.
!
! 鉛直実格子点空間において内部領域の値と境界条件を満たすように
! 条件を課している(選点法).
!
! 現在のところ境界物質が非電気伝導体の場合のみ対応している.
! その場合, 磁場トロイダルポテンシャルの境界条件は
!
! 外側
! dPol_o/dr +(n+1)/r Pol_o= 0 at the outer boundary
! 球--球殻境界
! Pol_o = Phi_i, DrDPol_o = DrDPol_i at the boundary
!
! 最初に呼ばれるときはオプショナル引数 new に関係なく行列が設定される.
!
real(8), dimension((nm+1)*(nm+1),0:kmo),intent(inout) :: wz_Pol
!(inout) 境界条件を適用するデータ. 修正された値を返す.
real(8), dimension((nm+1)*(nm+1),kmi),intent(inout) :: wr_Pol
!(inout) 境界条件を適用するデータ. 修正された値を返す.
logical, intent(IN), optional :: new
!(in) true だと境界条件計算用行列を強制的に新たに作る.
! default は false.
real(8), dimension(:,:,:), allocatable :: alu
integer, dimension(:,:), allocatable :: kp
real(8), dimension(:,:), allocatable :: wz_I
real(8), dimension(:,:), allocatable :: wz_DPSIDR
real(8), dimension(:,:), allocatable :: wr_I
real(8), dimension(:,:), allocatable :: wr_DPSIDR
real(8), dimension((nm+1)*(nm+1),0:kmo+kmi) :: wzr_Pol
logical :: first = .true.
logical :: new_matrix = .false.
integer :: n,k,nn(2)
save :: alu, kp, first
if (.not. present(new)) then
new_matrix=.false.
else
new_matrix=new
endif
if ( first .OR. new_matrix ) then
first = .false.
if ( allocated(alu) ) deallocate(alu)
if ( allocated(kp) ) deallocate(kp)
if ( allocated(wz_I) ) deallocate(wz_I)
if ( allocated(wr_I) ) deallocate(wr_I)
allocate(alu((nm+1)*(nm+1),0:kmo+kmi,0:kmo+kmi))
allocate(kp((nm+1)*(nm+1),0:kmo+kmi))
allocate(wz_I((nm+1)*(nm+1),0:kmo))
allocate(wr_I((nm+1)*(nm+1),kmi))
allocate(wz_DPSIDR((nm+1)*(nm+1),0:kmo))
allocate(wr_DPSIDR((nm+1)*(nm+1),kmi))
alu = 0.0D0
alu = 0.0D0
do k=0,kmo+kmi
alu(:,k,k) = 1.0D0 ! 内部領域は値そのまま.
enddo
! 球殻外側境界
do k=0,kmo
wz_I = 0.0D0
wz_I(:,k) = 1.0D0
wz_DPSIDR = wz_wt(wt_DRad_wt(wt_wz(wz_I)))
do n=1,(nm+1)*(nm+1)
nn=nm_l(n)
alu(n,0,k) = wz_DPSIDR(n,0) + (nn(1)+1) * wz_I(n,0)/z_RAD(0)
enddo
enddo
! 球--球殻境界
do k=0,kmo
wz_I = 0.0D0
wz_I(:,k) = 1.0D0
wz_DPSIDR = wz_wt(wt_DRad_wt(wt_wz(wz_I)))
alu(:,kmo,k) = wz_DPSIDR(:,kmo)
alu(:,kmo+kmi,k) = wz_I(:,kmo)
enddo
do k=1,kmi
wr_I = 0.0D0
wr_I(:,k) = 1.0D0
wr_DPSIDR = wr_wq(wq_RadDRad_wq(wq_wr(wr_I)))/wr_Rad
alu(:,kmo,kmo+k) = -wr_DPSIDR(:,kmi)
alu(:,kmo+kmi,kmo+k) = - wr_I(:,kmi)
enddo
call ludecomp(alu,kp)
deallocate(wz_I,wz_DPSIDR,wr_I,wr_DPSIDR)
call MessageNotify('M','wtq_PolmagBoundaryGrid', 'Matrix to apply b.c. newly produced.')
endif
wzr_Pol(:,0:kmo) = wz_Pol
wzr_Pol(:,kmo+1:kmo+kmi) = wr_Pol
wzr_Pol(:,0) = 0.0D0
wzr_Pol(:,kmo) = 0.0D0
wzr_Pol(:,kmo+kmi) = 0.0D0
wzr_Pol = lusolve(alu,kp,wzr_Pol)
wz_Pol = wzr_Pol(:,0:kmo)
wr_Pol = wzr_Pol(:,kmo+1:kmo+kmi)
end subroutine wtq_PolmagBoundariesGrid
Subroutine : |
|
wt_Pol : | real(8), dimension((nm+1)*(nm+1),0:lmo),intent(inout)
: | (inout) 境界条件を適用するデータ. 修正された値を返す.
|
|
wq_Pol : | real(8), dimension((nm+1)*(nm+1),0:lmi),intent(inout)
: | (inout) 境界条件を適用するデータ. 修正された値を返す.
|
|
new : | logical, intent(IN), optional
: | (in) true だと境界条件計算用行列を強制的に新たに作る.
default は false.
|
|
磁場ポロイダルポテンシャルに対して境界条件を適用する. Chebyshev
空間での境界条件適用
チェビシェフ空間において境界条件を満たすべく高次の係数を定める方法を
とっている(タウ法). 現在のところ外側境界物質が非電気伝導体の場合のみ
対応している. その場合, 磁場トロイダルポテンシャルの境界条件は
現在のところ外側境界物質が非電気伝導体の場合のみ対応している. その場合,
磁場トロイダルポテンシャルの境界条件は
外側
dPol_o/dr +(n+1)/r Pol_o= 0 at the outer boundary
球—球殻境界
Pol_o = Phi_i, DrDPol_o = DrDPol_i at the boundary
最初に呼ばれるときはオプショナル引数 new に関係なく行列が設定される.
[Source]
subroutine wtq_PolmagBoundariesTau(wt_Pol,wq_Pol,new)
!
! 磁場ポロイダルポテンシャルに対して境界条件を適用する.
! Chebyshev 空間での境界条件適用
!
! チェビシェフ空間において境界条件を満たすべく高次の係数を定める方法を
! とっている(タウ法). 現在のところ外側境界物質が非電気伝導体の場合のみ
! 対応している. その場合, 磁場トロイダルポテンシャルの境界条件は
!
! 現在のところ外側境界物質が非電気伝導体の場合のみ対応している.
! その場合, 磁場トロイダルポテンシャルの境界条件は
!
! 外側
! dPol_o/dr +(n+1)/r Pol_o= 0 at the outer boundary
! 球--球殻境界
! Pol_o = Phi_i, DrDPol_o = DrDPol_i at the boundary
!
! 最初に呼ばれるときはオプショナル引数 new に関係なく行列が設定される.
!
real(8), dimension((nm+1)*(nm+1),0:lmo),intent(inout) :: wt_Pol
!(inout) 境界条件を適用するデータ. 修正された値を返す.
real(8), dimension((nm+1)*(nm+1),0:lmi),intent(inout) :: wq_Pol
!(inout) 境界条件を適用するデータ. 修正された値を返す.
logical, intent(IN), optional :: new
!(in) true だと境界条件計算用行列を強制的に新たに作る.
! default は false.
real(8), dimension(:,:,:), allocatable :: alu
integer, dimension(:,:), allocatable :: kp
real(8), dimension(:,:), allocatable :: wt_I
real(8), dimension(:,:), allocatable :: wz_PSI
real(8), dimension(:,:), allocatable :: wz_DPSIDR
real(8), dimension(:,:), allocatable :: wq_I
real(8), dimension(:,:), allocatable :: wr_PSI
real(8), dimension(:,:), allocatable :: wr_DPSIDR
real(8), dimension((nm+1)*(nm+1),0:lmo+lmi+1) :: wtq_Pol
logical :: first = .true.
logical :: new_matrix = .false.
integer :: n,l,nn(2), lend
save :: alu, kp, first
if (.not. present(new)) then
new_matrix=.false.
else
new_matrix=new
endif
if ( first .OR. new_matrix ) then
first = .false.
if ( allocated(alu) ) deallocate(alu)
if ( allocated(kp) ) deallocate(kp)
if ( allocated(wt_I) ) deallocate(wt_I)
if ( allocated(wz_PSI) ) deallocate(wz_PSI)
if ( allocated(wq_I) ) deallocate(wq_I)
if ( allocated(wr_PSI) ) deallocate(wr_PSI)
allocate(alu((nm+1)*(nm+1),0:lmo+lmi+1,0:lmo+lmi+1))
allocate(kp((nm+1)*(nm+1),0:lmo+lmi+1))
allocate(wt_I((nm+1)*(nm+1),0:lmo),wz_PSI((nm+1)*(nm+1),0:kmo))
allocate(wq_I((nm+1)*(nm+1),0:lmi),wr_PSI((nm+1)*(nm+1),kmi))
allocate(wz_DPSIDR((nm+1)*(nm+1),0:kmo))
allocate(wr_DPSIDR((nm+1)*(nm+1),kmi))
alu = 0.0D0
do l=0,lmo+lmi+1
alu(:,l,l) = 1.0d0 ! 低波数はそのまま.
enddo
! 球殻外側境界
do l=0,lmo
wt_I = 0.0D0
wt_I(:,l) = 1.0D0
wz_PSI = wz_wt(wt_I)
wz_DPSIDR = wz_wt(wt_DRad_wt(wt_I))
do n=1,(nm+1)*(nm+1)
nn=nm_l(n)
alu(n,lmo-1,l) = wz_DPSIDR(n,0) + (nn(1)+1)*wz_PSI(n,0)/z_RAD(0)
enddo
enddo
! 球--球殻境界
do l=0,lmo
wt_I = 0.0D0
wt_I(:,l) = 1.0D0
wz_PSI = wz_wt(wt_I)
wz_DPSIDR = wz_wt(wt_DRad_wt(wt_I))
alu(:,lmo,l) = wz_DPSIDR(:,kmo) ! 球--球殻境界
do n=1,(nm+1)**2
if ( mod(nd(n),2) .eq. mod(lmi,2) ) then
lend = lmi
else
lend = lmi-1
endif
alu(n,lmo+lend+1,l) = wz_PSI(n,kmo) ! 球--球殻境界
enddo
enddo
do l=0,lmi
wq_I = 0.0D0
wq_I(:,l) = 1.0D0
wr_PSI = wr_wq(wq_I)
wr_DPSIDR = wr_wq(wq_RadDRad_wq(wq_I))/wr_Rad
do n=1,(nm+1)**2
if ( mod(nd(n),2) .eq. mod(lmi,2) ) then
lend = lmi
else
lend = lmi-1
endif
alu(n,lmo,lmo+1+l) = - wr_DPSIDR(n,kmi) ! 球--球殻境界
alu(n,lmo+lend+1,lmo+1+l) = - wr_PSI(n,kmi) ! 球--球殻境界
enddo
enddo
call ludecomp(alu,kp)
deallocate(wt_I,wz_PSI,wz_DPSIDR,wq_I,wr_PSI,wr_DPSIDR)
call MessageNotify('M','PolmagBoundaryTau', 'Matrix to apply b.c. newly produced.')
endif
wtq_Pol(:,0:lmo) = wt_Pol
wtq_Pol(:,lmo+1:lmo+lmi+1) = wq_Pol
wtq_Pol(:,lmo-1) = 0.0D0
wtq_Pol(:,lmo) = 0.0D0
do n=1,(nm+1)**2
if ( mod(nd(n),2) .eq. mod(lmi,2) ) then
wtq_Pol(n,lmo+lmi+1) = 0.0D0 ! 境界条件に対応する行を 0 にする
else
wtq_Pol(n,lmo+lmi) = 0.0D0 ! 境界条件に対応する行を 0 にする
endif
enddo
wtq_Pol = lusolve(alu,kp,wtq_Pol)
wt_Pol = wtq_Pol(:,0:lmo)
wq_Pol = wtq_Pol(:,lmo+1:lmo+lmi+1)
end subroutine wtq_PolmagBoundariesTau
wtq_TorMagBoundaries( wt_TOR, wq_TOR, Pmo, Pmi, [new] )
Subroutine : |
|
wt_TOR : | real(8), dimension((nm+1)*(nm+1),0:lmo),intent(inout)
: | (inout) 境界条件を適用するデータ. 修正された値を返す.
|
|
wq_TOR : | real(8), dimension((nm+1)*(nm+1),0:lmi),intent(inout)
: | (inout) 境界条件を適用するデータ. 修正された値を返す.
|
|
Pmo : | real(8),intent(in)
|
Pmi : | real(8),intent(in)
|
new : | logical, intent(IN), optional
: | (in) true だと境界条件計算用行列を強制的に新たに作る.
default は false.
|
|
磁場トロイダルポテンシャルに対して境界条件を適用する. Chebyshev
空間での境界条件適用
チェビシェフ空間において境界条件を満たすべく高次の係数を定める方法を
とっている(タウ法). 現在のところ外側境界物質が非電気伝導体の場合のみ
対応している. その場合, 磁場トロイダルポテンシャルの境界条件は
外側
Psi_o = 0 at the outer boundary
球—球殻境界
Psi_o = Psi_i, Pm_o DrDPsi_o = Pm_i DrDPsi_i at the boundary
最初に呼ばれるときはオプショナル引数 new に関係なく行列が設定される.
Alias for wtq_TorMagBoundariesTau
Subroutine : |
|
wz_TOR : | real(8), dimension((nm+1)*(nm+1),0:kmo),intent(inout)
: | (inout) 境界条件を適用するデータ. 修正された値を返す.
|
|
wr_TOR : | real(8), dimension((nm+1)*(nm+1),kmi),intent(inout)
: | (inout) 境界条件を適用するデータ. 修正された値を返す.
|
|
Pmo : | real(8),intent(in)
|
Pmi : | real(8),intent(in)
|
new : | logical, intent(IN), optional
: | (in) true だと境界条件計算用行列を強制的に新たに作る.
default は false.
|
|
磁場トロイダルポテンシャルに対して境界条件を適用する.
鉛直実空間での境界条件適用.
鉛直実格子点空間において内部領域の値と境界条件を満たすように
条件を課している(選点法).
現在のところ境界物質が非電気伝導体の場合のみ対応している. その場合,
磁場トロイダルポテンシャルの境界条件は
外側
Psi_o = 0 at the outer boundary
球—球殻境界
Psi_o = Psi_i, Pm_o DrDPsi_o = Pm_i DrDPsi_i at the boundary
最初に呼ばれるときはオプショナル引数 new に関係なく行列が設定される.
[Source]
subroutine wtq_TormagBoundariesGrid(wz_TOR,wr_TOR,Pmo,Pmi,new)
!
! 磁場トロイダルポテンシャルに対して境界条件を適用する.
! 鉛直実空間での境界条件適用.
!
! 鉛直実格子点空間において内部領域の値と境界条件を満たすように
! 条件を課している(選点法).
!
! 現在のところ境界物質が非電気伝導体の場合のみ対応している.
! その場合, 磁場トロイダルポテンシャルの境界条件は
!
! 外側
! Psi_o = 0 at the outer boundary
! 球--球殻境界
! Psi_o = Psi_i, Pm_o DrDPsi_o = Pm_i DrDPsi_i at the boundary
!
! 最初に呼ばれるときはオプショナル引数 new に関係なく行列が設定される.
!
real(8), dimension((nm+1)*(nm+1),0:kmo),intent(inout) :: wz_TOR
!(inout) 境界条件を適用するデータ. 修正された値を返す.
real(8), dimension((nm+1)*(nm+1),kmi),intent(inout) :: wr_TOR
!(inout) 境界条件を適用するデータ. 修正された値を返す.
real(8),intent(in) :: Pmo
!(in) 球殻の磁気プランドル数
real(8),intent(in) :: Pmi
!(in) 内球の磁気プランドル数
logical, intent(IN), optional :: new
!(in) true だと境界条件計算用行列を強制的に新たに作る.
! default は false.
real(8), dimension(:,:,:), allocatable :: alu
integer, dimension(:,:), allocatable :: kp
real(8), dimension(:,:), allocatable :: wz_I
real(8), dimension(:,:), allocatable :: wz_PSI
real(8), dimension(:,:), allocatable :: wz_DPSIDR
real(8), dimension(:,:), allocatable :: wr_I
real(8), dimension(:,:), allocatable :: wr_PSI
real(8), dimension(:,:), allocatable :: wr_DPSIDR
real(8), dimension((nm+1)*(nm+1),0:kmo+kmi) :: wzr_PSI
logical :: first = .true.
logical :: new_matrix = .false.
integer :: k
save :: alu, kp, first
if (.not. present(new)) then
new_matrix=.false.
else
new_matrix=new
endif
if ( first .OR. new_matrix ) then
first = .false.
if ( allocated(alu) ) deallocate(alu)
if ( allocated(kp) ) deallocate(kp)
if ( allocated(wz_I) ) deallocate(wz_I)
if ( allocated(wz_PSI) ) deallocate(wz_PSI)
if ( allocated(wr_I) ) deallocate(wr_I)
if ( allocated(wr_PSI) ) deallocate(wr_PSI)
allocate(alu((nm+1)*(nm+1),0:kmo+kmi,0:kmo+kmi))
allocate(kp((nm+1)*(nm+1),0:kmo+kmi))
allocate(wz_I((nm+1)*(nm+1),0:kmo),wz_PSI((nm+1)*(nm+1),0:kmo))
allocate(wr_I((nm+1)*(nm+1),kmi),wr_PSI((nm+1)*(nm+1),kmi))
allocate(wz_DPSIDR((nm+1)*(nm+1),0:kmo))
allocate(wr_DPSIDR((nm+1)*(nm+1),kmi))
alu = 0.0D0
do k=0,kmo+kmi
alu(:,k,k) = 1.0D0 ! 内部領域は値そのまま.
enddo
! 境界条件
do k=0,kmo
wz_I = 0.0D0
wz_I(:,k) = 1.0D0
wz_DPSIDR = wz_wt(wt_DRad_wt(wt_wz(wz_I)))
alu(:,0,k) = wz_I(:,0) ! 外側境界
alu(:,kmo,k) = Pmo * wz_DPSIDR(:,kmo) ! 球--球殻境界
alu(:,kmo+kmi,k) = wz_I(:,kmo) ! 球--球殻境界
enddo
do k=1,kmi
wr_I = 0.0D0
wr_I(:,k) = 1.0D0
wr_DPSIDR = wr_wq(wq_RadDRad_wq(wq_wr(wr_I)))/wr_Rad
alu(:,kmo,kmo+k) = -Pmi * wr_DPSIDR(:,kmi)
alu(:,kmo+kmi,kmo+k) = - wr_I(:,kmi)
enddo
call ludecomp(alu,kp)
deallocate(wz_I,wz_PSI,wz_DPSIDR,wr_I,wr_PSI,wr_DPSIDR)
call MessageNotify('M','wtq_TormagBoundaryGrid', 'Matrix to apply b.c. newly produced.')
endif
wzr_PSI(:,0:kmo) = wz_TOR
wzr_PSI(:,kmo+1:kmo+kmi) = wr_TOR
wzr_PSI(:,0) = 0.0D0
wzr_PSI(:,kmo) = 0.0D0
wzr_PSI(:,kmo+kmi) = 0.0D0
wzr_PSI = lusolve(alu,kp,wzr_PSI)
wz_TOR = wzr_PSI(:,0:kmo)
wr_TOR = wzr_PSI(:,kmo+1:kmo+kmi)
end subroutine wtq_TormagBoundariesGrid
Subroutine : |
|
wt_TOR : | real(8), dimension((nm+1)*(nm+1),0:lmo),intent(inout)
: | (inout) 境界条件を適用するデータ. 修正された値を返す.
|
|
wq_TOR : | real(8), dimension((nm+1)*(nm+1),0:lmi),intent(inout)
: | (inout) 境界条件を適用するデータ. 修正された値を返す.
|
|
Pmo : | real(8),intent(in)
|
Pmi : | real(8),intent(in)
|
new : | logical, intent(IN), optional
: | (in) true だと境界条件計算用行列を強制的に新たに作る.
default は false.
|
|
磁場トロイダルポテンシャルに対して境界条件を適用する. Chebyshev
空間での境界条件適用
チェビシェフ空間において境界条件を満たすべく高次の係数を定める方法を
とっている(タウ法). 現在のところ外側境界物質が非電気伝導体の場合のみ
対応している. その場合, 磁場トロイダルポテンシャルの境界条件は
外側
Psi_o = 0 at the outer boundary
球—球殻境界
Psi_o = Psi_i, Pm_o DrDPsi_o = Pm_i DrDPsi_i at the boundary
最初に呼ばれるときはオプショナル引数 new に関係なく行列が設定される.
[Source]
subroutine wtq_TormagBoundariesTau(wt_TOR,wq_TOR,Pmo,Pmi,new)
!
! 磁場トロイダルポテンシャルに対して境界条件を適用する.
! Chebyshev 空間での境界条件適用
!
! チェビシェフ空間において境界条件を満たすべく高次の係数を定める方法を
! とっている(タウ法). 現在のところ外側境界物質が非電気伝導体の場合のみ
! 対応している. その場合, 磁場トロイダルポテンシャルの境界条件は
!
! 外側
! Psi_o = 0 at the outer boundary
! 球--球殻境界
! Psi_o = Psi_i, Pm_o DrDPsi_o = Pm_i DrDPsi_i at the boundary
!
! 最初に呼ばれるときはオプショナル引数 new に関係なく行列が設定される.
!
real(8), dimension((nm+1)*(nm+1),0:lmo),intent(inout) :: wt_TOR
!(inout) 境界条件を適用するデータ. 修正された値を返す.
real(8), dimension((nm+1)*(nm+1),0:lmi),intent(inout) :: wq_TOR
!(inout) 境界条件を適用するデータ. 修正された値を返す.
real(8),intent(in) :: Pmo
!(in) 球殻の磁気プランドル数
real(8),intent(in) :: Pmi
!(in) 内球の磁気プランドル数
logical, intent(IN), optional :: new
!(in) true だと境界条件計算用行列を強制的に新たに作る.
! default は false.
real(8), dimension(:,:,:), allocatable :: alu
integer, dimension(:,:), allocatable :: kp
real(8), dimension(:,:), allocatable :: wt_I
real(8), dimension(:,:), allocatable :: wz_PSI
real(8), dimension(:,:), allocatable :: wz_DPSIDR
real(8), dimension(:,:), allocatable :: wq_I
real(8), dimension(:,:), allocatable :: wr_PSI
real(8), dimension(:,:), allocatable :: wr_DPSIDR
real(8), dimension((nm+1)*(nm+1),0:lmo+lmi+1) :: wtq_PSI
logical :: first = .true.
logical :: new_matrix = .false.
integer :: n, l, lend
save :: alu, kp, first
if (.not. present(new)) then
new_matrix=.false.
else
new_matrix=new
endif
if ( first .OR. new_matrix ) then
first = .false.
if ( allocated(alu) ) deallocate(alu)
if ( allocated(kp) ) deallocate(kp)
if ( allocated(wt_I) ) deallocate(wt_I)
if ( allocated(wz_PSI) ) deallocate(wz_PSI)
if ( allocated(wq_I) ) deallocate(wq_I)
if ( allocated(wr_PSI) ) deallocate(wr_PSI)
allocate(alu((nm+1)*(nm+1),0:lmo+lmi+1,0:lmo+lmi+1))
allocate(kp((nm+1)*(nm+1),0:lmo+lmi+1))
allocate(wt_I((nm+1)*(nm+1),0:lmo),wz_PSI((nm+1)*(nm+1),0:kmo))
allocate(wq_I((nm+1)*(nm+1),0:lmi),wr_PSI((nm+1)*(nm+1),kmi))
allocate(wz_DPSIDR((nm+1)*(nm+1),0:kmo))
allocate(wr_DPSIDR((nm+1)*(nm+1),kmi))
alu = 0.0D0
do l=0,lmo+lmi+1
wt_I = 0.0D0
alu(:,l,l) = 1.0D0 ! 低波数はそのまま
enddo
do l=0,lmo
wt_I = 0.0D0
wt_I(:,l) = 1.0D0
wz_PSI = wz_wt(wt_I)
wz_DPSIDR = wz_wt(wt_DRad_wt(wt_I))
alu(:,lmo-1,l) = wz_PSI(:,0) ! 外側境界
alu(:,lmo,l) = Pmo * wz_DPSIDR(:,kmo) ! 球--球殻境界
do n=1,(nm+1)**2
if ( mod(nd(n),2) .eq. mod(lmi,2) ) then
lend = lmi
else
lend = lmi-1
endif
alu(n,lmo+lend+1,l) = wz_PSI(n,kmo) ! 球--球殻境界
enddo
enddo
do l=0,lmi
wq_I = 0.0D0
wq_I(:,l) = 1.0D0
wr_PSI = wr_wq(wq_I)
wr_DPSIDR = wr_wq(wq_RadDRad_wq(wq_I))/wr_Rad
do n=1,(nm+1)**2
if ( mod(nd(n),2) .eq. mod(lmi,2) ) then
lend = lmi
else
lend = lmi-1
endif
alu(n,lmo,lmo+1+l) = -Pmi * wr_DPSIDR(n,kmi) ! 球--球殻境界
alu(n,lmo+lend+1,lmo+1+l) = - wr_PSI(n,kmi) ! 球--球殻境界
enddo
enddo
! 関係ないところを 0 で埋める.
do n=1,(nm+1)**2
if ( mod(nd(n),2) .eq. mod(lmi,2) ) then
lend = lmi
else
lend = lmi-1
endif
do l=0,nd(n)-1
alu(n,lmo+lend,l) = 0.0D0
enddo
do l=nd(n)+1,lmi,2
alu(n,lmo+lend,l) = 0.0D0
enddo
enddo
call ludecomp(alu,kp)
deallocate(wt_I,wz_PSI,wz_DPSIDR,wq_I,wr_PSI,wr_DPSIDR)
call MessageNotify('M','wtq_TormagBoundaryTau', 'Matrix to apply b.c. newly produced.')
endif
wtq_PSI(:,0:lmo) = wt_TOR
wtq_PSI(:,lmo+1:lmo+lmi+1) = wq_TOR
wtq_PSI(:,lmo-1) = 0.0D0 ! 境界条件に対応する行を 0 にする
wtq_PSI(:,lmo) = 0.0D0 ! 境界条件に対応する行を 0 にする
do n=1,(nm+1)**2
if ( mod(nd(n),2) .eq. mod(lmi,2) ) then
wtq_PSI(n,lmo+lmi+1) = 0.0D0 ! 境界条件に対応する行を 0 にする
else
wtq_PSI(n,lmo+lmi) = 0.0D0 ! 境界条件に対応する行を 0 にする
endif
enddo
wtq_PSI = lusolve(alu,kp,wtq_PSI)
wt_TOR = wtq_PSI(:,0:lmo)
wq_TOR = wtq_PSI(:,lmo+1:lmo+lmi+1)
end subroutine wtq_TormagBoundariesTau
Subroutine : |
|
i : | integer,intent(in)
|
j : | integer,intent(in)
|
ki : | integer,intent(in)
|
ko : | integer,intent(in)
|
n : | integer,intent(in)
|
li : | integer,intent(in)
|
lo : | integer,intent(in)
|
r_in : | real(8),intent(in)
|
r_out : | real(8),intent(in)
|
np : | integer,intent(in), optional
|
スペクトル変換の格子点数, 波数, 球および球殻動径座標の範囲を設定する.
他の関数を呼ぶ前に, 最初にこのサブルーチンを呼んで初期設定を
しなければならない.
np に 1 より大きな値を指定すれば ISPACK の球面調和函数変換 OPENMP
並列計算ルーチンが用いられる. 並列計算を実行するには, 実行時に環境変数
OMP_NUM_THREADS を np 以下の数字に設定する等の
システムに応じた準備が必要となる.
np に 1 より大きな値を指定しなければ並列計算ルーチンは呼ばれない.
[Source]
subroutine wtq_mpi_Initial(i,j,ki,ko,n,li,lo,r_in,r_out,np)
!
! スペクトル変換の格子点数, 波数, 球および球殻動径座標の範囲を設定する.
!
! 他の関数を呼ぶ前に, 最初にこのサブルーチンを呼んで初期設定を
! しなければならない.
!
! np に 1 より大きな値を指定すれば ISPACK の球面調和函数変換
! OPENMP 並列計算ルーチンが用いられる. 並列計算を実行するには,
! 実行時に環境変数 OMP_NUM_THREADS を np 以下の数字に設定する等の
! システムに応じた準備が必要となる.
!
! np に 1 より大きな値を指定しなければ並列計算ルーチンは呼ばれない.
!
!
integer,intent(in) :: i ! 格子点数(経度λ)
integer,intent(in) :: j ! 格子点数(緯度φ)
integer,intent(in) :: ki ! 格子点数(動径 r)
integer,intent(in) :: ko ! 格子点数(動径 z)
integer,intent(in) :: n ! 切断波数(水平全波数)
integer,intent(in) :: li ! 切断波数(球動径波数)
integer,intent(in) :: lo ! 切断波数(球殻動径波数)
real(8),intent(in) :: r_in, r_out ! 球半径
integer,intent(in), optional :: np ! OPENMP での最大スレッド数
integer :: nn, mm
im = i
jm = j
kmo = ko
kmi = ki
nm = n
lmo = lo
lmi=li
ri = r_in
ro = r_out
if ( present(np) ) then
if ( kmo+1 > kmi ) then
call wt_mpi_Initial(im,jm,kmo,nm,lmo,ri,ro,np)
call wq_mpi_Initial(im,jm,kmi,nm,lmi,ri,np,wa_init=.false.)
else
call wq_mpi_Initial(im,jm,kmi,nm,lmi,ri,np)
call wt_mpi_Initial(im,jm,kmo,nm,lmo,ri,ro,np,wa_init=.false.)
endif
else
if ( kmo+1 > kmi ) then
call wt_mpi_Initial(im,jm,kmo,nm,lmo,ri,ro)
call wq_mpi_Initial(im,jm,kmi,nm,lmi,ri,wa_init=.false.)
else
call wq_mpi_Initial(im,jm,kmi,nm,lmi,ri)
call wt_mpi_Initial(im,jm,kmo,nm,lmo,ri,ro,wa_init=.false.)
endif
endif
allocate(nd((nm+1)*(nm+1)))
do nn=0,nm
do mm=-nn,nn
nd(l_nm(nn,mm)) = nn ! 水平 n 次は r^n から
enddo
enddo
call MessageNotify('M','wtq_mpi_initial', 'wtq_mpi_module (2012/08/24) is initialized')
end subroutine wtq_mpi_Initial
wz_LaplaPol2Pol_wz( wz, [cond], [new] ) result(wz_LaplaPol2Pol_wz)
Function : |
|
wz_LaplaPol2Pol_wz : | real(8), dimension((nm+1)*(nm+1),0:km)
|
wz : | real(8), dimension((nm+1)*(nm+1),0:km),intent(in)
|
cond : | character(len=2), intent(in), optional
: | (in) 境界条件スイッチ. 省略時は ‘RR‘
RR : 両端粘着条件
RF : 上端粘着, 下端応力なし条件
FR : 上端応力なし, 下端粘着条件
FF : 両端応力なし条件
|
|
new : | logical, intent(IN), optional
: | (in) true だと境界条件計算用行列を強制的に新たに作る.
default は false.
|
|
速度ポロイダルポテンシャルΦを▽^2Φから計算する.
チェビシェフ格子点空間で境界条件を適用している. この関数を用いるためには
wt_Initial にて設定する チェビシェフ切断波数(lm)と鉛直格子点数(km)を等しく
しておく必要がある.
速度ポロイダルポテンシャルΦを f = ▽^2Φから定める式は
▽^2Φ = f
Φ = const. at boundaries.
∂Φ/∂r = 0 at boundaries (粘着条件)
or ∂^2Φ/∂r^2 = 0 at boundaries (応力なし条件)
最初に呼ばれるときはオプショナル引数 new に関係なく行列が設定される.
Original external subprogram is wt_mpi_module#wz_LaplaPol2Pol_wz
wz_wt( wt ) result(wz_wt)
Function : |
|
wz_wt : | real(8), dimension((nm+1)*(nm+1),0:km)
: | (out) 2 次元球面調和函数スペクトル・動径格子点データ
|
|
wt : | real(8), dimension((nm+1)*(nm+1),0:lm), intent(in)
: | (in) 2 次元球面調和函数チェビシェフスペクトルデータ
|
|
スペクトルデータから水平スペクトル・動径格子点データへ(正)変換する.
Original external subprogram is wt_mpi_module#wz_wt
wz_xvz( xvz ) result(wz_xvz)
Function : |
|
wz_xvz : | real(8), dimension((nm+1)*(nm+1),0:km)
: | (out) 2 次元球面調和函数スペクトル・動径格子点データ
|
|
xvz : | real(8), dimension(0:im-1,jc,0:km), intent(in)
|
3 次元格子データから水平スペクトル・動径格子点データへ(正)変換する.
Original external subprogram is wt_mpi_module#wz_xvz
wz_xyz( xyz ) result(wz_xyz)
Function : |
|
wz_xyz : | real(8), dimension((nm+1)*(nm+1),0:km)
: | (out) 2 次元球面調和函数スペクトル・動径格子点データ
|
|
xyz : | real(8), dimension(0:im-1,1:jm,0:km), intent(in)
|
3 次元格子データから水平スペクトル・動径格子点データへ(正)変換する.
Original external subprogram is wt_mpi_module#wz_xyz
x_AvrLatRad_xvr( xvr ) result(x_AvrLatRad_xvr)
Function : |
|
x_AvrLatRad_xvr : | real(8), dimension(0:im-1)
: | (out) 緯度動径(子午面)平均された 1 次元経度格子点データ
|
|
xvr : | real(8), dimension(0:im-1,1:jc,km), intent(in)
|
緯度動径(子午面)積分
3 次元格子点データの緯度動径(子午面)平均
3 次元データ f(λ,φ,r) に対して
∫f(λ,,r) r^2cosφ dφdr /(2(r[o]^3-r[i]^3)/3)
を計算する.
Original external subprogram is wq_mpi_module#x_AvrLatRad_xvr
x_AvrLatRad_xvz( xvz ) result(x_AvrLatRad_xvz)
Function : |
|
x_AvrLatRad_xvz : | real(8), dimension(0:im-1)
: | (out) 緯度動径(子午面)平均された 1 次元経度格子点データ
|
|
xvz : | real(8), dimension(0:im-1,jc,0:km), intent(in)
|
緯度動径(子午面)積分
3 次元格子点データの緯度動径(子午面)平均
3 次元データ f(λ,φ,r) に対して
∫f(λ,,r) r^2cosφ dφdr /(2(r[o]^3-r[i]^3)/3)
を計算する.
Original external subprogram is wt_mpi_module#x_AvrLatRad_xvz
x_AvrLatRad_xyr( xyr ) result(x_AvrLatRad_xyr)
Function : |
|
x_AvrLatRad_xyr : | real(8), dimension(0:im-1)
: | (out) 緯度動径(子午面)平均された 1 次元経度格子点データ
|
|
xyr : | real(8), dimension(0:im-1,1:jm,km), intent(in)
|
緯度動径(子午面)積分
3 次元格子点データの緯度動径(子午面)平均
3 次元データ f(λ,φ,r) に対して
∫f(λ,,r) r^2cosφ dφdr /(2(r[o]^3-r[i]^3)/3)
を計算する.
Original external subprogram is wq_mpi_module#x_AvrLatRad_xyr
x_AvrLatRad_xyz( xyz ) result(x_AvrLatRad_xyz)
Function : |
|
x_AvrLatRad_xyz : | real(8), dimension(0:im-1)
: | (out) 緯度動径(子午面)平均された 1 次元経度格子点データ
|
|
xyz : | real(8), dimension(0:im-1,1:jm,0:km), intent(in)
|
緯度動径(子午面)積分
3 次元格子点データの緯度動径(子午面)平均
3 次元データ f(λ,φ,r) に対して
∫f(λ,,r) r^2cosφ dφdr /(2(r[o]^3-r[i]^3)/3)
を計算する.
Original external subprogram is wt_mpi_module#x_AvrLatRad_xyz
x_AvrLat_xv( xv_data ) result(x_AvrLat_xv)
x_AvrLat_xv( xv_data ) result(x_AvrLat_xv)
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 wq_mpi_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 wt_mpi_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 wq_mpi_module#x_AvrLat_xy
x_AvrRad_xr( xr ) result(x_AvrRad_xr)
Function : |
|
x_AvrRad_xr : | real(8), dimension(0:im-1)
: | (out) 動径平均された 1 次元経度格子点データ
|
|
xr : | real(8), dimension(0:im-1,km), intent(in)
|
動径積分
2 次元(XR)格子点データの動径方向域平均.
2 次元データ f(λ,r) に対して
∫f(λ,r) r^2dr /((r[o]^3-r[i]^3)/3)
を計算する.
Original external subprogram is wq_mpi_module#x_AvrRad_xr
x_AvrRad_xz( xz ) result(x_AvrRad_xz)
Function : |
|
x_AvrRad_xz : | real(8), dimension(0:im-1)
: | (out) 動径平均された 1 次元経度格子点データ
|
|
xz : | real(8), dimension(0:im-1,0:km), intent(in)
|
動径積分
2 次元(XZ)格子点データの動径方向域平均.
2 次元データ f(λ,r) に対して
∫f(λ,r) r^2dr /((r[o]^3-r[i]^3)/3)
を計算する.
Original external subprogram is wt_mpi_module#x_AvrRad_xz
x_IntLatRad_xvr( xvr ) result(x_IntLatRad_xvr)
Function : |
|
x_IntLatRad_xvr : | real(8), dimension(0:im-1)
: | (out) 緯度動径(子午面)積分された 1 次元経度格子点データ
|
|
xvr : | real(8), dimension(0:im-1,1:jc,km), intent(in)
|
3 次元格子点データの緯度動径(子午面)積分
3 次元データ f(λ,φ,r) に対して
∫f(λ,φ,r) r^2cosφ dφdr
を計算する.
Original external subprogram is wq_mpi_module#x_IntLatRad_xvr
x_IntLatRad_xvz( xvz ) result(x_IntLatRad_xvz)
Function : |
|
x_IntLatRad_xvz : | real(8), dimension(0:im-1)
: | (out) 緯度動径(子午面)積分された 1 次元経度格子点データ
|
|
xvz : | real(8), dimension(0:im-1,jc,0:km), intent(in)
|
3 次元格子点データの緯度動径(子午面)積分
3 次元データ f(λ,φ,r) に対して
∫f(λ,φ,r) r^2cosφ dφdr
を計算する.
Original external subprogram is wt_mpi_module#x_IntLatRad_xvz
x_IntLatRad_xyr( xyr ) result(x_IntLatRad_xyr)
Function : |
|
x_IntLatRad_xyr : | real(8), dimension(0:im-1)
: | (out) 緯度動径(子午面)積分された 1 次元経度格子点データ
|
|
xyr : | real(8), dimension(0:im-1,1:jm,km), intent(in)
|
3 次元格子点データの緯度動径(子午面)積分
3 次元データ f(λ,φ,r) に対して
∫f(λ,φ,r) r^2cosφ dφdr
を計算する.
Original external subprogram is wq_mpi_module#x_IntLatRad_xyr
x_IntLatRad_xyz( xyz ) result(x_IntLatRad_xyz)
Function : |
|
x_IntLatRad_xyz : | real(8), dimension(0:im-1)
: | (out) 緯度動径(子午面)積分された 1 次元経度格子点データ
|
|
xyz : | real(8), dimension(0:im-1,1:jm,0:km), intent(in)
|
3 次元格子点データの緯度動径(子午面)積分
3 次元データ f(λ,φ,r) に対して
∫f(λ,φ,r) r^2cosφ dφdr
を計算する.
Original external subprogram is wt_mpi_module#x_IntLatRad_xyz
x_IntLat_xv( xv_data ) result(x_IntLat_xv)
Function : |
|
x_IntLat_xv(0:im-1) : | real(8)
: | (out) 積分された 1 次元経度(X)格子点データ
|
|
xv_data(0:im-1,jc) : | real(8), intent(in)
: | (in) 2 次元経度緯度格子点データ(0:im-1,jc)
|
|
2 次元緯度経度格子点データの緯度(Y)方向積分(1 層用).
実際には格子点データ各点毎に v_Y_Weight をかけた総和を計算している.
Original external subprogram is wq_mpi_module#x_IntLat_xv
x_IntLat_xv( xv_data ) result(x_IntLat_xv)
Function : |
|
x_IntLat_xv(0:im-1) : | real(8)
: | (out) 積分された 1 次元経度(X)格子点データ
|
|
xv_data(0:im-1,jc) : | real(8), intent(in)
: | (in) 2 次元経度緯度格子点データ(0:im-1,jc)
|
|
2 次元緯度経度格子点データの緯度(Y)方向積分(1 層用).
実際には格子点データ各点毎に v_Y_Weight をかけた総和を計算している.
Original external subprogram is wt_mpi_module#x_IntLat_xv
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 wq_mpi_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 wt_mpi_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 wq_mpi_module#x_IntLat_xy
x_IntRad_xr( xr ) result(x_IntRad_xr)
Function : |
|
x_IntRad_xr : | real(8), dimension(0:im-1)
: | (out) 動径積分された 1 次元経度格子点データ
|
|
xr : | real(8), dimension(0:im-1,km), intent(in)
|
2 次元(XR)格子点データの動径方向域積分.
2 次元データ f(λ,r) に対して ∫f(λ,r) r^2dr を計算する.
Original external subprogram is wq_mpi_module#x_IntRad_xr
x_IntRad_xz( xz ) result(x_IntRad_xz)
Function : |
|
x_IntRad_xz : | real(8), dimension(0:im-1)
: | (out) 動径積分された 1 次元経度格子点データ
|
|
xz : | real(8), dimension(0:im-1,0:km), intent(in)
|
2 次元(XZ)格子点データの動径方向域積分.
2 次元データ f(λ,r) に対して ∫f(λ,r) r^2dr を計算する.
Original external subprogram is wt_mpi_module#x_IntRad_xz
xr_AvrLat_xvr( xvr ) result(xr_AvrLat_xvr)
Function : |
|
xr_AvrLat_xvr : | real(8), dimension(0:im-1,km)
: | (out) 緯度平均された 2 次元緯度動径格子点データ
|
|
xvr : | real(8), dimension(0:im-1,1:jc,km), intent(in)
|
緯度積分
3 次元格子点データの緯度方向域平均.
3 次元データ f(λ,φ,r) に対して ∫f(λ,φ,r)cosφ dφ/2 を計算する.
Original external subprogram is wq_mpi_module#xr_AvrLat_xvr
xr_AvrLat_xyr( xyr ) result(xr_AvrLat_xyr)
Function : |
|
xr_AvrLat_xyr : | real(8), dimension(0:im-1,km)
: | (out) 緯度平均された 2 次元緯度動径格子点データ
|
|
xyr : | real(8), dimension(0:im-1,1:jm,km), intent(in)
|
緯度積分
3 次元格子点データの緯度方向域平均.
3 次元データ f(λ,φ,r) に対して ∫f(λ,φ,r)cosφ dφ/2 を計算する.
Original external subprogram is wq_mpi_module#xr_AvrLat_xyr
xr_IntLat_xvr( xvr ) result(xr_IntLat_xvr)
Function : |
|
xr_IntLat_xvr : | real(8), dimension(0:im-1,km)
: | (out) 緯度積分された 2 次元緯度動径格子点データ 緯度円格子点データ
|
|
xvr : | real(8), dimension(0:im-1,1:jc,km), intent(in)
|
3 次元格子点データの緯度方向域積分.
3 次元データ f(λ,φ,r) に対して∫f(λ,φ,r) cosφ dφ を計算する.
Original external subprogram is wq_mpi_module#xr_IntLat_xvr
xr_IntLat_xyr( xyr ) result(xr_IntLat_xyr)
Function : |
|
xr_IntLat_xyr : | real(8), dimension(0:im-1,km)
: | (out) 緯度積分された 2 次元緯度動径格子点データ 緯度円格子点データ
|
|
xyr : | real(8), dimension(0:im-1,1:jm,km), intent(in)
|
3 次元格子点データの緯度方向域積分.
3 次元データ f(λ,φ,r) に対して∫f(λ,φ,r) cosφ dφ を計算する.
Original external subprogram is wq_mpi_module#xr_IntLat_xyr
xv_AvrRad_xvr( xvr ) result(xv_AvrRad_xvr)
Function : |
|
xv_AvrRad_xvr : | real(8), dimension(0:im-1,1:jc)
: | (out) 動径平均された 2 次元経度緯度(水平, 球面)格子点データ
水平格子点データ
|
|
xvr : | real(8), dimension(0:im-1,1:jc,km), intent(in)
|
3 次元格子点データの動径方向域平均.
3 次元データ f(λ,φ,r) に対して
∫f(λ,φ,r) r^2dr/((r[o]^3-r[i]^3)/3)
を計算する.
Original external subprogram is wq_mpi_module#xv_AvrRad_xvr
xv_AvrRad_xvz( xvz ) result(xv_AvrRad_xvz)
Function : |
|
xv_AvrRad_xvz : | real(8), dimension(0:im-1,jc)
: | 水平格子点データ (out) 動径平均された 2 次元経度緯度(水平,
球面)格子点データ
|
|
xvz : | real(8), dimension(0:im-1,jc,0:km), intent(in)
|
3 次元格子点データの動径方向域平均.
3 次元データ f(λ,φ,r) に対して
∫f(λ,φ,r) r^2dr/((r[o]^3-r[i]^3)/3)
を計算する.
Original external subprogram is wt_mpi_module#xv_AvrRad_xvz
xv_IntRad_xvr( xvr ) result(xv_IntRad_xvr)
Function : |
|
xv_IntRad_xvr : | real(8), dimension(0:im-1,1:jc)
: | (out) 動径積分された 2 次元経度緯度(水平, 球面)格子点データ
|
|
xvr : | real(8), dimension(0:im-1,1:jc,km), intent(in)
|
動径積分
3 次元格子点データの動径方向域積分.
3 次元データ f(λ,φ,r) に対して∫f(λ,φ,r) r^2dr を計算する.
Original external subprogram is wq_mpi_module#xv_IntRad_xvr
xv_IntRad_xvz( xvz ) result(xv_IntRad_xvz)
Function : |
|
xv_IntRad_xvz : | real(8), dimension(0:im-1,jc)
: | (out) 動径積分された 2 次元経度緯度(水平, 球面)格子点データ
|
|
xvz : | real(8), dimension(0:im-1,jc,0:km), intent(in)
|
動径積分
3 次元格子点データの動径方向域積分.
3 次元データ f(λ,φ,r) に対して∫f(λ,φ,r) r^2dr を計算する.
Original external subprogram is wt_mpi_module#xv_IntRad_xvz
xv_w( w_data, [ipow], [iflag] ) result(xv_w)
Function : |
|
xv_w(0:im-1,jc) : | real(8)
|
w_data((nm+1)*(nm+1)) : | real(8), intent(in)
|
ipow : | integer, intent(in), optional
: | (in) 作用させる 1/cosφ の次数. 省略時は 0.
|
|
iflag : | integer, intent(in), optional
: | (in) 変換の種類
0 : 通常の正変換
1 : 経度微分を作用させた正変換
-1 : 緯度微分を作用させた正変換
2 : sinφを作用させた正変換
省略時は 0.
|
|
スペクトルデータから分散格子データへ変換する(1 層用).
Original external subprogram is wq_mpi_module#xv_w
xv_w( w_data, [ipow], [iflag] ) result(xv_w)
Function : |
|
xv_w(0:im-1,jc) : | real(8)
|
w_data((nm+1)*(nm+1)) : | real(8), intent(in)
|
ipow : | integer, intent(in), optional
: | (in) 作用させる 1/cosφ の次数. 省略時は 0.
|
|
iflag : | integer, intent(in), optional
: | (in) 変換の種類
0 : 通常の正変換
1 : 経度微分を作用させた正変換
-1 : 緯度微分を作用させた正変換
2 : sinφを作用させた正変換
省略時は 0.
|
|
スペクトルデータから分散格子データへ変換する(1 層用).
Original external subprogram is wt_mpi_module#xv_w
xvr_Div_xvr_xvr_xvr( xvr_Vlon, xvr_Vlat, xvr_Vrad ) result(xvr_Div_xvr_xvr_xvr)
Function : |
|
xvr_Div_xvr_xvr_xvr : | real(8), dimension(0:im-1,1:jc,km)
|
xvr_Vlon : | real(8), dimension(0:im-1,1:jc,km), intent(in)
|
xvr_Vlat : | real(8), dimension(0:im-1,1:jc,km), intent(in)
|
xvr_Vrad : | real(8), dimension(0:im-1,1:jc,km), intent(in)
|
ベクトル成分である 3 つの格子データに発散を作用させる.
第 1, 2 ,3 引数(u,v,w)がそれぞれベクトルの経度成分, 緯度成分,
動径成分を表す.
極の特異性を回避するためにベクトル場に cosφ/r の重みをかけて 計算している.
div V = (r/cosφ)・div (Vcosφ/r) + V_φtanφ/r + V_r/r
Original external subprogram is wq_mpi_module#xvr_Div_xvr_xvr_xvr
xvr_GradLat_wq( wq ) result(xvr_GradLat_wq)
Function : |
|
xvr_GradLat_wq : | real(8), dimension(0:im-1,1:jc,km)
: | (out) 勾配型緯度微分を作用された 2 次元スペクトルデータ
|
|
wq : | real(8), dimension((nm+1)*(nm+1),0:lm), intent(in)
: | (in) 2 次元球面調和函数チェビシェフスペクトルデータ
|
|
スペクトルデータに勾配型経度微分 1/r ∂/∂φ を作用させる.
Original external subprogram is wq_mpi_module#xvr_GradLat_wq
xvr_GradLon_wq( wq ) result(xvr_GradLon_wq)
Function : |
|
xvr_GradLon_wq : | real(8), dimension(0:im-1,1:jc,km)
: | (out) 勾配型経度微分を作用された 2 次元スペクトルデータ
|
|
wq : | real(8), dimension((nm+1)*(nm+1),0:lm), intent(in)
: | (in) 2 次元球面調和函数チェビシェフスペクトルデータ
|
|
スペクトルデータに勾配型経度微分 1/rcosφ・∂/∂λ を作用させる.
Original external subprogram is wq_mpi_module#xvr_GradLon_wq
xvr_KGrad_wq( wq ) result(xvr_KGrad_wq)
Function : |
|
xvr_KGrad_wq : | real(8), dimension(0:im-1,1:jc,km)
: | (out) 軸方向微分を作用された 2 次元スペクトルデータ
|
|
wq : | real(8), dimension((nm+1)*(nm+1),0:lm), intent(in)
: | (in) 2 次元球面調和函数チェビシェフスペクトルデータ
|
|
k・▽ = cosφ/r ∂/∂φ + sinφ∂/∂r
入力スペクトルデータに対応する格子データに軸方向微分
k・▽ = cosφ/r ∂/∂φ + sinφ∂/∂r
を作用させた格子データが返される. ここでベクトル k
は球の中心から北極向きの単位ベクトルである.
Original external subprogram is wq_mpi_module#xvr_KGrad_wq
xvr_RotLat_wq_wq( wq_Vlon, wq_Vrad ) result(xvr_RotLat_wq_wq)
Function : |
|
xvr_RotLat_wq_wq : | real(8), dimension(0:im-1,1:jc,km)
|
wq_Vlon : | real(8), dimension((nm+1)*(nm+1),0:lm), intent(in)
|
wq_Vrad : | real(8), dimension((nm+1)*(nm+1),0:lm), intent(in)
|
ベクトル場の経度成分, 動径成分である第 1, 2 引数 Vlon, Vrad から
回転の緯度成分
1/r ∂(r Vlon)/∂r - 1/rcosφ・∂Vrad/∂λ
を計算する.
Original external subprogram is wq_mpi_module#xvr_RotLat_wq_wq
xvr_RotLon_wq_wq( wq_Vrad, wq_Vlat ) result(xvr_RotLon_wq_wq)
Function : |
|
xvr_RotLon_wq_wq : | real(8), dimension(0:im-1,1:jc,km)
|
wq_Vrad : | real(8), dimension((nm+1)*(nm+1),0:lm), intent(in)
|
wq_Vlat : | real(8), dimension((nm+1)*(nm+1),0:lm), intent(in)
|
ベクトル場の動径成分, 緯度成分である第 1, 2 引数 Vrad, Vlat から
回転の経度成分
1/r ∂Vrad/∂φ-1/r ∂(r Vlat)/∂r を計算する.
を計算する
Original external subprogram is wq_mpi_module#xvr_RotLon_wq_wq
xvr_wq( wq ) result(xvr_wq)
Function : |
|
xvr_wq : | real(8), dimension(0:im-1,1:jc,km)
|
wq : | real(8), dimension((nm+1)*(nm+1),0:lm), intent(in)
: | (in) 2 次元球面調和函数チェビシェフスペクトルデータ
|
|
スペクトルデータから 3 次元分散格子点データへ(逆)変換する.
Original external subprogram is wq_mpi_module#xvr_wq
xvr_wr( wr ) result(xvr_wr)
Function : |
|
xvr_wr : | real(8), dimension(0:im-1,1:jc,km)
|
wr : | real(8), dimension((nm+1)*(nm+1),km), intent(in)
: | (in) 2 次元球面調和函数スペクトル・動径格子点データ
|
|
水平スペクトル・動径格子点データから 3 次元分散格子点データへ(逆)変換する.
Original external subprogram is wq_mpi_module#xvr_wr
xvz_Div_xvz_xvz_xvz( xvz_Vlon, xvz_Vlat, xvz_Vrad ) result(xvz_Div_xvz_xvz_xvz)
Function : |
|
xvz_Div_xvz_xvz_xvz : | real(8), dimension(0:im-1,jc,0:km)
|
xvz_Vlon : | real(8), dimension(0:im-1,jc,0:km), intent(in)
|
xvz_Vlat : | real(8), dimension(0:im-1,jc,0:km), intent(in)
|
xvz_Vrad : | real(8), dimension(0:im-1,jc,0:km), intent(in)
|
ベクトル成分である 3 つの格子データに発散を作用させる.
第 1, 2 ,3 引数(u,v,w)がそれぞれベクトルの経度成分, 緯度成分,
動径成分を表す.
極の特異性を回避するためにベクトル場に cosφ/r の重みをかけて 計算している.
div V = (r/cosφ)・div (Vcosφ/r) + V_φtanφ/r + V_r/r
Original external subprogram is wt_mpi_module#xvz_Div_xvz_xvz_xvz
xvz_GradLat_wt( wt ) result(xvz_GradLat_wt)
Function : |
|
xvz_GradLat_wt : | real(8), dimension(0:im-1,jc,0:km)
: | (out) 勾配型緯度微分を作用された 2 次元スペクトルデータ
|
|
wt : | real(8), dimension((nm+1)*(nm+1),0:lm), intent(in)
: | (in) 2 次元球面調和函数チェビシェフスペクトルデータ
|
|
スペクトルデータに勾配型経度微分 1/r ∂/∂φ を作用させる.
Original external subprogram is wt_mpi_module#xvz_GradLat_wt
xvz_GradLon_wt( wt ) result(xvz_GradLon_wt)
Function : |
|
xvz_GradLon_wt : | real(8), dimension(0:im-1,jc,0:km)
: | (out) 勾配型経度微分を作用された 2 次元スペクトルデータ
|
|
wt : | real(8), dimension((nm+1)*(nm+1),0:lm), intent(in)
: | (in) 2 次元球面調和函数チェビシェフスペクトルデータ
|
|
スペクトルデータに勾配型経度微分 1/rcosφ・∂/∂λ を作用させる.
Original external subprogram is wt_mpi_module#xvz_GradLon_wt
xvz_KGrad_wt( wt ) result(xvz_KGrad_wt)
Function : |
|
xvz_KGrad_wt : | real(8), dimension(0:im-1,jc,0:km)
: | (out) 軸方向微分を作用された 2 次元スペクトルデータ
|
|
wt : | real(8), dimension((nm+1)*(nm+1),0:lm), intent(in)
: | (in) 2 次元球面調和函数チェビシェフスペクトルデータ
|
|
k・▽ = cosφ/r ∂/∂φ + sinφ∂/∂r
入力スペクトルデータに対応する格子データに軸方向微分
k・▽ = cosφ/r ∂/∂φ + sinφ∂/∂r
を作用させた格子データが返される. ここでベクトル k
は球の中心から北極向きの単位ベクトルである.
Original external subprogram is wt_mpi_module#xvz_KGrad_wt
xvz_RotLat_wt_wt( wt_Vlon, wt_Vrad ) result(xvz_RotLat_wt_wt)
Function : |
|
xvz_RotLat_wt_wt : | real(8), dimension(0:im-1,jc,0:km)
|
wt_Vlon : | real(8), dimension((nm+1)*(nm+1),0:lm), intent(in)
|
wt_Vrad : | real(8), dimension((nm+1)*(nm+1),0:lm), intent(in)
|
ベクトル場の経度成分, 動径成分である第 1, 2 引数 Vlon, Vrad から
回転の緯度成分
1/r ∂(r Vlon)/∂r - 1/rcosφ・∂Vrad/∂λ
を計算する.
Original external subprogram is wt_mpi_module#xvz_RotLat_wt_wt
xvz_RotLon_wt_wt( wt_Vrad, wt_Vlat ) result(xvz_RotLon_wt_wt)
Function : |
|
xvz_RotLon_wt_wt : | real(8), dimension(0:im-1,jc,0:km)
|
wt_Vrad : | real(8), dimension((nm+1)*(nm+1),0:lm), intent(in)
|
wt_Vlat : | real(8), dimension((nm+1)*(nm+1),0:lm), intent(in)
|
ベクトル場の動径成分, 緯度成分である第 1, 2 引数 Vrad, Vlat から
回転の経度成分
1/r ∂Vrad/∂φ-1/r ∂(r Vlat)/∂r を計算する.
を計算する
Original external subprogram is wt_mpi_module#xvz_RotLon_wt_wt
xvz_wt( wt ) result(xvz_wt)
Function : |
|
xvz_wt : | real(8), dimension(0:im-1,jc,0:km)
|
wt : | real(8), dimension((nm+1)*(nm+1),0:lm), intent(in)
: | (in) 2 次元球面調和函数チェビシェフスペクトルデータ
|
|
スペクトルデータから 3 次元格子点データへ(逆)変換する.
Original external subprogram is wt_mpi_module#xvz_wt
xvz_wz( wz ) result(xvz_wz)
Function : |
|
xvz_wz : | real(8), dimension(0:im-1,jc,0:km)
|
wz : | real(8), dimension((nm+1)*(nm+1),0:km), intent(in)
: | (in) 2 次元球面調和函数スペクトル・動径格子点データ
|
|
水平スペクトル・動径格子点データから 3 次元格子点データへ(逆)変換する.
Original external subprogram is wt_mpi_module#xvz_wz
xy_AvrRad_xyr( xyr ) result(xy_AvrRad_xyr)
Function : |
|
xy_AvrRad_xyr : | real(8), dimension(0:im-1,1:jm)
: | (out) 動径平均された 2 次元経度緯度(水平, 球面)格子点データ
水平格子点データ
|
|
xyr : | real(8), dimension(0:im-1,1:jm,km), intent(in)
|
3 次元格子点データの動径方向域平均.
3 次元データ f(λ,φ,r) に対して
∫f(λ,φ,r) r^2dr/((r[o]^3-r[i]^3)/3)
を計算する.
Original external subprogram is wq_mpi_module#xy_AvrRad_xyr
xy_AvrRad_xyz( xyz ) result(xy_AvrRad_xyz)
Function : |
|
xy_AvrRad_xyz : | real(8), dimension(0:im-1,1:jm)
: | (out) 動径平均された 2 次元経度緯度(水平, 球面)格子点データ
水平格子点データ
|
|
xyz : | real(8), dimension(0:im-1,1:jm,0:km), intent(in)
|
3 次元格子点データの動径方向域平均.
3 次元データ f(λ,φ,r) に対して
∫f(λ,φ,r) r^2dr/((r[o]^3-r[i]^3)/3)
を計算する.
Original external subprogram is wt_mpi_module#xy_AvrRad_xyz
xy_IntRad_xyr( xyr ) result(xy_IntRad_xyr)
Function : |
|
xy_IntRad_xyr : | real(8), dimension(0:im-1,1:jm)
: | (out) 動径積分された 2 次元経度緯度(水平, 球面)格子点データ
|
|
xyr : | real(8), dimension(0:im-1,1:jm,km), intent(in)
|
動径積分
3 次元格子点データの動径方向域積分.
3 次元データ f(λ,φ,r) に対して∫f(λ,φ,r) r^2dr を計算する.
Original external subprogram is wq_mpi_module#xy_IntRad_xyr
xy_IntRad_xyz( xyz ) result(xy_IntRad_xyz)
Function : |
|
xy_IntRad_xyz : | real(8), dimension(0:im-1,1:jm)
: | (out) 動径積分された 2 次元経度緯度(水平, 球面)格子点データ
|
|
xyz : | real(8), dimension(0:im-1,1:jm,0:km), intent(in)
|
動径積分
3 次元格子点データの動径方向域積分.
3 次元データ f(λ,φ,r) に対して∫f(λ,φ,r) r^2dr を計算する.
Original external subprogram is wt_mpi_module#xy_IntRad_xyz
xy_w( w_data, [ipow], [iflag] ) result(xy_w)
Function : |
|
xy_w(0:im-1,1:jm) : | real(8)
|
w_data((nm+1)*(nm+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 wq_mpi_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)*(nm+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 wt_mpi_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)*(nm+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 wq_mpi_module#xy_w
xyr_Div_xyr_xyr_xyr( xyr_Vlon, xyr_Vlat, xyr_Vrad ) result(xyr_Div_xyr_xyr_xyr)
Function : |
|
xyr_Div_xyr_xyr_xyr : | real(8), dimension(0:im-1,1:jm,km)
|
xyr_Vlon : | real(8), dimension(0:im-1,1:jm,km), intent(in)
|
xyr_Vlat : | real(8), dimension(0:im-1,1:jm,km), intent(in)
|
xyr_Vrad : | real(8), dimension(0:im-1,1:jm,km), intent(in)
|
ベクトル成分である 3 つの格子データに発散を作用させる.
第 1, 2 ,3 引数(u,v,w)がそれぞれベクトルの経度成分, 緯度成分,
動径成分を表す.
極の特異性を回避するためにベクトル場に cosφ/r の重みをかけて 計算している.
div V = (r/cosφ)・div (Vcosφ/r) + V_φtanφ/r + V_r/r
Original external subprogram is wq_mpi_module#xyr_Div_xyr_xyr_xyr
xyr_GradLat_wq( wq ) result(xyr_GradLat_wq)
Function : |
|
xyr_GradLat_wq : | real(8), dimension(0:im-1,1:jm,km)
: | (out) 勾配型緯度微分を作用された 2 次元スペクトルデータ
|
|
wq : | real(8), dimension((nm+1)*(nm+1),0:lm), intent(in)
: | (in) 2 次元球面調和函数チェビシェフスペクトルデータ
|
|
スペクトルデータに勾配型経度微分 1/r ∂/∂φ を作用させる.
Original external subprogram is wq_mpi_module#xyr_GradLat_wq
xyr_GradLon_wq( wq ) result(xyr_GradLon_wq)
Function : |
|
xyr_GradLon_wq : | real(8), dimension(0:im-1,1:jm,km)
: | (out) 勾配型経度微分を作用された 2 次元スペクトルデータ
|
|
wq : | real(8), dimension((nm+1)*(nm+1),0:lm), intent(in)
: | (in) 2 次元球面調和函数チェビシェフスペクトルデータ
|
|
スペクトルデータに勾配型経度微分 1/rcosφ・∂/∂λ を作用させる.
Original external subprogram is wq_mpi_module#xyr_GradLon_wq
xyr_KGrad_wq( wq ) result(xyr_KGrad_wq)
Function : |
|
xyr_KGrad_wq : | real(8), dimension(0:im-1,1:jm,km)
: | (out) 軸方向微分を作用された 2 次元スペクトルデータ
|
|
wq : | real(8), dimension((nm+1)*(nm+1),0:lm), intent(in)
: | (in) 2 次元球面調和函数チェビシェフスペクトルデータ
|
|
k・▽ = cosφ/r ∂/∂φ + sinφ∂/∂r
入力スペクトルデータに対応する格子データに軸方向微分
k・▽ = cosφ/r ∂/∂φ + sinφ∂/∂r
を作用させた格子データが返される. ここでベクトル k
は球の中心から北極向きの単位ベクトルである.
Original external subprogram is wq_mpi_module#xyr_KGrad_wq
xyr_RotLat_wq_wq( wq_Vlon, wq_Vrad ) result(xyr_RotLat_wq_wq)
Function : |
|
xyr_RotLat_wq_wq : | real(8), dimension(0:im-1,1:jm,km)
|
wq_Vlon : | real(8), dimension((nm+1)*(nm+1),0:lm), intent(in)
|
wq_Vrad : | real(8), dimension((nm+1)*(nm+1),0:lm), intent(in)
|
ベクトル場の経度成分, 動径成分である第 1, 2 引数 Vlon, Vrad から
回転の緯度成分
1/r ∂(r Vlon)/∂r - 1/rcosφ・∂Vrad/∂λ
を計算する.
Original external subprogram is wq_mpi_module#xyr_RotLat_wq_wq
xyr_RotLon_wq_wq( wq_Vrad, wq_Vlat ) result(xyr_RotLon_wq_wq)
Function : |
|
xyr_RotLon_wq_wq : | real(8), dimension(0:im-1,1:jm,km)
|
wq_Vrad : | real(8), dimension((nm+1)*(nm+1),0:lm), intent(in)
|
wq_Vlat : | real(8), dimension((nm+1)*(nm+1),0:lm), intent(in)
|
ベクトル場の動径成分, 緯度成分である第 1, 2 引数 Vrad, Vlat から
回転の経度成分
1/r ∂Vrad/∂φ-1/r ∂(r Vlat)/∂r を計算する.
を計算する
Original external subprogram is wq_mpi_module#xyr_RotLon_wq_wq
xyr_wq( wq ) result(xyr_wq)
Function : |
|
xyr_wq : | real(8), dimension(0:im-1,1:jm,km)
|
wq : | real(8), dimension((nm+1)*(nm+1),0:lm), intent(in)
: | (in) 2 次元球面調和函数チェビシェフスペクトルデータ
|
|
スペクトルデータから 3 次元格子点データへ(逆)変換する.
Original external subprogram is wq_mpi_module#xyr_wq
xyr_wr( wr ) result(xyr_wr)
Function : |
|
xyr_wr : | real(8), dimension(0:im-1,1:jm,km)
|
wr : | real(8), dimension((nm+1)*(nm+1),km), intent(in)
: | (in) 2 次元球面調和函数スペクトル・動径格子点データ
|
|
水平スペクトル・動径格子点データから 3 次元格子点データへ(逆)変換する.
Original external subprogram is wq_mpi_module#xyr_wr
xyz_Div_xyz_xyz_xyz( xyz_Vlon, xyz_Vlat, xyz_Vrad ) result(xyz_Div_xyz_xyz_xyz)
Function : |
|
xyz_Div_xyz_xyz_xyz : | real(8), dimension(0:im-1,1:jm,0:km)
|
xyz_Vlon : | real(8), dimension(0:im-1,1:jm,0:km), intent(in)
|
xyz_Vlat : | real(8), dimension(0:im-1,1:jm,0:km), intent(in)
|
xyz_Vrad : | real(8), dimension(0:im-1,1:jm,0:km), intent(in)
|
ベクトル成分である 3 つの格子データに発散を作用させる.
第 1, 2 ,3 引数(u,v,w)がそれぞれベクトルの経度成分, 緯度成分,
動径成分を表す.
極の特異性を回避するためにベクトル場に cosφ/r の重みをかけて 計算している.
div V = (r/cosφ)・div (Vcosφ/r) + V_φtanφ/r + V_r/r
Original external subprogram is wt_mpi_module#xyz_Div_xyz_xyz_xyz
xyz_GradLat_wt( wt ) result(xyz_GradLat_wt)
Function : |
|
xyz_GradLat_wt : | real(8), dimension(0:im-1,1:jm,0:km)
: | (out) 勾配型緯度微分を作用された 2 次元スペクトルデータ
|
|
wt : | real(8), dimension((nm+1)*(nm+1),0:lm), intent(in)
: | (in) 2 次元球面調和函数チェビシェフスペクトルデータ
|
|
スペクトルデータに勾配型経度微分 1/r ∂/∂φ を作用させる.
Original external subprogram is wt_mpi_module#xyz_GradLat_wt
xyz_GradLon_wt( wt ) result(xyz_GradLon_wt)
Function : |
|
xyz_GradLon_wt : | real(8), dimension(0:im-1,1:jm,0:km)
: | (out) 勾配型経度微分を作用された 2 次元スペクトルデータ
|
|
wt : | real(8), dimension((nm+1)*(nm+1),0:lm), intent(in)
: | (in) 2 次元球面調和函数チェビシェフスペクトルデータ
|
|
スペクトルデータに勾配型経度微分 1/rcosφ・∂/∂λ を作用させる.
Original external subprogram is wt_mpi_module#xyz_GradLon_wt
xyz_KGrad_wt( wt ) result(xyz_KGrad_wt)
Function : |
|
xyz_KGrad_wt : | real(8), dimension(0:im-1,1:jm,0:km)
: | (out) 軸方向微分を作用された 2 次元スペクトルデータ
|
|
wt : | real(8), dimension((nm+1)*(nm+1),0:lm), intent(in)
: | (in) 2 次元球面調和函数チェビシェフスペクトルデータ
|
|
k・▽ = cosφ/r ∂/∂φ + sinφ∂/∂r
入力スペクトルデータに対応する格子データに軸方向微分
k・▽ = cosφ/r ∂/∂φ + sinφ∂/∂r
を作用させた格子データが返される. ここでベクトル k
は球の中心から北極向きの単位ベクトルである.
Original external subprogram is wt_mpi_module#xyz_KGrad_wt
xyz_RotLat_wt_wt( wt_Vlon, wt_Vrad ) result(xyz_RotLat_wt_wt)
Function : |
|
xyz_RotLat_wt_wt : | real(8), dimension(0:im-1,1:jm,0:km)
|
wt_Vlon : | real(8), dimension((nm+1)*(nm+1),0:lm), intent(in)
|
wt_Vrad : | real(8), dimension((nm+1)*(nm+1),0:lm), intent(in)
|
ベクトル場の経度成分, 動径成分である第 1, 2 引数 Vlon, Vrad から
回転の緯度成分
1/r ∂(r Vlon)/∂r - 1/rcosφ・∂Vrad/∂λ
を計算する.
Original external subprogram is wt_mpi_module#xyz_RotLat_wt_wt
xyz_RotLon_wt_wt( wt_Vrad, wt_Vlat ) result(xyz_RotLon_wt_wt)
Function : |
|
xyz_RotLon_wt_wt : | real(8), dimension(0:im-1,1:jm,0:km)
|
wt_Vrad : | real(8), dimension((nm+1)*(nm+1),0:lm), intent(in)
|
wt_Vlat : | real(8), dimension((nm+1)*(nm+1),0:lm), intent(in)
|
ベクトル場の動径成分, 緯度成分である第 1, 2 引数 Vrad, Vlat から
回転の経度成分
1/r ∂Vrad/∂φ-1/r ∂(r Vlat)/∂r を計算する.
を計算する
Original external subprogram is wt_mpi_module#xyz_RotLon_wt_wt
xyz_wt( wt ) result(xyz_wt)
Function : |
|
xyz_wt : | real(8), dimension(0:im-1,1:jm,0:km)
|
wt : | real(8), dimension((nm+1)*(nm+1),0:lm), intent(in)
: | (in) 2 次元球面調和函数チェビシェフスペクトルデータ
|
|
スペクトルデータから 3 次元格子点データへ(逆)変換する.
Original external subprogram is wt_mpi_module#xyz_wt
xyz_wz( wz ) result(xyz_wz)
Function : |
|
xyz_wz : | real(8), dimension(0:im-1,1:jm,0:km)
|
wz : | real(8), dimension((nm+1)*(nm+1),0:km), intent(in)
: | (in) 2 次元球面調和函数スペクトル・動径格子点データ
|
|
水平スペクトル・動径格子点データから 3 次元格子点データへ(逆)変換する.
Original external subprogram is wt_mpi_module#xyz_wz
xz_AvrLat_xvz( xvz ) result(xz_AvrLat_xvz)
Function : |
|
xz_AvrLat_xvz : | real(8), dimension(im,0:km)
: | (out) 緯度平均された 2 次元緯度動径格子点データ
|
|
xvz : | real(8), dimension(0:im-1,jc,0:km), intent(in)
|
緯度積分
3 次元格子点データの緯度方向域平均.
3 次元データ f(λ,φ,r) に対して ∫f(λ,φ,r)cosφ dφ/2 を計算する.
Original external subprogram is wt_mpi_module#xz_AvrLat_xvz
xz_AvrLat_xyz( xyz ) result(xz_AvrLat_xyz)
Function : |
|
xz_AvrLat_xyz : | real(8), dimension(0:im-1,0:km)
: | (out) 緯度平均された 2 次元緯度動径格子点データ
|
|
xyz : | real(8), dimension(0:im-1,1:jm,0:km), intent(in)
|
緯度積分
3 次元格子点データの緯度方向域平均.
3 次元データ f(λ,φ,r) に対して ∫f(λ,φ,r)cosφ dφ/2 を計算する.
Original external subprogram is wt_mpi_module#xz_AvrLat_xyz
xz_IntLat_xvz( xvz ) result(xz_IntLat_xvz)
Function : |
|
xz_IntLat_xvz : | real(8), dimension(0:im-1,0:km)
: | 緯度円格子点データ (out) 緯度積分された 2 次元緯度動径格子点データ
|
|
xvz : | real(8), dimension(0:im-1,jc,0:km), intent(in)
|
3 次元格子点データの緯度方向域積分.
3 次元データ f(λ,φ,r) に対して∫f(λ,φ,r) cosφ dφ を計算する.
Original external subprogram is wt_mpi_module#xz_IntLat_xvz
xz_IntLat_xyz( xyz ) result(xz_IntLat_xyz)
Function : |
|
xz_IntLat_xyz : | real(8), dimension(0:im-1,0:km)
: | (out) 緯度積分された 2 次元緯度動径格子点データ. 緯度円格子点データ
|
|
xyz : | real(8), dimension(0:im-1,1:jm,0:km), intent(in)
|
3 次元格子点データの緯度方向域積分.
3 次元データ f(λ,φ,r) に対して∫f(λ,φ,r) cosφ dφ を計算する.
Original external subprogram is wt_mpi_module#xz_IntLat_xyz
y_AvrLonRad_xyr( xyr ) result(y_AvrLonRad_xyr)
Function : |
|
y_AvrLonRad_xyr : | real(8), dimension(1:jm)
: | (out) 経度動径(緯度円)平均された 1 次元緯度格子点データ
|
|
xyr : | real(8), dimension(0:im-1,1:jm,km), intent(in)
|
経度動径(緯度円)積分
3 次元格子点データの経度動径(緯度円)平均.
3 次元データ f(λ,φ,r) に対して
∫f(λ,φ,r) r^2dλdr /(2π(r[o]^3-r[i]^3)/3)
を計算する.
Original external subprogram is wq_mpi_module#y_AvrLonRad_xyr
y_AvrLonRad_xyz( xyz ) result(y_AvrLonRad_xyz)
Function : |
|
y_AvrLonRad_xyz : | real(8), dimension(1:jm)
: | (out) 経度動径(緯度円)平均された 1 次元緯度格子点データ
|
|
xyz : | real(8), dimension(0:im-1,1:jm,0:km), intent(in)
|
経度動径(緯度円)積分
3 次元格子点データの経度動径(緯度円)平均.
3 次元データ f(λ,φ,r) に対して
∫f(λ,φ,r) r^2dλdr /(2π(r[o]^3-r[i]^3)/3)
を計算する.
Original external subprogram is wt_mpi_module#y_AvrLonRad_xyz
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 wq_mpi_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 wt_mpi_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 wq_mpi_module#y_AvrLon_xy
y_AvrRad_yr( yr ) result(y_AvrRad_yr)
Function : |
|
y_AvrRad_yr : | real(8), dimension(1:jm)
: | (out) 動径平均された 1 次元緯度格子点データ
|
|
yr : | real(8), dimension(1:jm,km), intent(in)
: | (in) 2 次元緯度動径(子午面)格子点データ
|
|
2 次元(YR)格子点データの動径方向域平均.
2 次元データ f(φ,r) に対して ∫f(φ,r) r^2dr /((r[o]^3-r[i]^3)/3)
を計算する.
Original external subprogram is wq_mpi_module#y_AvrRad_yr
y_AvrRad_yz( yz ) result(y_AvrRad_yz)
Function : |
|
y_AvrRad_yz : | real(8), dimension(1:jm)
: | (out) 動径平均された 1 次元緯度格子点データ
|
|
yz : | real(8), dimension(1:jm,0:km), intent(in)
: | (in) 2 次元緯度動径(子午面)格子点データ
|
|
2 次元(YZ)格子点データの動径方向域平均.
2 次元データ f(φ,r) に対して ∫f(φ,r) r^2dr /((r[o]^3-r[i]^3)/3)
を計算する.
Original external subprogram is wt_mpi_module#y_AvrRad_yz
y_IntLonRad_xyr( xyr ) result(y_IntLonRad_xyr)
Function : |
|
y_IntLonRad_xyr : | real(8), dimension(1:jm)
: | (out) 経度動径(緯度円)積分された 1 次元緯度格子点データ
|
|
xyr : | real(8), dimension(0:im-1,1:jm,km), intent(in)
|
3 次元格子点データの経度動径(緯度円)積分.
3 次元データ f(λ,φ,r) に対して∫f(λ,φ,r) r^2dλdr を計算する.
Original external subprogram is wq_mpi_module#y_IntLonRad_xyr
y_IntLonRad_xyz( xyz ) result(y_IntLonRad_xyz)
Function : |
|
y_IntLonRad_xyz : | real(8), dimension(1:jm)
: | (out) 経度動径(緯度円)積分された 1 次元緯度格子点データ
|
|
xyz : | real(8), dimension(0:im-1,1:jm,0:km), intent(in)
|
3 次元格子点データの経度動径(緯度円)積分.
3 次元データ f(λ,φ,r) に対して∫f(λ,φ,r) r^2dλdr を計算する.
Original external subprogram is wt_mpi_module#y_IntLonRad_xyz
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 wq_mpi_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 wt_mpi_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 wq_mpi_module#y_IntLon_xy
y_IntRad_yr( yr ) result(y_IntRad_yr)
Function : |
|
y_IntRad_yr : | real(8), dimension(1:jm)
: | (out) 動径積分された 1 次元緯度格子点データ
|
|
yr : | real(8), dimension(1:jm,km), intent(in)
: | (in) 2 次元緯度動径(子午面)格子点データ
|
|
動径積分
2 次元(YR)格子点データの動径方向域積分.
2 次元データ f(φ,r) に対して∫f(φ,r) r^2dr を計算する.
Original external subprogram is wq_mpi_module#y_IntRad_yr
y_IntRad_yz( yz ) result(y_IntRad_yz)
Function : |
|
y_IntRad_yz : | real(8), dimension(1:jm)
: | (out) 動径積分された 1 次元緯度格子点データ
|
|
yz : | real(8), dimension(1:jm,0:km), intent(in)
: | (in) 2 次元緯度動径(子午面)格子点データ
|
|
動径積分
2 次元(YZ)格子点データの動径方向域積分.
2 次元データ f(φ,r) に対して∫f(φ,r) r^2dr を計算する.
Original external subprogram is wt_mpi_module#y_IntRad_yz
yr_AvrLon_xyr( xyr ) result(yr_AvrLon_xyr)
Function : |
|
yr_AvrLon_xyr : | real(8), dimension(1:jm,km)
: | (out) 経度方向(帯状)平均された 2 次元子午面格子点データ
|
|
xyr : | real(8), dimension(0:im-1,1:jm,km), intent(in)
|
経度(帯状)積分
3 次元格子点データの経度方向(帯状)平均.
3 次元データ f(λ,φ,r) に対して ∫f(λ,φ,r)dλ/2π を計算する.
Original external subprogram is wq_mpi_module#yr_AvrLon_xyr
yr_IntLon_xyr( xyr ) result(yr_IntLon_xyr)
Function : |
|
yr_IntLon_xyr : | real(8), dimension(1:jm,km)
: | (out) 経度方向(帯状)積分された 2 次元子午面格子点データ
|
|
xyr : | real(8), dimension(0:im-1,1:jm,km), intent(in)
|
経度(帯状)積分
3 次元格子点データの経度方向(帯状)積分.
3 次元データ f(λ,φ,r) に対して ∫f(λ,φ,r)dλ を計算する.
Original external subprogram is wq_mpi_module#yr_IntLon_xyr
yz_AvrLon_xyz( xyz ) result(yz_AvrLon_xyz)
Function : |
|
yz_AvrLon_xyz : | real(8), dimension(1:jm,0:km)
: | (out) 経度方向(帯状)平均された 2 次元子午面格子点データ
|
|
xyz : | real(8), dimension(0:im-1,1:jm,0:km), intent(in)
|
経度(帯状)積分
3 次元格子点データの経度方向(帯状)平均.
3 次元データ f(λ,φ,r) に対して ∫f(λ,φ,r)dλ/2π を計算する.
Original external subprogram is wt_mpi_module#yz_AvrLon_xyz
yz_IntLon_xyz( xyz ) result(yz_IntLon_xyz)
Function : |
|
yz_IntLon_xyz : | real(8), dimension(1:jm,0:km)
: | (out) 経度方向(帯状)積分された 2 次元子午面格子点データ
|
|
xyz : | real(8), dimension(0:im-1,1:jm,0:km), intent(in)
|
経度(帯状)積分
3 次元格子点データの経度方向(帯状)積分.
3 次元データ f(λ,φ,r) に対して ∫f(λ,φ,r)dλ を計算する.
Original external subprogram is wt_mpi_module#yz_IntLon_xyz
z_AvrLat_vz( vz ) result(z_AvrLat_vz)
Function : |
|
z_AvrLat_vz : | real(8), dimension(0:km)
: | (out) 緯度平均された 1 次元動径格子点データ
|
|
vz : | real(8), dimension(jc,0:km),
intent(in)
: | (in) 2 次元緯度動径(子午面)格子点データ
|
|
2 次元(VZ)格子点データの緯度方向域平均.
2 次元データ f(φ,r) に対して ∫f(φ,r) cosφ dφ/2 を計算する.
Original external subprogram is wt_mpi_module#z_AvrLat_vz
z_AvrLat_yz( yz ) result(z_AvrLat_yz)
Function : |
|
z_AvrLat_yz : | real(8), dimension(0:km)
: | (out) 緯度平均された 1 次元動径格子点データ
|
|
yz : | real(8), dimension(1:jm,0:km), intent(in)
: | (in) 2 次元緯度動径(子午面)格子点データ
|
|
2 次元(YZ)格子点データの緯度方向域平均.
2 次元データ f(φ,r) に対して ∫f(φ,r) cosφ dφ/2 を計算する.
Original external subprogram is wt_mpi_module#z_AvrLat_yz
z_AvrLonLat_xvz( xvz ) result(z_AvrLonLat_xvz)
Function : |
|
z_AvrLonLat_xvz : | real(8), dimension(0:km)
: | (out) 緯度経度(水平, 球面)平均された 1 次元動径格子点データ
|
|
xvz : | real(8), dimension(0:im-1,jc,0:km), intent(in)
|
緯度経度(水平)積分
3 次元格子点データの緯度経度(水平, 球面)積分
3 次元データ f(λ,φ,r) に対して
∫f(λ,φ,r) cosφ dλdφ /4π
を計算する.
Original external subprogram is wt_mpi_module#z_AvrLonLat_xvz
z_AvrLonLat_xyz( xyz ) result(z_AvrLonLat_xyz)
Function : |
|
z_AvrLonLat_xyz : | real(8), dimension(0:km)
: | (out) 緯度経度(水平, 球面)平均された 1 次元動径格子点データ
|
|
xyz : | real(8), dimension(0:im-1,1:jm,0:km), intent(in)
|
緯度経度(水平)積分
3 次元格子点データの緯度経度(水平, 球面)積分
3 次元データ f(λ,φ,r) に対して
∫f(λ,φ,r) cosφ dλdφ /4π
を計算する.
Original external subprogram is wt_mpi_module#z_AvrLonLat_xyz
z_AvrLon_xz( xz ) result(z_AvrLon_xz)
Function : |
|
z_AvrLon_xz : | real(8), dimension(0:km)
: | (out) 経度平均された 1 次元動径格子点データ
|
|
xz : | real(8), dimension(0:im-1,0:km), intent(in)
|
経度(帯状)積分
2 次元(XZ)格子点データの経度方向平均.
2 次元データ f(λ,r) に対して ∫f(λ,r)dλ/2π を計算する.
Original external subprogram is wt_mpi_module#z_AvrLon_xz
z_IntLat_vz( vz ) result(z_IntLat_vz)
Function : |
|
z_IntLat_vz : | real(8), dimension(0:km)
: | (out) 緯度積分された 1 次元動径格子点データ
|
|
vz : | real(8), dimension(jc,0:km),
intent(in)
: | (in) 2 次元緯度動径(子午面)格子点データ
|
|
緯度積分
2 次元(VZ)格子点データの緯度方向域積分.
2 次元データ f(φ,r) に対して∫f(φ,r) cosφ dφ を計算する.
Original external subprogram is wt_mpi_module#z_IntLat_vz
z_IntLat_yz( yz ) result(z_IntLat_yz)
Function : |
|
z_IntLat_yz : | real(8), dimension(0:km)
: | (out) 緯度積分された 1 次元動径格子点データ
|
|
yz : | real(8), dimension(jm,0:km), intent(in)
: | (in) 2 次元緯度動径(子午面)格子点データ
|
|
緯度積分
2 次元(YZ)格子点データの緯度方向域積分.
2 次元データ f(φ,r) に対して∫f(φ,r) cosφ dφ を計算する.
Original external subprogram is wt_mpi_module#z_IntLat_yz
z_IntLonLat_xvz( xvz ) result(z_IntLonLat_xvz)
Function : |
|
z_IntLonLat_xvz : | real(8), dimension(0:km)
: | (out) 緯度経度(水平, 球面)積分された 1 次元動径格子点データ
|
|
xvz : | real(8), dimension(0:im-1,jc,0:km), intent(in)
|
緯度経度(水平)積分
3 次元格子点データの緯度経度(水平, 球面)積分
3 次元データ f(λ,φ,r) に対して
∫f(λ,φ,r) cosφ dλdφ
を計算する.
Original external subprogram is wt_mpi_module#z_IntLonLat_xvz
z_IntLonLat_xyz( xyz ) result(z_IntLonLat_xyz)
Function : |
|
z_IntLonLat_xyz : | real(8), dimension(0:km)
: | (out) 緯度経度(水平, 球面)積分された 1 次元動径格子点データ
|
|
xyz : | real(8), dimension(0:im-1,1:jm,0:km), intent(in)
|
緯度経度(水平)積分
3 次元格子点データの緯度経度(水平, 球面)積分
3 次元データ f(λ,φ,r) に対して
∫f(λ,φ,r) cosφ dλdφ
を計算する.
Original external subprogram is wt_mpi_module#z_IntLonLat_xyz
z_IntLon_xz( xz ) result(z_IntLon_xz)
Function : |
|
z_IntLon_xz : | real(8), dimension(0:km)
: | (out) 経度積分された 1 次元動径格子点データ
|
|
xz : | real(8), dimension(0:im-1,0:km), intent(in)
|
2 次元(XZ)格子点データの経度方向積分.
2 次元データ f(λ,r) に対して ∫f(λ,r)dλ を計算する.
Original external subprogram is wt_mpi_module#z_IntLon_xz
z_RAD
Variable : |
|
g_X(:) : | real(8), allocatable
: | 格子点座標 km 次のチェビシェフ多項式の零点から定まる格子点
|
|
Original external subprogram is wt_mpi_module#z_RAD
z_RAD_WEIGHT
Variable : |
|
g_X_Weight(:) : | real(8), allocatable
: | 格子点重み座標 各格子点における積分のための重みが格納してある
|
|
Original external subprogram is wt_mpi_module#z_RAD_WEIGHT