Public Instance methods
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_module#AvrLatRad_yz
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_module#AvrLonLatRad_xyz
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_module#AvrLonRad_xz
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_module#AvrRad_z
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_module#IntLatRad_yz
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_module#IntLonLatRad_xyz
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_module#IntLonRad_xz
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_module#IntRad_z
b_DRad_b( b_data ) result(b_Dx_b)
Function : |
|
b_Dx_b(ks:km) : | real(8)
|
b_data(ks:km) : | real(8), intent(IN)
|
チェビシェフ−ガラーキン法 片端ノイマン片端ディリクレ境界条件
X 微分計算(1 次元)
Original external subprogram is at_ab_galerkin_ND#b_Dx_b
b_t( t_data ) result(b_t)
Function : |
|
b_t(ks:km) : | real(8)
|
t_data(0:km) : | real(8), intent(IN)
|
チェビシェフ−ガラーキン法 片端ノイマン片端ディリクレ境界条件
チェビシェフ係数 -> ガラーキン係数変換(1次元データ)
Original external subprogram is at_ab_galerkin_ND#b_t
b_z( g_data ) result(b_g)
Function : |
|
b_g(ks:km) : | real(8)
|
g_data(0:im) : | real(8), intent(IN)
|
チェビシェフ−ガラーキン法 片端ノイマン片端ディリクレ境界条件
格子点データ -> ガラーキン係数変換(1次元データ)
Original external subprogram is at_ab_galerkin_ND#b_g
d_DRad_d( d_data ) result(d_Dx_d)
Function : |
|
d_Dx_d(ks:km) : | real(8)
|
d_data(ks:km) : | real(8), intent(IN)
|
チェビシェフ−ガラーキン法 両端ディリクレ境界条件
X 微分計算(1 次元データ)
Original external subprogram is at_ad_galerkin_DD#d_Dx_d
d_t( t_data ) result(d_t)
Function : |
|
d_t(ks:km) : | real(8)
|
t_data(0:km) : | real(8), intent(IN)
|
チェビシェフ−ガラーキン法 両端ディリクレ境界条件
チェビシェフ係数 -> ガラーキン係数変換(1次元データ)
Original external subprogram is at_ad_galerkin_DD#d_t
d_z( g_data ) result(d_g)
Function : |
|
d_g(ks:km) : | real(8)
|
g_data(0:im) : | real(8), intent(IN)
|
チェビシェフ−ガラーキン法 両端ディリクレ境界条件
格子点データ -> ガラーキン係数変換(1次元データ)
Original external subprogram is at_ad_galerkin_DD#d_g
f_DRad_f( f_data ) result(f_Dx_f)
Function : |
|
f_Dx_f(ks:km) : | real(8)
|
f_data(ks:km) : | real(8), intent(IN)
|
チェビシェフ−ガラーキン法 ディリクレ・ノイマン混合境界条件
X 微分計算(1 次元)
Original external subprogram is at_af_galerkin_MM#f_Dx_f
f_t( t_data ) result(f_t)
Function : |
|
f_t(ks:km) : | real(8)
|
t_data(0:km) : | real(8), intent(IN)
|
チェビシェフ−ガラーキン法 ディリクレ・ノイマン混合境界条件
チェビシェフ係数 -> ガラーキン係数変換(1次元データ)
Original external subprogram is at_af_galerkin_MM#f_t
f_z( g_data ) result(f_g)
Function : |
|
f_g(ks:km) : | real(8)
|
g_data(0:im) : | real(8), intent(IN)
|
チェビシェフ−ガラーキン法 ディリクレ・ノイマン混合境界条件
格子点データ -> ガラーキン係数変換(1次元データ)
Original external subprogram is at_af_galerkin_MM#f_g
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_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_module#nmz_ToroidalEnergySpectrum_wt
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_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_module#nz_ToroidalEnergySpectrum_wt
p_DRad_p( p_data ) result(p_Dx_p)
Function : |
|
p_Dx_p(ks:km) : | real(8)
|
p_data(ks:km) : | real(8), intent(IN)
|
チェビシェフ−ガラーキン法 片端ディリクレ片端ノイマン境界条件
X 微分計算(1 次元)
Original external subprogram is at_ap_galerkin_DN#p_Dx_p
p_t( t_data ) result(p_t)
Function : |
|
p_t(ks:km) : | real(8)
|
t_data(0:km) : | real(8), intent(IN)
|
チェビシェフ−ガラーキン法 片端ディリクレ片端ノイマン境界条件
チェビシェフ係数 -> ガラーキン係数変換(1次元データ)
Original external subprogram is at_ap_galerkin_DN#p_t
p_z( g_data ) result(p_g)
Function : |
|
p_g(ks:km) : | real(8)
|
g_data(0:im) : | real(8), intent(IN)
|
チェビシェフ−ガラーキン法 片端ディリクレ片端ノイマン境界条件
格子点データ -> ガラーキン係数変換(1次元データ)
Original external subprogram is at_ap_galerkin_DN#p_g
q_DRad_q( q_data ) result(q_Dx_q)
Function : |
|
q_Dx_q(ks:km) : | real(8)
|
q_data(ks:km) : | real(8), intent(in)
|
チェビシェフ−ガラーキン法 非圧縮流体の流線関数・流れポテンシャル用
X 微分計算(1 次元)
Original external subprogram is at_aq_galerkin_RRFF#q_Dx_q
q_t( t_data ) result(q_t)
Function : |
|
q_t(ks:km) : | real(8)
|
t_data(0:km) : | real(8), intent(in)
|
チェビシェフ−ガラーキン法 非圧縮流体の流線関数・流れポテンシャル用
チェビシェフ係数 -> ガラーキン係数変換(1次元データ)
Original external subprogram is at_aq_galerkin_RRFF#q_t
q_z( g_data ) result(q_g)
Function : |
|
q_g(ks:km) : | real(8)
|
g_data(0:im) : | real(8), intent(in)
|
チェビシェフ−ガラーキン法 非圧縮流体の流線関数・流れポテンシャル用
格子点データ -> ガラーキン係数変換(1次元データ)
Original external subprogram is at_aq_galerkin_RRFF#q_g
t_b( b_data ) result(t_b)
Function : |
|
t_b(0:km) : | real(8)
|
b_data(ks:km) : | real(8), intent(IN)
|
チェビシェフ−ガラーキン法 片端ノイマン片端ディリクレ境界条件
ガラーキン係数 -> チェビシェフ係数変換(1次元データ)
Original external subprogram is at_ab_galerkin_ND#t_b
t_d( d_data ) result(t_d)
Function : |
|
t_d(0:km) : | real(8)
|
d_data(ks:km) : | real(8), intent(IN)
|
チェビシェフ−ガラーキン法 両端ディリクレ境界条件
ガラーキン係数 -> チェビシェフ係数変換(1次元データ)
Original external subprogram is at_ad_galerkin_DD#t_d
t_f( f_data ) result(t_f)
Function : |
|
t_f(0:km) : | real(8)
|
f_data(ks:km) : | real(8), intent(IN)
|
チェビシェフ−ガラーキン法 ディリクレ・ノイマン混合境界条件
ガラーキン係数 -> チェビシェフ係数変換(1次元データ)
Original external subprogram is at_af_galerkin_MM#t_f
t_p( p_data ) result(t_p)
Function : |
|
t_p(0:km) : | real(8)
|
p_data(ks:km) : | real(8), intent(IN)
|
チェビシェフ−ガラーキン法 片端ディリクレ片端ノイマン境界条件
ガラーキン係数 -> チェビシェフ係数変換(1次元データ)
Original external subprogram is at_ap_galerkin_DN#t_p
t_q( q_data ) result(t_q)
Function : |
|
t_q(0:km) : | real(8)
|
q_data(ks:km) : | real(8), intent(in)
|
チェビシェフ−ガラーキン法 非圧縮流体の流線関数・流れポテンシャル用
ガラーキン係数 -> チェビシェフ係数変換(1次元データ)
Original external subprogram is at_aq_galerkin_RRFF#t_q
t_v( v_data ) result(t_v)
Function : |
|
t_v(0:km) : | real(8)
|
v_data(ks:km) : | real(8), intent(IN)
|
チェビシェフ−ガラーキン法 両端ノイマン境界条件
ガラーキン係数 -> チェビシェフ係数変換(1次元データ)
Original external subprogram is at_av_galerkin_NN#t_v
v_DRad_v( v_data ) result(v_Dx_v)
Function : |
|
v_Dx_v(ks:km) : | real(8)
|
v_data(ks:km) : | real(8), intent(IN)
|
チェビシェフ−ガラーキン法 両端ノイマン境界条件
X 微分計算(1 次元)
Original external subprogram is at_av_galerkin_NN#v_Dx_v
v_t( t_data ) result(v_t)
Function : |
|
v_t(ks:km) : | real(8)
|
t_data(0:km) : | real(8), intent(IN)
|
チェビシェフ−ガラーキン法 両端ノイマン境界条件
チェビシェフ係数 -> ガラーキン係数変換(1次元データ)
Original external subprogram is at_av_galerkin_NN#v_t
v_z( g_data ) result(v_g)
Function : |
|
v_g(ks:km) : | real(8)
|
g_data(0:im) : | real(8), intent(IN)
|
チェビシェフ−ガラーキン法 両端ノイマン境界条件
格子点データ -> ガラーキン係数変換(1次元データ)
Original external subprogram is at_av_galerkin_NN#v_g
Function : |
|
wb_DRad_wb((nm+1)**2,2:lm) : | real(8)
|
wb((nm+1)**2,2:lm) : | real(8), intent(IN)
|
チェビシェフ−ガラーキン法 上端ノイマン下端ディリクレ境界条件
動径微分計算(2 次元データ)
[Source]
function wb_DRad_wb(wb)
!
! チェビシェフ−ガラーキン法
! 上端ノイマン下端ディリクレ境界条件
!
! 動径微分計算(2 次元データ)
!
real(8), intent(IN) :: wb((nm+1)**2,2:lm) !(in) ガラーキン係数
real(8) :: wb_DRad_wb((nm+1)**2,2:lm) !(out) 微分ガラーキン
wb_DRad_wb = wb_wt(wt_DRad_wt(wt_wb(wb)))
end function wb_DRad_wb
Function : |
|
wb_wt((nm+1)**2,2:lm) : | real(8)
|
wt((nm+1)**2,0:lm) : | real(8), intent(IN)
|
チェビシェフ−ガラーキン法 上端ノイマン下端ディリクレ境界条件
動径チェビシェフ係数 -> 動径ガラーキン係数変換
[Source]
function wb_wt(wt)
!
! チェビシェフ−ガラーキン法
! 上端ノイマン下端ディリクレ境界条件
!
! 動径チェビシェフ係数 -> 動径ガラーキン係数変換
!
real(8), intent(IN) :: wt((nm+1)**2,0:lm) !(in) チェビシェフデータ
real(8) :: wb_wt((nm+1)**2,2:lm) !(out) ガラーキン係数
wb_wt = ab_at(wt)
end function wb_wt
Function : |
|
wb_wz((nm+1)**2,2:lm) : | real(8)
|
wz((nm+1)**2,0:km) : | real(8), intent(IN)
|
チェビシェフ−ガラーキン法 上端ノイマン下端ディリクレ境界条件
動径格子点データ -> 動径ガラーキン係数変換
[Source]
function wb_wz(wz)
!
! チェビシェフ−ガラーキン法
! 上端ノイマン下端ディリクレ境界条件
!
! 動径格子点データ -> 動径ガラーキン係数変換
!
real(8), intent(IN) :: wz((nm+1)**2,0:km) !(in) 格子点データ
real(8) :: wb_wz((nm+1)**2,2:lm) !(out) ガラーキン係数
wb_wz = ab_ag(wz)
end function wb_wz
Function : |
|
wd_DRad_wd((nm+1)**2,2:lm) : | real(8)
|
wd((nm+1)**2,2:lm) : | real(8), intent(IN)
|
チェビシェフ−ガラーキン法 両端ディリクレ境界条件
動径微分計算(2 次元データ)
[Source]
function wd_DRad_wd(wd)
!
! チェビシェフ−ガラーキン法
! 両端ディリクレ境界条件
!
! 動径微分計算(2 次元データ)
!
real(8), intent(IN) :: wd((nm+1)**2,2:lm) !(in) ガラーキン係数
real(8) :: wd_DRad_wd((nm+1)**2,2:lm) !(out) 微分ガラーキン
wd_DRad_wd = wd_wt(wt_DRad_wt(wt_wd(wd)))
end function wd_DRad_wd
Function : |
|
wd_wt((nm+1)**2,2:lm) : | real(8)
|
wt((nm+1)**2,0:lm) : | real(8), intent(IN)
|
チェビシェフ−ガラーキン法 両端ディリクレ境界条件
動径チェビシェフ係数 -> 動径ガラーキン係数変換
[Source]
function wd_wt(wt)
!
! チェビシェフ−ガラーキン法
! 両端ディリクレ境界条件
!
! 動径チェビシェフ係数 -> 動径ガラーキン係数変換
!
real(8), intent(IN) :: wt((nm+1)**2,0:lm) !(in) チェビシェフデータ
real(8) :: wd_wt((nm+1)**2,2:lm) !(out) ガラーキン係数
wd_wt = ad_at(wt)
end function wd_wt
Function : |
|
wd_wz((nm+1)**2,2:lm) : | real(8)
|
wz((nm+1)**2,0:km) : | real(8), intent(IN)
|
チェビシェフ−ガラーキン法 両端ディリクレ境界条件
動径格子点データ -> 動径ガラーキン係数変換
[Source]
function wd_wz(wz)
!
! チェビシェフ−ガラーキン法
! 両端ディリクレ境界条件
!
! 動径格子点データ -> 動径ガラーキン係数変換
!
real(8), intent(IN) :: wz((nm+1)**2,0:km) !(in) 格子点データ
real(8) :: wd_wz((nm+1)**2,2:lm) !(out) ガラーキン係数
wd_wz = ad_ag(wz)
end function wd_wz
Function : |
|
wf_DRad_wf((nm+1)**2,2:lm) : | real(8)
|
wf((nm+1)**2,2:lm) : | real(8), intent(IN)
|
チェビシェフ−ガラーキン法 ディリクレノイマン混合型境界条件
動径微分計算(2 次元データ)
[Source]
function wf_DRad_wf(wf)
!
! チェビシェフ−ガラーキン法
! ディリクレノイマン混合型境界条件
!
! 動径微分計算(2 次元データ)
!
real(8), intent(IN) :: wf((nm+1)**2,2:lm) !(in) ガラーキン係数
real(8) :: wf_DRad_wf((nm+1)**2,2:lm) !(out) 微分ガラーキン
wf_DRad_wf = wf_wt(wt_DRad_wt(wt_wf(wf)))
end function wf_DRad_wf
Function : |
|
wf_wt((nm+1)**2,2:lm) : | real(8)
|
wt((nm+1)**2,0:lm) : | real(8), intent(IN)
|
チェビシェフ−ガラーキン法 ディリクレノイマン混合型境界条件
動径チェビシェフ係数 -> 動径ガラーキン係数変換
[Source]
function wf_wt(wt)
!
! チェビシェフ−ガラーキン法
! ディリクレノイマン混合型境界条件
!
! 動径チェビシェフ係数 -> 動径ガラーキン係数変換
!
real(8), intent(IN) :: wt((nm+1)**2,0:lm) !(in) チェビシェフデータ
real(8) :: wf_wt((nm+1)**2,2:lm) !(out) ガラーキン係数
wf_wt = af_at(wt)
end function wf_wt
Function : |
|
wf_wz((nm+1)**2,2:lm) : | real(8)
|
wz((nm+1)**2,0:km) : | real(8), intent(IN)
|
チェビシェフ−ガラーキン法 ディリクレノイマン混合型境界条件
動径格子点データ -> 動径ガラーキン係数変換
[Source]
function wf_wz(wz)
!
! チェビシェフ−ガラーキン法
! ディリクレノイマン混合型境界条件
!
! 動径格子点データ -> 動径ガラーキン係数変換
!
real(8), intent(IN) :: wz((nm+1)**2,0:km) !(in) 格子点データ
real(8) :: wf_wz((nm+1)**2,2:lm) !(out) ガラーキン係数
wf_wz = af_ag(wz)
end function wf_wz
Function : |
|
wh_DRad_wh((nm+1)**2,2:lm) : | real(8)
|
wh((nm+1)**2,2:lm) : | real(8), intent(IN)
|
チェビシェフ−ガラーキン法 ディリクレ・ノイマン混合境界条件(可変係数)
動径微分計算
[Source]
function wh_DRad_wh(wh)
!
! チェビシェフ−ガラーキン法
! ディリクレ・ノイマン混合境界条件(可変係数)
!
! 動径微分計算
!
real(8), intent(IN) :: wh((nm+1)**2,2:lm) !(in) ガラーキン係数
real(8) :: wh_DRad_wh((nm+1)**2,2:lm) !(out) 微分ガラーキン
wh_DRad_wh = wh_wt(wt_DRad_wt(wt_wh(wh)))
end function wh_DRad_wh
Function : |
|
wh_wt((nm+1)**2,2:lm) : | real(8)
|
wt((nm+1)**2,0:lm) : | real(8), intent(IN)
|
チェビシェフ−ガラーキン法
ディリクレ・ノイマン混合境界条件(可変係数)境界条件
動径チェビシェフ係数 -> 動径ガラーキン係数変換
[Source]
function wh_wt(wt)
!
! チェビシェフ−ガラーキン法
! ディリクレ・ノイマン混合境界条件(可変係数)境界条件
!
! 動径チェビシェフ係数 -> 動径ガラーキン係数変換
!
real(8), intent(IN) :: wt((nm+1)**2,0:lm) !(in) チェビシェフデータ
real(8) :: wh_wt((nm+1)**2,2:lm) !(out) ガラーキン係数
wh_wt = ah_at(wt)
end function wh_wt
Function : |
|
wh_wz((nm+1)**2,2:lm) : | real(8)
|
wz((nm+1)**2,0:km) : | real(8), intent(IN)
|
チェビシェフ−ガラーキン法 ディリクレ・ノイマン混合境界条件(可変係数)
動径格子点データ -> 動径ガラーキン係数変換
[Source]
function wh_wz(wz)
!
! チェビシェフ−ガラーキン法
! ディリクレ・ノイマン混合境界条件(可変係数)
!
! 動径格子点データ -> 動径ガラーキン係数変換
!
real(8), intent(IN) :: wz((nm+1)**2,0:km) !(in) 格子点データ
real(8) :: wh_wz((nm+1)**2,2:lm) !(out) ガラーキン係数
wh_wz = ah_ag(wz)
end function wh_wz
Function : |
|
wp_DRad_wp((nm+1)**2,2:lm) : | real(8)
|
wp((nm+1)**2,2:lm) : | real(8), intent(IN)
|
チェビシェフ−ガラーキン法 上端ディリクレ下端ノイマン境界条件
動径微分計算(2 次元データ)
[Source]
function wp_DRad_wp(wp)
!
! チェビシェフ−ガラーキン法
! 上端ディリクレ下端ノイマン境界条件
!
! 動径微分計算(2 次元データ)
!
real(8), intent(IN) :: wp((nm+1)**2,2:lm) !(in) ガラーキン係数
real(8) :: wp_DRad_wp((nm+1)**2,2:lm) !(out) 微分ガラーキン
wp_DRad_wp = wp_wt(wt_DRad_wt(wt_wp(wp)))
end function wp_DRad_wp
Function : |
|
wp_wt((nm+1)**2,2:lm) : | real(8)
|
wt((nm+1)**2,0:lm) : | real(8), intent(IN)
|
チェビシェフ−ガラーキン法 上端ディリクレ下端ノイマン境界条件
動径チェビシェフ係数 -> 動径ガラーキン係数変換
[Source]
function wp_wt(wt)
!
! チェビシェフ−ガラーキン法
! 上端ディリクレ下端ノイマン境界条件
!
! 動径チェビシェフ係数 -> 動径ガラーキン係数変換
!
real(8), intent(IN) :: wt((nm+1)**2,0:lm) !(in) チェビシェフデータ
real(8) :: wp_wt((nm+1)**2,2:lm) !(out) ガラーキン係数
wp_wt = ap_at(wt)
end function wp_wt
Function : |
|
wp_wz((nm+1)**2,2:lm) : | real(8)
|
wz((nm+1)**2,0:km) : | real(8), intent(IN)
|
チェビシェフ−ガラーキン法 上端ディリクレ下端ノイマン境界条件
動径格子点データ -> 動径ガラーキン係数変換
[Source]
function wp_wz(wz)
!
! チェビシェフ−ガラーキン法
! 上端ディリクレ下端ノイマン境界条件
!
! 動径格子点データ -> 動径ガラーキン係数変換
!
real(8), intent(IN) :: wz((nm+1)**2,0:km) !(in) 格子点データ
real(8) :: wp_wz((nm+1)**2,2:lm) !(out) ガラーキン係数
wp_wz = ap_ag(wz)
end function wp_wz
Function : |
|
wq_DRad_wq((nm+1)**2,4:lm) : | real(8)
|
wq((nm+1)**2,4:lm) : | real(8), intent(IN)
|
チェビシェフ−ガラーキン法 非圧縮流体の流線関数・流れポテンシャル用境界条件
X 微分計算(2 次元データ)
[Source]
function wq_DRad_wq(wq)
!
! チェビシェフ−ガラーキン法
! 非圧縮流体の流線関数・流れポテンシャル用境界条件
!
! X 微分計算(2 次元データ)
!
real(8), intent(IN) :: wq((nm+1)**2,4:lm) !(in) ガラーキン係数
real(8) :: wq_DRad_wq((nm+1)**2,4:lm) !(out) 微分ガラーキン
wq_DRad_wq = wq_wt(wt_DRad_wt(wt_wq(wq)))
end function wq_DRad_wq
Function : |
|
wq_LaplaPol2Pol_wt((nm+1)*(nm+1),4:lm) : | real(8)
|
wt_LaplaPolvel((nm+1)*(nm+1),0:lm) : | real(8), intent(IN)
: | (in) ポロイダル速度場ポテンシャルのラプラシアン ▽^2φ
|
|
3 次元球殻領域
球面調和函数展開 + チェビシェフ−ガラーキン法
ポロイダル速度場ポテンシャル φを ▽^2φ から求める
[Source]
function wq_LaplaPol2Pol_wt(wt_LaplaPolvel)
!
! 3 次元球殻領域
! 球面調和函数展開 + チェビシェフ−ガラーキン法
!
! ポロイダル速度場ポテンシャル φを ▽^2φ から求める
!
real(8), intent(IN) :: wt_LaplaPolvel((nm+1)*(nm+1),0:lm)
!(in) ポロイダル速度場ポテンシャルのラプラシアン ▽^2φ
real(8) :: wq_LaplaPol2Pol_wt((nm+1)*(nm+1),4:lm)
!(out) ポロイダル速度場ポテンシャル φ
real(8), allocatable :: LaplaMT(:,:,:)
real(8), allocatable :: LaplaInvMT(:,:,:)
integer, allocatable :: kpvot(:,:)
integer, parameter :: ls=4
real(8) :: wq_work((nm+1)*(nm+1),ls:lm)
real(8) :: wt_work((nm+1)*(nm+1),0:lm)
integer :: k, m, n, l, p
logical :: first = .true.
save LaplaInvMT, kpvot, first
if ( .not. Set_RRFF ) call MessageNotify('E','wq_LaplaPol2Pol_wt', 'at_aq_galerkin_RRFF_module not initialized.')
if ( first ) then
first = .false.
allocate(LaplaMT((nm+1)*(nm+1),0:lm,0:lm))
allocate(LaplaInvMT((nm+1)*(nm+1),ls:lm,ls:lm))
allocate(kpvot((nm+1)*(nm+1),ls:lm))
LaplaMT=0.0D0
do l=0,lm
wt_work = 0.0D0
wt_work(:,l) = 1.0D0
wt_work = wt_Lapla_wt(wt_work)
LaplaMT(:,:,l) = wt_work
enddo
LaplaInvMT=0.0D0
do n=ls,lm
do m=ls,lm
do l=0,lm
do p=0,lm
LaplaInvMT(:,n,m)=LaplaInvMT(:,n,m) +TQ(l,n)*LaplaMT(:,l,p)*alpha(p)*TQ(p,m)
enddo
enddo
enddo
enddo
call LUDecomp(LaplaInvMT,kpvot)
deallocate(LaplaMT)
endif
wq_work=0.0D0
do m=ls,lm
do k=0,lm
wq_work(:,m)=wq_work(:,m) + alpha(k) * beta(k) * wt_LaplaPolvel(:,k)* TQ(k,m)
enddo
enddo
wq_LaplaPol2Pol_wt = LUSolve(LaplaInvMT,kpvot,wq_work)
end function wq_LaplaPol2Pol_wt
Function : |
|
wq_wt((nm+1)**2,4:lm) : | real(8)
|
wt((nm+1)**2,0:lm) : | real(8), intent(IN)
|
チェビシェフ−ガラーキン法 非圧縮流体の流線関数・流れポテンシャル用境界条件
動径チェビシェフ係数 -> 動径ガラーキン係数変換
[Source]
function wq_wt(wt)
!
! チェビシェフ−ガラーキン法
! 非圧縮流体の流線関数・流れポテンシャル用境界条件
!
! 動径チェビシェフ係数 -> 動径ガラーキン係数変換
!
real(8), intent(IN) :: wt((nm+1)**2,0:lm) !(in) チェビシェフデータ
real(8) :: wq_wt((nm+1)**2,4:lm) !(out) ガラーキン係数
wq_wt = aq_at(wt)
end function wq_wt
Function : |
|
wq_wz((nm+1)**2,4:lm) : | real(8)
|
wz((nm+1)**2,0:km) : | real(8), intent(IN)
|
チェビシェフ−ガラーキン法 非圧縮流体の流線関数・流れポテンシャル用境界条件
動径格子点データ -> 動径ガラーキン係数変換
[Source]
function wq_wz(wz)
!
! チェビシェフ−ガラーキン法
! 非圧縮流体の流線関数・流れポテンシャル用境界条件
!
! 動径格子点データ -> 動径ガラーキン係数変換
!
real(8), intent(IN) :: wz((nm+1)**2,0:km) !(in) 格子点データ
real(8) :: wq_wz((nm+1)**2,4:lm) !(out) ガラーキン係数
wq_wz = aq_ag(wz)
end function wq_wz
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_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_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_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_module#wt_DRad_wt
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_module#wt_DivLat_xyz
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_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_module#wt_DivRad_wt
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_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_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_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_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_module#wt_LaplaPol2PolGrid_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_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_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_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_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_module#wt_Potential2Rotation
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_module#wt_Potential2Vector
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_module#wt_QOperator_wt
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_module#wt_RadRotRot_xyz_xyz_xyz
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_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_module#wt_RotRad_wt
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_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_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_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_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_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_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_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_module#wt_VGradV
wt_galerkin_Initial( i, j, k, n, l, r_in, r_out, [DD], [NN], [DN], [ND], [velBC], [MM_cfdx0_ri], [MM_cfdx1_ri], [MM_cfdx0_ro], [MM_cfdx1_ro], [MMex_cfdx0_ri], [MMex_cfdx1_ri], [MMex_cfdx0_ro], [MMex_cfdx1_ro], [np] )
Subroutine : |
|
i : | integer,intent(in)
|
j : | integer,intent(in)
|
k : | integer,intent(in)
|
n : | integer,intent(in)
|
l : | integer,intent(in)
|
r_in : | real(8),intent(in)
|
r_out : | real(8),intent(in)
|
DD : | logical,intent(in),optional
|
NN : | logical,intent(in),optional
|
DN : | logical,intent(in),optional
|
ND : | logical,intent(in),optional
|
velBC : | character(LEN=2),intent(in),optional
|
MM_cfdx0_ri : | real(8),intent(in),optional
|
MM_cfdx1_ri : | real(8),intent(In),optional
|
MM_cfdx0_ro : | real(8),intent(in),optional
|
MM_cfdx1_ro : | real(8),intent(in),optional
|
MMex_cfdx0_ri((n+1)*(n+1)) : | real(8),intent(in),optional
|
MMex_cfdx1_ri((n+1)*(n+1)) : | real(8),intent(in),optional
|
MMex_cfdx0_ro((n+1)*(n+1)) : | real(8),intent(in),optional
|
MMex_cfdx1_ro((n+1)*(n+1)) : | real(8),intent(in),optional
|
np : | integer,intent(in),optional
|
3 次元球殻領域
球面調和函数展開 + チェビシェフ−ガラーキン法
初期化サブルーチン
[Source]
subroutine wt_galerkin_Initial(i,j,k,n,l,r_in,r_out, DD,NN,DN,ND,velBC, MM_cfdx0_ri, MM_cfdx1_ri, MM_cfdx0_ro, MM_cfdx1_ro, MMex_cfdx0_ri, MMex_cfdx1_ri, MMex_cfdx0_ro, MMex_cfdx1_ro, np)
!
! 3 次元球殻領域
! 球面調和函数展開 + チェビシェフ−ガラーキン法
!
! 初期化サブルーチン
!
integer,intent(in) :: i, j, k ! 格子点の設定(経度, 緯度, 動径)
integer,intent(in) :: n, l ! 切断波数の設定(水平, 動径)
integer,intent(in),optional :: np ! OPENMP での最大スレッド数
real(8),intent(in) :: r_in, r_out ! 球殻内外半径
logical,intent(in),optional :: DD ! モジュール読み込みスイッチ
logical,intent(in),optional :: NN ! モジュール読み込みスイッチ
logical,intent(in),optional :: DN ! モジュール読み込みスイッチ
logical,intent(in),optional :: ND ! モジュール読み込みスイッチ
! at_af_galerkin_MM_module 境界条件係数
real(8),intent(in),optional :: MM_cfdx0_ri ! (0階微分@x=xmin)
real(8),intent(In),optional :: MM_cfdx1_ri ! (1階微分@x=xmin)
real(8),intent(in),optional :: MM_cfdx0_ro ! (0階微分@x=xmax)
real(8),intent(in),optional :: MM_cfdx1_ro ! (1階微分@x=xmax)
! at_ah_galerkin_MMex_module 境界条件係数
real(8),intent(in),optional :: MMex_cfdx0_ri((n+1)*(n+1)) ! (0階微分@r=ri)
real(8),intent(in),optional :: MMex_cfdx1_ri((n+1)*(n+1)) ! (1階微分@r=ri)
real(8),intent(in),optional :: MMex_cfdx0_ro((n+1)*(n+1)) ! (0階微分@r=ro)
real(8),intent(in),optional :: MMex_cfdx1_ro((n+1)*(n+1)) ! (1階微分@r=ro)
! at_aq_galerkin_RRFF_module 速度場境界条件
character(LEN=2),intent(in),optional :: velBC ! 境界条件(RR/FF/RF/FR)
!--------------- 引数処理 -----------------
im=i
jm = j
km=k
nm=n
lm=l
if ( present(DD) ) Set_DD = DD
if ( present(NN) ) Set_NN = NN
if ( present(DN) ) Set_DN = DN
if ( present(ND) ) Set_ND = ND
if ( present(MM_cfdx0_ri) .AND.present(MM_cfdx1_ri) .AND. present(MM_cfdx0_ro) .AND.present(MM_cfdx1_ro) ) Set_MM=.true.
if ( present(MMex_cfdx0_ri) .AND.present(MMex_cfdx1_ri) .AND. present(MMex_cfdx0_ro) .AND.present(MMex_cfdx1_ro) ) Set_MMex=.true.
if ( present(velBC) ) Set_RRFF = .true.
!--------------- モジュール初期化 -----------------
if ( present(np) ) then
call wt_Initial(i,j,k,n,l,r_in,r_out, np)
else
call wt_Initial(i,j,k,n,l,r_in,r_out)
endif
if ( Set_DD ) call at_ad_galerkin_DD_Initial(km,lm)
if ( Set_NN ) call at_av_galerkin_NN_Initial(km,lm)
if ( Set_DN ) call at_ap_galerkin_DN_Initial(km,lm)
if ( Set_ND ) call at_ab_galerkin_ND_Initial(km,lm)
if ( Set_MM ) call at_af_galerkin_MM_Initial (km,lm, MM_cfdx0_ro, MM_cfdx1_ro, MM_cfdx0_ri, MM_cfdx1_ri )
if ( Set_MMex ) call at_ah_galerkin_MMex_Initial (km,lm,(nm+1)*(nm+1), MMex_cfdx0_ro, MMex_cfdx1_ro, MMex_cfdx0_ri, MMex_cfdx1_ri )
if ( Set_RRFF ) call at_aq_galerkin_RRFF_Initial(km,lm,velBC)
call MessageNotify('M','wt_galerkin_initial','wt_galerkin_module (2013/08/24) is initialized')
end subroutine wt_galerkin_initial
Function : |
|
wt_wb((nm+1)**2,0:lm) : | real(8)
|
wb((nm+1)**2,2:lm) : | real(8), intent(IN)
|
チェビシェフ−ガラーキン法 上端ノイマン下端ディリクレ境界条件
動径ガラーキン係数変換 -> 動径チェビシェフ係数
[Source]
function wt_wb(wb)
!
! チェビシェフ−ガラーキン法
! 上端ノイマン下端ディリクレ境界条件
!
! 動径ガラーキン係数変換 -> 動径チェビシェフ係数
!
real(8), intent(IN) :: wb((nm+1)**2,2:lm)
real(8) :: wt_wb((nm+1)**2,0:lm)
wt_wb = at_ab(wb)
end function wt_wb
Function : |
|
wt_wd((nm+1)**2,0:lm) : | real(8)
|
wd((nm+1)**2,2:lm) : | real(8), intent(IN)
|
チェビシェフ−ガラーキン法 両端ディリクレ境界条件
動径ガラーキン係数変換 -> 動径チェビシェフ係数
[Source]
function wt_wd(wd)
!
! チェビシェフ−ガラーキン法
! 両端ディリクレ境界条件
!
! 動径ガラーキン係数変換 -> 動径チェビシェフ係数
!
real(8), intent(IN) :: wd((nm+1)**2,2:lm)
real(8) :: wt_wd((nm+1)**2,0:lm)
wt_wd = at_ad(wd)
end function wt_wd
Function : |
|
wt_wf((nm+1)**2,0:lm) : | real(8)
|
wf((nm+1)**2,2:lm) : | real(8), intent(IN)
|
チェビシェフ−ガラーキン法 ディリクレノイマン混合型境界条件
動径ガラーキン係数変換 -> 動径チェビシェフ係数
[Source]
function wt_wf(wf)
!
! チェビシェフ−ガラーキン法
! ディリクレノイマン混合型境界条件
!
! 動径ガラーキン係数変換 -> 動径チェビシェフ係数
!
real(8), intent(IN) :: wf((nm+1)**2,2:lm)
real(8) :: wt_wf((nm+1)**2,0:lm)
wt_wf = at_af(wf)
end function wt_wf
Function : |
|
wt_wh((nm+1)**2,0:lm) : | real(8)
|
wh((nm+1)**2,2:lm) : | real(8), intent(IN)
|
チェビシェフ−ガラーキン法 ディリクレ・ノイマン混合境界条件(可変係数)
動径ガラーキン係数変換 -> 動径チェビシェフ係数
[Source]
function wt_wh(wh)
!
! チェビシェフ−ガラーキン法
! ディリクレ・ノイマン混合境界条件(可変係数)
!
! 動径ガラーキン係数変換 -> 動径チェビシェフ係数
!
real(8), intent(IN) :: wh((nm+1)**2,2:lm)
real(8) :: wt_wh((nm+1)**2,0:lm)
wt_wh = at_ah(wh)
end function wt_wh
Function : |
|
wt_wp((nm+1)**2,0:lm) : | real(8)
|
wp((nm+1)**2,2:lm) : | real(8), intent(IN)
|
チェビシェフ−ガラーキン法 上端ディリクレ下端ノイマン境界条件
動径ガラーキン係数変換 -> 動径チェビシェフ係数
[Source]
function wt_wp(wp)
!
! チェビシェフ−ガラーキン法
! 上端ディリクレ下端ノイマン境界条件
!
! 動径ガラーキン係数変換 -> 動径チェビシェフ係数
!
real(8), intent(IN) :: wp((nm+1)**2,2:lm)
real(8) :: wt_wp((nm+1)**2,0:lm)
wt_wp = at_ap(wp)
end function wt_wp
Function : |
|
wt_wq((nm+1)**2,0:lm) : | real(8)
|
wq((nm+1)**2,4:lm) : | real(8), intent(IN)
|
チェビシェフ−ガラーキン法 非圧縮流体の流線関数・流れポテンシャル用境界条件
動径ガラーキン係数変換 -> 動径チェビシェフ係数
[Source]
function wt_wq(wq)
!
! チェビシェフ−ガラーキン法
! 非圧縮流体の流線関数・流れポテンシャル用境界条件
!
! 動径ガラーキン係数変換 -> 動径チェビシェフ係数
!
real(8), intent(IN) :: wq((nm+1)**2,4:lm)
real(8) :: wt_wq((nm+1)**2,0:lm)
wt_wq = at_aq(wq)
end function wt_wq
Function : |
|
wt_wv((nm+1)**2,0:lm) : | real(8)
|
wv((nm+1)**2,2:lm) : | real(8), intent(IN)
|
チェビシェフ−ガラーキン法 両端ノイマン境界条件
動径ガラーキン係数変換 -> 動径チェビシェフ係数
[Source]
function wt_wv(wv)
!
! チェビシェフ−ガラーキン法
! 両端ノイマン境界条件
!
! 動径ガラーキン係数変換 -> 動径チェビシェフ係数
!
real(8), intent(IN) :: wv((nm+1)**2,2:lm)
real(8) :: wt_wv((nm+1)**2,0:lm)
wt_wv = at_av(wv)
end function wt_wv
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_module#wt_wz
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_module#wt_xyz
Function : |
|
wv_DRad_wv((nm+1)**2,2:lm) : | real(8)
|
wv((nm+1)**2,2:lm) : | real(8), intent(IN)
|
チェビシェフ−ガラーキン法 両端ノイマン境界条件
動径微分計算(2 次元データ)
[Source]
function wv_DRad_wv(wv)
!
! チェビシェフ−ガラーキン法
! 両端ノイマン境界条件
!
! 動径微分計算(2 次元データ)
!
real(8), intent(IN) :: wv((nm+1)**2,2:lm) !(in) ガラーキン係数
real(8) :: wv_DRad_wv((nm+1)**2,2:lm) !(out) 微分ガラーキン
wv_DRad_wv = wv_wt(wt_DRad_wt(wt_wv(wv)))
end function wv_DRad_wv
Function : |
|
wv_wt((nm+1)**2,2:lm) : | real(8)
|
wt((nm+1)**2,0:lm) : | real(8), intent(IN)
|
チェビシェフ−ガラーキン法 両端ノイマン境界条件
動径チェビシェフ係数 -> 動径ガラーキン係数変換
[Source]
function wv_wt(wt)
!
! チェビシェフ−ガラーキン法
! 両端ノイマン境界条件
!
! 動径チェビシェフ係数 -> 動径ガラーキン係数変換
!
real(8), intent(IN) :: wt((nm+1)**2,0:lm) !(in) チェビシェフデータ
real(8) :: wv_wt((nm+1)**2,2:lm) !(out) ガラーキン係数
wv_wt = av_at(wt)
end function wv_wt
Function : |
|
wv_wz((nm+1)**2,2:lm) : | real(8)
|
wz((nm+1)**2,0:km) : | real(8), intent(IN)
|
チェビシェフ−ガラーキン法 両端ノイマン境界条件
動径格子点データ -> 動径ガラーキン係数変換
[Source]
function wv_wz(wz)
!
! チェビシェフ−ガラーキン法
! 両端ノイマン境界条件
!
! 動径格子点データ -> 動径ガラーキン係数変換
!
real(8), intent(IN) :: wz((nm+1)**2,0:km) !(in) 格子点データ
real(8) :: wv_wz((nm+1)**2,2:lm) !(out) ガラーキン係数
wv_wz = av_ag(wz)
end function wv_wz
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_module#wz_LaplaPol2Pol_wz
Function : |
|
wz_wb((nm+1)**2,0:km) : | real(8)
|
wb((nm+1)**2,2:lm) : | real(8), intent(IN)
|
チェビシェフ−ガラーキン法 上端ノイマン下端ディリクレ境界条件
動径ガラーキン係数変換 -> 動径格子点データ
[Source]
function wz_wb(wb)
!
! チェビシェフ−ガラーキン法
! 上端ノイマン下端ディリクレ境界条件
!
! 動径ガラーキン係数変換 -> 動径格子点データ
!
real(8), intent(IN) :: wb((nm+1)**2,2:lm) !(in) ガラーキン係数
real(8) :: wz_wb((nm+1)**2,0:km) !(out) 格子点データ
wz_wb = ag_ab(wb)
end function wz_wb
Function : |
|
wz_wd((nm+1)**2,0:km) : | real(8)
|
wd((nm+1)**2,2:lm) : | real(8), intent(IN)
|
チェビシェフ−ガラーキン法 両端ディリクレ境界条件
動径ガラーキン係数変換 -> 動径格子点データ
[Source]
function wz_wd(wd)
!
! チェビシェフ−ガラーキン法
! 両端ディリクレ境界条件
!
! 動径ガラーキン係数変換 -> 動径格子点データ
!
real(8), intent(IN) :: wd((nm+1)**2,2:lm) !(in) ガラーキン係数
real(8) :: wz_wd((nm+1)**2,0:km) !(out) 格子点データ
wz_wd = ag_ad(wd)
end function wz_wd
Function : |
|
wz_wf((nm+1)**2,0:km) : | real(8)
|
wf((nm+1)**2,2:lm) : | real(8), intent(IN)
|
チェビシェフ−ガラーキン法 ディリクレノイマン混合型境界条件
動径ガラーキン係数変換 -> 動径格子点データ
[Source]
function wz_wf(wf)
!
! チェビシェフ−ガラーキン法
! ディリクレノイマン混合型境界条件
!
! 動径ガラーキン係数変換 -> 動径格子点データ
!
real(8), intent(IN) :: wf((nm+1)**2,2:lm) !(in) ガラーキン係数
real(8) :: wz_wf((nm+1)**2,0:km) !(out) 格子点データ
wz_wf = ag_af(wf)
end function wz_wf
Function : |
|
wz_wh((nm+1)**2,0:km) : | real(8)
|
wh((nm+1)**2,2:lm) : | real(8), intent(IN)
|
チェビシェフ−ガラーキン法 ディリクレ・ノイマン混合境界条件(可変係数)
動径ガラーキン係数変換 -> 動径格子点データ
[Source]
function wz_wh(wh)
!
! チェビシェフ−ガラーキン法
! ディリクレ・ノイマン混合境界条件(可変係数)
!
! 動径ガラーキン係数変換 -> 動径格子点データ
!
real(8), intent(IN) :: wh((nm+1)**2,2:lm) !(in) ガラーキン係数
real(8) :: wz_wh((nm+1)**2,0:km) !(out) 格子点データ
wz_wh = ag_ah(wh)
end function wz_wh
Function : |
|
wz_wp((nm+1)**2,0:km) : | real(8)
|
wp((nm+1)**2,2:lm) : | real(8), intent(IN)
|
チェビシェフ−ガラーキン法 上端ディリクレ下端ノイマン境界条件
動径ガラーキン係数変換 -> 動径格子点データ
[Source]
function wz_wp(wp)
!
! チェビシェフ−ガラーキン法
! 上端ディリクレ下端ノイマン境界条件
!
! 動径ガラーキン係数変換 -> 動径格子点データ
!
real(8), intent(IN) :: wp((nm+1)**2,2:lm) !(in) ガラーキン係数
real(8) :: wz_wp((nm+1)**2,0:km) !(out) 格子点データ
wz_wp = ag_ap(wp)
end function wz_wp
Function : |
|
wz_wq((nm+1)**2,0:km) : | real(8)
|
wq((nm+1)**2,4:lm) : | real(8), intent(IN)
|
チェビシェフ−ガラーキン法 非圧縮流体の流線関数・流れポテンシャル用境界条件
動径ガラーキン係数変換 -> 動径格子点データ
[Source]
function wz_wq(wq)
!
! チェビシェフ−ガラーキン法
! 非圧縮流体の流線関数・流れポテンシャル用境界条件
!
! 動径ガラーキン係数変換 -> 動径格子点データ
!
real(8), intent(IN) :: wq((nm+1)**2,4:lm) !(in) ガラーキン係数
real(8) :: wz_wq((nm+1)**2,0:km) !(out) 格子点データ
wz_wq = ag_aq(wq)
end function wz_wq
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_module#wz_wt
Function : |
|
wz_wv((nm+1)**2,0:km) : | real(8)
|
wv((nm+1)**2,2:lm) : | real(8), intent(IN)
|
チェビシェフ−ガラーキン法 両端ノイマン境界条件
動径ガラーキン係数変換 -> 動径格子点データ
[Source]
function wz_wv(wv)
!
! チェビシェフ−ガラーキン法
! 両端ノイマン境界条件
!
! 動径ガラーキン係数変換 -> 動径格子点データ
!
real(8), intent(IN) :: wv((nm+1)**2,2:lm) !(in) ガラーキン係数
real(8) :: wz_wv((nm+1)**2,0:km) !(out) 格子点データ
wz_wv = ag_av(wv)
end function wz_wv
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_module#wz_xyz
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_module#x_AvrLatRad_xyz
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_module#x_AvrRad_xz
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_module#x_IntLatRad_xyz
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_module#x_IntRad_xz
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_module#xy_AvrRad_xyz
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_module#xy_IntRad_xyz
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_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_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_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_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_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_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_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_module#xyz_wz
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_module#xz_AvrLat_xyz
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_module#xz_IntLat_xyz
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_module#y_AvrLonRad_xyz
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_module#y_AvrRad_yz
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_module#y_IntLonRad_xyz
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_module#y_IntRad_yz
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_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_module#yz_IntLon_xyz
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_module#z_AvrLat_yz
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_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_module#z_AvrLon_xz
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_module#z_IntLat_yz
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_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_module#z_IntLon_xz
z_b( b_data ) result(g_b)
Function : |
|
g_b(0:im) : | real(8)
|
b_data(ks:km) : | real(8), intent(IN)
|
チェビシェフ−ガラーキン法 片端ノイマン片端ディリクレ境界条件
ガラーキン係数 -> 格子点データ変換(1次元データ)
Original external subprogram is at_ab_galerkin_ND#g_b
z_d( d_data ) result(g_d)
Function : |
|
g_d(0:im) : | real(8)
|
d_data(ks:km) : | real(8), intent(IN)
|
チェビシェフ−ガラーキン法 両端ディリクレ境界条件
ガラーキン係数 -> 格子点データ変換(1次元データ)
Original external subprogram is at_ad_galerkin_DD#g_d
z_f( f_data ) result(g_f)
Function : |
|
g_f(0:im) : | real(8)
|
f_data(ks:km) : | real(8), intent(IN)
|
チェビシェフ−ガラーキン法 ディリクレ・ノイマン混合境界条件
ガラーキン係数 -> 格子点データ変換(1次元データ)
Original external subprogram is at_af_galerkin_MM#g_f
z_p( p_data ) result(g_p)
Function : |
|
g_p(0:im) : | real(8)
|
p_data(ks:km) : | real(8), intent(IN)
|
チェビシェフ−ガラーキン法 片端ディリクレ片端ノイマン境界条件
ガラーキン係数 -> 格子点データ変換(1次元データ)
Original external subprogram is at_ap_galerkin_DN#g_p
z_q( q_data ) result(g_q)
Function : |
|
g_q(0:im) : | real(8)
|
q_data(ks:km) : | real(8), intent(in)
|
チェビシェフ−ガラーキン法 非圧縮流体の流線関数・流れポテンシャル用
ガラーキン係数 -> 格子点データ変換(1次元データ)
Original external subprogram is at_aq_galerkin_RRFF#g_q
z_v( v_data ) result(g_v)
Function : |
|
g_v(0:im) : | real(8)
|
v_data(ks:km) : | real(8), intent(IN)
|
チェビシェフ−ガラーキン法 両端ノイマン境界条件
ガラーキン係数 -> 格子点データ変換(1次元データ)
Original external subprogram is at_av_galerkin_NN#g_v