Class xyz_base_module
In: setup/xyz_base_module.f90

3 次元 (xyz 方向) 等間隔交互格子 格子点設定モジュール

概要

xyz_base_module は, 3 次元 (xyz 方向) 等間隔交互格子を用いた有限差分 法に基づく数値モデルのための, 基本的な Fortran90 副プログラムおよび 関数を提供する.

このモジュールは xyz_module の下位モジュールである. 下請けモジュール として data_type, x_base_module, y_base_module z_base_module モジュールを用いている.

備考

  • 例外処理がない
  • その場合のメッセージ表示がない
  • 初期化の値はマシンイプシロン値としておくべき

Methods

AvrXYZ_pyz   AvrXYZ_xqz   AvrXYZ_xyr   AvrXYZ_xyz   AvrX_p   AvrX_p   AvrX_x   AvrX_x   AvrY_q   AvrY_y   AvrZ_r   AvrZ_z   IntXYZ_pyz   IntXYZ_xqz   IntXYZ_xyr   IntXYZ_xyz   IntX_p   IntX_p   IntX_x   IntX_x   IntY_q   IntY_y   IntZ_r   IntZ_z   im   im   imax   imax   imin   imin   jm   jmax   jmin   km   kmax   kmin   p_X   p_X   p_avr_x   p_avr_x   p_dx   p_dx   pqz_avr_pyz   pqz_avr_xqz   pqz_avr_xyz   py_AvrZ_pyz   py_IntZ_pyz   pyr_avr_pyz   pyr_avr_xyr   pyr_avr_xyz   pyz_avr_pqz   pyz_avr_pyr   pyz_avr_xyz   pz_AvrY_pyz   pz_IntY_pyz   q_Y   q_avr_y   q_dy   qz_AvrX_xqz   qz_IntX_xqz   r_AvrXY_xyr   r_IntXY_xyr   r_Z   r_avr_z   r_dz   x_X   x_X   x_avr_p   x_avr_p   x_dx   x_dx   xmargin   xmargin   xq_AvrZ_xqz   xq_IntZ_xqz   xqr_avr_xqz   xqr_avr_xyr   xqr_avr_xyz   xqz_avr_pqz   xqz_avr_xqr   xqz_avr_xyz   xr_AvrY_xyr   xr_IntY_xyr   xy_AvrZ_xyr   xy_AvrZ_xyz   xy_IntZ_xyr   xy_IntZ_xyz   xyr_avr_pyr   xyr_avr_xqr   xyr_avr_xyz   xyz_X   xyz_Y   xyz_Z   xyz_avr_pqz   xyz_avr_pyr   xyz_avr_pyz   xyz_avr_xqr   xyz_avr_xqz   xyz_avr_xyr   xyz_axis_init   xyz_dX   xyz_dY   xyz_dZ   xz_AvrY_xqz   xz_AvrY_xyz   xz_IntY_xqz   xz_IntY_xyz   y_Y   y_avr_q   y_dy   ymargin   yr_AvrX_xyr   yr_IntX_xyr   yz_AvrX_pyz   yz_AvrX_xyz   yz_IntX_pyz   yz_IntX_xyz   z_AvrXY_pyz   z_AvrXY_xqz   z_AvrXY_xyz   z_IntXY_pyz   z_IntXY_xqz   z_IntXY_xyz   z_Z   z_avr_r   z_dz   zmargin  

Included Modules

dc_types x_base_module y_base_module z_base_module xy_base_module

Public Instance methods

Function :
AvrXYZ_pyz :real(DBKIND)
: 出力
pyz_Var(imin:imax,jmin:jmax,kmin:kmax) :real(DBKIND), intent(in)
: 入力

pyz 格子上の配列に対し領域積分を行う

[Source]

    function AvrXYZ_pyz(pyz_Var)
      ! pyz 格子上の配列に対し領域積分を行う

      real(DBKIND), intent(in) :: pyz_Var(imin:imax,jmin:jmax,kmin:kmax) ! 入力
      real(DBKIND)             :: AvrXYZ_pyz                             ! 出力

      ! 初期化
      AvrXYZ_pyz = 0.0d0

      AvrXYZ_pyz = IntXYZ_pyz(pyz_Var)/ (sum(x_dx(1:im))*sum(y_dy(1:jm))*sum(z_dz(1:km)))

    end function AvrXYZ_pyz
Function :
AvrXYZ_xqz :real(DBKIND)
: 出力
xqz_Var(imin:imax,jmin:jmax,kmin:kmax) :real(DBKIND), intent(in)
: 入力

xqz 格子上の配列に対し領域積分を行う

[Source]

    function AvrXYZ_xqz(xqz_Var)
      ! xqz 格子上の配列に対し領域積分を行う

      real(DBKIND), intent(in) :: xqz_Var(imin:imax,jmin:jmax,kmin:kmax) ! 入力
      real(DBKIND)             :: AvrXYZ_xqz                             ! 出力

      ! 初期化
      AvrXYZ_xqz = 0.0d0

      AvrXYZ_xqz = IntXYZ_xqz(xqz_Var)/ (sum(x_dx(1:im))*sum(y_dy(1:jm))*sum(z_dz(1:km)))

    end function AvrXYZ_xqz
Function :
AvrXYZ_xyr :real(DBKIND)
: 出力
xyr_Var(imin:imax,jmin:jmax,kmin:kmax) :real(DBKIND), intent(in)
: 入力

xyr 格子上の配列に対し領域積分を行う

[Source]

    function AvrXYZ_xyr(xyr_Var)
      ! xyr 格子上の配列に対し領域積分を行う

      real(DBKIND), intent(in) :: xyr_Var(imin:imax,jmin:jmax,kmin:kmax) ! 入力
      real(DBKIND)             :: AvrXYZ_xyr                             ! 出力

      ! 初期化
      AvrXYZ_xyr = 0.0d0

      AvrXYZ_xyr = IntXYZ_xyr(xyr_Var)/ (sum(x_dx(1:im))*sum(y_dy(1:jm))*sum(z_dz(1:km)))

    end function AvrXYZ_xyr
Function :
AvrXYZ_xyz :real(DBKIND)
: 出力
xyz_Var(imin:imax,jmin:jmax,kmin:kmax) :real(DBKIND), intent(in)
: 入力

xyz 格子上の配列に対し領域積分を行う

[Source]

    function AvrXYZ_xyz(xyz_Var)
      ! xyz 格子上の配列に対し領域積分を行う

      real(DBKIND), intent(in) :: xyz_Var(imin:imax,jmin:jmax,kmin:kmax) ! 入力
      real(DBKIND)             :: AvrXYZ_xyz                             ! 出力

      ! 初期化
      AvrXYZ_xyz = 0.0d0

      AvrXYZ_xyz = IntXYZ_xyz(xyz_Var)/ (sum(x_dx(1:im))*sum(y_dy(1:jm))*sum(z_dz(1:km)))

    end function AvrXYZ_xyz
AvrX_p( p_Var ) result(AvrX_p)
Function :
AvrX_p :real(DBKIND)
: 出力
p_Var(imin:imax) :real(DBKIND), intent(in)
: 入力

整数格子上の配列に対し x 方向の平均操作を行う

Original external subprogram is xy_base_module#AvrX_p

AvrX_p( p_Var ) result(AvrX_p)
Function :
AvrX_p :real(DBKIND)
: 出力
p_Var(imin:imax) :real(DBKIND), intent(in)
: 入力

整数格子上の配列に対し x 方向の平均操作を行う

Original external subprogram is x_base_module#AvrX_p

AvrX_x( x_Var ) result(AvrX_x)
Function :
AvrX_x :real(DBKIND)
: 出力
x_Var(imin:imax) :real(DBKIND), intent(in)
: 入力

半整数格子上の配列に対し x 方向の平均操作を行う

Original external subprogram is xy_base_module#AvrX_x

AvrX_x( x_Var ) result(AvrX_x)
Function :
AvrX_x :real(DBKIND)
: 出力
x_Var(imin:imax) :real(DBKIND), intent(in)
: 入力

半整数格子上の配列に対し x 方向の平均操作を行う

Original external subprogram is x_base_module#AvrX_x

AvrY_q( q_Var ) result(AvrY_q)
Function :
AvrY_q :real(DBKIND)
: 出力
q_Var(jmin:jmax) :real(DBKIND), intent(in)
: 入力

整数格子上の配列に対し y 方向の平均操作を行う

Original external subprogram is y_base_module#AvrY_q

AvrY_y( y_Var ) result(AvrY_y)
Function :
AvrY_y :real(DBKIND)
: 出力
y_Var(jmin:jmax) :real(DBKIND), intent(in)
: 入力

半整数格子上の配列に対し y 方向の平均操作を行う

Original external subprogram is y_base_module#AvrY_y

AvrZ_r( r_Var ) result(AvrZ_r)
Function :
AvrZ_r :real(DBKIND)
: 出力
r_Var(kmin:kmax) :real(DBKIND), intent(in)
: 入力

整数格子上の配列に対し z 方向の平均操作を行う

Original external subprogram is z_base_module#AvrZ_r

AvrZ_z( z_Var ) result(AvrZ_z)
Function :
AvrZ_z :real(DBKIND)
: 出力
z_Var(kmin:kmax) :real(DBKIND), intent(in)
: 入力

半整数格子上の配列に対し z 方向の平均操作を行う

Original external subprogram is z_base_module#AvrZ_z

Function :
IntXYZ_pyz :real(DBKIND)
: 出力
pyz_Var(imin:imax,jmin:jmax,kmin:kmax) :real(DBKIND), intent(in)
: 入力

pyz 格子上の配列に対し領域積分を行う

[Source]

    function IntXYZ_pyz(pyz_Var)
      ! pyz 格子上の配列に対し領域積分を行う

      real(DBKIND), intent(in) :: pyz_Var(imin:imax,jmin:jmax,kmin:kmax) ! 入力
      real(DBKIND)             :: IntXYZ_pyz                             ! 出力

      ! 初期化
      IntXYZ_pyz = 0.0d0

      IntXYZ_pyz = IntZ_z(z_IntXY_pyz(pyz_Var))

    end function IntXYZ_pyz
Function :
IntXYZ_xqz :real(DBKIND)
: 出力
xqz_Var(imin:imax,jmin:jmax,kmin:kmax) :real(DBKIND), intent(in)
: 入力

xqz 格子上の配列に対し領域積分を行う

[Source]

    function IntXYZ_xqz(xqz_Var)
      ! xqz 格子上の配列に対し領域積分を行う

      real(DBKIND), intent(in) :: xqz_Var(imin:imax,jmin:jmax,kmin:kmax) ! 入力
      real(DBKIND)             :: IntXYZ_xqz                             ! 出力

      ! 初期化
      IntXYZ_xqz = 0.0d0

      IntXYZ_xqz = IntZ_z(z_IntXY_xqz(xqz_Var))

    end function IntXYZ_xqz
Function :
IntXYZ_xyr :real(DBKIND)
: 出力
xyr_Var(imin:imax,jmin:jmax,kmin:kmax) :real(DBKIND), intent(in)
: 入力

xyr 格子上の配列に対し領域積分を行う

[Source]

    function IntXYZ_xyr(xyr_Var)
      ! xyr 格子上の配列に対し領域積分を行う

      real(DBKIND), intent(in) :: xyr_Var(imin:imax,jmin:jmax,kmin:kmax) ! 入力
      real(DBKIND)             :: IntXYZ_xyr                             ! 出力

      ! 初期化
      IntXYZ_xyr = 0.0d0

      IntXYZ_xyr = IntZ_r(a_IntXY_xya(xyr_Var))

    end function IntXYZ_xyr
Function :
IntXYZ_xyz :real(DBKIND)
: 出力
xyz_Var(imin:imax,jmin:jmax,kmin:kmax) :real(DBKIND), intent(in)
: 入力

xyz 格子上の配列に対し領域積分を行う

[Source]

    function IntXYZ_xyz(xyz_Var)
      ! xyz 格子上の配列に対し領域積分を行う

      real(DBKIND), intent(in) :: xyz_Var(imin:imax,jmin:jmax,kmin:kmax) ! 入力
      real(DBKIND)             :: IntXYZ_xyz                             ! 出力

      ! 初期化
      IntXYZ_xyz = 0.0d0

      IntXYZ_xyz = IntZ_z(a_IntXY_xya(xyz_Var))

    end function IntXYZ_xyz
IntX_p( p_Var ) result(IntX_p)
Function :
IntX_p :real(DBKIND)
: 出力
p_Var(imin:imax) :real(DBKIND), intent(in)
: 入力

整数格子上の配列に対し x 方向に重み付きの積分を行う

Original external subprogram is xy_base_module#IntX_p

IntX_p( p_Var ) result(IntX_p)
Function :
IntX_p :real(DBKIND)
: 出力
p_Var(imin:imax) :real(DBKIND), intent(in)
: 入力

整数格子上の配列に対し x 方向に重み付きの積分を行う

Original external subprogram is x_base_module#IntX_p

IntX_x( x_Var ) result(IntX_x)
Function :
IntX_x :real(DBKIND)
: 出力
x_Var(imin:imax) :real(DBKIND), intent(in)
: 入力

半整数格子上の配列に対し x 方向に重み付きの積分を行う

Original external subprogram is xy_base_module#IntX_x

IntX_x( x_Var ) result(IntX_x)
Function :
IntX_x :real(DBKIND)
: 出力
x_Var(imin:imax) :real(DBKIND), intent(in)
: 入力

半整数格子上の配列に対し x 方向に重み付きの積分を行う

Original external subprogram is x_base_module#IntX_x

IntY_q( q_Var ) result(IntY_q)
Function :
IntY_q :real(DBKIND)
: 出力
q_Var(jmin:jmax) :real(DBKIND), intent(in)
: 入力

整数格子上の配列に対し y 方向に重み付きの積分を行う

Original external subprogram is y_base_module#IntY_q

IntY_y( y_Var ) result(IntY_y)
Function :
IntY_y :real(DBKIND)
: 出力
y_Var(jmin:jmax) :real(DBKIND), intent(in)
: 入力

半整数格子上の配列に対し y 方向に重み付きの積分を行う

Original external subprogram is y_base_module#IntY_y

IntZ_r( r_Var ) result(IntZ_r)
Function :
IntZ_r :real(DBKIND)
: 出力
r_Var(kmin:kmax) :real(DBKIND), intent(in)
: 入力

整数格子上の配列に対し z 方向に重み付きの積分を行う

Original external subprogram is z_base_module#IntZ_r

IntZ_z( z_Var ) result(IntZ_z)
Function :
IntZ_z :real(DBKIND)
: 出力
z_Var(kmin:kmax) :real(DBKIND), intent(in)
: 入力

半整数格子上の配列に対し z 方向に重み付きの積分を行う

Original external subprogram is z_base_module#IntZ_z

im
Variable :
im = 10 :integer
: 格子点数

Original external subprogram is xy_base_module#im

im
Variable :
im = 10 :integer
: 格子点数

Original external subprogram is x_base_module#im

imax
Variable :
imax :integer
: 配列添字の上限

Original external subprogram is xy_base_module#imax

imax
Variable :
imax :integer
: 配列添字の上限

Original external subprogram is x_base_module#imax

imin
Variable :
imin :integer
: 配列添字の下限

Original external subprogram is xy_base_module#imin

imin
Variable :
imin :integer
: 配列添字の下限

Original external subprogram is x_base_module#imin

jm
Variable :
jm = 10 :integer
: 格子点数

Original external subprogram is y_base_module#jm

jmax
Variable :
jmax :integer
: 配列添字の上限

Original external subprogram is y_base_module#jmax

jmin
Variable :
jmin :integer
: 配列添字の下限

Original external subprogram is y_base_module#jmin

km
Variable :
km = 10 :integer
: 格子点数

Original external subprogram is z_base_module#km

kmax
Variable :
kmax :integer
: 配列添字の上限

Original external subprogram is z_base_module#kmax

kmin
Variable :
kmin :integer
: 配列添字の下限

Original external subprogram is z_base_module#kmin

p_X
Variable :
p_X(:) :real(DBKIND),allocatable
: 整数格子点座標

Original external subprogram is xy_base_module#p_X

p_X
Variable :
p_X(:) :real(DBKIND),allocatable
: 整数格子点座標

Original external subprogram is x_base_module#p_X

p_avr_x( x_Var ) result(p_avr_x)
Function :
p_avr_x(imin:imax) :real(DBKIND)
: 出力
x_Var(imin:imax) :real(DBKIND),intent(in)
: 入力

平均操作を行い半整数格子点の配列値を整数格子点上へ返す

Original external subprogram is xy_base_module#p_avr_x

p_avr_x( x_Var ) result(p_avr_x)
Function :
p_avr_x(imin:imax) :real(DBKIND)
: 出力
x_Var(imin:imax) :real(DBKIND),intent(in)
: 入力

平均操作を行い半整数格子点の配列値を整数格子点上へ返す

Original external subprogram is x_base_module#p_avr_x

p_dx
Variable :
p_dx(:) :real(DBKIND),allocatable
: 整数格子点座標

Original external subprogram is xy_base_module#p_dx

p_dx
Variable :
p_dx(:) :real(DBKIND),allocatable
: 整数格子点座標

Original external subprogram is x_base_module#p_dx

Function :
aqa_avr_aya(imin:imax,jmin:jmax,kmin:kmax) :real(DBKIND)
:
integer :ix, kz
aya_Var(imin:imax,jmin:jmax,kmin:kmax) :real(DBKIND),intent(in)

平均操作を行い y 方向半整数格子点の配列値を整数格子点上へ返す

[Source]

    function aqa_avr_aya(aya_Var)
      ! 平均操作を行い y 方向半整数格子点の配列値を整数格子点上へ返す
  
      real(DBKIND),intent(in) :: aya_Var(imin:imax,jmin:jmax,kmin:kmax)
      real(DBKIND)            :: aqa_avr_aya(imin:imax,jmin:jmax,kmin:kmax) 
!      integer                 :: ix, kz
      integer                 :: jy

      ! 初期化
      ! * 0 割りを防ぐためにはマシンイプシロン値を用いるべき
      !
      aqa_avr_aya = 0.0d0

      ! 平均操作
      ! * 関数 q_avr_y を用いて計算
      !
!      do kz = kmin, kmax
!        do ix = imin, imax
!          aqa_avr_aya(ix,:,kz) = q_avr_y(aya_Var(ix,:,kz))
!        end do
!      end do

      do jy = jmin, jmax-1
        aqa_avr_aya(:,jy,:) = (y_dy(jy)*aya_Var(:,jy+1,:) + y_dy(jy+1)*aya_Var(:,jy,:)) * 0.5d0/q_dy(jy)
      end do

      aqa_avr_aya(:,jmax,:) =  aqa_avr_aya(:,jmax-1,:) 

    end function aqa_avr_aya
Function :
paa_avr_xaa(imin:imax,jmin:jmax,kmin:kmax) :real(DBKIND)
:
integer :jy, kz
xaa_Var(imin:imax,jmin:jmax,kmin:kmax) :real(DBKIND),intent(in)

半整数格子点の配列値を整数点上へ返す

[Source]

    function paa_avr_xaa(xaa_Var)
      ! 半整数格子点の配列値を整数点上へ返す
  
      real(DBKIND),intent(in) :: xaa_Var(imin:imax,jmin:jmax,kmin:kmax)
      real(DBKIND)            :: paa_avr_xaa(imin:imax,jmin:jmax,kmin:kmax)
!      integer                 :: jy, kz                    
      integer                 :: ix

      ! 初期化
      ! * 0 割りを防ぐためにはマシンイプシロン値を用いるべき
      !
      paa_avr_xaa = 0.0d0                                

      ! 平均操作
      ! * 関数 p_avr_x を用いて計算
      !
!      do kz = kmin, kmax
!        do jy = jmin, jmax
!          paa_avr_xaa(:,jy,kz) = p_avr_x(xaa_Var(:,jy,kz))
!        end do
!      end do

      do ix = imin, imax-1
        paa_avr_xaa(ix,:,:) = (x_dx(ix)*xaa_Var(ix+1,:,:) + x_dx(ix+1)*xaa_Var(ix,:,:)) *0.5d0/p_dx(ix)
      end do

      paa_avr_xaa(imax,:,:) = paa_avr_xaa(imax-1,:,:) 

    end function paa_avr_xaa
Function :
pqz_avr_xyz(imin:imax,jmin:jmax,kmin:kmax) :real(DBKIND)
: 出力
xyz_Var(imin:imax,jmin:jmax,kmin:kmax) :real(DBKIND), intent(in)
: 入力

[Source]

    function pqz_avr_xyz(xyz_Var)
      real(DBKIND), intent(in) :: xyz_Var(imin:imax,jmin:jmax,kmin:kmax)! 入力
      real(DBKIND)             :: pqz_avr_xyz(imin:imax,jmin:jmax,kmin:kmax)       ! 出力
      integer                  :: ix, jy                          ! ループ添字

      ! 初期化
      pqz_avr_xyz = 0.0d0

      do jy = jmin, jmax-1
        do ix = imin, imax-1
          pqz_avr_xyz(ix,jy,:) = ( xyz_Var(ix,jy,:)   + xyz_Var(ix+1,jy,:) + xyz_Var(ix,jy+1,:) + xyz_Var(ix+1,jy+1,:) ) * 0.25d0 
        end do
      end do

    end function pqz_avr_xyz
Function :
aa_AvrZ_aaz(imin:imax,jmin:jmax) :real(DBKIND)
: 出力
aaz_Var(imin:imax,jmin:jmax,kmin:kmax) :real(DBKIND), intent(in)
: 入力

aaz 格子上の配列に対し z 方向平均を行う

[Source]

    function aa_AvrZ_aaz(aaz_Var)
      ! aaz 格子上の配列に対し z 方向平均を行う

      real(DBKIND), intent(in) :: aaz_Var(imin:imax,jmin:jmax,kmin:kmax) ! 入力
      real(DBKIND)             :: aa_AvrZ_aaz(imin:imax,jmin:jmax)       ! 出力

      ! 初期化
      aa_AvrZ_aaz = 0.0d0

      ! 平均
      aa_AvrZ_aaz = aa_IntZ_aaz(aaz_Var)/sum(z_dz(1:km))

    end function aa_AvrZ_aaz
Function :
aa_IntZ_aaz(imin:imax,jmin:jmax) :real(DBKIND)
: 出力
aaz_Var(imin:imax,jmin:jmax,kmin:kmax) :real(DBKIND), intent(in)
: 入力

aaz 格子上の配列に対し z 方向積分を行う

[Source]

    function aa_IntZ_aaz(aaz_Var)
      ! aaz 格子上の配列に対し z 方向積分を行う

      real(DBKIND), intent(in) :: aaz_Var(imin:imax,jmin:jmax,kmin:kmax) ! 入力
      real(DBKIND)             :: aa_IntZ_aaz(imin:imax,jmin:jmax)       ! 出力
      integer                  :: ix, jy                           ! ループ添字

      ! 初期化
      aa_IntZ_aaz = 0.0d0

      ! 積分
      do jy = jmin, jmax
        do ix = imin, imax
          aa_IntZ_aaz(ix,jy) = IntZ_z(aaz_Var(ix,jy,:))
        end do
      end do

    end function aa_IntZ_aaz
Function :
aar_avr_aaz(imin:imax,jmin:jmax,kmin:kmax) :real(DBKIND)
:
integer :ix, jy
aaz_Var(imin:imax,jmin:jmax,kmin:kmax) :real(DBKIND),intent(in)

平均操作を行い z 方向半整数格子点の配列値を整数格子点上へ返す

[Source]

    function aar_avr_aaz(aaz_Var)
      ! 平均操作を行い z 方向半整数格子点の配列値を整数格子点上へ返す
  
      real(DBKIND),intent(in) :: aaz_Var(imin:imax,jmin:jmax,kmin:kmax) 
      real(DBKIND)            :: aar_avr_aaz(imin:imax,jmin:jmax,kmin:kmax)
!      integer                 :: ix, jy
      integer                 :: kz

      ! 初期化
      ! * 0 割りを防ぐためにはマシンイプシロン値を用いるべき
      !
      aar_avr_aaz = 0.0d0

      ! 平均操作
      ! * 関数 r_avr_z を用いて計算
      !
!      do jy = jmin, jmax
!        do ix = imin, imax
!          aar_avr_aaz(ix,jy,:) = r_avr_z(aaz_Var(ix,jy,:))
!        end do
!      end do

      do kz = kmin, kmax-1
        aar_avr_aaz(:,:,kz) = (z_dz(kz)*aaz_Var(:,:,kz+1) + z_dz(kz+1)*aaz_Var(:,:,kz)) *0.5d0/r_dz(kz)
      end do

      aar_avr_aaz(:,:,kmax) = aar_avr_aaz(:,:,kmax-1)

    end function aar_avr_aaz
Function :
paa_avr_xaa(imin:imax,jmin:jmax,kmin:kmax) :real(DBKIND)
:
integer :jy, kz
xaa_Var(imin:imax,jmin:jmax,kmin:kmax) :real(DBKIND),intent(in)

半整数格子点の配列値を整数点上へ返す

[Source]

    function paa_avr_xaa(xaa_Var)
      ! 半整数格子点の配列値を整数点上へ返す
  
      real(DBKIND),intent(in) :: xaa_Var(imin:imax,jmin:jmax,kmin:kmax)
      real(DBKIND)            :: paa_avr_xaa(imin:imax,jmin:jmax,kmin:kmax)
!      integer                 :: jy, kz                    
      integer                 :: ix

      ! 初期化
      ! * 0 割りを防ぐためにはマシンイプシロン値を用いるべき
      !
      paa_avr_xaa = 0.0d0                                

      ! 平均操作
      ! * 関数 p_avr_x を用いて計算
      !
!      do kz = kmin, kmax
!        do jy = jmin, jmax
!          paa_avr_xaa(:,jy,kz) = p_avr_x(xaa_Var(:,jy,kz))
!        end do
!      end do

      do ix = imin, imax-1
        paa_avr_xaa(ix,:,:) = (x_dx(ix)*xaa_Var(ix+1,:,:) + x_dx(ix+1)*xaa_Var(ix,:,:)) *0.5d0/p_dx(ix)
      end do

      paa_avr_xaa(imax,:,:) = paa_avr_xaa(imax-1,:,:) 

    end function paa_avr_xaa
Function :
pyr_avr_xyz(imin:imax,jmin:jmax,kmin:kmax) :real(DBKIND)
: 出力
xyz_Var(imin:imax,jmin:jmax,kmin:kmax) :real(DBKIND), intent(in)
: 入力

[Source]

    function pyr_avr_xyz(xyz_Var)
      real(DBKIND), intent(in) :: xyz_Var(imin:imax,jmin:jmax,kmin:kmax)! 入力
      real(DBKIND)             :: pyr_avr_xyz(imin:imax,jmin:jmax,kmin:kmax)       ! 出力
      integer                  :: ix, kz                          ! ループ添字

      ! 初期化
      pyr_avr_xyz = 0.0d0

      do kz = kmin, kmax-1
        do ix = imin, imax-1
          pyr_avr_xyz(ix,:,kz) = ( xyz_Var(ix,:,kz)   + xyz_Var(ix+1,:,kz) + xyz_Var(ix,:,kz+1) + xyz_Var(ix+1,:,kz+1) ) * 0.25d0 
        end do
      end do

    end function pyr_avr_xyz
Function :
aya_avr_aqa(imin:imax,jmin:jmax,kmin:kmax) :real(DBKIND)
:
integer :ix, kz
aqa_Var(imin:imax,jmin:jmax,kmin:kmax) :real(DBKIND),intent(in)

平均操作を行い y 方向半整数格子点の配列値を整数格子点上へ返す

[Source]

    function aya_avr_aqa(aqa_Var)
      ! 平均操作を行い y 方向半整数格子点の配列値を整数格子点上へ返す
  
      real(DBKIND),intent(in) :: aqa_Var(imin:imax,jmin:jmax,kmin:kmax)   
      real(DBKIND)            :: aya_avr_aqa(imin:imax,jmin:jmax,kmin:kmax)
!      integer                 :: ix, kz
      integer                 :: jy

      ! 初期化
      ! * 0 割りを防ぐためにはマシンイプシロン値を用いるべき
      !
      aya_avr_aqa = 0.0d0

      ! 平均操作
      ! * 関数 y_q を用いて計算
      !
!      do kz = kmin, kmax
!        do ix = imin, imax
!          aya_avr_aqa(ix,:,kz) = y_avr_q(aqa_Var(ix,:,kz))
!        end do
!      end do

      do jy = jmin+1, jmax
        aya_avr_aqa(:,jy,:) = (aqa_Var(:,jy,:) + aqa_Var(:,jy-1,:))*0.5d0 
      end do
      
      aya_avr_aqa(:,jmin,:) = aya_avr_aqa(:,jmin+1,:)

    end function aya_avr_aqa
Function :
aaz_avr_aar(imin:imax,jmin:jmax,kmin:kmax) :real(DBKIND)
:
integer :ix, jy
aar_Var(imin:imax,jmin:jmax,kmin:kmax) :real(DBKIND),intent(in)

平均操作を行い z 方向整数格子点の配列値を半整数格子点上へ返す

[Source]

    function aaz_avr_aar(aar_Var)
      ! 平均操作を行い z 方向整数格子点の配列値を半整数格子点上へ返す
  
      real(DBKIND),intent(in) :: aar_Var(imin:imax,jmin:jmax,kmin:kmax)   
      real(DBKIND)            :: aaz_avr_aar(imin:imax,jmin:jmax,kmin:kmax)
!      integer                 :: ix, jy
      integer                 :: kz

      ! 初期化
      ! * 0 割りを防ぐためにはマシンイプシロン値を用いるべき
      !
      aaz_avr_aar = 0.0d0

      ! 平均操作
      ! * 関数 z_avr_r を用いて計算
      !
!      do jy = jmin, jmax
!        do ix = imin, imax
!          aaz_avr_aar(ix,jy,:) = z_avr_r(aar_Var(ix,jy,:))
!        end do
!      end do

      do kz = kmin+1, kmax
        aaz_avr_aar(:,:,kz) = (aar_Var(:,:,kz) + aar_Var(:,:,kz-1))*0.5d0 
      end do

      aaz_avr_aar(:,:,kmin) = aaz_avr_aar(:,:,kmin+1)

    end function aaz_avr_aar
Function :
paa_avr_xaa(imin:imax,jmin:jmax,kmin:kmax) :real(DBKIND)
:
integer :jy, kz
xaa_Var(imin:imax,jmin:jmax,kmin:kmax) :real(DBKIND),intent(in)

半整数格子点の配列値を整数点上へ返す

[Source]

    function paa_avr_xaa(xaa_Var)
      ! 半整数格子点の配列値を整数点上へ返す
  
      real(DBKIND),intent(in) :: xaa_Var(imin:imax,jmin:jmax,kmin:kmax)
      real(DBKIND)            :: paa_avr_xaa(imin:imax,jmin:jmax,kmin:kmax)
!      integer                 :: jy, kz                    
      integer                 :: ix

      ! 初期化
      ! * 0 割りを防ぐためにはマシンイプシロン値を用いるべき
      !
      paa_avr_xaa = 0.0d0                                

      ! 平均操作
      ! * 関数 p_avr_x を用いて計算
      !
!      do kz = kmin, kmax
!        do jy = jmin, jmax
!          paa_avr_xaa(:,jy,kz) = p_avr_x(xaa_Var(:,jy,kz))
!        end do
!      end do

      do ix = imin, imax-1
        paa_avr_xaa(ix,:,:) = (x_dx(ix)*xaa_Var(ix+1,:,:) + x_dx(ix+1)*xaa_Var(ix,:,:)) *0.5d0/p_dx(ix)
      end do

      paa_avr_xaa(imax,:,:) = paa_avr_xaa(imax-1,:,:) 

    end function paa_avr_xaa
Function :
aa_AvrY_aya(imin:imax,kmin:kmax) :real(DBKIND)
: 出力
aya_Var(imin:imax,jmin:jmax,kmin:kmax) :real(DBKIND), intent(in)
: 入力

aya 格子上の配列に対し y 方向平均を行う

[Source]

    function aa_AvrY_aya(aya_Var)
      ! aya 格子上の配列に対し y 方向平均を行う

      real(DBKIND), intent(in) :: aya_Var(imin:imax,jmin:jmax,kmin:kmax) ! 入力
      real(DBKIND)             :: aa_AvrY_aya(imin:imax,kmin:kmax)       ! 出力
      
      ! 初期化
      aa_AvrY_aya = 0.0d0

      ! 平均
      aa_AvrY_aya = aa_IntY_aya(aya_Var)/sum(y_dy(1:jm))

    end function aa_AvrY_aya
Function :
aa_IntY_aya(imin:imax,kmin:kmax) :real(DBKIND)
: 出力
aya_Var(imin:imax,jmin:jmax,kmin:kmax) :real(DBKIND), intent(in)
: 入力

aya 格子上の配列に対し y 方向積分を行う

[Source]

    function aa_IntY_aya(aya_Var)
      ! aya 格子上の配列に対し y 方向積分を行う

      real(DBKIND), intent(in) :: aya_Var(imin:imax,jmin:jmax,kmin:kmax) ! 入力
      real(DBKIND)             :: aa_IntY_aya(imin:imax,kmin:kmax)       ! 出力
      integer                  :: ix, kz                           ! ループ添字

      ! 初期化
      aa_IntY_aya = 0.0d0

      ! 積分
      do kz = kmin, kmax
        do ix = imin, imax
          aa_IntY_aya(ix,kz) = IntY_y(aya_Var(ix,:,kz))
        end do
      end do

    end function aa_IntY_aya
q_Y
Variable :
q_Y(:) :real(DBKIND),allocatable
: 整数格子点座標

Original external subprogram is y_base_module#q_Y

q_avr_y( y_Var ) result(q_avr_y)
Function :
q_avr_y(jmin:jmax) :real(DBKIND)
: 出力
y_Var(jmin:jmax) :real(DBKIND),intent(in)
: 入力

平均操作を行い半整数格子点の配列値を整数格子点上へ返す

Original external subprogram is y_base_module#q_avr_y

q_dy
Variable :
q_dy(:) :real(DBKIND),allocatable
: 整数格子点座標

Original external subprogram is y_base_module#q_dy

Function :
aa_AvrX_xaa(jmin:jmax,kmin:kmax) :real(DBKIND)
: 出力
xaa_Var(imin:imax,jmin:jmax,kmin:kmax) :real(DBKIND), intent(in)
: 入力

xaa 格子上の配列に対し x 方向平均を行う

[Source]

    function aa_AvrX_xaa(xaa_Var)
      ! xaa 格子上の配列に対し x 方向平均を行う

      real(DBKIND), intent(in) :: xaa_Var(imin:imax,jmin:jmax,kmin:kmax) ! 入力
      real(DBKIND)             :: aa_AvrX_xaa(jmin:jmax,kmin:kmax)       ! 出力

      ! 初期化
      aa_AvrX_xaa = 0.0d0

      ! 平均
      aa_AvrX_xaa = aa_IntX_xaa(xaa_Var)/sum(x_dx(1:im))

    end function aa_AvrX_xaa
Function :
aa_IntX_xaa(jmin:jmax,kmin:kmax) :real(DBKIND)
: 出力
xaa_Var(imin:imax,jmin:jmax,kmin:kmax) :real(DBKIND), intent(in)
: 入力

xaa 格子上の配列に対し x 方向積分を行う

[Source]

    function aa_IntX_xaa(xaa_Var)
      ! xaa 格子上の配列に対し x 方向積分を行う

      real(DBKIND), intent(in) :: xaa_Var(imin:imax,jmin:jmax,kmin:kmax) ! 入力
      real(DBKIND)             :: aa_IntX_xaa(jmin:jmax,kmin:kmax)       ! 出力
      integer                  :: jy, kz                           ! ループ添字

      ! 初期化
      aa_IntX_xaa = 0.0d0

      ! 積分
      do kz = kmin, kmax
        do jy = jmin, jmax
          aa_IntX_xaa(jy,kz) = IntX_x(xaa_Var(:,jy,kz))
        end do
      end do

    end function aa_IntX_xaa
Function :
a_AvrXY_xya(kmin:kmax) :real(DBKIND)
: 出力
xya_Var(imin:imax,jmin:jmax,kmin:kmax) :real(DBKIND), intent(in)
: 入力

xya 格子上の配列に対し xy 方向平均を行う

[Source]

    function a_AvrXY_xya(xya_Var)
      ! xya 格子上の配列に対し xy 方向平均を行う

      real(DBKIND), intent(in) :: xya_Var(imin:imax,jmin:jmax,kmin:kmax) ! 入力
      real(DBKIND)             :: a_AvrXY_xya(kmin:kmax)       ! 出力

      ! 初期化
      a_AvrXY_xya = 0.0d0

      ! 平均
      a_AvrXY_xya = a_IntXY_xya(xya_Var)/(sum(x_dx(1:im))*sum(y_dy(1:jm)))

    end function a_AvrXY_xya
Function :
a_IntXY_xya(kmin:kmax) :real(DBKIND)
: 出力
xya_Var(imin:imax,jmin:jmax,kmin:kmax) :real(DBKIND), intent(in)
: 入力

xya 格子上の配列に対し xy 方向積分を行う

[Source]

    function a_IntXY_xya(xya_Var)
      ! xya 格子上の配列に対し xy 方向積分を行う

      real(DBKIND), intent(in) :: xya_Var(imin:imax,jmin:jmax,kmin:kmax) ! 入力
      real(DBKIND)             :: a_IntXY_xya(kmin:kmax)       ! 出力
      integer                  :: kz                           ! ループ添字

      ! 初期化
      a_IntXY_xya = 0.0d0

      ! 積分
      do kz = kmin, kmax
        a_IntXY_xya(kz) = IntY_y(y_IntX_xy(xya_Var(:,:,kz)))
      end do

    end function a_IntXY_xya
r_Z
Variable :
r_Z(:) :real(DBKIND),allocatable
: 整数格子座標

Original external subprogram is z_base_module#r_Z

r_avr_z( z_Var ) result(r_avr_z)
Function :
r_avr_z(kmin:kmax) :real(DBKIND)
: 出力
z_Var(kmin:kmax) :real(DBKIND),intent(in)
: 入力

平均操作を行い半整数格子点の配列値を整数格子点上へ返す

Original external subprogram is z_base_module#r_avr_z

r_dz
Variable :
r_dz(:) :real(DBKIND),allocatable
: 整数格子座標

Original external subprogram is z_base_module#r_dz

x_X
Variable :
x_X(:) :real(DBKIND),allocatable
: 半整数格子点座標

Original external subprogram is xy_base_module#x_X

x_X
Variable :
x_X(:) :real(DBKIND),allocatable
: 半整数格子点座標

Original external subprogram is x_base_module#x_X

x_avr_p( p_Var ) result(x_avr_p)
Function :
x_avr_p(imin:imax) :real(DBKIND)
: 出力
p_Var(imin:imax) :real(DBKIND),intent(in)
: 入力

平均操作を行い整数格子点の配列値を半整数格子点上へ返す

Original external subprogram is xy_base_module#x_avr_p

x_avr_p( p_Var ) result(x_avr_p)
Function :
x_avr_p(imin:imax) :real(DBKIND)
: 出力
p_Var(imin:imax) :real(DBKIND),intent(in)
: 入力

平均操作を行い整数格子点の配列値を半整数格子点上へ返す

Original external subprogram is x_base_module#x_avr_p

x_dx
Variable :
x_dx(:) :real(DBKIND),allocatable
: 半整数格子点座標

Original external subprogram is xy_base_module#x_dx

x_dx
Variable :
x_dx(:) :real(DBKIND),allocatable
: 半整数格子点座標

Original external subprogram is x_base_module#x_dx

xmargin
Variable :
xmargin = 2 :integer
: 糊代格子点数

Original external subprogram is xy_base_module#xmargin

xmargin
Variable :
xmargin = 2 :integer
: 糊代格子点数

Original external subprogram is x_base_module#xmargin

Function :
aa_AvrZ_aaz(imin:imax,jmin:jmax) :real(DBKIND)
: 出力
aaz_Var(imin:imax,jmin:jmax,kmin:kmax) :real(DBKIND), intent(in)
: 入力

aaz 格子上の配列に対し z 方向平均を行う

[Source]

    function aa_AvrZ_aaz(aaz_Var)
      ! aaz 格子上の配列に対し z 方向平均を行う

      real(DBKIND), intent(in) :: aaz_Var(imin:imax,jmin:jmax,kmin:kmax) ! 入力
      real(DBKIND)             :: aa_AvrZ_aaz(imin:imax,jmin:jmax)       ! 出力

      ! 初期化
      aa_AvrZ_aaz = 0.0d0

      ! 平均
      aa_AvrZ_aaz = aa_IntZ_aaz(aaz_Var)/sum(z_dz(1:km))

    end function aa_AvrZ_aaz
Function :
aa_IntZ_aaz(imin:imax,jmin:jmax) :real(DBKIND)
: 出力
aaz_Var(imin:imax,jmin:jmax,kmin:kmax) :real(DBKIND), intent(in)
: 入力

aaz 格子上の配列に対し z 方向積分を行う

[Source]

    function aa_IntZ_aaz(aaz_Var)
      ! aaz 格子上の配列に対し z 方向積分を行う

      real(DBKIND), intent(in) :: aaz_Var(imin:imax,jmin:jmax,kmin:kmax) ! 入力
      real(DBKIND)             :: aa_IntZ_aaz(imin:imax,jmin:jmax)       ! 出力
      integer                  :: ix, jy                           ! ループ添字

      ! 初期化
      aa_IntZ_aaz = 0.0d0

      ! 積分
      do jy = jmin, jmax
        do ix = imin, imax
          aa_IntZ_aaz(ix,jy) = IntZ_z(aaz_Var(ix,jy,:))
        end do
      end do

    end function aa_IntZ_aaz
Function :
aar_avr_aaz(imin:imax,jmin:jmax,kmin:kmax) :real(DBKIND)
:
integer :ix, jy
aaz_Var(imin:imax,jmin:jmax,kmin:kmax) :real(DBKIND),intent(in)

平均操作を行い z 方向半整数格子点の配列値を整数格子点上へ返す

[Source]

    function aar_avr_aaz(aaz_Var)
      ! 平均操作を行い z 方向半整数格子点の配列値を整数格子点上へ返す
  
      real(DBKIND),intent(in) :: aaz_Var(imin:imax,jmin:jmax,kmin:kmax) 
      real(DBKIND)            :: aar_avr_aaz(imin:imax,jmin:jmax,kmin:kmax)
!      integer                 :: ix, jy
      integer                 :: kz

      ! 初期化
      ! * 0 割りを防ぐためにはマシンイプシロン値を用いるべき
      !
      aar_avr_aaz = 0.0d0

      ! 平均操作
      ! * 関数 r_avr_z を用いて計算
      !
!      do jy = jmin, jmax
!        do ix = imin, imax
!          aar_avr_aaz(ix,jy,:) = r_avr_z(aaz_Var(ix,jy,:))
!        end do
!      end do

      do kz = kmin, kmax-1
        aar_avr_aaz(:,:,kz) = (z_dz(kz)*aaz_Var(:,:,kz+1) + z_dz(kz+1)*aaz_Var(:,:,kz)) *0.5d0/r_dz(kz)
      end do

      aar_avr_aaz(:,:,kmax) = aar_avr_aaz(:,:,kmax-1)

    end function aar_avr_aaz
Function :
aqa_avr_aya(imin:imax,jmin:jmax,kmin:kmax) :real(DBKIND)
:
integer :ix, kz
aya_Var(imin:imax,jmin:jmax,kmin:kmax) :real(DBKIND),intent(in)

平均操作を行い y 方向半整数格子点の配列値を整数格子点上へ返す

[Source]

    function aqa_avr_aya(aya_Var)
      ! 平均操作を行い y 方向半整数格子点の配列値を整数格子点上へ返す
  
      real(DBKIND),intent(in) :: aya_Var(imin:imax,jmin:jmax,kmin:kmax)
      real(DBKIND)            :: aqa_avr_aya(imin:imax,jmin:jmax,kmin:kmax) 
!      integer                 :: ix, kz
      integer                 :: jy

      ! 初期化
      ! * 0 割りを防ぐためにはマシンイプシロン値を用いるべき
      !
      aqa_avr_aya = 0.0d0

      ! 平均操作
      ! * 関数 q_avr_y を用いて計算
      !
!      do kz = kmin, kmax
!        do ix = imin, imax
!          aqa_avr_aya(ix,:,kz) = q_avr_y(aya_Var(ix,:,kz))
!        end do
!      end do

      do jy = jmin, jmax-1
        aqa_avr_aya(:,jy,:) = (y_dy(jy)*aya_Var(:,jy+1,:) + y_dy(jy+1)*aya_Var(:,jy,:)) * 0.5d0/q_dy(jy)
      end do

      aqa_avr_aya(:,jmax,:) =  aqa_avr_aya(:,jmax-1,:) 

    end function aqa_avr_aya
Function :
xqr_avr_xyz(imin:imax,jmin:jmax,kmin:kmax) :real(DBKIND)
: 出力
xyz_Var(imin:imax,jmin:jmax,kmin:kmax) :real(DBKIND), intent(in)
: 入力

[Source]

    function xqr_avr_xyz(xyz_Var)
      real(DBKIND), intent(in) :: xyz_Var(imin:imax,jmin:jmax,kmin:kmax)! 入力
      real(DBKIND)             :: xqr_avr_xyz(imin:imax,jmin:jmax,kmin:kmax)       ! 出力
      integer                  :: jy, kz                          ! ループ添字

      ! 初期化
      xqr_avr_xyz = 0.0d0

      do kz = kmin, kmax-1
        do jy = jmin, jmax-1
          xqr_avr_xyz(:,jy,kz) = ( xyz_Var(:,jy,kz)   + xyz_Var(:,jy+1,kz) + xyz_Var(:,jy,kz+1) + xyz_Var(:,jy+1,kz+1) ) * 0.25d0 
        end do
      end do

    end function xqr_avr_xyz
Function :
xaa_avr_paa(imin:imax,jmin:jmax,kmin:kmax) :real(DBKIND)
:
integer :jy, kz
paa_Var(imin:imax,jmin:jmax,kmin:kmax) :real(DBKIND),intent(in)

平均操作を行い x 方向整数格子点の配列値を半整数点上へ返す

[Source]

    function xaa_avr_paa(paa_Var)
      ! 平均操作を行い x 方向整数格子点の配列値を半整数点上へ返す
  
      real(DBKIND),intent(in) :: paa_Var(imin:imax,jmin:jmax,kmin:kmax)
      real(DBKIND)            :: xaa_avr_paa(imin:imax,jmin:jmax,kmin:kmax)
!      integer                 :: jy, kz
      integer                 :: ix

      ! 初期化
      ! * 0 割りを防ぐためにはマシンイプシロン値を用いるべき
      !
      xaa_avr_paa = 0.0d0

      ! 平均操作
      ! * 関数 x_avr_p を用いて計算
      !
!      do kz = kmin, kmax
!        do jy = jmin, jmax
!          xaa_avr_paa(:,jy,kz) = x_avr_p(paa_Var(:,jy,kz))
!        end do
!      end do

      do ix = imin+1, imax
        xaa_avr_paa(ix,:,:) = (paa_Var(ix,:,:) + paa_Var(ix-1,:,:))*0.5d0 
      end do

      ! imin 格子上の値
      xaa_avr_paa(imin,:,:) = xaa_avr_paa(imin+1,:,:)


    end function xaa_avr_paa
Function :
aaz_avr_aar(imin:imax,jmin:jmax,kmin:kmax) :real(DBKIND)
:
integer :ix, jy
aar_Var(imin:imax,jmin:jmax,kmin:kmax) :real(DBKIND),intent(in)

平均操作を行い z 方向整数格子点の配列値を半整数格子点上へ返す

[Source]

    function aaz_avr_aar(aar_Var)
      ! 平均操作を行い z 方向整数格子点の配列値を半整数格子点上へ返す
  
      real(DBKIND),intent(in) :: aar_Var(imin:imax,jmin:jmax,kmin:kmax)   
      real(DBKIND)            :: aaz_avr_aar(imin:imax,jmin:jmax,kmin:kmax)
!      integer                 :: ix, jy
      integer                 :: kz

      ! 初期化
      ! * 0 割りを防ぐためにはマシンイプシロン値を用いるべき
      !
      aaz_avr_aar = 0.0d0

      ! 平均操作
      ! * 関数 z_avr_r を用いて計算
      !
!      do jy = jmin, jmax
!        do ix = imin, imax
!          aaz_avr_aar(ix,jy,:) = z_avr_r(aar_Var(ix,jy,:))
!        end do
!      end do

      do kz = kmin+1, kmax
        aaz_avr_aar(:,:,kz) = (aar_Var(:,:,kz) + aar_Var(:,:,kz-1))*0.5d0 
      end do

      aaz_avr_aar(:,:,kmin) = aaz_avr_aar(:,:,kmin+1)

    end function aaz_avr_aar
Function :
aqa_avr_aya(imin:imax,jmin:jmax,kmin:kmax) :real(DBKIND)
:
integer :ix, kz
aya_Var(imin:imax,jmin:jmax,kmin:kmax) :real(DBKIND),intent(in)

平均操作を行い y 方向半整数格子点の配列値を整数格子点上へ返す

[Source]

    function aqa_avr_aya(aya_Var)
      ! 平均操作を行い y 方向半整数格子点の配列値を整数格子点上へ返す
  
      real(DBKIND),intent(in) :: aya_Var(imin:imax,jmin:jmax,kmin:kmax)
      real(DBKIND)            :: aqa_avr_aya(imin:imax,jmin:jmax,kmin:kmax) 
!      integer                 :: ix, kz
      integer                 :: jy

      ! 初期化
      ! * 0 割りを防ぐためにはマシンイプシロン値を用いるべき
      !
      aqa_avr_aya = 0.0d0

      ! 平均操作
      ! * 関数 q_avr_y を用いて計算
      !
!      do kz = kmin, kmax
!        do ix = imin, imax
!          aqa_avr_aya(ix,:,kz) = q_avr_y(aya_Var(ix,:,kz))
!        end do
!      end do

      do jy = jmin, jmax-1
        aqa_avr_aya(:,jy,:) = (y_dy(jy)*aya_Var(:,jy+1,:) + y_dy(jy+1)*aya_Var(:,jy,:)) * 0.5d0/q_dy(jy)
      end do

      aqa_avr_aya(:,jmax,:) =  aqa_avr_aya(:,jmax-1,:) 

    end function aqa_avr_aya
Function :
aa_AvrY_aya(imin:imax,kmin:kmax) :real(DBKIND)
: 出力
aya_Var(imin:imax,jmin:jmax,kmin:kmax) :real(DBKIND), intent(in)
: 入力

aya 格子上の配列に対し y 方向平均を行う

[Source]

    function aa_AvrY_aya(aya_Var)
      ! aya 格子上の配列に対し y 方向平均を行う

      real(DBKIND), intent(in) :: aya_Var(imin:imax,jmin:jmax,kmin:kmax) ! 入力
      real(DBKIND)             :: aa_AvrY_aya(imin:imax,kmin:kmax)       ! 出力
      
      ! 初期化
      aa_AvrY_aya = 0.0d0

      ! 平均
      aa_AvrY_aya = aa_IntY_aya(aya_Var)/sum(y_dy(1:jm))

    end function aa_AvrY_aya
Function :
aa_IntY_aya(imin:imax,kmin:kmax) :real(DBKIND)
: 出力
aya_Var(imin:imax,jmin:jmax,kmin:kmax) :real(DBKIND), intent(in)
: 入力

aya 格子上の配列に対し y 方向積分を行う

[Source]

    function aa_IntY_aya(aya_Var)
      ! aya 格子上の配列に対し y 方向積分を行う

      real(DBKIND), intent(in) :: aya_Var(imin:imax,jmin:jmax,kmin:kmax) ! 入力
      real(DBKIND)             :: aa_IntY_aya(imin:imax,kmin:kmax)       ! 出力
      integer                  :: ix, kz                           ! ループ添字

      ! 初期化
      aa_IntY_aya = 0.0d0

      ! 積分
      do kz = kmin, kmax
        do ix = imin, imax
          aa_IntY_aya(ix,kz) = IntY_y(aya_Var(ix,:,kz))
        end do
      end do

    end function aa_IntY_aya
Function :
xy_AvrZ_xyr(imin:imax,jmin:jmax) :real(DBKIND)
: 出力
xyr_Var(imin:imax,jmin:jmax,kmin:kmax) :real(DBKIND), intent(in)
: 入力

xyr 格子上の配列に対し z 方向平均を行う

[Source]

    function xy_AvrZ_xyr(xyr_Var)
      ! xyr 格子上の配列に対し z 方向平均を行う

      real(DBKIND), intent(in) :: xyr_Var(imin:imax,jmin:jmax,kmin:kmax) ! 入力
      real(DBKIND)             :: xy_AvrZ_xyr(imin:imax,jmin:jmax)       ! 出力
      
      ! 初期化
      xy_AvrZ_xyr = 0.0d0

      ! 平均
      xy_AvrZ_xyr = xy_IntZ_xyr(xyr_Var)/sum(z_dz(1:km))

    end function xy_AvrZ_xyr
Function :
aa_AvrZ_aaz(imin:imax,jmin:jmax) :real(DBKIND)
: 出力
aaz_Var(imin:imax,jmin:jmax,kmin:kmax) :real(DBKIND), intent(in)
: 入力

aaz 格子上の配列に対し z 方向平均を行う

[Source]

    function aa_AvrZ_aaz(aaz_Var)
      ! aaz 格子上の配列に対し z 方向平均を行う

      real(DBKIND), intent(in) :: aaz_Var(imin:imax,jmin:jmax,kmin:kmax) ! 入力
      real(DBKIND)             :: aa_AvrZ_aaz(imin:imax,jmin:jmax)       ! 出力

      ! 初期化
      aa_AvrZ_aaz = 0.0d0

      ! 平均
      aa_AvrZ_aaz = aa_IntZ_aaz(aaz_Var)/sum(z_dz(1:km))

    end function aa_AvrZ_aaz
Function :
xy_IntZ_xyr(imin:imax,jmin:jmax) :real(DBKIND)
: 出力
xyr_Var(imin:imax,jmin:jmax,kmin:kmax) :real(DBKIND), intent(in)
: 入力

xyr 格子上の配列に対し z 方向積分を行う

[Source]

    function xy_IntZ_xyr(xyr_Var)
      ! xyr 格子上の配列に対し z 方向積分を行う

      real(DBKIND), intent(in) :: xyr_Var(imin:imax,jmin:jmax,kmin:kmax) ! 入力
      real(DBKIND)             :: xy_IntZ_xyr(imin:imax,jmin:jmax)       ! 出力
      integer                  :: ix, jy                           ! ループ添字

      ! 初期化
      xy_IntZ_xyr = 0.0d0

      ! 積分
      do jy = jmin, jmax
        do ix = imin, imax
          xy_IntZ_xyr(ix,jy) = IntZ_r(xyr_Var(ix,jy,:))
        end do
      end do

    end function xy_IntZ_xyr
Function :
aa_IntZ_aaz(imin:imax,jmin:jmax) :real(DBKIND)
: 出力
aaz_Var(imin:imax,jmin:jmax,kmin:kmax) :real(DBKIND), intent(in)
: 入力

aaz 格子上の配列に対し z 方向積分を行う

[Source]

    function aa_IntZ_aaz(aaz_Var)
      ! aaz 格子上の配列に対し z 方向積分を行う

      real(DBKIND), intent(in) :: aaz_Var(imin:imax,jmin:jmax,kmin:kmax) ! 入力
      real(DBKIND)             :: aa_IntZ_aaz(imin:imax,jmin:jmax)       ! 出力
      integer                  :: ix, jy                           ! ループ添字

      ! 初期化
      aa_IntZ_aaz = 0.0d0

      ! 積分
      do jy = jmin, jmax
        do ix = imin, imax
          aa_IntZ_aaz(ix,jy) = IntZ_z(aaz_Var(ix,jy,:))
        end do
      end do

    end function aa_IntZ_aaz
Function :
xaa_avr_paa(imin:imax,jmin:jmax,kmin:kmax) :real(DBKIND)
:
integer :jy, kz
paa_Var(imin:imax,jmin:jmax,kmin:kmax) :real(DBKIND),intent(in)

平均操作を行い x 方向整数格子点の配列値を半整数点上へ返す

[Source]

    function xaa_avr_paa(paa_Var)
      ! 平均操作を行い x 方向整数格子点の配列値を半整数点上へ返す
  
      real(DBKIND),intent(in) :: paa_Var(imin:imax,jmin:jmax,kmin:kmax)
      real(DBKIND)            :: xaa_avr_paa(imin:imax,jmin:jmax,kmin:kmax)
!      integer                 :: jy, kz
      integer                 :: ix

      ! 初期化
      ! * 0 割りを防ぐためにはマシンイプシロン値を用いるべき
      !
      xaa_avr_paa = 0.0d0

      ! 平均操作
      ! * 関数 x_avr_p を用いて計算
      !
!      do kz = kmin, kmax
!        do jy = jmin, jmax
!          xaa_avr_paa(:,jy,kz) = x_avr_p(paa_Var(:,jy,kz))
!        end do
!      end do

      do ix = imin+1, imax
        xaa_avr_paa(ix,:,:) = (paa_Var(ix,:,:) + paa_Var(ix-1,:,:))*0.5d0 
      end do

      ! imin 格子上の値
      xaa_avr_paa(imin,:,:) = xaa_avr_paa(imin+1,:,:)


    end function xaa_avr_paa
Function :
aya_avr_aqa(imin:imax,jmin:jmax,kmin:kmax) :real(DBKIND)
:
integer :ix, kz
aqa_Var(imin:imax,jmin:jmax,kmin:kmax) :real(DBKIND),intent(in)

平均操作を行い y 方向半整数格子点の配列値を整数格子点上へ返す

[Source]

    function aya_avr_aqa(aqa_Var)
      ! 平均操作を行い y 方向半整数格子点の配列値を整数格子点上へ返す
  
      real(DBKIND),intent(in) :: aqa_Var(imin:imax,jmin:jmax,kmin:kmax)   
      real(DBKIND)            :: aya_avr_aqa(imin:imax,jmin:jmax,kmin:kmax)
!      integer                 :: ix, kz
      integer                 :: jy

      ! 初期化
      ! * 0 割りを防ぐためにはマシンイプシロン値を用いるべき
      !
      aya_avr_aqa = 0.0d0

      ! 平均操作
      ! * 関数 y_q を用いて計算
      !
!      do kz = kmin, kmax
!        do ix = imin, imax
!          aya_avr_aqa(ix,:,kz) = y_avr_q(aqa_Var(ix,:,kz))
!        end do
!      end do

      do jy = jmin+1, jmax
        aya_avr_aqa(:,jy,:) = (aqa_Var(:,jy,:) + aqa_Var(:,jy-1,:))*0.5d0 
      end do
      
      aya_avr_aqa(:,jmin,:) = aya_avr_aqa(:,jmin+1,:)

    end function aya_avr_aqa
Function :
aar_avr_aaz(imin:imax,jmin:jmax,kmin:kmax) :real(DBKIND)
:
integer :ix, jy
aaz_Var(imin:imax,jmin:jmax,kmin:kmax) :real(DBKIND),intent(in)

平均操作を行い z 方向半整数格子点の配列値を整数格子点上へ返す

[Source]

    function aar_avr_aaz(aaz_Var)
      ! 平均操作を行い z 方向半整数格子点の配列値を整数格子点上へ返す
  
      real(DBKIND),intent(in) :: aaz_Var(imin:imax,jmin:jmax,kmin:kmax) 
      real(DBKIND)            :: aar_avr_aaz(imin:imax,jmin:jmax,kmin:kmax)
!      integer                 :: ix, jy
      integer                 :: kz

      ! 初期化
      ! * 0 割りを防ぐためにはマシンイプシロン値を用いるべき
      !
      aar_avr_aaz = 0.0d0

      ! 平均操作
      ! * 関数 r_avr_z を用いて計算
      !
!      do jy = jmin, jmax
!        do ix = imin, imax
!          aar_avr_aaz(ix,jy,:) = r_avr_z(aaz_Var(ix,jy,:))
!        end do
!      end do

      do kz = kmin, kmax-1
        aar_avr_aaz(:,:,kz) = (z_dz(kz)*aaz_Var(:,:,kz+1) + z_dz(kz+1)*aaz_Var(:,:,kz)) *0.5d0/r_dz(kz)
      end do

      aar_avr_aaz(:,:,kmax) = aar_avr_aaz(:,:,kmax-1)

    end function aar_avr_aaz
xyz_X
Variable :
xyz_X(:,:,:) :real(DBKIND),allocatable
: x 座標(半整数格子)
xyz_Y
Variable :
xyz_Y(:,:,:) :real(DBKIND),allocatable
: y 座標(半整数格子)
xyz_Z
Variable :
xyz_Z(:,:,:) :real(DBKIND),allocatable
: z 座標(半整数格子)
Function :
xyz_avr_pqz(imin:imax,jmin:jmax,kmin:kmax) :real(DBKIND)
: 出力
pqz_Var(imin:imax,jmin:jmax,kmin:kmax) :real(DBKIND), intent(in)
: 入力

[Source]

    function xyz_avr_pqz(pqz_Var)
      real(DBKIND), intent(in) :: pqz_Var(imin:imax,jmin:jmax,kmin:kmax)! 入力
      real(DBKIND)             :: xyz_avr_pqz(imin:imax,jmin:jmax,kmin:kmax)       ! 出力
      integer                  :: ix, jy                          ! ループ添字

      ! 初期化
      xyz_avr_pqz = 0.0d0

      do jy = jmin+1, jmax
        do ix = imin+1, imax
          xyz_avr_pqz(ix,jy,:) = ( pqz_Var(ix-1,jy-1,:) + pqz_Var(ix,jy-1,:) + pqz_Var(ix-1,jy,:)   + pqz_Var(ix,jy,:)     ) * 0.25d0 
        end do
      end do

    end function xyz_avr_pqz
Function :
xyz_avr_pyr(imin:imax,jmin:jmax,kmin:kmax) :real(DBKIND)
: 出力
pyr_Var(imin:imax,jmin:jmax,kmin:kmax) :real(DBKIND), intent(in)
: 入力

[Source]

    function xyz_avr_pyr(pyr_Var)
      real(DBKIND), intent(in) :: pyr_Var(imin:imax,jmin:jmax,kmin:kmax)! 入力
      real(DBKIND)             :: xyz_avr_pyr(imin:imax,jmin:jmax,kmin:kmax)       ! 出力
      integer                  :: ix, kz                          ! ループ添字

      ! 初期化
      xyz_avr_pyr = 0.0d0

      do kz = kmin+1, kmax
        do ix = imin+1, imax
          xyz_avr_pyr(ix,:,kz) = ( pyr_Var(ix-1,:,kz-1) + pyr_Var(ix,:,kz-1) + pyr_Var(ix-1,:,kz)   + pyr_Var(ix,:,kz)     ) * 0.25d0 
        end do
      end do

    end function xyz_avr_pyr
Function :
xaa_avr_paa(imin:imax,jmin:jmax,kmin:kmax) :real(DBKIND)
:
integer :jy, kz
paa_Var(imin:imax,jmin:jmax,kmin:kmax) :real(DBKIND),intent(in)

平均操作を行い x 方向整数格子点の配列値を半整数点上へ返す

[Source]

    function xaa_avr_paa(paa_Var)
      ! 平均操作を行い x 方向整数格子点の配列値を半整数点上へ返す
  
      real(DBKIND),intent(in) :: paa_Var(imin:imax,jmin:jmax,kmin:kmax)
      real(DBKIND)            :: xaa_avr_paa(imin:imax,jmin:jmax,kmin:kmax)
!      integer                 :: jy, kz
      integer                 :: ix

      ! 初期化
      ! * 0 割りを防ぐためにはマシンイプシロン値を用いるべき
      !
      xaa_avr_paa = 0.0d0

      ! 平均操作
      ! * 関数 x_avr_p を用いて計算
      !
!      do kz = kmin, kmax
!        do jy = jmin, jmax
!          xaa_avr_paa(:,jy,kz) = x_avr_p(paa_Var(:,jy,kz))
!        end do
!      end do

      do ix = imin+1, imax
        xaa_avr_paa(ix,:,:) = (paa_Var(ix,:,:) + paa_Var(ix-1,:,:))*0.5d0 
      end do

      ! imin 格子上の値
      xaa_avr_paa(imin,:,:) = xaa_avr_paa(imin+1,:,:)


    end function xaa_avr_paa
Function :
xyz_avr_xqr(imin:imax,jmin:jmax,kmin:kmax) :real(DBKIND)
: 出力
xqr_Var(imin:imax,jmin:jmax,kmin:kmax) :real(DBKIND), intent(in)
: 入力

[Source]

    function xyz_avr_xqr(xqr_Var)
      real(DBKIND), intent(in) :: xqr_Var(imin:imax,jmin:jmax,kmin:kmax)! 入力
      real(DBKIND)             :: xyz_avr_xqr(imin:imax,jmin:jmax,kmin:kmax)       ! 出力
      integer                  :: jy, kz                          ! ループ添字

      ! 初期化
      xyz_avr_xqr = 0.0d0

      do kz = kmin+1, kmax
        do jy = jmin+1, jmax
          xyz_avr_xqr(:,jy,kz) = ( xqr_Var(:,jy-1,kz-1) + xqr_Var(:,jy,kz-1) + xqr_Var(:,jy-1,kz)   + xqr_Var(:,jy,kz)     ) * 0.25d0 
        end do
      end do

    end function xyz_avr_xqr
Function :
aya_avr_aqa(imin:imax,jmin:jmax,kmin:kmax) :real(DBKIND)
:
integer :ix, kz
aqa_Var(imin:imax,jmin:jmax,kmin:kmax) :real(DBKIND),intent(in)

平均操作を行い y 方向半整数格子点の配列値を整数格子点上へ返す

[Source]

    function aya_avr_aqa(aqa_Var)
      ! 平均操作を行い y 方向半整数格子点の配列値を整数格子点上へ返す
  
      real(DBKIND),intent(in) :: aqa_Var(imin:imax,jmin:jmax,kmin:kmax)   
      real(DBKIND)            :: aya_avr_aqa(imin:imax,jmin:jmax,kmin:kmax)
!      integer                 :: ix, kz
      integer                 :: jy

      ! 初期化
      ! * 0 割りを防ぐためにはマシンイプシロン値を用いるべき
      !
      aya_avr_aqa = 0.0d0

      ! 平均操作
      ! * 関数 y_q を用いて計算
      !
!      do kz = kmin, kmax
!        do ix = imin, imax
!          aya_avr_aqa(ix,:,kz) = y_avr_q(aqa_Var(ix,:,kz))
!        end do
!      end do

      do jy = jmin+1, jmax
        aya_avr_aqa(:,jy,:) = (aqa_Var(:,jy,:) + aqa_Var(:,jy-1,:))*0.5d0 
      end do
      
      aya_avr_aqa(:,jmin,:) = aya_avr_aqa(:,jmin+1,:)

    end function aya_avr_aqa
Function :
aaz_avr_aar(imin:imax,jmin:jmax,kmin:kmax) :real(DBKIND)
:
integer :ix, jy
aar_Var(imin:imax,jmin:jmax,kmin:kmax) :real(DBKIND),intent(in)

平均操作を行い z 方向整数格子点の配列値を半整数格子点上へ返す

[Source]

    function aaz_avr_aar(aar_Var)
      ! 平均操作を行い z 方向整数格子点の配列値を半整数格子点上へ返す
  
      real(DBKIND),intent(in) :: aar_Var(imin:imax,jmin:jmax,kmin:kmax)   
      real(DBKIND)            :: aaz_avr_aar(imin:imax,jmin:jmax,kmin:kmax)
!      integer                 :: ix, jy
      integer                 :: kz

      ! 初期化
      ! * 0 割りを防ぐためにはマシンイプシロン値を用いるべき
      !
      aaz_avr_aar = 0.0d0

      ! 平均操作
      ! * 関数 z_avr_r を用いて計算
      !
!      do jy = jmin, jmax
!        do ix = imin, imax
!          aaz_avr_aar(ix,jy,:) = z_avr_r(aar_Var(ix,jy,:))
!        end do
!      end do

      do kz = kmin+1, kmax
        aaz_avr_aar(:,:,kz) = (aar_Var(:,:,kz) + aar_Var(:,:,kz-1))*0.5d0 
      end do

      aaz_avr_aar(:,:,kmin) = aaz_avr_aar(:,:,kmin+1)

    end function aaz_avr_aar
Subroutine :
i :integer ,intent(in)
: x 方向格子点数
j :integer ,intent(in)
: y 方向格子点数
k :integer ,intent(in)
: z 方向格子点数
xmg :integer ,intent(in)
: x 方向糊代格子点数
ymg :integer ,intent(in)
: y 方向糊代格子点数
zmg :integer ,intent(in)
: z 方向糊代格子点数
xmin :real(DBKIND),intent(in)
: x 座標最小値
xmax :real(DBKIND),intent(in)
: x 座標最大値
ymin :real(DBKIND),intent(in)
: y 座標最小値
ymax :real(DBKIND),intent(in)
: y 座標最大値
zmin :real(DBKIND),intent(in)
: z 座標最小値
zmax :real(DBKIND),intent(in)
: z 座標最大値

[Source]

    subroutine xyz_axis_init(i, j, k, xmg, ymg, zmg, xmin, xmax, ymin, ymax, zmin, zmax)

      integer         ,intent(in) :: i     ! x 方向格子点数
      integer         ,intent(in) :: j     ! y 方向格子点数
      integer         ,intent(in) :: k     ! z 方向格子点数
      integer         ,intent(in) :: xmg   ! x 方向糊代格子点数
      integer         ,intent(in) :: ymg   ! y 方向糊代格子点数
      integer         ,intent(in) :: zmg   ! z 方向糊代格子点数
      real(DBKIND),intent(in)     :: xmin  ! x 座標最小値     
      real(DBKIND),intent(in)     :: xmax  ! x 座標最大値  
      real(DBKIND),intent(in)     :: ymin  ! y 座標最小値     
      real(DBKIND),intent(in)     :: ymax  ! y 座標最大値  
      real(DBKIND),intent(in)     :: zmin  ! z 座標最小値     
      real(DBKIND),intent(in)     :: zmax  ! z 座標最大値  

      real(DBKIND),allocatable :: xy_X(:,:)! x 座標(半整数格子, 作業配列)
      real(DBKIND),allocatable :: xy_Y(:,:)! y 座標(半整数格子, 作業配列)
      real(DBKIND),allocatable :: yz_Z(:,:)! z 座標(半整数格子, 作業配列)

      ! 配列の上下限の値, 座標値と格子点間隔を設定
      ! * 1 次元用のサブルーチンを用いる
      !
      call x_axis_init(i, xmg, xmin, xmax)
      call y_axis_init(j, ymg, ymin, ymax)
      call z_axis_init(k, zmg, zmin, zmax)

      ! 3 次元座標配列の設定
      ! * 組み込み関数 spread を用いる. 
      ! * 中間配列として 2 次元座標配列を作り, それを 3 次元に拡張する.
      ! 
      allocate(xy_X(imin:imax,jmin:jmax))
      allocate(xy_Y(imin:imax,jmin:jmax))
      allocate(yz_Z(jmin:jmax,kmin:kmax))

      allocate(xyz_X(imin:imax,jmin:jmax,kmin:kmax))
      allocate(xyz_Y(imin:imax,jmin:jmax,kmin:kmax))
      allocate(xyz_Z(imin:imax,jmin:jmax,kmin:kmax))
      allocate(xyz_dX(imin:imax,jmin:jmax,kmin:kmax))
      allocate(xyz_dY(imin:imax,jmin:jmax,kmin:kmax))
      allocate(xyz_dZ(imin:imax,jmin:jmax,kmin:kmax))

      xy_X  = spread(x_X, 2,size(y_Y))
      xyz_X = spread(xy_X,3,size(z_Z))

      xy_X   = spread(x_dX, 2,size(y_dY))
      xyz_dX = spread(xy_X,3,size(z_dZ))

      xy_Y  = spread(y_Y, 1,size(x_X))
      xyz_Y = spread(xy_Y,3,size(z_Z))

      xy_Y   = spread(y_dY, 1,size(x_dX))
      xyz_dY = spread(xy_Y,3,size(z_dZ))

      yz_Z  = spread(z_Z, 1,size(y_Y))
      xyz_Z = spread(yz_Z,1,size(x_X))

      yz_Z   = spread(z_dZ, 1,size(y_dY))
      xyz_dZ = spread(yz_Z,1,size(x_dX))

      deallocate(xy_X)
      deallocate(xy_Y)
      deallocate(yz_Z)

    end subroutine xyz_axis_init  
xyz_dX
Variable :
xyz_dX(:,:,:) :real(DBKIND),allocatable
: x 格子間隔(半整数格子)
xyz_dY
Variable :
xyz_dY(:,:,:) :real(DBKIND),allocatable
: y 格子間隔(半整数格子)
xyz_dZ
Variable :
xyz_dZ(:,:,:) :real(DBKIND),allocatable
: z 格子間隔(半整数格子)
Function :
xz_AvrY_xqz(imin:imax,kmin:kmax) :real(DBKIND)
: 出力
xqz_Var(imin:imax,jmin:jmax,kmin:kmax) :real(DBKIND), intent(in)
: 入力

xqz 格子上の配列に対し y 方向平均を行う

[Source]

    function xz_AvrY_xqz(xqz_Var)
      ! xqz 格子上の配列に対し y 方向平均を行う

      real(DBKIND), intent(in) :: xqz_Var(imin:imax,jmin:jmax,kmin:kmax) ! 入力
      real(DBKIND)             :: xz_AvrY_xqz(imin:imax,kmin:kmax)       ! 出力
      
      ! 初期化
      xz_AvrY_xqz = 0.0d0

      ! 平均
      xz_AvrY_xqz = xz_IntY_xqz(xqz_Var)/sum(y_dy(1:jm))

    end function xz_AvrY_xqz
Function :
aa_AvrY_aya(imin:imax,kmin:kmax) :real(DBKIND)
: 出力
aya_Var(imin:imax,jmin:jmax,kmin:kmax) :real(DBKIND), intent(in)
: 入力

aya 格子上の配列に対し y 方向平均を行う

[Source]

    function aa_AvrY_aya(aya_Var)
      ! aya 格子上の配列に対し y 方向平均を行う

      real(DBKIND), intent(in) :: aya_Var(imin:imax,jmin:jmax,kmin:kmax) ! 入力
      real(DBKIND)             :: aa_AvrY_aya(imin:imax,kmin:kmax)       ! 出力
      
      ! 初期化
      aa_AvrY_aya = 0.0d0

      ! 平均
      aa_AvrY_aya = aa_IntY_aya(aya_Var)/sum(y_dy(1:jm))

    end function aa_AvrY_aya
Function :
xz_IntY_xqz(imin:imax,kmin:kmax) :real(DBKIND)
: 出力
xqz_Var(imin:imax,jmin:jmax,kmin:kmax) :real(DBKIND), intent(in)
: 入力

xqz 格子上の配列に対し y 方向積分を行う

[Source]

    function xz_IntY_xqz(xqz_Var)
      ! xqz 格子上の配列に対し y 方向積分を行う

      real(DBKIND), intent(in) :: xqz_Var(imin:imax,jmin:jmax,kmin:kmax) ! 入力
      real(DBKIND)             :: xz_IntY_xqz(imin:imax,kmin:kmax)       ! 出力
      integer                  :: ix, kz                           ! ループ添字

      ! 初期化
      xz_IntY_xqz = 0.0d0

      ! 積分
      do kz = kmin, kmax
        do ix = imin, imax
          xz_IntY_xqz(ix,kz) = IntY_q(xqz_Var(ix,:,kz))
        end do
      end do

    end function xz_IntY_xqz
Function :
aa_IntY_aya(imin:imax,kmin:kmax) :real(DBKIND)
: 出力
aya_Var(imin:imax,jmin:jmax,kmin:kmax) :real(DBKIND), intent(in)
: 入力

aya 格子上の配列に対し y 方向積分を行う

[Source]

    function aa_IntY_aya(aya_Var)
      ! aya 格子上の配列に対し y 方向積分を行う

      real(DBKIND), intent(in) :: aya_Var(imin:imax,jmin:jmax,kmin:kmax) ! 入力
      real(DBKIND)             :: aa_IntY_aya(imin:imax,kmin:kmax)       ! 出力
      integer                  :: ix, kz                           ! ループ添字

      ! 初期化
      aa_IntY_aya = 0.0d0

      ! 積分
      do kz = kmin, kmax
        do ix = imin, imax
          aa_IntY_aya(ix,kz) = IntY_y(aya_Var(ix,:,kz))
        end do
      end do

    end function aa_IntY_aya
y_Y
Variable :
y_Y(:) :real(DBKIND),allocatable
: 半整数格子点座標

Original external subprogram is y_base_module#y_Y

y_avr_q( q_Var ) result(y_avr_q)
Function :
y_avr_q(jmin:jmax) :real(DBKIND)
: 出力
q_Var(jmin:jmax) :real(DBKIND),intent(in)
: 入力

平均操作を行い整数格子点の配列値を半整数格子点上へ返す

Original external subprogram is y_base_module#y_avr_q

y_dy
Variable :
y_dy(:) :real(DBKIND),allocatable
: 半整数格子点座標

Original external subprogram is y_base_module#y_dy

ymargin
Variable :
ymargin = 2 :integer
: 糊代格子点数

Original external subprogram is y_base_module#ymargin

Function :
aa_AvrX_xaa(jmin:jmax,kmin:kmax) :real(DBKIND)
: 出力
xaa_Var(imin:imax,jmin:jmax,kmin:kmax) :real(DBKIND), intent(in)
: 入力

xaa 格子上の配列に対し x 方向平均を行う

[Source]

    function aa_AvrX_xaa(xaa_Var)
      ! xaa 格子上の配列に対し x 方向平均を行う

      real(DBKIND), intent(in) :: xaa_Var(imin:imax,jmin:jmax,kmin:kmax) ! 入力
      real(DBKIND)             :: aa_AvrX_xaa(jmin:jmax,kmin:kmax)       ! 出力

      ! 初期化
      aa_AvrX_xaa = 0.0d0

      ! 平均
      aa_AvrX_xaa = aa_IntX_xaa(xaa_Var)/sum(x_dx(1:im))

    end function aa_AvrX_xaa
Function :
aa_IntX_xaa(jmin:jmax,kmin:kmax) :real(DBKIND)
: 出力
xaa_Var(imin:imax,jmin:jmax,kmin:kmax) :real(DBKIND), intent(in)
: 入力

xaa 格子上の配列に対し x 方向積分を行う

[Source]

    function aa_IntX_xaa(xaa_Var)
      ! xaa 格子上の配列に対し x 方向積分を行う

      real(DBKIND), intent(in) :: xaa_Var(imin:imax,jmin:jmax,kmin:kmax) ! 入力
      real(DBKIND)             :: aa_IntX_xaa(jmin:jmax,kmin:kmax)       ! 出力
      integer                  :: jy, kz                           ! ループ添字

      ! 初期化
      aa_IntX_xaa = 0.0d0

      ! 積分
      do kz = kmin, kmax
        do jy = jmin, jmax
          aa_IntX_xaa(jy,kz) = IntX_x(xaa_Var(:,jy,kz))
        end do
      end do

    end function aa_IntX_xaa
Function :
yz_AvrX_pyz(jmin:jmax,kmin:kmax) :real(DBKIND)
: 出力
pyz_Var(imin:imax,jmin:jmax,kmin:kmax) :real(DBKIND), intent(in)
: 入力

pyz 格子上の配列に対し x 方向平均を行う

[Source]

    function yz_AvrX_pyz(pyz_Var)
      ! pyz 格子上の配列に対し x 方向平均を行う

      real(DBKIND), intent(in) :: pyz_Var(imin:imax,jmin:jmax,kmin:kmax) ! 入力
      real(DBKIND)             :: yz_AvrX_pyz(jmin:jmax,kmin:kmax)       ! 出力
      
      ! 初期化
      yz_AvrX_pyz = 0.0d0

      ! 平均
      yz_AvrX_pyz = yz_IntX_pyz(pyz_Var)/sum(x_dx(1:im))

    end function yz_AvrX_pyz
Function :
aa_AvrX_xaa(jmin:jmax,kmin:kmax) :real(DBKIND)
: 出力
xaa_Var(imin:imax,jmin:jmax,kmin:kmax) :real(DBKIND), intent(in)
: 入力

xaa 格子上の配列に対し x 方向平均を行う

[Source]

    function aa_AvrX_xaa(xaa_Var)
      ! xaa 格子上の配列に対し x 方向平均を行う

      real(DBKIND), intent(in) :: xaa_Var(imin:imax,jmin:jmax,kmin:kmax) ! 入力
      real(DBKIND)             :: aa_AvrX_xaa(jmin:jmax,kmin:kmax)       ! 出力

      ! 初期化
      aa_AvrX_xaa = 0.0d0

      ! 平均
      aa_AvrX_xaa = aa_IntX_xaa(xaa_Var)/sum(x_dx(1:im))

    end function aa_AvrX_xaa
Function :
yz_IntX_pyz(jmin:jmax,kmin:kmax) :real(DBKIND)
: 出力
pyz_Var(imin:imax,jmin:jmax,kmin:kmax) :real(DBKIND), intent(in)
: 入力

pyz 格子上の配列に対し x 方向積分を行う

[Source]

    function yz_IntX_pyz(pyz_Var)
      ! pyz 格子上の配列に対し x 方向積分を行う

      real(DBKIND), intent(in) :: pyz_Var(imin:imax,jmin:jmax,kmin:kmax) ! 入力
      real(DBKIND)             :: yz_IntX_pyz(jmin:jmax,kmin:kmax)       ! 出力
      integer                  :: jy, kz                           ! ループ添字

      ! 初期化
      yz_IntX_pyz = 0.0d0

      ! 積分
      do kz = kmin, kmax
        do jy = jmin, jmax
          yz_IntX_pyz(jy,kz) = IntX_p(pyz_Var(:,jy,kz))
        end do
      end do

    end function yz_IntX_pyz
Function :
aa_IntX_xaa(jmin:jmax,kmin:kmax) :real(DBKIND)
: 出力
xaa_Var(imin:imax,jmin:jmax,kmin:kmax) :real(DBKIND), intent(in)
: 入力

xaa 格子上の配列に対し x 方向積分を行う

[Source]

    function aa_IntX_xaa(xaa_Var)
      ! xaa 格子上の配列に対し x 方向積分を行う

      real(DBKIND), intent(in) :: xaa_Var(imin:imax,jmin:jmax,kmin:kmax) ! 入力
      real(DBKIND)             :: aa_IntX_xaa(jmin:jmax,kmin:kmax)       ! 出力
      integer                  :: jy, kz                           ! ループ添字

      ! 初期化
      aa_IntX_xaa = 0.0d0

      ! 積分
      do kz = kmin, kmax
        do jy = jmin, jmax
          aa_IntX_xaa(jy,kz) = IntX_x(xaa_Var(:,jy,kz))
        end do
      end do

    end function aa_IntX_xaa
Function :
z_AvrXY_pyz(kmin:kmax) :real(DBKIND)
: 出力
pyz_Var(imin:imax,jmin:jmax,kmin:kmax) :real(DBKIND), intent(in)
: 入力

pyz 格子上の配列に対し xy 方向平均を行う

[Source]

    function z_AvrXY_pyz(pyz_Var)
      ! pyz 格子上の配列に対し xy 方向平均を行う

      real(DBKIND), intent(in) :: pyz_Var(imin:imax,jmin:jmax,kmin:kmax) ! 入力
      real(DBKIND)             :: z_AvrXY_pyz(kmin:kmax)       ! 出力

      ! 初期化
      z_AvrXY_pyz = 0.0d0

      ! 平均
      z_AvrXY_pyz = z_IntXY_pyz(pyz_Var)/(sum(x_dx(1:im))*sum(y_dy(1:jm)))

    end function z_AvrXY_pyz
Function :
z_AvrXY_xqz(kmin:kmax) :real(DBKIND)
: 出力
xqz_Var(imin:imax,jmin:jmax,kmin:kmax) :real(DBKIND), intent(in)
: 入力

xqz 格子上の配列に対し xy 方向積分を行う

[Source]

    function z_AvrXY_xqz(xqz_Var)
      ! xqz 格子上の配列に対し xy 方向積分を行う

      real(DBKIND), intent(in) :: xqz_Var(imin:imax,jmin:jmax,kmin:kmax) ! 入力
      real(DBKIND)             :: z_AvrXY_xqz(kmin:kmax)       ! 出力

      ! 初期化
      z_AvrXY_xqz = 0.0d0

      ! 平均
      z_AvrXY_xqz = z_IntXY_xqz(xqz_Var)/(sum(x_dx(1:im))*sum(y_dy(1:jm)))

    end function z_AvrXY_xqz
Function :
a_AvrXY_xya(kmin:kmax) :real(DBKIND)
: 出力
xya_Var(imin:imax,jmin:jmax,kmin:kmax) :real(DBKIND), intent(in)
: 入力

xya 格子上の配列に対し xy 方向平均を行う

[Source]

    function a_AvrXY_xya(xya_Var)
      ! xya 格子上の配列に対し xy 方向平均を行う

      real(DBKIND), intent(in) :: xya_Var(imin:imax,jmin:jmax,kmin:kmax) ! 入力
      real(DBKIND)             :: a_AvrXY_xya(kmin:kmax)       ! 出力

      ! 初期化
      a_AvrXY_xya = 0.0d0

      ! 平均
      a_AvrXY_xya = a_IntXY_xya(xya_Var)/(sum(x_dx(1:im))*sum(y_dy(1:jm)))

    end function a_AvrXY_xya
Function :
z_IntXY_pyz(kmin:kmax) :real(DBKIND)
: 出力
pyz_Var(imin:imax,jmin:jmax,kmin:kmax) :real(DBKIND), intent(in)
: 入力

pyz 格子上の配列に対し xy 方向積分を行う

[Source]

    function z_IntXY_pyz(pyz_Var)
      ! pyz 格子上の配列に対し xy 方向積分を行う

      real(DBKIND), intent(in) :: pyz_Var(imin:imax,jmin:jmax,kmin:kmax) ! 入力
      real(DBKIND)             :: z_IntXY_pyz(kmin:kmax)       ! 出力
      integer                  :: kz                           ! ループ添字

      ! 初期化
      z_IntXY_pyz = 0.0d0

      ! 積分
      do kz = kmin, kmax
        z_IntXY_pyz(kz) = IntY_y(y_IntX_py(pyz_Var(:,:,kz)))
      end do

    end function z_IntXY_pyz
Function :
z_IntXY_xqz(kmin:kmax) :real(DBKIND)
: 出力
xqz_Var(imin:imax,jmin:jmax,kmin:kmax) :real(DBKIND), intent(in)
: 入力

xqz 格子上の配列に対し xy 方向積分を行う

[Source]

    function z_IntXY_xqz(xqz_Var)
      ! xqz 格子上の配列に対し xy 方向積分を行う

      real(DBKIND), intent(in) :: xqz_Var(imin:imax,jmin:jmax,kmin:kmax) ! 入力
      real(DBKIND)             :: z_IntXY_xqz(kmin:kmax)       ! 出力
      integer                  :: kz                           ! ループ添字

      ! 初期化
      z_IntXY_xqz = 0.0d0

      ! 積分
      do kz = kmin, kmax
        z_IntXY_xqz(kz) = IntY_q(q_IntX_xq(xqz_Var(:,:,kz)))
      end do

    end function z_IntXY_xqz
Function :
a_IntXY_xya(kmin:kmax) :real(DBKIND)
: 出力
xya_Var(imin:imax,jmin:jmax,kmin:kmax) :real(DBKIND), intent(in)
: 入力

xya 格子上の配列に対し xy 方向積分を行う

[Source]

    function a_IntXY_xya(xya_Var)
      ! xya 格子上の配列に対し xy 方向積分を行う

      real(DBKIND), intent(in) :: xya_Var(imin:imax,jmin:jmax,kmin:kmax) ! 入力
      real(DBKIND)             :: a_IntXY_xya(kmin:kmax)       ! 出力
      integer                  :: kz                           ! ループ添字

      ! 初期化
      a_IntXY_xya = 0.0d0

      ! 積分
      do kz = kmin, kmax
        a_IntXY_xya(kz) = IntY_y(y_IntX_xy(xya_Var(:,:,kz)))
      end do

    end function a_IntXY_xya
z_Z
Variable :
z_Z(:) :real(DBKIND),allocatable
: 半整数格子座標

Original external subprogram is z_base_module#z_Z

z_avr_r( r_Var ) result(z_avr_r)
Function :
z_avr_r(kmin:kmax) :real(DBKIND)
: 出力
r_Var(kmin:kmax) :real(DBKIND),intent(in)
: 入力

平均操作を行い整数格子点の配列値を半整数格子点上へ返す

Original external subprogram is z_base_module#z_avr_r

z_dz
Variable :
z_dz(:) :real(DBKIND),allocatable
: 半整数格子座標

Original external subprogram is z_base_module#z_dz

zmargin
Variable :
zmargin = 2 :integer
: 糊代格子点数

Original external subprogram is z_base_module#zmargin