Class | wt_galerkin_module |
In: |
src/wt_galerkin_module.f90
|
Function : | |||
AvrLatRad_yz : | real(8)
| ||
yz : | real(8), dimension(jm,0:km), intent(in)
|
緯度動径(子午面)積分
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
Function : | |||
AvrLonLatRad_xyz : | real(8)
| ||
xyz : | real(8), dimension(im,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
Function : | |||
AvrLonRad_xz : | real(8)
| ||
xz : | real(8), dimension(im,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
Function : | |||
AvrRad_z : | real(8)
| ||
z : | real(8), dimension(im,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
Function : | |||
IntLatRad_yz : | real(8)
| ||
yz : | real(8), dimension(jm,0:km), intent(in)
|
2 次元(YZ)格子点データの緯度動径積分(子午面)および平均
2 次元データ f(φ,r) に対して ∫f(φ,r) r^2cosφ dφdr を計算する.
Original external subprogram is wt_module#IntLatRad_yz
Function : | |||
IntLonLatRad_xyz : | real(8)
| ||
xyz : | real(8), dimension(im,jm,0:km), intent(in)
|
緯度経度動径(全球)積分
3 次元格子点データの緯度経度動径(全球)積分
3 次元データ f(λ,φ,r) に対して
∫f(λ,φ,r) r^2cosφ dλdφdr
を計算する.
Original external subprogram is wt_module#IntLonLatRad_xyz
Function : | |||
IntLonRad_xz : | real(8)
| ||
xz : | real(8), dimension(im,0:km), intent(in)
|
経度動径(緯度円)積分
2 次元(XZ)格子点データの経度動径積分
2 次元データ f(λ,r) に対して∫f(λ,r) r^2dλdr を計算する.
Original external subprogram is wt_module#IntLonRad_xz
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
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
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
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
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
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
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
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
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
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
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
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
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
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
Function : | |||
g_q(0:im) : | real(8)
| ||
q_data(ks:km) : | real(8), intent(IN)
|
チェビシェフ−ガラーキン法 非圧縮流体の流線関数・流れポテンシャル用
ガラーキン係数 -> 格子点データ変換(1次元データ)
Original external subprogram is at_aq_galerkin_RRSS#g_q
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
Function : | |||
nmz_PoloidalEnergySpectrum_wt : | real(8), dimension(0:nm,-nm:nm,0:km)
| ||
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
Function : | |||
nmz_ToroidalEnergySpectrum_wt : | real(8), dimension(0:nm,-nm:nm,0:km)
| ||
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
Function : | |||
nz_PoloidalEnergySpectrum_wt : | real(8), dimension(0:nm,0:km)
| ||
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
Function : | |||
nz_ToroidalEnergySpectrum_wt : | real(8), dimension(0:nm,0:km)
| ||
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 と計算される.
が球殻内での全エネルギーに等しい.
Original external subprogram is wt_module#nz_ToroidalEnergySpectrum_wt
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
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
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
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_RRSS#q_Dx_q
Function : | |||
q_g(ks:km) : | real(8)
| ||
g_data(0:im) : | real(8), intent(IN)
|
チェビシェフ−ガラーキン法 非圧縮流体の流線関数・流れポテンシャル用
格子点データ -> ガラーキン係数変換(1次元データ)
Original external subprogram is at_aq_galerkin_RRSS#q_g
Function : | |||
q_t(ks:km) : | real(8)
| ||
t_data(0:km) : | real(8), intent(IN)
|
チェビシェフ−ガラーキン法 非圧縮流体の流線関数・流れポテンシャル用
チェビシェフ係数 -> ガラーキン係数変換(1次元データ)
Original external subprogram is at_aq_galerkin_RRSS#q_t
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
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
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
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
Function : | |||
t_q(0:km) : | real(8)
| ||
q_data(ks:km) : | real(8), intent(IN)
|
チェビシェフ−ガラーキン法 非圧縮流体の流線関数・流れポテンシャル用
ガラーキン係数 -> チェビシェフ係数変換(1次元データ)
Original external subprogram is at_aq_galerkin_RRSS#t_q
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
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
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 : | |||
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
Function : | |||
ab_Dx_ab(size(ab_data,1),ks:km) : | real(8)
| ||
ab_data(:,ks:) : | real(8), intent(IN)
|
チェビシェフ−ガラーキン法 片端ノイマン片端ディリクレ境界条件
X 微分計算(2 次元)
Original external subprogram is at_ab_galerkin_ND#ab_Dx_ab
Function : | |||
ab_ag(size(ag_data,1),ks:km) : | real(8)
| ||
ag_data(:,0:) : | real(8), intent(IN)
|
チェビシェフ−ガラーキン法 片端ノイマン片端ディリクレ境界条件
格子点データ -> ガラーキン係数変換(2次元データ)
Original external subprogram is at_ab_galerkin_ND#ab_ag
Function : | |||
ab_at(size(at_data,1),ks:km) : | real(8)
| ||
at_data(:,0:) : | real(8), intent(IN)
|
チェビシェフ−ガラーキン法 片端ノイマン片端ディリクレ境界条件
チェビシェフ係数 -> ガラーキン係数変換(2次元データ)
Original external subprogram is at_ab_galerkin_ND#ab_at
Function : | |||
ad_Dx_ad(size(ad_data,1),ks:km) : | real(8)
| ||
ad_data(:,ks:) : | real(8), intent(IN)
|
チェビシェフ−ガラーキン法 両端ディリクレ境界条件
X 微分計算(2 次元データ)
Original external subprogram is at_ad_galerkin_DD#ad_Dx_ad
Function : | |||
ad_ag(size(ag_data,1),ks:km) : | real(8)
| ||
ag_data(:,0:) : | real(8), intent(IN)
|
チェビシェフ−ガラーキン法 両端ディリクレ境界条件
格子点データ -> ガラーキン係数変換(2次元データ)
Original external subprogram is at_ad_galerkin_DD#ad_ag
Function : | |||
ad_at(size(at_data,1),ks:km) : | real(8)
| ||
at_data(:,0:) : | real(8), intent(IN)
|
チェビシェフ−ガラーキン法 両端ディリクレ境界条件
チェビシェフ係数 -> ガラーキン係数変換(2次元データ)
Original external subprogram is at_ad_galerkin_DD#ad_at
Function : | |||
af_Dx_af(size(af_data,1),ks:km) : | real(8)
| ||
af_data(:,ks:) : | real(8), intent(IN)
|
チェビシェフ−ガラーキン法 ディリクレ・ノイマン混合境界条件
X 微分計算(2 次元)
Original external subprogram is at_af_galerkin_MM#af_Dx_af
Function : | |||
af_ag(size(ag_data,1),ks:km) : | real(8)
| ||
ag_data(:,0:) : | real(8), intent(IN)
|
チェビシェフ−ガラーキン法 ディリクレ・ノイマン混合境界条件
格子点データ -> ガラーキン係数変換(2次元データ)
Original external subprogram is at_af_galerkin_MM#af_ag
Function : | |||
af_at(size(at_data,1),ks:km) : | real(8)
| ||
at_data(:,0:) : | real(8), intent(IN)
|
チェビシェフ−ガラーキン法 ディリクレ・ノイマン混合境界条件
チェビシェフ係数 -> ガラーキン係数変換(2次元データ)
Original external subprogram is at_af_galerkin_MM#af_at
Function : | |||
ag_ab(size(ab_data,1),0:im) : | real(8)
| ||
ab_data(:,ks:) : | real(8), intent(IN)
|
チェビシェフ−ガラーキン法 片端ノイマン片端ディリクレ境界条件
ガラーキン係数 -> 格子点データ変換(2次元データ)
Original external subprogram is at_ab_galerkin_ND#ag_ab
Function : | |||
ag_ad(size(ad_data,1),0:im) : | real(8)
| ||
ad_data(:,ks:) : | real(8), intent(IN)
|
チェビシェフ−ガラーキン法 両端ディリクレ境界条件
ガラーキン係数 -> 格子点データ変換(2次元データ)
Original external subprogram is at_ad_galerkin_DD#ag_ad
Function : | |||
ag_af(size(af_data,1),0:im) : | real(8)
| ||
af_data(:,ks:) : | real(8), intent(IN)
|
チェビシェフ−ガラーキン法 ディリクレ・ノイマン混合境界条件
ガラーキン係数 -> 格子点データ変換(2次元データ)
Original external subprogram is at_af_galerkin_MM#ag_af
Function : | |||
ag_ah(size(ah_data,1),0:im) : | real(8)
| ||
ah_data(:,ks:) : | real(8), intent(IN)
|
チェビシェフ−ガラーキン法 ディリクレ・ノイマン混合境界条件
ガラーキン係数 -> 格子点データ変換(2次元データ)
Original external subprogram is at_ah_galerkin_MMex#ag_ah
Function : | |||
ag_ap(size(ap_data,1),0:im) : | real(8)
| ||
ap_data(:,ks:) : | real(8), intent(IN)
|
チェビシェフ−ガラーキン法 片端ディリクレ片端ノイマン境界条件
ガラーキン係数 -> 格子点データ変換(2次元データ)
Original external subprogram is at_ap_galerkin_DN#ag_ap
Function : | |||
ag_aq(size(aq_data,1),0:im) : | real(8)
| ||
aq_data(:,ks:) : | real(8), intent(IN)
|
チェビシェフ−ガラーキン法 非圧縮流体の流線関数・流れポテンシャル用
ガラーキン係数 -> 格子点データ変換(2次元データ)
Original external subprogram is at_aq_galerkin_RRSS#ag_aq
Function : | |||
ag_av(size(av_data,1),0:im) : | real(8)
| ||
av_data(:,ks:) : | real(8), intent(IN)
|
チェビシェフ−ガラーキン法 両端ノイマン境界条件
ガラーキン係数 -> 格子点データ変換(2次元データ)
Original external subprogram is at_av_galerkin_NN#ag_av
Function : | |||
ah_Dx_ah(size(ah_data,1),ks:km) : | real(8)
| ||
ah_data(:,ks:) : | real(8), intent(IN)
|
チェビシェフ−ガラーキン法 ディリクレ・ノイマン混合境界条件
X 微分計算(2 次元)
Original external subprogram is at_ah_galerkin_MMex#ah_Dx_ah
Function : | |||
ah_ag(size(ag_data,1),ks:km) : | real(8)
| ||
ag_data(:,0:) : | real(8), intent(IN)
|
チェビシェフ−ガラーキン法 ディリクレ・ノイマン混合境界条件
格子点データ -> ガラーキン係数変換(2次元データ)
Original external subprogram is at_ah_galerkin_MMex#ah_ag
Function : | |||
ah_at(size(at_data,1),ks:km) : | real(8)
| ||
at_data(:,0:) : | real(8), intent(IN)
|
チェビシェフ−ガラーキン法 ディリクレ・ノイマン混合境界条件
チェビシェフ係数 -> ガラーキン係数変換(2次元データ)
Original external subprogram is at_ah_galerkin_MMex#ah_at
Function : | |||
ap_Dx_ap(size(ap_data,1),ks:km) : | real(8)
| ||
ap_data(:,ks:) : | real(8), intent(IN)
|
チェビシェフ−ガラーキン法 片端ディリクレ片端ノイマン境界条件
X 微分計算(2 次元)
Original external subprogram is at_ap_galerkin_DN#ap_Dx_ap
Function : | |||
ap_ag(size(ag_data,1),ks:km) : | real(8)
| ||
ag_data(:,0:) : | real(8), intent(IN)
|
チェビシェフ−ガラーキン法 片端ディリクレ片端ノイマン境界条件
格子点データ -> ガラーキン係数変換(2次元データ)
Original external subprogram is at_ap_galerkin_DN#ap_ag
Function : | |||
ap_at(size(at_data,1),ks:km) : | real(8)
| ||
at_data(:,0:) : | real(8), intent(IN)
|
チェビシェフ−ガラーキン法 片端ディリクレ片端ノイマン境界条件
チェビシェフ係数 -> ガラーキン係数変換(2次元データ)
Original external subprogram is at_ap_galerkin_DN#ap_at
Function : | |||
aq_Dx_aq(size(aq_data,1),ks:km) : | real(8)
| ||
aq_data(:,ks:) : | real(8), intent(IN)
|
チェビシェフ−ガラーキン法 非圧縮流体の流線関数・流れポテンシャル用
X 微分計算(2 次元)
Original external subprogram is at_aq_galerkin_RRSS#aq_Dx_aq
Function : | |||
wq_LaplaPol2Pol_wt((nm+1)*(nm+1),4:lm) : | real(8)
| ||
wt_LaplaPolvel((nm+1)*(nm+1),0:lm) : | real(8), intent(IN)
|
3 次元球殻領域 球面調和函数展開 + チェビシェフ−ガラーキン法 ポロイダル速度場ポテンシャル φを ▽^2φ から求める
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_RRSS ) call MessageNotify('E','wq_LaplaPol2Pol_wt', 'at_aq_galerkin_RRSS_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.0 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.0 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 : | |||
aq_ag(size(ag_data,1),ks:km) : | real(8)
| ||
ag_data(:,0:) : | real(8), intent(IN)
|
チェビシェフ−ガラーキン法 非圧縮流体の流線関数・流れポテンシャル用
格子点データ -> ガラーキン係数変換(2次元データ)
Original external subprogram is at_aq_galerkin_RRSS#aq_ag
Function : | |||
aq_at(size(at_data,1),ks:km) : | real(8)
| ||
at_data(:,0:) : | real(8), intent(IN)
|
チェビシェフ−ガラーキン法 非圧縮流体の流線関数・流れポテンシャル用
チェビシェフ係数 -> ガラーキン係数変換(2次元データ)
Original external subprogram is at_aq_galerkin_RRSS#aq_at
Subroutine : | |||
wt : | real(8), dimension((nm+1)*(nm+1),0:lm),intent(inout)
| ||
values : | real(8), dimension((nm+1)*(nm+1),2), intent(in), optional
| ||
cond : | character(len=2), intent(in), optional
|
スペクトルデータにディリクレ・ノイマン境界条件を適用する Chebyshev 空間での境界条件適用(タウ法)
チェビシェフ空間において境界条件を満たすべく高次の係数を 定める方法をとっている(タウ法).
Original external subprogram is wt_module#wt_Boundaries
Subroutine : | |||
wt : | real(8), dimension((nm+1)*(nm+1),0:lm),intent(inout)
| ||
values : | real(8), dimension((nm+1)*(nm+1),2), intent(in), optional
| ||
cond : | character(len=2), intent(in), optional
|
スペクトルデータにディリクレ・ノイマン境界条件を適用する 実空間での境界条件適用
鉛直実格子点空間において内部領域の値と境界条件を満たすように 条件を課している(選点法). このルーチンを用いるためには wt_Initial にて設定するチェビシェフ切断波数(lm)と鉛直格子点数(km)を 等しくしておく必要がある.
Original external subprogram is wt_module#wt_BoundariesGrid
Subroutine : | |||
wt : | real(8), dimension((nm+1)*(nm+1),0:lm),intent(inout)
| ||
values : | real(8), dimension((nm+1)*(nm+1),2), intent(in), optional
| ||
cond : | character(len=2), intent(in), optional
|
スペクトルデータにディリクレ・ノイマン境界条件を適用する Chebyshev 空間での境界条件適用(タウ法)
チェビシェフ空間において境界条件を満たすべく高次の係数を 定める方法をとっている(タウ法).
Original external subprogram is wt_module#wt_BoundariesTau
Function : | |||
wt_DRad_wt : | real(8), dimension((nm+1)*(nm+1),0:lm)
| ||
wt : | real(8), dimension((nm+1)*(nm+1),0:lm), intent(in)
|
入力スペクトルデータに動径微分 ∂/∂r を作用する.
スペクトルデータの動径微分とは, 対応する格子点データに動径微分を 作用させたデータのスペクトル変換のことである.
Original external subprogram is wt_module#wt_DRad_wt
Function : | |||
wt_DivLat_xyz : | real(8), dimension((nm+1)*(nm+1),0:lm)
| ||
xyz : | real(8), dimension(im,jm,0:km), intent(in)
|
格子データに発散型緯度微分 1/rcosφ・∂(f cosφ)/∂φ を 作用させたスペクトルデータを返す.
Original external subprogram is wt_module#wt_DivLat_xyz
Function : | |||
wt_DivLon_xyz : | real(8), dimension((nm+1)*(nm+1),0:lm)
| ||
xyz : | real(8), dimension(im,jm,0:km), intent(in)
|
格子点データに発散型経度微分 1/rcosφ・∂/∂λ を作用させた スペクトルデータを返す.
Original external subprogram is wt_module#wt_DivLon_xyz
Function : | |||
wt_DivRad_wt : | real(8), dimension((nm+1)*(nm+1),0:lm)
| ||
wt : | real(8), dimension((nm+1)*(nm+1),0:lm), intent(in)
|
入力スペクトルデータに発散型動径微分
1/r^2 ∂/∂r (r^2 .)= ∂/∂r + 2/r
を作用する.
スペクトルデータの発散型動径微分とは, 対応する格子点データに 発散型動径微分を作用させたデータのスペクトル変換のことである.
Original external subprogram is wt_module#wt_DivRad_wt
Function : | |||
wt_Div_xyz_xyz_xyz : | real(8), dimension((nm+1)*(nm+1),0:lm)
| ||
xyz_Vlon : | real(8), dimension(im,jm,0:km), intent(in)
| ||
xyz_Vlat : | real(8), dimension(im,jm,0:km), intent(in)
| ||
xyz_Vrad : | real(8), dimension(im,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
Function : | |||
wt_KxRGrad_wt : | real(8), dimension((nm+1)*(nm+1),0:lm)
| ||
wt : | real(8), dimension((nm+1)*(nm+1),0:lm), intent(in)
|
入力スペクトルデータに経度微分 k×r・▽ = ∂/∂λを作用する.
Original external subprogram is wt_module#wt_KxRGrad_wt
Function : | |||
wt_L2Inv_wt : | real(8), dimension((nm+1)*(nm+1),0:lm)
| ||
wt : | real(8), dimension((nm+1)*(nm+1),0:lm), intent(in)
|
入力スペクトルデータに L^2 演算子の逆演算(-逆水平ラプラシアン)を 作用する.
スペクトルデータに L^2 演算子を作用させる関数 wt_L2_wt の逆計算を 行う関数である.
Original external subprogram is wt_module#wt_L2Inv_wt
Function : | |||
wt_L2_wt : | real(8), dimension((nm+1)*(nm+1),0:lm)
| ||
wt : | real(8), dimension((nm+1)*(nm+1),0:lm), intent(in)
|
入力スペクトルデータに L^2 演算子(=-水平ラプラシアン)を作用する.
L^2 演算子は単位球面上の水平ラプラシアンの逆符号にあたる.
入力スペクトルデ ータに対応する格子点データに演算子 L^2 = -1/cos^2φ・∂^2/∂λ^2 - 1/cosφ・∂/∂φ(cosφ∂/∂φ)
を作用させたデータのスペクトル変換が返される.
Original external subprogram is wt_module#wt_L2_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
|
速度ポロイダルポテンシャルΦを▽^2Φから計算する. チェビシェフ格子点空間で境界条件を適用している.
この関数を用いるためには wt_Initial にて設定する チェビシェフ切断波数(lm)と鉛直格子点数(km)を等しく しておく必要がある.
速度ポロイダルポテンシャルΦを f = ▽^2Φから定める式は
▽^2Φ = f Φ = const. at boundaries. ∂Φ/∂r = 0 at boundaries (粘着条件) or ∂^2Φ/∂r^2 = 0 at boundaries (応力なし条件)
最初に呼ばれるときの境界条件で以後計算される(要仕様変更).
最終的にチェビシェフ係数の解が欲しい場合には, wz_LaplaPol2Pol_wz に 比べてチェビシェフ — 格子点変換が 1 回分少なくて済む.
Original external subprogram is wt_module#wt_LaplaPol2PolGrid_wt
Function : | |||
wt_Lapla_wt : | real(8), dimension((nm+1)*(nm+1),0:lm)
| ||
wt : | real(8), dimension((nm+1)*(nm+1),0:lm), intent(in)
|
入力スペクトルデータにラプラシアン
▽^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
Subroutine : | |||
wt_POL : | real(8), dimension((nm+1)*(nm+1),0:lm),intent(inout)
|
磁場ポロイダルポテンシャルに対して境界条件を適用する. Chebyshev 空間での境界条件適用
チェビシェフ空間において境界条件を満たすべく高次の係数を定める方法を とっている(タウ法). 現在のところ境界物質が非電気伝導体の場合のみ 対応している. その場合, 磁場ポロイダルポテンシャルの各水平スペクトル 成分 h にたいして境界条件が与えられ,
* 外側境界 : dh/dr + (n+1)h/r = 0 * 内側境界 : dh/dr - nh/r = 0
である. ここで n は h の水平全波数である.
最初に呼ばれるときの境界条件で以後計算される(要仕様変更).
Original external subprogram is wt_module#wt_PolMagBoundaries
Subroutine : | |||
wt_POL : | real(8), dimension((nm+1)*(nm+1),0:lm),intent(inout)
|
磁場ポロイダルポテンシャルに対して境界条件を適用する. 鉛直実空間での境界条件適用.
鉛直実格子点空間において内部領域の値と境界条件を満たすように 条件を課している(選点法). このルーチンを用いるためには wt_Initial にて設定するチェビシェフ切断波数(lm)と鉛直格子点数(km)を 等しくしておく必要がある.
現在のところ境界物質が非電気伝導体の場合のみ対応している. その場合, 磁場ポロイダルポテンシャルの各水平スペクトル成分 h に たいして境界条件が与えられ,
* 外側境界 : dh/dr + (n+1)h/r = 0 * 内側境界 : dh/dr - nh/r = 0
である. ここで n は h の水平全波数である.
最初に呼ばれるときの境界条件で以後計算される(要仕様変更).
Original external subprogram is wt_module#wt_PolmagBoundariesGrid
Subroutine : | |||
wt_POL : | real(8), dimension((nm+1)*(nm+1),0:lm),intent(inout)
|
磁場ポロイダルポテンシャルに対して境界条件を適用する. Chebyshev 空間での境界条件適用
チェビシェフ空間において境界条件を満たすべく高次の係数を定める方法を とっている(タウ法). 現在のところ境界物質が非電気伝導体の場合のみ 対応している. その場合, 磁場ポロイダルポテンシャルの各水平スペクトル 成分 h にたいして境界条件が与えられ,
* 外側境界 : dh/dr + (n+1)h/r = 0 * 内側境界 : dh/dr - nh/r = 0
である. ここで n は h の水平全波数である.
最初に呼ばれるときの境界条件で以後計算される(要仕様変更).
Original external subprogram is wt_module#wt_PolmagBoundariesTau
Subroutine : | |||
xyz_RotVLON : | real(8), dimension(im,jm,0:km), intent(OUT)
| ||
xyz_RotVLAT : | real(8), dimension(im,jm,0:km), intent(OUT)
| ||
xyz_RotVRAD : | real(8), dimension(im,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
Subroutine : | |||
xyz_VLON : | real(8), dimension(im,jm,0:km)
| ||
xyz_VLAT : | real(8), dimension(im,jm,0:km)
| ||
xyz_VRAD : | real(8), dimension(im,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
Function : | |||
wt_QOperator_wt : | real(8), dimension((nm+1)*(nm+1),0:lm)
| ||
wt : | real(8), dimension((nm+1)*(nm+1),0:lm), intent(in)
|
入力スペクトルデータに対応する格子点データに演算子
Q=(k・▽-1/2(L2 k・▽+ k・▽L2))
を作用させたデータのスペクトル変換が返される.
Original external subprogram is wt_module#wt_QOperator_wt
Function : | |||
wt_RadRotRot_xyz_xyz_xyz : | real(8), dimension((nm+1)*(nm+1),0:lm)
| ||
xyz_VLON : | real(8), dimension(im,jm,0:km), intent(in)
| ||
xyz_VLAT : | real(8), dimension(im,jm,0:km), intent(in)
| ||
xyz_VRAD : | real(8), dimension(im,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
Function : | |||
wt_RadRot_xyz_xyz : | real(8), dimension((nm+1)*(nm+1),0:lm)
| ||
xyz_VLON : | real(8), dimension(im,jm,0:km), intent(in)
| ||
xyz_VLAT : | real(8), dimension(im,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
Function : | |||
wt_RotRad_wt : | real(8), dimension((nm+1)*(nm+1),0:lm)
| ||
wt : | real(8), dimension((nm+1)*(nm+1),0:lm), intent(in)
|
入力スペクトルデータに回転型動径微分
1/r ∂(r.)/∂r = ∂(.)/∂r + (.)/r
を作用する.
スペクトルデータの回転型動径微分とは, 対応する格子点データに 回転型動径微分を作用させたデータのスペクトル変換のことである.
Original external subprogram is wt_module#wt_RotRad_wt
Function : | |||
wt_RotRad_xyz_xyz : | real(8), dimension((nm+1)*(nm+1),0:lm)
| ||
xyz_Vlat : | real(8), dimension(im,jm,0:km), intent(in)
| ||
xyz_Vlon : | real(8), dimension(im,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
Subroutine : | |||
wt_TORPOT : | real(8), dimension((nm+1)*(nm+1),0:lm),intent(inout)
| ||
values : | real(8), dimension((nm+1)*(nm+1),2), intent(in), optional
| ||
cond : | character(len=2), intent(in), optional
|
速度トロイダルポテンシャルに対して境界条件を適用する. Chebyshev 空間での境界条件適用.
速度トロイダルポテンシャルΨに対して与えられる境界条件は
* 粘着条件 : Ψ = Ψb(lon,lat). Ψb は境界球面での速度分布. default は 0(静止状態). * 応力なし条件 : ∂(Ψ/r)/∂r = 0.
最初に呼ばれるときの境界条件で以後計算される(要仕様変更).
Original external subprogram is wt_module#wt_TorBoundaries
Subroutine : | |||
wt_TORPOT : | real(8), dimension((nm+1)*(nm+1),0:lm),intent(inout)
| ||
values : | real(8), dimension((nm+1)*(nm+1),2), intent(in), optional
| ||
cond : | character(len=2), intent(in), optional
|
速度トロイダルポテンシャルに対して境界条件を適用する. 実空間での境界条件適用
鉛直実格子点空間において内部領域の値と境界条件を満たすように 条件を課している(選点法). このルーチンを用いるためには wt_Initial にて設定するチェビシェフ切断波数(lm)と鉛直格子点数(km)を 等しくしておく必要がある.
速度トロイダルポテンシャルΨに対して与えられる境界条件は
* 粘着条件 : Ψ = Ψb(lon,lat). Ψb は境界球面での速度分布. default は 0 (静止状態). * 応力なし条件 : ∂(Ψ/r)/∂r = 0.
最初に呼ばれるときの境界条件で以後計算される(要仕様変更).
Original external subprogram is wt_module#wt_TorBoundariesGrid
Subroutine : | |||
wt_TORPOT : | real(8), dimension((nm+1)*(nm+1),0:lm),intent(inout)
| ||
values : | real(8), dimension((nm+1)*(nm+1),2), intent(in), optional
| ||
cond : | character(len=2), intent(in), optional
|
速度トロイダルポテンシャルに対して境界条件を適用する. Chebyshev 空間での境界条件適用.
速度トロイダルポテンシャルΨに対して与えられる境界条件は
* 粘着条件 : Ψ = Ψb(lon,lat). Ψb は境界球面での速度分布. default は 0(静止状態). * 応力なし条件 : ∂(Ψ/r)/∂r = 0.
最初に呼ばれるときの境界条件で以後計算される(要仕様変更).
Original external subprogram is wt_module#wt_TorBoundariesTau
Subroutine : | |||
wt_TOR : | real(8), dimension((nm+1)*(nm+1),0:lm),intent(inout)
|
Original external subprogram is wt_module#wt_TorMagBoundaries
Subroutine : | |||
wt_TOR : | real(8), dimension((nm+1)*(nm+1),0:lm),intent(inout)
|
磁場トロイダルポテンシャルに対して境界条件を適用する. 鉛直実空間での境界条件適用.
鉛直実格子点空間において内部領域の値と境界条件を満たすように 条件を課している(選点法). このルーチンを用いるためには wt_Initial にて設定するチェビシェフ切断波数(lm)と鉛直格子点数(km)を 等しくしておく必要がある.
現在のところ境界物質が非電気伝導体の場合のみ対応している. その場合, 磁場トロイダルポテンシャルの境界条件は
外側
wt_psi = 0 at the outer boundary
内側
wt_psi = 0 at the inner boundary
であるので wt_Boundaries で対応可能だが, 将来のため別途作成しておく
最初に呼ばれるときの境界条件で以後計算される(要仕様変更).
Original external subprogram is wt_module#wt_TormagBoundariesGrid
Subroutine : | |||
wt_TOR : | real(8), dimension((nm+1)*(nm+1),0:lm),intent(inout)
|
Original external subprogram is wt_module#wt_TormagBoundariesTau
Subroutine : | |||
xyz_VGRADV_LON : | real(8), dimension(im,jm,0:km),intent(out)
| ||
xyz_VGRADV_LAT : | real(8), dimension(im,jm,0:km),intent(out)
| ||
xyz_VGRADV_RAD : | real(8), dimension(im,jm,0:km),intent(out)
| ||
xyz_VLON : | real(8), dimension(im,jm,0:km),intent(in)
| ||
xyz_VLAT : | real(8), dimension(im,jm,0:km),intent(in)
| ||
xyz_VRAD : | real(8), dimension(im,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
Variable : | |||
wt_VMiss = -999.0 : | real(8)
|
Original external subprogram is wt_module#wt_VMiss
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
|
3 次元球殻領域 球面調和函数展開 + チェビシェフ−ガラーキン法 初期化サブルーチン
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) ! ! 3 次元球殻領域 ! 球面調和函数展開 + チェビシェフ−ガラーキン法 ! ! 初期化サブルーチン ! integer,intent(in) :: i, j, k ! 格子点の設定(経度, 緯度, 動径) integer,intent(in) :: n, l ! 切断波数の設定(水平, 動径) 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_RRSS_module 速度場境界条件 character(LEN=2),intent(in),optional :: velBC ! 境界条件(RR/SS/RS/SR) !--------------- 引数処理 ----------------- 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_RRSS = .true. !--------------- モジュール初期化 ----------------- call wt_Initial(i,j,k,n,l,r_in,r_out) 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_RRSS ) call at_aq_galerkin_RRSS_Initial(km,lm,velBC) end subroutine wt_galerkin_initial
Function : | |||
at_ab(size(ab_data,1),0:km) : | real(8)
| ||
ab_data(:,ks:) : | real(8), intent(IN)
|
チェビシェフ−ガラーキン法 片端ノイマン片端ディリクレ境界条件
ガラーキン係数 -> チェビシェフ係数変換(2次元データ)
Original external subprogram is at_ab_galerkin_ND#at_ab
Function : | |||
at_ad(size(ad_data,1),0:km) : | real(8)
| ||
ad_data(:,ks:) : | real(8), intent(IN)
|
チェビシェフ−ガラーキン法 両端ディリクレ境界条件
ガラーキン係数 -> チェビシェフ係数変換(2次元データ)
Original external subprogram is at_ad_galerkin_DD#at_ad
Function : | |||
at_af(size(af_data,1),0:km) : | real(8)
| ||
af_data(:,ks:) : | real(8), intent(IN)
|
チェビシェフ−ガラーキン法 ディリクレ・ノイマン混合境界条件
ガラーキン係数 -> チェビシェフ係数変換(2次元データ)
Original external subprogram is at_af_galerkin_MM#at_af
Function : | |||
at_ah(size(ah_data,1),0:km) : | real(8)
| ||
ah_data(:,ks:) : | real(8), intent(IN)
|
チェビシェフ−ガラーキン法 ディリクレ・ノイマン混合境界条件
ガラーキン係数 -> チェビシェフ係数変換(2次元データ)
Original external subprogram is at_ah_galerkin_MMex#at_ah
Function : | |||
at_ap(size(ap_data,1),0:km) : | real(8)
| ||
ap_data(:,ks:) : | real(8), intent(IN)
|
片端ディリクレ片端ノイマン境界条件 ガラーキン係数 -> チェビシェフ係数変換(2次元データ)
Original external subprogram is at_ap_galerkin_DN#at_ap
Function : | |||
at_aq(size(aq_data,1),0:km) : | real(8)
| ||
aq_data(:,ks:) : | real(8), intent(IN)
|
チェビシェフ−ガラーキン法 非圧縮流体の流線関数・流れポテンシャル用
ガラーキン係数 -> チェビシェフ係数変換(2次元データ)
Original external subprogram is at_aq_galerkin_RRSS#at_aq
Function : | |||
at_av(size(av_data,1),0:km) : | real(8)
| ||
av_data(:,ks:) : | real(8), intent(IN)
|
チェビシェフ−ガラーキン法 両端ノイマン境界条件
ガラーキン係数 -> チェビシェフ係数変換(2次元データ)
Original external subprogram is at_av_galerkin_NN#at_av
Function : | |||
wt_wz : | real(8), dimension((nm+1)*(nm+1),0:lm)
| ||
wz : | real(8), dimension((nm+1)*(nm+1),0:km), intent(in)
|
水平スペクトル・動径格子点データからスペクトルデータへ(正)変換する.
Original external subprogram is wt_module#wt_wz
Function : | |||
wt_xyz : | real(8), dimension((nm+1)*(nm+1),0:lm)
| ||
xyz : | real(8), dimension(im,jm,0:km), intent(in)
|
3 次元格子点データからスペクトルデータへ(正)変換する.
Original external subprogram is wt_module#wt_xyz
Function : | |||
av_Dx_av(size(av_data,1),ks:km) : | real(8)
| ||
av_data(:,ks:) : | real(8), intent(IN)
|
チェビシェフ−ガラーキン法 両端ノイマン境界条件
X 微分計算(1 次元)
Original external subprogram is at_av_galerkin_NN#av_Dx_av
Function : | |||
av_ag(size(ag_data,1),ks:km) : | real(8)
| ||
ag_data(:,0:) : | real(8), intent(IN)
|
チェビシェフ−ガラーキン法 両端ノイマン境界条件
格子点データ -> ガラーキン係数変換(2次元データ)
Original external subprogram is at_av_galerkin_NN#av_ag
Function : | |||
av_at(size(at_data,1),ks:km) : | real(8)
| ||
at_data(:,0:) : | real(8), intent(IN)
|
チェビシェフ−ガラーキン法 両端ノイマン境界条件
チェビシェフ係数 -> ガラーキン係数変換(2次元データ)
Original external subprogram is at_av_galerkin_NN#av_at
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
|
速度ポロイダルポテンシャルΦを▽^2Φから計算する.
チェビシェフ格子点空間で境界条件を適用している. この関数を用いるためには wt_Initial にて設定する チェビシェフ切断波数(lm)と鉛直格子点数(km)を等しく しておく必要がある.
速度ポロイダルポテンシャルΦを f = ▽^2Φから定める式は
▽^2Φ = f Φ = const. at boundaries. ∂Φ/∂r = 0 at boundaries (粘着条件) or ∂^2Φ/∂r^2 = 0 at boundaries (応力なし条件)
注 : 最初に呼ばれるときの境界条件で以後計算される(要仕様変更)
Original external subprogram is wt_module#wz_LaplaPol2Pol_wz
Variable : | |||
wz_RAD : | real(8), dimension(:,:), allocatable
|
Original external subprogram is wt_module#wz_RAD
Function : | |||
wz_wt : | real(8), dimension((nm+1)*(nm+1),0:km)
| ||
wt : | real(8), dimension((nm+1)*(nm+1),0:lm), intent(in)
|
スペクトルデータから水平スペクトル・動径格子点データへ(正)変換する.
Original external subprogram is wt_module#wz_wt
Function : | |||
wz_xyz : | real(8), dimension((nm+1)*(nm+1),0:km)
| ||
xyz : | real(8), dimension(im,jm,0:km), intent(in)
|
3 次元格子データから水平スペクトル・動径格子点データへ(正)変換する.
Original external subprogram is wt_module#wz_xyz
Function : | |||
x_AvrLatRad_xyz : | real(8), dimension(im)
| ||
xyz : | real(8), dimension(im,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
Function : | |||
x_AvrRad_xz : | real(8), dimension(im)
| ||
xz : | real(8), dimension(im,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
Function : | |||
x_IntLatRad_xyz : | real(8), dimension(im)
| ||
xyz : | real(8), dimension(im,jm,0:km), intent(in)
|
3 次元格子点データの緯度動径(子午面)積分
3 次元データ f(λ,φ,r) に対して
∫f(λ,φ,r) r^2cosφ dφdr
を計算する.
Original external subprogram is wt_module#x_IntLatRad_xyz
Function : | |||
x_IntRad_xz : | real(8), dimension(im)
| ||
xz : | real(8), dimension(im,0:km), intent(in)
|
2 次元(XZ)格子点データの動径方向域積分.
2 次元データ f(λ,r) に対して ∫f(λ,r) r^2dr を計算する.
Original external subprogram is wt_module#x_IntRad_xz
Function : | |||
xy_AvrRad_xyz : | real(8), dimension(im,jm)
| ||
xyz : | real(8), dimension(im,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
Function : | |||
xy_IntRad_xyz : | real(8), dimension(im,jm)
| ||
xyz : | real(8), dimension(im,jm,0:km), intent(in)
|
動径積分
3 次元格子点データの動径方向域積分.
3 次元データ f(λ,φ,r) に対して∫f(λ,φ,r) r^2dr を計算する.
Original external subprogram is wt_module#xy_IntRad_xyz
Function : | |||
xyz_Div_xyz_xyz_xyz : | real(8), dimension(im,jm,0:km)
| ||
xyz_Vlon : | real(8), dimension(im,jm,0:km), intent(in)
| ||
xyz_Vlat : | real(8), dimension(im,jm,0:km), intent(in)
| ||
xyz_Vrad : | real(8), dimension(im,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
Function : | |||
xyz_GradLat_wt : | real(8), dimension(im,jm,0:km)
| ||
wt : | real(8), dimension((nm+1)*(nm+1),0:lm), intent(in)
|
スペクトルデータに勾配型経度微分 1/r ∂/∂φ を作用させる.
Original external subprogram is wt_module#xyz_GradLat_wt
Function : | |||
xyz_GradLon_wt : | real(8), dimension(im,jm,0:km)
| ||
wt : | real(8), dimension((nm+1)*(nm+1),0:lm), intent(in)
|
スペクトルデータに勾配型経度微分 1/rcosφ・∂/∂λ を作用させる.
Original external subprogram is wt_module#xyz_GradLon_wt
Function : | |||
xyz_KGrad_wt : | real(8), dimension(im,jm,0:km)
| ||
wt : | real(8), dimension((nm+1)*(nm+1),0:lm), intent(in)
|
k・▽ = cosφ/r ∂/∂φ + sinφ∂/∂r
入力スペクトルデータに対応する格子データに軸方向微分
k・▽ = cosφ/r ∂/∂φ + sinφ∂/∂r
を作用させた格子データが返される. ここでベクトル k は球の中心から北極向きの単位ベクトルである.
Original external subprogram is wt_module#xyz_KGrad_wt
Variable : | |||
xyz_LAT : | real(8), dimension(:,:,:), allocatable
|
Original external subprogram is wt_module#xyz_LAT
Variable : | |||
xyz_LON : | real(8), dimension(:,:,:), allocatable
|
Original external subprogram is wt_module#xyz_LON
Variable : | |||
xyz_RAD : | real(8), dimension(:,:,:), allocatable
|
Original external subprogram is wt_module#xyz_RAD
Function : | |||
xyz_RotLat_wt_wt : | real(8), dimension(im,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/r ∂Vrad/∂φ
を計算する.
Original external subprogram is wt_module#xyz_RotLat_wt_wt
Function : | |||
xyz_RotLon_wt_wt : | real(8), dimension(im,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/rcosφ・∂Vrad/∂λ-1/r ∂(r Vlat)/∂r を計算する.
を計算する
Original external subprogram is wt_module#xyz_RotLon_wt_wt
Function : | |||
xyz_wt : | real(8), dimension(im,jm,0:km)
| ||
wt : | real(8), dimension((nm+1)*(nm+1),0:lm), intent(in)
|
スペクトルデータから 3 次元格子点データへ(逆)変換する.
Original external subprogram is wt_module#xyz_wt
Function : | |||
xyz_wz : | real(8), dimension(im,jm,0:km)
| ||
wz : | real(8), dimension((nm+1)*(nm+1),0:km), intent(in)
|
水平スペクトル・動径格子点データから 3 次元格子点データへ(逆)変換する.
Original external subprogram is wt_module#xyz_wz
Function : | |||
xz_AvrLat_xyz : | real(8), dimension(im,0:km)
| ||
xyz : | real(8), dimension(im,jm,0:km), intent(in)
|
緯度積分
3 次元格子点データの緯度方向域平均.
3 次元データ f(λ,φ,r) に対して ∫f(λ,φ,r)cosφ dφ/2 を計算する.
Original external subprogram is wt_module#xz_AvrLat_xyz
Function : | |||
xz_IntLat_xyz : | real(8), dimension(im,0:km)
| ||
xyz : | real(8), dimension(im,jm,0:km), intent(in)
|
3 次元格子点データの緯度方向域積分.
3 次元データ f(λ,φ,r) に対して∫f(λ,φ,r) cosφ dφ を計算する.
Original external subprogram is wt_module#xz_IntLat_xyz
Function : | |||
y_AvrLonRad_xyz : | real(8), dimension(jm)
| ||
xyz : | real(8), dimension(im,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
Function : | |||
y_AvrRad_yz : | real(8), dimension(jm)
| ||
yz : | real(8), dimension(jm,0:km), intent(in)
|
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
Function : | |||
y_IntLonRad_xyz : | real(8), dimension(jm)
| ||
xyz : | real(8), dimension(im,jm,0:km), intent(in)
|
3 次元格子点データの経度動径(緯度円)積分.
3 次元データ f(λ,φ,r) に対して∫f(λ,φ,r) r^2dλdr を計算する.
Original external subprogram is wt_module#y_IntLonRad_xyz
Function : | |||
y_IntRad_yz : | real(8), dimension(jm)
| ||
yz : | real(8), dimension(jm,0:km), intent(in)
|
動径積分
2 次元(YZ)格子点データの動径方向域積分.
2 次元データ f(φ,r) に対して∫f(φ,r) r^2dr を計算する.
Original external subprogram is wt_module#y_IntRad_yz
Function : | |||
yz_AvrLon_xyz : | real(8), dimension(jm,0:km)
| ||
xyz : | real(8), dimension(im,jm,0:km), intent(in)
|
経度(帯状)積分
3 次元格子点データの経度方向(帯状)平均.
3 次元データ f(λ,φ,r) に対して ∫f(λ,φ,r)dλ/2π を計算する.
Original external subprogram is wt_module#yz_AvrLon_xyz
Function : | |||
yz_IntLon_xyz : | real(8), dimension(jm,0:km)
| ||
xyz : | real(8), dimension(im,jm,0:km), intent(in)
|
経度(帯状)積分
3 次元格子点データの経度方向(帯状)積分.
3 次元データ f(λ,φ,r) に対して ∫f(λ,φ,r)dλ を計算する.
Original external subprogram is wt_module#yz_IntLon_xyz
Function : | |||
z_AvrLat_yz : | real(8), dimension(0:km)
| ||
yz : | real(8), dimension(jm,0:km), intent(in)
|
2 次元(YZ)格子点データの緯度方向域平均.
2 次元データ f(φ,r) に対して ∫f(φ,r) cosφ dφ/2 を計算する.
Original external subprogram is wt_module#z_AvrLat_yz
Function : | |||
z_AvrLonLat_xyz : | real(8), dimension(0:km)
| ||
xyz : | real(8), dimension(im,jm,0:km), intent(in)
|
緯度経度(水平)積分
3 次元格子点データの緯度経度(水平, 球面)積分
3 次元データ f(λ,φ,r) に対して
∫f(λ,φ,r) cosφ dλdφ /4π
を計算する.
Original external subprogram is wt_module#z_AvrLonLat_xyz
Function : | |||
z_AvrLon_xz : | real(8), dimension(0:km)
| ||
xz : | real(8), dimension(im,0:km), intent(in)
|
経度(帯状)積分
2 次元(XZ)格子点データの経度方向平均.
2 次元データ f(λ,r) に対して ∫f(λ,r)dλ/2π を計算する.
Original external subprogram is wt_module#z_AvrLon_xz
Function : | |||
z_IntLat_yz : | real(8), dimension(0:km)
| ||
yz : | real(8), dimension(jm,0:km), intent(in)
|
緯度積分
2 次元(YZ)格子点データの緯度方向域積分.
2 次元データ f(φ,r) に対して∫f(φ,r) cosφ dφ を計算する.
Original external subprogram is wt_module#z_IntLat_yz
Function : | |||
z_IntLonLat_xyz : | real(8), dimension(0:km)
| ||
xyz : | real(8), dimension(im,jm,0:km), intent(in)
|
緯度経度(水平)積分
3 次元格子点データの緯度経度(水平, 球面)積分
3 次元データ f(λ,φ,r) に対して
∫f(λ,φ,r) cosφ dλdφ
を計算する.
Original external subprogram is wt_module#z_IntLonLat_xyz
Function : | |||
z_IntLon_xz : | real(8), dimension(0:km)
| ||
xz : | real(8), dimension(im,0:km), intent(in)
|
2 次元(XZ)格子点データの経度方向積分.
2 次元データ f(λ,r) に対して ∫f(λ,r)dλ を計算する.
Original external subprogram is wt_module#z_IntLon_xz