| Class | et_galerkin_module |
| In: |
libsrc/et_galerkin_module/et_galerkin_module.f90
|
| Authors: | Shin-ichi Takehiro, Youhei SASAKI |
| Version: | $Id: et_galerkin_module.f90 610 2013-08-24 12:46:42Z takepiro $ |
| Copyright&License: | See COPYRIGHT |
spml/et_galerkin_module モジュールは 2 次元チャネル領域での流体運動 をスペクトル法により数値計算するための Fortran90 関数を提供する. 周期的な境界条件を扱うための X 方向へのフーリエ変換, 境界壁を扱うための Y 方向のチェビシェフ変換(チェビシェフーガラーキン法) のスペクトル計算のためのさまざまな関数を提供する
内部で et_module, および境界条件を解くためにチェビシェフーガラーキン法の モジュール群(at_ab_galerkin_ND, at_ad_galerkin_DD, at_af_galerkin_MM, at_ah_galerkin_MMex, at_ap_galerkin_DN, at_aq_galerkin_RRFF, at_av_galerkin_NN) を用いている.
| et_ : | 2次元スペクトルデータ |
| yx_ : | 2 次元格子点データ |
| x_ : | X 方向 1 次元格子点データ |
| y_ : | Y 方向 1 次元格子点データ |
| ed_ : | 2次元ガラーキンデータ(y=ymin,ymax で値が 0) |
| ev_ : | 2次元ガラーキンデータ(y=ymin,ymax で 1 階微分値が 0) |
| eb_ : | 2次元ガラーキンデータ(y=ymin で値が 0, ymax で 1 階微分値が 0) |
| ep_ : | 2次元ガラーキンデータ(y=ymin で1 階微分値が 0, ymax で 値が 0) |
| ef_ : | 2次元ガラーキンデータ(y=ymin,ymax で混合境界条件が 0) |
| eh_ : | 2次元ガラーキンデータ(y=ymin,ymax で水平波数毎の混合境界条件が 0) |
| eq_ : | 2次元流線関数ガラーキンデータ(y=ymin,ymax で自由すべり/粘着条件) |
| _et : | 2次元スペクトルデータ |
| _yx : | 2 次元格子点データ |
| _x : | X 方向 1 次元格子点データ |
| _y : | Y 方向 1 次元格子点データ |
| _ed : | 2次元ガラーキンデータ(y=ymin,ymax で値が 0) |
| _ev : | 2次元ガラーキンデータ(y=ymin,ymax で 1 階微分値が 0) |
| _eb : | 2次元ガラーキンデータ(y=ymin で値が 0, ymax で 1 階微分値が 0) |
| _ep : | 2次元ガラーキンデータ(y=ymin で1 階微分値が 0, ymax で 値が 0) |
| _ef : | 2次元ガラーキンデータ(y=ymin,ymax で混合境界条件が 0) |
| _eh : | 2次元ガラーキンデータ(y=ymin,ymax で水平波数毎の混合境界条件が 0) |
| _eq : | 2次元流線関数ガラーキンデータ(y=ymin,ymax で自由すべり/粘着条件) |
| et_galerlin_Initial : | スペクトル/ガラーキン変換の格子点数, 波数, 領域の大きさ, 使用するガラーキン変数の設定 |
| x_X, y_Y : | 格子点座標(X,Y座標)を格納した 1 次元配列 |
| x_X_Weight, y_Y_Weight : | 重み座標を格納した 1 次元配列 |
| yx_X, yx_Y : | 格子点データの XY 座標(X,Y)(格子点データ型 2 次元配列) |
| yx_et : | スペクトルデータから格子データへの変換 |
| et_yx : | 格子データからスペクトルデータへの変換 |
| ax_ae, x_e : | X 方向のスペクトルデータから格子データへの変換 |
| ay_at, y_t : | Y 方向のスペクトルデータから格子データへの変換 |
| ae_ax, e_x : | X 方向の格子点データからスペクトルデータへの変換 |
| at_ay, t_y : | Y 方向の格子点データからスペクトルデータへの変換 |
| ed_yx : | ガラーキンデータ->格子点変換 |
| yx_ed : | 格子点->ガラーキンデータ変換 |
| ed_et, d_t : | チェビシェフ->ガラーキン変換 |
| et_ed, t_d : | ガラーキン->チェビシェフ変換 |
| ed_ey, d_y : | 格子点->ガラーキンデータ変換 |
| ey_ed, y_d : | ガラーキン->格子点データ変換 |
| ev_yx : | ガラーキンデータ->格子点変換 |
| yx_ev : | 格子点->ガラーキンデータ変換 |
| ev_et, v_t : | チェビシェフ->ガラーキン変換 |
| et_ev, t_v : | ガラーキン->チェビシェフ変換 |
| ev_ey, v_y : | 格子点->ガラーキンデータ変換 |
| ey_ev, y_v : | ガラーキン->格子点データ変換 |
| eb_yx : | ガラーキンデータ->格子点変換 |
| yx_eb : | 格子点->ガラーキンデータ変換 |
| eb_et, b_t : | チェビシェフ->ガラーキン変換 |
| et_eb, t_b : | ガラーキン->チェビシェフ変換 |
| eb_ey, b_y : | 格子点->ガラーキンデータ変換 |
| ey_eb, y_b : | ガラーキン->格子点データ変換 |
| ep_yx : | ガラーキンデータ->格子点変換 |
| yx_ep : | 格子点->ガラーキンデータ変換 |
| ep_et, p_t : | チェビシェフ->ガラーキン変換 |
| et_ep, t_p : | ガラーキン->チェビシェフ変換 |
| ep_ey, p_y : | 格子点->ガラーキンデータ変換 |
| ey_ep, y_p : | ガラーキン->格子点データ変換 |
| ef_yx : | ガラーキンデータ->格子点変換 |
| yx_ef : | 格子点->ガラーキンデータ変換 |
| ef_et, f_t : | チェビシェフ->ガラーキン変換 |
| et_ef, t_f : | ガラーキン->チェビシェフ変換 |
| ef_ey, f_y : | 格子点->ガラーキンデータ変換 |
| ey_ef, y_f : | ガラーキン->格子点データ変換 |
| eh_yx : | ガラーキンデータ->格子点変換 |
| yx_eh : | 格子点->ガラーキンデータ変換 |
| eh_et : | チェビシェフ->ガラーキン変換 |
| et_eh : | ガラーキン->チェビシェフ変換 |
| eh_ey : | 格子点->ガラーキンデータ変換 |
| ey_eh : | ガラーキン->格子点データ変換 |
| eq_yx : | ガラーキンデータ->格子点変換 |
| yx_eq : | 格子点->ガラーキンデータ変換 |
| eq_et, q_t : | チェビシェフ->ガラーキン変換 |
| et_eq, t_q : | ガラーキン->チェビシェフ変換 |
| eq_ey, q_y : | 格子点->ガラーキンデータ変換 |
| ey_eq, y_q : | ガラーキン->格子点データ変換 |
| et_Lapla_et : | スペクトルデータにラプラシアンを作用させる |
| et_LaplaInv_et : | スペクトルデータに逆ラプラシアンを作用させる |
| et_Dx_et, ae_Dx_ae, e_Dx_e : | スペクトルデータに X 微分を作用させる |
| et_Dy_et, at_Dy_at, t_Dy_t : | スペクトルデータに Y 微分を作用させる |
| et_Jacobian_et_et : | 2 つのスペクトルデータからヤコビアンを計算する |
| ed_Dx_ed : | X 微分 |
| ed_Dy_ed, d_Dy_d : | Y 微分 |
| ev_Dx_ev : | X 微分 |
| ev_Dy_ev, v_Dy_v : | Y 微分 |
| eb_Dx_eb : | X 微分 |
| eb_Dy_eb, b_Dy_b : | Y 微分 |
| ep_Dx_ep : | X 微分 |
| ep_Dy_ep, p_Dy_p : | Y 微分 |
| ef_Dx_ef : | X 微分 |
| ef_Dy_ef, f_Dy_f : | Y 微分 |
| eh_Dx_eh : | X 微分 |
| eh_Dy_eh : | Y 微分 |
| eq_Dx_eq : | X 微分 |
| eq_Dy_eq, q_Dy_q : | Y 微分 |
| eq_Vor2Strm_eq : | 渦度から流線を計算する |
| IntYX_yx, AvrYX_yx : | 2 次元格子点データの全領域積分および平均 |
| y_IntX_yx, y_AvrX_yx : | 2 次元格子点データの X 方向積分および平均 |
| IntX_x, AvrX_x : | 1 次元(X)格子点データの X 方向積分および平均 |
| x_IntY_yx, x_AvrY_yx : | 2 次元格子点データの Y 方向積分および平均 |
| IntY_y, AvrY_y : | 1 次元(Y)格子点データの Y 方向積分および平均 |
Y 微分計算を連続して行う場合にはガラーキンデータ用関数を用いるのでなく チェビシェフスペクトル用関数を用いること
× : ed_Dy_ed(ed_Dy_ed(ed) ○ : ed_et(et_Dy_et(et_Dy_et(et_ed(ed))))
| Function : | |||
| AvrX_x : | real(8)
| ||
| x : | real(8), dimension(0:im-1)
|
1 次元(X)格子点データの X 方向平均
実際には格子点データ各点毎に x_X_Weight をかけた総和を計算し, x_X_Weight の総和で割ることで平均している.
Original external subprogram is et_module#AvrX_x
| Function : | |||
| AvrYX_yx : | real(8)
| ||
| yx : | real(8), dimension(0:jm,0:im-1)
|
2 次元格子点データの全領域平均
実際には格子点データ各点毎に x_X_Weight, y_Y_Weight をかけた 総和を計算し, x_X_Weight*y_Y_Weight の総和で割ることで平均している.
Original external subprogram is et_module#AvrYX_yx
| Function : | |||
| AvrY_y : | real(8)
| ||
| y : | real(8), dimension(0:jm)
|
1 次元(Y)格子点データの Y 方向平均
実際には格子点データ各点毎に y_Y_Weight をかけた総和を計算し, y_Y_Weight の総和で割ることで平均している.
Original external subprogram is et_module#AvrY_y
| Function : | |||
| IntX_x : | real(8)
| ||
| x : | real(8), dimension(0:im-1)
|
X 方向積分
1 次元(X)格子点データの X 方向積分
実際には格子点データ各点毎に x_X_Weight をかけた総和を計算している.
Original external subprogram is et_module#IntX_x
| Function : | |||
| IntYX_yx : | real(8)
| ||
| yx : | real(8), dimension(0:jm,0:im-1)
|
全領域積分
2 次元格子点データの全領域積分および平均.
実際には格子点データ各点毎に x_X_Weight, y_Y_Weight をかけた 総和を計算している.
Original external subprogram is et_module#IntYX_yx
| Function : | |||
| IntY_y : | real(8)
| ||
| y : | real(8), dimension(0:jm)
|
Y 方向積分
1 次元(Y)格子点データの Y 方向積分
実際には格子点データ各点毎に y_Y_Weight をかけた総和を計算している.
Original external subprogram is et_module#IntY_y
| 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_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 : | |||
| 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 : | |
| 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_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 : | |||
| 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 : | |
| eb_Dx_eb : | real(8), dimension(-km:km,2:lm) |
| eb : | real(8), dimension(-km:km,2:lm), intent(in) |
入力スペクトルデータに X 微分(∂x)を作用する.
スペクトルデータの X 微分とは, 対応する格子点データに X 微分を 作用させたデータのスペクトル変換のことである.
実際にはスペクトルデータに X 方向波数 k をかけて sin(kx) <-> cos(kx) 成分に入れ換える計算を行っている.
function eb_Dx_eb(eb)
!
! 入力スペクトルデータに X 微分(∂x)を作用する.
!
! スペクトルデータの X 微分とは, 対応する格子点データに X 微分を
! 作用させたデータのスペクトル変換のことである.
!
! 実際にはスペクトルデータに X 方向波数 k をかけて
! sin(kx) <-> cos(kx) 成分に入れ換える計算を行っている.
!
real(8), dimension(-km:km,2:lm) :: eb_Dx_eb
real(8), dimension(-km:km,2:lm), intent(in) :: eb
integer k
do k=-km,km
eb_Dx_eb(k,:) = (-2*pi*k/xl)*eb(-k,:)
enddo
end function eb_Dx_eb
| Function : | |
| eb_Dy_eb : | real(8), dimension(-km:km,2:lm) |
| eb : | real(8), dimension(-km:km,2:lm), intent(in) |
入力スペクトルデータに Y 微分(∂y)を作用する.
スペクトルデータの Y 微分とは, 対応する格子点データに Y 微分を 作用させたデータのスペクトル変換のことである.
function eb_Dy_eb(eb)
!
! 入力スペクトルデータに Y 微分(∂y)を作用する.
!
! スペクトルデータの Y 微分とは, 対応する格子点データに Y 微分を
! 作用させたデータのスペクトル変換のことである.
!
real(8), dimension(-km:km,2:lm) :: eb_Dy_eb
real(8), dimension(-km:km,2:lm), intent(in) :: eb
eb_Dy_eb = eb_et(et_Dy_et(et_eb(eb)))
end function eb_Dy_eb
| Function : | |||
| eb_et : | real(8), dimension(-km:km,2:lm)
| ||
| et : | real(8), dimension(-km:km,0:lm), intent(in)
|
チェビシェフデータからガラーキンデータへ変換する.
function eb_et(et)
!
! チェビシェフデータからガラーキンデータへ変換する.
!
real(8), dimension(-km:km,2:lm) :: eb_et
!(out) スペクトルデータ
real(8), dimension(-km:km,0:lm), intent(in) :: et
!(in) 格子点データ
eb_et = ab_at(et)
end function eb_et
| Function : | |||
| eb_ey : | real(8), dimension(-km:km,2:lm)
| ||
| ey : | real(8), dimension(-km:km,0:jm), intent(in)
|
格子データからガラーキンデータへ変換する.
function eb_ey(ey)
!
! 格子データからガラーキンデータへ変換する.
!
real(8), dimension(-km:km,2:lm) :: eb_ey
!(out) スペクトルデータ
real(8), dimension(-km:km,0:jm), intent(in) :: ey
!(in) 格子点データ
eb_ey = ab_ag(ey)
end function eb_ey
| Function : | |||
| eb_yx : | real(8), dimension(-km:km,2:lm)
| ||
| yx : | real(8), dimension(0:jm,0:im-1), intent(in)
|
格子データからガラーキンデータへ変換する.
function eb_yx(yx)
!
! 格子データからガラーキンデータへ変換する.
!
real(8), dimension(-km:km,2:lm) :: eb_yx
!(out) スペクトルデータ
real(8), dimension(0:jm,0:im-1), intent(in) :: yx
!(in) 格子点データ
eb_yx = eb_et(et_yx(yx))
end function eb_yx
| Function : | |
| ed_Dx_ed : | real(8), dimension(-km:km,2:lm) |
| ed : | real(8), dimension(-km:km,2:lm), intent(in) |
入力スペクトルデータに X 微分(∂x)を作用する.
スペクトルデータの X 微分とは, 対応する格子点データに X 微分を 作用させたデータのスペクトル変換のことである.
実際にはスペクトルデータに X 方向波数 k をかけて sin(kx) <-> cos(kx) 成分に入れ換える計算を行っている.
function ed_Dx_ed(ed)
!
! 入力スペクトルデータに X 微分(∂x)を作用する.
!
! スペクトルデータの X 微分とは, 対応する格子点データに X 微分を
! 作用させたデータのスペクトル変換のことである.
!
! 実際にはスペクトルデータに X 方向波数 k をかけて
! sin(kx) <-> cos(kx) 成分に入れ換える計算を行っている.
!
real(8), dimension(-km:km,2:lm) :: ed_Dx_ed
real(8), dimension(-km:km,2:lm), intent(in) :: ed
integer k
do k=-km,km
ed_Dx_ed(k,:) = (-2*pi*k/xl)*ed(-k,:)
enddo
end function ed_Dx_ed
| Function : | |
| ed_Dy_ed : | real(8), dimension(-km:km,2:lm) |
| ed : | real(8), dimension(-km:km,2:lm), intent(in) |
入力スペクトルデータに Y 微分(∂y)を作用する.
スペクトルデータの Y 微分とは, 対応する格子点データに Y 微分を 作用させたデータのスペクトル変換のことである.
function ed_Dy_ed(ed)
!
! 入力スペクトルデータに Y 微分(∂y)を作用する.
!
! スペクトルデータの Y 微分とは, 対応する格子点データに Y 微分を
! 作用させたデータのスペクトル変換のことである.
!
real(8), dimension(-km:km,2:lm) :: ed_Dy_ed
real(8), dimension(-km:km,2:lm), intent(in) :: ed
ed_Dy_ed = ed_et(et_Dy_et(et_ed(ed)))
end function ed_Dy_ed
| Function : | |||
| ed_et : | real(8), dimension(-km:km,2:lm)
| ||
| et : | real(8), dimension(-km:km,0:lm), intent(in)
|
チェビシェフデータからガラーキンデータへ変換する.
function ed_et(et)
!
! チェビシェフデータからガラーキンデータへ変換する.
!
real(8), dimension(-km:km,2:lm) :: ed_et
!(out) スペクトルデータ
real(8), dimension(-km:km,0:lm), intent(in) :: et
!(in) 格子点データ
ed_et = ad_at(et)
end function ed_et
| Function : | |||
| ed_ey : | real(8), dimension(-km:km,2:lm)
| ||
| ey : | real(8), dimension(-km:km,0:jm), intent(in)
|
格子データからガラーキンデータへ変換する.
function ed_ey(ey)
!
! 格子データからガラーキンデータへ変換する.
!
real(8), dimension(-km:km,2:lm) :: ed_ey
!(out) スペクトルデータ
real(8), dimension(-km:km,0:jm), intent(in) :: ey
!(in) 格子点データ
ed_ey = ad_ag(ey)
end function ed_ey
| Function : | |||
| ed_yx : | real(8), dimension(-km:km,2:lm)
| ||
| yx : | real(8), dimension(0:jm,0:im-1), intent(in)
|
格子データからガラーキンデータへ変換する.
function ed_yx(yx)
!
! 格子データからガラーキンデータへ変換する.
!
real(8), dimension(-km:km,2:lm) :: ed_yx
!(out) スペクトルデータ
real(8), dimension(0:jm,0:im-1), intent(in) :: yx
!(in) 格子点データ
ed_yx = ed_et(et_yx(yx))
end function ed_yx
| Function : | |
| ef_Dx_ef : | real(8), dimension(-km:km,2:lm) |
| ef : | real(8), dimension(-km:km,2:lm), intent(in) |
入力スペクトルデータに X 微分(∂x)を作用する.
スペクトルデータの X 微分とは, 対応する格子点データに X 微分を 作用させたデータのスペクトル変換のことである.
実際にはスペクトルデータに X 方向波数 k をかけて sin(kx) <-> cos(kx) 成分に入れ換える計算を行っている.
function ef_Dx_ef(ef)
!
! 入力スペクトルデータに X 微分(∂x)を作用する.
!
! スペクトルデータの X 微分とは, 対応する格子点データに X 微分を
! 作用させたデータのスペクトル変換のことである.
!
! 実際にはスペクトルデータに X 方向波数 k をかけて
! sin(kx) <-> cos(kx) 成分に入れ換える計算を行っている.
!
real(8), dimension(-km:km,2:lm) :: ef_Dx_ef
real(8), dimension(-km:km,2:lm), intent(in) :: ef
integer k
do k=-km,km
ef_Dx_ef(k,:) = (-2*pi*k/xl)*ef(-k,:)
enddo
end function ef_Dx_ef
| Function : | |
| ef_Dy_ef : | real(8), dimension(-km:km,2:lm) |
| ef : | real(8), dimension(-km:km,2:lm), intent(in) |
入力スペクトルデータに Y 微分(∂y)を作用する.
スペクトルデータの Y 微分とは, 対応する格子点データに Y 微分を 作用させたデータのスペクトル変換のことである.
function ef_Dy_ef(ef)
!
! 入力スペクトルデータに Y 微分(∂y)を作用する.
!
! スペクトルデータの Y 微分とは, 対応する格子点データに Y 微分を
! 作用させたデータのスペクトル変換のことである.
!
real(8), dimension(-km:km,2:lm) :: ef_Dy_ef
real(8), dimension(-km:km,2:lm), intent(in) :: ef
ef_Dy_ef = ef_et(et_Dy_et(et_ef(ef)))
end function ef_Dy_ef
| Function : | |||
| ef_et : | real(8), dimension(-km:km,2:lm)
| ||
| et : | real(8), dimension(-km:km,0:lm), intent(in)
|
チェビシェフデータからガラーキンデータへ変換する.
function ef_et(et)
!
! チェビシェフデータからガラーキンデータへ変換する.
!
real(8), dimension(-km:km,2:lm) :: ef_et
!(out) スペクトルデータ
real(8), dimension(-km:km,0:lm), intent(in) :: et
!(in) 格子点データ
ef_et = af_at(et)
end function ef_et
| Function : | |||
| ef_ey : | real(8), dimension(-km:km,2:lm)
| ||
| ey : | real(8), dimension(-km:km,0:jm), intent(in)
|
格子データからガラーキンデータへ変換する.
function ef_ey(ey)
!
! 格子データからガラーキンデータへ変換する.
!
real(8), dimension(-km:km,2:lm) :: ef_ey
!(out) スペクトルデータ
real(8), dimension(-km:km,0:jm), intent(in) :: ey
!(in) 格子点データ
ef_ey = af_ag(ey)
end function ef_ey
| Function : | |||
| ef_yx : | real(8), dimension(-km:km,2:lm)
| ||
| yx : | real(8), dimension(0:jm,0:im-1), intent(in)
|
格子データからガラーキンデータへ変換する.
function ef_yx(yx)
!
! 格子データからガラーキンデータへ変換する.
!
real(8), dimension(-km:km,2:lm) :: ef_yx
!(out) スペクトルデータ
real(8), dimension(0:jm,0:im-1), intent(in) :: yx
!(in) 格子点データ
ef_yx = ef_et(et_yx(yx))
end function ef_yx
| Function : | |
| eh_Dx_eh : | real(8), dimension(-km:km,2:lm) |
| eh : | real(8), dimension(-km:km,2:lm), intent(in) |
入力スペクトルデータに X 微分(∂x)を作用する.
スペクトルデータの X 微分とは, 対応する格子点データに X 微分を 作用させたデータのスペクトル変換のことである.
実際にはスペクトルデータに X 方向波数 k をかけて sin(kx) <-> cos(kx) 成分に入れ換える計算を行っている.
function eh_Dx_eh(eh)
!
! 入力スペクトルデータに X 微分(∂x)を作用する.
!
! スペクトルデータの X 微分とは, 対応する格子点データに X 微分を
! 作用させたデータのスペクトル変換のことである.
!
! 実際にはスペクトルデータに X 方向波数 k をかけて
! sin(kx) <-> cos(kx) 成分に入れ換える計算を行っている.
!
real(8), dimension(-km:km,2:lm) :: eh_Dx_eh
real(8), dimension(-km:km,2:lm), intent(in) :: eh
integer k
do k=-km,km
eh_Dx_eh(k,:) = (-2*pi*k/xl)*eh(-k,:)
enddo
end function eh_Dx_eh
| Function : | |
| eh_Dy_eh : | real(8), dimension(-km:km,2:lm) |
| eh : | real(8), dimension(-km:km,2:lm), intent(in) |
入力スペクトルデータに Y 微分(∂y)を作用する.
スペクトルデータの Y 微分とは, 対応する格子点データに Y 微分を 作用させたデータのスペクトル変換のことである.
function eh_Dy_eh(eh)
!
! 入力スペクトルデータに Y 微分(∂y)を作用する.
!
! スペクトルデータの Y 微分とは, 対応する格子点データに Y 微分を
! 作用させたデータのスペクトル変換のことである.
!
real(8), dimension(-km:km,2:lm) :: eh_Dy_eh
real(8), dimension(-km:km,2:lm), intent(in) :: eh
eh_Dy_eh = eh_et(et_Dy_et(et_eh(eh)))
end function eh_Dy_eh
| Function : | |||
| eh_et : | real(8), dimension(-km:km,2:lm)
| ||
| et : | real(8), dimension(-km:km,0:lm), intent(in)
|
チェビシェフデータからガラーキンデータへ変換する.
function eh_et(et)
!
! チェビシェフデータからガラーキンデータへ変換する.
!
real(8), dimension(-km:km,2:lm) :: eh_et
!(out) スペクトルデータ
real(8), dimension(-km:km,0:lm), intent(in) :: et
!(in) 格子点データ
eh_et = ah_at(et)
end function eh_et
| Function : | |||
| eh_ey : | real(8), dimension(-km:km,2:lm)
| ||
| ey : | real(8), dimension(-km:km,0:jm), intent(in)
|
格子データからガラーキンデータへ変換する.
function eh_ey(ey)
!
! 格子データからガラーキンデータへ変換する.
!
real(8), dimension(-km:km,2:lm) :: eh_ey
!(out) スペクトルデータ
real(8), dimension(-km:km,0:jm), intent(in) :: ey
!(in) 格子点データ
eh_ey = ah_ag(ey)
end function eh_ey
| Function : | |||
| eh_yx : | real(8), dimension(-km:km,2:lm)
| ||
| yx : | real(8), dimension(0:jm,0:im-1), intent(in)
|
格子データからガラーキンデータへ変換する.
function eh_yx(yx)
!
! 格子データからガラーキンデータへ変換する.
!
real(8), dimension(-km:km,2:lm) :: eh_yx
!(out) スペクトルデータ
real(8), dimension(0:jm,0:im-1), intent(in) :: yx
!(in) 格子点データ
eh_yx = eh_et(et_yx(yx))
end function eh_yx
| Function : | |
| ep_Dx_ep : | real(8), dimension(-km:km,2:lm) |
| ep : | real(8), dimension(-km:km,2:lm), intent(in) |
入力スペクトルデータに X 微分(∂x)を作用する.
スペクトルデータの X 微分とは, 対応する格子点データに X 微分を 作用させたデータのスペクトル変換のことである.
実際にはスペクトルデータに X 方向波数 k をかけて sin(kx) <-> cos(kx) 成分に入れ換える計算を行っている.
function ep_Dx_ep(ep)
!
! 入力スペクトルデータに X 微分(∂x)を作用する.
!
! スペクトルデータの X 微分とは, 対応する格子点データに X 微分を
! 作用させたデータのスペクトル変換のことである.
!
! 実際にはスペクトルデータに X 方向波数 k をかけて
! sin(kx) <-> cos(kx) 成分に入れ換える計算を行っている.
!
real(8), dimension(-km:km,2:lm) :: ep_Dx_ep
real(8), dimension(-km:km,2:lm), intent(in) :: ep
integer k
do k=-km,km
ep_Dx_ep(k,:) = (-2*pi*k/xl)*ep(-k,:)
enddo
end function ep_Dx_ep
| Function : | |
| ep_Dy_ep : | real(8), dimension(-km:km,2:lm) |
| ep : | real(8), dimension(-km:km,2:lm), intent(in) |
入力スペクトルデータに Y 微分(∂y)を作用する.
スペクトルデータの Y 微分とは, 対応する格子点データに Y 微分を 作用させたデータのスペクトル変換のことである.
function ep_Dy_ep(ep)
!
! 入力スペクトルデータに Y 微分(∂y)を作用する.
!
! スペクトルデータの Y 微分とは, 対応する格子点データに Y 微分を
! 作用させたデータのスペクトル変換のことである.
!
real(8), dimension(-km:km,2:lm) :: ep_Dy_ep
real(8), dimension(-km:km,2:lm), intent(in) :: ep
ep_Dy_ep = ep_et(et_Dy_et(et_ep(ep)))
end function ep_Dy_ep
| Function : | |||
| ep_et : | real(8), dimension(-km:km,2:lm)
| ||
| et : | real(8), dimension(-km:km,0:lm), intent(in)
|
チェビシェフデータからガラーキンデータへ変換する.
function ep_et(et)
!
! チェビシェフデータからガラーキンデータへ変換する.
!
real(8), dimension(-km:km,2:lm) :: ep_et
!(out) スペクトルデータ
real(8), dimension(-km:km,0:lm), intent(in) :: et
!(in) 格子点データ
ep_et = ap_at(et)
end function ep_et
| Function : | |||
| ep_ey : | real(8), dimension(-km:km,2:lm)
| ||
| ey : | real(8), dimension(-km:km,0:jm), intent(in)
|
格子データからガラーキンデータへ変換する.
function ep_ey(ey)
!
! 格子データからガラーキンデータへ変換する.
!
real(8), dimension(-km:km,2:lm) :: ep_ey
!(out) スペクトルデータ
real(8), dimension(-km:km,0:jm), intent(in) :: ey
!(in) 格子点データ
ep_ey = ap_ag(ey)
end function ep_ey
| Function : | |||
| ep_yx : | real(8), dimension(-km:km,2:lm)
| ||
| yx : | real(8), dimension(0:jm,0:im-1), intent(in)
|
格子データからガラーキンデータへ変換する.
function ep_yx(yx)
!
! 格子データからガラーキンデータへ変換する.
!
real(8), dimension(-km:km,2:lm) :: ep_yx
!(out) スペクトルデータ
real(8), dimension(0:jm,0:im-1), intent(in) :: yx
!(in) 格子点データ
ep_yx = ep_et(et_yx(yx))
end function ep_yx
| Function : | |
| eq_Dx_eq : | real(8), dimension(-km:km,4:lm) |
| eq : | real(8), dimension(-km:km,4:lm), intent(in) |
入力スペクトルデータに X 微分(∂x)を作用する.
スペクトルデータの X 微分とは, 対応する格子点データに X 微分を 作用させたデータのスペクトル変換のことである.
実際にはスペクトルデータに X 方向波数 k をかけて sin(kx) <-> cos(kx) 成分に入れ換える計算を行っている.
function eq_Dx_eq(eq)
!
! 入力スペクトルデータに X 微分(∂x)を作用する.
!
! スペクトルデータの X 微分とは, 対応する格子点データに X 微分を
! 作用させたデータのスペクトル変換のことである.
!
! 実際にはスペクトルデータに X 方向波数 k をかけて
! sin(kx) <-> cos(kx) 成分に入れ換える計算を行っている.
!
real(8), dimension(-km:km,4:lm) :: eq_Dx_eq
real(8), dimension(-km:km,4:lm), intent(in) :: eq
integer k
do k=-km,km
eq_Dx_eq(k,:) = (-2*pi*k/xl)*eq(-k,:)
enddo
end function eq_Dx_eq
| Function : | |
| eq_Dy_eq : | real(8), dimension(-km:km,4:lm) |
| eq : | real(8), dimension(-km:km,4:lm), intent(in) |
入力スペクトルデータに Y 微分(∂y)を作用する.
スペクトルデータの Y 微分とは, 対応する格子点データに Y 微分を 作用させたデータのスペクトル変換のことである.
function eq_Dy_eq(eq)
!
! 入力スペクトルデータに Y 微分(∂y)を作用する.
!
! スペクトルデータの Y 微分とは, 対応する格子点データに Y 微分を
! 作用させたデータのスペクトル変換のことである.
!
real(8), dimension(-km:km,4:lm) :: eq_Dy_eq
real(8), dimension(-km:km,4:lm), intent(in) :: eq
eq_Dy_eq = eq_et(et_Dy_et(et_eq(eq)))
end function eq_Dy_eq
| Function : | |||
| eq_Vor2Strm_et(-km:km,4:lm) : | real(8)
| ||
| et_Zeta(-km:km,0:lm) : | real(8), intent(IN)
|
2 次元水路領域 Fourier 展開 + チェビシェフ−ガラーキン法用モジュール 渦度から流線を計算する.
function eq_Vor2Strm_et(et_Zeta)
!
! 2 次元水路領域
! Fourier 展開 + チェビシェフ−ガラーキン法用モジュール
!
! 渦度から流線を計算する.
!
real(8), intent(IN) :: et_Zeta(-km:km,0:lm) !(in) 渦度 ζ=▽^2ψ
real(8) :: eq_Vor2Strm_et(-km:km,4:lm) !(out) 流線 ψ
real(8), allocatable :: LaplaMT(:,:,:)
real(8), allocatable :: LaplaInvMT(:,:,:)
integer, allocatable :: kpvot(:,:)
integer, parameter :: ls=4
real(8) :: eq_work(-km:km,ls:lm)
real(8) :: et_work(-km:km,0:lm)
integer :: k, m, n, l, p
logical :: first = .true.
save LaplaInvMT, kpvot, first
if ( .not. Set_RRFF ) call MessageNotify('E','eq_Vor2Strm_et', 'at_aq_galerkin_RRFF_module not initialized.')
if ( first ) then
first = .false.
allocate(LaplaMT(-km:km,0:lm,0:lm))
allocate(LaplaInvMT(-km:km,ls:lm,ls:lm),kpvot(-km:km,ls:lm))
LaplaMT=0.0D0
do l=0,lm
et_work = 0.0D0
et_work(:,l) = 1.0D0
et_work = et_Lapla_et(et_work)
LaplaMT(:,:,l) = et_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
eq_work=0.0
do m=ls,lm
do k=0,lm
eq_work(:,m)=eq_work(:,m) + alpha(k) * beta(k) * et_Zeta(:,k)* TQ(k,m)
enddo
enddo
eq_Vor2Strm_et = LUSolve(LaplaInvMT,kpvot,eq_work)
end function eq_Vor2Strm_et
| Function : | |||
| eq_et : | real(8), dimension(-km:km,4:lm)
| ||
| et : | real(8), dimension(-km:km,0:lm), intent(in)
|
チェビシェフデータからガラーキンデータへ変換する.
function eq_et(et)
!
! チェビシェフデータからガラーキンデータへ変換する.
!
real(8), dimension(-km:km,4:lm) :: eq_et
!(out) スペクトルデータ
real(8), dimension(-km:km,0:lm), intent(in) :: et
!(in) 格子点データ
eq_et = aq_at(et)
end function eq_et
| Function : | |||
| eq_ey : | real(8), dimension(-km:km,4:lm)
| ||
| ey : | real(8), dimension(-km:km,0:jm), intent(in)
|
格子データからガラーキンデータへ変換する.
function eq_ey(ey)
!
! 格子データからガラーキンデータへ変換する.
!
real(8), dimension(-km:km,4:lm) :: eq_ey
!(out) スペクトルデータ
real(8), dimension(-km:km,0:jm), intent(in) :: ey
!(in) 格子点データ
eq_ey = aq_ag(ey)
end function eq_ey
| Function : | |||
| eq_yx : | real(8), dimension(-km:km,4:lm)
| ||
| yx : | real(8), dimension(0:jm,0:im-1), intent(in)
|
格子データからガラーキンデータへ変換する.
function eq_yx(yx)
!
! 格子データからガラーキンデータへ変換する.
!
real(8), dimension(-km:km,4:lm) :: eq_yx
!(out) スペクトルデータ
real(8), dimension(0:jm,0:im-1), intent(in) :: yx
!(in) 格子点データ
eq_yx = eq_et(et_yx(yx))
end function eq_yx
| Function : | |
| et_Dx_et : | real(8), dimension(-km:km,0:lm) |
| et : | real(8), dimension(-km:km,0:lm), intent(in) |
入力スペクトルデータに X 微分(∂x)を作用する.
スペクトルデータの X 微分とは, 対応する格子点データに X 微分を 作用させたデータのスペクトル変換のことである.
実際にはスペクトルデータに X 方向波数 k をかけて sin(kx) <-> cos(kx) 成分に入れ換える計算を行っている.
Original external subprogram is et_module#et_Dx_et
| Function : | |||
| et_Dy_et : | real(8), dimension(-km:km,0:lm)
| ||
| et : | real(8), dimension(-km:km,0:lm), intent(in)
|
入力スペクトルデータに Y 微分(∂y)を作用する.
スペクトルデータの X 微分とは, 対応する格子点データに Y 微分を 作用させたデータのスペクトル変換のことである.
Original external subprogram is et_module#et_Dy_et
| Function : | |||
| et_Jacobian_et_et : | real(8), dimension(-km:km,0:lm)
| ||
| et_a : | real(8), dimension(-km:km,0:lm), intent(in)
| ||
| et_b : | real(8), dimension(-km:km,0:lm), intent(in)
|
2 つのスペクトルデータからヤコビアン
J(A,B)=(∂xA)(∂yB)-(∂yA)(∂xB)
を計算する.
2 つのスペクトルデータのヤコビアンとは, 対応する 2 つの
格子点データのヤコビアンのスペクトル変換のことである.
Original external subprogram is et_module#et_Jacobian_et_et
| Function : | |||
| et_LaplaInv_et : | real(8), dimension(-km:km,0:lm)
| ||
| et : | real(8), dimension(-km:km,0:lm),intent(in)
| ||
| values : | real(8), dimension(-km:km,2), intent(in), optional
|
境界で一様な値を与える条件(ディリクレ条件)下で, 入力スペクトルデータに逆ラプラシアン(∂xx+∂yy)**(-1)を作用する.
Chebyshev-tau 法による計算
スペクトルデータの逆ラプラシアンとは, 対応する格子点データに 逆ラプラシアンを作用させたデータのスペクトル変換のことである.
Original external subprogram is et_module#et_LaplaInv_et
| Function : | |||
| et_Lapla_et : | real(8), dimension(-km:km,0:lm)
| ||
| et : | real(8), dimension(-km:km,0:lm), intent(in)
|
入力スペクトルデータにラプラシアン(∂xx+∂yy)を作用する.
スペクトルデータのラプラシアンとは, 対応する格子点データに ラプラシアンを作用させたデータのスペクトル変換のことである.
Original external subprogram is et_module#et_Lapla_et
| Function : | |||
| et_eb : | real(8), dimension(-km:km,0:lm)
| ||
| eb : | real(8), dimension(-km:km,2:lm), intent(in)
|
ガラーキンデータからチェビシェフデータへ変換する.
function et_eb(eb)
!
! ガラーキンデータからチェビシェフデータへ変換する.
!
real(8), dimension(-km:km,0:lm) :: et_eb
!(out) 格子点データ
real(8), dimension(-km:km,2:lm), intent(in) :: eb
!(in) スペクトルデータ
et_eb = at_ab(eb)
end function et_eb
| Function : | |||
| et_ed : | real(8), dimension(-km:km,0:lm)
| ||
| ed : | real(8), dimension(-km:km,2:lm), intent(in)
|
ガラーキンデータからチェビシェフデータへ変換する.
function et_ed(ed)
!
! ガラーキンデータからチェビシェフデータへ変換する.
!
real(8), dimension(-km:km,0:lm) :: et_ed
!(out) 格子点データ
real(8), dimension(-km:km,2:lm), intent(in) :: ed
!(in) スペクトルデータ
et_ed = at_ad(ed)
end function et_ed
| Function : | |||
| et_ef : | real(8), dimension(-km:km,0:lm)
| ||
| ef : | real(8), dimension(-km:km,2:lm), intent(in)
|
ガラーキンデータからチェビシェフデータへ変換する.
function et_ef(ef)
!
! ガラーキンデータからチェビシェフデータへ変換する.
!
real(8), dimension(-km:km,0:lm) :: et_ef
!(out) 格子点データ
real(8), dimension(-km:km,2:lm), intent(in) :: ef
!(in) スペクトルデータ
et_ef = at_af(ef)
end function et_ef
| Function : | |||
| et_eh : | real(8), dimension(-km:km,0:lm)
| ||
| eh : | real(8), dimension(-km:km,2:lm), intent(in)
|
ガラーキンデータからチェビシェフデータへ変換する.
function et_eh(eh)
!
! ガラーキンデータからチェビシェフデータへ変換する.
!
real(8), dimension(-km:km,0:lm) :: et_eh
!(out) 格子点データ
real(8), dimension(-km:km,2:lm), intent(in) :: eh
!(in) スペクトルデータ
et_eh = at_ah(eh)
end function et_eh
| Function : | |||
| et_ep : | real(8), dimension(-km:km,0:lm)
| ||
| ep : | real(8), dimension(-km:km,2:lm), intent(in)
|
ガラーキンデータからチェビシェフデータへ変換する.
function et_ep(ep)
!
! ガラーキンデータからチェビシェフデータへ変換する.
!
real(8), dimension(-km:km,0:lm) :: et_ep
!(out) 格子点データ
real(8), dimension(-km:km,2:lm), intent(in) :: ep
!(in) スペクトルデータ
et_ep = at_ap(ep)
end function et_ep
| Function : | |||
| et_eq : | real(8), dimension(-km:km,0:lm)
| ||
| eq : | real(8), dimension(-km:km,4:lm), intent(in)
|
ガラーキンデータからチェビシェフデータへ変換する.
function et_eq(eq)
!
! ガラーキンデータからチェビシェフデータへ変換する.
!
real(8), dimension(-km:km,0:lm) :: et_eq
!(out) 格子点データ
real(8), dimension(-km:km,4:lm), intent(in) :: eq
!(in) スペクトルデータ
et_eq = at_aq(eq)
end function et_eq
| Function : | |||
| et_ev : | real(8), dimension(-km:km,0:lm)
| ||
| ev : | real(8), dimension(-km:km,2:lm), intent(in)
|
ガラーキンデータからチェビシェフデータへ変換する.
function et_ev(ev)
!
! ガラーキンデータからチェビシェフデータへ変換する.
!
real(8), dimension(-km:km,0:lm) :: et_ev
!(out) 格子点データ
real(8), dimension(-km:km,2:lm), intent(in) :: ev
!(in) スペクトルデータ
et_ev = at_av(ev)
end function et_ev
| Subroutine : | |||
| i : | integer,intent(in)
| ||
| j : | integer,intent(in)
| ||
| k : | integer,intent(in)
| ||
| l : | integer,intent(in)
| ||
| xmin : | real(8),intent(in)
| ||
| xmax : | real(8),intent(in)
| ||
| ymin : | real(8),intent(in)
| ||
| ymax : | 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_cfdy0_ymin : | real(8),intent(in),optional
| ||
| MM_cfdy1_ymin : | real(8),intent(In),optional
| ||
| MM_cfdy0_ymax : | real(8),intent(in),optional
| ||
| MM_cfdy1_ymax : | real(8),intent(in),optional
| ||
| MMex_cfdy0_ymin(-k:k) : | real(8),intent(in),optional
| ||
| MMex_cfdy1_ymin(-k:k) : | real(8),intent(in),optional
| ||
| MMex_cfdy0_ymax(-k:k) : | real(8),intent(in),optional
| ||
| MMex_cfdy1_ymax(-k:k) : | real(8),intent(in),optional
|
2 次元水路領域 Fourier 展開 + チェビシェフ−ガラーキン法用モジュール 初期化サブルーチン
subroutine et_galerkin_Initial(i,j,k,l,xmin,xmax,ymin,ymax, DD,NN,DN,ND,velBC, MM_cfdy0_ymin, MM_cfdy1_ymin, MM_cfdy0_ymax, MM_cfdy1_ymax, MMex_cfdy0_ymin, MMex_cfdy1_ymin, MMex_cfdy0_ymax, MMex_cfdy1_ymax)
!
! 2 次元水路領域
! Fourier 展開 + チェビシェフ−ガラーキン法用モジュール
!
! 初期化サブルーチン
!
integer,intent(in) :: i, j ! 格子点の設定(X,Y)
integer,intent(in) :: k, l ! 切断波数の設定(X,Y)
real(8),intent(in) :: xmin, xmax ! X 座標範囲
real(8),intent(in) :: ymin, ymax ! Y 座標範囲
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_cfdy0_ymin ! (0階微分@x=ymin)
real(8),intent(In),optional :: MM_cfdy1_ymin ! (1階微分@x=ymin)
real(8),intent(in),optional :: MM_cfdy0_ymax ! (0階微分@x=ymax)
real(8),intent(in),optional :: MM_cfdy1_ymax ! (1階微分@x=ymax)
! at_ah_galerkin_MMex_module 境界条件係数
real(8),intent(in),optional :: MMex_cfdy0_ymin(-k:k) ! (0階微分@x=ymin)
real(8),intent(in),optional :: MMex_cfdy1_ymin(-k:k) ! (1階微分@x=ymin)
real(8),intent(in),optional :: MMex_cfdy0_ymax(-k:k) ! (0階微分@x=ymax)
real(8),intent(in),optional :: MMex_cfdy1_ymax(-k:k) ! (1階微分@x=ymax)
! at_aq_galerkin_RRFF_module 速度場境界条件
character(LEN=2),intent(in),optional :: velBC ! 境界条件(RR/SS/RS/SR)
!--------------- 引数処理 -----------------
im=i
jm = j
km=k
lm=l
xl = xmax-xmin
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_cfdy0_ymin) .AND.present(MM_cfdy1_ymin) .AND. present(MM_cfdy0_ymax) .AND.present(MM_cfdy1_ymax) ) Set_MM=.true.
if ( present(MMex_cfdy0_ymin) .AND.present(MMex_cfdy1_ymin) .AND. present(MMex_cfdy0_ymax) .AND.present(MMex_cfdy1_ymax) ) Set_MMex=.true.
if ( present(velBC) ) Set_RRFF = .true.
!--------------- モジュール初期化 -----------------
call et_Initial(im,jm,km,lm,xmin,xmax,ymin,ymax)
if ( Set_DD ) call at_ad_galerkin_DD_Initial(jm,lm)
if ( Set_NN ) call at_av_galerkin_NN_Initial(jm,lm)
if ( Set_DN ) call at_ap_galerkin_DN_Initial(jm,lm)
if ( Set_ND ) call at_ab_galerkin_ND_Initial(jm,lm)
if ( Set_MM ) call at_af_galerkin_MM_Initial (jm,lm, MM_cfdy0_ymax, MM_cfdy1_ymax, MM_cfdy0_ymin, MM_cfdy1_ymin )
if ( Set_MMex ) call at_ah_galerkin_MMex_Initial (jm,lm,2*km+1, MMex_cfdy0_ymax, MMex_cfdy1_ymax, MMex_cfdy0_ymin, MMex_cfdy1_ymin )
if ( Set_RRFF ) call at_aq_galerkin_RRFF_Initial(jm,lm,velBC)
call MessageNotify('M','et_galerkin_initial','et_galerkin_module (2013/08/24) is initialized')
end subroutine et_galerkin_initial
| Function : | |||
| et_yx : | real(8), dimension(-km:km,0:lm)
| ||
| yx : | real(8), dimension(0:jm,0:im-1), intent(in)
|
格子データからスペクトルデータへ変換する.
Original external subprogram is et_module#et_yx
| Function : | |
| ev_Dx_ev : | real(8), dimension(-km:km,2:lm) |
| ev : | real(8), dimension(-km:km,2:lm), intent(in) |
入力スペクトルデータに X 微分(∂x)を作用する.
スペクトルデータの X 微分とは, 対応する格子点データに X 微分を 作用させたデータのスペクトル変換のことである.
実際にはスペクトルデータに X 方向波数 k をかけて sin(kx) <-> cos(kx) 成分に入れ換える計算を行っている.
function ev_Dx_ev(ev)
!
! 入力スペクトルデータに X 微分(∂x)を作用する.
!
! スペクトルデータの X 微分とは, 対応する格子点データに X 微分を
! 作用させたデータのスペクトル変換のことである.
!
! 実際にはスペクトルデータに X 方向波数 k をかけて
! sin(kx) <-> cos(kx) 成分に入れ換える計算を行っている.
!
real(8), dimension(-km:km,2:lm) :: ev_Dx_ev
real(8), dimension(-km:km,2:lm), intent(in) :: ev
integer k
do k=-km,km
ev_Dx_ev(k,:) = (-2*pi*k/xl)*ev(-k,:)
enddo
end function ev_Dx_ev
| Function : | |
| ev_Dy_ev : | real(8), dimension(-km:km,2:lm) |
| ev : | real(8), dimension(-km:km,2:lm), intent(in) |
入力スペクトルデータに Y 微分(∂y)を作用する.
スペクトルデータの Y 微分とは, 対応する格子点データに Y 微分を 作用させたデータのスペクトル変換のことである.
function ev_Dy_ev(ev)
!
! 入力スペクトルデータに Y 微分(∂y)を作用する.
!
! スペクトルデータの Y 微分とは, 対応する格子点データに Y 微分を
! 作用させたデータのスペクトル変換のことである.
!
real(8), dimension(-km:km,2:lm) :: ev_Dy_ev
real(8), dimension(-km:km,2:lm), intent(in) :: ev
ev_Dy_ev = ev_et(et_Dy_et(et_ev(ev)))
end function ev_Dy_ev
| Function : | |||
| ev_et : | real(8), dimension(-km:km,2:lm)
| ||
| et : | real(8), dimension(-km:km,0:lm), intent(in)
|
チェビシェフデータからガラーキンデータへ変換する.
function ev_et(et)
!
! チェビシェフデータからガラーキンデータへ変換する.
!
real(8), dimension(-km:km,2:lm) :: ev_et
!(out) スペクトルデータ
real(8), dimension(-km:km,0:lm), intent(in) :: et
!(in) 格子点データ
ev_et = av_at(et)
end function ev_et
| Function : | |||
| ev_ey : | real(8), dimension(-km:km,2:lm)
| ||
| ey : | real(8), dimension(-km:km,0:jm), intent(in)
|
格子データからガラーキンデータへ変換する.
function ev_ey(ey)
!
! 格子データからガラーキンデータへ変換する.
!
real(8), dimension(-km:km,2:lm) :: ev_ey
!(out) スペクトルデータ
real(8), dimension(-km:km,0:jm), intent(in) :: ey
!(in) 格子点データ
ev_ey = av_ag(ey)
end function ev_ey
| Function : | |||
| ev_yx : | real(8), dimension(-km:km,2:lm)
| ||
| yx : | real(8), dimension(0:jm,0:im-1), intent(in)
|
格子データからガラーキンデータへ変換する.
function ev_yx(yx)
!
! 格子データからガラーキンデータへ変換する.
!
real(8), dimension(-km:km,2:lm) :: ev_yx
!(out) スペクトルデータ
real(8), dimension(0:jm,0:im-1), intent(in) :: yx
!(in) 格子点データ
ev_yx = ev_et(et_yx(yx))
end function ev_yx
| Function : | |||
| ey_eb : | real(8), dimension(-km:km,0:jm)
| ||
| eb : | real(8), dimension(-km:km,2:lm), intent(in)
|
ガラーキンデータから格子データへ変換する.
function ey_eb(eb)
!
! ガラーキンデータから格子データへ変換する.
!
real(8), dimension(-km:km,0:jm) :: ey_eb
!(out) 格子点データ
real(8), dimension(-km:km,2:lm), intent(in) :: eb
!(in) スペクトルデータ
ey_eb = ag_ab(eb)
end function ey_eb
| Function : | |||
| ey_ed : | real(8), dimension(-km:km,0:jm)
| ||
| ed : | real(8), dimension(-km:km,2:lm), intent(in)
|
ガラーキンデータから格子データへ変換する.
function ey_ed(ed)
!
! ガラーキンデータから格子データへ変換する.
!
real(8), dimension(-km:km,0:jm) :: ey_ed
!(out) 格子点データ
real(8), dimension(-km:km,2:lm), intent(in) :: ed
!(in) スペクトルデータ
ey_ed = ag_ad(ed)
end function ey_ed
| Function : | |||
| ey_ef : | real(8), dimension(-km:km,0:jm)
| ||
| ef : | real(8), dimension(-km:km,2:lm), intent(in)
|
ガラーキンデータから格子データへ変換する.
function ey_ef(ef)
!
! ガラーキンデータから格子データへ変換する.
!
real(8), dimension(-km:km,0:jm) :: ey_ef
!(out) 格子点データ
real(8), dimension(-km:km,2:lm), intent(in) :: ef
!(in) スペクトルデータ
ey_ef = ag_af(ef)
end function ey_ef
| Function : | |||
| ey_eh : | real(8), dimension(-km:km,0:jm)
| ||
| eh : | real(8), dimension(-km:km,2:lm), intent(in)
|
ガラーキンデータから格子データへ変換する.
function ey_eh(eh)
!
! ガラーキンデータから格子データへ変換する.
!
real(8), dimension(-km:km,0:jm) :: ey_eh
!(out) 格子点データ
real(8), dimension(-km:km,2:lm), intent(in) :: eh
!(in) スペクトルデータ
ey_eh = ag_ah(eh)
end function ey_eh
| Function : | |||
| ey_ep : | real(8), dimension(-km:km,0:jm)
| ||
| ep : | real(8), dimension(-km:km,2:lm), intent(in)
|
ガラーキンデータから格子データへ変換する.
function ey_ep(ep)
!
! ガラーキンデータから格子データへ変換する.
!
real(8), dimension(-km:km,0:jm) :: ey_ep
!(out) 格子点データ
real(8), dimension(-km:km,2:lm), intent(in) :: ep
!(in) スペクトルデータ
ey_ep = ag_ap(ep)
end function ey_ep
| Function : | |||
| ey_eq : | real(8), dimension(-km:km,0:jm)
| ||
| eq : | real(8), dimension(-km:km,4:lm), intent(in)
|
ガラーキンデータから格子データへ変換する.
function ey_eq(eq)
!
! ガラーキンデータから格子データへ変換する.
!
real(8), dimension(-km:km,0:jm) :: ey_eq
!(out) 格子点データ
real(8), dimension(-km:km,4:lm), intent(in) :: eq
!(in) スペクトルデータ
ey_eq = ag_aq(eq)
end function ey_eq
| Function : | |||
| ey_ev : | real(8), dimension(-km:km,0:jm)
| ||
| ev : | real(8), dimension(-km:km,2:lm), intent(in)
|
ガラーキンデータから格子データへ変換する.
function ey_ev(ev)
!
! ガラーキンデータから格子データへ変換する.
!
real(8), dimension(-km:km,0:jm) :: ey_ev
!(out) 格子点データ
real(8), dimension(-km:km,2:lm), intent(in) :: ev
!(in) スペクトルデータ
ey_ev = ag_av(ev)
end function ey_ev
| 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_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 : | |||
| 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 : | |
| 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_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 : | |||
| 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 : | |
| 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
| 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
| 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
| 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_RRFF#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_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 : | |||
| 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 : | |||
| x_AvrY_yx : | real(8), dimension(0:im-1)
| ||
| yx : | real(8), dimension(0:jm,0:im-1)
|
2 次元格子点データの Y 方向平均
実際には格子点データ各点毎に y_Y_Weight をかけた総和を計算し, y_Y_Weight の総和で割ることで平均している.
Original external subprogram is et_module#x_AvrY_yx
| Function : | |||
| x_IntY_yx : | real(8), dimension(0:im-1)
| ||
| yx : | real(8), dimension(0:jm,0:im-1)
|
Y 方向積分
2 次元格子点データの Y 方向積分
実際には格子点データ各点毎に y_Y_Weight をかけた総和を計算している.
Original external subprogram is et_module#x_IntY_yx
| Function : | |||
| y_AvrX_yx : | real(8), dimension(0:jm)
| ||
| yx : | real(8), dimension(0:jm,0:im-1)
|
2 次元格子点データの X 方向平均
実際には格子点データ各点毎に x_X_Weight をかけた総和を計算し, x_X_Weight の総和で割ることで平均している.
Original external subprogram is et_module#y_AvrX_yx
| Function : | |||
| y_IntX_yx : | real(8), dimension(0:jm)
| ||
| yx : | real(8), dimension(0:jm,0:im-1)
|
X 方向積分
2 次元格子点データの X 方向積分
実際には格子点データ各点毎に x_X_Weight をかけた総和を計算している.
Original external subprogram is et_module#y_IntX_yx
| 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_RRFF#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
| Variable : | |
| yx_X : | real(8), dimension(:,:), allocatable |
Original external subprogram is et_module#yx_X
| Variable : | |
| yx_Y : | real(8), dimension(:,:), allocatable |
Original external subprogram is et_module#yx_Y
| Function : | |||
| yx_eb : | real(8), dimension(0:jm,0:im-1)
| ||
| eb : | real(8), dimension(-km:km,2:lm), intent(in)
|
ガラーキンデータから格子データへ変換する.
function yx_eb(eb)
!
! ガラーキンデータから格子データへ変換する.
!
real(8), dimension(0:jm,0:im-1) :: yx_eb
!(out) 格子点データ
real(8), dimension(-km:km,2:lm), intent(in) :: eb
!(in) スペクトルデータ
yx_eb = yx_et(et_eb(eb))
end function yx_eb
| Function : | |||
| yx_ed : | real(8), dimension(0:jm,0:im-1)
| ||
| ed : | real(8), dimension(-km:km,2:lm), intent(in)
|
ガラーキンデータから格子データへ変換する.
function yx_ed(ed)
!
! ガラーキンデータから格子データへ変換する.
!
real(8), dimension(0:jm,0:im-1) :: yx_ed
!(out) 格子点データ
real(8), dimension(-km:km,2:lm), intent(in) :: ed
!(in) スペクトルデータ
yx_ed = yx_et(et_ed(ed))
end function yx_ed
| Function : | |||
| yx_ef : | real(8), dimension(0:jm,0:im-1)
| ||
| ef : | real(8), dimension(-km:km,2:lm), intent(in)
|
ガラーキンデータから格子データへ変換する.
function yx_ef(ef)
!
! ガラーキンデータから格子データへ変換する.
!
real(8), dimension(0:jm,0:im-1) :: yx_ef
!(out) 格子点データ
real(8), dimension(-km:km,2:lm), intent(in) :: ef
!(in) スペクトルデータ
yx_ef = yx_et(et_ef(ef))
end function yx_ef
| Function : | |||
| yx_eh : | real(8), dimension(0:jm,0:im-1)
| ||
| eh : | real(8), dimension(-km:km,2:lm), intent(in)
|
ガラーキンデータから格子データへ変換する.
function yx_eh(eh)
!
! ガラーキンデータから格子データへ変換する.
!
real(8), dimension(0:jm,0:im-1) :: yx_eh
!(out) 格子点データ
real(8), dimension(-km:km,2:lm), intent(in) :: eh
!(in) スペクトルデータ
yx_eh = yx_et(et_eh(eh))
end function yx_eh
| Function : | |||
| yx_ep : | real(8), dimension(0:jm,0:im-1)
| ||
| ep : | real(8), dimension(-km:km,2:lm), intent(in)
|
ガラーキンデータから格子データへ変換する.
function yx_ep(ep)
!
! ガラーキンデータから格子データへ変換する.
!
real(8), dimension(0:jm,0:im-1) :: yx_ep
!(out) 格子点データ
real(8), dimension(-km:km,2:lm), intent(in) :: ep
!(in) スペクトルデータ
yx_ep = yx_et(et_ep(ep))
end function yx_ep
| Function : | |||
| yx_eq : | real(8), dimension(0:jm,0:im-1)
| ||
| eq : | real(8), dimension(-km:km,4:lm), intent(in)
|
ガラーキンデータから格子データへ変換する.
function yx_eq(eq)
!
! ガラーキンデータから格子データへ変換する.
!
real(8), dimension(0:jm,0:im-1) :: yx_eq
!(out) 格子点データ
real(8), dimension(-km:km,4:lm), intent(in) :: eq
!(in) スペクトルデータ
yx_eq = yx_et(et_eq(eq))
end function yx_eq
| Function : | |||
| yx_et : | real(8), dimension(0:jm,0:im-1)
| ||
| et : | real(8), dimension(-km:km,0:lm), intent(in)
|
スペクトルデータから格子データへ変換する.
Original external subprogram is et_module#yx_et
| Function : | |||
| yx_ev : | real(8), dimension(0:jm,0:im-1)
| ||
| ev : | real(8), dimension(-km:km,2:lm), intent(in)
|
ガラーキンデータから格子データへ変換する.
function yx_ev(ev)
!
! ガラーキンデータから格子データへ変換する.
!
real(8), dimension(0:jm,0:im-1) :: yx_ev
!(out) 格子点データ
real(8), dimension(-km:km,2:lm), intent(in) :: ev
!(in) スペクトルデータ
yx_ev = yx_et(et_ev(ev))
end function yx_ev