Linux  R2.6.5-7.282-sn2 FORTRAN90/SX         Rev.360        Tue Oct 11 12:33:33 2011
FILE NAME: axesset.f90
PROGRAM NAME: axesset
DIAGNOSTIC LIST

  LINE  LEVEL( NO.): DIAGNOSTIC MESSAGE

   296  opt  (1222): Procedure "x_axis_init" expanded inline.
   296  vec  (   1): Vectorized loop.
   297  opt  (1222): Procedure "y_axis_init" expanded inline.
   297  vec  (   1): Vectorized loop.
   298  opt  (1222): Procedure "z_axis_init" expanded inline.
   298  vec  (   1): Vectorized loop.
   321  vec  (   4): Vectorized array expression.
   321  vec  (   4): Vectorized array expression.
   321  vec  (   4): Vectorized array expression.
   321  vec  (   4): Vectorized array expression.
   322  vec  (   4): Vectorized array expression.
   322  vec  (   4): Vectorized array expression.
   322  vec  (   4): Vectorized array expression.
   322  vec  (   4): Vectorized array expression.
   324  vec  (   4): Vectorized array expression.
   324  vec  (   4): Vectorized array expression.
   324  vec  (   4): Vectorized array expression.
   324  vec  (   4): Vectorized array expression.
   325  vec  (   4): Vectorized array expression.
   325  vec  (   4): Vectorized array expression.
   325  vec  (   4): Vectorized array expression.
   325  vec  (   4): Vectorized array expression.
   327  vec  (   4): Vectorized array expression.
   327  vec  (   4): Vectorized array expression.
   327  vec  (   4): Vectorized array expression.
   327  vec  (   4): Vectorized array expression.
   328  vec  (   4): Vectorized array expression.
   328  vec  (   4): Vectorized array expression.
   328  vec  (   4): Vectorized array expression.
   328  vec  (   4): Vectorized array expression.
   330  vec  (   4): Vectorized array expression.
   330  vec  (   4): Vectorized array expression.
   330  vec  (   4): Vectorized array expression.
   330  vec  (   4): Vectorized array expression.
   331  vec  (   4): Vectorized array expression.
   331  vec  (   4): Vectorized array expression.
   331  vec  (   4): Vectorized array expression.
   331  vec  (   4): Vectorized array expression.
   333  vec  (   4): Vectorized array expression.
   333  vec  (   4): Vectorized array expression.
   333  vec  (   4): Vectorized array expression.
   333  vec  (   4): Vectorized array expression.
   334  vec  (   4): Vectorized array expression.
   334  vec  (   4): Vectorized array expression.
   334  vec  (   4): Vectorized array expression.
   334  vec  (   4): Vectorized array expression.
   334  vec  (   4): Vectorized array expression.
   336  vec  (   4): Vectorized array expression.
   336  vec  (   4): Vectorized array expression.
   336  vec  (   4): Vectorized array expression.
   336  vec  (   4): Vectorized array expression.
   337  vec  (   4): Vectorized array expression.
   337  vec  (   4): Vectorized array expression.
   337  vec  (   4): Vectorized array expression.
   337  vec  (   4): Vectorized array expression.
   337  vec  (   4): Vectorized array expression.
   370  vec  (   1): Vectorized loop.
   395  vec  (   1): Vectorized loop.
   418  vec  (   1): Vectorized loop.
   441  vec  (   1): Vectorized loop.
   441  vec  (   1): Vectorized loop.
   446  vec  (   4): Vectorized array expression.
   446  vec  (   4): Vectorized array expression.
   463  vec  (   1): Vectorized loop.
   463  vec  (   1): Vectorized loop.
   470  vec  (   4): Vectorized array expression.
   470  vec  (   4): Vectorized array expression.
   483  vec  (   4): Vectorized array expression.
   483  vec  (   4): Vectorized array expression.
   490  vec  (   4): Vectorized array expression.
   494  vec  (   4): Vectorized array expression.
   494  vec  (   4): Vectorized array expression.
   507  vec  (   4): Vectorized array expression.
   507  vec  (   4): Vectorized array expression.
   513  vec  (   3): Unvectorized loop.
   514  vec  (   4): Vectorized array expression.
   514  vec  (   4): Vectorized array expression.
   520  vec  (   4): Vectorized array expression.
   520  vec  (   4): Vectorized array expression.
   533  vec  (   1): Vectorized loop.
   538  vec  (   4): Vectorized array expression.
   538  vec  (   4): Vectorized array expression.
   551  vec  (   3): Unvectorized loop.
   552  vec  (   4): Vectorized array expression.
   558  vec  (   4): Vectorized array expression.
   558  vec  (   4): Vectorized array expression.
   569  vec  (   1): Vectorized loop.
   569  vec  (   1): Vectorized loop.
   575  vec  (   4): Vectorized array expression.
   575  vec  (   4): Vectorized array expression.
   580  vec  (   1): Vectorized loop.
   580  vec  (   1): Vectorized loop.
   588  vec  (   4): Vectorized array expression.
   588  vec  (   4): Vectorized array expression.
   590  vec  (   4): Vectorized array expression.
   590  vec  (   4): Vectorized array expression.
   601  vec  (   1): Vectorized loop.
   601  vec  (   1): Vectorized loop.
   609  vec  (   4): Vectorized array expression.
   609  vec  (   4): Vectorized array expression.
   611  vec  (   4): Vectorized array expression.
   611  vec  (   4): Vectorized array expression.
   623  vec  (   1): Vectorized loop.
   629  vec  (   4): Vectorized array expression.
   629  vec  (   4): Vectorized array expression.
   633  vec  (   1): Vectorized loop.
   641  vec  (   4): Vectorized array expression.
   641  vec  (   4): Vectorized array expression.
   643  vec  (   4): Vectorized array expression.
   643  vec  (   4): Vectorized array expression.
   656  vec  (   1): Vectorized loop.
   656  vec  (   1): Vectorized loop.
   662  vec  (   4): Vectorized array expression.
   662  vec  (   4): Vectorized array expression.
   666  vec  (   1): Vectorized loop.
   666  vec  (   1): Vectorized loop.
   674  vec  (   4): Vectorized array expression.
   674  vec  (   4): Vectorized array expression.
   676  vec  (   4): Vectorized array expression.
   676  vec  (   4): Vectorized array expression.
   687  vec  (   1): Vectorized loop.
   687  vec  (   1): Vectorized loop.
   695  vec  (   4): Vectorized array expression.
   695  vec  (   4): Vectorized array expression.
   697  vec  (   4): Vectorized array expression.
   697  vec  (   4): Vectorized array expression.
   708  vec  (   1): Vectorized loop.
   714  vec  (   4): Vectorized array expression.
   714  vec  (   4): Vectorized array expression.
   718  vec  (   1): Vectorized loop.
   726  vec  (   4): Vectorized array expression.
   726  vec  (   4): Vectorized array expression.
   728  vec  (   4): Vectorized array expression.
   728  vec  (   4): Vectorized array expression.
   741  vec  (   4): Vectorized array expression.
   741  vec  (   4): Vectorized array expression.
   746  opt  (1222): Procedure "intx_x" expanded inline.
   746  vec  (   1): Vectorized loop.
   746  vec  (   1): Vectorized loop.
   760  vec  (   4): Vectorized array expression.
   760  vec  (   4): Vectorized array expression.
   765  opt  (1222): Procedure "intx_p" expanded inline.
   765  vec  (   1): Vectorized loop.
   779  vec  (   4): Vectorized array expression.
   779  vec  (   4): Vectorized array expression.
   783  vec  (   3): Unvectorized loop.
   784  opt  (1222): Procedure "inty_y" expanded inline.
   784  vec  (   4): Vectorized array expression.
   784  vec  (   4): Vectorized array expression.
   798  vec  (   4): Vectorized array expression.
   798  vec  (   4): Vectorized array expression.
   802  vec  (   3): Unvectorized loop.
   803  opt  (1222): Procedure "inty_q" expanded inline.
   803  vec  (   4): Vectorized array expression.
   803  vec  (   4): Vectorized array expression.
   817  vec  (   4): Vectorized array expression.
   817  vec  (   4): Vectorized array expression.
   821  vec  (   3): Unvectorized loop.
   822  opt  (1222): Procedure "intz_z" expanded inline.
   822  vec  (   4): Vectorized array expression.
   822  vec  (   4): Vectorized array expression.
   836  vec  (   4): Vectorized array expression.
   836  vec  (   4): Vectorized array expression.
   840  vec  (   3): Unvectorized loop.
   841  opt  (1222): Procedure "intz_r" expanded inline.
   841  vec  (   4): Vectorized array expression.
   841  vec  (   4): Vectorized array expression.
   855  vec  (   4): Vectorized array expression.
   859  opt  (1222): Procedure "inty_y" expanded inline.
   859  vec  (   1): Vectorized loop.
   872  vec  (   4): Vectorized array expression.
   876  opt  (1222): Procedure "inty_y" expanded inline.
   876  vec  (   1): Vectorized loop.
   889  vec  (   4): Vectorized array expression.
   893  opt  (1222): Procedure "inty_q" expanded inline.
   893  vec  (   1): Vectorized loop.
   907  opt  (1222): Procedure "intz_z" expanded inline.
   907  vec  (   1): Vectorized loop.
   920  opt  (1222): Procedure "intz_z" expanded inline.
   920  vec  (   1): Vectorized loop.
   933  opt  (1222): Procedure "intz_z" expanded inline.
   933  vec  (   1): Vectorized loop.
   946  opt  (1222): Procedure "intz_r" expanded inline.
   946  vec  (   1): Vectorized loop.
   957  opt  (  11): Fused array assignments. :line 957 - 960
   957  vec  (   4): Vectorized array expression.
   957  vec  (   4): Vectorized array expression.
   960  vec  (   4): Vectorized array expression.
   971  opt  (  11): Fused array assignments. :line 971 - 974
   971  vec  (   4): Vectorized array expression.
   971  vec  (   4): Vectorized array expression.
   974  vec  (   4): Vectorized array expression.
   985  opt  (  11): Fused array assignments. :line 985 - 988
   985  vec  (   4): Vectorized array expression.
   985  vec  (   4): Vectorized array expression.
   988  vec  (   4): Vectorized array expression.
   999  opt  (  11): Fused array assignments. :line 999 - 1002
   999  vec  (   4): Vectorized array expression.
   999  vec  (   4): Vectorized array expression.
  1002  vec  (   4): Vectorized array expression.
  1013  opt  (  11): Fused array assignments. :line 1013 - 1016
  1013  vec  (   4): Vectorized array expression.
  1013  vec  (   4): Vectorized array expression.
  1016  vec  (   4): Vectorized array expression.
  1027  opt  (  11): Fused array assignments. :line 1027 - 1030
  1027  vec  (   4): Vectorized array expression.
  1027  vec  (   4): Vectorized array expression.
  1030  vec  (   4): Vectorized array expression.
  1043  vec  (   4): Vectorized array expression.
  1043  vec  (   4): Vectorized array expression.
  1043  vec  (   4): Vectorized array expression.
  1057  vec  (   4): Vectorized array expression.
  1057  vec  (   4): Vectorized array expression.
  1057  vec  (   4): Vectorized array expression.
  1071  vec  (   4): Vectorized array expression.
  1071  vec  (   4): Vectorized array expression.
  1071  vec  (   4): Vectorized array expression.
  1085  vec  (   4): Vectorized array expression.
  1085  vec  (   4): Vectorized array expression.
  1085  vec  (   4): Vectorized array expression.
  1097  opt  (  11): Fused array assignments. :line 1097 - 1100
  1097  vec  (   4): Vectorized array expression.
  1100  vec  (   4): Vectorized array expression.
  1100  vec  (   4): Vectorized array expression.
  1111  opt  (  11): Fused array assignments. :line 1111 - 1114
  1111  vec  (   4): Vectorized array expression.
  1114  vec  (   4): Vectorized array expression.
  1114  vec  (   4): Vectorized array expression.
  1125  opt  (  11): Fused array assignments. :line 1125 - 1128
  1125  vec  (   4): Vectorized array expression.
  1128  vec  (   4): Vectorized array expression.
  1128  vec  (   4): Vectorized array expression.
  1142  vec  (   4): Vectorized array expression.
  1158  vec  (   4): Vectorized array expression.
  1160  vec  (   4): Vectorized array expression.
  1176  vec  (   4): Vectorized array expression.
  1190  vec  (   4): Vectorized array expression.
  1204  vec  (   4): Vectorized array expression.
  1218  vec  (   4): Vectorized array expression.
  1230  vec  (   4): Vectorized array expression.
  1234  opt  (1222): Procedure "intx_x" expanded inline.
  1234  vec  (   1): Vectorized loop.
  1234  vec  (   1): Vectorized loop.
  1247  vec  (   4): Vectorized array expression.
  1251  opt  (1222): Procedure "intx_p" expanded inline.
  1251  vec  (   1): Vectorized loop.
  1264  vec  (   4): Vectorized array expression.
  1267  vec  (   3): Unvectorized loop.
  1268  opt  (1222): Procedure "inty_y" expanded inline.
  1268  vec  (   4): Vectorized array expression.
  1268  vec  (   4): Vectorized array expression.
  1281  vec  (   4): Vectorized array expression.
  1284  vec  (   3): Unvectorized loop.
  1285  opt  (1222): Procedure "inty_q" expanded inline.
  1285  vec  (   4): Vectorized array expression.
  1285  vec  (   4): Vectorized array expression.
Linux  R2.6.5-7.282-sn2 FORTRAN90/SX         Rev.360        Tue Oct 11 12:33:33 2011
FILE NAME: axesset.f90
PROGRAM NAME: axesset
TRANSFORMATION LIST

  LINE                   FORTRAN STATEMENT

     1  !---------------------------------------------------------------------
     2  !     Copyright (C) GFD Dennou Club, 2006. All rights reserved.
     3  !---------------------------------------------------------------------
     4  !
     5  != 3 次元 (xyz 方向) 等間隔交互格子 格子点設定モジュール
     6  !
     7  !* 履歴
     8  !  * 2010/08/02 (小高正嗣) : コメント追加
     9  !  * 2007/07/15 (小高正嗣) : 3D deepconv へ移植, dc_types を Use.
    10  !  * 2006/12/26 (小高正嗣) : 平均関数の名前を元に戻す
    11  !  * 2006/06/05 (小高正嗣) : 新規作成
    12  !
    13  module axesset
    14    != 3 次元 (xyz 方向) 等間隔交互格子 格子点設定モジュール
    15    !
    16    !== 概要
    17    !
    18    ! axesset は, 3 次元 (xyz 方向) 等間隔交互格子を用いた有限差分法に基づく
    19    ! 数値モデルのための, 基本的な Fortran90 副プログラムおよび関数を提供する.
    20    ! 具体的に行っていることは以下の通り.
    21    !
    22    ! * 格子点座標配列と格子点間隔配列の設定
    23    ! * 格子点配列の補間関数の設定
    24    ! * 格子点配列の積分・平均関数
    25    !
    26    !== 備考
    27    !
    28    ! * 例外処理がない
    29    ! * その場合のメッセージ表示がない
    30    ! * 初期化の値はマシンイプシロン値としておくべき
    31    !
    32  
    33    !モジュール読み込み
    34    use dc_types,    only: DP, STRING
    35    use dc_iounit,   only: FileOpen
    36    use dc_message,  only: MessageNotify
    37    use mpi_wrapper, only: myrank, nprocs
    38    use gridset,     only: &
    39      &                  nx, ny, nz,    & ! 格子点数
    40      &                  imin, imax, jmin, jmax, kmin, kmax ! 配列の上限値と下限値
    41    use namelist_util, only: namelist_filename
    42  
    43    !暗黙の型宣言禁止
    44    implicit none
    45  
    46    !デフォルトは非公開
    47    private
    48  
    49    !公開要素
    50    ! 初期化手続き
    51    public :: axesset_init
    52  !!
    53    ! 格子点配列の補間関数
    54    public :: xyz_avr_pyz, xyr_avr_pyr, xqz_avr_pqz
    55    public :: pyz_avr_xyz, pyr_avr_xyr, pqz_avr_xqz
    56    public :: xyz_avr_xqz, pyz_avr_pqz, xyr_avr_xqr
    57    public :: xqz_avr_xyz, pqz_avr_pyz, xqr_avr_xyr
    58    public :: xyz_avr_xyr, pyz_avr_pyr, xqz_avr_xqr
    59    public :: xyr_avr_xyz, pyr_avr_pyz, xqr_avr_xqz
    60    public :: pqz_avr_xyz, pyr_avr_xyz, xqr_avr_xyz
    61    public :: xyz_avr_pqz, xyz_avr_pyr, xyz_avr_xqr
    62  !!
    63    ! 格子点配列の積分・平均関数
    64    public :: yz_IntX_xyz, yz_IntX_pyz, qz_IntX_xqz, yr_IntX_xyr
    65    public :: xz_IntY_xyz, xz_IntY_xqz, pz_IntY_pyz, xr_IntY_xyr
    66    public :: xy_IntZ_xyz, xy_IntZ_xyr, py_IntZ_pyz, xq_IntZ_xqz
    67    public :: z_IntXY_xyz, z_IntXY_pyz, z_IntXY_xqz, r_IntXY_xyr
    68    public :: IntXYZ_xyz , IntXYZ_pyz , IntXYZ_xqz , IntXYZ_xyr
    69    public :: yz_AvrX_xyz, yz_AvrX_pyz, qz_AvrX_xqz, yr_AvrX_xyr
    70    public :: xz_AvrY_xyz, xz_AvrY_xqz, pz_AvrY_pyz, xr_AvrY_xyr
    71    public :: xy_AvrZ_xyz, xy_AvrZ_xyr, py_AvrZ_pyz, xq_AvrZ_xqz
    72    public :: z_AvrXY_xyz, z_AvrXY_pyz, z_AvrXY_xqz, r_AvrXY_xyr
    73    public :: AvrXYZ_xyz , AvrXYZ_pyz , AvrXYZ_xqz , AvrXYZ_xyr
    74  
    75    ! 変数定義
    76    real(DP), public, save :: Xmin = 0.0d0   ! x 座標の始点・終点
    77    real(DP), public, save :: Xmax = 1.0d4   ! x 座標の始点・終点
    78    real(DP), public, save :: Ymin = 0.0d0   ! x 座標の始点・終点
    79    real(DP), public, save :: Ymax = 1.0d4   ! x 座標の始点・終点
    80    real(DP), public, save :: Zmin = 0.0d0   ! z 座標の始点・終点
    81    real(DP), public, save :: Zmax = 1.0d4   ! z 座標の始点・終点
    82    real(DP), allocatable, public, save :: x_X(:)         ! 半整数格子点座標
    83    real(DP), allocatable, public, save :: p_X(:)         ! 整数格子点座標
    84    real(DP), allocatable, public, save :: x_dx(:)        ! 半整数格子点間隔
    85    real(DP), allocatable, public, save :: p_dx(:)        ! 整数格子点間隔
    86    real(DP), allocatable, public, save :: y_Y(:)         ! 半整数格子点座標
    87    real(DP), allocatable, public, save :: q_Y(:)         ! 整数格子点座標
    88    real(DP), allocatable, public, save :: y_dy(:)        ! 半整数格子点間隔
    89    real(DP), allocatable, public, save :: q_dy(:)        ! 整数格子点間隔
    90    real(DP), allocatable, public, save :: z_Z(:)         ! 半整数格子点座標
    91    real(DP), allocatable, public, save :: r_Z(:)         ! 整数格子点座標
    92    real(DP), allocatable, public, save :: z_dz(:)        ! 半整数格子点間隔
    93    real(DP), allocatable, public, save :: r_dz(:)        ! 整数格子点間隔
    94    real(DP), allocatable, public, save :: xyz_X(:,:,:)   ! x 座標(半整数格子)
    95    real(DP), allocatable, public, save :: xyz_Y(:,:,:)   ! y 座標(半整数格子)
    96    real(DP), allocatable, public, save :: xyz_Z(:,:,:)   ! z 座標(半整数格子)
    97    real(DP), allocatable, public, save :: xyz_dX(:,:,:)  ! x 格子間隔(半整数格子)
    98    real(DP), allocatable, public, save :: xyz_dY(:,:,:)  ! y 格子間隔(半整数格子)
    99    real(DP), allocatable, public, save :: xyz_dZ(:,:,:)  ! z 格子間隔(半整数格子)
   100  
   101  
   102    interface y_IntX_xy
   103      module procedure a_IntX_xa
   104    end interface
   105  
   106    interface q_IntX_xq
   107      module procedure a_IntX_xa
   108    end interface
   109  
   110    interface xyz_avr_pyz
   111      module procedure xaa_avr_paa
   112    end interface
   113  
   114    interface xyr_avr_pyr
   115      module procedure xaa_avr_paa
   116    end interface
   117  
   118    interface xqz_avr_pqz
   119      module procedure xaa_avr_paa
   120    end interface
   121  
   122    interface pyz_avr_xyz
   123      module procedure paa_avr_xaa
   124    end interface
   125  
   126    interface pqz_avr_xqz
   127      module procedure paa_avr_xaa
   128    end interface
   129  
   130    interface pyr_avr_xyr
   131      module procedure paa_avr_xaa
   132    end interface
   133  
   134    interface xyz_avr_xqz
   135      module procedure aya_avr_aqa
   136    end interface
   137  
   138    interface pyz_avr_pqz
   139      module procedure aya_avr_aqa
   140    end interface
   141  
   142    interface xyr_avr_xqr
   143      module procedure aya_avr_aqa
   144    end interface
   145  
   146    interface xqz_avr_xyz
   147      module procedure aqa_avr_aya
   148    end interface
   149  
   150    interface pqz_avr_pyz
   151      module procedure aqa_avr_aya
   152    end interface
   153  
   154    interface xqr_avr_xyr
   155      module procedure aqa_avr_aya
   156    end interface
   157  
   158    interface xyz_avr_xyr
   159      module procedure aaz_avr_aar
   160    end interface
   161  
   162    interface pyz_avr_pyr
   163      module procedure aaz_avr_aar
   164    end interface
   165  
   166    interface xqz_avr_xqr
   167      module procedure aaz_avr_aar
   168    end interface
   169  
   170    interface xyr_avr_xyz
   171      module procedure aar_avr_aaz
   172    end interface
   173  
   174    interface pyr_avr_pyz
   175      module procedure aar_avr_aaz
   176    end interface
   177  
   178    interface xqr_avr_xqz
   179      module procedure aar_avr_aaz
   180    end interface
   181  
   182    interface yz_IntX_xyz
   183      module procedure aa_IntX_xaa
   184    end interface
   185  
   186    interface qz_IntX_xqz
   187      module procedure aa_IntX_xaa
   188    end interface
   189  
   190    interface yr_IntX_xyr
   191      module procedure aa_IntX_xaa
   192    end interface
   193  
   194    interface xz_IntY_xyz
   195      module procedure aa_IntY_aya
   196    end interface
   197  
   198    interface pz_IntY_pyz
   199      module procedure aa_IntY_aya
   200    end interface
   201  
   202    interface xr_IntY_xyr
   203      module procedure aa_IntY_aya
   204    end interface
   205  
   206    interface xy_IntZ_xyz
   207      module procedure aa_IntZ_aaz
   208    end interface
   209  
   210    interface py_IntZ_pyz
   211      module procedure aa_IntZ_aaz
   212    end interface
   213  
   214    interface xq_IntZ_xqz
   215      module procedure aa_IntZ_aaz
   216    end interface
   217  
   218    interface z_IntXY_xyz
   219      module procedure a_IntXY_xya
   220    end interface
   221  
   222    interface r_IntXY_xyr
   223      module procedure a_IntXY_xya
   224    end interface
   225  
   226    interface yz_AvrX_xyz
   227      module procedure aa_AvrX_xaa
   228    end interface
   229  
   230    interface qz_AvrX_xqz
   231      module procedure aa_AvrX_xaa
   232    end interface
   233  
   234    interface yr_AvrX_xyr
   235      module procedure aa_AvrX_xaa
   236    end interface
   237  
   238    interface xz_AvrY_xyz
   239      module procedure aa_AvrY_aya
   240    end interface
   241  
   242    interface pz_AvrY_pyz
   243      module procedure aa_AvrY_aya
   244    end interface
   245  
   246    interface xr_AvrY_xyr
   247      module procedure aa_AvrY_aya
   248    end interface
   249  
   250    interface xy_AvrZ_xyz
   251      module procedure aa_AvrZ_aaz
   252    end interface
   253  
   254    interface py_AvrZ_pyz
   255      module procedure aa_AvrZ_aaz
   256    end interface
   257  
   258    interface xq_AvrZ_xqz
   259      module procedure aa_AvrZ_aaz
   260    end interface
   261  
   262    interface z_AvrXY_xyz
   263      module procedure a_AvrXY_xya
   264    end interface
   265  
   266    interface r_AvrXY_xyr
   267      module procedure a_AvrXY_xya
   268    end interface
   269  
   270  contains
   271    !--------------------------------------------------------------------
   272    subroutine axesset_init
   273      ! 格子点座標配列と格子点間隔配列の初期化
   274  
   275      ! 暗黙の型宣言禁止
   276      implicit none
   277  
   278      ! 変数定義
   279      real(DP),allocatable :: xy_X(:,:)! x 座標(半整数格子, 作業配列)
   280      real(DP),allocatable :: xy_Y(:,:)! y 座標(半整数格子, 作業配列)
   281      real(DP),allocatable :: yz_Z(:,:)! z 座標(半整数格子, 作業配列)
   282      integer              :: unit     ! 設定ファイル用装置番号
   283  
   284  
   285      !設定ファイルから読み込む出力ファイル情報
   286      NAMELIST /axesset_nml/ xmin, xmax, ymin, ymax, zmin, zmax
   287  
   288      !設定ファイルから出力ファイルに記載する情報を読み込む
   289      call FileOpen(unit, file=namelist_filename, mode='r')
   290      read(unit, NML=axesset_nml)
   291      close(unit)
   292  
   293      ! 配列の上下限の値, 座標値と格子点間隔を設定
   294      ! * 1 次元用のサブルーチンを用いる
   295      !
   296      call x_axis_init
     .        x_x.DSC.RANK = 1                                                  
     .        x_x.DSC.L1 = imin                                                 
     .        x_x.DSC.U1 = imax                                                 
     .        allocate (x_x(x_x.DSC.L1:x_x.DSC.U1))                             
     .        p_x.DSC.RANK = 1                                                  
     .        p_x.DSC.L1 = imin                                                 
     .        p_x.DSC.U1 = imax                                                 
     .        allocate (p_x(p_x.DSC.L1:p_x.DSC.U1))                             
     .        x_dx.DSC.RANK = 1                                                 
     .        x_dx.DSC.L1 = imin                                                
     .        x_dx.DSC.U1 = imax                                                
     .        allocate (x_dx(x_dx.DSC.L1:x_dx.DSC.U1))                          
     .        p_dx.DSC.RANK = 1                                                 
     .        p_dx.DSC.L1 = imin                                                
     .        p_dx.DSC.U1 = imax                                                
     .        allocate (p_dx(p_dx.DSC.L1:p_dx.DSC.U1))                          
     .        dx = (xmax - xmin)/dfloat(nx)                                     
     .  !CDIR NODEP                                                             
     .        do ix = imin, imax                                                
     .           p_x(ix) = dx*dfloat(ix) + dfloat(myrank)*xmax                  
     .           x_x(ix)=dx*dble(float(ix)-5.0000000e-01)+dfloat(myrank)*xmax   
     .           x_dx(ix) = dx                                                  
     .           p_dx(ix) = dx                                                  
     .        end do                                                            
     .  C*****  End of Code Expanded From Routine:  x_axis_init                 
   297      call y_axis_init
     .        y_y.DSC.RANK = 1                                                  
     .        y_y.DSC.L1 = jmin                                                 
     .        y_y.DSC.U1 = jmax                                                 
     .        allocate (y_y(y_y.DSC.L1:y_y.DSC.U1))                             
     .        q_y.DSC.RANK = 1                                                  
     .        q_y.DSC.L1 = jmin                                                 
     .        q_y.DSC.U1 = jmax                                                 
     .        allocate (q_y(q_y.DSC.L1:q_y.DSC.U1))                             
     .        y_dy.DSC.RANK = 1                                                 
     .        y_dy.DSC.L1 = jmin                                                
     .        y_dy.DSC.U1 = jmax                                                
     .        allocate (y_dy(y_dy.DSC.L1:y_dy.DSC.U1))                          
     .        q_dy.DSC.RANK = 1                                                 
     .        q_dy.DSC.L1 = jmin                                                
     .        q_dy.DSC.U1 = jmax                                                
     .        allocate (q_dy(q_dy.DSC.L1:q_dy.DSC.U1))                          
     .        dy = (ymax - ymin)/dfloat(ny)                                     
     .  !CDIR NODEP                                                             
     .        do jy = jmin, jmax                                                
     .           q_y(jy) = dy*dfloat(jy)                                        
     .           y_y(jy) = dy*dble(float(jy) - 5.0000000e-01)                   
     .           y_dy(jy) = dy                                                  
     .           q_dy(jy) = dy                                                  
     .        end do                                                            
     .  C*****  End of Code Expanded From Routine:  y_axis_init                 
   298      call z_axis_init
     .        z_z.DSC.RANK = 1                                                  
     .        z_z.DSC.L1 = kmin                                                 
     .        z_z.DSC.U1 = kmax                                                 
     .        allocate (z_z(z_z.DSC.L1:z_z.DSC.U1))                             
     .        r_z.DSC.RANK = 1                                                  
     .        r_z.DSC.L1 = kmin                                                 
     .        r_z.DSC.U1 = kmax                                                 
     .        allocate (r_z(r_z.DSC.L1:r_z.DSC.U1))                             
     .        z_dz.DSC.RANK = 1                                                 
     .        z_dz.DSC.L1 = kmin                                                
     .        z_dz.DSC.U1 = kmax                                                
     .        allocate (z_dz(z_dz.DSC.L1:z_dz.DSC.U1))                          
     .        r_dz.DSC.RANK = 1                                                 
     .        r_dz.DSC.L1 = kmin                                                
     .        r_dz.DSC.U1 = kmax                                                
     .        allocate (r_dz(r_dz.DSC.L1:r_dz.DSC.U1))                          
     .        dz = (zmax - zmin)/dfloat(nz)                                     
     .  !CDIR NODEP                                                             
     .        do kz = kmin, kmax                                                
     .           r_z(kz) = dz*dfloat(kz)                                        
     .           z_z(kz) = dz*dble(float(kz) - 5.0000000e-01)                   
     .           r_dz(kz) = dz                                                  
     .           z_dz(kz) = dz                                                  
     .        end do                                                            
     .  C*****  End of Code Expanded From Routine:  z_axis_init                 
   299  
   300      ! MPI 対応
   301      ! * x 方向のみ
   302      !
   303      XMin = XMin           ! XMin = 0 を仮定
   304      XMax = XMax * nprocs  ! CPU の数だけ領域を拡張する
   305  
   306      ! 3 次元格子点座標配列の設定
   307      ! * 組み込み関数 spread を用いる.
   308      ! * 中間配列として 2 次元格子点座標配列を作り, それを 3 次元に拡張する.
   309      !
   310      allocate(xy_X(imin:imax,jmin:jmax))
   311      allocate(xy_Y(imin:imax,jmin:jmax))
   312      allocate(yz_Z(jmin:jmax,kmin:kmax))
   313  
   314      allocate(xyz_X(imin:imax,jmin:jmax,kmin:kmax))
   315      allocate(xyz_Y(imin:imax,jmin:jmax,kmin:kmax))
   316      allocate(xyz_Z(imin:imax,jmin:jmax,kmin:kmax))
   317      allocate(xyz_dX(imin:imax,jmin:jmax,kmin:kmax))
   318      allocate(xyz_dY(imin:imax,jmin:jmax,kmin:kmax))
   319      allocate(xyz_dZ(imin:imax,jmin:jmax,kmin:kmax))
   320  
   321      xy_X  = spread(x_X, 2,size(y_Y))
     .        if (%000bcd.DSC.U2 .gt. 0) then                                   
     .           J6 = and(%000bcd.DSC.U2,3)                                     
     .  !CDIR    NODEP                                                          
     .           do t298 = 1, J6                                                
     .              t300 = t82                                                  
     .  !CDIR       NODEP                                                       
     .              do t301 = 1, x_x.DSC.U1 + 1 - x_x.DSC.L1                    
     .                 %000bcd(t301,t298) = x_x(t300+t301-1)                    
     .              end do                                                      
     .           end do                                                         
     .  !CDIR    NODEP                                                          
     .           do t298 = J6 + 1, %000bcd.DSC.U2, 4                            
     .              t300 = t82                                                  
     .  !CDIR       NODEP                                                       
     .              do t301 = 1, x_x.DSC.U1 + 1 - x_x.DSC.L1                    
     .                 D4 = x_x(t300+t301-1)                                    
     .                 %000bcd(t301,t298) = D4                                  
     .                 %000bcd(t301,t298+1) = D4                                
     .                 %000bcd(t301,t298+2) = D4                                
     .                 %000bcd(t301,t298+3) = D4                                
     .              end do                                                      
     .           end do                                                         
     .        endif                                                             
     .        if (t104 - t105 + 1 .gt. 0) then                                  
     .           J7 = and(t104 - t105 + 1,3)                                    
     .  !CDIR    NODEP                                                          
     .           do t671 = 1, J7                                                
     .  !CDIR       NODEP                                                       
     .              do t673 = 1, 2 + t102 - t103 - min0(1,t102 - t103 + 1)      
     .                 xy_x(t103+t673-1,t671-1+t105) = %000bcd(t673,t671)       
     .              end do                                                      
     .           end do                                                         
     .  !CDIR    NODEP                                                          
     .           do t671 = J7 + 1, t104 - t105 + 1, 4                           
     .  !CDIR       NODEP                                                       
     .              do t673 = 1, 2 + t102 - t103 - min0(1,t102 - t103 + 1)      
     .                 xy_x(t103+t673-1,t671-1+t105) = %000bcd(t673,t671)       
     .                 xy_x(t103+t673-1,t671+t105) = %000bcd(t673,t671+1)       
     .                 xy_x(t103+t673-1,t671+1+t105) = %000bcd(t673,t671+2)     
     .                 xy_x(t103+t673-1,t671+2+t105) = %000bcd(t673,t671+3)     
     .              end do                                                      
     .           end do                                                         
     .        endif                                                             
     .        go to 10016                                                       
   322      xyz_X = spread(xy_X,3,size(z_Z))
     .        if (t104 - t105 + 1 .gt. 0) then                                  
     .           J8 = and(t104 - t105 + 1,3)                                    
     .  !CDIR    NODEP                                                          
     .           do t327 = 1, J8                                                
     .              t329 = t103                                                 
     .  !CDIR       NODEP                                                       
     .              do t330 = 1, xy_x.DSC.U1 + 1 - xy_x.DSC.L1                  
     .                 %000bd9(t330,t327,t324) = xy_x(t329+t330-1,t327-1+t326)  
     .              end do                                                      
     .           end do                                                         
     .  !CDIR    NODEP                                                          
     .           do t327 = J8 + 1, t104 - t105 + 1, 4                           
     .              t329 = t103                                                 
     .  !CDIR       NODEP                                                       
     .              do t330 = 1, xy_x.DSC.U1 + 1 - xy_x.DSC.L1                  
     .                 %000bd9(t330,t327,t324) = xy_x(t329+t330-1,t327-1+t326)  
     .                 %000bd9(t330,t327+1,t324) = xy_x(t329+t330-1,t327+t326)  
     .                 %000bd9(t330,t327+2,t324) = xy_x(t329+t330-1,t327+1+t326)
     .                 %000bd9(t330,t327+3,t324) = xy_x(t329+t330-1,t327+2+t326)
     .              end do                                                      
     .           end do                                                         
     .        endif                                                             
     .        if (2 + xyz_x.DSC.U2 - xyz_x.DSC.L2 - min0(1,xyz_x.DSC.U2 -       
     .       1   xyz_x.DSC.L2 + 1) .gt. 0) then                                 
     .           J9 = and(2 + xyz_x.DSC.U2 - xyz_x.DSC.L2 - min0(1,xyz_x.DSC.U2 
     .       1       - xyz_x.DSC.L2 + 1),3)                                     
     .  !CDIR    NODEP                                                          
     .           do t681 = 1, J9                                                
     .  !CDIR       NODEP                                                       
     .              do t683 = 1, 2 + xyz_x.DSC.U1 - xyz_x.DSC.L1 - min0(1,      
     .       1         xyz_x.DSC.U1 - xyz_x.DSC.L1 + 1)                         
     .                 xyz_x(xyz_x.DSC.L1+t683-1,t681-1+xyz_x.DSC.L2,t679+      
     .       1            xyz_x.DSC.L3) = %000bd9(t683,t681,t679+1)             
     .              end do                                                      
     .           end do                                                         
     .  !CDIR    NODEP                                                          
     .           do t681 = J9 + 1, 2 + xyz_x.DSC.U2 - xyz_x.DSC.L2 - min0(1,    
     .       1      xyz_x.DSC.U2 - xyz_x.DSC.L2 + 1), 4                         
     .  !CDIR       NODEP                                                       
     .              do t683 = 1, 2 + xyz_x.DSC.U1 - xyz_x.DSC.L1 - min0(1,      
     .       1         xyz_x.DSC.U1 - xyz_x.DSC.L1 + 1)                         
     .                 xyz_x(xyz_x.DSC.L1+t683-1,t681-1+xyz_x.DSC.L2,t679+      
     .       1            xyz_x.DSC.L3) = %000bd9(t683,t681,t679+1)             
     .                 xyz_x(xyz_x.DSC.L1+t683-1,t681+xyz_x.DSC.L2,t679+        
     .       1            xyz_x.DSC.L3) = %000bd9(t683,t681+1,t679+1)           
     .                 xyz_x(xyz_x.DSC.L1+t683-1,t681+1+xyz_x.DSC.L2,t679+      
     .       1            xyz_x.DSC.L3) = %000bd9(t683,t681+2,t679+1)           
     .                 xyz_x(xyz_x.DSC.L1+t683-1,t681+2+xyz_x.DSC.L2,t679+      
     .       1            xyz_x.DSC.L3) = %000bd9(t683,t681+3,t679+1)           
     .              end do                                                      
     .           end do                                                         
     .        endif                                                             
   323  
   324      xy_X   = spread(x_dX, 2,size(y_dY))
     .        if (%000be5.DSC.U2 .gt. 0) then                                   
     .           J10 = and(%000be5.DSC.U2,3)                                    
     .  !CDIR    NODEP                                                          
     .           do t353 = 1, J10                                               
     .              t355 = t34                                                  
     .  !CDIR       NODEP                                                       
     .              do t356 = 1, x_dx.DSC.U1 + 1 - x_dx.DSC.L1                  
     .                 %000be5(t356,t353) = x_dx(t355+t356-1)                   
     .              end do                                                      
     .           end do                                                         
     .  !CDIR    NODEP                                                          
     .           do t353 = J10 + 1, %000be5.DSC.U2, 4                           
     .              t355 = t34                                                  
     .  !CDIR       NODEP                                                       
     .              do t356 = 1, x_dx.DSC.U1 + 1 - x_dx.DSC.L1                  
     .                 D5 = x_dx(t355+t356-1)                                   
     .                 %000be5(t356,t353) = D5                                  
     .                 %000be5(t356,t353+1) = D5                                
     .                 %000be5(t356,t353+2) = D5                                
     .                 %000be5(t356,t353+3) = D5                                
     .              end do                                                      
     .           end do                                                         
     .        endif                                                             
     .        if (t360 .gt. 0) then                                             
     .           J11 = and(t360,3)                                              
     .  !CDIR    NODEP                                                          
     .           do t691 = 1, J11                                               
     .  !CDIR       NODEP                                                       
     .              do t693 = 1, 2 + t102 - t103 - min0(1,t102 - t103 + 1)      
     .                 xy_x(t103+t693-1,t691-1+t105) = %000be5(t693,t691)       
     .              end do                                                      
     .           end do                                                         
     .  !CDIR    NODEP                                                          
     .           do t691 = J11 + 1, t360, 4                                     
     .  !CDIR       NODEP                                                       
     .              do t693 = 1, 2 + t102 - t103 - min0(1,t102 - t103 + 1)      
     .                 xy_x(t103+t693-1,t691-1+t105) = %000be5(t693,t691)       
     .                 xy_x(t103+t693-1,t691+t105) = %000be5(t693,t691+1)       
     .                 xy_x(t103+t693-1,t691+1+t105) = %000be5(t693,t691+2)     
     .                 xy_x(t103+t693-1,t691+2+t105) = %000be5(t693,t691+3)     
     .              end do                                                      
     .           end do                                                         
     .        endif                                                             
     .        go to 10045                                                       
   325      xyz_dX = spread(xy_X,3,size(z_dZ))
     .        if (t104 - t105 + 1 .gt. 0) then                                  
     .           J12 = and(t104 - t105 + 1,3)                                   
     .  !CDIR    NODEP                                                          
     .           do t382 = 1, J12                                               
     .              t384 = t103                                                 
     .  !CDIR       NODEP                                                       
     .              do t385 = 1, xy_x.DSC.U1 + 1 - xy_x.DSC.L1                  
     .                 %000bf1(t385,t382,t379) = xy_x(t384+t385-1,t382-1+t381)  
     .              end do                                                      
     .           end do                                                         
     .  !CDIR    NODEP                                                          
     .           do t382 = J12 + 1, t104 - t105 + 1, 4                          
     .              t384 = t103                                                 
     .  !CDIR       NODEP                                                       
     .              do t385 = 1, xy_x.DSC.U1 + 1 - xy_x.DSC.L1                  
     .                 %000bf1(t385,t382,t379) = xy_x(t384+t385-1,t382-1+t381)  
     .                 %000bf1(t385,t382+1,t379) = xy_x(t384+t385-1,t382+t381)  
     .                 %000bf1(t385,t382+2,t379) = xy_x(t384+t385-1,t382+1+t381)
     .                 %000bf1(t385,t382+3,t379) = xy_x(t384+t385-1,t382+2+t381)
     .              end do                                                      
     .           end do                                                         
     .        endif                                                             
     .        if (2 + xyz_dx.DSC.U2 - xyz_dx.DSC.L2 - min0(1,xyz_dx.DSC.U2 -    
     .       1   xyz_dx.DSC.L2 + 1) .gt. 0) then                                
     .           J13 = and(2 + xyz_dx.DSC.U2 - xyz_dx.DSC.L2 - min0(1,          
     .       1      xyz_dx.DSC.U2 - xyz_dx.DSC.L2 + 1),3)                       
     .  !CDIR    NODEP                                                          
     .           do t701 = 1, J13                                               
     .  !CDIR       NODEP                                                       
     .              do t703 = 1, 2 + xyz_dx.DSC.U1 - xyz_dx.DSC.L1 - min0(1,    
     .       1         xyz_dx.DSC.U1 - xyz_dx.DSC.L1 + 1)                       
     .                 xyz_dx(xyz_dx.DSC.L1+t703-1,t701-1+xyz_dx.DSC.L2,t699+   
     .       1            xyz_dx.DSC.L3) = %000bf1(t703,t701,t699+1)            
     .              end do                                                      
     .           end do                                                         
     .  !CDIR    NODEP                                                          
     .           do t701 = J13 + 1, 2 + xyz_dx.DSC.U2 - xyz_dx.DSC.L2 - min0(1, 
     .       1      xyz_dx.DSC.U2 - xyz_dx.DSC.L2 + 1), 4                       
     .  !CDIR       NODEP                                                       
     .              do t703 = 1, 2 + xyz_dx.DSC.U1 - xyz_dx.DSC.L1 - min0(1,    
     .       1         xyz_dx.DSC.U1 - xyz_dx.DSC.L1 + 1)                       
     .                 xyz_dx(xyz_dx.DSC.L1+t703-1,t701-1+xyz_dx.DSC.L2,t699+   
     .       1            xyz_dx.DSC.L3) = %000bf1(t703,t701,t699+1)            
     .                 xyz_dx(xyz_dx.DSC.L1+t703-1,t701+xyz_dx.DSC.L2,t699+     
     .       1            xyz_dx.DSC.L3) = %000bf1(t703,t701+1,t699+1)          
     .                 xyz_dx(xyz_dx.DSC.L1+t703-1,t701+1+xyz_dx.DSC.L2,t699+   
     .       1            xyz_dx.DSC.L3) = %000bf1(t703,t701+2,t699+1)          
     .                 xyz_dx(xyz_dx.DSC.L1+t703-1,t701+2+xyz_dx.DSC.L2,t699+   
     .       1            xyz_dx.DSC.L3) = %000bf1(t703,t701+3,t699+1)          
     .              end do                                                      
     .           end do                                                         
     .        endif                                                             
   326  
   327      xy_Y  = spread(y_Y, 1,size(x_X))
     .        t410 = t87                                                        
     .        if (y_y.DSC.U1 + 1 - y_y.DSC.L1 .gt. 0) then                      
     .           J14 = and(y_y.DSC.U1 + 1 - y_y.DSC.L1,3)                       
     .  !CDIR    NODEP                                                          
     .           do t411 = 1, J14                                               
     .  !CDIR       NODEP                                                       
     .              do t408 = 1, %000bfd.DSC.U1                                 
     .                 %000bfd(t408,t411) = y_y(t411-1+t410)                    
     .              end do                                                      
     .           end do                                                         
     .  !CDIR    NODEP                                                          
     .           do t411 = J14 + 1, y_y.DSC.U1 + 1 - y_y.DSC.L1, 4              
     .  !CDIR       NODEP                                                       
     .              do t408 = 1, %000bfd.DSC.U1                                 
     .                 %000bfd(t408,t411) = y_y(t411-1+t410)                    
     .                 %000bfd(t408,t411+1) = y_y(t411+t410)                    
     .                 %000bfd(t408,t411+2) = y_y(t411+1+t410)                  
     .                 %000bfd(t408,t411+3) = y_y(t411+2+t410)                  
     .              end do                                                      
     .           end do                                                         
     .        endif                                                             
     .        if (t415 .gt. 0) then                                             
     .           J15 = and(t415,3)                                              
     .  !CDIR    NODEP                                                          
     .           do t711 = 1, J15                                               
     .  !CDIR       NODEP                                                       
     .              do t713 = 1, 2 + t118 - t119 - min0(1,t118 - t119 + 1)      
     .                 xy_y(t119+t713-1,t711-1+t121) = %000bfd(t713,t711)       
     .              end do                                                      
     .           end do                                                         
     .  !CDIR    NODEP                                                          
     .           do t711 = J15 + 1, t415, 4                                     
     .  !CDIR       NODEP                                                       
     .              do t713 = 1, 2 + t118 - t119 - min0(1,t118 - t119 + 1)      
     .                 xy_y(t119+t713-1,t711-1+t121) = %000bfd(t713,t711)       
     .                 xy_y(t119+t713-1,t711+t121) = %000bfd(t713,t711+1)       
     .                 xy_y(t119+t713-1,t711+1+t121) = %000bfd(t713,t711+2)     
     .                 xy_y(t119+t713-1,t711+2+t121) = %000bfd(t713,t711+3)     
     .              end do                                                      
     .           end do                                                         
     .        endif                                                             
     .        go to 10074                                                       
   328      xyz_Y = spread(xy_Y,3,size(z_Z))
     .        if (t120 - t121 + 1 .gt. 0) then                                  
     .           J16 = and(t120 - t121 + 1,3)                                   
     .  !CDIR    NODEP                                                          
     .           do t437 = 1, J16                                               
     .              t439 = t119                                                 
     .  !CDIR       NODEP                                                       
     .              do t440 = 1, xy_y.DSC.U1 + 1 - xy_y.DSC.L1                  
     .                 %000c09(t440,t437,t434) = xy_y(t439+t440-1,t437-1+t436)  
     .              end do                                                      
     .           end do                                                         
     .  !CDIR    NODEP                                                          
     .           do t437 = J16 + 1, t120 - t121 + 1, 4                          
     .              t439 = t119                                                 
     .  !CDIR       NODEP                                                       
     .              do t440 = 1, xy_y.DSC.U1 + 1 - xy_y.DSC.L1                  
     .                 %000c09(t440,t437,t434) = xy_y(t439+t440-1,t437-1+t436)  
     .                 %000c09(t440,t437+1,t434) = xy_y(t439+t440-1,t437+t436)  
     .                 %000c09(t440,t437+2,t434) = xy_y(t439+t440-1,t437+1+t436)
     .                 %000c09(t440,t437+3,t434) = xy_y(t439+t440-1,t437+2+t436)
     .              end do                                                      
     .           end do                                                         
     .        endif                                                             
     .        if (2 + xyz_y.DSC.U2 - xyz_y.DSC.L2 - min0(1,xyz_y.DSC.U2 -       
     .       1   xyz_y.DSC.L2 + 1) .gt. 0) then                                 
     .           J17 = and(2 + xyz_y.DSC.U2 - xyz_y.DSC.L2 - min0(1,xyz_y.DSC.U2
     .       1       - xyz_y.DSC.L2 + 1),3)                                     
     .  !CDIR    NODEP                                                          
     .           do t721 = 1, J17                                               
     .  !CDIR       NODEP                                                       
     .              do t723 = 1, 2 + xyz_y.DSC.U1 - xyz_y.DSC.L1 - min0(1,      
     .       1         xyz_y.DSC.U1 - xyz_y.DSC.L1 + 1)                         
     .                 xyz_y(xyz_y.DSC.L1+t723-1,t721-1+xyz_y.DSC.L2,t719+      
     .       1            xyz_y.DSC.L3) = %000c09(t723,t721,t719+1)             
     .              end do                                                      
     .           end do                                                         
     .  !CDIR    NODEP                                                          
     .           do t721 = J17 + 1, 2 + xyz_y.DSC.U2 - xyz_y.DSC.L2 - min0(1,   
     .       1      xyz_y.DSC.U2 - xyz_y.DSC.L2 + 1), 4                         
     .  !CDIR       NODEP                                                       
     .              do t723 = 1, 2 + xyz_y.DSC.U1 - xyz_y.DSC.L1 - min0(1,      
     .       1         xyz_y.DSC.U1 - xyz_y.DSC.L1 + 1)                         
     .                 xyz_y(xyz_y.DSC.L1+t723-1,t721-1+xyz_y.DSC.L2,t719+      
     .       1            xyz_y.DSC.L3) = %000c09(t723,t721,t719+1)             
     .                 xyz_y(xyz_y.DSC.L1+t723-1,t721+xyz_y.DSC.L2,t719+        
     .       1            xyz_y.DSC.L3) = %000c09(t723,t721+1,t719+1)           
     .                 xyz_y(xyz_y.DSC.L1+t723-1,t721+1+xyz_y.DSC.L2,t719+      
     .       1            xyz_y.DSC.L3) = %000c09(t723,t721+2,t719+1)           
     .                 xyz_y(xyz_y.DSC.L1+t723-1,t721+2+xyz_y.DSC.L2,t719+      
     .       1            xyz_y.DSC.L3) = %000c09(t723,t721+3,t719+1)           
     .              end do                                                      
     .           end do                                                         
     .        endif                                                             
   329  
   330      xy_Y   = spread(y_dY, 1,size(x_dX))
     .        t465 = t39                                                        
     .        if (y_dy.DSC.U1 + 1 - y_dy.DSC.L1 .gt. 0) then                    
     .           J18 = and(y_dy.DSC.U1 + 1 - y_dy.DSC.L1,3)                     
     .  !CDIR    NODEP                                                          
     .           do t466 = 1, J18                                               
     .  !CDIR       NODEP                                                       
     .              do t463 = 1, %000c15.DSC.U1                                 
     .                 %000c15(t463,t466) = y_dy(t466-1+t465)                   
     .              end do                                                      
     .           end do                                                         
     .  !CDIR    NODEP                                                          
     .           do t466 = J18 + 1, y_dy.DSC.U1 + 1 - y_dy.DSC.L1, 4            
     .  !CDIR       NODEP                                                       
     .              do t463 = 1, %000c15.DSC.U1                                 
     .                 %000c15(t463,t466) = y_dy(t466-1+t465)                   
     .                 %000c15(t463,t466+1) = y_dy(t466+t465)                   
     .                 %000c15(t463,t466+2) = y_dy(t466+1+t465)                 
     .                 %000c15(t463,t466+3) = y_dy(t466+2+t465)                 
     .              end do                                                      
     .           end do                                                         
     .        endif                                                             
     .        if (t470 .gt. 0) then                                             
     .           J19 = and(t470,3)                                              
     .  !CDIR    NODEP                                                          
     .           do t731 = 1, J19                                               
     .  !CDIR       NODEP                                                       
     .              do t733 = 1, 2 + t118 - t119 - min0(1,t118 - t119 + 1)      
     .                 xy_y(t119+t733-1,t731-1+t121) = %000c15(t733,t731)       
     .              end do                                                      
     .           end do                                                         
     .  !CDIR    NODEP                                                          
     .           do t731 = J19 + 1, t470, 4                                     
     .  !CDIR       NODEP                                                       
     .              do t733 = 1, 2 + t118 - t119 - min0(1,t118 - t119 + 1)      
     .                 xy_y(t119+t733-1,t731-1+t121) = %000c15(t733,t731)       
     .                 xy_y(t119+t733-1,t731+t121) = %000c15(t733,t731+1)       
     .                 xy_y(t119+t733-1,t731+1+t121) = %000c15(t733,t731+2)     
     .                 xy_y(t119+t733-1,t731+2+t121) = %000c15(t733,t731+3)     
     .              end do                                                      
     .           end do                                                         
     .        endif                                                             
     .        go to 10103                                                       
   331      xyz_dY = spread(xy_Y,3,size(z_dZ))
     .        if (t120 - t121 + 1 .gt. 0) then                                  
     .           J20 = and(t120 - t121 + 1,3)                                   
     .  !CDIR    NODEP                                                          
     .           do t492 = 1, J20                                               
     .              t494 = t119                                                 
     .  !CDIR       NODEP                                                       
     .              do t495 = 1, xy_y.DSC.U1 + 1 - xy_y.DSC.L1                  
     .                 %000c21(t495,t492,t489) = xy_y(t494+t495-1,t492-1+t491)  
     .              end do                                                      
     .           end do                                                         
     .  !CDIR    NODEP                                                          
     .           do t492 = J20 + 1, t120 - t121 + 1, 4                          
     .              t494 = t119                                                 
     .  !CDIR       NODEP                                                       
     .              do t495 = 1, xy_y.DSC.U1 + 1 - xy_y.DSC.L1                  
     .                 %000c21(t495,t492,t489) = xy_y(t494+t495-1,t492-1+t491)  
     .                 %000c21(t495,t492+1,t489) = xy_y(t494+t495-1,t492+t491)  
     .                 %000c21(t495,t492+2,t489) = xy_y(t494+t495-1,t492+1+t491)
     .                 %000c21(t495,t492+3,t489) = xy_y(t494+t495-1,t492+2+t491)
     .              end do                                                      
     .           end do                                                         
     .        endif                                                             
     .        if (2 + xyz_dy.DSC.U2 - xyz_dy.DSC.L2 - min0(1,xyz_dy.DSC.U2 -    
     .       1   xyz_dy.DSC.L2 + 1) .gt. 0) then                                
     .           J21 = and(2 + xyz_dy.DSC.U2 - xyz_dy.DSC.L2 - min0(1,          
     .       1      xyz_dy.DSC.U2 - xyz_dy.DSC.L2 + 1),3)                       
     .  !CDIR    NODEP                                                          
     .           do t741 = 1, J21                                               
     .  !CDIR       NODEP                                                       
     .              do t743 = 1, 2 + xyz_dy.DSC.U1 - xyz_dy.DSC.L1 - min0(1,    
     .       1         xyz_dy.DSC.U1 - xyz_dy.DSC.L1 + 1)                       
     .                 xyz_dy(xyz_dy.DSC.L1+t743-1,t741-1+xyz_dy.DSC.L2,t739+   
     .       1            xyz_dy.DSC.L3) = %000c21(t743,t741,t739+1)            
     .              end do                                                      
     .           end do                                                         
     .  !CDIR    NODEP                                                          
     .           do t741 = J21 + 1, 2 + xyz_dy.DSC.U2 - xyz_dy.DSC.L2 - min0(1, 
     .       1      xyz_dy.DSC.U2 - xyz_dy.DSC.L2 + 1), 4                       
     .  !CDIR       NODEP                                                       
     .              do t743 = 1, 2 + xyz_dy.DSC.U1 - xyz_dy.DSC.L1 - min0(1,    
     .       1         xyz_dy.DSC.U1 - xyz_dy.DSC.L1 + 1)                       
     .                 xyz_dy(xyz_dy.DSC.L1+t743-1,t741-1+xyz_dy.DSC.L2,t739+   
     .       1            xyz_dy.DSC.L3) = %000c21(t743,t741,t739+1)            
     .                 xyz_dy(xyz_dy.DSC.L1+t743-1,t741+xyz_dy.DSC.L2,t739+     
     .       1            xyz_dy.DSC.L3) = %000c21(t743,t741+1,t739+1)          
     .                 xyz_dy(xyz_dy.DSC.L1+t743-1,t741+1+xyz_dy.DSC.L2,t739+   
     .       1            xyz_dy.DSC.L3) = %000c21(t743,t741+2,t739+1)          
     .                 xyz_dy(xyz_dy.DSC.L1+t743-1,t741+2+xyz_dy.DSC.L2,t739+   
     .       1            xyz_dy.DSC.L3) = %000c21(t743,t741+3,t739+1)          
     .              end do                                                      
     .           end do                                                         
     .        endif                                                             
   332  
   333      yz_Z  = spread(z_Z, 1,size(y_Y))
     .        t520 = t92                                                        
     .        if (z_z.DSC.U1 + 1 - z_z.DSC.L1 .gt. 0) then                      
     .           J22 = and(z_z.DSC.U1 + 1 - z_z.DSC.L1,3)                       
     .  !CDIR    NODEP                                                          
     .           do t521 = 1, J22                                               
     .  !CDIR       NODEP                                                       
     .              do t518 = 1, %000c2d.DSC.U1                                 
     .                 %000c2d(t518,t521) = z_z(t521-1+t520)                    
     .              end do                                                      
     .           end do                                                         
     .  !CDIR    NODEP                                                          
     .           do t521 = J22 + 1, z_z.DSC.U1 + 1 - z_z.DSC.L1, 4              
     .  !CDIR       NODEP                                                       
     .              do t518 = 1, %000c2d.DSC.U1                                 
     .                 %000c2d(t518,t521) = z_z(t521-1+t520)                    
     .                 %000c2d(t518,t521+1) = z_z(t521+t520)                    
     .                 %000c2d(t518,t521+2) = z_z(t521+1+t520)                  
     .                 %000c2d(t518,t521+3) = z_z(t521+2+t520)                  
     .              end do                                                      
     .           end do                                                         
     .        endif                                                             
     .        if (t525 .gt. 0) then                                             
     .           J23 = and(t525,3)                                              
     .  !CDIR    NODEP                                                          
     .           do t751 = 1, J23                                               
     .  !CDIR       NODEP                                                       
     .              do t753 = 1, 2 + t110 - t111 - min0(1,t110 - t111 + 1)      
     .                 yz_z(t111+t753-1,t751-1+t113) = %000c2d(t753,t751)       
     .              end do                                                      
     .           end do                                                         
     .  !CDIR    NODEP                                                          
     .           do t751 = J23 + 1, t525, 4                                     
     .  !CDIR       NODEP                                                       
     .              do t753 = 1, 2 + t110 - t111 - min0(1,t110 - t111 + 1)      
     .                 yz_z(t111+t753-1,t751-1+t113) = %000c2d(t753,t751)       
     .                 yz_z(t111+t753-1,t751+t113) = %000c2d(t753,t751+1)       
     .                 yz_z(t111+t753-1,t751+1+t113) = %000c2d(t753,t751+2)     
     .                 yz_z(t111+t753-1,t751+2+t113) = %000c2d(t753,t751+3)     
     .              end do                                                      
     .           end do                                                         
     .        endif                                                             
     .        go to 10132                                                       
   334      xyz_Z = spread(yz_Z,1,size(x_X))
     .        t546 = t113                                                       
     .  !CDIR NODEP                                                             
     .        do t547 = 1, t112 - t113 + 1                                      
     .           t549 = t111                                                    
     .        end do                                                            
     .  !CDIR NODEP                                                             
     .        do t547 = 1, t112 - t113 + 1                                      
     .           if (yz_z.DSC.U1 + 1 - yz_z.DSC.L1 .gt. 0) then                 
     .              J24 = and(yz_z.DSC.U1 + 1 - yz_z.DSC.L1,3)                  
     .  !CDIR       NODEP                                                       
     .              do t550 = 1, J24                                            
     .  !CDIR          NODEP                                                    
     .                 do t544 = 1, %000c39.DSC.U1                              
     .                    %000c39(t544,t550,t547)=yz_z(t550-1+t549,t547-1+t546) 
     .                 end do                                                   
     .              end do                                                      
     .  !CDIR       NODEP                                                       
     .              do t550 = J24 + 1, yz_z.DSC.U1 + 1 - yz_z.DSC.L1, 4         
     .  !CDIR          NODEP                                                    
     .                 do t544 = 1, %000c39.DSC.U1                              
     .                    %000c39(t544,t550,t547)=yz_z(t550-1+t549,t547-1+t546) 
     .                    %000c39(t544,t550+1,t547)=yz_z(t550+t549,t547-1+t546) 
     .                    %000c39(t544,t550+2,t547) = yz_z(t550+1+t549,t547-1+  
     .       1               t546)                                              
     .                    %000c39(t544,t550+3,t547) = yz_z(t550+2+t549,t547-1+  
     .       1               t546)                                              
     .                 end do                                                   
     .              end do                                                      
     .           endif                                                          
     .        end do                                                            
     .        if (2 + xyz_z.DSC.U2 - xyz_z.DSC.L2 - min0(1,xyz_z.DSC.U2 -       
     .       1   xyz_z.DSC.L2 + 1) .gt. 0) then                                 
     .           J25 = and(2 + xyz_z.DSC.U2 - xyz_z.DSC.L2 - min0(1,xyz_z.DSC.U2
     .       1       - xyz_z.DSC.L2 + 1),3)                                     
     .  !CDIR    NODEP                                                          
     .           do t761 = 1, J25                                               
     .  !CDIR       NODEP                                                       
     .              do t763 = 1, 2 + xyz_z.DSC.U1 - xyz_z.DSC.L1 - min0(1,      
     .       1         xyz_z.DSC.U1 - xyz_z.DSC.L1 + 1)                         
     .                 xyz_z(xyz_z.DSC.L1+t763-1,t761-1+xyz_z.DSC.L2,t759+      
     .       1            xyz_z.DSC.L3) = %000c39(t763,t761,t759+1)             
     .              end do                                                      
     .           end do                                                         
     .  !CDIR    NODEP                                                          
     .           do t761 = J25 + 1, 2 + xyz_z.DSC.U2 - xyz_z.DSC.L2 - min0(1,   
     .       1      xyz_z.DSC.U2 - xyz_z.DSC.L2 + 1), 4                         
     .  !CDIR       NODEP                                                       
     .              do t763 = 1, 2 + xyz_z.DSC.U1 - xyz_z.DSC.L1 - min0(1,      
     .       1         xyz_z.DSC.U1 - xyz_z.DSC.L1 + 1)                         
     .                 xyz_z(xyz_z.DSC.L1+t763-1,t761-1+xyz_z.DSC.L2,t759+      
     .       1            xyz_z.DSC.L3) = %000c39(t763,t761,t759+1)             
     .                 xyz_z(xyz_z.DSC.L1+t763-1,t761+xyz_z.DSC.L2,t759+        
     .       1            xyz_z.DSC.L3) = %000c39(t763,t761+1,t759+1)           
     .                 xyz_z(xyz_z.DSC.L1+t763-1,t761+1+xyz_z.DSC.L2,t759+      
     .       1            xyz_z.DSC.L3) = %000c39(t763,t761+2,t759+1)           
     .                 xyz_z(xyz_z.DSC.L1+t763-1,t761+2+xyz_z.DSC.L2,t759+      
     .       1            xyz_z.DSC.L3) = %000c39(t763,t761+3,t759+1)           
     .              end do                                                      
     .           end do                                                         
     .        endif                                                             
   335  
   336      yz_Z   = spread(z_dZ, 1,size(y_dY))
     .        t575 = t44                                                        
     .        if (z_dz.DSC.U1 + 1 - z_dz.DSC.L1 .gt. 0) then                    
     .           J26 = and(z_dz.DSC.U1 + 1 - z_dz.DSC.L1,3)                     
     .  !CDIR    NODEP                                                          
     .           do t576 = 1, J26                                               
     .  !CDIR       NODEP                                                       
     .              do t573 = 1, %000c45.DSC.U1                                 
     .                 %000c45(t573,t576) = z_dz(t576-1+t575)                   
     .              end do                                                      
     .           end do                                                         
     .  !CDIR    NODEP                                                          
     .           do t576 = J26 + 1, z_dz.DSC.U1 + 1 - z_dz.DSC.L1, 4            
     .  !CDIR       NODEP                                                       
     .              do t573 = 1, %000c45.DSC.U1                                 
     .                 %000c45(t573,t576) = z_dz(t576-1+t575)                   
     .                 %000c45(t573,t576+1) = z_dz(t576+t575)                   
     .                 %000c45(t573,t576+2) = z_dz(t576+1+t575)                 
     .                 %000c45(t573,t576+3) = z_dz(t576+2+t575)                 
     .              end do                                                      
     .           end do                                                         
     .        endif                                                             
     .        if (t580 .gt. 0) then                                             
     .           J27 = and(t580,3)                                              
     .  !CDIR    NODEP                                                          
     .           do t771 = 1, J27                                               
     .  !CDIR       NODEP                                                       
     .              do t773 = 1, 2 + t110 - t111 - min0(1,t110 - t111 + 1)      
     .                 yz_z(t111+t773-1,t771-1+t113) = %000c45(t773,t771)       
     .              end do                                                      
     .           end do                                                         
     .  !CDIR    NODEP                                                          
     .           do t771 = J27 + 1, t580, 4                                     
     .  !CDIR       NODEP                                                       
     .              do t773 = 1, 2 + t110 - t111 - min0(1,t110 - t111 + 1)      
     .                 yz_z(t111+t773-1,t771-1+t113) = %000c45(t773,t771)       
     .                 yz_z(t111+t773-1,t771+t113) = %000c45(t773,t771+1)       
     .                 yz_z(t111+t773-1,t771+1+t113) = %000c45(t773,t771+2)     
     .                 yz_z(t111+t773-1,t771+2+t113) = %000c45(t773,t771+3)     
     .              end do                                                      
     .           end do                                                         
     .        endif                                                             
     .        go to 10161                                                       
   337      xyz_dZ = spread(yz_Z,1,size(x_dX))
     .        t601 = t113                                                       
     .  !CDIR NODEP                                                             
     .        do t602 = 1, t112 - t113 + 1                                      
     .           t604 = t111                                                    
     .        end do                                                            
     .  !CDIR NODEP                                                             
     .        do t602 = 1, t112 - t113 + 1                                      
     .           if (yz_z.DSC.U1 + 1 - yz_z.DSC.L1 .gt. 0) then                 
     .              J28 = and(yz_z.DSC.U1 + 1 - yz_z.DSC.L1,3)                  
     .  !CDIR       NODEP                                                       
     .              do t605 = 1, J28                                            
     .  !CDIR          NODEP                                                    
     .                 do t599 = 1, %000c51.DSC.U1                              
     .                    %000c51(t599,t605,t602)=yz_z(t605-1+t604,t602-1+t601) 
     .                 end do                                                   
     .              end do                                                      
     .  !CDIR       NODEP                                                       
     .              do t605 = J28 + 1, yz_z.DSC.U1 + 1 - yz_z.DSC.L1, 4         
     .  !CDIR          NODEP                                                    
     .                 do t599 = 1, %000c51.DSC.U1                              
     .                    %000c51(t599,t605,t602)=yz_z(t605-1+t604,t602-1+t601) 
     .                    %000c51(t599,t605+1,t602)=yz_z(t605+t604,t602-1+t601) 
     .                    %000c51(t599,t605+2,t602) = yz_z(t605+1+t604,t602-1+  
     .       1               t601)                                              
     .                    %000c51(t599,t605+3,t602) = yz_z(t605+2+t604,t602-1+  
     .       1               t601)                                              
     .                 end do                                                   
     .              end do                                                      
     .           endif                                                          
     .        end do                                                            
     .        if (2 + xyz_dz.DSC.U2 - xyz_dz.DSC.L2 - min0(1,xyz_dz.DSC.U2 -    
     .       1   xyz_dz.DSC.L2 + 1) .gt. 0) then                                
     .           J29 = and(2 + xyz_dz.DSC.U2 - xyz_dz.DSC.L2 - min0(1,          
     .       1      xyz_dz.DSC.U2 - xyz_dz.DSC.L2 + 1),3)                       
     .  !CDIR    NODEP                                                          
     .           do t781 = 1, J29                                               
     .  !CDIR       NODEP                                                       
     .              do t783 = 1, 2 + xyz_dz.DSC.U1 - xyz_dz.DSC.L1 - min0(1,    
     .       1         xyz_dz.DSC.U1 - xyz_dz.DSC.L1 + 1)                       
     .                 xyz_dz(xyz_dz.DSC.L1+t783-1,t781-1+xyz_dz.DSC.L2,t779+   
     .       1            xyz_dz.DSC.L3) = %000c51(t783,t781,t779+1)            
     .              end do                                                      
     .           end do                                                         
     .  !CDIR    NODEP                                                          
     .           do t781 = J29 + 1, 2 + xyz_dz.DSC.U2 - xyz_dz.DSC.L2 - min0(1, 
     .       1      xyz_dz.DSC.U2 - xyz_dz.DSC.L2 + 1), 4                       
     .  !CDIR       NODEP                                                       
     .              do t783 = 1, 2 + xyz_dz.DSC.U1 - xyz_dz.DSC.L1 - min0(1,    
     .       1         xyz_dz.DSC.U1 - xyz_dz.DSC.L1 + 1)                       
     .                 xyz_dz(xyz_dz.DSC.L1+t783-1,t781-1+xyz_dz.DSC.L2,t779+   
     .       1            xyz_dz.DSC.L3) = %000c51(t783,t781,t779+1)            
     .                 xyz_dz(xyz_dz.DSC.L1+t783-1,t781+xyz_dz.DSC.L2,t779+     
     .       1            xyz_dz.DSC.L3) = %000c51(t783,t781+1,t779+1)          
     .                 xyz_dz(xyz_dz.DSC.L1+t783-1,t781+1+xyz_dz.DSC.L2,t779+   
     .       1            xyz_dz.DSC.L3) = %000c51(t783,t781+2,t779+1)          
     .                 xyz_dz(xyz_dz.DSC.L1+t783-1,t781+2+xyz_dz.DSC.L2,t779+   
     .       1            xyz_dz.DSC.L3) = %000c51(t783,t781+3,t779+1)          
     .              end do                                                      
     .           end do                                                         
     .        endif                                                             
   338  
   339      deallocate(xy_X)
   340      deallocate(xy_Y)
   341      deallocate(yz_Z)
   342  
   343      !"myrank == 0" に該当する計算ノードが, 読み込んだ情報を出力
   344      if (myrank == 0) then
   345        call MessageNotify( "M", "axesset_init", "XMin = %f", d=(/XMin/)    )
   346        call MessageNotify( "M", "axesset_init", "XMax = %f", d=(/XMax/)    )
   347        call MessageNotify( "M", "axesset_init", "YMin = %f", d=(/YMin/)    )
   348        call MessageNotify( "M", "axesset_init", "YMax = %f", d=(/YMax/)    )
   349        call MessageNotify( "M", "axesset_init", "ZMin = %f", d=(/ZMin/)    )
   350        call MessageNotify( "M", "axesset_init", "ZMax = %f", d=(/ZMax/)    )
   351      end if
   352  
   353    end subroutine axesset_init
   354  
   355    !--------------------------------------------------------------------
   356    subroutine x_axis_init()
   357      ! 配列の上下限の値と格子点座標値, 格子点間隔を設定する
   358  
   359      integer                 :: ix   ! do ループ添字
   360      real(DP)                :: dx   ! 格子間隔
   361  
   362      allocate(x_X(imin:imax))
   363      allocate(p_X(imin:imax))
   364      allocate(x_dx(imin:imax))
   365      allocate(p_dx(imin:imax))
   366  
   367      ! 等間隔格子
   368      dx = (xmax - xmin) / nx
   369  
   370      do ix = imin, imax
   371        p_X(ix) = dx * ix  + myrank * xmax
   372        x_X(ix) = dx * (ix - 0.5) + myrank * xmax
   373  !      p_X(ix) = dx * ix
   374  !      x_X(ix) = dx * (ix - 0.5)
   375        x_dx(ix) = dx
   376        p_dx(ix) = dx
   377      end do
   378  
   379    end subroutine x_axis_init
   380    !--------------------------------------------------------------------
   381    subroutine y_axis_init()
   382      ! y 方向の座標値と格子点間隔を設定する
   383  
   384      integer                 :: jy   ! ループ添字
   385      real(DP)                :: dy
   386  
   387      allocate(y_Y(jmin:jmax))
   388      allocate(q_Y(jmin:jmax))
   389      allocate(y_dy(jmin:jmax))
   390      allocate(q_dy(jmin:jmax))
   391  
   392      ! 等間隔格子
   393      dy = (ymax - ymin) / ny
   394  
   395      do jy = jmin, jmax
   396        q_Y(jy) = dy * jy
   397        y_Y(jy) = dy * (jy - 0.5)
   398        y_dy(jy) = dy
   399        q_dy(jy) = dy
   400      end do
   401  
   402    end subroutine y_axis_init
   403    !--------------------------------------------------------------------
   404    subroutine z_axis_init()
   405      ! z 方向の座標値と格子点間隔を設定する
   406  
   407      integer                 :: kz   ! ループ添字
   408      real(DP)            :: dz
   409  
   410      allocate(z_Z(kmin:kmax))
   411      allocate(r_Z(kmin:kmax))
   412      allocate(z_dz(kmin:kmax))
   413      allocate(r_dz(kmin:kmax))
   414  
   415      ! 等間隔格子
   416      dz = (zmax - zmin) / nz
   417  
   418      do kz = kmin, kmax
   419        r_Z(kz) = dz * kz
   420        z_Z(kz) = dz * (kz - 0.5)
   421        r_dz(kz) = dz
   422        z_dz(kz) = dz
   423      end do
   424  
   425    end subroutine z_axis_init
   426  
   427    !--------------------------------------------------------------------
   428    function xaa_avr_paa(paa_Var)
   429      ! 平均操作を行い x 方向整数格子点の配列値を半整数点上へ返す
   430  
   431      real(DP),intent(in) :: paa_Var(imin:imax,jmin:jmax,kmin:kmax)
   432      real(DP)            :: xaa_avr_paa(imin:imax,jmin:jmax,kmin:kmax)
   433      integer             :: ix
   434  
   435      ! 平均操作: p 座標から x 座標へ返す. imin の値は陽に代入する.
   436      !
   437      !    p     imin    0     1         imax-1  imax
   438      !     |--*--|--*--||--*--|--*--|--*--||--*--|
   439      !    x  imin   0      1         imax-1  imax
   440      !
   441      do ix = imin+1, imax
   442        xaa_avr_paa(ix,:,:) = (paa_Var(ix,:,:) + paa_Var(ix-1,:,:))*0.5d0
   443      end do
     .  !CDIR    NODEP                                                          
     .        do t69 = 1, kmax + 1 - kmin                                       
     .           if (jmax + 1 - jmin .gt. 0) then                               
     .              J1 = and(jmax + 1 - jmin,3)                                 
     .  !CDIR       NODEP                                                       
     .              do t71 = 1, J1                                              
     .  !CDIR          NODEP                                                    
     .                 do ix = 1, imax - imin                                   
     .                    xaa_avr_paa(imin+ix,t71-1+                            
     .       1               xaa_avr_paa.DESCRIPT.RETVAL.DSC.L2,t69-1+          
     .       2               xaa_avr_paa.DESCRIPT.RETVAL.DSC.L3) = (paa_var(imin
     .       3               +ix,t71-1+t14,t69-1+t16)+paa_var(imin+ix-1,t71-1+  
     .       4               t14,t69-1+t16))*5.00000000000000e-001              
     .                 end do                                                   
     .              end do                                                      
     .  !CDIR       NODEP                                                       
     .              do t71 = J1 + 1, jmax + 1 - jmin, 4                         
     .  !CDIR          NODEP                                                    
     .                 do ix = 1, imax - imin                                   
     .                    xaa_avr_paa(imin+ix,t71-1+                            
     .       1               xaa_avr_paa.DESCRIPT.RETVAL.DSC.L2,t69-1+          
     .       2               xaa_avr_paa.DESCRIPT.RETVAL.DSC.L3) = (paa_var(imin
     .       3               +ix,t71-1+t14,t69-1+t16)+paa_var(imin+ix-1,t71-1+  
     .       4               t14,t69-1+t16))*5.00000000000000e-001              
     .                    xaa_avr_paa(imin+ix,t71+                              
     .       1               xaa_avr_paa.DESCRIPT.RETVAL.DSC.L2,t69-1+          
     .       2               xaa_avr_paa.DESCRIPT.RETVAL.DSC.L3) = (paa_var(imin
     .       3               +ix,t71+t14,t69-1+t16)+paa_var(imin+ix-1,t71+t14,  
     .       4               t69-1+t16))*5.00000000000000e-001                  
     .                    xaa_avr_paa(imin+ix,t71+1+                            
     .       1               xaa_avr_paa.DESCRIPT.RETVAL.DSC.L2,t69-1+          
     .       2               xaa_avr_paa.DESCRIPT.RETVAL.DSC.L3) = (paa_var(imin
     .       3               +ix,t71+1+t14,t69-1+t16)+paa_var(imin+ix-1,t71+1+  
     .       4               t14,t69-1+t16))*5.00000000000000e-001              
     .                    xaa_avr_paa(imin+ix,t71+2+                            
     .       1               xaa_avr_paa.DESCRIPT.RETVAL.DSC.L2,t69-1+          
     .       2               xaa_avr_paa.DESCRIPT.RETVAL.DSC.L3) = (paa_var(imin
     .       3               +ix,t71+2+t14,t69-1+t16)+paa_var(imin+ix-1,t71+2+  
     .       4               t14,t69-1+t16))*5.00000000000000e-001              
     .                 end do                                                   
     .              end do                                                      
     .           endif                                                          
     .        end do                                                            
   444  
   445      ! imin 格子上の値
   446      xaa_avr_paa(imin,:,:) = 1.0d10
     .        if (xaa_avr_paa.DESCRIPT.RETVAL.DSC.U3 + 1 -                      
     .       1   xaa_avr_paa.DESCRIPT.RETVAL.DSC.L3 .gt. 0) then                
     .           J2 = and(xaa_avr_paa.DESCRIPT.RETVAL.DSC.U3 + 1 -              
     .       1      xaa_avr_paa.DESCRIPT.RETVAL.DSC.L3,3)                       
     .  !CDIR    NODEP                                                          
     .           do t79 = 1, J2                                                 
     .  !CDIR       NODEP                                                       
     .              do t81 = 1, xaa_avr_paa.DESCRIPT.RETVAL.DSC.U2 + 1 -        
     .       1         xaa_avr_paa.DESCRIPT.RETVAL.DSC.L2                       
     .                 xaa_avr_paa(imin,xaa_avr_paa.DESCRIPT.RETVAL.DSC.L2+t81-1
     .       1            ,t79-1+xaa_avr_paa.DESCRIPT.RETVAL.DSC.L3) =          
     .       2            1.00000000000000e+010                                 
     .              end do                                                      
     .           end do                                                         
     .  !CDIR    NODEP                                                          
     .           do t79 = J2 + 1, xaa_avr_paa.DESCRIPT.RETVAL.DSC.U3 + 1 -      
     .       1      xaa_avr_paa.DESCRIPT.RETVAL.DSC.L3, 4                       
     .  !CDIR       NODEP                                                       
     .              do t81 = 1, xaa_avr_paa.DESCRIPT.RETVAL.DSC.U2 + 1 -        
     .       1         xaa_avr_paa.DESCRIPT.RETVAL.DSC.L2                       
     .                 xaa_avr_paa(imin,xaa_avr_paa.DESCRIPT.RETVAL.DSC.L2+t81-1
     .       1            ,t79-1+xaa_avr_paa.DESCRIPT.RETVAL.DSC.L3) =          
     .       2            1.00000000000000e+010                                 
     .                 xaa_avr_paa(imin,xaa_avr_paa.DESCRIPT.RETVAL.DSC.L2+t81-1
     .       1            ,t79+xaa_avr_paa.DESCRIPT.RETVAL.DSC.L3) =            
     .       2            1.00000000000000e+010                                 
     .                 xaa_avr_paa(imin,xaa_avr_paa.DESCRIPT.RETVAL.DSC.L2+t81-1
     .       1            ,t79+1+xaa_avr_paa.DESCRIPT.RETVAL.DSC.L3) =          
     .       2            1.00000000000000e+010                                 
     .                 xaa_avr_paa(imin,xaa_avr_paa.DESCRIPT.RETVAL.DSC.L2+t81-1
     .       1            ,t79+2+xaa_avr_paa.DESCRIPT.RETVAL.DSC.L3) =          
     .       2            1.00000000000000e+010                                 
     .              end do                                                      
     .           end do                                                         
     .        endif                                                             
   447  
   448    end function xaa_avr_paa
   449    !--------------------------------------------------------------------
   450    function paa_avr_xaa(xaa_Var)
   451      ! 半整数格子点の配列値を整数点上へ返す
   452  
   453      real(DP),intent(in) :: xaa_Var(imin:imax,jmin:jmax,kmin:kmax)
   454      real(DP)            :: paa_avr_xaa(imin:imax,jmin:jmax,kmin:kmax)
   455      integer             :: ix
   456  
   457      ! 平均操作: x 座標から p 座標へ返す. imax の値は陽に代入する.
   458      !
   459      !    p     imin    0     1         imax-1  imax
   460      !     |--*--|--*--||--*--|--*--|--*--||--*--|
   461      !    x  imin   0      1         imax-1  imax
   462      !
   463      do ix = imin, imax-1
   464        paa_avr_xaa(ix,:,:) = &
   465          &  (x_dx(ix)*xaa_Var(ix+1,:,:) + x_dx(ix+1)*xaa_Var(ix,:,:)) &
   466          &  *0.5d0/p_dx(ix)
   467      end do
     .  !CDIR NODEP                                                             
     .        do t98 = 1, kmax + 1 - kmin                                       
     .           if (jmax + 1 - jmin .gt. 0) then                               
     .              J1 = and(jmax + 1 - jmin,3)                                 
     .  !CDIR       NODEP                                                       
     .              do t100 = 1, J1                                             
     .  !CDIR          NODEP                                                    
     .                 do ix = 1, imax - imin                                   
     .                    paa_avr_xaa(imin+ix-1,t100-1+                         
     .       1               paa_avr_xaa.DESCRIPT.RETVAL.DSC.L2,t98-1+          
     .       2               paa_avr_xaa.DESCRIPT.RETVAL.DSC.L3) = (x_dx(imin+ix
     .       3               -1)*xaa_var(imin+ix,t100-1+t24,t98-1+t26)+x_dx(imin
     .       4               +ix)*xaa_var(imin+ix-1,t100-1+t24,t98-1+t26))*     
     .       5               5.00000000000000e-001/p_dx(imin+ix-1)              
     .                 end do                                                   
     .              end do                                                      
     .  !CDIR       NODEP                                                       
     .              do t100 = J1 + 1, jmax + 1 - jmin, 4                        
     .  !CDIR          NODEP                                                    
     .                 do ix = 1, imax - imin                                   
     .                    D3 = p_dx(imin+ix-1)                                  
     .                    D2 = x_dx(imin+ix)                                    
     .                    D1 = x_dx(imin+ix-1)                                  
     .                    paa_avr_xaa(imin+ix-1,t100-1+                         
     .       1               paa_avr_xaa.DESCRIPT.RETVAL.DSC.L2,t98-1+          
     .       2               paa_avr_xaa.DESCRIPT.RETVAL.DSC.L3) = (D1*xaa_var( 
     .       3               imin+ix,t100-1+t24,t98-1+t26)+D2*xaa_var(imin+ix-1,
     .       4               t100-1+t24,t98-1+t26))*5.00000000000000e-001/D3    
     .                    paa_avr_xaa(imin+ix-1,t100+                           
     .       1               paa_avr_xaa.DESCRIPT.RETVAL.DSC.L2,t98-1+          
     .       2               paa_avr_xaa.DESCRIPT.RETVAL.DSC.L3) = (D1*xaa_var( 
     .       3               imin+ix,t100+t24,t98-1+t26)+D2*xaa_var(imin+ix-1,  
     .       4               t100+t24,t98-1+t26))*5.00000000000000e-001/D3      
     .                    paa_avr_xaa(imin+ix-1,t100+1+                         
     .       1               paa_avr_xaa.DESCRIPT.RETVAL.DSC.L2,t98-1+          
     .       2               paa_avr_xaa.DESCRIPT.RETVAL.DSC.L3) = (D1*xaa_var( 
     .       3               imin+ix,t100+1+t24,t98-1+t26)+D2*xaa_var(imin+ix-1,
     .       4               t100+1+t24,t98-1+t26))*5.00000000000000e-001/D3    
     .                    paa_avr_xaa(imin+ix-1,t100+2+                         
     .       1               paa_avr_xaa.DESCRIPT.RETVAL.DSC.L2,t98-1+          
     .       2               paa_avr_xaa.DESCRIPT.RETVAL.DSC.L3) = (D1*xaa_var( 
     .       3               imin+ix,t100+2+t24,t98-1+t26)+D2*xaa_var(imin+ix-1,
     .       4               t100+2+t24,t98-1+t26))*5.00000000000000e-001/D3    
     .                 end do                                                   
     .              end do                                                      
     .           endif                                                          
     .        end do                                                            
   468  
   469      ! imax 格子上の値
   470      paa_avr_xaa(imax,:,:) = 1.0d10
     .        if (paa_avr_xaa.DESCRIPT.RETVAL.DSC.U3 + 1 -                      
     .       1   paa_avr_xaa.DESCRIPT.RETVAL.DSC.L3 .gt. 0) then                
     .           J2 = and(paa_avr_xaa.DESCRIPT.RETVAL.DSC.U3 + 1 -              
     .       1      paa_avr_xaa.DESCRIPT.RETVAL.DSC.L3,3)                       
     .  !CDIR    NODEP                                                          
     .           do t108 = 1, J2                                                
     .  !CDIR       NODEP                                                       
     .              do t110 = 1, paa_avr_xaa.DESCRIPT.RETVAL.DSC.U2 + 1 -       
     .       1         paa_avr_xaa.DESCRIPT.RETVAL.DSC.L2                       
     .                 paa_avr_xaa(imax,paa_avr_xaa.DESCRIPT.RETVAL.DSC.L2+t110-
     .       1            1,t108-1+paa_avr_xaa.DESCRIPT.RETVAL.DSC.L3) =        
     .       2            1.00000000000000e+010                                 
     .              end do                                                      
     .           end do                                                         
     .  !CDIR    NODEP                                                          
     .           do t108 = J2 + 1, paa_avr_xaa.DESCRIPT.RETVAL.DSC.U3 + 1 -     
     .       1      paa_avr_xaa.DESCRIPT.RETVAL.DSC.L3, 4                       
     .  !CDIR       NODEP                                                       
     .              do t110 = 1, paa_avr_xaa.DESCRIPT.RETVAL.DSC.U2 + 1 -       
     .       1         paa_avr_xaa.DESCRIPT.RETVAL.DSC.L2                       
     .                 paa_avr_xaa(imax,paa_avr_xaa.DESCRIPT.RETVAL.DSC.L2+t110-
     .       1            1,t108-1+paa_avr_xaa.DESCRIPT.RETVAL.DSC.L3) =        
     .       2            1.00000000000000e+010                                 
     .                 paa_avr_xaa(imax,paa_avr_xaa.DESCRIPT.RETVAL.DSC.L2+t110-
     .       1            1,t108+paa_avr_xaa.DESCRIPT.RETVAL.DSC.L3) =          
     .       2            1.00000000000000e+010                                 
     .                 paa_avr_xaa(imax,paa_avr_xaa.DESCRIPT.RETVAL.DSC.L2+t110-
     .       1            1,t108+1+paa_avr_xaa.DESCRIPT.RETVAL.DSC.L3) =        
     .       2            1.00000000000000e+010                                 
     .                 paa_avr_xaa(imax,paa_avr_xaa.DESCRIPT.RETVAL.DSC.L2+t110-
     .       1            1,t108+2+paa_avr_xaa.DESCRIPT.RETVAL.DSC.L3) =        
     .       2            1.00000000000000e+010                                 
     .              end do                                                      
     .           end do                                                         
     .        endif                                                             
   471  
   472    end function paa_avr_xaa
   473    !--------------------------------------------------------------------
   474    function aya_avr_aqa(aqa_Var)
   475      ! 平均操作を行い y 方向半整数格子点の配列値を整数格子点上へ返す
   476  
   477      real(DP),intent(in) :: aqa_Var(imin:imax,jmin:jmax,kmin:kmax)
   478      real(DP)            :: aya_avr_aqa(imin:imax,jmin:jmax,kmin:kmax)
   479      integer                 :: jy
   480  
   481      ! 2 次元計算(y 方向の配列要素数が 1)の場合, 代入値をそのまま返す
   482      if (jmin == jmax) then
   483        aya_avr_aqa = aqa_Var
     .        if (aya_avr_aqa.DESCRIPT.RETVAL.DSC.U2 -                          
     .       1   aya_avr_aqa.DESCRIPT.RETVAL.DSC.L2 + 2 - min0(1,               
     .       2   aya_avr_aqa.DESCRIPT.RETVAL.DSC.U2 -                           
     .       3   aya_avr_aqa.DESCRIPT.RETVAL.DSC.L2 + 1) .gt. 0) then           
     .           J1 = and(aya_avr_aqa.DESCRIPT.RETVAL.DSC.U2 -                  
     .       1      aya_avr_aqa.DESCRIPT.RETVAL.DSC.L2 + 2 - min0(1,            
     .       2      aya_avr_aqa.DESCRIPT.RETVAL.DSC.U2 -                        
     .       3      aya_avr_aqa.DESCRIPT.RETVAL.DSC.L2 + 1),3)                  
     .  !CDIR    NODEP                                                          
     .           do t96 = 1, J1                                                 
     .  !CDIR       NODEP                                                       
     .              do t98 = 1, aya_avr_aqa.DESCRIPT.RETVAL.DSC.U1 -            
     .       1         aya_avr_aqa.DESCRIPT.RETVAL.DSC.L1 + 2 - min0(1,         
     .       2         aya_avr_aqa.DESCRIPT.RETVAL.DSC.U1 -                     
     .       3         aya_avr_aqa.DESCRIPT.RETVAL.DSC.L1 + 1)                  
     .                 aya_avr_aqa(aya_avr_aqa.DESCRIPT.RETVAL.DSC.L1+t98-1,t96-
     .       1            1+aya_avr_aqa.DESCRIPT.RETVAL.DSC.L2,t94+             
     .       2            aya_avr_aqa.DESCRIPT.RETVAL.DSC.L3) = aqa_var(t12+t98-
     .       3            1,t96-1+t14,t94+t16)                                  
     .              end do                                                      
     .           end do                                                         
     .  !CDIR    NODEP                                                          
     .           do t96 = J1 + 1, aya_avr_aqa.DESCRIPT.RETVAL.DSC.U2 -          
     .       1      aya_avr_aqa.DESCRIPT.RETVAL.DSC.L2 + 2 - min0(1,            
     .       2      aya_avr_aqa.DESCRIPT.RETVAL.DSC.U2 -                        
     .       3      aya_avr_aqa.DESCRIPT.RETVAL.DSC.L2 + 1), 4                  
     .  !CDIR       NODEP                                                       
     .              do t98 = 1, aya_avr_aqa.DESCRIPT.RETVAL.DSC.U1 -            
     .       1         aya_avr_aqa.DESCRIPT.RETVAL.DSC.L1 + 2 - min0(1,         
     .       2         aya_avr_aqa.DESCRIPT.RETVAL.DSC.U1 -                     
     .       3         aya_avr_aqa.DESCRIPT.RETVAL.DSC.L1 + 1)                  
     .                 aya_avr_aqa(aya_avr_aqa.DESCRIPT.RETVAL.DSC.L1+t98-1,t96-
     .       1            1+aya_avr_aqa.DESCRIPT.RETVAL.DSC.L2,t94+             
     .       2            aya_avr_aqa.DESCRIPT.RETVAL.DSC.L3) = aqa_var(t12+t98-
     .       3            1,t96-1+t14,t94+t16)                                  
     .                 aya_avr_aqa(aya_avr_aqa.DESCRIPT.RETVAL.DSC.L1+t98-1,t96+
     .       1            aya_avr_aqa.DESCRIPT.RETVAL.DSC.L2,t94+               
     .       2            aya_avr_aqa.DESCRIPT.RETVAL.DSC.L3) = aqa_var(t12+t98-
     .       3            1,t96+t14,t94+t16)                                    
     .                 aya_avr_aqa(aya_avr_aqa.DESCRIPT.RETVAL.DSC.L1+t98-1,t96+
     .       1            1+aya_avr_aqa.DESCRIPT.RETVAL.DSC.L2,t94+             
     .       2            aya_avr_aqa.DESCRIPT.RETVAL.DSC.L3) = aqa_var(t12+t98-
     .       3            1,t96+1+t14,t94+t16)                                  
     .                 aya_avr_aqa(aya_avr_aqa.DESCRIPT.RETVAL.DSC.L1+t98-1,t96+
     .       1            2+aya_avr_aqa.DESCRIPT.RETVAL.DSC.L2,t94+             
     .       2            aya_avr_aqa.DESCRIPT.RETVAL.DSC.L3) = aqa_var(t12+t98-
     .       3            1,t96+2+t14,t94+t16)                                  
     .              end do                                                      
     .           end do                                                         
     .        endif                                                             
   484        return
   485      end if
   486  
   487      ! 平均操作
   488      !
   489      do jy = jmin+1, jmax
   490        aya_avr_aqa(:,jy,:) = (aqa_Var(:,jy,:) + aqa_Var(:,jy-1,:))*0.5d0
   491      end do
     .  !CDIR NODEP                                                             
     .        do t78 = 1, kmax + 1 - kmin                                       
     .  !CDIR    NOASSUME                                                       
     .           do jy = 1, (jmax - jmin)*(imax + 1 - imin)                     
     .              aya_avr_aqa(aya_avr_aqa.DESCRIPT.RETVAL.DSC.L1+jy-1,1+jmin, 
     .       1         t78-1+aya_avr_aqa.DESCRIPT.RETVAL.DSC.L3) = (aqa_var(t12+
     .       2         jy-1,1+jmin,t78-1+t16)+aqa_var(t12+jy-1,jmin,t78-1+t16))*
     .       3         5.00000000000000e-001                                    
     .           end do                                                         
     .        end do                                                            
   492  
   493      ! jmin 格子上の値
   494      aya_avr_aqa(:,jmin,:) = 1.0d10
     .        if (aya_avr_aqa.DESCRIPT.RETVAL.DSC.U3 + 1 -                      
     .       1   aya_avr_aqa.DESCRIPT.RETVAL.DSC.L3 .gt. 0) then                
     .           J2 = and(aya_avr_aqa.DESCRIPT.RETVAL.DSC.U3 + 1 -              
     .       1      aya_avr_aqa.DESCRIPT.RETVAL.DSC.L3,3)                       
     .  !CDIR    NODEP                                                          
     .           do t88 = 1, J2                                                 
     .  !CDIR       NODEP                                                       
     .              do t90 = 1, aya_avr_aqa.DESCRIPT.RETVAL.DSC.U1 + 1 -        
     .       1         aya_avr_aqa.DESCRIPT.RETVAL.DSC.L1                       
     .                 aya_avr_aqa(aya_avr_aqa.DESCRIPT.RETVAL.DSC.L1+t90-1,jmin
     .       1            ,t88-1+aya_avr_aqa.DESCRIPT.RETVAL.DSC.L3) =          
     .       2            1.00000000000000e+010                                 
     .              end do                                                      
     .           end do                                                         
     .  !CDIR    NODEP                                                          
     .           do t88 = J2 + 1, aya_avr_aqa.DESCRIPT.RETVAL.DSC.U3 + 1 -      
     .       1      aya_avr_aqa.DESCRIPT.RETVAL.DSC.L3, 4                       
     .  !CDIR       NODEP                                                       
     .              do t90 = 1, aya_avr_aqa.DESCRIPT.RETVAL.DSC.U1 + 1 -        
     .       1         aya_avr_aqa.DESCRIPT.RETVAL.DSC.L1                       
     .                 aya_avr_aqa(aya_avr_aqa.DESCRIPT.RETVAL.DSC.L1+t90-1,jmin
     .       1            ,t88-1+aya_avr_aqa.DESCRIPT.RETVAL.DSC.L3) =          
     .       2            1.00000000000000e+010                                 
     .                 aya_avr_aqa(aya_avr_aqa.DESCRIPT.RETVAL.DSC.L1+t90-1,jmin
     .       1            ,t88+aya_avr_aqa.DESCRIPT.RETVAL.DSC.L3) =            
     .       2            1.00000000000000e+010                                 
     .                 aya_avr_aqa(aya_avr_aqa.DESCRIPT.RETVAL.DSC.L1+t90-1,jmin
     .       1            ,t88+1+aya_avr_aqa.DESCRIPT.RETVAL.DSC.L3) =          
     .       2            1.00000000000000e+010                                 
     .                 aya_avr_aqa(aya_avr_aqa.DESCRIPT.RETVAL.DSC.L1+t90-1,jmin
     .       1            ,t88+2+aya_avr_aqa.DESCRIPT.RETVAL.DSC.L3) =          
     .       2            1.00000000000000e+010                                 
     .              end do                                                      
     .           end do                                                         
     .        endif                                                             
   495  
   496    end function aya_avr_aqa
   497    !--------------------------------------------------------------------
   498    function aqa_avr_aya(aya_Var)
   499      ! 平均操作を行い y 方向半整数格子点の配列値を整数格子点上へ返す
   500  
   501      real(DP),intent(in) :: aya_Var(imin:imax,jmin:jmax,kmin:kmax)
   502      real(DP)            :: aqa_avr_aya(imin:imax,jmin:jmax,kmin:kmax)
   503      integer                 :: jy
   504  
   505      ! 2 次元計算(y 方向の配列要素数が 1)の場合, 代入値をそのまま返す
   506      if (jmin == jmax) then
   507        aqa_avr_aya = aya_Var
     .        if (aqa_avr_aya.DESCRIPT.RETVAL.DSC.U2 -                          
     .       1   aqa_avr_aya.DESCRIPT.RETVAL.DSC.L2 + 2 - min0(1,               
     .       2   aqa_avr_aya.DESCRIPT.RETVAL.DSC.U2 -                           
     .       3   aqa_avr_aya.DESCRIPT.RETVAL.DSC.L2 + 1) .gt. 0) then           
     .           J1 = and(aqa_avr_aya.DESCRIPT.RETVAL.DSC.U2 -                  
     .       1      aqa_avr_aya.DESCRIPT.RETVAL.DSC.L2 + 2 - min0(1,            
     .       2      aqa_avr_aya.DESCRIPT.RETVAL.DSC.U2 -                        
     .       3      aqa_avr_aya.DESCRIPT.RETVAL.DSC.L2 + 1),3)                  
     .  !CDIR    NODEP                                                          
     .           do t125 = 1, J1                                                
     .  !CDIR       NODEP                                                       
     .              do t127 = 1, aqa_avr_aya.DESCRIPT.RETVAL.DSC.U1 -           
     .       1         aqa_avr_aya.DESCRIPT.RETVAL.DSC.L1 + 2 - min0(1,         
     .       2         aqa_avr_aya.DESCRIPT.RETVAL.DSC.U1 -                     
     .       3         aqa_avr_aya.DESCRIPT.RETVAL.DSC.L1 + 1)                  
     .                 aqa_avr_aya(aqa_avr_aya.DESCRIPT.RETVAL.DSC.L1+t127-1,   
     .       1            t125-1+aqa_avr_aya.DESCRIPT.RETVAL.DSC.L2,t123+       
     .       2            aqa_avr_aya.DESCRIPT.RETVAL.DSC.L3) = aya_var(t22+t127
     .       3            -1,t125-1+t24,t123+t26)                               
     .              end do                                                      
     .           end do                                                         
     .  !CDIR    NODEP                                                          
     .           do t125 = J1 + 1, aqa_avr_aya.DESCRIPT.RETVAL.DSC.U2 -         
     .       1      aqa_avr_aya.DESCRIPT.RETVAL.DSC.L2 + 2 - min0(1,            
     .       2      aqa_avr_aya.DESCRIPT.RETVAL.DSC.U2 -                        
     .       3      aqa_avr_aya.DESCRIPT.RETVAL.DSC.L2 + 1), 4                  
     .  !CDIR       NODEP                                                       
     .              do t127 = 1, aqa_avr_aya.DESCRIPT.RETVAL.DSC.U1 -           
     .       1         aqa_avr_aya.DESCRIPT.RETVAL.DSC.L1 + 2 - min0(1,         
     .       2         aqa_avr_aya.DESCRIPT.RETVAL.DSC.U1 -                     
     .       3         aqa_avr_aya.DESCRIPT.RETVAL.DSC.L1 + 1)                  
     .                 aqa_avr_aya(aqa_avr_aya.DESCRIPT.RETVAL.DSC.L1+t127-1,   
     .       1            t125-1+aqa_avr_aya.DESCRIPT.RETVAL.DSC.L2,t123+       
     .       2            aqa_avr_aya.DESCRIPT.RETVAL.DSC.L3) = aya_var(t22+t127
     .       3            -1,t125-1+t24,t123+t26)                               
     .                 aqa_avr_aya(aqa_avr_aya.DESCRIPT.RETVAL.DSC.L1+t127-1,   
     .       1            t125+aqa_avr_aya.DESCRIPT.RETVAL.DSC.L2,t123+         
     .       2            aqa_avr_aya.DESCRIPT.RETVAL.DSC.L3) = aya_var(t22+t127
     .       3            -1,t125+t24,t123+t26)                                 
     .                 aqa_avr_aya(aqa_avr_aya.DESCRIPT.RETVAL.DSC.L1+t127-1,   
     .       1            t125+1+aqa_avr_aya.DESCRIPT.RETVAL.DSC.L2,t123+       
     .       2            aqa_avr_aya.DESCRIPT.RETVAL.DSC.L3) = aya_var(t22+t127
     .       3            -1,t125+1+t24,t123+t26)                               
     .                 aqa_avr_aya(aqa_avr_aya.DESCRIPT.RETVAL.DSC.L1+t127-1,   
     .       1            t125+2+aqa_avr_aya.DESCRIPT.RETVAL.DSC.L2,t123+       
     .       2            aqa_avr_aya.DESCRIPT.RETVAL.DSC.L3) = aya_var(t22+t127
     .       3            -1,t125+2+t24,t123+t26)                               
     .              end do                                                      
     .           end do                                                         
     .        endif                                                             
   508        return
   509      end if
   510  
   511      ! 平均操作
   512      !
   513      do jy = jmin, jmax-1
   514        aqa_avr_aya(:,jy,:) = &
     .        if (kmax + 1 - kmin .gt. 0) then                                  
     .           J2 = and(kmax + 1 - kmin,3)                                    
     .  !CDIR    NODEP                                                          
     .           do t107 = 1, J2                                                
     .              D4 = 5.00000000000000e-001/q_dy(jy)                         
     .  !CDIR       NODEP                                                       
     .              do t109 = 1, imax + 1 - imin                                
     .                 aqa_avr_aya(aqa_avr_aya.DESCRIPT.RETVAL.DSC.L1+t109-1,jy,
     .       1            t107-1+aqa_avr_aya.DESCRIPT.RETVAL.DSC.L3) = (y_dy(jy)
     .       2            *aya_var(t22+t109-1,jy+1,t107-1+t26)+y_dy(jy+1)*      
     .       3            aya_var(t22+t109-1,jy,t107-1+t26))*D4                 
     .              end do                                                      
     .           end do                                                         
     .  !CDIR    NODEP                                                          
     .           do t107 = J2 + 1, kmax + 1 - kmin, 4                           
     .              D3 = q_dy(jy)                                               
     .              D2 = y_dy(jy+1)                                             
     .              D1 = y_dy(jy)                                               
     .  !CDIR       NODEP                                                       
     .              do t109 = 1, imax + 1 - imin                                
     .                 aqa_avr_aya(aqa_avr_aya.DESCRIPT.RETVAL.DSC.L1+t109-1,jy,
     .       1            t107-1+aqa_avr_aya.DESCRIPT.RETVAL.DSC.L3) = (D1*     
     .       2            aya_var(t22+t109-1,jy+1,t107-1+t26)+D2*aya_var(t22+   
     .       3            t109-1,jy,t107-1+t26))*5.00000000000000e-001/D3       
     .                 aqa_avr_aya(aqa_avr_aya.DESCRIPT.RETVAL.DSC.L1+t109-1,jy,
     .       1            t107+aqa_avr_aya.DESCRIPT.RETVAL.DSC.L3) = (D1*aya_var
     .       2            (t22+t109-1,jy+1,t107+t26)+D2*aya_var(t22+t109-1,jy,  
     .       3            t107+t26))*5.00000000000000e-001/D3                   
     .                 aqa_avr_aya(aqa_avr_aya.DESCRIPT.RETVAL.DSC.L1+t109-1,jy,
     .       1            t107+1+aqa_avr_aya.DESCRIPT.RETVAL.DSC.L3) = (D1*     
     .       2            aya_var(t22+t109-1,jy+1,t107+1+t26)+D2*aya_var(t22+   
     .       3            t109-1,jy,t107+1+t26))*5.00000000000000e-001/D3       
     .                 aqa_avr_aya(aqa_avr_aya.DESCRIPT.RETVAL.DSC.L1+t109-1,jy,
     .       1            t107+2+aqa_avr_aya.DESCRIPT.RETVAL.DSC.L3) = (D1*     
     .       2            aya_var(t22+t109-1,jy+1,t107+2+t26)+D2*aya_var(t22+   
     .       3            t109-1,jy,t107+2+t26))*5.00000000000000e-001/D3       
     .              end do                                                      
     .           end do                                                         
     .        endif                                                             
   515          &  (y_dy(jy)*aya_Var(:,jy+1,:) + y_dy(jy+1)*aya_Var(:,jy,:)) &
   516          &  * 0.5d0/q_dy(jy)
   517      end do
   518  
   519      ! jmax 格子上の値
   520      aqa_avr_aya(:,jmax,:) = 1.0d10
     .        if (aqa_avr_aya.DESCRIPT.RETVAL.DSC.U3 + 1 -                      
     .       1   aqa_avr_aya.DESCRIPT.RETVAL.DSC.L3 .gt. 0) then                
     .           J3 = and(aqa_avr_aya.DESCRIPT.RETVAL.DSC.U3 + 1 -              
     .       1      aqa_avr_aya.DESCRIPT.RETVAL.DSC.L3,3)                       
     .  !CDIR    NODEP                                                          
     .           do t117 = 1, J3                                                
     .  !CDIR       NODEP                                                       
     .              do t119 = 1, aqa_avr_aya.DESCRIPT.RETVAL.DSC.U1 + 1 -       
     .       1         aqa_avr_aya.DESCRIPT.RETVAL.DSC.L1                       
     .                 aqa_avr_aya(aqa_avr_aya.DESCRIPT.RETVAL.DSC.L1+t119-1,   
     .       1            jmax,t117-1+aqa_avr_aya.DESCRIPT.RETVAL.DSC.L3) =     
     .       2            1.00000000000000e+010                                 
     .              end do                                                      
     .           end do                                                         
     .  !CDIR    NODEP                                                          
     .           do t117 = J3 + 1, aqa_avr_aya.DESCRIPT.RETVAL.DSC.U3 + 1 -     
     .       1      aqa_avr_aya.DESCRIPT.RETVAL.DSC.L3, 4                       
     .  !CDIR       NODEP                                                       
     .              do t119 = 1, aqa_avr_aya.DESCRIPT.RETVAL.DSC.U1 + 1 -       
     .       1         aqa_avr_aya.DESCRIPT.RETVAL.DSC.L1                       
     .                 aqa_avr_aya(aqa_avr_aya.DESCRIPT.RETVAL.DSC.L1+t119-1,   
     .       1            jmax,t117-1+aqa_avr_aya.DESCRIPT.RETVAL.DSC.L3) =     
     .       2            1.00000000000000e+010                                 
     .                 aqa_avr_aya(aqa_avr_aya.DESCRIPT.RETVAL.DSC.L1+t119-1,   
     .       1            jmax,t117+aqa_avr_aya.DESCRIPT.RETVAL.DSC.L3) =       
     .       2            1.00000000000000e+010                                 
     .                 aqa_avr_aya(aqa_avr_aya.DESCRIPT.RETVAL.DSC.L1+t119-1,   
     .       1            jmax,t117+1+aqa_avr_aya.DESCRIPT.RETVAL.DSC.L3) =     
     .       2            1.00000000000000e+010                                 
     .                 aqa_avr_aya(aqa_avr_aya.DESCRIPT.RETVAL.DSC.L1+t119-1,   
     .       1            jmax,t117+2+aqa_avr_aya.DESCRIPT.RETVAL.DSC.L3) =     
     .       2            1.00000000000000e+010                                 
     .              end do                                                      
     .           end do                                                         
     .        endif                                                             
   521  
   522    end function aqa_avr_aya
   523    !--------------------------------------------------------------------
   524    function aaz_avr_aar(aar_Var)
   525      ! 平均操作を行い z 方向整数格子点の配列値を半整数格子点上へ返す
   526  
   527      real(DP),intent(in) :: aar_Var(imin:imax,jmin:jmax,kmin:kmax)
   528      real(DP)            :: aaz_avr_aar(imin:imax,jmin:jmax,kmin:kmax)
   529      integer                 :: kz
   530  
   531      ! 平均操作
   532      !
   533      do kz = kmin+1, kmax
   534        aaz_avr_aar(:,:,kz) = (aar_Var(:,:,kz) + aar_Var(:,:,kz-1))*0.5d0
   535      end do
     .  !CDIR NODEP                                                             
     .  !CDIR NOASSUME                                                          
     .        do kz = 1, (kmax - kmin)*(jmax + 1 - jmin)*(imax + 1 - imin)      
     .           aaz_avr_aar(aaz_avr_aar.DESCRIPT.RETVAL.DSC.L1+kz-1,           
     .       1      aaz_avr_aar.DESCRIPT.RETVAL.DSC.L2,1+kmin) = (aar_var(t12+kz
     .       2      -1,t14,1+kmin)+aar_var(t12+kz-1,t14,kmin))*                 
     .       3      5.00000000000000e-001                                       
     .        end do                                                            
   536  
   537      ! kmin 格子上の値
   538      aaz_avr_aar(:,:,kmin) = 1.0d10
     .        if (aaz_avr_aar.DESCRIPT.RETVAL.DSC.U2 + 1 -                      
     .       1   aaz_avr_aar.DESCRIPT.RETVAL.DSC.L2 .gt. 0) then                
     .           J1 = and(aaz_avr_aar.DESCRIPT.RETVAL.DSC.U2 + 1 -              
     .       1      aaz_avr_aar.DESCRIPT.RETVAL.DSC.L2,3)                       
     .  !CDIR    NODEP                                                          
     .           do t79 = 1, J1                                                 
     .  !CDIR       NODEP                                                       
     .              do t81 = 1, aaz_avr_aar.DESCRIPT.RETVAL.DSC.U1 + 1 -        
     .       1         aaz_avr_aar.DESCRIPT.RETVAL.DSC.L1                       
     .                 aaz_avr_aar(aaz_avr_aar.DESCRIPT.RETVAL.DSC.L1+t81-1,t79-
     .       1            1+aaz_avr_aar.DESCRIPT.RETVAL.DSC.L2,kmin) =          
     .       2            1.00000000000000e+010                                 
     .              end do                                                      
     .           end do                                                         
     .  !CDIR    NODEP                                                          
     .           do t79 = J1 + 1, aaz_avr_aar.DESCRIPT.RETVAL.DSC.U2 + 1 -      
     .       1      aaz_avr_aar.DESCRIPT.RETVAL.DSC.L2, 4                       
     .  !CDIR       NODEP                                                       
     .              do t81 = 1, aaz_avr_aar.DESCRIPT.RETVAL.DSC.U1 + 1 -        
     .       1         aaz_avr_aar.DESCRIPT.RETVAL.DSC.L1                       
     .                 aaz_avr_aar(aaz_avr_aar.DESCRIPT.RETVAL.DSC.L1+t81-1,t79-
     .       1            1+aaz_avr_aar.DESCRIPT.RETVAL.DSC.L2,kmin) =          
     .       2            1.00000000000000e+010                                 
     .                 aaz_avr_aar(aaz_avr_aar.DESCRIPT.RETVAL.DSC.L1+t81-1,t79+
     .       1            aaz_avr_aar.DESCRIPT.RETVAL.DSC.L2,kmin) =            
     .       2            1.00000000000000e+010                                 
     .                 aaz_avr_aar(aaz_avr_aar.DESCRIPT.RETVAL.DSC.L1+t81-1,t79+
     .       1            1+aaz_avr_aar.DESCRIPT.RETVAL.DSC.L2,kmin) =          
     .       2            1.00000000000000e+010                                 
     .                 aaz_avr_aar(aaz_avr_aar.DESCRIPT.RETVAL.DSC.L1+t81-1,t79+
     .       1            2+aaz_avr_aar.DESCRIPT.RETVAL.DSC.L2,kmin) =          
     .       2            1.00000000000000e+010                                 
     .              end do                                                      
     .           end do                                                         
     .        endif                                                             
   539  
   540    end function aaz_avr_aar
   541    !--------------------------------------------------------------------
   542    function aar_avr_aaz(aaz_Var)
   543      ! 平均操作を行い z 方向半整数格子点の配列値を整数格子点上へ返す
   544  
   545      real(DP),intent(in) :: aaz_Var(imin:imax,jmin:jmax,kmin:kmax)
   546      real(DP)            :: aar_avr_aaz(imin:imax,jmin:jmax,kmin:kmax)
   547      integer                 :: kz
   548  
   549      ! 平均操作
   550      !
   551      do kz = kmin, kmax-1
   552        aar_avr_aaz(:,:,kz) = &
     .        D1 = 5.00000000000000e-001/r_dz(kz)                               
     .  !CDIR NODEP                                                             
     .  !CDIR NOASSUME                                                          
     .        do t98 = 1, (jmax + 1 - jmin)*(imax + 1 - imin)                   
     .           aar_avr_aaz(aar_avr_aaz.DESCRIPT.RETVAL.DSC.L1+t98-1,          
     .       1      aar_avr_aaz.DESCRIPT.RETVAL.DSC.L2,kz) = (z_dz(kz)*aaz_var( 
     .       2      t22+t98-1,t24,kz+1)+z_dz(kz+1)*aaz_var(t22+t98-1,t24,kz))*D1
     .        end do                                                            
   553          &  (z_dz(kz)*aaz_Var(:,:,kz+1) + z_dz(kz+1)*aaz_Var(:,:,kz)) &
   554          &  *0.5d0/r_dz(kz)
   555      end do
   556  
   557      ! kmax 格子上の値
   558      aar_avr_aaz(:,:,kmax) = 1.0d10
     .        if (aar_avr_aaz.DESCRIPT.RETVAL.DSC.U2 + 1 -                      
     .       1   aar_avr_aaz.DESCRIPT.RETVAL.DSC.L2 .gt. 0) then                
     .           J1 = and(aar_avr_aaz.DESCRIPT.RETVAL.DSC.U2 + 1 -              
     .       1      aar_avr_aaz.DESCRIPT.RETVAL.DSC.L2,3)                       
     .  !CDIR    NODEP                                                          
     .           do t108 = 1, J1                                                
     .  !CDIR       NODEP                                                       
     .              do t110 = 1, aar_avr_aaz.DESCRIPT.RETVAL.DSC.U1 + 1 -       
     .       1         aar_avr_aaz.DESCRIPT.RETVAL.DSC.L1                       
     .                 aar_avr_aaz(aar_avr_aaz.DESCRIPT.RETVAL.DSC.L1+t110-1,   
     .       1            t108-1+aar_avr_aaz.DESCRIPT.RETVAL.DSC.L2,kmax) =     
     .       2            1.00000000000000e+010                                 
     .              end do                                                      
     .           end do                                                         
     .  !CDIR    NODEP                                                          
     .           do t108 = J1 + 1, aar_avr_aaz.DESCRIPT.RETVAL.DSC.U2 + 1 -     
     .       1      aar_avr_aaz.DESCRIPT.RETVAL.DSC.L2, 4                       
     .  !CDIR       NODEP                                                       
     .              do t110 = 1, aar_avr_aaz.DESCRIPT.RETVAL.DSC.U1 + 1 -       
     .       1         aar_avr_aaz.DESCRIPT.RETVAL.DSC.L1                       
     .                 aar_avr_aaz(aar_avr_aaz.DESCRIPT.RETVAL.DSC.L1+t110-1,   
     .       1            t108-1+aar_avr_aaz.DESCRIPT.RETVAL.DSC.L2,kmax) =     
     .       2            1.00000000000000e+010                                 
     .                 aar_avr_aaz(aar_avr_aaz.DESCRIPT.RETVAL.DSC.L1+t110-1,   
     .       1            t108+aar_avr_aaz.DESCRIPT.RETVAL.DSC.L2,kmax) =       
     .       2            1.00000000000000e+010                                 
     .                 aar_avr_aaz(aar_avr_aaz.DESCRIPT.RETVAL.DSC.L1+t110-1,   
     .       1            t108+1+aar_avr_aaz.DESCRIPT.RETVAL.DSC.L2,kmax) =     
     .       2            1.00000000000000e+010                                 
     .                 aar_avr_aaz(aar_avr_aaz.DESCRIPT.RETVAL.DSC.L1+t110-1,   
     .       1            t108+2+aar_avr_aaz.DESCRIPT.RETVAL.DSC.L2,kmax) =     
     .       2            1.00000000000000e+010                                 
     .              end do                                                      
     .           end do                                                         
     .        endif                                                             
   559  
   560    end function aar_avr_aaz
   561    !--------------------------------------------------------------------
   562    function pqz_avr_xyz(xyz_Var)
   563      real(DP), intent(in) :: xyz_Var(imin:imax,jmin:jmax,kmin:kmax)      ! 入力
   564      real(DP)             :: pqz_avr_xyz(imin:imax,jmin:jmax,kmin:kmax)  ! 出力
   565      integer              :: ix, jy                                      ! ループ添字
   566  
   567      ! 2 次元計算(y 方向の配列要素数が 1)の場合, pz_avr_xz と同じ計算を行う.
   568      if (jmin == jmax) then
   569        do ix = imin, imax-1
   570          pqz_avr_xyz(ix,:,:) = &
   571            &  ( xyz_Var(ix,:,:) + xyz_Var(ix+1,:,:) ) * 0.5d0
   572        end do
     .  !CDIR NODEP                                                             
     .        do t144 = 1, kmax + 1 - kmin                                      
     .           if (jmax + 1 - jmin .gt. 0) then                               
     .              J1 = and(jmax + 1 - jmin,3)                                 
     .  !CDIR       NODEP                                                       
     .              do t146 = 1, J1                                             
     .  !CDIR          NODEP                                                    
     .                 do ix = 1, imax - imin                                   
     .                    pqz_avr_xyz(imin+ix-1,t146-1+                         
     .       1               pqz_avr_xyz.DESCRIPT.RETVAL.DSC.L2,t144-1+         
     .       2               pqz_avr_xyz.DESCRIPT.RETVAL.DSC.L3) = (xyz_var(imin
     .       3               +ix-1,t146-1+t14,t144-1+t16)+xyz_var(imin+ix,t146-1
     .       4               +t14,t144-1+t16))*5.00000000000000e-001            
     .                 end do                                                   
     .              end do                                                      
     .  !CDIR       NODEP                                                       
     .              do t146 = J1 + 1, jmax + 1 - jmin, 4                        
     .  !CDIR          NODEP                                                    
     .                 do ix = 1, imax - imin                                   
     .                    pqz_avr_xyz(imin+ix-1,t146-1+                         
     .       1               pqz_avr_xyz.DESCRIPT.RETVAL.DSC.L2,t144-1+         
     .       2               pqz_avr_xyz.DESCRIPT.RETVAL.DSC.L3) = (xyz_var(imin
     .       3               +ix-1,t146-1+t14,t144-1+t16)+xyz_var(imin+ix,t146-1
     .       4               +t14,t144-1+t16))*5.00000000000000e-001            
     .                    pqz_avr_xyz(imin+ix-1,t146+                           
     .       1               pqz_avr_xyz.DESCRIPT.RETVAL.DSC.L2,t144-1+         
     .       2               pqz_avr_xyz.DESCRIPT.RETVAL.DSC.L3) = (xyz_var(imin
     .       3               +ix-1,t146+t14,t144-1+t16)+xyz_var(imin+ix,t146+t14
     .       4               ,t144-1+t16))*5.00000000000000e-001                
     .                    pqz_avr_xyz(imin+ix-1,t146+1+                         
     .       1               pqz_avr_xyz.DESCRIPT.RETVAL.DSC.L2,t144-1+         
     .       2               pqz_avr_xyz.DESCRIPT.RETVAL.DSC.L3) = (xyz_var(imin
     .       3               +ix-1,t146+1+t14,t144-1+t16)+xyz_var(imin+ix,t146+1
     .       4               +t14,t144-1+t16))*5.00000000000000e-001            
     .                    pqz_avr_xyz(imin+ix-1,t146+2+                         
     .       1               pqz_avr_xyz.DESCRIPT.RETVAL.DSC.L2,t144-1+         
     .       2               pqz_avr_xyz.DESCRIPT.RETVAL.DSC.L3) = (xyz_var(imin
     .       3               +ix-1,t146+2+t14,t144-1+t16)+xyz_var(imin+ix,t146+2
     .       4               +t14,t144-1+t16))*5.00000000000000e-001            
     .                 end do                                                   
     .              end do                                                      
     .           endif                                                          
     .        end do                                                            
   573  
   574        ! imax 格子上の値
   575        pqz_avr_xyz(imax,:,:) = 1.0d10
     .        if (pqz_avr_xyz.DESCRIPT.RETVAL.DSC.U3 + 1 -                      
     .       1   pqz_avr_xyz.DESCRIPT.RETVAL.DSC.L3 .gt. 0) then                
     .           J2 = and(pqz_avr_xyz.DESCRIPT.RETVAL.DSC.U3 + 1 -              
     .       1      pqz_avr_xyz.DESCRIPT.RETVAL.DSC.L3,3)                       
     .  !CDIR    NODEP                                                          
     .           do t154 = 1, J2                                                
     .  !CDIR       NODEP                                                       
     .              do t156 = 1, pqz_avr_xyz.DESCRIPT.RETVAL.DSC.U2 -           
     .       1         pqz_avr_xyz.DESCRIPT.RETVAL.DSC.L2 + 2 - min0(1,         
     .       2         pqz_avr_xyz.DESCRIPT.RETVAL.DSC.U2 -                     
     .       3         pqz_avr_xyz.DESCRIPT.RETVAL.DSC.L2 + 1)                  
     .                 pqz_avr_xyz(imax,pqz_avr_xyz.DESCRIPT.RETVAL.DSC.L2+t156-
     .       1            1,t154-1+pqz_avr_xyz.DESCRIPT.RETVAL.DSC.L3) =        
     .       2            1.00000000000000e+010                                 
     .              end do                                                      
     .           end do                                                         
     .  !CDIR    NODEP                                                          
     .           do t154 = J2 + 1, pqz_avr_xyz.DESCRIPT.RETVAL.DSC.U3 + 1 -     
     .       1      pqz_avr_xyz.DESCRIPT.RETVAL.DSC.L3, 4                       
     .  !CDIR       NODEP                                                       
     .              do t156 = 1, pqz_avr_xyz.DESCRIPT.RETVAL.DSC.U2 -           
     .       1         pqz_avr_xyz.DESCRIPT.RETVAL.DSC.L2 + 2 - min0(1,         
     .       2         pqz_avr_xyz.DESCRIPT.RETVAL.DSC.U2 -                     
     .       3         pqz_avr_xyz.DESCRIPT.RETVAL.DSC.L2 + 1)                  
     .                 pqz_avr_xyz(imax,pqz_avr_xyz.DESCRIPT.RETVAL.DSC.L2+t156-
     .       1            1,t154-1+pqz_avr_xyz.DESCRIPT.RETVAL.DSC.L3) =        
     .       2            1.00000000000000e+010                                 
     .                 pqz_avr_xyz(imax,pqz_avr_xyz.DESCRIPT.RETVAL.DSC.L2+t156-
     .       1            1,t154+pqz_avr_xyz.DESCRIPT.RETVAL.DSC.L3) =          
     .       2            1.00000000000000e+010                                 
     .                 pqz_avr_xyz(imax,pqz_avr_xyz.DESCRIPT.RETVAL.DSC.L2+t156-
     .       1            1,t154+1+pqz_avr_xyz.DESCRIPT.RETVAL.DSC.L3) =        
     .       2            1.00000000000000e+010                                 
     .                 pqz_avr_xyz(imax,pqz_avr_xyz.DESCRIPT.RETVAL.DSC.L2+t156-
     .       1            1,t154+2+pqz_avr_xyz.DESCRIPT.RETVAL.DSC.L3) =        
     .       2            1.00000000000000e+010                                 
     .              end do                                                      
     .           end do                                                         
     .        endif                                                             
     .        go to 10021                                                       
   576  
   577      ! 3 次元計算の場合
   578      else
   579        do jy = jmin, jmax-1
   580          do ix = imin, imax-1
   581            pqz_avr_xyz(ix,jy,:) = &
   582              &  ( xyz_Var(ix,jy,:)   + xyz_Var(ix+1,jy,:) +  &
   583              &    xyz_Var(ix,jy+1,:) + xyz_Var(ix+1,jy+1,:) ) * 0.25d0
   584          end do
     .        if (kmax + 1 - kmin .gt. 0) then                                  
     .           J3 = and(kmax + 1 - kmin,3)                                    
     .  !CDIR    NODEP                                                          
     .           do t125 = 1, J3                                                
     .  !CDIR       NODEP                                                       
     .              do ix = 1, imax - imin                                      
     .                 pqz_avr_xyz(imin+ix-1,jy,t125-1+                         
     .       1            pqz_avr_xyz.DESCRIPT.RETVAL.DSC.L3) = (xyz_var(imin+ix
     .       2            -1,jy,t125-1+t16)+xyz_var(imin+ix,jy,t125-1+t16)+     
     .       3            xyz_var(imin+ix-1,jy+1,t125-1+t16)+xyz_var(imin+ix,jy+
     .       4            1,t125-1+t16))*2.50000000000000e-001                  
     .              end do                                                      
     .           end do                                                         
     .  !CDIR    NODEP                                                          
     .           do t125 = J3 + 1, kmax + 1 - kmin, 4                           
     .  !CDIR       NODEP                                                       
     .              do ix = 1, imax - imin                                      
     .                 pqz_avr_xyz(imin+ix-1,jy,t125-1+                         
     .       1            pqz_avr_xyz.DESCRIPT.RETVAL.DSC.L3) = (xyz_var(imin+ix
     .       2            -1,jy,t125-1+t16)+xyz_var(imin+ix,jy,t125-1+t16)+     
     .       3            xyz_var(imin+ix-1,jy+1,t125-1+t16)+xyz_var(imin+ix,jy+
     .       4            1,t125-1+t16))*2.50000000000000e-001                  
     .                 pqz_avr_xyz(imin+ix-1,jy,t125+                           
     .       1            pqz_avr_xyz.DESCRIPT.RETVAL.DSC.L3) = (xyz_var(imin+ix
     .       2            -1,jy,t125+t16)+xyz_var(imin+ix,jy,t125+t16)+xyz_var( 
     .       3            imin+ix-1,jy+1,t125+t16)+xyz_var(imin+ix,jy+1,t125+t16
     .       4            ))*2.50000000000000e-001                              
     .                 pqz_avr_xyz(imin+ix-1,jy,t125+1+                         
     .       1            pqz_avr_xyz.DESCRIPT.RETVAL.DSC.L3) = (xyz_var(imin+ix
     .       2            -1,jy,t125+1+t16)+xyz_var(imin+ix,jy,t125+1+t16)+     
     .       3            xyz_var(imin+ix-1,jy+1,t125+1+t16)+xyz_var(imin+ix,jy+
     .       4            1,t125+1+t16))*2.50000000000000e-001                  
     .                 pqz_avr_xyz(imin+ix-1,jy,t125+2+                         
     .       1            pqz_avr_xyz.DESCRIPT.RETVAL.DSC.L3) = (xyz_var(imin+ix
     .       2            -1,jy,t125+2+t16)+xyz_var(imin+ix,jy,t125+2+t16)+     
     .       3            xyz_var(imin+ix-1,jy+1,t125+2+t16)+xyz_var(imin+ix,jy+
     .       4            1,t125+2+t16))*2.50000000000000e-001                  
     .              end do                                                      
     .           end do                                                         
     .        endif                                                             
   585        end do
   586  
   587        ! imax 格子上の値
   588        pqz_avr_xyz(imax,:,:) = 1.0d10
     .        if (pqz_avr_xyz.DESCRIPT.RETVAL.DSC.U3 + 1 -                      
     .       1   pqz_avr_xyz.DESCRIPT.RETVAL.DSC.L3 .gt. 0) then                
     .           J4 = and(pqz_avr_xyz.DESCRIPT.RETVAL.DSC.U3 + 1 -              
     .       1      pqz_avr_xyz.DESCRIPT.RETVAL.DSC.L3,3)                       
     .  !CDIR    NODEP                                                          
     .           do t132 = 1, J4                                                
     .  !CDIR       NODEP                                                       
     .              do t134 = 1, pqz_avr_xyz.DESCRIPT.RETVAL.DSC.U2 + 1 -       
     .       1         pqz_avr_xyz.DESCRIPT.RETVAL.DSC.L2                       
     .                 pqz_avr_xyz(imax,pqz_avr_xyz.DESCRIPT.RETVAL.DSC.L2+t134-
     .       1            1,t132-1+pqz_avr_xyz.DESCRIPT.RETVAL.DSC.L3) =        
     .       2            1.00000000000000e+010                                 
     .              end do                                                      
     .           end do                                                         
     .  !CDIR    NODEP                                                          
     .           do t132 = J4 + 1, pqz_avr_xyz.DESCRIPT.RETVAL.DSC.U3 + 1 -     
     .       1      pqz_avr_xyz.DESCRIPT.RETVAL.DSC.L3, 4                       
     .  !CDIR       NODEP                                                       
     .              do t134 = 1, pqz_avr_xyz.DESCRIPT.RETVAL.DSC.U2 + 1 -       
     .       1         pqz_avr_xyz.DESCRIPT.RETVAL.DSC.L2                       
     .                 pqz_avr_xyz(imax,pqz_avr_xyz.DESCRIPT.RETVAL.DSC.L2+t134-
     .       1            1,t132-1+pqz_avr_xyz.DESCRIPT.RETVAL.DSC.L3) =        
     .       2            1.00000000000000e+010                                 
     .                 pqz_avr_xyz(imax,pqz_avr_xyz.DESCRIPT.RETVAL.DSC.L2+t134-
     .       1            1,t132+pqz_avr_xyz.DESCRIPT.RETVAL.DSC.L3) =          
     .       2            1.00000000000000e+010                                 
     .                 pqz_avr_xyz(imax,pqz_avr_xyz.DESCRIPT.RETVAL.DSC.L2+t134-
     .       1            1,t132+1+pqz_avr_xyz.DESCRIPT.RETVAL.DSC.L3) =        
     .       2            1.00000000000000e+010                                 
     .                 pqz_avr_xyz(imax,pqz_avr_xyz.DESCRIPT.RETVAL.DSC.L2+t134-
     .       1            1,t132+2+pqz_avr_xyz.DESCRIPT.RETVAL.DSC.L3) =        
     .       2            1.00000000000000e+010                                 
     .              end do                                                      
     .           end do                                                         
     .        endif                                                             
   589        ! jmax 格子上の値
   590        pqz_avr_xyz(:,jmax,:) = 1.0d10
     .        if (pqz_avr_xyz.DESCRIPT.RETVAL.DSC.U3 + 1 -                      
     .       1   pqz_avr_xyz.DESCRIPT.RETVAL.DSC.L3 .gt. 0) then                
     .           J5 = and(pqz_avr_xyz.DESCRIPT.RETVAL.DSC.U3 + 1 -              
     .       1      pqz_avr_xyz.DESCRIPT.RETVAL.DSC.L3,3)                       
     .  !CDIR    NODEP                                                          
     .           do t138 = 1, J5                                                
     .  !CDIR       NODEP                                                       
     .              do t140 = 1, pqz_avr_xyz.DESCRIPT.RETVAL.DSC.U1 + 1 -       
     .       1         pqz_avr_xyz.DESCRIPT.RETVAL.DSC.L1                       
     .                 pqz_avr_xyz(pqz_avr_xyz.DESCRIPT.RETVAL.DSC.L1+t140-1,   
     .       1            jmax,t138-1+pqz_avr_xyz.DESCRIPT.RETVAL.DSC.L3) =     
     .       2            1.00000000000000e+010                                 
     .              end do                                                      
     .           end do                                                         
     .  !CDIR    NODEP                                                          
     .           do t138 = J5 + 1, pqz_avr_xyz.DESCRIPT.RETVAL.DSC.U3 + 1 -     
     .       1      pqz_avr_xyz.DESCRIPT.RETVAL.DSC.L3, 4                       
     .  !CDIR       NODEP                                                       
     .              do t140 = 1, pqz_avr_xyz.DESCRIPT.RETVAL.DSC.U1 + 1 -       
     .       1         pqz_avr_xyz.DESCRIPT.RETVAL.DSC.L1                       
     .                 pqz_avr_xyz(pqz_avr_xyz.DESCRIPT.RETVAL.DSC.L1+t140-1,   
     .       1            jmax,t138-1+pqz_avr_xyz.DESCRIPT.RETVAL.DSC.L3) =     
     .       2            1.00000000000000e+010                                 
     .                 pqz_avr_xyz(pqz_avr_xyz.DESCRIPT.RETVAL.DSC.L1+t140-1,   
     .       1            jmax,t138+pqz_avr_xyz.DESCRIPT.RETVAL.DSC.L3) =       
     .       2            1.00000000000000e+010                                 
     .                 pqz_avr_xyz(pqz_avr_xyz.DESCRIPT.RETVAL.DSC.L1+t140-1,   
     .       1            jmax,t138+1+pqz_avr_xyz.DESCRIPT.RETVAL.DSC.L3) =     
     .       2            1.00000000000000e+010                                 
     .                 pqz_avr_xyz(pqz_avr_xyz.DESCRIPT.RETVAL.DSC.L1+t140-1,   
     .       1            jmax,t138+2+pqz_avr_xyz.DESCRIPT.RETVAL.DSC.L3) =     
     .       2            1.00000000000000e+010                                 
     .              end do                                                      
     .           end do                                                         
     .        endif                                                             
   591      end if
   592  
   593    end function pqz_avr_xyz
   594    !--------------------------------------------------------------------
   595    function pyr_avr_xyz(xyz_Var)
   596      real(DP), intent(in) :: xyz_Var(imin:imax,jmin:jmax,kmin:kmax)     ! 入力
   597      real(DP)             :: pyr_avr_xyz(imin:imax,jmin:jmax,kmin:kmax) ! 出力
   598      integer              :: ix, kz                                     ! ループ添字
   599  
   600      do kz = kmin, kmax-1
   601        do ix = imin, imax-1
   602          pyr_avr_xyz(ix,:,kz) = &
   603            &  ( xyz_Var(ix,:,kz)   + xyz_Var(ix+1,:,kz) +  &
   604            &    xyz_Var(ix,:,kz+1) + xyz_Var(ix+1,:,kz+1) ) * 0.25d0
   605        end do
     .        if (jmax + 1 - jmin .gt. 0) then                                  
     .           J1 = and(jmax + 1 - jmin,3)                                    
     .  !CDIR    NODEP                                                          
     .           do t97 = 1, J1                                                 
     .  !CDIR       NODEP                                                       
     .              do ix = 1, imax - imin                                      
     .                 pyr_avr_xyz(imin+ix-1,t97-1+                             
     .       1            pyr_avr_xyz.DESCRIPT.RETVAL.DSC.L2,kz) = (xyz_var(imin
     .       2            +ix-1,t97-1+t14,kz)+xyz_var(imin+ix,t97-1+t14,kz)+    
     .       3            xyz_var(imin+ix-1,t97-1+t14,kz+1)+xyz_var(imin+ix,t97-
     .       4            1+t14,kz+1))*2.50000000000000e-001                    
     .              end do                                                      
     .           end do                                                         
     .  !CDIR    NODEP                                                          
     .           do t97 = J1 + 1, jmax + 1 - jmin, 4                            
     .  !CDIR       NODEP                                                       
     .              do ix = 1, imax - imin                                      
     .                 pyr_avr_xyz(imin+ix-1,t97-1+                             
     .       1            pyr_avr_xyz.DESCRIPT.RETVAL.DSC.L2,kz) = (xyz_var(imin
     .       2            +ix-1,t97-1+t14,kz)+xyz_var(imin+ix,t97-1+t14,kz)+    
     .       3            xyz_var(imin+ix-1,t97-1+t14,kz+1)+xyz_var(imin+ix,t97-
     .       4            1+t14,kz+1))*2.50000000000000e-001                    
     .                 pyr_avr_xyz(imin+ix-1,t97+                               
     .       1            pyr_avr_xyz.DESCRIPT.RETVAL.DSC.L2,kz) = (xyz_var(imin
     .       2            +ix-1,t97+t14,kz)+xyz_var(imin+ix,t97+t14,kz)+xyz_var(
     .       3            imin+ix-1,t97+t14,kz+1)+xyz_var(imin+ix,t97+t14,kz+1))
     .       4            *2.50000000000000e-001                                
     .                 pyr_avr_xyz(imin+ix-1,t97+1+                             
     .       1            pyr_avr_xyz.DESCRIPT.RETVAL.DSC.L2,kz) = (xyz_var(imin
     .       2            +ix-1,t97+1+t14,kz)+xyz_var(imin+ix,t97+1+t14,kz)+    
     .       3            xyz_var(imin+ix-1,t97+1+t14,kz+1)+xyz_var(imin+ix,t97+
     .       4            1+t14,kz+1))*2.50000000000000e-001                    
     .                 pyr_avr_xyz(imin+ix-1,t97+2+                             
     .       1            pyr_avr_xyz.DESCRIPT.RETVAL.DSC.L2,kz) = (xyz_var(imin
     .       2            +ix-1,t97+2+t14,kz)+xyz_var(imin+ix,t97+2+t14,kz)+    
     .       3            xyz_var(imin+ix-1,t97+2+t14,kz+1)+xyz_var(imin+ix,t97+
     .       4            2+t14,kz+1))*2.50000000000000e-001                    
     .              end do                                                      
     .           end do                                                         
     .        endif                                                             
   606      end do
   607  
   608      ! imax 格子上の値
   609      pyr_avr_xyz(imax,:,:) = 1.0d10
     .        if (pyr_avr_xyz.DESCRIPT.RETVAL.DSC.U3 + 1 -                      
     .       1   pyr_avr_xyz.DESCRIPT.RETVAL.DSC.L3 .gt. 0) then                
     .           J2 = and(pyr_avr_xyz.DESCRIPT.RETVAL.DSC.U3 + 1 -              
     .       1      pyr_avr_xyz.DESCRIPT.RETVAL.DSC.L3,3)                       
     .  !CDIR    NODEP                                                          
     .           do t104 = 1, J2                                                
     .  !CDIR       NODEP                                                       
     .              do t106 = 1, pyr_avr_xyz.DESCRIPT.RETVAL.DSC.U2 + 1 -       
     .       1         pyr_avr_xyz.DESCRIPT.RETVAL.DSC.L2                       
     .                 pyr_avr_xyz(imax,pyr_avr_xyz.DESCRIPT.RETVAL.DSC.L2+t106-
     .       1            1,t104-1+pyr_avr_xyz.DESCRIPT.RETVAL.DSC.L3) =        
     .       2            1.00000000000000e+010                                 
     .              end do                                                      
     .           end do                                                         
     .  !CDIR    NODEP                                                          
     .           do t104 = J2 + 1, pyr_avr_xyz.DESCRIPT.RETVAL.DSC.U3 + 1 -     
     .       1      pyr_avr_xyz.DESCRIPT.RETVAL.DSC.L3, 4                       
     .  !CDIR       NODEP                                                       
     .              do t106 = 1, pyr_avr_xyz.DESCRIPT.RETVAL.DSC.U2 + 1 -       
     .       1         pyr_avr_xyz.DESCRIPT.RETVAL.DSC.L2                       
     .                 pyr_avr_xyz(imax,pyr_avr_xyz.DESCRIPT.RETVAL.DSC.L2+t106-
     .       1            1,t104-1+pyr_avr_xyz.DESCRIPT.RETVAL.DSC.L3) =        
     .       2            1.00000000000000e+010                                 
     .                 pyr_avr_xyz(imax,pyr_avr_xyz.DESCRIPT.RETVAL.DSC.L2+t106-
     .       1            1,t104+pyr_avr_xyz.DESCRIPT.RETVAL.DSC.L3) =          
     .       2            1.00000000000000e+010                                 
     .                 pyr_avr_xyz(imax,pyr_avr_xyz.DESCRIPT.RETVAL.DSC.L2+t106-
     .       1            1,t104+1+pyr_avr_xyz.DESCRIPT.RETVAL.DSC.L3) =        
     .       2            1.00000000000000e+010                                 
     .                 pyr_avr_xyz(imax,pyr_avr_xyz.DESCRIPT.RETVAL.DSC.L2+t106-
     .       1            1,t104+2+pyr_avr_xyz.DESCRIPT.RETVAL.DSC.L3) =        
     .       2            1.00000000000000e+010                                 
     .              end do                                                      
     .           end do                                                         
     .        endif                                                             
   610      ! kmax 格子上の値
   611      pyr_avr_xyz(:,:,kmax) = 1.0d10
     .        if (pyr_avr_xyz.DESCRIPT.RETVAL.DSC.U2 + 1 -                      
     .       1   pyr_avr_xyz.DESCRIPT.RETVAL.DSC.L2 .gt. 0) then                
     .           J3 = and(pyr_avr_xyz.DESCRIPT.RETVAL.DSC.U2 + 1 -              
     .       1      pyr_avr_xyz.DESCRIPT.RETVAL.DSC.L2,3)                       
     .  !CDIR    NODEP                                                          
     .           do t110 = 1, J3                                                
     .  !CDIR       NODEP                                                       
     .              do t112 = 1, pyr_avr_xyz.DESCRIPT.RETVAL.DSC.U1 + 1 -       
     .       1         pyr_avr_xyz.DESCRIPT.RETVAL.DSC.L1                       
     .                 pyr_avr_xyz(pyr_avr_xyz.DESCRIPT.RETVAL.DSC.L1+t112-1,   
     .       1            t110-1+pyr_avr_xyz.DESCRIPT.RETVAL.DSC.L2,kmax) =     
     .       2            1.00000000000000e+010                                 
     .              end do                                                      
     .           end do                                                         
     .  !CDIR    NODEP                                                          
     .           do t110 = J3 + 1, pyr_avr_xyz.DESCRIPT.RETVAL.DSC.U2 + 1 -     
     .       1      pyr_avr_xyz.DESCRIPT.RETVAL.DSC.L2, 4                       
     .  !CDIR       NODEP                                                       
     .              do t112 = 1, pyr_avr_xyz.DESCRIPT.RETVAL.DSC.U1 + 1 -       
     .       1         pyr_avr_xyz.DESCRIPT.RETVAL.DSC.L1                       
     .                 pyr_avr_xyz(pyr_avr_xyz.DESCRIPT.RETVAL.DSC.L1+t112-1,   
     .       1            t110-1+pyr_avr_xyz.DESCRIPT.RETVAL.DSC.L2,kmax) =     
     .       2            1.00000000000000e+010                                 
     .                 pyr_avr_xyz(pyr_avr_xyz.DESCRIPT.RETVAL.DSC.L1+t112-1,   
     .       1            t110+pyr_avr_xyz.DESCRIPT.RETVAL.DSC.L2,kmax) =       
     .       2            1.00000000000000e+010                                 
     .                 pyr_avr_xyz(pyr_avr_xyz.DESCRIPT.RETVAL.DSC.L1+t112-1,   
     .       1            t110+1+pyr_avr_xyz.DESCRIPT.RETVAL.DSC.L2,kmax) =     
     .       2            1.00000000000000e+010                                 
     .                 pyr_avr_xyz(pyr_avr_xyz.DESCRIPT.RETVAL.DSC.L1+t112-1,   
     .       1            t110+2+pyr_avr_xyz.DESCRIPT.RETVAL.DSC.L2,kmax) =     
     .       2            1.00000000000000e+010                                 
     .              end do                                                      
     .           end do                                                         
     .        endif                                                             
   612  
   613  
   614    end function pyr_avr_xyz
   615    !--------------------------------------------------------------------
   616    function xqr_avr_xyz(xyz_Var)
   617      real(DP), intent(in) :: xyz_Var(imin:imax,jmin:jmax,kmin:kmax)       ! 入力
   618      real(DP)             :: xqr_avr_xyz(imin:imax,jmin:jmax,kmin:kmax)   ! 出力
   619      integer              :: jy, kz                                       ! ループ添字
   620  
   621      if (jmin == jmax) then
   622        ! xr_avr_xz と同じになる
   623        do kz = kmin, kmax-1
   624          xqr_avr_xyz(:,:,kz) = &
   625            &  ( xyz_Var(:,:,kz) + xyz_Var(:,:,kz+1) ) * 0.5d0
   626        end do
     .  !CDIR NODEP                                                             
     .  !CDIR NOASSUME                                                          
     .        do kz = 1, (kmax - kmin)*(jmax + 1 - jmin)*(imax + 1 - imin)      
     .           xqr_avr_xyz(xqr_avr_xyz.DESCRIPT.RETVAL.DSC.L1+kz-1,           
     .       1      xqr_avr_xyz.DESCRIPT.RETVAL.DSC.L2,kmin) = (xyz_var(t12+kz-1
     .       2      ,t14,kmin)+xyz_var(t12+kz-1,t14,1+kmin))*                   
     .       3      5.00000000000000e-001                                       
     .        end do                                                            
   627  
   628        ! kmax 格子上の値
   629        xqr_avr_xyz(:,:,kmax) = 1.0d10
     .        if (xqr_avr_xyz.DESCRIPT.RETVAL.DSC.U2 + 1 -                      
     .       1   xqr_avr_xyz.DESCRIPT.RETVAL.DSC.L2 .gt. 0) then                
     .           J1 = and(xqr_avr_xyz.DESCRIPT.RETVAL.DSC.U2 + 1 -              
     .       1      xqr_avr_xyz.DESCRIPT.RETVAL.DSC.L2,3)                       
     .  !CDIR    NODEP                                                          
     .           do t154 = 1, J1                                                
     .  !CDIR       NODEP                                                       
     .              do t156 = 1, xqr_avr_xyz.DESCRIPT.RETVAL.DSC.U1 -           
     .       1         xqr_avr_xyz.DESCRIPT.RETVAL.DSC.L1 + 2 - min0(1,         
     .       2         xqr_avr_xyz.DESCRIPT.RETVAL.DSC.U1 -                     
     .       3         xqr_avr_xyz.DESCRIPT.RETVAL.DSC.L1 + 1)                  
     .                 xqr_avr_xyz(xqr_avr_xyz.DESCRIPT.RETVAL.DSC.L1+t156-1,   
     .       1            t154-1+xqr_avr_xyz.DESCRIPT.RETVAL.DSC.L2,kmax) =     
     .       2            1.00000000000000e+010                                 
     .              end do                                                      
     .           end do                                                         
     .  !CDIR    NODEP                                                          
     .           do t154 = J1 + 1, xqr_avr_xyz.DESCRIPT.RETVAL.DSC.U2 + 1 -     
     .       1      xqr_avr_xyz.DESCRIPT.RETVAL.DSC.L2, 4                       
     .  !CDIR       NODEP                                                       
     .              do t156 = 1, xqr_avr_xyz.DESCRIPT.RETVAL.DSC.U1 -           
     .       1         xqr_avr_xyz.DESCRIPT.RETVAL.DSC.L1 + 2 - min0(1,         
     .       2         xqr_avr_xyz.DESCRIPT.RETVAL.DSC.U1 -                     
     .       3         xqr_avr_xyz.DESCRIPT.RETVAL.DSC.L1 + 1)                  
     .                 xqr_avr_xyz(xqr_avr_xyz.DESCRIPT.RETVAL.DSC.L1+t156-1,   
     .       1            t154-1+xqr_avr_xyz.DESCRIPT.RETVAL.DSC.L2,kmax) =     
     .       2            1.00000000000000e+010                                 
     .                 xqr_avr_xyz(xqr_avr_xyz.DESCRIPT.RETVAL.DSC.L1+t156-1,   
     .       1            t154+xqr_avr_xyz.DESCRIPT.RETVAL.DSC.L2,kmax) =       
     .       2            1.00000000000000e+010                                 
     .                 xqr_avr_xyz(xqr_avr_xyz.DESCRIPT.RETVAL.DSC.L1+t156-1,   
     .       1            t154+1+xqr_avr_xyz.DESCRIPT.RETVAL.DSC.L2,kmax) =     
     .       2            1.00000000000000e+010                                 
     .                 xqr_avr_xyz(xqr_avr_xyz.DESCRIPT.RETVAL.DSC.L1+t156-1,   
     .       1            t154+2+xqr_avr_xyz.DESCRIPT.RETVAL.DSC.L2,kmax) =     
     .       2            1.00000000000000e+010                                 
     .              end do                                                      
     .           end do                                                         
     .        endif                                                             
     .        go to 10021                                                       
   630  
   631      else
   632        do kz = kmin, kmax-1
   633          do jy = jmin, jmax-1
   634            xqr_avr_xyz(:,jy,kz) = &
   635              &  ( xyz_Var(:,jy,kz)   + xyz_Var(:,jy+1,kz) +  &
   636              &    xyz_Var(:,jy,kz+1) + xyz_Var(:,jy+1,kz+1) ) * 0.25d0
   637          end do
     .  !CDIR NODEP                                                             
     .  !CDIR NOASSUME                                                          
     .        do jy = 1, (jmax - jmin)*(imax + 1 - imin)                        
     .           xqr_avr_xyz(xqr_avr_xyz.DESCRIPT.RETVAL.DSC.L1+jy-1,jmin,kz) = 
     .       1      (xyz_var(t12+jy-1,jmin,kz)+xyz_var(t12+jy-1,1+jmin,kz)+     
     .       2      xyz_var(t12+jy-1,jmin,kz+1)+xyz_var(t12+jy-1,1+jmin,kz+1))* 
     .       3      2.50000000000000e-001                                       
     .        end do                                                            
   638        end do
   639  
   640        ! jmax 格子上の値
   641        xqr_avr_xyz(:,jmax,:) = 1.0d10
     .        if (xqr_avr_xyz.DESCRIPT.RETVAL.DSC.U3 + 1 -                      
     .       1   xqr_avr_xyz.DESCRIPT.RETVAL.DSC.L3 .gt. 0) then                
     .           J2 = and(xqr_avr_xyz.DESCRIPT.RETVAL.DSC.U3 + 1 -              
     .       1      xqr_avr_xyz.DESCRIPT.RETVAL.DSC.L3,3)                       
     .  !CDIR    NODEP                                                          
     .           do t132 = 1, J2                                                
     .  !CDIR       NODEP                                                       
     .              do t134 = 1, xqr_avr_xyz.DESCRIPT.RETVAL.DSC.U1 + 1 -       
     .       1         xqr_avr_xyz.DESCRIPT.RETVAL.DSC.L1                       
     .                 xqr_avr_xyz(xqr_avr_xyz.DESCRIPT.RETVAL.DSC.L1+t134-1,   
     .       1            jmax,t132-1+xqr_avr_xyz.DESCRIPT.RETVAL.DSC.L3) =     
     .       2            1.00000000000000e+010                                 
     .              end do                                                      
     .           end do                                                         
     .  !CDIR    NODEP                                                          
     .           do t132 = J2 + 1, xqr_avr_xyz.DESCRIPT.RETVAL.DSC.U3 + 1 -     
     .       1      xqr_avr_xyz.DESCRIPT.RETVAL.DSC.L3, 4                       
     .  !CDIR       NODEP                                                       
     .              do t134 = 1, xqr_avr_xyz.DESCRIPT.RETVAL.DSC.U1 + 1 -       
     .       1         xqr_avr_xyz.DESCRIPT.RETVAL.DSC.L1                       
     .                 xqr_avr_xyz(xqr_avr_xyz.DESCRIPT.RETVAL.DSC.L1+t134-1,   
     .       1            jmax,t132-1+xqr_avr_xyz.DESCRIPT.RETVAL.DSC.L3) =     
     .       2            1.00000000000000e+010                                 
     .                 xqr_avr_xyz(xqr_avr_xyz.DESCRIPT.RETVAL.DSC.L1+t134-1,   
     .       1            jmax,t132+xqr_avr_xyz.DESCRIPT.RETVAL.DSC.L3) =       
     .       2            1.00000000000000e+010                                 
     .                 xqr_avr_xyz(xqr_avr_xyz.DESCRIPT.RETVAL.DSC.L1+t134-1,   
     .       1            jmax,t132+1+xqr_avr_xyz.DESCRIPT.RETVAL.DSC.L3) =     
     .       2            1.00000000000000e+010                                 
     .                 xqr_avr_xyz(xqr_avr_xyz.DESCRIPT.RETVAL.DSC.L1+t134-1,   
     .       1            jmax,t132+2+xqr_avr_xyz.DESCRIPT.RETVAL.DSC.L3) =     
     .       2            1.00000000000000e+010                                 
     .              end do                                                      
     .           end do                                                         
     .        endif                                                             
   642        ! kmax 格子上の値
   643        xqr_avr_xyz(:,:,kmax) = 1.0d10
     .        if (xqr_avr_xyz.DESCRIPT.RETVAL.DSC.U2 + 1 -                      
     .       1   xqr_avr_xyz.DESCRIPT.RETVAL.DSC.L2 .gt. 0) then                
     .           J3 = and(xqr_avr_xyz.DESCRIPT.RETVAL.DSC.U2 + 1 -              
     .       1      xqr_avr_xyz.DESCRIPT.RETVAL.DSC.L2,3)                       
     .  !CDIR    NODEP                                                          
     .           do t138 = 1, J3                                                
     .  !CDIR       NODEP                                                       
     .              do t140 = 1, xqr_avr_xyz.DESCRIPT.RETVAL.DSC.U1 + 1 -       
     .       1         xqr_avr_xyz.DESCRIPT.RETVAL.DSC.L1                       
     .                 xqr_avr_xyz(xqr_avr_xyz.DESCRIPT.RETVAL.DSC.L1+t140-1,   
     .       1            t138-1+xqr_avr_xyz.DESCRIPT.RETVAL.DSC.L2,kmax) =     
     .       2            1.00000000000000e+010                                 
     .              end do                                                      
     .           end do                                                         
     .  !CDIR    NODEP                                                          
     .           do t138 = J3 + 1, xqr_avr_xyz.DESCRIPT.RETVAL.DSC.U2 + 1 -     
     .       1      xqr_avr_xyz.DESCRIPT.RETVAL.DSC.L2, 4                       
     .  !CDIR       NODEP                                                       
     .              do t140 = 1, xqr_avr_xyz.DESCRIPT.RETVAL.DSC.U1 + 1 -       
     .       1         xqr_avr_xyz.DESCRIPT.RETVAL.DSC.L1                       
     .                 xqr_avr_xyz(xqr_avr_xyz.DESCRIPT.RETVAL.DSC.L1+t140-1,   
     .       1            t138-1+xqr_avr_xyz.DESCRIPT.RETVAL.DSC.L2,kmax) =     
     .       2            1.00000000000000e+010                                 
     .                 xqr_avr_xyz(xqr_avr_xyz.DESCRIPT.RETVAL.DSC.L1+t140-1,   
     .       1            t138+xqr_avr_xyz.DESCRIPT.RETVAL.DSC.L2,kmax) =       
     .       2            1.00000000000000e+010                                 
     .                 xqr_avr_xyz(xqr_avr_xyz.DESCRIPT.RETVAL.DSC.L1+t140-1,   
     .       1            t138+1+xqr_avr_xyz.DESCRIPT.RETVAL.DSC.L2,kmax) =     
     .       2            1.00000000000000e+010                                 
     .                 xqr_avr_xyz(xqr_avr_xyz.DESCRIPT.RETVAL.DSC.L1+t140-1,   
     .       1            t138+2+xqr_avr_xyz.DESCRIPT.RETVAL.DSC.L2,kmax) =     
     .       2            1.00000000000000e+010                                 
     .              end do                                                      
     .           end do                                                         
     .        endif                                                             
   644  
   645      end if
   646  
   647    end function xqr_avr_xyz
   648    !--------------------------------------------------------------------
   649    function xyz_avr_pqz(pqz_Var)
   650      real(DP), intent(in) :: pqz_Var(imin:imax,jmin:jmax,kmin:kmax)     ! 入力
   651      real(DP)             :: xyz_avr_pqz(imin:imax,jmin:jmax,kmin:kmax) ! 出力
   652      integer              :: ix, jy                                     ! ループ添字
   653  
   654      if (jmin == jmax) then
   655        ! xz_avr_pz と同じになる
   656        do ix = imin+1, imax
   657          xyz_avr_pqz(ix,:,:) = &
   658            &  ( pqz_Var(ix-1,:,:) + pqz_Var(ix,:,:) ) * 0.5d0
   659        end do
     .  !CDIR NODEP                                                             
     .        do t141 = 1, kmax + 1 - kmin                                      
     .           if (jmax + 1 - jmin .gt. 0) then                               
     .              J1 = and(jmax + 1 - jmin,3)                                 
     .  !CDIR       NODEP                                                       
     .              do t143 = 1, J1                                             
     .  !CDIR          NODEP                                                    
     .                 do ix = 1, imax - imin                                   
     .                    xyz_avr_pqz(imin+ix,t143-1+                           
     .       1               xyz_avr_pqz.DESCRIPT.RETVAL.DSC.L2,t141-1+         
     .       2               xyz_avr_pqz.DESCRIPT.RETVAL.DSC.L3) = (pqz_var(imin
     .       3               +ix-1,t143-1+t14,t141-1+t16)+pqz_var(imin+ix,t143-1
     .       4               +t14,t141-1+t16))*5.00000000000000e-001            
     .                 end do                                                   
     .              end do                                                      
     .  !CDIR       NODEP                                                       
     .              do t143 = J1 + 1, jmax + 1 - jmin, 4                        
     .  !CDIR          NODEP                                                    
     .                 do ix = 1, imax - imin                                   
     .                    xyz_avr_pqz(imin+ix,t143-1+                           
     .       1               xyz_avr_pqz.DESCRIPT.RETVAL.DSC.L2,t141-1+         
     .       2               xyz_avr_pqz.DESCRIPT.RETVAL.DSC.L3) = (pqz_var(imin
     .       3               +ix-1,t143-1+t14,t141-1+t16)+pqz_var(imin+ix,t143-1
     .       4               +t14,t141-1+t16))*5.00000000000000e-001            
     .                    xyz_avr_pqz(imin+ix,t143+                             
     .       1               xyz_avr_pqz.DESCRIPT.RETVAL.DSC.L2,t141-1+         
     .       2               xyz_avr_pqz.DESCRIPT.RETVAL.DSC.L3) = (pqz_var(imin
     .       3               +ix-1,t143+t14,t141-1+t16)+pqz_var(imin+ix,t143+t14
     .       4               ,t141-1+t16))*5.00000000000000e-001                
     .                    xyz_avr_pqz(imin+ix,t143+1+                           
     .       1               xyz_avr_pqz.DESCRIPT.RETVAL.DSC.L2,t141-1+         
     .       2               xyz_avr_pqz.DESCRIPT.RETVAL.DSC.L3) = (pqz_var(imin
     .       3               +ix-1,t143+1+t14,t141-1+t16)+pqz_var(imin+ix,t143+1
     .       4               +t14,t141-1+t16))*5.00000000000000e-001            
     .                    xyz_avr_pqz(imin+ix,t143+2+                           
     .       1               xyz_avr_pqz.DESCRIPT.RETVAL.DSC.L2,t141-1+         
     .       2               xyz_avr_pqz.DESCRIPT.RETVAL.DSC.L3) = (pqz_var(imin
     .       3               +ix-1,t143+2+t14,t141-1+t16)+pqz_var(imin+ix,t143+2
     .       4               +t14,t141-1+t16))*5.00000000000000e-001            
     .                 end do                                                   
     .              end do                                                      
     .           endif                                                          
     .        end do                                                            
   660  
   661        ! imin 格子上の値
   662        xyz_avr_pqz(imin,:,:) = 1.0d10
     .        if (xyz_avr_pqz.DESCRIPT.RETVAL.DSC.U3 + 1 -                      
     .       1   xyz_avr_pqz.DESCRIPT.RETVAL.DSC.L3 .gt. 0) then                
     .           J2 = and(xyz_avr_pqz.DESCRIPT.RETVAL.DSC.U3 + 1 -              
     .       1      xyz_avr_pqz.DESCRIPT.RETVAL.DSC.L3,3)                       
     .  !CDIR    NODEP                                                          
     .           do t151 = 1, J2                                                
     .  !CDIR       NODEP                                                       
     .              do t153 = 1, xyz_avr_pqz.DESCRIPT.RETVAL.DSC.U2 -           
     .       1         xyz_avr_pqz.DESCRIPT.RETVAL.DSC.L2 + 2 - min0(1,         
     .       2         xyz_avr_pqz.DESCRIPT.RETVAL.DSC.U2 -                     
     .       3         xyz_avr_pqz.DESCRIPT.RETVAL.DSC.L2 + 1)                  
     .                 xyz_avr_pqz(imin,xyz_avr_pqz.DESCRIPT.RETVAL.DSC.L2+t153-
     .       1            1,t151-1+xyz_avr_pqz.DESCRIPT.RETVAL.DSC.L3) =        
     .       2            1.00000000000000e+010                                 
     .              end do                                                      
     .           end do                                                         
     .  !CDIR    NODEP                                                          
     .           do t151 = J2 + 1, xyz_avr_pqz.DESCRIPT.RETVAL.DSC.U3 + 1 -     
     .       1      xyz_avr_pqz.DESCRIPT.RETVAL.DSC.L3, 4                       
     .  !CDIR       NODEP                                                       
     .              do t153 = 1, xyz_avr_pqz.DESCRIPT.RETVAL.DSC.U2 -           
     .       1         xyz_avr_pqz.DESCRIPT.RETVAL.DSC.L2 + 2 - min0(1,         
     .       2         xyz_avr_pqz.DESCRIPT.RETVAL.DSC.U2 -                     
     .       3         xyz_avr_pqz.DESCRIPT.RETVAL.DSC.L2 + 1)                  
     .                 xyz_avr_pqz(imin,xyz_avr_pqz.DESCRIPT.RETVAL.DSC.L2+t153-
     .       1            1,t151-1+xyz_avr_pqz.DESCRIPT.RETVAL.DSC.L3) =        
     .       2            1.00000000000000e+010                                 
     .                 xyz_avr_pqz(imin,xyz_avr_pqz.DESCRIPT.RETVAL.DSC.L2+t153-
     .       1            1,t151+xyz_avr_pqz.DESCRIPT.RETVAL.DSC.L3) =          
     .       2            1.00000000000000e+010                                 
     .                 xyz_avr_pqz(imin,xyz_avr_pqz.DESCRIPT.RETVAL.DSC.L2+t153-
     .       1            1,t151+1+xyz_avr_pqz.DESCRIPT.RETVAL.DSC.L3) =        
     .       2            1.00000000000000e+010                                 
     .                 xyz_avr_pqz(imin,xyz_avr_pqz.DESCRIPT.RETVAL.DSC.L2+t153-
     .       1            1,t151+2+xyz_avr_pqz.DESCRIPT.RETVAL.DSC.L3) =        
     .       2            1.00000000000000e+010                                 
     .              end do                                                      
     .           end do                                                         
     .        endif                                                             
     .        go to 10021                                                       
   663  
   664      else
   665        do jy = jmin+1, jmax
   666          do ix = imin+1, imax
   667            xyz_avr_pqz(ix,jy,:) = &
   668              &  ( pqz_Var(ix-1,jy-1,:) + pqz_Var(ix,jy-1,:)  &
   669              &    + pqz_Var(ix-1,jy,:)   + pqz_Var(ix,jy,:) ) * 0.25d0
   670          end do
     .        if (kmax + 1 - kmin .gt. 0) then                                  
     .           J3 = and(kmax + 1 - kmin,3)                                    
     .  !CDIR    NODEP                                                          
     .           do t122 = 1, J3                                                
     .  !CDIR       NODEP                                                       
     .              do ix = 1, imax - imin                                      
     .                 xyz_avr_pqz(imin+ix,jy,t122-1+                           
     .       1            xyz_avr_pqz.DESCRIPT.RETVAL.DSC.L3) = (pqz_var(imin+ix
     .       2            -1,jy-1,t122-1+t16)+pqz_var(imin+ix,jy-1,t122-1+t16)+ 
     .       3            pqz_var(imin+ix-1,jy,t122-1+t16)+pqz_var(imin+ix,jy,  
     .       4            t122-1+t16))*2.50000000000000e-001                    
     .              end do                                                      
     .           end do                                                         
     .  !CDIR    NODEP                                                          
     .           do t122 = J3 + 1, kmax + 1 - kmin, 4                           
     .  !CDIR       NODEP                                                       
     .              do ix = 1, imax - imin                                      
     .                 xyz_avr_pqz(imin+ix,jy,t122-1+                           
     .       1            xyz_avr_pqz.DESCRIPT.RETVAL.DSC.L3) = (pqz_var(imin+ix
     .       2            -1,jy-1,t122-1+t16)+pqz_var(imin+ix,jy-1,t122-1+t16)+ 
     .       3            pqz_var(imin+ix-1,jy,t122-1+t16)+pqz_var(imin+ix,jy,  
     .       4            t122-1+t16))*2.50000000000000e-001                    
     .                 xyz_avr_pqz(imin+ix,jy,t122+                             
     .       1            xyz_avr_pqz.DESCRIPT.RETVAL.DSC.L3) = (pqz_var(imin+ix
     .       2            -1,jy-1,t122+t16)+pqz_var(imin+ix,jy-1,t122+t16)+     
     .       3            pqz_var(imin+ix-1,jy,t122+t16)+pqz_var(imin+ix,jy,t122
     .       4            +t16))*2.50000000000000e-001                          
     .                 xyz_avr_pqz(imin+ix,jy,t122+1+                           
     .       1            xyz_avr_pqz.DESCRIPT.RETVAL.DSC.L3) = (pqz_var(imin+ix
     .       2            -1,jy-1,t122+1+t16)+pqz_var(imin+ix,jy-1,t122+1+t16)+ 
     .       3            pqz_var(imin+ix-1,jy,t122+1+t16)+pqz_var(imin+ix,jy,  
     .       4            t122+1+t16))*2.50000000000000e-001                    
     .                 xyz_avr_pqz(imin+ix,jy,t122+2+                           
     .       1            xyz_avr_pqz.DESCRIPT.RETVAL.DSC.L3) = (pqz_var(imin+ix
     .       2            -1,jy-1,t122+2+t16)+pqz_var(imin+ix,jy-1,t122+2+t16)+ 
     .       3            pqz_var(imin+ix-1,jy,t122+2+t16)+pqz_var(imin+ix,jy,  
     .       4            t122+2+t16))*2.50000000000000e-001                    
     .              end do                                                      
     .           end do                                                         
     .        endif                                                             
   671        end do
   672  
   673        ! imin 格子上の値
   674        xyz_avr_pqz(imin,:,:) = 1.0d10
     .        if (xyz_avr_pqz.DESCRIPT.RETVAL.DSC.U3 + 1 -                      
     .       1   xyz_avr_pqz.DESCRIPT.RETVAL.DSC.L3 .gt. 0) then                
     .           J4 = and(xyz_avr_pqz.DESCRIPT.RETVAL.DSC.U3 + 1 -              
     .       1      xyz_avr_pqz.DESCRIPT.RETVAL.DSC.L3,3)                       
     .  !CDIR    NODEP                                                          
     .           do t129 = 1, J4                                                
     .  !CDIR       NODEP                                                       
     .              do t131 = 1, xyz_avr_pqz.DESCRIPT.RETVAL.DSC.U2 + 1 -       
     .       1         xyz_avr_pqz.DESCRIPT.RETVAL.DSC.L2                       
     .                 xyz_avr_pqz(imin,xyz_avr_pqz.DESCRIPT.RETVAL.DSC.L2+t131-
     .       1            1,t129-1+xyz_avr_pqz.DESCRIPT.RETVAL.DSC.L3) =        
     .       2            1.00000000000000e+010                                 
     .              end do                                                      
     .           end do                                                         
     .  !CDIR    NODEP                                                          
     .           do t129 = J4 + 1, xyz_avr_pqz.DESCRIPT.RETVAL.DSC.U3 + 1 -     
     .       1      xyz_avr_pqz.DESCRIPT.RETVAL.DSC.L3, 4                       
     .  !CDIR       NODEP                                                       
     .              do t131 = 1, xyz_avr_pqz.DESCRIPT.RETVAL.DSC.U2 + 1 -       
     .       1         xyz_avr_pqz.DESCRIPT.RETVAL.DSC.L2                       
     .                 xyz_avr_pqz(imin,xyz_avr_pqz.DESCRIPT.RETVAL.DSC.L2+t131-
     .       1            1,t129-1+xyz_avr_pqz.DESCRIPT.RETVAL.DSC.L3) =        
     .       2            1.00000000000000e+010                                 
     .                 xyz_avr_pqz(imin,xyz_avr_pqz.DESCRIPT.RETVAL.DSC.L2+t131-
     .       1            1,t129+xyz_avr_pqz.DESCRIPT.RETVAL.DSC.L3) =          
     .       2            1.00000000000000e+010                                 
     .                 xyz_avr_pqz(imin,xyz_avr_pqz.DESCRIPT.RETVAL.DSC.L2+t131-
     .       1            1,t129+1+xyz_avr_pqz.DESCRIPT.RETVAL.DSC.L3) =        
     .       2            1.00000000000000e+010                                 
     .                 xyz_avr_pqz(imin,xyz_avr_pqz.DESCRIPT.RETVAL.DSC.L2+t131-
     .       1            1,t129+2+xyz_avr_pqz.DESCRIPT.RETVAL.DSC.L3) =        
     .       2            1.00000000000000e+010                                 
     .              end do                                                      
     .           end do                                                         
     .        endif                                                             
   675        ! jmin 格子上の値
   676        xyz_avr_pqz(:,jmin,:) = 1.0d10
     .        if (xyz_avr_pqz.DESCRIPT.RETVAL.DSC.U3 + 1 -                      
     .       1   xyz_avr_pqz.DESCRIPT.RETVAL.DSC.L3 .gt. 0) then                
     .           J5 = and(xyz_avr_pqz.DESCRIPT.RETVAL.DSC.U3 + 1 -              
     .       1      xyz_avr_pqz.DESCRIPT.RETVAL.DSC.L3,3)                       
     .  !CDIR    NODEP                                                          
     .           do t135 = 1, J5                                                
     .  !CDIR       NODEP                                                       
     .              do t137 = 1, xyz_avr_pqz.DESCRIPT.RETVAL.DSC.U1 + 1 -       
     .       1         xyz_avr_pqz.DESCRIPT.RETVAL.DSC.L1                       
     .                 xyz_avr_pqz(xyz_avr_pqz.DESCRIPT.RETVAL.DSC.L1+t137-1,   
     .       1            jmin,t135-1+xyz_avr_pqz.DESCRIPT.RETVAL.DSC.L3) =     
     .       2            1.00000000000000e+010                                 
     .              end do                                                      
     .           end do                                                         
     .  !CDIR    NODEP                                                          
     .           do t135 = J5 + 1, xyz_avr_pqz.DESCRIPT.RETVAL.DSC.U3 + 1 -     
     .       1      xyz_avr_pqz.DESCRIPT.RETVAL.DSC.L3, 4                       
     .  !CDIR       NODEP                                                       
     .              do t137 = 1, xyz_avr_pqz.DESCRIPT.RETVAL.DSC.U1 + 1 -       
     .       1         xyz_avr_pqz.DESCRIPT.RETVAL.DSC.L1                       
     .                 xyz_avr_pqz(xyz_avr_pqz.DESCRIPT.RETVAL.DSC.L1+t137-1,   
     .       1            jmin,t135-1+xyz_avr_pqz.DESCRIPT.RETVAL.DSC.L3) =     
     .       2            1.00000000000000e+010                                 
     .                 xyz_avr_pqz(xyz_avr_pqz.DESCRIPT.RETVAL.DSC.L1+t137-1,   
     .       1            jmin,t135+xyz_avr_pqz.DESCRIPT.RETVAL.DSC.L3) =       
     .       2            1.00000000000000e+010                                 
     .                 xyz_avr_pqz(xyz_avr_pqz.DESCRIPT.RETVAL.DSC.L1+t137-1,   
     .       1            jmin,t135+1+xyz_avr_pqz.DESCRIPT.RETVAL.DSC.L3) =     
     .       2            1.00000000000000e+010                                 
     .                 xyz_avr_pqz(xyz_avr_pqz.DESCRIPT.RETVAL.DSC.L1+t137-1,   
     .       1            jmin,t135+2+xyz_avr_pqz.DESCRIPT.RETVAL.DSC.L3) =     
     .       2            1.00000000000000e+010                                 
     .              end do                                                      
     .           end do                                                         
     .        endif                                                             
   677      end if
   678  
   679    end function xyz_avr_pqz
   680    !--------------------------------------------------------------------
   681    function xyz_avr_pyr(pyr_Var)
   682      real(DP), intent(in) :: pyr_Var(imin:imax,jmin:jmax,kmin:kmax)     ! 入力
   683      real(DP)             :: xyz_avr_pyr(imin:imax,jmin:jmax,kmin:kmax) ! 出力
   684      integer              :: ix, kz                                     ! ループ添字
   685  
   686      do kz = kmin+1, kmax
   687        do ix = imin+1, imax
   688          xyz_avr_pyr(ix,:,kz) = &
   689            &  ( pyr_Var(ix-1,:,kz-1) + pyr_Var(ix,:,kz-1) +  &
   690            &    pyr_Var(ix-1,:,kz)   + pyr_Var(ix,:,kz)     ) * 0.25d0
   691        end do
     .        if (jmax + 1 - jmin .gt. 0) then                                  
     .           J1 = and(jmax + 1 - jmin,3)                                    
     .  !CDIR    NODEP                                                          
     .           do t95 = 1, J1                                                 
     .  !CDIR       NODEP                                                       
     .              do ix = 1, imax - imin                                      
     .                 xyz_avr_pyr(imin+ix,t95-1+                               
     .       1            xyz_avr_pyr.DESCRIPT.RETVAL.DSC.L2,kz) = (pyr_var(imin
     .       2            +ix-1,t95-1+t14,kz-1)+pyr_var(imin+ix,t95-1+t14,kz-1)+
     .       3            pyr_var(imin+ix-1,t95-1+t14,kz)+pyr_var(imin+ix,t95-1+
     .       4            t14,kz))*2.50000000000000e-001                        
     .              end do                                                      
     .           end do                                                         
     .  !CDIR    NODEP                                                          
     .           do t95 = J1 + 1, jmax + 1 - jmin, 4                            
     .  !CDIR       NODEP                                                       
     .              do ix = 1, imax - imin                                      
     .                 xyz_avr_pyr(imin+ix,t95-1+                               
     .       1            xyz_avr_pyr.DESCRIPT.RETVAL.DSC.L2,kz) = (pyr_var(imin
     .       2            +ix-1,t95-1+t14,kz-1)+pyr_var(imin+ix,t95-1+t14,kz-1)+
     .       3            pyr_var(imin+ix-1,t95-1+t14,kz)+pyr_var(imin+ix,t95-1+
     .       4            t14,kz))*2.50000000000000e-001                        
     .                 xyz_avr_pyr(imin+ix,t95+                                 
     .       1            xyz_avr_pyr.DESCRIPT.RETVAL.DSC.L2,kz) = (pyr_var(imin
     .       2            +ix-1,t95+t14,kz-1)+pyr_var(imin+ix,t95+t14,kz-1)+    
     .       3            pyr_var(imin+ix-1,t95+t14,kz)+pyr_var(imin+ix,t95+t14,
     .       4            kz))*2.50000000000000e-001                            
     .                 xyz_avr_pyr(imin+ix,t95+1+                               
     .       1            xyz_avr_pyr.DESCRIPT.RETVAL.DSC.L2,kz) = (pyr_var(imin
     .       2            +ix-1,t95+1+t14,kz-1)+pyr_var(imin+ix,t95+1+t14,kz-1)+
     .       3            pyr_var(imin+ix-1,t95+1+t14,kz)+pyr_var(imin+ix,t95+1+
     .       4            t14,kz))*2.50000000000000e-001                        
     .                 xyz_avr_pyr(imin+ix,t95+2+                               
     .       1            xyz_avr_pyr.DESCRIPT.RETVAL.DSC.L2,kz) = (pyr_var(imin
     .       2            +ix-1,t95+2+t14,kz-1)+pyr_var(imin+ix,t95+2+t14,kz-1)+
     .       3            pyr_var(imin+ix-1,t95+2+t14,kz)+pyr_var(imin+ix,t95+2+
     .       4            t14,kz))*2.50000000000000e-001                        
     .              end do                                                      
     .           end do                                                         
     .        endif                                                             
   692      end do
   693  
   694      ! imin 格子上の値
   695      xyz_avr_pyr(imin,:,:) = 1.0d10
     .        if (xyz_avr_pyr.DESCRIPT.RETVAL.DSC.U3 + 1 -                      
     .       1   xyz_avr_pyr.DESCRIPT.RETVAL.DSC.L3 .gt. 0) then                
     .           J2 = and(xyz_avr_pyr.DESCRIPT.RETVAL.DSC.U3 + 1 -              
     .       1      xyz_avr_pyr.DESCRIPT.RETVAL.DSC.L3,3)                       
     .  !CDIR    NODEP                                                          
     .           do t102 = 1, J2                                                
     .  !CDIR       NODEP                                                       
     .              do t104 = 1, xyz_avr_pyr.DESCRIPT.RETVAL.DSC.U2 + 1 -       
     .       1         xyz_avr_pyr.DESCRIPT.RETVAL.DSC.L2                       
     .                 xyz_avr_pyr(imin,xyz_avr_pyr.DESCRIPT.RETVAL.DSC.L2+t104-
     .       1            1,t102-1+xyz_avr_pyr.DESCRIPT.RETVAL.DSC.L3) =        
     .       2            1.00000000000000e+010                                 
     .              end do                                                      
     .           end do                                                         
     .  !CDIR    NODEP                                                          
     .           do t102 = J2 + 1, xyz_avr_pyr.DESCRIPT.RETVAL.DSC.U3 + 1 -     
     .       1      xyz_avr_pyr.DESCRIPT.RETVAL.DSC.L3, 4                       
     .  !CDIR       NODEP                                                       
     .              do t104 = 1, xyz_avr_pyr.DESCRIPT.RETVAL.DSC.U2 + 1 -       
     .       1         xyz_avr_pyr.DESCRIPT.RETVAL.DSC.L2                       
     .                 xyz_avr_pyr(imin,xyz_avr_pyr.DESCRIPT.RETVAL.DSC.L2+t104-
     .       1            1,t102-1+xyz_avr_pyr.DESCRIPT.RETVAL.DSC.L3) =        
     .       2            1.00000000000000e+010                                 
     .                 xyz_avr_pyr(imin,xyz_avr_pyr.DESCRIPT.RETVAL.DSC.L2+t104-
     .       1            1,t102+xyz_avr_pyr.DESCRIPT.RETVAL.DSC.L3) =          
     .       2            1.00000000000000e+010                                 
     .                 xyz_avr_pyr(imin,xyz_avr_pyr.DESCRIPT.RETVAL.DSC.L2+t104-
     .       1            1,t102+1+xyz_avr_pyr.DESCRIPT.RETVAL.DSC.L3) =        
     .       2            1.00000000000000e+010                                 
     .                 xyz_avr_pyr(imin,xyz_avr_pyr.DESCRIPT.RETVAL.DSC.L2+t104-
     .       1            1,t102+2+xyz_avr_pyr.DESCRIPT.RETVAL.DSC.L3) =        
     .       2            1.00000000000000e+010                                 
     .              end do                                                      
     .           end do                                                         
     .        endif                                                             
   696      ! kmin 格子上の値
   697      xyz_avr_pyr(:,:,kmin) = 1.0d10
     .        if (xyz_avr_pyr.DESCRIPT.RETVAL.DSC.U2 + 1 -                      
     .       1   xyz_avr_pyr.DESCRIPT.RETVAL.DSC.L2 .gt. 0) then                
     .           J3 = and(xyz_avr_pyr.DESCRIPT.RETVAL.DSC.U2 + 1 -              
     .       1      xyz_avr_pyr.DESCRIPT.RETVAL.DSC.L2,3)                       
     .  !CDIR    NODEP                                                          
     .           do t108 = 1, J3                                                
     .  !CDIR       NODEP                                                       
     .              do t110 = 1, xyz_avr_pyr.DESCRIPT.RETVAL.DSC.U1 + 1 -       
     .       1         xyz_avr_pyr.DESCRIPT.RETVAL.DSC.L1                       
     .                 xyz_avr_pyr(xyz_avr_pyr.DESCRIPT.RETVAL.DSC.L1+t110-1,   
     .       1            t108-1+xyz_avr_pyr.DESCRIPT.RETVAL.DSC.L2,kmin) =     
     .       2            1.00000000000000e+010                                 
     .              end do                                                      
     .           end do                                                         
     .  !CDIR    NODEP                                                          
     .           do t108 = J3 + 1, xyz_avr_pyr.DESCRIPT.RETVAL.DSC.U2 + 1 -     
     .       1      xyz_avr_pyr.DESCRIPT.RETVAL.DSC.L2, 4                       
     .  !CDIR       NODEP                                                       
     .              do t110 = 1, xyz_avr_pyr.DESCRIPT.RETVAL.DSC.U1 + 1 -       
     .       1         xyz_avr_pyr.DESCRIPT.RETVAL.DSC.L1                       
     .                 xyz_avr_pyr(xyz_avr_pyr.DESCRIPT.RETVAL.DSC.L1+t110-1,   
     .       1            t108-1+xyz_avr_pyr.DESCRIPT.RETVAL.DSC.L2,kmin) =     
     .       2            1.00000000000000e+010                                 
     .                 xyz_avr_pyr(xyz_avr_pyr.DESCRIPT.RETVAL.DSC.L1+t110-1,   
     .       1            t108+xyz_avr_pyr.DESCRIPT.RETVAL.DSC.L2,kmin) =       
     .       2            1.00000000000000e+010                                 
     .                 xyz_avr_pyr(xyz_avr_pyr.DESCRIPT.RETVAL.DSC.L1+t110-1,   
     .       1            t108+1+xyz_avr_pyr.DESCRIPT.RETVAL.DSC.L2,kmin) =     
     .       2            1.00000000000000e+010                                 
     .                 xyz_avr_pyr(xyz_avr_pyr.DESCRIPT.RETVAL.DSC.L1+t110-1,   
     .       1            t108+2+xyz_avr_pyr.DESCRIPT.RETVAL.DSC.L2,kmin) =     
     .       2            1.00000000000000e+010                                 
     .              end do                                                      
     .           end do                                                         
     .        endif                                                             
   698  
   699    end function xyz_avr_pyr
   700    !--------------------------------------------------------------------
   701    function xyz_avr_xqr(xqr_Var)
   702      real(DP), intent(in) :: xqr_Var(imin:imax,jmin:jmax,kmin:kmax)     ! 入力
   703      real(DP)             :: xyz_avr_xqr(imin:imax,jmin:jmax,kmin:kmax) ! 出力
   704      integer              :: jy, kz                                     ! ループ添字
   705  
   706      if (jmin == jmax) then
   707        !xz_avr_xr と同じ
   708        do kz = kmin+1, kmax
   709          xyz_avr_xqr(:,:,kz) = &
   710            &  ( xqr_Var(:,:,kz-1) + xqr_Var(:,:,kz) ) * 0.5d0
   711        end do
     .  !CDIR NODEP                                                             
     .  !CDIR NOASSUME                                                          
     .        do kz = 1, (kmax - kmin)*(jmax + 1 - jmin)*(imax + 1 - imin)      
     .           xyz_avr_xqr(xyz_avr_xqr.DESCRIPT.RETVAL.DSC.L1+kz-1,           
     .       1      xyz_avr_xqr.DESCRIPT.RETVAL.DSC.L2,1+kmin) = (xqr_var(t12+kz
     .       2      -1,t14,kmin)+xqr_var(t12+kz-1,t14,1+kmin))*                 
     .       3      5.00000000000000e-001                                       
     .        end do                                                            
   712  
   713        ! kmin 格子上の値
   714        xyz_avr_xqr(:,:,kmin) = 1.0d10
     .        if (xyz_avr_xqr.DESCRIPT.RETVAL.DSC.U2 + 1 -                      
     .       1   xyz_avr_xqr.DESCRIPT.RETVAL.DSC.L2 .gt. 0) then                
     .           J1 = and(xyz_avr_xqr.DESCRIPT.RETVAL.DSC.U2 + 1 -              
     .       1      xyz_avr_xqr.DESCRIPT.RETVAL.DSC.L2,3)                       
     .  !CDIR    NODEP                                                          
     .           do t151 = 1, J1                                                
     .  !CDIR       NODEP                                                       
     .              do t153 = 1, xyz_avr_xqr.DESCRIPT.RETVAL.DSC.U1 -           
     .       1         xyz_avr_xqr.DESCRIPT.RETVAL.DSC.L1 + 2 - min0(1,         
     .       2         xyz_avr_xqr.DESCRIPT.RETVAL.DSC.U1 -                     
     .       3         xyz_avr_xqr.DESCRIPT.RETVAL.DSC.L1 + 1)                  
     .                 xyz_avr_xqr(xyz_avr_xqr.DESCRIPT.RETVAL.DSC.L1+t153-1,   
     .       1            t151-1+xyz_avr_xqr.DESCRIPT.RETVAL.DSC.L2,kmin) =     
     .       2            1.00000000000000e+010                                 
     .              end do                                                      
     .           end do                                                         
     .  !CDIR    NODEP                                                          
     .           do t151 = J1 + 1, xyz_avr_xqr.DESCRIPT.RETVAL.DSC.U2 + 1 -     
     .       1      xyz_avr_xqr.DESCRIPT.RETVAL.DSC.L2, 4                       
     .  !CDIR       NODEP                                                       
     .              do t153 = 1, xyz_avr_xqr.DESCRIPT.RETVAL.DSC.U1 -           
     .       1         xyz_avr_xqr.DESCRIPT.RETVAL.DSC.L1 + 2 - min0(1,         
     .       2         xyz_avr_xqr.DESCRIPT.RETVAL.DSC.U1 -                     
     .       3         xyz_avr_xqr.DESCRIPT.RETVAL.DSC.L1 + 1)                  
     .                 xyz_avr_xqr(xyz_avr_xqr.DESCRIPT.RETVAL.DSC.L1+t153-1,   
     .       1            t151-1+xyz_avr_xqr.DESCRIPT.RETVAL.DSC.L2,kmin) =     
     .       2            1.00000000000000e+010                                 
     .                 xyz_avr_xqr(xyz_avr_xqr.DESCRIPT.RETVAL.DSC.L1+t153-1,   
     .       1            t151+xyz_avr_xqr.DESCRIPT.RETVAL.DSC.L2,kmin) =       
     .       2            1.00000000000000e+010                                 
     .                 xyz_avr_xqr(xyz_avr_xqr.DESCRIPT.RETVAL.DSC.L1+t153-1,   
     .       1            t151+1+xyz_avr_xqr.DESCRIPT.RETVAL.DSC.L2,kmin) =     
     .       2            1.00000000000000e+010                                 
     .                 xyz_avr_xqr(xyz_avr_xqr.DESCRIPT.RETVAL.DSC.L1+t153-1,   
     .       1            t151+2+xyz_avr_xqr.DESCRIPT.RETVAL.DSC.L2,kmin) =     
     .       2            1.00000000000000e+010                                 
     .              end do                                                      
     .           end do                                                         
     .        endif                                                             
     .        go to 10021                                                       
   715  
   716      else
   717        do kz = kmin+1, kmax
   718          do jy = jmin+1, jmax
   719            xyz_avr_xqr(:,jy,kz) = &
   720              &  ( xqr_Var(:,jy-1,kz-1) + xqr_Var(:,jy,kz-1) +  &
   721              &    xqr_Var(:,jy-1,kz)   + xqr_Var(:,jy,kz)     ) * 0.25d0
   722          end do
     .  !CDIR NODEP                                                             
     .  !CDIR NOASSUME                                                          
     .        do jy = 1, (jmax - jmin)*(imax + 1 - imin)                        
     .           xyz_avr_xqr(xyz_avr_xqr.DESCRIPT.RETVAL.DSC.L1+jy-1,1+jmin,kz) 
     .       1       = (xqr_var(t12+jy-1,jmin,kz-1)+xqr_var(t12+jy-1,1+jmin,kz-1
     .       2      )+xqr_var(t12+jy-1,jmin,kz)+xqr_var(t12+jy-1,1+jmin,kz))*   
     .       3      2.50000000000000e-001                                       
     .        end do                                                            
   723        end do
   724  
   725        ! jmin 格子上の値
   726        xyz_avr_xqr(:,jmin,:) = 1.0d10
     .        if (xyz_avr_xqr.DESCRIPT.RETVAL.DSC.U3 + 1 -                      
     .       1   xyz_avr_xqr.DESCRIPT.RETVAL.DSC.L3 .gt. 0) then                
     .           J2 = and(xyz_avr_xqr.DESCRIPT.RETVAL.DSC.U3 + 1 -              
     .       1      xyz_avr_xqr.DESCRIPT.RETVAL.DSC.L3,3)                       
     .  !CDIR    NODEP                                                          
     .           do t129 = 1, J2                                                
     .  !CDIR       NODEP                                                       
     .              do t131 = 1, xyz_avr_xqr.DESCRIPT.RETVAL.DSC.U1 + 1 -       
     .       1         xyz_avr_xqr.DESCRIPT.RETVAL.DSC.L1                       
     .                 xyz_avr_xqr(xyz_avr_xqr.DESCRIPT.RETVAL.DSC.L1+t131-1,   
     .       1            jmin,t129-1+xyz_avr_xqr.DESCRIPT.RETVAL.DSC.L3) =     
     .       2            1.00000000000000e+010                                 
     .              end do                                                      
     .           end do                                                         
     .  !CDIR    NODEP                                                          
     .           do t129 = J2 + 1, xyz_avr_xqr.DESCRIPT.RETVAL.DSC.U3 + 1 -     
     .       1      xyz_avr_xqr.DESCRIPT.RETVAL.DSC.L3, 4                       
     .  !CDIR       NODEP                                                       
     .              do t131 = 1, xyz_avr_xqr.DESCRIPT.RETVAL.DSC.U1 + 1 -       
     .       1         xyz_avr_xqr.DESCRIPT.RETVAL.DSC.L1                       
     .                 xyz_avr_xqr(xyz_avr_xqr.DESCRIPT.RETVAL.DSC.L1+t131-1,   
     .       1            jmin,t129-1+xyz_avr_xqr.DESCRIPT.RETVAL.DSC.L3) =     
     .       2            1.00000000000000e+010                                 
     .                 xyz_avr_xqr(xyz_avr_xqr.DESCRIPT.RETVAL.DSC.L1+t131-1,   
     .       1            jmin,t129+xyz_avr_xqr.DESCRIPT.RETVAL.DSC.L3) =       
     .       2            1.00000000000000e+010                                 
     .                 xyz_avr_xqr(xyz_avr_xqr.DESCRIPT.RETVAL.DSC.L1+t131-1,   
     .       1            jmin,t129+1+xyz_avr_xqr.DESCRIPT.RETVAL.DSC.L3) =     
     .       2            1.00000000000000e+010                                 
     .                 xyz_avr_xqr(xyz_avr_xqr.DESCRIPT.RETVAL.DSC.L1+t131-1,   
     .       1            jmin,t129+2+xyz_avr_xqr.DESCRIPT.RETVAL.DSC.L3) =     
     .       2            1.00000000000000e+010                                 
     .              end do                                                      
     .           end do                                                         
     .        endif                                                             
   727        ! kmin 格子上の値
   728        xyz_avr_xqr(:,:,kmin) = 1.0d10
     .        if (xyz_avr_xqr.DESCRIPT.RETVAL.DSC.U2 + 1 -                      
     .       1   xyz_avr_xqr.DESCRIPT.RETVAL.DSC.L2 .gt. 0) then                
     .           J3 = and(xyz_avr_xqr.DESCRIPT.RETVAL.DSC.U2 + 1 -              
     .       1      xyz_avr_xqr.DESCRIPT.RETVAL.DSC.L2,3)                       
     .  !CDIR    NODEP                                                          
     .           do t135 = 1, J3                                                
     .  !CDIR       NODEP                                                       
     .              do t137 = 1, xyz_avr_xqr.DESCRIPT.RETVAL.DSC.U1 + 1 -       
     .       1         xyz_avr_xqr.DESCRIPT.RETVAL.DSC.L1                       
     .                 xyz_avr_xqr(xyz_avr_xqr.DESCRIPT.RETVAL.DSC.L1+t137-1,   
     .       1            t135-1+xyz_avr_xqr.DESCRIPT.RETVAL.DSC.L2,kmin) =     
     .       2            1.00000000000000e+010                                 
     .              end do                                                      
     .           end do                                                         
     .  !CDIR    NODEP                                                          
     .           do t135 = J3 + 1, xyz_avr_xqr.DESCRIPT.RETVAL.DSC.U2 + 1 -     
     .       1      xyz_avr_xqr.DESCRIPT.RETVAL.DSC.L2, 4                       
     .  !CDIR       NODEP                                                       
     .              do t137 = 1, xyz_avr_xqr.DESCRIPT.RETVAL.DSC.U1 + 1 -       
     .       1         xyz_avr_xqr.DESCRIPT.RETVAL.DSC.L1                       
     .                 xyz_avr_xqr(xyz_avr_xqr.DESCRIPT.RETVAL.DSC.L1+t137-1,   
     .       1            t135-1+xyz_avr_xqr.DESCRIPT.RETVAL.DSC.L2,kmin) =     
     .       2            1.00000000000000e+010                                 
     .                 xyz_avr_xqr(xyz_avr_xqr.DESCRIPT.RETVAL.DSC.L1+t137-1,   
     .       1            t135+xyz_avr_xqr.DESCRIPT.RETVAL.DSC.L2,kmin) =       
     .       2            1.00000000000000e+010                                 
     .                 xyz_avr_xqr(xyz_avr_xqr.DESCRIPT.RETVAL.DSC.L1+t137-1,   
     .       1            t135+1+xyz_avr_xqr.DESCRIPT.RETVAL.DSC.L2,kmin) =     
     .       2            1.00000000000000e+010                                 
     .                 xyz_avr_xqr(xyz_avr_xqr.DESCRIPT.RETVAL.DSC.L1+t137-1,   
     .       1            t135+2+xyz_avr_xqr.DESCRIPT.RETVAL.DSC.L2,kmin) =     
     .       2            1.00000000000000e+010                                 
     .              end do                                                      
     .           end do                                                         
     .        endif                                                             
   729      end if
   730  
   731    end function xyz_avr_xqr
   732    !--------------------------------------------------------------------
   733    function aa_IntX_xaa(xaa_Var)
   734      ! xaa 格子上の配列に対し x 方向積分を行う
   735  
   736      real(DP), intent(in) :: xaa_Var(imin:imax,jmin:jmax,kmin:kmax) ! 入力
   737      real(DP)             :: aa_IntX_xaa(jmin:jmax,kmin:kmax)       ! 出力
   738      integer                  :: jy, kz                           ! ループ添字
   739  
   740      ! 初期化
   741      aa_IntX_xaa = 0.0d0
     .        if (aa_intx_xaa.DESCRIPT.RETVAL.DSC.U2 + 1 -                      
     .       1   aa_intx_xaa.DESCRIPT.RETVAL.DSC.L2 .gt. 0) then                
     .           J4 = and(aa_intx_xaa.DESCRIPT.RETVAL.DSC.U2 + 1 -              
     .       1      aa_intx_xaa.DESCRIPT.RETVAL.DSC.L2,3)                       
     .  !CDIR    NODEP                                                          
     .           do t72 = 1, J4                                                 
     .  !CDIR       NODEP                                                       
     .              do t74 = 1, aa_intx_xaa.DESCRIPT.RETVAL.DSC.U1 + 1 -        
     .       1         aa_intx_xaa.DESCRIPT.RETVAL.DSC.L1                       
     .                 aa_intx_xaa(aa_intx_xaa.DESCRIPT.RETVAL.DSC.L1+t74-1,t72-
     .       1            1+aa_intx_xaa.DESCRIPT.RETVAL.DSC.L2) =               
     .       2            0.0000000000000000e+000                               
     .              end do                                                      
     .           end do                                                         
     .  !CDIR    NODEP                                                          
     .           do t72 = J4 + 1, aa_intx_xaa.DESCRIPT.RETVAL.DSC.U2 + 1 -      
     .       1      aa_intx_xaa.DESCRIPT.RETVAL.DSC.L2, 4                       
     .  !CDIR       NODEP                                                       
     .              do t74 = 1, aa_intx_xaa.DESCRIPT.RETVAL.DSC.U1 + 1 -        
     .       1         aa_intx_xaa.DESCRIPT.RETVAL.DSC.L1                       
     .                 aa_intx_xaa(aa_intx_xaa.DESCRIPT.RETVAL.DSC.L1+t74-1,t72-
     .       1            1+aa_intx_xaa.DESCRIPT.RETVAL.DSC.L2) =               
     .       2            0.0000000000000000e+000                               
     .                 aa_intx_xaa(aa_intx_xaa.DESCRIPT.RETVAL.DSC.L1+t74-1,t72+
     .       1            aa_intx_xaa.DESCRIPT.RETVAL.DSC.L2) =                 
     .       2            0.0000000000000000e+000                               
     .                 aa_intx_xaa(aa_intx_xaa.DESCRIPT.RETVAL.DSC.L1+t74-1,t72+
     .       1            1+aa_intx_xaa.DESCRIPT.RETVAL.DSC.L2) =               
     .       2            0.0000000000000000e+000                               
     .                 aa_intx_xaa(aa_intx_xaa.DESCRIPT.RETVAL.DSC.L1+t74-1,t72+
     .       1            2+aa_intx_xaa.DESCRIPT.RETVAL.DSC.L2) =               
     .       2            0.0000000000000000e+000                               
     .              end do                                                      
     .           end do                                                         
     .        endif                                                             
   742  
   743      ! 積分
   744      do kz = kmin, kmax
   745        do jy = jmin, jmax
   746          aa_IntX_xaa(jy,kz) = IntX_x(xaa_Var(:,jy,kz))
     .        t111 = imin                                                       
     .        t101 = imax                                                       
     .        call f_null (work)                                                
     .        intx_x = 0.0000000000000000e+000                                  
     .        work.DSC.RANK = 1                                                 
     .        work.DSC.L1 = imin                                                
     .        work.DSC.U1 = imax                                                
     .        allocate (work(work.DSC.L1:work.DSC.U1))                          
     .        if (t101 - t111 .le. (-1)) go to 31051                            
     .  !CDIR NODEP                                                             
     .        do t451 = 1, imax - imin + 2 - min0(1,imax - imin + 1)            
     .           work(work.DSC.L1+t451-1) = xaa_var(t111+t9-imin+t451-1,jy,kz)* 
     .       1      x_dx(x_dx.DSC.L1+t451-1)                                    
     .        end do                                                            
     .  31051 continue                                                          
     .        t341 = 0.0000000000000000e+000                                    
     .  !CDIR NODEP                                                             
     .        do t361 = 1, nx                                                   
     .           t341 = t341 + work(t361)                                       
     .        end do                                                            
     .        intx_x = t341                                                     
     .        deallocate (work)                                                 
     .        t411 = allocated(work)                                            
     .        if (t411 .eq. 0) go to 31055                                      
     .        deallocate (work)                                                 
     .  31055 continue                                                          
     .        t58 = intx_x                                                      
     .  C*****  End of Code Expanded From Routine:  intx_x                      
   747        end do
   748      end do
   749  
   750    end function aa_IntX_xaa
   751    !--------------------------------------------------------------------
   752    function yz_IntX_pyz(pyz_Var)
   753      ! pyz 格子上の配列に対し x 方向積分を行う
   754  
   755      real(DP), intent(in) :: pyz_Var(imin:imax,jmin:jmax,kmin:kmax) ! 入力
   756      real(DP)             :: yz_IntX_pyz(jmin:jmax,kmin:kmax)       ! 出力
   757      integer                  :: jy, kz                           ! ループ添字
   758  
   759      ! 初期化
   760      yz_IntX_pyz = 0.0d0
     .        if (yz_intx_pyz.DESCRIPT.RETVAL.DSC.U2 + 1 -                      
     .       1   yz_intx_pyz.DESCRIPT.RETVAL.DSC.L2 .gt. 0) then                
     .           J3 = and(yz_intx_pyz.DESCRIPT.RETVAL.DSC.U2 + 1 -              
     .       1      yz_intx_pyz.DESCRIPT.RETVAL.DSC.L2,3)                       
     .  !CDIR    NODEP                                                          
     .           do t72 = 1, J3                                                 
     .  !CDIR       NODEP                                                       
     .              do t74 = 1, yz_intx_pyz.DESCRIPT.RETVAL.DSC.U1 + 1 -        
     .       1         yz_intx_pyz.DESCRIPT.RETVAL.DSC.L1                       
     .                 yz_intx_pyz(yz_intx_pyz.DESCRIPT.RETVAL.DSC.L1+t74-1,t72-
     .       1            1+yz_intx_pyz.DESCRIPT.RETVAL.DSC.L2) =               
     .       2            0.0000000000000000e+000                               
     .              end do                                                      
     .           end do                                                         
     .  !CDIR    NODEP                                                          
     .           do t72 = J3 + 1, yz_intx_pyz.DESCRIPT.RETVAL.DSC.U2 + 1 -      
     .       1      yz_intx_pyz.DESCRIPT.RETVAL.DSC.L2, 4                       
     .  !CDIR       NODEP                                                       
     .              do t74 = 1, yz_intx_pyz.DESCRIPT.RETVAL.DSC.U1 + 1 -        
     .       1         yz_intx_pyz.DESCRIPT.RETVAL.DSC.L1                       
     .                 yz_intx_pyz(yz_intx_pyz.DESCRIPT.RETVAL.DSC.L1+t74-1,t72-
     .       1            1+yz_intx_pyz.DESCRIPT.RETVAL.DSC.L2) =               
     .       2            0.0000000000000000e+000                               
     .                 yz_intx_pyz(yz_intx_pyz.DESCRIPT.RETVAL.DSC.L1+t74-1,t72+
     .       1            yz_intx_pyz.DESCRIPT.RETVAL.DSC.L2) =                 
     .       2            0.0000000000000000e+000                               
     .                 yz_intx_pyz(yz_intx_pyz.DESCRIPT.RETVAL.DSC.L1+t74-1,t72+
     .       1            1+yz_intx_pyz.DESCRIPT.RETVAL.DSC.L2) =               
     .       2            0.0000000000000000e+000                               
     .                 yz_intx_pyz(yz_intx_pyz.DESCRIPT.RETVAL.DSC.L1+t74-1,t72+
     .       1            2+yz_intx_pyz.DESCRIPT.RETVAL.DSC.L2) =               
     .       2            0.0000000000000000e+000                               
     .              end do                                                      
     .           end do                                                         
     .        endif                                                             
   761  
   762      ! 積分
   763      do kz = kmin, kmax
   764        do jy = jmin, jmax
   765          yz_IntX_pyz(jy,kz) = IntX_p(pyz_Var(:,jy,kz))
     .        intx_p = 0.0000000000000000e+000                                  
     .        t191 = 0.0000000000000000e+000                                    
     .  !CDIR NODEP                                                             
     .        do t221 = 1, nx                                                   
     .           t191 = t191 + pyz_var(t9-imin+t221,jy,kz)*p_dx(t221)           
     .        end do                                                            
     .        intx_p = t191                                                     
     .        t58 = intx_p                                                      
     .  C*****  End of Code Expanded From Routine:  intx_p                      
   766        end do
   767      end do
   768  
   769    end function yz_IntX_pyz
   770    !--------------------------------------------------------------------
   771    function aa_IntY_aya(aya_Var)
   772      ! aya 格子上の配列に対し y 方向積分を行う
   773  
   774      real(DP), intent(in) :: aya_Var(imin:imax,jmin:jmax,kmin:kmax) ! 入力
   775      real(DP)             :: aa_IntY_aya(imin:imax,kmin:kmax)       ! 出力
   776      integer                  :: ix, kz                           ! ループ添字
   777  
   778      ! 初期化
   779      aa_IntY_aya = 0.0d0
     .        if (aa_inty_aya.DESCRIPT.RETVAL.DSC.U2 + 1 -                      
     .       1   aa_inty_aya.DESCRIPT.RETVAL.DSC.L2 .gt. 0) then                
     .           J3 = and(aa_inty_aya.DESCRIPT.RETVAL.DSC.U2 + 1 -              
     .       1      aa_inty_aya.DESCRIPT.RETVAL.DSC.L2,3)                       
     .  !CDIR    NODEP                                                          
     .           do t80 = 1, J3                                                 
     .  !CDIR       NODEP                                                       
     .              do t82 = 1, aa_inty_aya.DESCRIPT.RETVAL.DSC.U1 + 1 -        
     .       1         aa_inty_aya.DESCRIPT.RETVAL.DSC.L1                       
     .                 aa_inty_aya(aa_inty_aya.DESCRIPT.RETVAL.DSC.L1+t82-1,t80-
     .       1            1+aa_inty_aya.DESCRIPT.RETVAL.DSC.L2) =               
     .       2            0.0000000000000000e+000                               
     .              end do                                                      
     .           end do                                                         
     .  !CDIR    NODEP                                                          
     .           do t80 = J3 + 1, aa_inty_aya.DESCRIPT.RETVAL.DSC.U2 + 1 -      
     .       1      aa_inty_aya.DESCRIPT.RETVAL.DSC.L2, 4                       
     .  !CDIR       NODEP                                                       
     .              do t82 = 1, aa_inty_aya.DESCRIPT.RETVAL.DSC.U1 + 1 -        
     .       1         aa_inty_aya.DESCRIPT.RETVAL.DSC.L1                       
     .                 aa_inty_aya(aa_inty_aya.DESCRIPT.RETVAL.DSC.L1+t82-1,t80-
     .       1            1+aa_inty_aya.DESCRIPT.RETVAL.DSC.L2) =               
     .       2            0.0000000000000000e+000                               
     .                 aa_inty_aya(aa_inty_aya.DESCRIPT.RETVAL.DSC.L1+t82-1,t80+
     .       1            aa_inty_aya.DESCRIPT.RETVAL.DSC.L2) =                 
     .       2            0.0000000000000000e+000                               
     .                 aa_inty_aya(aa_inty_aya.DESCRIPT.RETVAL.DSC.L1+t82-1,t80+
     .       1            1+aa_inty_aya.DESCRIPT.RETVAL.DSC.L2) =               
     .       2            0.0000000000000000e+000                               
     .                 aa_inty_aya(aa_inty_aya.DESCRIPT.RETVAL.DSC.L1+t82-1,t80+
     .       1            2+aa_inty_aya.DESCRIPT.RETVAL.DSC.L2) =               
     .       2            0.0000000000000000e+000                               
     .              end do                                                      
     .           end do                                                         
     .        endif                                                             
   780  
   781      ! 積分
   782      do kz = kmin, kmax
   783        do ix = imin, imax
   784          aa_IntY_aya(ix,kz) = IntY_y(aya_Var(ix,:,kz))
     .  !CDIR NODEP                                                             
     .        do t86 = 1, jmax + 1 - jmin                                       
     .           %IG54(t86) = aya_var(ix,t14+t86-1,kz)                          
     .        end do                                                            
     .        inty_y = 0.0000000000000000e+000                                  
     .        t19 = 0.0000000000000000e+000                                     
     .  !CDIR NODEP                                                             
     .        do t221 = 1, ny                                                   
     .           t19 = t19 + %IG54(%IG54.DSC.L1-jmin+t221)*y_dy(t221)           
     .        end do                                                            
     .        inty_y = t19                                                      
     .        t65 = inty_y                                                      
     .  C*****  End of Code Expanded From Routine:  inty_y                      
   785        end do
   786      end do
   787  
   788    end function aa_IntY_aya
   789    !--------------------------------------------------------------------
   790    function xz_IntY_xqz(xqz_Var)
   791      ! xqz 格子上の配列に対し y 方向積分を行う
   792  
   793      real(DP), intent(in) :: xqz_Var(imin:imax,jmin:jmax,kmin:kmax) ! 入力
   794      real(DP)             :: xz_IntY_xqz(imin:imax,kmin:kmax)       ! 出力
   795      integer                  :: ix, kz                           ! ループ添字
   796  
   797      ! 初期化
   798      xz_IntY_xqz = 0.0d0
     .        if (xz_inty_xqz.DESCRIPT.RETVAL.DSC.U2 + 1 -                      
     .       1   xz_inty_xqz.DESCRIPT.RETVAL.DSC.L2 .gt. 0) then                
     .           J3 = and(xz_inty_xqz.DESCRIPT.RETVAL.DSC.U2 + 1 -              
     .       1      xz_inty_xqz.DESCRIPT.RETVAL.DSC.L2,3)                       
     .  !CDIR    NODEP                                                          
     .           do t80 = 1, J3                                                 
     .  !CDIR       NODEP                                                       
     .              do t82 = 1, xz_inty_xqz.DESCRIPT.RETVAL.DSC.U1 + 1 -        
     .       1         xz_inty_xqz.DESCRIPT.RETVAL.DSC.L1                       
     .                 xz_inty_xqz(xz_inty_xqz.DESCRIPT.RETVAL.DSC.L1+t82-1,t80-
     .       1            1+xz_inty_xqz.DESCRIPT.RETVAL.DSC.L2) =               
     .       2            0.0000000000000000e+000                               
     .              end do                                                      
     .           end do                                                         
     .  !CDIR    NODEP                                                          
     .           do t80 = J3 + 1, xz_inty_xqz.DESCRIPT.RETVAL.DSC.U2 + 1 -      
     .       1      xz_inty_xqz.DESCRIPT.RETVAL.DSC.L2, 4                       
     .  !CDIR       NODEP                                                       
     .              do t82 = 1, xz_inty_xqz.DESCRIPT.RETVAL.DSC.U1 + 1 -        
     .       1         xz_inty_xqz.DESCRIPT.RETVAL.DSC.L1                       
     .                 xz_inty_xqz(xz_inty_xqz.DESCRIPT.RETVAL.DSC.L1+t82-1,t80-
     .       1            1+xz_inty_xqz.DESCRIPT.RETVAL.DSC.L2) =               
     .       2            0.0000000000000000e+000                               
     .                 xz_inty_xqz(xz_inty_xqz.DESCRIPT.RETVAL.DSC.L1+t82-1,t80+
     .       1            xz_inty_xqz.DESCRIPT.RETVAL.DSC.L2) =                 
     .       2            0.0000000000000000e+000                               
     .                 xz_inty_xqz(xz_inty_xqz.DESCRIPT.RETVAL.DSC.L1+t82-1,t80+
     .       1            1+xz_inty_xqz.DESCRIPT.RETVAL.DSC.L2) =               
     .       2            0.0000000000000000e+000                               
     .                 xz_inty_xqz(xz_inty_xqz.DESCRIPT.RETVAL.DSC.L1+t82-1,t80+
     .       1            2+xz_inty_xqz.DESCRIPT.RETVAL.DSC.L2) =               
     .       2            0.0000000000000000e+000                               
     .              end do                                                      
     .           end do                                                         
     .        endif                                                             
   799  
   800      ! 積分
   801      do kz = kmin, kmax
   802        do ix = imin, imax
   803          xz_IntY_xqz(ix,kz) = IntY_q(xqz_Var(ix,:,kz))
     .  !CDIR NODEP                                                             
     .        do t86 = 1, jmax + 1 - jmin                                       
     .           %IG57(t86) = xqz_var(ix,t14+t86-1,kz)                          
     .        end do                                                            
     .        inty_q = 0.0000000000000000e+000                                  
     .        t19 = 0.0000000000000000e+000                                     
     .  !CDIR NODEP                                                             
     .        do t221 = 1, ny                                                   
     .           t19 = t19 + %IG57(%IG57.DSC.L1-jmin+t221)*q_dy(t221)           
     .        end do                                                            
     .        inty_q = t19                                                      
     .        t65 = inty_q                                                      
     .  C*****  End of Code Expanded From Routine:  inty_q                      
   804        end do
   805      end do
   806  
   807    end function xz_IntY_xqz
   808    !--------------------------------------------------------------------
   809    function aa_IntZ_aaz(aaz_Var)
   810      ! aaz 格子上の配列に対し z 方向積分を行う
   811  
   812      real(DP), intent(in) :: aaz_Var(imin:imax,jmin:jmax,kmin:kmax) ! 入力
   813      real(DP)             :: aa_IntZ_aaz(imin:imax,jmin:jmax)       ! 出力
   814      integer                  :: ix, jy                           ! ループ添字
   815  
   816      ! 初期化
   817      aa_IntZ_aaz = 0.0d0
     .        if (aa_intz_aaz.DESCRIPT.RETVAL.DSC.U2 + 1 -                      
     .       1   aa_intz_aaz.DESCRIPT.RETVAL.DSC.L2 .gt. 0) then                
     .           J3 = and(aa_intz_aaz.DESCRIPT.RETVAL.DSC.U2 + 1 -              
     .       1      aa_intz_aaz.DESCRIPT.RETVAL.DSC.L2,3)                       
     .  !CDIR    NODEP                                                          
     .           do t80 = 1, J3                                                 
     .  !CDIR       NODEP                                                       
     .              do t82 = 1, aa_intz_aaz.DESCRIPT.RETVAL.DSC.U1 + 1 -        
     .       1         aa_intz_aaz.DESCRIPT.RETVAL.DSC.L1                       
     .                 aa_intz_aaz(aa_intz_aaz.DESCRIPT.RETVAL.DSC.L1+t82-1,t80-
     .       1            1+aa_intz_aaz.DESCRIPT.RETVAL.DSC.L2) =               
     .       2            0.0000000000000000e+000                               
     .              end do                                                      
     .           end do                                                         
     .  !CDIR    NODEP                                                          
     .           do t80 = J3 + 1, aa_intz_aaz.DESCRIPT.RETVAL.DSC.U2 + 1 -      
     .       1      aa_intz_aaz.DESCRIPT.RETVAL.DSC.L2, 4                       
     .  !CDIR       NODEP                                                       
     .              do t82 = 1, aa_intz_aaz.DESCRIPT.RETVAL.DSC.U1 + 1 -        
     .       1         aa_intz_aaz.DESCRIPT.RETVAL.DSC.L1                       
     .                 aa_intz_aaz(aa_intz_aaz.DESCRIPT.RETVAL.DSC.L1+t82-1,t80-
     .       1            1+aa_intz_aaz.DESCRIPT.RETVAL.DSC.L2) =               
     .       2            0.0000000000000000e+000                               
     .                 aa_intz_aaz(aa_intz_aaz.DESCRIPT.RETVAL.DSC.L1+t82-1,t80+
     .       1            aa_intz_aaz.DESCRIPT.RETVAL.DSC.L2) =                 
     .       2            0.0000000000000000e+000                               
     .                 aa_intz_aaz(aa_intz_aaz.DESCRIPT.RETVAL.DSC.L1+t82-1,t80+
     .       1            1+aa_intz_aaz.DESCRIPT.RETVAL.DSC.L2) =               
     .       2            0.0000000000000000e+000                               
     .                 aa_intz_aaz(aa_intz_aaz.DESCRIPT.RETVAL.DSC.L1+t82-1,t80+
     .       1            2+aa_intz_aaz.DESCRIPT.RETVAL.DSC.L2) =               
     .       2            0.0000000000000000e+000                               
     .              end do                                                      
     .           end do                                                         
     .        endif                                                             
   818  
   819      ! 積分
   820      do jy = jmin, jmax
   821        do ix = imin, imax
   822          aa_IntZ_aaz(ix,jy) = IntZ_z(aaz_Var(ix,jy,:))
     .  !CDIR NODEP                                                             
     .        do t86 = 1, kmax + 1 - kmin                                       
     .           %IG60(t86) = aaz_var(ix,jy,t16+t86-1)                          
     .        end do                                                            
     .        intz_z = 0.0000000000000000e+000                                  
     .        t19 = 0.0000000000000000e+000                                     
     .  !CDIR NODEP                                                             
     .        do t221 = 1, nz                                                   
     .           t19 = t19 + %IG60(%IG60.DSC.L1-kmin+t221)*z_dz(t221)           
     .        end do                                                            
     .        intz_z = t19                                                      
     .        t65 = intz_z                                                      
     .  C*****  End of Code Expanded From Routine:  intz_z                      
   823        end do
   824      end do
   825  
   826    end function aa_IntZ_aaz
   827    !--------------------------------------------------------------------
   828    function xy_IntZ_xyr(xyr_Var)
   829      ! xyr 格子上の配列に対し z 方向積分を行う
   830  
   831      real(DP), intent(in) :: xyr_Var(imin:imax,jmin:jmax,kmin:kmax) ! 入力
   832      real(DP)             :: xy_IntZ_xyr(imin:imax,jmin:jmax)       ! 出力
   833      integer                  :: ix, jy                           ! ループ添字
   834  
   835      ! 初期化
   836      xy_IntZ_xyr = 0.0d0
     .        if (xy_intz_xyr.DESCRIPT.RETVAL.DSC.U2 + 1 -                      
     .       1   xy_intz_xyr.DESCRIPT.RETVAL.DSC.L2 .gt. 0) then                
     .           J3 = and(xy_intz_xyr.DESCRIPT.RETVAL.DSC.U2 + 1 -              
     .       1      xy_intz_xyr.DESCRIPT.RETVAL.DSC.L2,3)                       
     .  !CDIR    NODEP                                                          
     .           do t80 = 1, J3                                                 
     .  !CDIR       NODEP                                                       
     .              do t82 = 1, xy_intz_xyr.DESCRIPT.RETVAL.DSC.U1 + 1 -        
     .       1         xy_intz_xyr.DESCRIPT.RETVAL.DSC.L1                       
     .                 xy_intz_xyr(xy_intz_xyr.DESCRIPT.RETVAL.DSC.L1+t82-1,t80-
     .       1            1+xy_intz_xyr.DESCRIPT.RETVAL.DSC.L2) =               
     .       2            0.0000000000000000e+000                               
     .              end do                                                      
     .           end do                                                         
     .  !CDIR    NODEP                                                          
     .           do t80 = J3 + 1, xy_intz_xyr.DESCRIPT.RETVAL.DSC.U2 + 1 -      
     .       1      xy_intz_xyr.DESCRIPT.RETVAL.DSC.L2, 4                       
     .  !CDIR       NODEP                                                       
     .              do t82 = 1, xy_intz_xyr.DESCRIPT.RETVAL.DSC.U1 + 1 -        
     .       1         xy_intz_xyr.DESCRIPT.RETVAL.DSC.L1                       
     .                 xy_intz_xyr(xy_intz_xyr.DESCRIPT.RETVAL.DSC.L1+t82-1,t80-
     .       1            1+xy_intz_xyr.DESCRIPT.RETVAL.DSC.L2) =               
     .       2            0.0000000000000000e+000                               
     .                 xy_intz_xyr(xy_intz_xyr.DESCRIPT.RETVAL.DSC.L1+t82-1,t80+
     .       1            xy_intz_xyr.DESCRIPT.RETVAL.DSC.L2) =                 
     .       2            0.0000000000000000e+000                               
     .                 xy_intz_xyr(xy_intz_xyr.DESCRIPT.RETVAL.DSC.L1+t82-1,t80+
     .       1            1+xy_intz_xyr.DESCRIPT.RETVAL.DSC.L2) =               
     .       2            0.0000000000000000e+000                               
     .                 xy_intz_xyr(xy_intz_xyr.DESCRIPT.RETVAL.DSC.L1+t82-1,t80+
     .       1            2+xy_intz_xyr.DESCRIPT.RETVAL.DSC.L2) =               
     .       2            0.0000000000000000e+000                               
     .              end do                                                      
     .           end do                                                         
     .        endif                                                             
   837  
   838      ! 積分
   839      do jy = jmin, jmax
   840        do ix = imin, imax
   841          xy_IntZ_xyr(ix,jy) = IntZ_r(xyr_Var(ix,jy,:))
     .  !CDIR NODEP                                                             
     .        do t86 = 1, kmax + 1 - kmin                                       
     .           %IG63(t86) = xyr_var(ix,jy,t16+t86-1)                          
     .        end do                                                            
     .        intz_r = 0.0000000000000000e+000                                  
     .        t19 = 0.0000000000000000e+000                                     
     .  !CDIR NODEP                                                             
     .        do t221 = 1, nz                                                   
     .           t19 = t19 + %IG63(%IG63.DSC.L1-kmin+t221)*r_dz(t221)           
     .        end do                                                            
     .        intz_r = t19                                                      
     .        t65 = intz_r                                                      
     .  C*****  End of Code Expanded From Routine:  intz_r                      
   842        end do
   843      end do
   844  
   845    end function xy_IntZ_xyr
   846    !--------------------------------------------------------------------
   847    function a_IntXY_xya(xya_Var)
   848      ! xya 格子上の配列に対し xy 方向積分を行う
   849  
   850      real(DP), intent(in) :: xya_Var(imin:imax,jmin:jmax,kmin:kmax) ! 入力
   851      real(DP)             :: a_IntXY_xya(kmin:kmax)       ! 出力
   852      integer                  :: kz                           ! ループ添字
   853  
   854      ! 初期化
   855      a_IntXY_xya = 0.0d0
     .  !CDIR NODEP                                                             
     .        do t58 = 0, a_intxy_xya.DESCRIPT.RETVAL.DSC.U1 -                  
     .       1   a_intxy_xya.DESCRIPT.RETVAL.DSC.L1                             
   856  
   857      ! 積分
   858      do kz = kmin, kmax
   859        a_IntXY_xya(kz) = IntY_y(y_IntX_xy(xya_Var(:,:,kz)))
     .           inty_y = 0.0000000000000000e+000                               
     .        t191 = 0.0000000000000000e+000                                    
     .  !CDIR NODEP                                                             
     .        do t221 = 1, ny                                                   
     .           t191 = t191 + %000ddf(%000ddf.DSC.L1-jmin+t221)*y_dy(t221)     
     .        end do                                                            
     .        inty_y = t191                                                     
     .        t49 = inty_y                                                      
     .  C*****  End of Code Expanded From Routine:  inty_y                      
   860      end do
   861  
   862    end function a_IntXY_xya
   863    !--------------------------------------------------------------------
   864    function z_IntXY_pyz(pyz_Var)
   865      ! pyz 格子上の配列に対し xy 方向積分を行う
   866  
   867      real(DP), intent(in) :: pyz_Var(imin:imax,jmin:jmax,kmin:kmax) ! 入力
   868      real(DP)             :: z_IntXY_pyz(kmin:kmax)       ! 出力
   869      integer                  :: kz                           ! ループ添字
   870  
   871      ! 初期化
   872      z_IntXY_pyz = 0.0d0
     .  !CDIR NODEP                                                             
     .        do t58 = 0, z_intxy_pyz.DESCRIPT.RETVAL.DSC.U1 -                  
     .       1   z_intxy_pyz.DESCRIPT.RETVAL.DSC.L1                             
   873  
   874      ! 積分
   875      do kz = kmin, kmax
   876        z_IntXY_pyz(kz) = IntY_y(y_IntX_py(pyz_Var(:,:,kz)))
     .           inty_y = 0.0000000000000000e+000                               
     .        t191 = 0.0000000000000000e+000                                    
     .  !CDIR NODEP                                                             
     .        do t221 = 1, ny                                                   
     .           t191 = t191 + %000deb(%000deb.DSC.L1-jmin+t221)*y_dy(t221)     
     .        end do                                                            
     .        inty_y = t191                                                     
     .        t49 = inty_y                                                      
     .  C*****  End of Code Expanded From Routine:  inty_y                      
   877      end do
   878  
   879    end function z_IntXY_pyz
   880    !--------------------------------------------------------------------
   881    function z_IntXY_xqz(xqz_Var)
   882      ! xqz 格子上の配列に対し xy 方向積分を行う
   883  
   884      real(DP), intent(in) :: xqz_Var(imin:imax,jmin:jmax,kmin:kmax) ! 入力
   885      real(DP)             :: z_IntXY_xqz(kmin:kmax)       ! 出力
   886      integer                  :: kz                           ! ループ添字
   887  
   888      ! 初期化
   889      z_IntXY_xqz = 0.0d0
     .  !CDIR NODEP                                                             
     .        do t58 = 0, z_intxy_xqz.DESCRIPT.RETVAL.DSC.U1 -                  
     .       1   z_intxy_xqz.DESCRIPT.RETVAL.DSC.L1                             
   890  
   891      ! 積分
   892      do kz = kmin, kmax
   893        z_IntXY_xqz(kz) = IntY_q(q_IntX_xq(xqz_Var(:,:,kz)))
     .           inty_q = 0.0000000000000000e+000                               
     .        t191 = 0.0000000000000000e+000                                    
     .  !CDIR NODEP                                                             
     .        do t221 = 1, ny                                                   
     .           t191 = t191 + %000df7(%000df7.DSC.L1-jmin+t221)*q_dy(t221)     
     .        end do                                                            
     .        inty_q = t191                                                     
     .        t49 = inty_q                                                      
     .  C*****  End of Code Expanded From Routine:  inty_q                      
   894      end do
   895  
   896    end function z_IntXY_xqz
   897    !--------------------------------------------------------------------
   898    function IntXYZ_xyz(xyz_Var)
   899      ! xyz 格子上の配列に対し領域積分を行う
   900  
   901      real(DP), intent(in) :: xyz_Var(imin:imax,jmin:jmax,kmin:kmax) ! 入力
   902      real(DP)             :: IntXYZ_xyz                             ! 出力
   903  
   904      ! 初期化
   905      IntXYZ_xyz = 0.0d0
   906  
   907      IntXYZ_xyz = IntZ_z(a_IntXY_xya(xyz_Var))
     .        intz_z = 0.0000000000000000e+000                                  
     .        t191 = 0.0000000000000000e+000                                    
     .  !CDIR NODEP                                                             
     .        do t221 = 0, nz - 1                                               
     .           t191 = t191 + %000dff(t221+1+%000dff.DSC.L1-kmin)*z_dz(t221+1) 
     .        end do                                                            
     .        intz_z = t191                                                     
     .        t26 = intz_z                                                      
     .  C*****  End of Code Expanded From Routine:  intz_z                      
   908  
   909    end function IntXYZ_xyz
   910    !--------------------------------------------------------------------
   911    function IntXYZ_pyz(pyz_Var)
   912      ! pyz 格子上の配列に対し領域積分を行う
   913  
   914      real(DP), intent(in) :: pyz_Var(imin:imax,jmin:jmax,kmin:kmax) ! 入力
   915      real(DP)             :: IntXYZ_pyz                             ! 出力
   916  
   917      ! 初期化
   918      IntXYZ_pyz = 0.0d0
   919  
   920      IntXYZ_pyz = IntZ_z(z_IntXY_pyz(pyz_Var))
     .        intz_z = 0.0000000000000000e+000                                  
     .        t191 = 0.0000000000000000e+000                                    
     .  !CDIR NODEP                                                             
     .        do t221 = 0, nz - 1                                               
     .           t191 = t191 + %000e07(t221+1+%000e07.DSC.L1-kmin)*z_dz(t221+1) 
     .        end do                                                            
     .        intz_z = t191                                                     
     .        t26 = intz_z                                                      
     .  C*****  End of Code Expanded From Routine:  intz_z                      
   921  
   922    end function IntXYZ_pyz
   923    !--------------------------------------------------------------------
   924    function IntXYZ_xqz(xqz_Var)
   925      ! xqz 格子上の配列に対し領域積分を行う
   926  
   927      real(DP), intent(in) :: xqz_Var(imin:imax,jmin:jmax,kmin:kmax) ! 入力
   928      real(DP)             :: IntXYZ_xqz                             ! 出力
   929  
   930      ! 初期化
   931      IntXYZ_xqz = 0.0d0
   932  
   933      IntXYZ_xqz = IntZ_z(z_IntXY_xqz(xqz_Var))
     .        intz_z = 0.0000000000000000e+000                                  
     .        t191 = 0.0000000000000000e+000                                    
     .  !CDIR NODEP                                                             
     .        do t221 = 0, nz - 1                                               
     .           t191 = t191 + %000e0f(t221+1+%000e0f.DSC.L1-kmin)*z_dz(t221+1) 
     .        end do                                                            
     .        intz_z = t191                                                     
     .        t26 = intz_z                                                      
     .  C*****  End of Code Expanded From Routine:  intz_z                      
   934  
   935    end function IntXYZ_xqz
   936    !--------------------------------------------------------------------
   937    function IntXYZ_xyr(xyr_Var)
   938      ! xyr 格子上の配列に対し領域積分を行う
   939  
   940      real(DP), intent(in) :: xyr_Var(imin:imax,jmin:jmax,kmin:kmax) ! 入力
   941      real(DP)             :: IntXYZ_xyr                             ! 出力
   942  
   943      ! 初期化
   944      IntXYZ_xyr = 0.0d0
   945  
   946      IntXYZ_xyr = IntZ_r(a_IntXY_xya(xyr_Var))
     .        intz_r = 0.0000000000000000e+000                                  
     .        t191 = 0.0000000000000000e+000                                    
     .  !CDIR NODEP                                                             
     .        do t221 = 0, nz - 1                                               
     .           t191 = t191 + %000e17(t221+1+%000e17.DSC.L1-kmin)*r_dz(t221+1) 
     .        end do                                                            
     .        intz_r = t191                                                     
     .        t26 = intz_r                                                      
     .  C*****  End of Code Expanded From Routine:  intz_r                      
   947  
   948    end function IntXYZ_xyr
   949    !--------------------------------------------------------------------
   950    function aa_AvrX_xaa(xaa_Var)
   951      ! xaa 格子上の配列に対し x 方向平均を行う
   952  
   953      real(DP), intent(in) :: xaa_Var(imin:imax,jmin:jmax,kmin:kmax) ! 入力
   954      real(DP)             :: aa_AvrX_xaa(jmin:jmax,kmin:kmax)       ! 出力
   955  
   956      ! 初期化
   957      aa_AvrX_xaa = 0.0d0
     .        if (aa_avrx_xaa.DESCRIPT.RETVAL.DSC.U2 -                          
     .       1   aa_avrx_xaa.DESCRIPT.RETVAL.DSC.L2 + 2 - min0(1,               
     .       2   aa_avrx_xaa.DESCRIPT.RETVAL.DSC.U2 -                           
     .       3   aa_avrx_xaa.DESCRIPT.RETVAL.DSC.L2 + 1) .gt. 0) then           
     .           J1 = and(aa_avrx_xaa.DESCRIPT.RETVAL.DSC.U2 -                  
     .       1      aa_avrx_xaa.DESCRIPT.RETVAL.DSC.L2 + 2 - min0(1,            
     .       2      aa_avrx_xaa.DESCRIPT.RETVAL.DSC.U2 -                        
     .       3      aa_avrx_xaa.DESCRIPT.RETVAL.DSC.L2 + 1),1)                  
     .  !CDIR    NODEP                                                          
     .           do t69 = 1, J1                                                 
     .              D1 = 1.D0/t58                                               
     .  !CDIR       NODEP                                                       
     .              do t71 = 1, aa_avrx_xaa.DESCRIPT.RETVAL.DSC.U1 -            
     .       1         aa_avrx_xaa.DESCRIPT.RETVAL.DSC.L1 + 2 - min0(1,         
     .       2         aa_avrx_xaa.DESCRIPT.RETVAL.DSC.U1 -                     
     .       3         aa_avrx_xaa.DESCRIPT.RETVAL.DSC.L1 + 1)                  
     .                 aa_avrx_xaa(aa_avrx_xaa.DESCRIPT.RETVAL.DSC.L1+t71-1,t69-
     .       1            1+aa_avrx_xaa.DESCRIPT.RETVAL.DSC.L2) =               
     .       2            0.0000000000000000e+000                               
     .                 aa_avrx_xaa(aa_avrx_xaa.DESCRIPT.RETVAL.DSC.L1+t71-1,t69-
     .       1            1+aa_avrx_xaa.DESCRIPT.RETVAL.DSC.L2) = %000e23(t6+t71
     .       2            -1,t69-1+t8)*D1                                       
     .              end do                                                      
     .           end do                                                         
     .  !CDIR    NODEP                                                          
     .           do t69 = J1 + 1, aa_avrx_xaa.DESCRIPT.RETVAL.DSC.U2 -          
     .       1      aa_avrx_xaa.DESCRIPT.RETVAL.DSC.L2 + 2 - min0(1,            
     .       2      aa_avrx_xaa.DESCRIPT.RETVAL.DSC.U2 -                        
     .       3      aa_avrx_xaa.DESCRIPT.RETVAL.DSC.L2 + 1), 2                  
     .              D2 = 1.D0/t58                                               
     .              D3 = 1.D0/t58                                               
     .  !CDIR       NODEP                                                       
     .              do t71 = 1, aa_avrx_xaa.DESCRIPT.RETVAL.DSC.U1 -            
     .       1         aa_avrx_xaa.DESCRIPT.RETVAL.DSC.L1 + 2 - min0(1,         
     .       2         aa_avrx_xaa.DESCRIPT.RETVAL.DSC.U1 -                     
     .       3         aa_avrx_xaa.DESCRIPT.RETVAL.DSC.L1 + 1)                  
     .                 aa_avrx_xaa(aa_avrx_xaa.DESCRIPT.RETVAL.DSC.L1+t71-1,t69-
     .       1            1+aa_avrx_xaa.DESCRIPT.RETVAL.DSC.L2) =               
     .       2            0.0000000000000000e+000                               
     .                 aa_avrx_xaa(aa_avrx_xaa.DESCRIPT.RETVAL.DSC.L1+t71-1,t69+
     .       1            aa_avrx_xaa.DESCRIPT.RETVAL.DSC.L2) =                 
     .       2            0.0000000000000000e+000                               
     .                 aa_avrx_xaa(aa_avrx_xaa.DESCRIPT.RETVAL.DSC.L1+t71-1,t69-
     .       1            1+aa_avrx_xaa.DESCRIPT.RETVAL.DSC.L2) = %000e23(t6+t71
     .       2            -1,t69-1+t8)*D2                                       
     .                 aa_avrx_xaa(aa_avrx_xaa.DESCRIPT.RETVAL.DSC.L1+t71-1,t69+
     .       1            aa_avrx_xaa.DESCRIPT.RETVAL.DSC.L2) = %000e23(t6+t71-1
     .       2            ,t69+t8)*D3                                           
     .              end do                                                      
     .           end do                                                         
     .        endif                                                             
     .        go to 10010                                                       
   958  
   959      ! 平均
   960      aa_AvrX_xaa = aa_IntX_xaa(xaa_Var)/sum(x_dx(1:nx))
   961  
   962    end function aa_AvrX_xaa
   963    !--------------------------------------------------------------------
   964    function yz_AvrX_pyz(pyz_Var)
   965      ! pyz 格子上の配列に対し x 方向平均を行う
   966  
   967      real(DP), intent(in) :: pyz_Var(imin:imax,jmin:jmax,kmin:kmax) ! 入力
   968      real(DP)             :: yz_AvrX_pyz(jmin:jmax,kmin:kmax)       ! 出力
   969  
   970      ! 初期化
   971      yz_AvrX_pyz = 0.0d0
     .           if (yz_avrx_pyz.DESCRIPT.RETVAL.DSC.U2 -                       
     .       1   yz_avrx_pyz.DESCRIPT.RETVAL.DSC.L2 + 2 - min0(1,               
     .       2   yz_avrx_pyz.DESCRIPT.RETVAL.DSC.U2 -                           
     .       3   yz_avrx_pyz.DESCRIPT.RETVAL.DSC.L2 + 1) .gt. 0) then           
     .           J1 = and(yz_avrx_pyz.DESCRIPT.RETVAL.DSC.U2 -                  
     .       1      yz_avrx_pyz.DESCRIPT.RETVAL.DSC.L2 + 2 - min0(1,            
     .       2      yz_avrx_pyz.DESCRIPT.RETVAL.DSC.U2 -                        
     .       3      yz_avrx_pyz.DESCRIPT.RETVAL.DSC.L2 + 1),1)                  
     .  !CDIR    NODEP                                                          
     .           do t69 = 1, J1                                                 
     .              D1 = 1.D0/t58                                               
     .  !CDIR       NODEP                                                       
     .              do t71 = 1, yz_avrx_pyz.DESCRIPT.RETVAL.DSC.U1 -            
     .       1         yz_avrx_pyz.DESCRIPT.RETVAL.DSC.L1 + 2 - min0(1,         
     .       2         yz_avrx_pyz.DESCRIPT.RETVAL.DSC.U1 -                     
     .       3         yz_avrx_pyz.DESCRIPT.RETVAL.DSC.L1 + 1)                  
     .                 yz_avrx_pyz(yz_avrx_pyz.DESCRIPT.RETVAL.DSC.L1+t71-1,t69-
     .       1            1+yz_avrx_pyz.DESCRIPT.RETVAL.DSC.L2) =               
     .       2            0.0000000000000000e+000                               
     .                 yz_avrx_pyz(yz_avrx_pyz.DESCRIPT.RETVAL.DSC.L1+t71-1,t69-
     .       1            1+yz_avrx_pyz.DESCRIPT.RETVAL.DSC.L2) = %000e33(t6+t71
     .       2            -1,t69-1+t8)*D1                                       
     .              end do                                                      
     .           end do                                                         
     .  !CDIR    NODEP                                                          
     .           do t69 = J1 + 1, yz_avrx_pyz.DESCRIPT.RETVAL.DSC.U2 -          
     .       1      yz_avrx_pyz.DESCRIPT.RETVAL.DSC.L2 + 2 - min0(1,            
     .       2      yz_avrx_pyz.DESCRIPT.RETVAL.DSC.U2 -                        
     .       3      yz_avrx_pyz.DESCRIPT.RETVAL.DSC.L2 + 1), 2                  
     .              D2 = 1.D0/t58                                               
     .              D3 = 1.D0/t58                                               
     .  !CDIR       NODEP                                                       
     .              do t71 = 1, yz_avrx_pyz.DESCRIPT.RETVAL.DSC.U1 -            
     .       1         yz_avrx_pyz.DESCRIPT.RETVAL.DSC.L1 + 2 - min0(1,         
     .       2         yz_avrx_pyz.DESCRIPT.RETVAL.DSC.U1 -                     
     .       3         yz_avrx_pyz.DESCRIPT.RETVAL.DSC.L1 + 1)                  
     .                 yz_avrx_pyz(yz_avrx_pyz.DESCRIPT.RETVAL.DSC.L1+t71-1,t69-
     .       1            1+yz_avrx_pyz.DESCRIPT.RETVAL.DSC.L2) =               
     .       2            0.0000000000000000e+000                               
     .                 yz_avrx_pyz(yz_avrx_pyz.DESCRIPT.RETVAL.DSC.L1+t71-1,t69+
     .       1            yz_avrx_pyz.DESCRIPT.RETVAL.DSC.L2) =                 
     .       2            0.0000000000000000e+000                               
     .                 yz_avrx_pyz(yz_avrx_pyz.DESCRIPT.RETVAL.DSC.L1+t71-1,t69-
     .       1            1+yz_avrx_pyz.DESCRIPT.RETVAL.DSC.L2) = %000e33(t6+t71
     .       2            -1,t69-1+t8)*D2                                       
     .                 yz_avrx_pyz(yz_avrx_pyz.DESCRIPT.RETVAL.DSC.L1+t71-1,t69+
     .       1            yz_avrx_pyz.DESCRIPT.RETVAL.DSC.L2) = %000e33(t6+t71-1
     .       2            ,t69+t8)*D3                                           
     .              end do                                                      
     .           end do                                                         
     .        endif                                                             
     .        go to 10010                                                       
   972  
   973      ! 平均
   974      yz_AvrX_pyz = yz_IntX_pyz(pyz_Var)/sum(x_dx(1:nx))
   975  
   976    end function yz_AvrX_pyz
   977    !--------------------------------------------------------------------
   978    function aa_AvrY_aya(aya_Var)
   979      ! aya 格子上の配列に対し y 方向平均を行う
   980  
   981      real(DP), intent(in) :: aya_Var(imin:imax,jmin:jmax,kmin:kmax) ! 入力
   982      real(DP)             :: aa_AvrY_aya(imin:imax,kmin:kmax)       ! 出力
   983  
   984      ! 初期化
   985      aa_AvrY_aya = 0.0d0
     .           if (aa_avry_aya.DESCRIPT.RETVAL.DSC.U2 -                       
     .       1   aa_avry_aya.DESCRIPT.RETVAL.DSC.L2 + 2 - min0(1,               
     .       2   aa_avry_aya.DESCRIPT.RETVAL.DSC.U2 -                           
     .       3   aa_avry_aya.DESCRIPT.RETVAL.DSC.L2 + 1) .gt. 0) then           
     .           J1 = and(aa_avry_aya.DESCRIPT.RETVAL.DSC.U2 -                  
     .       1      aa_avry_aya.DESCRIPT.RETVAL.DSC.L2 + 2 - min0(1,            
     .       2      aa_avry_aya.DESCRIPT.RETVAL.DSC.U2 -                        
     .       3      aa_avry_aya.DESCRIPT.RETVAL.DSC.L2 + 1),1)                  
     .  !CDIR    NODEP                                                          
     .           do t69 = 1, J1                                                 
     .              D1 = 1.D0/t58                                               
     .  !CDIR       NODEP                                                       
     .              do t71 = 1, aa_avry_aya.DESCRIPT.RETVAL.DSC.U1 -            
     .       1         aa_avry_aya.DESCRIPT.RETVAL.DSC.L1 + 2 - min0(1,         
     .       2         aa_avry_aya.DESCRIPT.RETVAL.DSC.U1 -                     
     .       3         aa_avry_aya.DESCRIPT.RETVAL.DSC.L1 + 1)                  
     .                 aa_avry_aya(aa_avry_aya.DESCRIPT.RETVAL.DSC.L1+t71-1,t69-
     .       1            1+aa_avry_aya.DESCRIPT.RETVAL.DSC.L2) =               
     .       2            0.0000000000000000e+000                               
     .                 aa_avry_aya(aa_avry_aya.DESCRIPT.RETVAL.DSC.L1+t71-1,t69-
     .       1            1+aa_avry_aya.DESCRIPT.RETVAL.DSC.L2) = %000e43(t6+t71
     .       2            -1,t69-1+t8)*D1                                       
     .              end do                                                      
     .           end do                                                         
     .  !CDIR    NODEP                                                          
     .           do t69 = J1 + 1, aa_avry_aya.DESCRIPT.RETVAL.DSC.U2 -          
     .       1      aa_avry_aya.DESCRIPT.RETVAL.DSC.L2 + 2 - min0(1,            
     .       2      aa_avry_aya.DESCRIPT.RETVAL.DSC.U2 -                        
     .       3      aa_avry_aya.DESCRIPT.RETVAL.DSC.L2 + 1), 2                  
     .              D2 = 1.D0/t58                                               
     .              D3 = 1.D0/t58                                               
     .  !CDIR       NODEP                                                       
     .              do t71 = 1, aa_avry_aya.DESCRIPT.RETVAL.DSC.U1 -            
     .       1         aa_avry_aya.DESCRIPT.RETVAL.DSC.L1 + 2 - min0(1,         
     .       2         aa_avry_aya.DESCRIPT.RETVAL.DSC.U1 -                     
     .       3         aa_avry_aya.DESCRIPT.RETVAL.DSC.L1 + 1)                  
     .                 aa_avry_aya(aa_avry_aya.DESCRIPT.RETVAL.DSC.L1+t71-1,t69-
     .       1            1+aa_avry_aya.DESCRIPT.RETVAL.DSC.L2) =               
     .       2            0.0000000000000000e+000                               
     .                 aa_avry_aya(aa_avry_aya.DESCRIPT.RETVAL.DSC.L1+t71-1,t69+
     .       1            aa_avry_aya.DESCRIPT.RETVAL.DSC.L2) =                 
     .       2            0.0000000000000000e+000                               
     .                 aa_avry_aya(aa_avry_aya.DESCRIPT.RETVAL.DSC.L1+t71-1,t69-
     .       1            1+aa_avry_aya.DESCRIPT.RETVAL.DSC.L2) = %000e43(t6+t71
     .       2            -1,t69-1+t8)*D2                                       
     .                 aa_avry_aya(aa_avry_aya.DESCRIPT.RETVAL.DSC.L1+t71-1,t69+
     .       1            aa_avry_aya.DESCRIPT.RETVAL.DSC.L2) = %000e43(t6+t71-1
     .       2            ,t69+t8)*D3                                           
     .              end do                                                      
     .           end do                                                         
     .        endif                                                             
     .        go to 10010                                                       
   986  
   987      ! 平均
   988      aa_AvrY_aya = aa_IntY_aya(aya_Var)/sum(y_dy(1:ny))
   989  
   990    end function aa_AvrY_aya
   991    !--------------------------------------------------------------------
   992    function xz_AvrY_xqz(xqz_Var)
   993      ! xqz 格子上の配列に対し y 方向平均を行う
   994  
   995      real(DP), intent(in) :: xqz_Var(imin:imax,jmin:jmax,kmin:kmax) ! 入力
   996      real(DP)             :: xz_AvrY_xqz(imin:imax,kmin:kmax)       ! 出力
   997  
   998      ! 初期化
   999      xz_AvrY_xqz = 0.0d0
     .           if (xz_avry_xqz.DESCRIPT.RETVAL.DSC.U2 -                       
     .       1   xz_avry_xqz.DESCRIPT.RETVAL.DSC.L2 + 2 - min0(1,               
     .       2   xz_avry_xqz.DESCRIPT.RETVAL.DSC.U2 -                           
     .       3   xz_avry_xqz.DESCRIPT.RETVAL.DSC.L2 + 1) .gt. 0) then           
     .           J1 = and(xz_avry_xqz.DESCRIPT.RETVAL.DSC.U2 -                  
     .       1      xz_avry_xqz.DESCRIPT.RETVAL.DSC.L2 + 2 - min0(1,            
     .       2      xz_avry_xqz.DESCRIPT.RETVAL.DSC.U2 -                        
     .       3      xz_avry_xqz.DESCRIPT.RETVAL.DSC.L2 + 1),1)                  
     .  !CDIR    NODEP                                                          
     .           do t69 = 1, J1                                                 
     .              D1 = 1.D0/t58                                               
     .  !CDIR       NODEP                                                       
     .              do t71 = 1, xz_avry_xqz.DESCRIPT.RETVAL.DSC.U1 -            
     .       1         xz_avry_xqz.DESCRIPT.RETVAL.DSC.L1 + 2 - min0(1,         
     .       2         xz_avry_xqz.DESCRIPT.RETVAL.DSC.U1 -                     
     .       3         xz_avry_xqz.DESCRIPT.RETVAL.DSC.L1 + 1)                  
     .                 xz_avry_xqz(xz_avry_xqz.DESCRIPT.RETVAL.DSC.L1+t71-1,t69-
     .       1            1+xz_avry_xqz.DESCRIPT.RETVAL.DSC.L2) =               
     .       2            0.0000000000000000e+000                               
     .                 xz_avry_xqz(xz_avry_xqz.DESCRIPT.RETVAL.DSC.L1+t71-1,t69-
     .       1            1+xz_avry_xqz.DESCRIPT.RETVAL.DSC.L2) = %000e53(t6+t71
     .       2            -1,t69-1+t8)*D1                                       
     .              end do                                                      
     .           end do                                                         
     .  !CDIR    NODEP                                                          
     .           do t69 = J1 + 1, xz_avry_xqz.DESCRIPT.RETVAL.DSC.U2 -          
     .       1      xz_avry_xqz.DESCRIPT.RETVAL.DSC.L2 + 2 - min0(1,            
     .       2      xz_avry_xqz.DESCRIPT.RETVAL.DSC.U2 -                        
     .       3      xz_avry_xqz.DESCRIPT.RETVAL.DSC.L2 + 1), 2                  
     .              D2 = 1.D0/t58                                               
     .              D3 = 1.D0/t58                                               
     .  !CDIR       NODEP                                                       
     .              do t71 = 1, xz_avry_xqz.DESCRIPT.RETVAL.DSC.U1 -            
     .       1         xz_avry_xqz.DESCRIPT.RETVAL.DSC.L1 + 2 - min0(1,         
     .       2         xz_avry_xqz.DESCRIPT.RETVAL.DSC.U1 -                     
     .       3         xz_avry_xqz.DESCRIPT.RETVAL.DSC.L1 + 1)                  
     .                 xz_avry_xqz(xz_avry_xqz.DESCRIPT.RETVAL.DSC.L1+t71-1,t69-
     .       1            1+xz_avry_xqz.DESCRIPT.RETVAL.DSC.L2) =               
     .       2            0.0000000000000000e+000                               
     .                 xz_avry_xqz(xz_avry_xqz.DESCRIPT.RETVAL.DSC.L1+t71-1,t69+
     .       1            xz_avry_xqz.DESCRIPT.RETVAL.DSC.L2) =                 
     .       2            0.0000000000000000e+000                               
     .                 xz_avry_xqz(xz_avry_xqz.DESCRIPT.RETVAL.DSC.L1+t71-1,t69-
     .       1            1+xz_avry_xqz.DESCRIPT.RETVAL.DSC.L2) = %000e53(t6+t71
     .       2            -1,t69-1+t8)*D2                                       
     .                 xz_avry_xqz(xz_avry_xqz.DESCRIPT.RETVAL.DSC.L1+t71-1,t69+
     .       1            xz_avry_xqz.DESCRIPT.RETVAL.DSC.L2) = %000e53(t6+t71-1
     .       2            ,t69+t8)*D3                                           
     .              end do                                                      
     .           end do                                                         
     .        endif                                                             
     .        go to 10010                                                       
  1000  
  1001      ! 平均
  1002      xz_AvrY_xqz = xz_IntY_xqz(xqz_Var)/sum(y_dy(1:ny))
  1003  
  1004    end function xz_AvrY_xqz
  1005    !--------------------------------------------------------------------
  1006    function aa_AvrZ_aaz(aaz_Var)
  1007      ! aaz 格子上の配列に対し z 方向平均を行う
  1008  
  1009      real(DP), intent(in) :: aaz_Var(imin:imax,jmin:jmax,kmin:kmax) ! 入力
  1010      real(DP)             :: aa_AvrZ_aaz(imin:imax,jmin:jmax)       ! 出力
  1011  
  1012      ! 初期化
  1013      aa_AvrZ_aaz = 0.0d0
     .           if (aa_avrz_aaz.DESCRIPT.RETVAL.DSC.U2 -                       
     .       1   aa_avrz_aaz.DESCRIPT.RETVAL.DSC.L2 + 2 - min0(1,               
     .       2   aa_avrz_aaz.DESCRIPT.RETVAL.DSC.U2 -                           
     .       3   aa_avrz_aaz.DESCRIPT.RETVAL.DSC.L2 + 1) .gt. 0) then           
     .           J1 = and(aa_avrz_aaz.DESCRIPT.RETVAL.DSC.U2 -                  
     .       1      aa_avrz_aaz.DESCRIPT.RETVAL.DSC.L2 + 2 - min0(1,            
     .       2      aa_avrz_aaz.DESCRIPT.RETVAL.DSC.U2 -                        
     .       3      aa_avrz_aaz.DESCRIPT.RETVAL.DSC.L2 + 1),1)                  
     .  !CDIR    NODEP                                                          
     .           do t69 = 1, J1                                                 
     .              D1 = 1.D0/t58                                               
     .  !CDIR       NODEP                                                       
     .              do t71 = 1, aa_avrz_aaz.DESCRIPT.RETVAL.DSC.U1 -            
     .       1         aa_avrz_aaz.DESCRIPT.RETVAL.DSC.L1 + 2 - min0(1,         
     .       2         aa_avrz_aaz.DESCRIPT.RETVAL.DSC.U1 -                     
     .       3         aa_avrz_aaz.DESCRIPT.RETVAL.DSC.L1 + 1)                  
     .                 aa_avrz_aaz(aa_avrz_aaz.DESCRIPT.RETVAL.DSC.L1+t71-1,t69-
     .       1            1+aa_avrz_aaz.DESCRIPT.RETVAL.DSC.L2) =               
     .       2            0.0000000000000000e+000                               
     .                 aa_avrz_aaz(aa_avrz_aaz.DESCRIPT.RETVAL.DSC.L1+t71-1,t69-
     .       1            1+aa_avrz_aaz.DESCRIPT.RETVAL.DSC.L2) = %000e63(t6+t71
     .       2            -1,t69-1+t8)*D1                                       
     .              end do                                                      
     .           end do                                                         
     .  !CDIR    NODEP                                                          
     .           do t69 = J1 + 1, aa_avrz_aaz.DESCRIPT.RETVAL.DSC.U2 -          
     .       1      aa_avrz_aaz.DESCRIPT.RETVAL.DSC.L2 + 2 - min0(1,            
     .       2      aa_avrz_aaz.DESCRIPT.RETVAL.DSC.U2 -                        
     .       3      aa_avrz_aaz.DESCRIPT.RETVAL.DSC.L2 + 1), 2                  
     .              D2 = 1.D0/t58                                               
     .              D3 = 1.D0/t58                                               
     .  !CDIR       NODEP                                                       
     .              do t71 = 1, aa_avrz_aaz.DESCRIPT.RETVAL.DSC.U1 -            
     .       1         aa_avrz_aaz.DESCRIPT.RETVAL.DSC.L1 + 2 - min0(1,         
     .       2         aa_avrz_aaz.DESCRIPT.RETVAL.DSC.U1 -                     
     .       3         aa_avrz_aaz.DESCRIPT.RETVAL.DSC.L1 + 1)                  
     .                 aa_avrz_aaz(aa_avrz_aaz.DESCRIPT.RETVAL.DSC.L1+t71-1,t69-
     .       1            1+aa_avrz_aaz.DESCRIPT.RETVAL.DSC.L2) =               
     .       2            0.0000000000000000e+000                               
     .                 aa_avrz_aaz(aa_avrz_aaz.DESCRIPT.RETVAL.DSC.L1+t71-1,t69+
     .       1            aa_avrz_aaz.DESCRIPT.RETVAL.DSC.L2) =                 
     .       2            0.0000000000000000e+000                               
     .                 aa_avrz_aaz(aa_avrz_aaz.DESCRIPT.RETVAL.DSC.L1+t71-1,t69-
     .       1            1+aa_avrz_aaz.DESCRIPT.RETVAL.DSC.L2) = %000e63(t6+t71
     .       2            -1,t69-1+t8)*D2                                       
     .                 aa_avrz_aaz(aa_avrz_aaz.DESCRIPT.RETVAL.DSC.L1+t71-1,t69+
     .       1            aa_avrz_aaz.DESCRIPT.RETVAL.DSC.L2) = %000e63(t6+t71-1
     .       2            ,t69+t8)*D3                                           
     .              end do                                                      
     .           end do                                                         
     .        endif                                                             
     .        go to 10010                                                       
  1014  
  1015      ! 平均
  1016      aa_AvrZ_aaz = aa_IntZ_aaz(aaz_Var)/sum(z_dz(1:nz))
  1017  
  1018    end function aa_AvrZ_aaz
  1019    !--------------------------------------------------------------------
  1020    function xy_AvrZ_xyr(xyr_Var)
  1021      ! xyr 格子上の配列に対し z 方向平均を行う
  1022  
  1023      real(DP), intent(in) :: xyr_Var(imin:imax,jmin:jmax,kmin:kmax) ! 入力
  1024      real(DP)             :: xy_AvrZ_xyr(imin:imax,jmin:jmax)       ! 出力
  1025  
  1026      ! 初期化
  1027      xy_AvrZ_xyr = 0.0d0
     .           if (xy_avrz_xyr.DESCRIPT.RETVAL.DSC.U2 -                       
     .       1   xy_avrz_xyr.DESCRIPT.RETVAL.DSC.L2 + 2 - min0(1,               
     .       2   xy_avrz_xyr.DESCRIPT.RETVAL.DSC.U2 -                           
     .       3   xy_avrz_xyr.DESCRIPT.RETVAL.DSC.L2 + 1) .gt. 0) then           
     .           J1 = and(xy_avrz_xyr.DESCRIPT.RETVAL.DSC.U2 -                  
     .       1      xy_avrz_xyr.DESCRIPT.RETVAL.DSC.L2 + 2 - min0(1,            
     .       2      xy_avrz_xyr.DESCRIPT.RETVAL.DSC.U2 -                        
     .       3      xy_avrz_xyr.DESCRIPT.RETVAL.DSC.L2 + 1),1)                  
     .  !CDIR    NODEP                                                          
     .           do t69 = 1, J1                                                 
     .              D1 = 1.D0/t58                                               
     .  !CDIR       NODEP                                                       
     .              do t71 = 1, xy_avrz_xyr.DESCRIPT.RETVAL.DSC.U1 -            
     .       1         xy_avrz_xyr.DESCRIPT.RETVAL.DSC.L1 + 2 - min0(1,         
     .       2         xy_avrz_xyr.DESCRIPT.RETVAL.DSC.U1 -                     
     .       3         xy_avrz_xyr.DESCRIPT.RETVAL.DSC.L1 + 1)                  
     .                 xy_avrz_xyr(xy_avrz_xyr.DESCRIPT.RETVAL.DSC.L1+t71-1,t69-
     .       1            1+xy_avrz_xyr.DESCRIPT.RETVAL.DSC.L2) =               
     .       2            0.0000000000000000e+000                               
     .                 xy_avrz_xyr(xy_avrz_xyr.DESCRIPT.RETVAL.DSC.L1+t71-1,t69-
     .       1            1+xy_avrz_xyr.DESCRIPT.RETVAL.DSC.L2) = %000e73(t6+t71
     .       2            -1,t69-1+t8)*D1                                       
     .              end do                                                      
     .           end do                                                         
     .  !CDIR    NODEP                                                          
     .           do t69 = J1 + 1, xy_avrz_xyr.DESCRIPT.RETVAL.DSC.U2 -          
     .       1      xy_avrz_xyr.DESCRIPT.RETVAL.DSC.L2 + 2 - min0(1,            
     .       2      xy_avrz_xyr.DESCRIPT.RETVAL.DSC.U2 -                        
     .       3      xy_avrz_xyr.DESCRIPT.RETVAL.DSC.L2 + 1), 2                  
     .              D2 = 1.D0/t58                                               
     .              D3 = 1.D0/t58                                               
     .  !CDIR       NODEP                                                       
     .              do t71 = 1, xy_avrz_xyr.DESCRIPT.RETVAL.DSC.U1 -            
     .       1         xy_avrz_xyr.DESCRIPT.RETVAL.DSC.L1 + 2 - min0(1,         
     .       2         xy_avrz_xyr.DESCRIPT.RETVAL.DSC.U1 -                     
     .       3         xy_avrz_xyr.DESCRIPT.RETVAL.DSC.L1 + 1)                  
     .                 xy_avrz_xyr(xy_avrz_xyr.DESCRIPT.RETVAL.DSC.L1+t71-1,t69-
     .       1            1+xy_avrz_xyr.DESCRIPT.RETVAL.DSC.L2) =               
     .       2            0.0000000000000000e+000                               
     .                 xy_avrz_xyr(xy_avrz_xyr.DESCRIPT.RETVAL.DSC.L1+t71-1,t69+
     .       1            xy_avrz_xyr.DESCRIPT.RETVAL.DSC.L2) =                 
     .       2            0.0000000000000000e+000                               
     .                 xy_avrz_xyr(xy_avrz_xyr.DESCRIPT.RETVAL.DSC.L1+t71-1,t69-
     .       1            1+xy_avrz_xyr.DESCRIPT.RETVAL.DSC.L2) = %000e73(t6+t71
     .       2            -1,t69-1+t8)*D2                                       
     .                 xy_avrz_xyr(xy_avrz_xyr.DESCRIPT.RETVAL.DSC.L1+t71-1,t69+
     .       1            xy_avrz_xyr.DESCRIPT.RETVAL.DSC.L2) = %000e73(t6+t71-1
     .       2            ,t69+t8)*D3                                           
     .              end do                                                      
     .           end do                                                         
     .        endif                                                             
     .        go to 10010                                                       
  1028  
  1029      ! 平均
  1030      xy_AvrZ_xyr = xy_IntZ_xyr(xyr_Var)/sum(z_dz(1:nz))
  1031  
  1032    end function xy_AvrZ_xyr
  1033  !--------------------------------------------------------------------
  1034    function AvrXYZ_xyz(xyz_Var)
  1035      ! xyz 格子上の配列に対し領域積分を行う
  1036  
  1037      real(DP), intent(in) :: xyz_Var(imin:imax,jmin:jmax,kmin:kmax) ! 入力
  1038      real(DP)             :: AvrXYZ_xyz                             ! 出力
  1039  
  1040      ! 初期化
  1041      AvrXYZ_xyz = 0.0d0
  1042  
  1043      AvrXYZ_xyz = IntXYZ_xyz(xyz_Var)/ &
  1044        &             (sum(x_dx(1:nx))*sum(y_dy(1:ny))*sum(z_dz(1:nz)))
  1045  
  1046    end function AvrXYZ_xyz
  1047    !--------------------------------------------------------------------
  1048    function AvrXYZ_pyz(pyz_Var)
  1049      ! pyz 格子上の配列に対し領域積分を行う
  1050  
  1051      real(DP), intent(in) :: pyz_Var(imin:imax,jmin:jmax,kmin:kmax) ! 入力
  1052      real(DP)             :: AvrXYZ_pyz                             ! 出力
  1053  
  1054      ! 初期化
  1055      AvrXYZ_pyz = 0.0d0
  1056  
  1057      AvrXYZ_pyz = IntXYZ_pyz(pyz_Var)/ &
  1058        &             (sum(x_dx(1:nx))*sum(y_dy(1:ny))*sum(z_dz(1:nz)))
  1059  
  1060    end function AvrXYZ_pyz
  1061  !--------------------------------------------------------------------
  1062    function AvrXYZ_xqz(xqz_Var)
  1063      ! xqz 格子上の配列に対し領域積分を行う
  1064  
  1065      real(DP), intent(in) :: xqz_Var(imin:imax,jmin:jmax,kmin:kmax) ! 入力
  1066      real(DP)             :: AvrXYZ_xqz                             ! 出力
  1067  
  1068      ! 初期化
  1069      AvrXYZ_xqz = 0.0d0
  1070  
  1071      AvrXYZ_xqz = IntXYZ_xqz(xqz_Var)/ &
  1072        &             (sum(x_dx(1:nx))*sum(y_dy(1:ny))*sum(z_dz(1:nz)))
  1073  
  1074    end function AvrXYZ_xqz
  1075    !--------------------------------------------------------------------
  1076    function AvrXYZ_xyr(xyr_Var)
  1077      ! xyr 格子上の配列に対し領域積分を行う
  1078  
  1079      real(DP), intent(in) :: xyr_Var(imin:imax,jmin:jmax,kmin:kmax) ! 入力
  1080      real(DP)             :: AvrXYZ_xyr                             ! 出力
  1081  
  1082      ! 初期化
  1083      AvrXYZ_xyr = 0.0d0
  1084  
  1085      AvrXYZ_xyr = IntXYZ_xyr(xyr_Var)/ &
  1086        &             (sum(x_dx(1:nx))*sum(y_dy(1:ny))*sum(z_dz(1:nz)))
  1087  
  1088    end function AvrXYZ_xyr
  1089    !--------------------------------------------------------------------
  1090    function a_AvrXY_xya(xya_Var)
  1091      ! xya 格子上の配列に対し xy 方向平均を行う
  1092  
  1093      real(DP), intent(in) :: xya_Var(imin:imax,jmin:jmax,kmin:kmax) ! 入力
  1094      real(DP)             :: a_AvrXY_xya(kmin:kmax)       ! 出力
  1095  
  1096      ! 初期化
  1097      a_AvrXY_xya = 0.0d0
     .           D1 = 1.D0/t66                                                  
     .  !CDIR NODEP                                                             
     .        do t72 = 1, a_avrxy_xya.DESCRIPT.RETVAL.DSC.U1 -                  
     .       1   a_avrxy_xya.DESCRIPT.RETVAL.DSC.L1 + 2 - min0(1,               
     .       2   a_avrxy_xya.DESCRIPT.RETVAL.DSC.U1 -                           
     .       3   a_avrxy_xya.DESCRIPT.RETVAL.DSC.L1 + 1)                        
     .           a_avrxy_xya(a_avrxy_xya.DESCRIPT.RETVAL.DSC.L1+t72-1) =        
     .       1      0.0000000000000000e+000                                     
     .           a_avrxy_xya(a_avrxy_xya.DESCRIPT.RETVAL.DSC.L1+t72-1) = %000e9d
     .       1      (t11+t72-1)*D1                                              
     .        end do                                                            
     .        go to 10009                                                       
  1098  
  1099      ! 平均
  1100      a_AvrXY_xya = a_IntXY_xya(xya_Var)/(sum(x_dx(1:nx))*sum(y_dy(1:ny)))
  1101  
  1102    end function a_AvrXY_xya
  1103    !--------------------------------------------------------------------
  1104    function z_AvrXY_pyz(pyz_Var)
  1105      ! pyz 格子上の配列に対し xy 方向平均を行う
  1106  
  1107      real(DP), intent(in) :: pyz_Var(imin:imax,jmin:jmax,kmin:kmax) ! 入力
  1108      real(DP)             :: z_AvrXY_pyz(kmin:kmax)       ! 出力
  1109  
  1110      ! 初期化
  1111      z_AvrXY_pyz = 0.0d0
     .           D1 = 1.D0/t66                                                  
     .  !CDIR NODEP                                                             
     .        do t72 = 1, z_avrxy_pyz.DESCRIPT.RETVAL.DSC.U1 -                  
     .       1   z_avrxy_pyz.DESCRIPT.RETVAL.DSC.L1 + 2 - min0(1,               
     .       2   z_avrxy_pyz.DESCRIPT.RETVAL.DSC.U1 -                           
     .       3   z_avrxy_pyz.DESCRIPT.RETVAL.DSC.L1 + 1)                        
     .           z_avrxy_pyz(z_avrxy_pyz.DESCRIPT.RETVAL.DSC.L1+t72-1) =        
     .       1      0.0000000000000000e+000                                     
     .           z_avrxy_pyz(z_avrxy_pyz.DESCRIPT.RETVAL.DSC.L1+t72-1) = %000ea8
     .       1      (t11+t72-1)*D1                                              
     .        end do                                                            
     .        go to 10009                                                       
  1112  
  1113      ! 平均
  1114      z_AvrXY_pyz = z_IntXY_pyz(pyz_Var)/(sum(x_dx(1:nx))*sum(y_dy(1:ny)))
  1115  
  1116    end function z_AvrXY_pyz
  1117    !--------------------------------------------------------------------
  1118    function z_AvrXY_xqz(xqz_Var)
  1119      ! xqz 格子上の配列に対し xy 方向積分を行う
  1120  
  1121      real(DP), intent(in) :: xqz_Var(imin:imax,jmin:jmax,kmin:kmax) ! 入力
  1122      real(DP)             :: z_AvrXY_xqz(kmin:kmax)       ! 出力
  1123  
  1124      ! 初期化
  1125      z_AvrXY_xqz = 0.0d0
     .           D1 = 1.D0/t66                                                  
     .  !CDIR NODEP                                                             
     .        do t72 = 1, z_avrxy_xqz.DESCRIPT.RETVAL.DSC.U1 -                  
     .       1   z_avrxy_xqz.DESCRIPT.RETVAL.DSC.L1 + 2 - min0(1,               
     .       2   z_avrxy_xqz.DESCRIPT.RETVAL.DSC.U1 -                           
     .       3   z_avrxy_xqz.DESCRIPT.RETVAL.DSC.L1 + 1)                        
     .           z_avrxy_xqz(z_avrxy_xqz.DESCRIPT.RETVAL.DSC.L1+t72-1) =        
     .       1      0.0000000000000000e+000                                     
     .           z_avrxy_xqz(z_avrxy_xqz.DESCRIPT.RETVAL.DSC.L1+t72-1) = %000eb3
     .       1      (t11+t72-1)*D1                                              
     .        end do                                                            
     .        go to 10009                                                       
  1126  
  1127      ! 平均
  1128      z_AvrXY_xqz = z_IntXY_xqz(xqz_Var)/(sum(x_dx(1:nx))*sum(y_dy(1:ny)))
  1129  
  1130    end function z_AvrXY_xqz
  1131    !--------------------------------------------------------------------
  1132    function IntX_p(p_Var)
  1133      ! 整数格子上の配列に対し x 方向に重み付きの積分を行う
  1134  
  1135      real(DP), intent(in) :: p_Var(imin:imax)  ! 入力
  1136      real(DP)             :: IntX_p            ! 出力
  1137  
  1138      ! 初期化
  1139      IntX_p = 0.0d0
  1140  
  1141      ! 積分
  1142      IntX_p = sum(p_Var(1:nx)*p_dx(1:nx))
  1143  
  1144    end function IntX_p
  1145    !--------------------------------------------------------------------
  1146    function IntX_x(x_Var)
  1147      ! 半整数格子上の配列に対し x 方向に重み付きの積分を行う
  1148  
  1149      real(DP), intent(in) :: x_Var(imin:imax)  ! 入力
  1150      real(DP)             :: IntX_x            ! 出力
  1151      real(DP), allocatable:: work(:)
  1152  
  1153      ! 初期化
  1154      IntX_x = 0.0d0
  1155      allocate(work(imin:imax))
  1156  
  1157      ! 積分
  1158      work = x_Var*x_dx
  1159  
  1160      IntX_x = sum(work(1:nx))
  1161  
  1162      deallocate(work)
  1163  
  1164    end function IntX_x
  1165  !--------------------------------------------------------------------
  1166    function IntY_q(q_Var)
  1167      ! 整数格子上の配列に対し y 方向に重み付きの積分を行う
  1168  
  1169      real(DP), intent(in) :: q_Var(jmin:jmax)  ! 入力
  1170      real(DP)             :: IntY_q            ! 出力
  1171  
  1172      ! 初期化
  1173      IntY_q = 0.0d0
  1174  
  1175      ! 積分
  1176      IntY_q = sum(q_Var(1:ny)*q_dy(1:ny))
  1177  
  1178    end function IntY_q
  1179  !--------------------------------------------------------------------
  1180    function IntY_y(y_Var)
  1181      ! 半整数格子上の配列に対し y 方向に重み付きの積分を行う
  1182  
  1183      real(DP), intent(in) :: y_Var(jmin:jmax)  ! 入力
  1184      real(DP)             :: IntY_y            ! 出力
  1185  
  1186      ! 初期化
  1187      IntY_y = 0.0d0
  1188  
  1189      ! 積分
  1190      IntY_y = sum(y_Var(1:ny)*y_dy(1:ny))
  1191  
  1192    end function IntY_y
  1193    !--------------------------------------------------------------------
  1194    function IntZ_r(r_Var)
  1195      ! 整数格子上の配列に対し z 方向に重み付きの積分を行う
  1196  
  1197      real(DP), intent(in) :: r_Var(kmin:kmax)  ! 入力
  1198      real(DP)             :: IntZ_r            ! 出力
  1199  
  1200      ! 初期化
  1201      IntZ_r = 0.0d0
  1202  
  1203      ! 積分
  1204      IntZ_r = sum(r_Var(1:nz)*r_dz(1:nz))
  1205  
  1206    end function IntZ_r
  1207  !--------------------------------------------------------------------
  1208    function IntZ_z(z_Var)
  1209      ! 半整数格子上の配列に対し z 方向に重み付きの積分を行う
  1210  
  1211      real(DP), intent(in) :: z_Var(kmin:kmax)  ! 入力
  1212      real(DP)             :: IntZ_z            ! 出力
  1213  
  1214      ! 初期化
  1215      IntZ_z = 0.0d0
  1216  
  1217      ! 積分
  1218      IntZ_z = sum(z_Var(1:nz)*z_dz(1:nz))
  1219  
  1220    end function IntZ_z
  1221  !--------------------------------------------------------------------
  1222    function a_IntX_xa(xa_Var)
  1223      ! xa 格子上の配列に対し x 方向に重み付きの積分を行う
  1224  
  1225      real(DP), intent(in) :: xa_Var(imin:imax,jmin:jmax) ! 入力
  1226      real(DP)             :: a_IntX_xa(jmin:jmax)        ! 出力
  1227      integer                  :: jy                          ! ループ添字
  1228  
  1229      ! 初期化
  1230      a_IntX_xa = 0.0d0
     .  !CDIR    NODEP                                                          
     .        do t44 = 0, a_intx_xa.DESCRIPT.RETVAL.DSC.U1 -                    
     .       1   a_intx_xa.DESCRIPT.RETVAL.DSC.L1                               
  1231  
  1232      ! 積分
  1233      do jy = jmin, jmax
  1234        a_IntX_xa(jy) = IntX_x(xa_Var(:,jy))
     .           t111 = imin                                                    
     .        t10 = imax                                                        
     .        call f_null (work)                                                
     .        intx_x = 0.0000000000000000e+000                                  
     .        work.DSC.RANK = 1                                                 
     .        work.DSC.L1 = imin                                                
     .        work.DSC.U1 = imax                                                
     .        allocate (work(work.DSC.L1:work.DSC.U1))                          
     .        if (t10 - t111 .le. (-1)) go to 31051                             
     .  !CDIR NODEP                                                             
     .        do t451 = 1, t10 - imin + 2 - min0(1,t10 - imin + 1)              
     .           work(work.DSC.L1+t451-1) = xa_var(t111+t6-imin+t451-1,jy)*x_dx(
     .       1      x_dx.DSC.L1+t451-1)                                         
     .        end do                                                            
     .  31051 continue                                                          
     .        t341 = 0.0000000000000000e+000                                    
     .  !CDIR NODEP                                                             
     .        do t361 = 1, nx                                                   
     .           t341 = t341 + work(t361)                                       
     .        end do                                                            
     .        intx_x = t341                                                     
     .        deallocate (work)                                                 
     .        t411 = allocated(work)                                            
     .        if (t411 .eq. 0) go to 31055                                      
     .        deallocate (work)                                                 
     .  31055 continue                                                          
     .        t36 = intx_x                                                      
     .  C*****  End of Code Expanded From Routine:  intx_x                      
  1235      end do
  1236  
  1237    end function a_IntX_xa
  1238  !--------------------------------------------------------------------
  1239    function y_IntX_py(py_Var)
  1240      ! py 格子上の配列に対し x 方向に重み付きの積分を行う
  1241  
  1242      real(DP), intent(in) :: py_Var(imin:imax,jmin:jmax) ! 入力
  1243      real(DP)             :: y_IntX_py(jmin:jmax)        ! 出力
  1244      integer                  :: jy                          ! ループ添字
  1245  
  1246      ! 初期化
  1247      y_IntX_py = 0.0d0
     .  !CDIR NODEP                                                             
     .        do t44 = 0, y_intx_py.DESCRIPT.RETVAL.DSC.U1 -                    
     .       1   y_intx_py.DESCRIPT.RETVAL.DSC.L1                               
  1248  
  1249      ! 積分
  1250      do jy = jmin, jmax
  1251        y_IntX_py(jy) = IntX_p(py_Var(:,jy))
     .           intx_p = 0.0000000000000000e+000                               
     .        t191 = 0.0000000000000000e+000                                    
     .  !CDIR NODEP                                                             
     .        do t221 = 1, nx                                                   
     .           t191 = t191 + py_var(t6-imin+t221,jy)*p_dx(t221)               
     .        end do                                                            
     .        intx_p = t191                                                     
     .        t36 = intx_p                                                      
     .  C*****  End of Code Expanded From Routine:  intx_p                      
  1252      end do
  1253  
  1254    end function y_IntX_py
  1255    !--------------------------------------------------------------------
  1256    function a_IntY_ay(ay_Var)
  1257      ! ay 格子上の配列に対し y 方向に重み付きの積分を行う
  1258  
  1259      real(DP), intent(in) :: ay_Var(imin:imax,jmin:jmax) ! 入力
  1260      real(DP)             :: a_IntY_ay(imin:imax)        ! 出力
  1261      integer                  :: ix                          ! ループ添字
  1262  
  1263      ! 初期化
  1264      a_IntY_ay = 0.0d0
     .  !CDIR NODEP                                                             
     .        do t52 = 0, a_inty_ay.DESCRIPT.RETVAL.DSC.U1 -                    
     .       1   a_inty_ay.DESCRIPT.RETVAL.DSC.L1                               
  1265  
  1266      ! 積分
  1267      do ix = imin, imax
  1268        a_IntY_ay(ix) = IntY_y(ay_Var(ix,:))
     .  !CDIR    NODEP                                                          
     .        do t55 = 1, jmax + 1 - jmin                                       
     .           %IG66(t55) = ay_var(ix,t11+t55-1)                              
     .        end do                                                            
     .        inty_y = 0.0000000000000000e+000                                  
     .        t191 = 0.0000000000000000e+000                                    
     .  !CDIR NODEP                                                             
     .        do t221 = 1, ny                                                   
     .           t191 = t191 + %IG66(%IG66.DSC.L1-jmin+t221)*y_dy(t221)         
     .        end do                                                            
     .        inty_y = t191                                                     
     .        t43 = inty_y                                                      
     .  C*****  End of Code Expanded From Routine:  inty_y                      
  1269      end do
  1270  
  1271    end function a_IntY_ay
  1272    !--------------------------------------------------------------------
  1273    function x_IntY_xq(xq_Var)
  1274      ! ay 格子上の配列に対し y 方向に重み付きの積分を行う
  1275  
  1276      real(DP), intent(in) :: xq_Var(imin:imax,jmin:jmax) ! 入力
  1277      real(DP)             :: x_IntY_xq(imin:imax)        ! 出力
  1278      integer                  :: ix                          ! ループ添字
  1279  
  1280      ! 初期化
  1281      x_IntY_xq = 0.0d0
     .  !CDIR NODEP                                                             
     .        do t52 = 0, x_inty_xq.DESCRIPT.RETVAL.DSC.U1 -                    
     .       1   x_inty_xq.DESCRIPT.RETVAL.DSC.L1                               
  1282  
  1283      ! 積分
  1284      do ix = imin, imax
  1285        x_IntY_xq(ix) = IntY_q(xq_Var(ix,:))
     .  !CDIR    NODEP                                                          
     .        do t55 = 1, jmax + 1 - jmin                                       
     .           %IG69(t55) = xq_var(ix,t11+t55-1)                              
     .        end do                                                            
     .        inty_q = 0.0000000000000000e+000                                  
     .        t191 = 0.0000000000000000e+000                                    
     .  !CDIR NODEP                                                             
     .        do t221 = 1, ny                                                   
     .           t191 = t191 + %IG69(%IG69.DSC.L1-jmin+t221)*q_dy(t221)         
     .        end do                                                            
     .        inty_q = t191                                                     
     .        t43 = inty_q                                                      
     .  C*****  End of Code Expanded From Routine:  inty_q                      
  1286      end do
  1287  
  1288    end function x_IntY_xq
  1289  
  1290  end module axesset
Linux  R2.6.5-7.282-sn2 FORTRAN90/SX         Rev.360        Tue Oct 11 12:33:33 2011
FILE NAME: axesset.f90
PROGRAM NAME: 
DIAGNOSTIC LIST

  LINE  LEVEL( NO.): DIAGNOSTIC MESSAGE

  1291  warn (   6): Only comment lines in program.
Linux  R2.6.5-7.282-sn2 FORTRAN90/SX         Rev.360        Tue Oct 11 12:33:33 2011
FILE NAME: axesset.f90
PROGRAM NAME: 
TRANSFORMATION LIST

  LINE                   FORTRAN STATEMENT

  1291  
Linux  R2.6.5-7.282-sn2 FORTRAN90/SX         Rev.360        Tue Oct 11 12:33:33 2011
FILE NAME: axesset.f90
PROGRAM NAME: axesset
FORMAT LIST

  LINE    LOOP     FORTRAN STATEMENT

     1:            !---------------------------------------------------------------------
     2:            !     Copyright (C) GFD Dennou Club, 2006. All rights reserved.
     3:            !---------------------------------------------------------------------
     4:            !
     5:            != 3 次元 (xyz 方向) 等間隔交互格子 格子点設定モジュール
     6:            !
     7:            !* 履歴
     8:            !  * 2010/08/02 (小高正嗣) : コメント追加
     9:            !  * 2007/07/15 (小高正嗣) : 3D deepconv へ移植, dc_types を Use.
    10:            !  * 2006/12/26 (小高正嗣) : 平均関数の名前を元に戻す
    11:            !  * 2006/06/05 (小高正嗣) : 新規作成
    12:            !
    13:            module axesset
    14:              != 3 次元 (xyz 方向) 等間隔交互格子 格子点設定モジュール
    15:              !
    16:              !== 概要
    17:              !
    18:              ! axesset は, 3 次元 (xyz 方向) 等間隔交互格子を用いた有限差分法に基づく
    19:              ! 数値モデルのための, 基本的な Fortran90 副プログラムおよび関数を提供する. 
    20:              ! 具体的に行っていることは以下の通り.
    21:              !
    22:              ! * 格子点座標配列と格子点間隔配列の設定
    23:              ! * 格子点配列の補間関数の設定
    24:              ! * 格子点配列の積分・平均関数
    25:              ! 
    26:              !== 備考
    27:              !
    28:              ! * 例外処理がない
    29:              ! * その場合のメッセージ表示がない
    30:              ! * 初期化の値はマシンイプシロン値としておくべき
    31:              !
    32:            
    33:              !モジュール読み込み
    34:              use dc_types,    only: DP, STRING
    35:              use dc_iounit,   only: FileOpen
    36:              use dc_message,  only: MessageNotify
    37:              use mpi_wrapper, only: myrank, nprocs
    38:              use gridset,     only: &
    39:                &                  nx, ny, nz,    & ! 格子点数
    40:                &                  imin, imax, jmin, jmax, kmin, kmax ! 配列の上限値と下限値
    41:              use namelist_util, only: namelist_filename
    42:            
    43:              !暗黙の型宣言禁止
    44:              implicit none
    45:            
    46:              !デフォルトは非公開
    47:              private
    48:            
    49:              !公開要素
    50:              ! 初期化手続き
    51:              public :: axesset_init
    52:            !!
    53:              ! 格子点配列の補間関数 
    54:              public :: xyz_avr_pyz, xyr_avr_pyr, xqz_avr_pqz
    55:              public :: pyz_avr_xyz, pyr_avr_xyr, pqz_avr_xqz
    56:              public :: xyz_avr_xqz, pyz_avr_pqz, xyr_avr_xqr
    57:              public :: xqz_avr_xyz, pqz_avr_pyz, xqr_avr_xyr
    58:              public :: xyz_avr_xyr, pyz_avr_pyr, xqz_avr_xqr
    59:              public :: xyr_avr_xyz, pyr_avr_pyz, xqr_avr_xqz
    60:              public :: pqz_avr_xyz, pyr_avr_xyz, xqr_avr_xyz
    61:              public :: xyz_avr_pqz, xyz_avr_pyr, xyz_avr_xqr
    62:            !!
    63:              ! 格子点配列の積分・平均関数
    64:              public :: yz_IntX_xyz, yz_IntX_pyz, qz_IntX_xqz, yr_IntX_xyr
    65:              public :: xz_IntY_xyz, xz_IntY_xqz, pz_IntY_pyz, xr_IntY_xyr 
    66:              public :: xy_IntZ_xyz, xy_IntZ_xyr, py_IntZ_pyz, xq_IntZ_xqz 
    67:              public :: z_IntXY_xyz, z_IntXY_pyz, z_IntXY_xqz, r_IntXY_xyr
    68:              public :: IntXYZ_xyz , IntXYZ_pyz , IntXYZ_xqz , IntXYZ_xyr
    69:              public :: yz_AvrX_xyz, yz_AvrX_pyz, qz_AvrX_xqz, yr_AvrX_xyr
    70:              public :: xz_AvrY_xyz, xz_AvrY_xqz, pz_AvrY_pyz, xr_AvrY_xyr 
    71:              public :: xy_AvrZ_xyz, xy_AvrZ_xyr, py_AvrZ_pyz, xq_AvrZ_xqz 
    72:              public :: z_AvrXY_xyz, z_AvrXY_pyz, z_AvrXY_xqz, r_AvrXY_xyr
    73:              public :: AvrXYZ_xyz , AvrXYZ_pyz , AvrXYZ_xqz , AvrXYZ_xyr
    74:            
    75:              ! 変数定義
    76:              real(DP), public, save :: Xmin = 0.0d0   ! x 座標の始点・終点
    77:              real(DP), public, save :: Xmax = 1.0d4   ! x 座標の始点・終点
    78:              real(DP), public, save :: Ymin = 0.0d0   ! x 座標の始点・終点
    79:              real(DP), public, save :: Ymax = 1.0d4   ! x 座標の始点・終点
    80:              real(DP), public, save :: Zmin = 0.0d0   ! z 座標の始点・終点
    81:              real(DP), public, save :: Zmax = 1.0d4   ! z 座標の始点・終点
    82:              real(DP), allocatable, public, save :: x_X(:)         ! 半整数格子点座標
    83:              real(DP), allocatable, public, save :: p_X(:)         ! 整数格子点座標
    84:              real(DP), allocatable, public, save :: x_dx(:)        ! 半整数格子点間隔
    85:              real(DP), allocatable, public, save :: p_dx(:)        ! 整数格子点間隔
    86:              real(DP), allocatable, public, save :: y_Y(:)         ! 半整数格子点座標
    87:              real(DP), allocatable, public, save :: q_Y(:)         ! 整数格子点座標
    88:              real(DP), allocatable, public, save :: y_dy(:)        ! 半整数格子点間隔
    89:              real(DP), allocatable, public, save :: q_dy(:)        ! 整数格子点間隔
    90:              real(DP), allocatable, public, save :: z_Z(:)         ! 半整数格子点座標
    91:              real(DP), allocatable, public, save :: r_Z(:)         ! 整数格子点座標
    92:              real(DP), allocatable, public, save :: z_dz(:)        ! 半整数格子点間隔
    93:              real(DP), allocatable, public, save :: r_dz(:)        ! 整数格子点間隔
    94:              real(DP), allocatable, public, save :: xyz_X(:,:,:)   ! x 座標(半整数格子)
    95:              real(DP), allocatable, public, save :: xyz_Y(:,:,:)   ! y 座標(半整数格子)
    96:              real(DP), allocatable, public, save :: xyz_Z(:,:,:)   ! z 座標(半整数格子)
    97:              real(DP), allocatable, public, save :: xyz_dX(:,:,:)  ! x 格子間隔(半整数格子)
    98:              real(DP), allocatable, public, save :: xyz_dY(:,:,:)  ! y 格子間隔(半整数格子)
    99:              real(DP), allocatable, public, save :: xyz_dZ(:,:,:)  ! z 格子間隔(半整数格子)
   100:            
   101:            
   102:              interface y_IntX_xy
   103:                module procedure a_IntX_xa
   104:              end interface 
   105:            
   106:              interface q_IntX_xq
   107:                module procedure a_IntX_xa
   108:              end interface 
   109:            
   110:              interface xyz_avr_pyz
   111:                module procedure xaa_avr_paa
   112:              end interface
   113:              
   114:              interface xyr_avr_pyr
   115:                module procedure xaa_avr_paa
   116:              end interface 
   117:            
   118:              interface xqz_avr_pqz
   119:                module procedure xaa_avr_paa
   120:              end interface
   121:              
   122:              interface pyz_avr_xyz
   123:                module procedure paa_avr_xaa
   124:              end interface 
   125:            
   126:              interface pqz_avr_xqz
   127:                module procedure paa_avr_xaa
   128:              end interface 
   129:            
   130:              interface pyr_avr_xyr
   131:                module procedure paa_avr_xaa
   132:              end interface 
   133:            
   134:              interface xyz_avr_xqz
   135:                module procedure aya_avr_aqa
   136:              end interface 
   137:            
   138:              interface pyz_avr_pqz
   139:                module procedure aya_avr_aqa
   140:              end interface 
   141:            
   142:              interface xyr_avr_xqr
   143:                module procedure aya_avr_aqa
   144:              end interface
   145:              
   146:              interface xqz_avr_xyz
   147:                module procedure aqa_avr_aya
   148:              end interface
   149:            
   150:              interface pqz_avr_pyz
   151:                module procedure aqa_avr_aya
   152:              end interface 
   153:            
   154:              interface xqr_avr_xyr
   155:                module procedure aqa_avr_aya
   156:              end interface 
   157:            
   158:              interface xyz_avr_xyr
   159:                module procedure aaz_avr_aar
   160:              end interface 
   161:            
   162:              interface pyz_avr_pyr
   163:                module procedure aaz_avr_aar
   164:              end interface 
   165:            
   166:              interface xqz_avr_xqr
   167:                module procedure aaz_avr_aar
   168:              end interface 
   169:            
   170:              interface xyr_avr_xyz
   171:                module procedure aar_avr_aaz
   172:              end interface 
   173:            
   174:              interface pyr_avr_pyz
   175:                module procedure aar_avr_aaz
   176:              end interface 
   177:            
   178:              interface xqr_avr_xqz
   179:                module procedure aar_avr_aaz
   180:              end interface 
   181:            
   182:              interface yz_IntX_xyz
   183:                module procedure aa_IntX_xaa
   184:              end interface
   185:            
   186:              interface qz_IntX_xqz
   187:                module procedure aa_IntX_xaa
   188:              end interface
   189:            
   190:              interface yr_IntX_xyr
   191:                module procedure aa_IntX_xaa
   192:              end interface
   193:            
   194:              interface xz_IntY_xyz
   195:                module procedure aa_IntY_aya
   196:              end interface
   197:            
   198:              interface pz_IntY_pyz
   199:                module procedure aa_IntY_aya
   200:              end interface
   201:            
   202:              interface xr_IntY_xyr
   203:                module procedure aa_IntY_aya
   204:              end interface
   205:            
   206:              interface xy_IntZ_xyz
   207:                module procedure aa_IntZ_aaz
   208:              end interface
   209:            
   210:              interface py_IntZ_pyz
   211:                module procedure aa_IntZ_aaz
   212:              end interface
   213:            
   214:              interface xq_IntZ_xqz
   215:                module procedure aa_IntZ_aaz
   216:              end interface
   217:            
   218:              interface z_IntXY_xyz
   219:                module procedure a_IntXY_xya
   220:              end interface
   221:            
   222:              interface r_IntXY_xyr
   223:                module procedure a_IntXY_xya
   224:              end interface
   225:            
   226:              interface yz_AvrX_xyz
   227:                module procedure aa_AvrX_xaa
   228:              end interface
   229:            
   230:              interface qz_AvrX_xqz
   231:                module procedure aa_AvrX_xaa
   232:              end interface
   233:            
   234:              interface yr_AvrX_xyr
   235:                module procedure aa_AvrX_xaa
   236:              end interface
   237:            
   238:              interface xz_AvrY_xyz
   239:                module procedure aa_AvrY_aya
   240:              end interface
   241:            
   242:              interface pz_AvrY_pyz
   243:                module procedure aa_AvrY_aya
   244:              end interface
   245:            
   246:              interface xr_AvrY_xyr
   247:                module procedure aa_AvrY_aya
   248:              end interface
   249:            
   250:              interface xy_AvrZ_xyz
   251:                module procedure aa_AvrZ_aaz
   252:              end interface
   253:            
   254:              interface py_AvrZ_pyz
   255:                module procedure aa_AvrZ_aaz
   256:              end interface
   257:            
   258:              interface xq_AvrZ_xqz
   259:                module procedure aa_AvrZ_aaz
   260:              end interface
   261:            
   262:              interface z_AvrXY_xyz
   263:                module procedure a_AvrXY_xya
   264:              end interface
   265:            
   266:              interface r_AvrXY_xyr
   267:                module procedure a_AvrXY_xya
   268:              end interface
   269:            
   270:            contains
   271:              !--------------------------------------------------------------------
   272:              subroutine axesset_init
   273:                ! 格子点座標配列と格子点間隔配列の初期化    
   274:            
   275:                ! 暗黙の型宣言禁止
   276:                implicit none
   277:            
   278:                ! 変数定義
   279:                real(DP),allocatable :: xy_X(:,:)! x 座標(半整数格子, 作業配列)
   280:                real(DP),allocatable :: xy_Y(:,:)! y 座標(半整数格子, 作業配列)
   281:                real(DP),allocatable :: yz_Z(:,:)! z 座標(半整数格子, 作業配列)
   282:                integer              :: unit     ! 設定ファイル用装置番号
   283:                
   284:            
   285:                !設定ファイルから読み込む出力ファイル情報
   286:                NAMELIST /axesset_nml/ xmin, xmax, ymin, ymax, zmin, zmax
   287:            
   288:                !設定ファイルから出力ファイルに記載する情報を読み込む
   289:                call FileOpen(unit, file=namelist_filename, mode='r')
   290:                read(unit, NML=axesset_nml)
   291:                close(unit)
   292:                
   293:                ! 配列の上下限の値, 座標値と格子点間隔を設定
   294:                ! * 1 次元用のサブルーチンを用いる
   295:                !
   296: V======  I     call x_axis_init
   297: V======  I     call y_axis_init
   298: V======  I     call z_axis_init
   299:                
   300:                ! MPI 対応
   301:                ! * x 方向のみ
   302:                !
   303:                XMin = XMin           ! XMin = 0 を仮定
   304:                XMax = XMax * nprocs  ! CPU の数だけ領域を拡張する
   305:            
   306:                ! 3 次元格子点座標配列の設定
   307:                ! * 組み込み関数 spread を用いる. 
   308:                ! * 中間配列として 2 次元格子点座標配列を作り, それを 3 次元に拡張する.
   309:                ! 
   310:                allocate(xy_X(imin:imax,jmin:jmax))
   311:                allocate(xy_Y(imin:imax,jmin:jmax))
   312:                allocate(yz_Z(jmin:jmax,kmin:kmax))
   313:                
   314:                allocate(xyz_X(imin:imax,jmin:jmax,kmin:kmax))
   315:                allocate(xyz_Y(imin:imax,jmin:jmax,kmin:kmax))
   316:                allocate(xyz_Z(imin:imax,jmin:jmax,kmin:kmax))
   317:                allocate(xyz_dX(imin:imax,jmin:jmax,kmin:kmax))
   318:                allocate(xyz_dY(imin:imax,jmin:jmax,kmin:kmax))
   319:                allocate(xyz_dZ(imin:imax,jmin:jmax,kmin:kmax))
   320:                
   321: +V=====        xy_X  = spread(x_X, 2,size(y_Y))
   322: ++V====        xyz_X = spread(xy_X,3,size(z_Z))
   323:                
   324: +V=====        xy_X   = spread(x_dX, 2,size(y_dY))
   325: ++V====        xyz_dX = spread(xy_X,3,size(z_dZ))
   326:                
   327: +V=====        xy_Y  = spread(y_Y, 1,size(x_X))
   328: ++V====        xyz_Y = spread(xy_Y,3,size(z_Z))
   329:                
   330: +V=====        xy_Y   = spread(y_dY, 1,size(x_dX))
   331: ++V====        xyz_dY = spread(xy_Y,3,size(z_dZ))
   332:                
   333: +V=====        yz_Z  = spread(z_Z, 1,size(y_Y))
   334: ++V====        xyz_Z = spread(yz_Z,1,size(x_X))
   335:                
   336: +V=====        yz_Z   = spread(z_dZ, 1,size(y_dY))
   337: ++V====        xyz_dZ = spread(yz_Z,1,size(x_dX))
   338:                
   339:                deallocate(xy_X)
   340:                deallocate(xy_Y)
   341:                deallocate(yz_Z)
   342:            
   343:                !"myrank == 0" に該当する計算ノードが, 読み込んだ情報を出力
   344:                if (myrank == 0) then 
   345:                  call MessageNotify( "M", "axesset_init", "XMin = %f", d=(/XMin/)    )
   346:                  call MessageNotify( "M", "axesset_init", "XMax = %f", d=(/XMax/)    )
   347:                  call MessageNotify( "M", "axesset_init", "YMin = %f", d=(/YMin/)    )
   348:                  call MessageNotify( "M", "axesset_init", "YMax = %f", d=(/YMax/)    )
   349:                  call MessageNotify( "M", "axesset_init", "ZMin = %f", d=(/ZMin/)    )
   350:                  call MessageNotify( "M", "axesset_init", "ZMax = %f", d=(/ZMax/)    )
   351:                end if
   352:              
   353:              end subroutine axesset_init
   354:              
   355:              !--------------------------------------------------------------------
   356:              subroutine x_axis_init()
   357:                ! 配列の上下限の値と格子点座標値, 格子点間隔を設定する
   358:                
   359:                integer                 :: ix   ! do ループ添字
   360:                real(DP)                :: dx   ! 格子間隔
   361:            
   362:                allocate(x_X(imin:imax))
   363:                allocate(p_X(imin:imax))
   364:                allocate(x_dx(imin:imax))
   365:                allocate(p_dx(imin:imax))
   366:            
   367:                ! 等間隔格子
   368:                dx = (xmax - xmin) / nx
   369:                
   370: V------>       do ix = imin, imax
   371: |                p_X(ix) = dx * ix  + myrank * xmax
   372: |                x_X(ix) = dx * (ix - 0.5) + myrank * xmax
   373: |          !      p_X(ix) = dx * ix  
   374: |          !      x_X(ix) = dx * (ix - 0.5)
   375: |                x_dx(ix) = dx
   376: |                p_dx(ix) = dx
   377: V------        end do
   378:                
   379:              end subroutine x_axis_init
   380:              !--------------------------------------------------------------------
   381:              subroutine y_axis_init()
   382:                ! y 方向の座標値と格子点間隔を設定する
   383:                
   384:                integer                 :: jy   ! ループ添字
   385:                real(DP)                :: dy
   386:                
   387:                allocate(y_Y(jmin:jmax))
   388:                allocate(q_Y(jmin:jmax))
   389:                allocate(y_dy(jmin:jmax))
   390:                allocate(q_dy(jmin:jmax))
   391:                
   392:                ! 等間隔格子
   393:                dy = (ymax - ymin) / ny
   394:                
   395: V------>       do jy = jmin, jmax
   396: |                q_Y(jy) = dy * jy
   397: |                y_Y(jy) = dy * (jy - 0.5)
   398: |                y_dy(jy) = dy
   399: |                q_dy(jy) = dy
   400: V------        end do
   401:                
   402:              end subroutine y_axis_init
   403:              !--------------------------------------------------------------------
   404:              subroutine z_axis_init()
   405:                ! z 方向の座標値と格子点間隔を設定する
   406:                
   407:                integer                 :: kz   ! ループ添字
   408:                real(DP)            :: dz
   409:                
   410:                allocate(z_Z(kmin:kmax))
   411:                allocate(r_Z(kmin:kmax))
   412:                allocate(z_dz(kmin:kmax))
   413:                allocate(r_dz(kmin:kmax))
   414:                
   415:                ! 等間隔格子
   416:                dz = (zmax - zmin) / nz
   417:                
   418: V------>       do kz = kmin, kmax
   419: |                r_Z(kz) = dz * kz
   420: |                z_Z(kz) = dz * (kz - 0.5)
   421: |                r_dz(kz) = dz
   422: |                z_dz(kz) = dz
   423: V------        end do
   424:                
   425:              end subroutine z_axis_init
   426:              
   427:              !--------------------------------------------------------------------
   428:              function xaa_avr_paa(paa_Var)
   429:                ! 平均操作を行い x 方向整数格子点の配列値を半整数点上へ返す
   430:                
   431:                real(DP),intent(in) :: paa_Var(imin:imax,jmin:jmax,kmin:kmax)
   432:                real(DP)            :: xaa_avr_paa(imin:imax,jmin:jmax,kmin:kmax)
   433:                integer             :: ix
   434:            
   435:                ! 平均操作: p 座標から x 座標へ返す. imin の値は陽に代入する.
   436:                !
   437:                !    p     imin    0     1         imax-1  imax
   438:                !     |--*--|--*--||--*--|--*--|--*--||--*--|
   439:                !    x  imin   0      1         imax-1  imax
   440:                !
   441: X------>       do ix = imin+1, imax
   442: |++====          xaa_avr_paa(ix,:,:) = (paa_Var(ix,:,:) + paa_Var(ix-1,:,:))*0.5d0 
   443: X------        end do
   444:                
   445:                ! imin 格子上の値
   446: +V=====        xaa_avr_paa(imin,:,:) = 1.0d10 
   447:                
   448:              end function xaa_avr_paa
   449:              !--------------------------------------------------------------------
   450:              function paa_avr_xaa(xaa_Var)
   451:                ! 半整数格子点の配列値を整数点上へ返す
   452:                
   453:                real(DP),intent(in) :: xaa_Var(imin:imax,jmin:jmax,kmin:kmax)
   454:                real(DP)            :: paa_avr_xaa(imin:imax,jmin:jmax,kmin:kmax)
   455:                integer             :: ix
   456:            
   457:                ! 平均操作: x 座標から p 座標へ返す. imax の値は陽に代入する.
   458:                !     
   459:                !    p     imin    0     1         imax-1  imax
   460:                !     |--*--|--*--||--*--|--*--|--*--||--*--|
   461:                !    x  imin   0      1         imax-1  imax
   462:                !
   463: X------>       do ix = imin, imax-1
   464: |++====          paa_avr_xaa(ix,:,:) = &
   465: |                  &  (x_dx(ix)*xaa_Var(ix+1,:,:) + x_dx(ix+1)*xaa_Var(ix,:,:)) &
   466: |                  &  *0.5d0/p_dx(ix)
   467: X------        end do
   468:                
   469:                ! imax 格子上の値
   470: +V=====        paa_avr_xaa(imax,:,:) = 1.0d10
   471:                
   472:              end function paa_avr_xaa
   473:              !--------------------------------------------------------------------
   474:              function aya_avr_aqa(aqa_Var)
   475:                ! 平均操作を行い y 方向半整数格子点の配列値を整数格子点上へ返す
   476:                
   477:                real(DP),intent(in) :: aqa_Var(imin:imax,jmin:jmax,kmin:kmax)   
   478:                real(DP)            :: aya_avr_aqa(imin:imax,jmin:jmax,kmin:kmax)
   479:                integer                 :: jy
   480:                
   481:                ! 2 次元計算(y 方向の配列要素数が 1)の場合, 代入値をそのまま返す
   482:                if (jmin == jmax) then 
   483: ++V====          aya_avr_aqa = aqa_Var
   484:                  return
   485:                end if
   486:                
   487:                ! 平均操作
   488:                !
   489: W------>       do jy = jmin+1, jmax
   490: |++====          aya_avr_aqa(:,jy,:) = (aqa_Var(:,jy,:) + aqa_Var(:,jy-1,:))*0.5d0 
   491: W------        end do
   492:                
   493:                ! jmin 格子上の値
   494: +V=====        aya_avr_aqa(:,jmin,:) = 1.0d10
   495:                
   496:              end function aya_avr_aqa
   497:              !--------------------------------------------------------------------
   498:              function aqa_avr_aya(aya_Var)
   499:                ! 平均操作を行い y 方向半整数格子点の配列値を整数格子点上へ返す
   500:                
   501:                real(DP),intent(in) :: aya_Var(imin:imax,jmin:jmax,kmin:kmax)
   502:                real(DP)            :: aqa_avr_aya(imin:imax,jmin:jmax,kmin:kmax) 
   503:                integer                 :: jy
   504:                
   505:                ! 2 次元計算(y 方向の配列要素数が 1)の場合, 代入値をそのまま返す
   506:                if (jmin == jmax) then 
   507: ++V====          aqa_avr_aya = aya_Var
   508:                  return
   509:                end if
   510:                
   511:                ! 平均操作
   512:                !
   513: +------>       do jy = jmin, jmax-1
   514: |+V====          aqa_avr_aya(:,jy,:) = &
   515: |                  &  (y_dy(jy)*aya_Var(:,jy+1,:) + y_dy(jy+1)*aya_Var(:,jy,:)) &
   516: |                  &  * 0.5d0/q_dy(jy)
   517: +------        end do
   518:                
   519:                ! jmax 格子上の値
   520: +V=====        aqa_avr_aya(:,jmax,:) = 1.0d10
   521:                
   522:              end function aqa_avr_aya
   523:              !--------------------------------------------------------------------
   524:              function aaz_avr_aar(aar_Var)
   525:                ! 平均操作を行い z 方向整数格子点の配列値を半整数格子点上へ返す
   526:                
   527:                real(DP),intent(in) :: aar_Var(imin:imax,jmin:jmax,kmin:kmax)   
   528:                real(DP)            :: aaz_avr_aar(imin:imax,jmin:jmax,kmin:kmax)
   529:                integer                 :: kz
   530:                
   531:                ! 平均操作
   532:                !
   533: W------>       do kz = kmin+1, kmax
   534: |++====          aaz_avr_aar(:,:,kz) = (aar_Var(:,:,kz) + aar_Var(:,:,kz-1))*0.5d0 
   535: W------        end do
   536:                
   537:                ! kmin 格子上の値
   538: +V=====        aaz_avr_aar(:,:,kmin) = 1.0d10
   539:                
   540:              end function aaz_avr_aar
   541:              !--------------------------------------------------------------------
   542:              function aar_avr_aaz(aaz_Var)
   543:                ! 平均操作を行い z 方向半整数格子点の配列値を整数格子点上へ返す
   544:                
   545:                real(DP),intent(in) :: aaz_Var(imin:imax,jmin:jmax,kmin:kmax) 
   546:                real(DP)            :: aar_avr_aaz(imin:imax,jmin:jmax,kmin:kmax)
   547:                integer                 :: kz
   548:                
   549:                ! 平均操作
   550:                !
   551: +------>       do kz = kmin, kmax-1
   552: |W+====          aar_avr_aaz(:,:,kz) = &
   553: |                  &  (z_dz(kz)*aaz_Var(:,:,kz+1) + z_dz(kz+1)*aaz_Var(:,:,kz)) &
   554: |                  &  *0.5d0/r_dz(kz)
   555: +------        end do
   556:                
   557:                ! kmax 格子上の値
   558: +V=====        aar_avr_aaz(:,:,kmax) = 1.0d10
   559:                
   560:              end function aar_avr_aaz
   561:              !--------------------------------------------------------------------
   562:              function pqz_avr_xyz(xyz_Var)
   563:                real(DP), intent(in) :: xyz_Var(imin:imax,jmin:jmax,kmin:kmax)      ! 入力
   564:                real(DP)             :: pqz_avr_xyz(imin:imax,jmin:jmax,kmin:kmax)  ! 出力
   565:                integer              :: ix, jy                                      ! ループ添字
   566:            
   567:                ! 2 次元計算(y 方向の配列要素数が 1)の場合, pz_avr_xz と同じ計算を行う.
   568:                if (jmin == jmax) then 
   569: X------>         do ix = imin, imax-1
   570: |++====            pqz_avr_xyz(ix,:,:) = &
   571: |                    &  ( xyz_Var(ix,:,:) + xyz_Var(ix+1,:,:) ) * 0.5d0 
   572: X------          end do
   573:            
   574:                  ! imax 格子上の値
   575: +V=====          pqz_avr_xyz(imax,:,:) = 1.0d10
   576:            
   577:                ! 3 次元計算の場合
   578:                else
   579: +------>         do jy = jmin, jmax-1
   580: |X----->           do ix = imin, imax-1
   581: ||+====              pqz_avr_xyz(ix,jy,:) = &
   582: ||                     &  ( xyz_Var(ix,jy,:)   + xyz_Var(ix+1,jy,:) +  &
   583: ||                     &    xyz_Var(ix,jy+1,:) + xyz_Var(ix+1,jy+1,:) ) * 0.25d0 
   584: |X-----            end do
   585: +------          end do
   586:            
   587:                  ! imax 格子上の値
   588: +V=====          pqz_avr_xyz(imax,:,:) = 1.0d10
   589:                  ! jmax 格子上の値
   590: +V=====          pqz_avr_xyz(:,jmax,:) = 1.0d10
   591:                end if
   592:                    
   593:              end function pqz_avr_xyz
   594:              !--------------------------------------------------------------------
   595:              function pyr_avr_xyz(xyz_Var)
   596:                real(DP), intent(in) :: xyz_Var(imin:imax,jmin:jmax,kmin:kmax)     ! 入力
   597:                real(DP)             :: pyr_avr_xyz(imin:imax,jmin:jmax,kmin:kmax) ! 出力
   598:                integer              :: ix, kz                                     ! ループ添字
   599:                
   600: +------>       do kz = kmin, kmax-1
   601: |X----->         do ix = imin, imax-1
   602: ||+====            pyr_avr_xyz(ix,:,kz) = &
   603: ||                   &  ( xyz_Var(ix,:,kz)   + xyz_Var(ix+1,:,kz) +  &
   604: ||                   &    xyz_Var(ix,:,kz+1) + xyz_Var(ix+1,:,kz+1) ) * 0.25d0 
   605: |X-----          end do
   606: +------        end do
   607:            
   608:                ! imax 格子上の値
   609: +V=====        pyr_avr_xyz(imax,:,:) = 1.0d10
   610:                ! kmax 格子上の値
   611: +V=====        pyr_avr_xyz(:,:,kmax) = 1.0d10
   612:            
   613:                
   614:              end function pyr_avr_xyz
   615:              !--------------------------------------------------------------------
   616:              function xqr_avr_xyz(xyz_Var)
   617:                real(DP), intent(in) :: xyz_Var(imin:imax,jmin:jmax,kmin:kmax)       ! 入力
   618:                real(DP)             :: xqr_avr_xyz(imin:imax,jmin:jmax,kmin:kmax)   ! 出力
   619:                integer              :: jy, kz                                       ! ループ添字
   620:                
   621:                if (jmin == jmax) then 
   622:                  ! xr_avr_xz と同じになる
   623: W------>         do kz = kmin, kmax-1
   624: |++====            xqr_avr_xyz(:,:,kz) = &
   625: |                    &  ( xyz_Var(:,:,kz) + xyz_Var(:,:,kz+1) ) * 0.5d0 
   626: W------          end do
   627:            
   628:                  ! kmax 格子上の値
   629: +V=====          xqr_avr_xyz(:,:,kmax) = 1.0d10
   630:                  
   631:                else
   632: +------>         do kz = kmin, kmax-1
   633: |W----->           do jy = jmin, jmax-1
   634: ||+====              xqr_avr_xyz(:,jy,kz) = &
   635: ||                     &  ( xyz_Var(:,jy,kz)   + xyz_Var(:,jy+1,kz) +  &
   636: ||                     &    xyz_Var(:,jy,kz+1) + xyz_Var(:,jy+1,kz+1) ) * 0.25d0 
   637: |W-----            end do
   638: +------          end do
   639:            
   640:                  ! jmax 格子上の値
   641: +V=====          xqr_avr_xyz(:,jmax,:) = 1.0d10
   642:                  ! kmax 格子上の値
   643: +V=====          xqr_avr_xyz(:,:,kmax) = 1.0d10
   644:            
   645:                end if
   646:                
   647:              end function xqr_avr_xyz
   648:              !--------------------------------------------------------------------
   649:              function xyz_avr_pqz(pqz_Var)
   650:                real(DP), intent(in) :: pqz_Var(imin:imax,jmin:jmax,kmin:kmax)     ! 入力
   651:                real(DP)             :: xyz_avr_pqz(imin:imax,jmin:jmax,kmin:kmax) ! 出力
   652:                integer              :: ix, jy                                     ! ループ添字
   653:                
   654:                if (jmin == jmax) then 
   655:                  ! xz_avr_pz と同じになる
   656: X------>         do ix = imin+1, imax
   657: |++====            xyz_avr_pqz(ix,:,:) = &
   658: |                    &  ( pqz_Var(ix-1,:,:) + pqz_Var(ix,:,:) ) * 0.5d0 
   659: X------          end do
   660:            
   661:                  ! imin 格子上の値
   662: +V=====          xyz_avr_pqz(imin,:,:) = 1.0d10
   663:            
   664:                else
   665: +------>         do jy = jmin+1, jmax
   666: |X----->           do ix = imin+1, imax
   667: ||+====              xyz_avr_pqz(ix,jy,:) = &
   668: ||                     &  ( pqz_Var(ix-1,jy-1,:) + pqz_Var(ix,jy-1,:)  &
   669: ||                     &    + pqz_Var(ix-1,jy,:)   + pqz_Var(ix,jy,:) ) * 0.25d0 
   670: |X-----            end do
   671: +------          end do
   672:            
   673:                  ! imin 格子上の値
   674: +V=====          xyz_avr_pqz(imin,:,:) = 1.0d10
   675:                  ! jmin 格子上の値
   676: +V=====          xyz_avr_pqz(:,jmin,:) = 1.0d10
   677:                end if
   678:                
   679:              end function xyz_avr_pqz
   680:              !--------------------------------------------------------------------
   681:              function xyz_avr_pyr(pyr_Var)
   682:                real(DP), intent(in) :: pyr_Var(imin:imax,jmin:jmax,kmin:kmax)     ! 入力
   683:                real(DP)             :: xyz_avr_pyr(imin:imax,jmin:jmax,kmin:kmax) ! 出力
   684:                integer              :: ix, kz                                     ! ループ添字
   685:                    
   686: +------>       do kz = kmin+1, kmax
   687: |X----->         do ix = imin+1, imax
   688: ||+====            xyz_avr_pyr(ix,:,kz) = &
   689: ||                   &  ( pyr_Var(ix-1,:,kz-1) + pyr_Var(ix,:,kz-1) +  &
   690: ||                   &    pyr_Var(ix-1,:,kz)   + pyr_Var(ix,:,kz)     ) * 0.25d0 
   691: |X-----          end do
   692: +------        end do
   693:            
   694:                ! imin 格子上の値
   695: +V=====        xyz_avr_pyr(imin,:,:) = 1.0d10
   696:                ! kmin 格子上の値
   697: +V=====        xyz_avr_pyr(:,:,kmin) = 1.0d10
   698:            
   699:              end function xyz_avr_pyr
   700:              !--------------------------------------------------------------------
   701:              function xyz_avr_xqr(xqr_Var)
   702:                real(DP), intent(in) :: xqr_Var(imin:imax,jmin:jmax,kmin:kmax)     ! 入力
   703:                real(DP)             :: xyz_avr_xqr(imin:imax,jmin:jmax,kmin:kmax) ! 出力
   704:                integer              :: jy, kz                                     ! ループ添字
   705:                    
   706:                if (jmin == jmax) then  
   707:                  !xz_avr_xr と同じ
   708: W------>         do kz = kmin+1, kmax
   709: |++====            xyz_avr_xqr(:,:,kz) = &
   710: |                    &  ( xqr_Var(:,:,kz-1) + xqr_Var(:,:,kz) ) * 0.5d0 
   711: W------          end do
   712:            
   713:                  ! kmin 格子上の値
   714: +V=====          xyz_avr_xqr(:,:,kmin) = 1.0d10
   715:            
   716:                else
   717: +------>         do kz = kmin+1, kmax
   718: |W----->           do jy = jmin+1, jmax
   719: ||+====              xyz_avr_xqr(:,jy,kz) = &
   720: ||                     &  ( xqr_Var(:,jy-1,kz-1) + xqr_Var(:,jy,kz-1) +  &
   721: ||                     &    xqr_Var(:,jy-1,kz)   + xqr_Var(:,jy,kz)     ) * 0.25d0 
   722: |W-----            end do
   723: +------          end do
   724:            
   725:                  ! jmin 格子上の値
   726: +V=====          xyz_avr_xqr(:,jmin,:) = 1.0d10
   727:                  ! kmin 格子上の値
   728: +V=====          xyz_avr_xqr(:,:,kmin) = 1.0d10
   729:                end if
   730:                
   731:              end function xyz_avr_xqr
   732:              !--------------------------------------------------------------------
   733:              function aa_IntX_xaa(xaa_Var)
   734:                ! xaa 格子上の配列に対し x 方向積分を行う
   735:                
   736:                real(DP), intent(in) :: xaa_Var(imin:imax,jmin:jmax,kmin:kmax) ! 入力
   737:                real(DP)             :: aa_IntX_xaa(jmin:jmax,kmin:kmax)       ! 出力
   738:                integer                  :: jy, kz                           ! ループ添字
   739:                
   740:                ! 初期化
   741: +V=====        aa_IntX_xaa = 0.0d0
   742:                
   743:                ! 積分
   744: +------>       do kz = kmin, kmax
   745: |+----->         do jy = jmin, jmax
   746: ||V====  I         aa_IntX_xaa(jy,kz) = IntX_x(xaa_Var(:,jy,kz))
   747: |+-----          end do
   748: +------        end do
   749:                
   750:              end function aa_IntX_xaa
   751:              !--------------------------------------------------------------------
   752:              function yz_IntX_pyz(pyz_Var)
   753:                ! pyz 格子上の配列に対し x 方向積分を行う
   754:                
   755:                real(DP), intent(in) :: pyz_Var(imin:imax,jmin:jmax,kmin:kmax) ! 入力
   756:                real(DP)             :: yz_IntX_pyz(jmin:jmax,kmin:kmax)       ! 出力
   757:                integer                  :: jy, kz                           ! ループ添字
   758:                
   759:                ! 初期化
   760: +V=====        yz_IntX_pyz = 0.0d0
   761:                
   762:                ! 積分
   763: +------>       do kz = kmin, kmax
   764: |+----->         do jy = jmin, jmax
   765: ||V====  I         yz_IntX_pyz(jy,kz) = IntX_p(pyz_Var(:,jy,kz))
   766: |+-----          end do
   767: +------        end do
   768:                
   769:              end function yz_IntX_pyz
   770:              !--------------------------------------------------------------------
   771:              function aa_IntY_aya(aya_Var)
   772:                ! aya 格子上の配列に対し y 方向積分を行う
   773:                
   774:                real(DP), intent(in) :: aya_Var(imin:imax,jmin:jmax,kmin:kmax) ! 入力
   775:                real(DP)             :: aa_IntY_aya(imin:imax,kmin:kmax)       ! 出力
   776:                integer                  :: ix, kz                           ! ループ添字
   777:                
   778:                ! 初期化
   779: +V=====        aa_IntY_aya = 0.0d0
   780:                
   781:                ! 積分
   782: +------>       do kz = kmin, kmax
   783: |+----->         do ix = imin, imax
   784: ||V====  I         aa_IntY_aya(ix,kz) = IntY_y(aya_Var(ix,:,kz))
   785: |+-----          end do
   786: +------        end do
   787:                
   788:              end function aa_IntY_aya
   789:              !--------------------------------------------------------------------
   790:              function xz_IntY_xqz(xqz_Var)
   791:                ! xqz 格子上の配列に対し y 方向積分を行う
   792:                
   793:                real(DP), intent(in) :: xqz_Var(imin:imax,jmin:jmax,kmin:kmax) ! 入力
   794:                real(DP)             :: xz_IntY_xqz(imin:imax,kmin:kmax)       ! 出力
   795:                integer                  :: ix, kz                           ! ループ添字
   796:                
   797:                ! 初期化
   798: +V=====        xz_IntY_xqz = 0.0d0
   799:                
   800:                ! 積分
   801: +------>       do kz = kmin, kmax
   802: |+----->         do ix = imin, imax
   803: ||V====  I         xz_IntY_xqz(ix,kz) = IntY_q(xqz_Var(ix,:,kz))
   804: |+-----          end do
   805: +------        end do
   806:                
   807:              end function xz_IntY_xqz
   808:              !--------------------------------------------------------------------
   809:              function aa_IntZ_aaz(aaz_Var)
   810:                ! aaz 格子上の配列に対し z 方向積分を行う
   811:                
   812:                real(DP), intent(in) :: aaz_Var(imin:imax,jmin:jmax,kmin:kmax) ! 入力
   813:                real(DP)             :: aa_IntZ_aaz(imin:imax,jmin:jmax)       ! 出力
   814:                integer                  :: ix, jy                           ! ループ添字
   815:                
   816:                ! 初期化
   817: +V=====        aa_IntZ_aaz = 0.0d0
   818:            
   819:                ! 積分
   820: +------>       do jy = jmin, jmax
   821: |+----->         do ix = imin, imax
   822: ||V====  I         aa_IntZ_aaz(ix,jy) = IntZ_z(aaz_Var(ix,jy,:))
   823: |+-----          end do
   824: +------        end do
   825:                
   826:              end function aa_IntZ_aaz
   827:              !--------------------------------------------------------------------
   828:              function xy_IntZ_xyr(xyr_Var)
   829:                ! xyr 格子上の配列に対し z 方向積分を行う
   830:                
   831:                real(DP), intent(in) :: xyr_Var(imin:imax,jmin:jmax,kmin:kmax) ! 入力
   832:                real(DP)             :: xy_IntZ_xyr(imin:imax,jmin:jmax)       ! 出力
   833:                integer                  :: ix, jy                           ! ループ添字
   834:                
   835:                ! 初期化
   836: +V=====        xy_IntZ_xyr = 0.0d0
   837:                
   838:                ! 積分
   839: +------>       do jy = jmin, jmax
   840: |+----->         do ix = imin, imax
   841: ||V====  I         xy_IntZ_xyr(ix,jy) = IntZ_r(xyr_Var(ix,jy,:))
   842: |+-----          end do
   843: +------        end do
   844:                
   845:              end function xy_IntZ_xyr
   846:              !--------------------------------------------------------------------
   847:              function a_IntXY_xya(xya_Var)
   848:                ! xya 格子上の配列に対し xy 方向積分を行う
   849:                
   850:                real(DP), intent(in) :: xya_Var(imin:imax,jmin:jmax,kmin:kmax) ! 入力
   851:                real(DP)             :: a_IntXY_xya(kmin:kmax)       ! 出力
   852:                integer                  :: kz                           ! ループ添字
   853:                
   854:                ! 初期化
   855: V======        a_IntXY_xya = 0.0d0
   856:                
   857:                ! 積分
   858: +------>       do kz = kmin, kmax
   859: |V=====  I       a_IntXY_xya(kz) = IntY_y(y_IntX_xy(xya_Var(:,:,kz)))
   860: +------        end do
   861:                
   862:              end function a_IntXY_xya
   863:              !--------------------------------------------------------------------
   864:              function z_IntXY_pyz(pyz_Var)
   865:                ! pyz 格子上の配列に対し xy 方向積分を行う
   866:                
   867:                real(DP), intent(in) :: pyz_Var(imin:imax,jmin:jmax,kmin:kmax) ! 入力
   868:                real(DP)             :: z_IntXY_pyz(kmin:kmax)       ! 出力
   869:                integer                  :: kz                           ! ループ添字
   870:                
   871:                ! 初期化
   872: V======        z_IntXY_pyz = 0.0d0
   873:                
   874:                ! 積分
   875: +------>       do kz = kmin, kmax
   876: |V=====  I       z_IntXY_pyz(kz) = IntY_y(y_IntX_py(pyz_Var(:,:,kz)))
   877: +------        end do
   878:                
   879:              end function z_IntXY_pyz
   880:              !--------------------------------------------------------------------
   881:              function z_IntXY_xqz(xqz_Var)
   882:                ! xqz 格子上の配列に対し xy 方向積分を行う
   883:                
   884:                real(DP), intent(in) :: xqz_Var(imin:imax,jmin:jmax,kmin:kmax) ! 入力
   885:                real(DP)             :: z_IntXY_xqz(kmin:kmax)       ! 出力
   886:                integer                  :: kz                           ! ループ添字
   887:                
   888:                ! 初期化
   889: V======        z_IntXY_xqz = 0.0d0
   890:                
   891:                ! 積分
   892: +------>       do kz = kmin, kmax
   893: |V=====  I       z_IntXY_xqz(kz) = IntY_q(q_IntX_xq(xqz_Var(:,:,kz)))
   894: +------        end do
   895:                
   896:              end function z_IntXY_xqz
   897:              !--------------------------------------------------------------------
   898:              function IntXYZ_xyz(xyz_Var)
   899:                ! xyz 格子上の配列に対し領域積分を行う
   900:                
   901:                real(DP), intent(in) :: xyz_Var(imin:imax,jmin:jmax,kmin:kmax) ! 入力
   902:                real(DP)             :: IntXYZ_xyz                             ! 出力
   903:                
   904:                ! 初期化
   905:                IntXYZ_xyz = 0.0d0
   906:                
   907: V======  I     IntXYZ_xyz = IntZ_z(a_IntXY_xya(xyz_Var))
   908:                
   909:              end function IntXYZ_xyz
   910:              !--------------------------------------------------------------------
   911:              function IntXYZ_pyz(pyz_Var)
   912:                ! pyz 格子上の配列に対し領域積分を行う
   913:                
   914:                real(DP), intent(in) :: pyz_Var(imin:imax,jmin:jmax,kmin:kmax) ! 入力
   915:                real(DP)             :: IntXYZ_pyz                             ! 出力
   916:                
   917:                ! 初期化
   918:                IntXYZ_pyz = 0.0d0
   919:            
   920: V======  I     IntXYZ_pyz = IntZ_z(z_IntXY_pyz(pyz_Var))
   921:                
   922:              end function IntXYZ_pyz
   923:              !--------------------------------------------------------------------
   924:              function IntXYZ_xqz(xqz_Var)
   925:                ! xqz 格子上の配列に対し領域積分を行う
   926:                
   927:                real(DP), intent(in) :: xqz_Var(imin:imax,jmin:jmax,kmin:kmax) ! 入力
   928:                real(DP)             :: IntXYZ_xqz                             ! 出力
   929:                
   930:                ! 初期化
   931:                IntXYZ_xqz = 0.0d0
   932:                
   933: V======  I     IntXYZ_xqz = IntZ_z(z_IntXY_xqz(xqz_Var))
   934:                
   935:              end function IntXYZ_xqz
   936:              !--------------------------------------------------------------------
   937:              function IntXYZ_xyr(xyr_Var)
   938:                ! xyr 格子上の配列に対し領域積分を行う
   939:                
   940:                real(DP), intent(in) :: xyr_Var(imin:imax,jmin:jmax,kmin:kmax) ! 入力
   941:                real(DP)             :: IntXYZ_xyr                             ! 出力
   942:                
   943:                ! 初期化
   944:                IntXYZ_xyr = 0.0d0
   945:                
   946: V======  I     IntXYZ_xyr = IntZ_r(a_IntXY_xya(xyr_Var))
   947:            
   948:              end function IntXYZ_xyr
   949:              !--------------------------------------------------------------------
   950:              function aa_AvrX_xaa(xaa_Var)
   951:                ! xaa 格子上の配列に対し x 方向平均を行う
   952:            
   953:                real(DP), intent(in) :: xaa_Var(imin:imax,jmin:jmax,kmin:kmax) ! 入力
   954:                real(DP)             :: aa_AvrX_xaa(jmin:jmax,kmin:kmax)       ! 出力
   955:                
   956:                ! 初期化
   957: *V----->       aa_AvrX_xaa = 0.0d0
   958: ||             
   959: ||             ! 平均
   960: MM-----        aa_AvrX_xaa = aa_IntX_xaa(xaa_Var)/sum(x_dx(1:nx))
   961:                
   962:              end function aa_AvrX_xaa
   963:              !--------------------------------------------------------------------
   964:              function yz_AvrX_pyz(pyz_Var)
   965:                ! pyz 格子上の配列に対し x 方向平均を行う
   966:                
   967:                real(DP), intent(in) :: pyz_Var(imin:imax,jmin:jmax,kmin:kmax) ! 入力
   968:                real(DP)             :: yz_AvrX_pyz(jmin:jmax,kmin:kmax)       ! 出力
   969:                
   970:                ! 初期化
   971: *V----->       yz_AvrX_pyz = 0.0d0
   972: ||             
   973: ||             ! 平均
   974: MM-----        yz_AvrX_pyz = yz_IntX_pyz(pyz_Var)/sum(x_dx(1:nx))
   975:                
   976:              end function yz_AvrX_pyz
   977:              !--------------------------------------------------------------------
   978:              function aa_AvrY_aya(aya_Var)
   979:                ! aya 格子上の配列に対し y 方向平均を行う
   980:                
   981:                real(DP), intent(in) :: aya_Var(imin:imax,jmin:jmax,kmin:kmax) ! 入力
   982:                real(DP)             :: aa_AvrY_aya(imin:imax,kmin:kmax)       ! 出力
   983:                
   984:                ! 初期化
   985: *V----->       aa_AvrY_aya = 0.0d0
   986: ||             
   987: ||             ! 平均
   988: MM-----        aa_AvrY_aya = aa_IntY_aya(aya_Var)/sum(y_dy(1:ny))
   989:                
   990:              end function aa_AvrY_aya
   991:              !--------------------------------------------------------------------
   992:              function xz_AvrY_xqz(xqz_Var)
   993:                ! xqz 格子上の配列に対し y 方向平均を行う
   994:                
   995:                real(DP), intent(in) :: xqz_Var(imin:imax,jmin:jmax,kmin:kmax) ! 入力
   996:                real(DP)             :: xz_AvrY_xqz(imin:imax,kmin:kmax)       ! 出力
   997:                
   998:                ! 初期化
   999: *V----->       xz_AvrY_xqz = 0.0d0
  1000: ||             
  1001: ||             ! 平均
  1002: MM-----        xz_AvrY_xqz = xz_IntY_xqz(xqz_Var)/sum(y_dy(1:ny))
  1003:                
  1004:              end function xz_AvrY_xqz
  1005:              !--------------------------------------------------------------------
  1006:              function aa_AvrZ_aaz(aaz_Var)
  1007:                ! aaz 格子上の配列に対し z 方向平均を行う
  1008:                
  1009:                real(DP), intent(in) :: aaz_Var(imin:imax,jmin:jmax,kmin:kmax) ! 入力
  1010:                real(DP)             :: aa_AvrZ_aaz(imin:imax,jmin:jmax)       ! 出力
  1011:                
  1012:                ! 初期化
  1013: *V----->       aa_AvrZ_aaz = 0.0d0
  1014: ||             
  1015: ||             ! 平均
  1016: MM-----        aa_AvrZ_aaz = aa_IntZ_aaz(aaz_Var)/sum(z_dz(1:nz))
  1017:                
  1018:              end function aa_AvrZ_aaz
  1019:              !--------------------------------------------------------------------
  1020:              function xy_AvrZ_xyr(xyr_Var)
  1021:                ! xyr 格子上の配列に対し z 方向平均を行う
  1022:                
  1023:                real(DP), intent(in) :: xyr_Var(imin:imax,jmin:jmax,kmin:kmax) ! 入力
  1024:                real(DP)             :: xy_AvrZ_xyr(imin:imax,jmin:jmax)       ! 出力
  1025:                  
  1026:                ! 初期化
  1027: *V----->       xy_AvrZ_xyr = 0.0d0
  1028: ||             
  1029: ||             ! 平均
  1030: MM-----        xy_AvrZ_xyr = xy_IntZ_xyr(xyr_Var)/sum(z_dz(1:nz))
  1031:                
  1032:              end function xy_AvrZ_xyr
  1033:            !--------------------------------------------------------------------
  1034:              function AvrXYZ_xyz(xyz_Var)
  1035:                ! xyz 格子上の配列に対し領域積分を行う
  1036:                
  1037:                real(DP), intent(in) :: xyz_Var(imin:imax,jmin:jmax,kmin:kmax) ! 入力
  1038:                real(DP)             :: AvrXYZ_xyz                             ! 出力
  1039:                
  1040:                ! 初期化
  1041:                AvrXYZ_xyz = 0.0d0
  1042:                
  1043: V======        AvrXYZ_xyz = IntXYZ_xyz(xyz_Var)/ &
  1044:                  &             (sum(x_dx(1:nx))*sum(y_dy(1:ny))*sum(z_dz(1:nz)))
  1045:                
  1046:              end function AvrXYZ_xyz
  1047:              !--------------------------------------------------------------------
  1048:              function AvrXYZ_pyz(pyz_Var)
  1049:                ! pyz 格子上の配列に対し領域積分を行う
  1050:                
  1051:                real(DP), intent(in) :: pyz_Var(imin:imax,jmin:jmax,kmin:kmax) ! 入力
  1052:                real(DP)             :: AvrXYZ_pyz                             ! 出力
  1053:                
  1054:                ! 初期化
  1055:                AvrXYZ_pyz = 0.0d0
  1056:                
  1057: V======        AvrXYZ_pyz = IntXYZ_pyz(pyz_Var)/ &
  1058:                  &             (sum(x_dx(1:nx))*sum(y_dy(1:ny))*sum(z_dz(1:nz)))
  1059:                
  1060:              end function AvrXYZ_pyz
  1061:            !--------------------------------------------------------------------
  1062:              function AvrXYZ_xqz(xqz_Var)
  1063:                ! xqz 格子上の配列に対し領域積分を行う
  1064:                
  1065:                real(DP), intent(in) :: xqz_Var(imin:imax,jmin:jmax,kmin:kmax) ! 入力
  1066:                real(DP)             :: AvrXYZ_xqz                             ! 出力
  1067:                
  1068:                ! 初期化
  1069:                AvrXYZ_xqz = 0.0d0
  1070:                
  1071: V======        AvrXYZ_xqz = IntXYZ_xqz(xqz_Var)/ &
  1072:                  &             (sum(x_dx(1:nx))*sum(y_dy(1:ny))*sum(z_dz(1:nz)))
  1073:                
  1074:              end function AvrXYZ_xqz
  1075:              !--------------------------------------------------------------------
  1076:              function AvrXYZ_xyr(xyr_Var)
  1077:                ! xyr 格子上の配列に対し領域積分を行う
  1078:                
  1079:                real(DP), intent(in) :: xyr_Var(imin:imax,jmin:jmax,kmin:kmax) ! 入力
  1080:                real(DP)             :: AvrXYZ_xyr                             ! 出力
  1081:                
  1082:                ! 初期化
  1083:                AvrXYZ_xyr = 0.0d0
  1084:            
  1085: V======        AvrXYZ_xyr = IntXYZ_xyr(xyr_Var)/ &
  1086:                  &             (sum(x_dx(1:nx))*sum(y_dy(1:ny))*sum(z_dz(1:nz)))
  1087:                
  1088:              end function AvrXYZ_xyr
  1089:              !--------------------------------------------------------------------
  1090:              function a_AvrXY_xya(xya_Var)
  1091:                ! xya 格子上の配列に対し xy 方向平均を行う
  1092:                
  1093:                real(DP), intent(in) :: xya_Var(imin:imax,jmin:jmax,kmin:kmax) ! 入力
  1094:                real(DP)             :: a_AvrXY_xya(kmin:kmax)       ! 出力
  1095:            
  1096:                ! 初期化
  1097: V------>       a_AvrXY_xya = 0.0d0
  1098: |              
  1099: |              ! 平均
  1100: V------        a_AvrXY_xya = a_IntXY_xya(xya_Var)/(sum(x_dx(1:nx))*sum(y_dy(1:ny)))
  1101:                
  1102:              end function a_AvrXY_xya
  1103:              !--------------------------------------------------------------------
  1104:              function z_AvrXY_pyz(pyz_Var)
  1105:                ! pyz 格子上の配列に対し xy 方向平均を行う
  1106:                
  1107:                real(DP), intent(in) :: pyz_Var(imin:imax,jmin:jmax,kmin:kmax) ! 入力
  1108:                real(DP)             :: z_AvrXY_pyz(kmin:kmax)       ! 出力
  1109:                
  1110:                ! 初期化
  1111: V------>       z_AvrXY_pyz = 0.0d0
  1112: |              
  1113: |              ! 平均
  1114: V------        z_AvrXY_pyz = z_IntXY_pyz(pyz_Var)/(sum(x_dx(1:nx))*sum(y_dy(1:ny)))
  1115:                
  1116:              end function z_AvrXY_pyz
  1117:              !--------------------------------------------------------------------
  1118:              function z_AvrXY_xqz(xqz_Var)
  1119:                ! xqz 格子上の配列に対し xy 方向積分を行う
  1120:                
  1121:                real(DP), intent(in) :: xqz_Var(imin:imax,jmin:jmax,kmin:kmax) ! 入力
  1122:                real(DP)             :: z_AvrXY_xqz(kmin:kmax)       ! 出力
  1123:                
  1124:                ! 初期化
  1125: V------>       z_AvrXY_xqz = 0.0d0
  1126: |              
  1127: |              ! 平均
  1128: V------        z_AvrXY_xqz = z_IntXY_xqz(xqz_Var)/(sum(x_dx(1:nx))*sum(y_dy(1:ny)))
  1129:                
  1130:              end function z_AvrXY_xqz
  1131:              !--------------------------------------------------------------------
  1132:              function IntX_p(p_Var)
  1133:                ! 整数格子上の配列に対し x 方向に重み付きの積分を行う
  1134:                
  1135:                real(DP), intent(in) :: p_Var(imin:imax)  ! 入力
  1136:                real(DP)             :: IntX_p            ! 出力
  1137:                
  1138:                ! 初期化
  1139:                IntX_p = 0.0d0
  1140:                
  1141:                ! 積分
  1142: V======        IntX_p = sum(p_Var(1:nx)*p_dx(1:nx))
  1143:                
  1144:              end function IntX_p
  1145:              !--------------------------------------------------------------------
  1146:              function IntX_x(x_Var)
  1147:                ! 半整数格子上の配列に対し x 方向に重み付きの積分を行う
  1148:                
  1149:                real(DP), intent(in) :: x_Var(imin:imax)  ! 入力
  1150:                real(DP)             :: IntX_x            ! 出力
  1151:                real(DP), allocatable:: work(:)
  1152:                
  1153:                ! 初期化
  1154:                IntX_x = 0.0d0
  1155:                allocate(work(imin:imax))
  1156:                
  1157:                ! 積分
  1158: V======        work = x_Var*x_dx
  1159:                
  1160: V======        IntX_x = sum(work(1:nx))
  1161:                
  1162:                deallocate(work)
  1163:                
  1164:              end function IntX_x
  1165:            !--------------------------------------------------------------------
  1166:              function IntY_q(q_Var)
  1167:                ! 整数格子上の配列に対し y 方向に重み付きの積分を行う
  1168:                
  1169:                real(DP), intent(in) :: q_Var(jmin:jmax)  ! 入力
  1170:                real(DP)             :: IntY_q            ! 出力
  1171:                
  1172:                ! 初期化
  1173:                IntY_q = 0.0d0
  1174:                
  1175:                ! 積分
  1176: V======        IntY_q = sum(q_Var(1:ny)*q_dy(1:ny))
  1177:                
  1178:              end function IntY_q
  1179:            !--------------------------------------------------------------------
  1180:              function IntY_y(y_Var)
  1181:                ! 半整数格子上の配列に対し y 方向に重み付きの積分を行う
  1182:                
  1183:                real(DP), intent(in) :: y_Var(jmin:jmax)  ! 入力
  1184:                real(DP)             :: IntY_y            ! 出力
  1185:                
  1186:                ! 初期化
  1187:                IntY_y = 0.0d0
  1188:                
  1189:                ! 積分
  1190: V======        IntY_y = sum(y_Var(1:ny)*y_dy(1:ny))
  1191:                
  1192:              end function IntY_y
  1193:              !--------------------------------------------------------------------
  1194:              function IntZ_r(r_Var)
  1195:                ! 整数格子上の配列に対し z 方向に重み付きの積分を行う
  1196:            
  1197:                real(DP), intent(in) :: r_Var(kmin:kmax)  ! 入力
  1198:                real(DP)             :: IntZ_r            ! 出力
  1199:                
  1200:                ! 初期化
  1201:                IntZ_r = 0.0d0
  1202:                
  1203:                ! 積分
  1204: V======        IntZ_r = sum(r_Var(1:nz)*r_dz(1:nz))
  1205:                
  1206:              end function IntZ_r
  1207:            !--------------------------------------------------------------------
  1208:              function IntZ_z(z_Var)
  1209:                ! 半整数格子上の配列に対し z 方向に重み付きの積分を行う
  1210:                
  1211:                real(DP), intent(in) :: z_Var(kmin:kmax)  ! 入力
  1212:                real(DP)             :: IntZ_z            ! 出力
  1213:            
  1214:                ! 初期化
  1215:                IntZ_z = 0.0d0
  1216:                
  1217:                ! 積分
  1218: V======        IntZ_z = sum(z_Var(1:nz)*z_dz(1:nz))
  1219:                
  1220:              end function IntZ_z
  1221:            !--------------------------------------------------------------------
  1222:              function a_IntX_xa(xa_Var)
  1223:                ! xa 格子上の配列に対し x 方向に重み付きの積分を行う
  1224:                
  1225:                real(DP), intent(in) :: xa_Var(imin:imax,jmin:jmax) ! 入力
  1226:                real(DP)             :: a_IntX_xa(jmin:jmax)        ! 出力
  1227:                integer                  :: jy                          ! ループ添字
  1228:            
  1229:                ! 初期化
  1230: V======        a_IntX_xa = 0.0d0
  1231:                
  1232:                ! 積分
  1233: +------>       do jy = jmin, jmax
  1234: |V=====  I       a_IntX_xa(jy) = IntX_x(xa_Var(:,jy))
  1235: +------        end do
  1236:                
  1237:              end function a_IntX_xa
  1238:            !--------------------------------------------------------------------
  1239:              function y_IntX_py(py_Var)
  1240:                ! py 格子上の配列に対し x 方向に重み付きの積分を行う
  1241:                
  1242:                real(DP), intent(in) :: py_Var(imin:imax,jmin:jmax) ! 入力
  1243:                real(DP)             :: y_IntX_py(jmin:jmax)        ! 出力
  1244:                integer                  :: jy                          ! ループ添字
  1245:                
  1246:                ! 初期化
  1247: V======        y_IntX_py = 0.0d0
  1248:            
  1249:                ! 積分
  1250: +------>       do jy = jmin, jmax
  1251: |V=====  I       y_IntX_py(jy) = IntX_p(py_Var(:,jy))
  1252: +------        end do
  1253:                
  1254:              end function y_IntX_py
  1255:              !--------------------------------------------------------------------
  1256:              function a_IntY_ay(ay_Var)
  1257:                ! ay 格子上の配列に対し y 方向に重み付きの積分を行う
  1258:                
  1259:                real(DP), intent(in) :: ay_Var(imin:imax,jmin:jmax) ! 入力
  1260:                real(DP)             :: a_IntY_ay(imin:imax)        ! 出力
  1261:                integer                  :: ix                          ! ループ添字
  1262:                
  1263:                ! 初期化
  1264: V======        a_IntY_ay = 0.0d0
  1265:                
  1266:                ! 積分
  1267: +------>       do ix = imin, imax
  1268: |V=====  I       a_IntY_ay(ix) = IntY_y(ay_Var(ix,:))
  1269: +------        end do
  1270:                
  1271:              end function a_IntY_ay
  1272:              !--------------------------------------------------------------------
  1273:              function x_IntY_xq(xq_Var)
  1274:                ! ay 格子上の配列に対し y 方向に重み付きの積分を行う
  1275:                
  1276:                real(DP), intent(in) :: xq_Var(imin:imax,jmin:jmax) ! 入力
  1277:                real(DP)             :: x_IntY_xq(imin:imax)        ! 出力
  1278:                integer                  :: ix                          ! ループ添字
  1279:                
  1280:                ! 初期化
  1281: V======        x_IntY_xq = 0.0d0
  1282:                
  1283:                ! 積分
  1284: +------>       do ix = imin, imax
  1285: |V=====  I       x_IntY_xq(ix) = IntY_q(xq_Var(ix,:))
  1286: +------        end do
  1287:                
  1288:              end function x_IntY_xq
  1289:            
  1290:            end module axesset
