Class et_galerkin_module
In: libsrc/et_galerkin_module/et_galerkin_module.f90

et_galerkin_module

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_, yx_, x_, y_...) は, 返す値の形を示している.
    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 で自由すべり/粘着条件)
  • 関数名の間の文字列(Dx, Dy, Lapla, LaplaInv, Jacobian)は, その関数の作用を表している.
  • 関数名の最後 (_et_et, _et, _yx, _x, _y...) は, 入力変数のスペクトルデータ 格子点データおよびガラーキンであることを示している.
    _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 で自由すべり/粘着条件)

各データの種類の説明

  • yx : 2 次元格子点データ.
    • 変数の種類と次元は real(8), dimension(0:jm,0:im-1).
    • im, jm はそれぞれ X, Y 座標の格子点数であり, サブルーチン et_galerkin_Initial にてあらかじめ設定しておく.
    • 第 1 次元が Y 座標の格子点位置番号, 第 2 次元が X 座標の 格子点位置番号である (X, Y の順ではない)ことに注意.
  • et : 2 次元スペクトルデータ.
    • 変数の種類と次元は real(8), dimension(-km:km,0:lm).
    • km, lm はそれぞれ X, Y 方向の最大波数であり, サブルーチン et_galerkin_Initial にてあらかじめ設定しておく.
    • スペクトルデータの格納のされ方については…
  • ed, ev, eb, ef, eh : 2 次元ガラーキンデータ.
    • 変数の種類と次元は real(8), dimension(-km:km,2:lm).
    • km, lm はそれぞれ X, Y 方向の最大波数であり, サブルーチン et_galerkin_Initial にてあらかじめ設定しておく.
  • eq : 2 次元ガラーキンデータ.
    • 変数の種類と次元は real(8), dimension(-km:km,4:lm).
    • km, lm はそれぞれ X, Y 方向の最大波数であり, サブルーチン et_galerkin_Initial にてあらかじめ設定しておく.
  • x, y : X, Y 方向 1 次元格子点データ.
    • 変数の種類と次元はそれぞれ real(8), dimension(0:im-1) および real(8), dimension(0:jm).
  • e, t : 1 次元スペクトルデータ.
    • 変数の種類と次元は real(8), dimension(-km:km) および real(8), dimension(-lm:lm).
  • ax, ay : 1 次元格子点データの並んだ 2 次元配列.
    • 変数の種類と次元は real(8), dimension(:,0:im-1) および real(8), dimension(:,0:jm).
  • ae, at : 1 次元スペクトルデータの並んだ 2 次元配列.
    • 変数の種類と次元は real(8), dimension(:,-km:km) および real(8), dimension(:,0:lm).
  • et_ で始まる関数が返す値はスペクトルデータに同じ.
  • ed_, ev_, eb_, ep_, ef_, eh_, eq_ で始まる関数が返す値は ガラーキンデータに同じ.
  • yx_ で始まる関数が返す値は 2 次元格子点データに同じ.
  • x_, y_ で始まる関数が返す値は 1 次元格子点データに同じ.
  • スペクトル/ガラーキンデータに対する微分等の作用とは, 対応する格子点データに微分などを作用させたデータを スペクトル/ガラーキン変換したものことである.

変数・手続き群の要約

初期化

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))))

Methods

AvrX_x   AvrYX_yx   AvrY_y   IntX_x   IntYX_yx   IntY_y   b_Dy_b   b_t   b_y   d_Dy_d   d_t   d_y   eb_Dx_eb   eb_Dy_eb   eb_et   eb_ey   eb_yx   ed_Dx_ed   ed_Dy_ed   ed_et   ed_ey   ed_yx   ef_Dx_ef   ef_Dy_ef   ef_et   ef_ey   ef_yx   eh_Dx_eh   eh_Dy_eh   eh_et   eh_ey   eh_yx   ep_Dx_ep   ep_Dy_ep   ep_et   ep_ey   ep_yx   eq_Dx_eq   eq_Dy_eq   eq_Vor2Strm_et   eq_et   eq_ey   eq_yx   et_Dx_et   et_Dy_et   et_Jacobian_et_et   et_LaplaInv_et   et_Lapla_et   et_eb   et_ed   et_ef   et_eh   et_ep   et_eq   et_ev   et_galerkin_Initial   et_yx   ev_Dx_ev   ev_Dy_ev   ev_et   ev_ey   ev_yx   ey_eb   ey_ed   ey_ef   ey_eh   ey_ep   ey_eq   ey_ev   f_Dy_f   f_t   f_y   p_Dy_p   p_t   p_y   q_Dy_q   q_t   q_y   t_b   t_d   t_f   t_p   t_q   t_v   v_Dy_v   v_t   v_y   x_AvrY_yx   x_IntY_yx   y_AvrX_yx   y_IntX_yx   y_b   y_d   y_f   y_p   y_q   y_v   yx_X   yx_Y   yx_eb   yx_ed   yx_ef   yx_eh   yx_ep   yx_eq   yx_et   yx_ev  

Included Modules

dc_message lumatrix et_module at_ad_galerkin_DD at_av_galerkin_NN at_ab_galerkin_ND at_ap_galerkin_DN at_af_galerkin_MM at_ah_galerkin_MMex at_aq_galerkin_RRFF

Public Instance methods

AvrX_x( x ) result(AvrX_x)
Function :
AvrX_x :real(8)
: (out) 平均値
x :real(8), dimension(0:im-1)
: (in) 1 次元格子点データ

1 次元(X)格子点データの X 方向平均

実際には格子点データ各点毎に x_X_Weight をかけた総和を計算し, x_X_Weight の総和で割ることで平均している.

Original external subprogram is et_module#AvrX_x

AvrYX_yx( yx ) result(AvrYX_yx)
Function :
AvrYX_yx :real(8)
: (out) 平均値
yx :real(8), dimension(0:jm,0:im-1)
: (in) 2 次元格子点データ

2 次元格子点データの全領域平均

実際には格子点データ各点毎に x_X_Weight, y_Y_Weight をかけた 総和を計算し, x_X_Weight*y_Y_Weight の総和で割ることで平均している.

Original external subprogram is et_module#AvrYX_yx

AvrY_y( y ) result(AvrY_y)
Function :
AvrY_y :real(8)
: (out) 平均値
y :real(8), dimension(0:jm)
: (in) 1 次元格子点データ

1 次元(Y)格子点データの Y 方向平均

実際には格子点データ各点毎に y_Y_Weight をかけた総和を計算し, y_Y_Weight の総和で割ることで平均している.

Original external subprogram is et_module#AvrY_y

IntX_x( x ) result(IntX_x)
Function :
IntX_x :real(8)
: (out) 積分値
x :real(8), dimension(0:im-1)
: (in) 1 次元格子点データ

X 方向積分

1 次元(X)格子点データの X 方向積分

実際には格子点データ各点毎に x_X_Weight をかけた総和を計算している.

Original external subprogram is et_module#IntX_x

IntYX_yx( yx ) result(IntYX_yx)
Function :
IntYX_yx :real(8)
: (out) 積分値
yx :real(8), dimension(0:jm,0:im-1)
: (in) 2 次元格子点データ

全領域積分

2 次元格子点データの全領域積分および平均.

実際には格子点データ各点毎に x_X_Weight, y_Y_Weight をかけた 総和を計算している.

Original external subprogram is et_module#IntYX_yx

IntY_y( y ) result(IntY_y)
Function :
IntY_y :real(8)
: (out) 積分値
y :real(8), dimension(0:jm)
: (in) 1 次元格子点データ

Y 方向積分

1 次元(Y)格子点データの Y 方向積分

実際には格子点データ各点毎に y_Y_Weight をかけた総和を計算している.

Original external subprogram is et_module#IntY_y

b_Dy_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)
: (out) ガラーキン係数
t_data(0:km) :real(8), intent(IN)
: (in) チェビシェフ係数

チェビシェフ−ガラーキン法 片端ノイマン片端ディリクレ境界条件

チェビシェフ係数 -> ガラーキン係数変換(1次元データ)

Original external subprogram is at_ab_galerkin_ND#b_t

b_y( g_data ) result(b_g)
Function :
b_g(ks:km) :real(8)
: (out) ガラーキン係数
g_data(0:im) :real(8), intent(IN)
: (in) 格子点データ

チェビシェフ−ガラーキン法 片端ノイマン片端ディリクレ境界条件

格子点データ -> ガラーキン係数変換(1次元データ)

Original external subprogram is at_ab_galerkin_ND#b_g

d_Dy_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)
: (out) ガラーキン係数
t_data(0:km) :real(8), intent(IN)
: (in) チェビシェフ係数

チェビシェフ−ガラーキン法 両端ディリクレ境界条件

チェビシェフ係数 -> ガラーキン係数変換(1次元データ)

Original external subprogram is at_ad_galerkin_DD#d_t

d_y( g_data ) result(d_g)
Function :
d_g(ks:km) :real(8)
: (out) ガラーキン係数
g_data(0:im) :real(8), intent(IN)
: (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) 成分に入れ換える計算を行っている.

[Source]

    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 微分を 作用させたデータのスペクトル変換のことである.

[Source]

    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)
: (out) スペクトルデータ
et :real(8), dimension(-km:km,0:lm), intent(in)
: (in) 格子点データ

チェビシェフデータからガラーキンデータへ変換する.

[Source]

    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)
: (out) スペクトルデータ
ey :real(8), dimension(-km:km,0:jm), intent(in)
: (in) 格子点データ

格子データからガラーキンデータへ変換する.

[Source]

    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)
: (out) スペクトルデータ
yx :real(8), dimension(0:jm,0:im-1), intent(in)
: (in) 格子点データ

格子データからガラーキンデータへ変換する.

[Source]

    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) 成分に入れ換える計算を行っている.

[Source]

    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 微分を 作用させたデータのスペクトル変換のことである.

[Source]

    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)
: (out) スペクトルデータ
et :real(8), dimension(-km:km,0:lm), intent(in)
: (in) 格子点データ

チェビシェフデータからガラーキンデータへ変換する.

[Source]

    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)
: (out) スペクトルデータ
ey :real(8), dimension(-km:km,0:jm), intent(in)
: (in) 格子点データ

格子データからガラーキンデータへ変換する.

[Source]

    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)
: (out) スペクトルデータ
yx :real(8), dimension(0:jm,0:im-1), intent(in)
: (in) 格子点データ

格子データからガラーキンデータへ変換する.

[Source]

    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) 成分に入れ換える計算を行っている.

[Source]

    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 微分を 作用させたデータのスペクトル変換のことである.

[Source]

    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)
: (out) スペクトルデータ
et :real(8), dimension(-km:km,0:lm), intent(in)
: (in) 格子点データ

チェビシェフデータからガラーキンデータへ変換する.

[Source]

    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)
: (out) スペクトルデータ
ey :real(8), dimension(-km:km,0:jm), intent(in)
: (in) 格子点データ

格子データからガラーキンデータへ変換する.

[Source]

    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)
: (out) スペクトルデータ
yx :real(8), dimension(0:jm,0:im-1), intent(in)
: (in) 格子点データ

格子データからガラーキンデータへ変換する.

[Source]

    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) 成分に入れ換える計算を行っている.

[Source]

    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 微分を 作用させたデータのスペクトル変換のことである.

[Source]

    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)
: (out) スペクトルデータ
et :real(8), dimension(-km:km,0:lm), intent(in)
: (in) 格子点データ

チェビシェフデータからガラーキンデータへ変換する.

[Source]

    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)
: (out) スペクトルデータ
ey :real(8), dimension(-km:km,0:jm), intent(in)
: (in) 格子点データ

格子データからガラーキンデータへ変換する.

[Source]

    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)
: (out) スペクトルデータ
yx :real(8), dimension(0:jm,0:im-1), intent(in)
: (in) 格子点データ

格子データからガラーキンデータへ変換する.

[Source]

    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) 成分に入れ換える計算を行っている.

[Source]

    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 微分を 作用させたデータのスペクトル変換のことである.

[Source]

    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)
: (out) スペクトルデータ
et :real(8), dimension(-km:km,0:lm), intent(in)
: (in) 格子点データ

チェビシェフデータからガラーキンデータへ変換する.

[Source]

    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)
: (out) スペクトルデータ
ey :real(8), dimension(-km:km,0:jm), intent(in)
: (in) 格子点データ

格子データからガラーキンデータへ変換する.

[Source]

    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)
: (out) スペクトルデータ
yx :real(8), dimension(0:jm,0:im-1), intent(in)
: (in) 格子点データ

格子データからガラーキンデータへ変換する.

[Source]

    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) 成分に入れ換える計算を行っている.

[Source]

    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 微分を 作用させたデータのスペクトル変換のことである.

[Source]

    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)
: (out) 流線 ψ
et_Zeta(-km:km,0:lm) :real(8), intent(IN)
: (in) 渦度 ζ=▽^2ψ
 2 次元水路領域
 Fourier 展開 + チェビシェフ−ガラーキン法用モジュール

 渦度から流線を計算する.

[Source]

    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)
: (out) スペクトルデータ
et :real(8), dimension(-km:km,0:lm), intent(in)
: (in) 格子点データ

チェビシェフデータからガラーキンデータへ変換する.

[Source]

    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)
: (out) スペクトルデータ
ey :real(8), dimension(-km:km,0:jm), intent(in)
: (in) 格子点データ

格子データからガラーキンデータへ変換する.

[Source]

    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)
: (out) スペクトルデータ
yx :real(8), dimension(0:jm,0:im-1), intent(in)
: (in) 格子点データ

格子データからガラーキンデータへ変換する.

[Source]

    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
et_Dx_et( et ) result(et_Dx_et)
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

et_Dy_et( et ) result(et_Dy_et)
Function :
et_Dy_et :real(8), dimension(-km:km,0:lm)
: (out) スペクトルデータの Y 微分
et :real(8), dimension(-km:km,0:lm), intent(in)
: (in) 入力スペクトルデータ

入力スペクトルデータに Y 微分(∂y)を作用する.

スペクトルデータの X 微分とは, 対応する格子点データに Y 微分を 作用させたデータのスペクトル変換のことである.

Original external subprogram is et_module#et_Dy_et

et_Jacobian_et_et( et_a, et_b ) result(et_Jacobian_et_et)
Function :
et_Jacobian_et_et :real(8), dimension(-km:km,0:lm)
: (out) 2 つのスペクトルデータのヤコビアン
et_a :real(8), dimension(-km:km,0:lm), intent(in)
: (in) 1つ目の入力スペクトルデータ
et_b :real(8), dimension(-km:km,0:lm), intent(in)
: (in) 2つ目の入力スペクトルデータ
 2 つのスペクトルデータからヤコビアン

    J(A,B)=(∂xA)(∂yB)-(∂yA)(∂xB)

 を計算する.

 2 つのスペクトルデータのヤコビアンとは, 対応する 2 つの
 格子点データのヤコビアンのスペクトル変換のことである.

Original external subprogram is et_module#et_Jacobian_et_et

et_LaplaInv_et( et, [values] ) result(et_LaplaInv_et)
Function :
et_LaplaInv_et :real(8), dimension(-km:km,0:lm)
: (out) スペクトルデータの逆ラプラシアン
et :real(8), dimension(-km:km,0:lm),intent(in)
: (in) スペクトルデータ
values :real(8), dimension(-km:km,2), intent(in), optional
: (in) 境界値. 省略時は 0 が設定される.

境界で一様な値を与える条件(ディリクレ条件)下で, 入力スペクトルデータに逆ラプラシアン(∂xx+∂yy)**(-1)を作用する.

Chebyshev-tau 法による計算

スペクトルデータの逆ラプラシアンとは, 対応する格子点データに 逆ラプラシアンを作用させたデータのスペクトル変換のことである.

Original external subprogram is et_module#et_LaplaInv_et

et_Lapla_et( et ) result(et_Lapla_et)
Function :
et_Lapla_et :real(8), dimension(-km:km,0:lm)
: (out) スペクトルデータのラプラシアン
et :real(8), dimension(-km:km,0:lm), intent(in)
: (in) 入力スペクトルデータ

入力スペクトルデータにラプラシアン(∂xx+∂yy)を作用する.

スペクトルデータのラプラシアンとは, 対応する格子点データに ラプラシアンを作用させたデータのスペクトル変換のことである.

Original external subprogram is et_module#et_Lapla_et

Function :
et_eb :real(8), dimension(-km:km,0:lm)
: (out) 格子点データ
eb :real(8), dimension(-km:km,2:lm), intent(in)
: (in) スペクトルデータ

ガラーキンデータからチェビシェフデータへ変換する.

[Source]

    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)
: (out) 格子点データ
ed :real(8), dimension(-km:km,2:lm), intent(in)
: (in) スペクトルデータ

ガラーキンデータからチェビシェフデータへ変換する.

[Source]

    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)
: (out) 格子点データ
ef :real(8), dimension(-km:km,2:lm), intent(in)
: (in) スペクトルデータ

ガラーキンデータからチェビシェフデータへ変換する.

[Source]

    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)
: (out) 格子点データ
eh :real(8), dimension(-km:km,2:lm), intent(in)
: (in) スペクトルデータ

ガラーキンデータからチェビシェフデータへ変換する.

[Source]

    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)
: (out) 格子点データ
ep :real(8), dimension(-km:km,2:lm), intent(in)
: (in) スペクトルデータ

ガラーキンデータからチェビシェフデータへ変換する.

[Source]

    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)
: (out) 格子点データ
eq :real(8), dimension(-km:km,4:lm), intent(in)
: (in) スペクトルデータ

ガラーキンデータからチェビシェフデータへ変換する.

[Source]

    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)
: (out) 格子点データ
ev :real(8), dimension(-km:km,2:lm), intent(in)
: (in) スペクトルデータ

ガラーキンデータからチェビシェフデータへ変換する.

[Source]

    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)
: 格子点の設定(X,Y)
j :integer,intent(in)
: 格子点の設定(X,Y)
k :integer,intent(in)
: 切断波数の設定(X,Y)
l :integer,intent(in)
: 切断波数の設定(X,Y)
xmin :real(8),intent(in)
: X 座標範囲
xmax :real(8),intent(in)
: X 座標範囲
ymin :real(8),intent(in)
: Y 座標範囲
ymax :real(8),intent(in)
: Y 座標範囲
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
: 境界条件(RR/SS/RS/SR)
MM_cfdy0_ymin :real(8),intent(in),optional
: (0階微分@x=ymin)
MM_cfdy1_ymin :real(8),intent(In),optional
: (1階微分@x=ymin)
MM_cfdy0_ymax :real(8),intent(in),optional
: (0階微分@x=ymax)
MM_cfdy1_ymax :real(8),intent(in),optional
: (1階微分@x=ymax)
MMex_cfdy0_ymin(-k:k) :real(8),intent(in),optional
: (0階微分@x=ymin)
MMex_cfdy1_ymin(-k:k) :real(8),intent(in),optional
: (1階微分@x=ymin)
MMex_cfdy0_ymax(-k:k) :real(8),intent(in),optional
: (0階微分@x=ymax)
MMex_cfdy1_ymax(-k:k) :real(8),intent(in),optional
: (1階微分@x=ymax)
 2 次元水路領域
 Fourier 展開 + チェビシェフ−ガラーキン法用モジュール

 初期化サブルーチン

[Source]

    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
et_yx( yx ) result(et_yx)
Function :
et_yx :real(8), dimension(-km:km,0:lm)
: (out) スペクトルデータ
yx :real(8), dimension(0:jm,0:im-1), intent(in)
: (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) 成分に入れ換える計算を行っている.

[Source]

    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 微分を 作用させたデータのスペクトル変換のことである.

[Source]

    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)
: (out) スペクトルデータ
et :real(8), dimension(-km:km,0:lm), intent(in)
: (in) 格子点データ

チェビシェフデータからガラーキンデータへ変換する.

[Source]

    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)
: (out) スペクトルデータ
ey :real(8), dimension(-km:km,0:jm), intent(in)
: (in) 格子点データ

格子データからガラーキンデータへ変換する.

[Source]

    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)
: (out) スペクトルデータ
yx :real(8), dimension(0:jm,0:im-1), intent(in)
: (in) 格子点データ

格子データからガラーキンデータへ変換する.

[Source]

    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)
: (out) 格子点データ
eb :real(8), dimension(-km:km,2:lm), intent(in)
: (in) スペクトルデータ

ガラーキンデータから格子データへ変換する.

[Source]

    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)
: (out) 格子点データ
ed :real(8), dimension(-km:km,2:lm), intent(in)
: (in) スペクトルデータ

ガラーキンデータから格子データへ変換する.

[Source]

    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)
: (out) 格子点データ
ef :real(8), dimension(-km:km,2:lm), intent(in)
: (in) スペクトルデータ

ガラーキンデータから格子データへ変換する.

[Source]

    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)
: (out) 格子点データ
eh :real(8), dimension(-km:km,2:lm), intent(in)
: (in) スペクトルデータ

ガラーキンデータから格子データへ変換する.

[Source]

    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)
: (out) 格子点データ
ep :real(8), dimension(-km:km,2:lm), intent(in)
: (in) スペクトルデータ

ガラーキンデータから格子データへ変換する.

[Source]

    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)
: (out) 格子点データ
eq :real(8), dimension(-km:km,4:lm), intent(in)
: (in) スペクトルデータ

ガラーキンデータから格子データへ変換する.

[Source]

    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)
: (out) 格子点データ
ev :real(8), dimension(-km:km,2:lm), intent(in)
: (in) スペクトルデータ

ガラーキンデータから格子データへ変換する.

[Source]

    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
f_Dy_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)
: (out) ガラーキン係数
t_data(0:km) :real(8), intent(IN)
: (in) チェビシェフ係数

チェビシェフ−ガラーキン法 ディリクレ・ノイマン混合境界条件

チェビシェフ係数 -> ガラーキン係数変換(1次元データ)

Original external subprogram is at_af_galerkin_MM#f_t

f_y( g_data ) result(f_g)
Function :
f_g(ks:km) :real(8)
: (out) ガラーキン係数
g_data(0:im) :real(8), intent(IN)
: (in) 格子点データ

チェビシェフ−ガラーキン法 ディリクレ・ノイマン混合境界条件

格子点データ -> ガラーキン係数変換(1次元データ)

Original external subprogram is at_af_galerkin_MM#f_g

p_Dy_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)
: (out) ガラーキン係数
t_data(0:km) :real(8), intent(IN)
: (in) チェビシェフ係数

チェビシェフ−ガラーキン法 片端ディリクレ片端ノイマン境界条件

チェビシェフ係数 -> ガラーキン係数変換(1次元データ)

Original external subprogram is at_ap_galerkin_DN#p_t

p_y( g_data ) result(p_g)
Function :
p_g(ks:km) :real(8)
: (out) ガラーキン係数
g_data(0:im) :real(8), intent(IN)
: (in) 格子点データ

チェビシェフ−ガラーキン法 片端ディリクレ片端ノイマン境界条件

格子点データ -> ガラーキン係数変換(1次元データ)

Original external subprogram is at_ap_galerkin_DN#p_g

q_Dy_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)
: (out) ガラーキン係数
t_data(0:km) :real(8), intent(in)
: (in) チェビシェフ係数

チェビシェフ−ガラーキン法 非圧縮流体の流線関数・流れポテンシャル用

チェビシェフ係数 -> ガラーキン係数変換(1次元データ)

Original external subprogram is at_aq_galerkin_RRFF#q_t

q_y( g_data ) result(q_g)
Function :
q_g(ks:km) :real(8)
: (out) ガラーキン係数
g_data(0:im) :real(8), intent(in)
: (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)
: (out) チェビシェフ係数
b_data(ks:km) :real(8), intent(IN)
: (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)
: (out) チェビシェフ係数
d_data(ks:km) :real(8), intent(IN)
: (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)
: (out) チェビシェフ係数
f_data(ks:km) :real(8), intent(IN)
: (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)
: (out) チェビシェフ係数
p_data(ks:km) :real(8), intent(IN)
: (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)
: (out) チェビシェフ係数
q_data(ks:km) :real(8), intent(in)
: (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)
: (out) チェビシェフ係数
v_data(ks:km) :real(8), intent(IN)
: (in) ガラーキン係数

チェビシェフ−ガラーキン法 両端ノイマン境界条件

ガラーキン係数 -> チェビシェフ係数変換(1次元データ)

Original external subprogram is at_av_galerkin_NN#t_v

v_Dy_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)
: (out) ガラーキン係数
t_data(0:km) :real(8), intent(IN)
: (in) チェビシェフ係数

チェビシェフ−ガラーキン法 両端ノイマン境界条件

チェビシェフ係数 -> ガラーキン係数変換(1次元データ)

Original external subprogram is at_av_galerkin_NN#v_t

v_y( g_data ) result(v_g)
Function :
v_g(ks:km) :real(8)
: (out) ガラーキン係数
g_data(0:im) :real(8), intent(IN)
: (in) 格子点データ

チェビシェフ−ガラーキン法 両端ノイマン境界条件

格子点データ -> ガラーキン係数変換(1次元データ)

Original external subprogram is at_av_galerkin_NN#v_g

x_AvrY_yx( yx ) result(x_AvrY_yx)
Function :
x_AvrY_yx :real(8), dimension(0:im-1)
: (out) 平均された 1 次元(X)格子点
yx :real(8), dimension(0:jm,0:im-1)
: (in) 2 次元格子点データ

2 次元格子点データの Y 方向平均

実際には格子点データ各点毎に y_Y_Weight をかけた総和を計算し, y_Y_Weight の総和で割ることで平均している.

Original external subprogram is et_module#x_AvrY_yx

x_IntY_yx( yx ) result(x_IntY_yx)
Function :
x_IntY_yx :real(8), dimension(0:im-1)
: (out) 積分された 1 次元(X)格子点データ
yx :real(8), dimension(0:jm,0:im-1)
: (in) 2 次元格子点データ

Y 方向積分

2 次元格子点データの Y 方向積分

実際には格子点データ各点毎に y_Y_Weight をかけた総和を計算している.

Original external subprogram is et_module#x_IntY_yx

y_AvrX_yx( yx ) result(y_AvrX_yx)
Function :
y_AvrX_yx :real(8), dimension(0:jm)
: (out) 平均された 1 次元(Y)格子点
yx :real(8), dimension(0:jm,0:im-1)
: (in) 2 次元格子点データ

2 次元格子点データの X 方向平均

実際には格子点データ各点毎に x_X_Weight をかけた総和を計算し, x_X_Weight の総和で割ることで平均している.

Original external subprogram is et_module#y_AvrX_yx

y_IntX_yx( yx ) result(y_IntX_yx)
Function :
y_IntX_yx :real(8), dimension(0:jm)
: (out) 積分された 1 次元(Y)格子点データ
yx :real(8), dimension(0:jm,0:im-1)
: (in) 2 次元格子点データ

X 方向積分

2 次元格子点データの X 方向積分

実際には格子点データ各点毎に x_X_Weight をかけた総和を計算している.

Original external subprogram is et_module#y_IntX_yx

y_b( b_data ) result(g_b)
Function :
g_b(0:im) :real(8)
: (out) 格子点データ
b_data(ks:km) :real(8), intent(IN)
: (in) ガラーキン係数

チェビシェフ−ガラーキン法 片端ノイマン片端ディリクレ境界条件

ガラーキン係数 -> 格子点データ変換(1次元データ)

Original external subprogram is at_ab_galerkin_ND#g_b

y_d( d_data ) result(g_d)
Function :
g_d(0:im) :real(8)
: (out) 格子点データ
d_data(ks:km) :real(8), intent(IN)
: (in) ガラーキン係数

チェビシェフ−ガラーキン法 両端ディリクレ境界条件

ガラーキン係数 -> 格子点データ変換(1次元データ)

Original external subprogram is at_ad_galerkin_DD#g_d

y_f( f_data ) result(g_f)
Function :
g_f(0:im) :real(8)
: (out) 格子点データ
f_data(ks:km) :real(8), intent(IN)
: (in) ガラーキン係数

チェビシェフ−ガラーキン法 ディリクレ・ノイマン混合境界条件

ガラーキン係数 -> 格子点データ変換(1次元データ)

Original external subprogram is at_af_galerkin_MM#g_f

y_p( p_data ) result(g_p)
Function :
g_p(0:im) :real(8)
: (out) 格子点データ
p_data(ks:km) :real(8), intent(IN)
: (in) ガラーキン係数

チェビシェフ−ガラーキン法 片端ディリクレ片端ノイマン境界条件

ガラーキン係数 -> 格子点データ変換(1次元データ)

Original external subprogram is at_ap_galerkin_DN#g_p

y_q( q_data ) result(g_q)
Function :
g_q(0:im) :real(8)
: (out) 格子点データ
q_data(ks:km) :real(8), intent(in)
: (in) ガラーキン係数

チェビシェフ−ガラーキン法 非圧縮流体の流線関数・流れポテンシャル用

ガラーキン係数 -> 格子点データ変換(1次元データ)

Original external subprogram is at_aq_galerkin_RRFF#g_q

y_v( v_data ) result(g_v)
Function :
g_v(0:im) :real(8)
: (out) 格子点データ
v_data(ks:km) :real(8), intent(IN)
: (in) ガラーキン係数

チェビシェフ−ガラーキン法 両端ノイマン境界条件

ガラーキン係数 -> 格子点データ変換(1次元データ)

Original external subprogram is at_av_galerkin_NN#g_v

yx_X
Variable :
yx_X :real(8), dimension(:,:), allocatable

Original external subprogram is et_module#yx_X

yx_Y
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)
: (out) 格子点データ
eb :real(8), dimension(-km:km,2:lm), intent(in)
: (in) スペクトルデータ

ガラーキンデータから格子データへ変換する.

[Source]

    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)
: (out) 格子点データ
ed :real(8), dimension(-km:km,2:lm), intent(in)
: (in) スペクトルデータ

ガラーキンデータから格子データへ変換する.

[Source]

    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)
: (out) 格子点データ
ef :real(8), dimension(-km:km,2:lm), intent(in)
: (in) スペクトルデータ

ガラーキンデータから格子データへ変換する.

[Source]

    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)
: (out) 格子点データ
eh :real(8), dimension(-km:km,2:lm), intent(in)
: (in) スペクトルデータ

ガラーキンデータから格子データへ変換する.

[Source]

    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)
: (out) 格子点データ
ep :real(8), dimension(-km:km,2:lm), intent(in)
: (in) スペクトルデータ

ガラーキンデータから格子データへ変換する.

[Source]

    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)
: (out) 格子点データ
eq :real(8), dimension(-km:km,4:lm), intent(in)
: (in) スペクトルデータ

ガラーキンデータから格子データへ変換する.

[Source]

    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
yx_et( et ) result(yx_et)
Function :
yx_et :real(8), dimension(0:jm,0:im-1)
: (out) 格子点データ
et :real(8), dimension(-km:km,0:lm), intent(in)
: (in) スペクトルデータ

スペクトルデータから格子データへ変換する.

Original external subprogram is et_module#yx_et

Function :
yx_ev :real(8), dimension(0:jm,0:im-1)
: (out) 格子点データ
ev :real(8), dimension(-km:km,2:lm), intent(in)
: (in) スペクトルデータ

ガラーキンデータから格子データへ変換する.

[Source]

    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