subroutine acousticmode_2d_exp( & & pyz_VelXN, xyr_VelZN, & !(IN) & xyz_ExnerN, & !(IN) & xyz_VelDivN, & !(OUT) & pyz_PGrad, pyz_SWF & !(OUT) & ) ! モジュール呼び出し ! use gridset, only : imin, &! x 方向の配列の下限 & imax, &! x 方向の配列の上限 & jmin, &! y 方向の配列の下限 & jmax, &! y 方向の配列の上限 & kmin, &! z 方向の配列の下限 & kmax, &! z 方向の配列の上限 & nx, ny, nz use axesset, only : dx, dz ! 格子間隔 use constants, only : CpDry ! 乾燥成分の比熱 use basicset, only : pyz_VPTempBZ ! 暗黙の型宣言禁止 ! implicit none ! 変数の宣言 ! real(DP), intent(in) :: pyz_VelXN(imin:imax,jmin:jmax,kmin:kmax) real(DP), intent(in) :: xyr_VelZN(imin:imax,jmin:jmax,kmin:kmax) real(DP), intent(in) :: xyz_ExnerN(imin:imax,jmin:jmax,kmin:kmax) real(DP), intent(out) :: xyz_VelDivN(imin:imax,jmin:jmax,kmin:kmax) real(DP), intent(out) :: pyz_PGrad(1:nx,1:ny,1:nz) real(DP), intent(out) :: pyz_SWF(1:nx,1:ny,1:nz) integer :: i, k integer, parameter :: j = 1 !------------------------------------------------------------------ ! 速度の収束を計算 ! do k = kmin + 1, kmax do i = imin + 1, imax xyz_VelDivN(i,j,k) = & & + ( & & pyz_VelXN(i, j, k) & & - pyz_VelXN(i-1, j, k) & & ) / dx & & + ( & & xyr_VelZN(i, j, k) & & - xyr_VelZN(i, j, k-1) & & ) / dz end do end do ! 値を確定させる ! xyz_VelDivN(imin,:,:) = 1.0d10 xyz_VelDivN(:,:,kmin) = 1.0d10 !------------------------------------------------------------------ ! X 方向 do k = 1, nz do i = 1, nx ! 音波減衰項 ! pyz_SWF(i,j,k) = & & AlphaH & & * ( & & xyz_VelDivN(i+1, j, k) & & - xyz_VelDivN(i, j, k) & & ) / dx ! 圧力傾度力 ! pyz_PGrad(i,j,k) = & & - CpDry * pyz_VPTempBZ(i,j,k) & & * ( & & xyz_ExnerN(i+1, j, k) & & - xyz_ExnerN(i, j, k) & & ) / dx end do end do end subroutine Acousticmode_2d_exp !!!------------------------------------------------------------!!!