| Class | xyz_bc_module_mpi |
| In: |
util/xyz_bc_module_mpi.f90
|
xyz_bc_module は, 3 次元 (xyz 方向) 不等間隔交互格子を用いた有限差分法に 基づく数値モデルのための, 境界条件設定 Fortran 90 副プログラムを提供 する.
このモジュールは xyz_module の下位モジュールである. 下請けモジュール として data_type, xyz_base_module, x_bc_module, y_bc_module, z_bc_module モジュールを用いている.
境界条件を設定する副プログラムは
Boundary[境界条件を示す文字列][...]_(入力配列の次元情報)
のように命名されている. 境界条件を示す文字列の種類は x_bc_module, y_bc_module, z_bc_module の場合と同じである.
| Subroutine : | |
| pyz_Var(imin:imax,jmin:jmax,kmin:kmax) : | real(DBKIND),intent(inout) |
subroutine BoundaryXAsym_pyz(pyz_Var)
real(DBKIND),intent(inout) :: pyz_Var(imin:imax,jmin:jmax,kmin:kmax)
! x 方向に反対称境界条件を適用する
pyz_Var(0,:,:) = 0.0d0
pyz_Var(im,:,:) = 0.0d0
do ix = 1, xmargin-1
pyz_Var(-ix,:,:) = - pyz_Var(ix,:,:)
end do
do ix = 1, xmargin
pyz_Var(im+ix,:,:) = - pyz_Var(im-ix,:,:)
end do
end subroutine BoundaryXAsym_pyz
| Subroutine : | |
| xaa_Var(imin:imax,jmin:jmax,kmin:kmax) : | real(DBKIND),intent(inout) |
subroutine BoundaryXAsym_xaa(xaa_Var)
real(DBKIND),intent(inout) :: xaa_Var(imin:imax,jmin:jmax,kmin:kmax)
do ix = 1, xmargin
xaa_Var(1-ix,:,:) = - xaa_Var(ix,:,:)
xaa_Var(im+ix,:,:) = - xaa_Var(im+1-ix,:,:)
end do
end subroutine BoundaryXAsym_xaa
| Subroutine : | |
| xaa_Var(imin:imax,jmin:jmax,kmin:kmax) : | real(DBKIND),intent(inout) |
subroutine BoundaryXAsym_xaa(xaa_Var)
real(DBKIND),intent(inout) :: xaa_Var(imin:imax,jmin:jmax,kmin:kmax)
do ix = 1, xmargin
xaa_Var(1-ix,:,:) = - xaa_Var(ix,:,:)
xaa_Var(im+ix,:,:) = - xaa_Var(im+1-ix,:,:)
end do
end subroutine BoundaryXAsym_xaa
| Subroutine : | |
| xaa_Var(imin:imax,jmin:jmax,kmin:kmax) : | real(DBKIND),intent(inout) |
subroutine BoundaryXAsym_xaa(xaa_Var)
real(DBKIND),intent(inout) :: xaa_Var(imin:imax,jmin:jmax,kmin:kmax)
do ix = 1, xmargin
xaa_Var(1-ix,:,:) = - xaa_Var(ix,:,:)
xaa_Var(im+ix,:,:) = - xaa_Var(im+1-ix,:,:)
end do
end subroutine BoundaryXAsym_xaa
| Subroutine : | |
| aaa_Var(imin:imax, jmin:jmax, kmin:kmax) : | real(8), intent(inout) |
subroutine BoundaryXCyc_aaa(aaa_Var)
implicit none
!変数定義
real(8), intent(inout) :: aaa_Var(imin:imax, jmin:jmax, kmin:kmax)
integer :: idest_a, idep_a, idest_b, idep_b
integer, parameter :: nvars = 1
! real(8) :: sbuf_a( XMargin, jm, km, nvars )
! real(8) :: rbuf_a( XMargin, jm, km, nvars )
! real(8) :: sbuf_b( XMargin, jm, km, nvars )
! real(8) :: rbuf_b( XMargin, jm, km, nvars )
real(8) :: sbuf_a( XMargin, jm, km )
real(8) :: rbuf_a( XMargin, jm, km )
real(8) :: sbuf_b( XMargin, jm, km )
real(8) :: rbuf_b( XMargin, jm, km )
integer :: ireqs_a, ireqr_a, ireqs_b, ireqr_b
integer :: i, j, k
!-------------------------------
! 配列の右側を, ノード間で通信する.
! 送信する部分配列(sbuf_a)を用意する
do k = 1, km
do j = 1, jm
do i = 1, XMargin
sbuf_a( i, j, k ) = aaa_var( im + 1 - i , j, k )
end do
end do
end do
idest_a = mod(( myrank+1 ) , nprocs) !送信先
idep_a = mod(( myrank-1 )+nprocs, nprocs) !受信元
call MPIWrapperISend( idest_a, xmargin, jm, km, sbuf_a, ireqs_a ) !送信
call MPIWrapperIRecv( idep_a , xmargin, jm, km, rbuf_a, ireqr_a ) !受信
!-------------------------------
! 配列の左側を, ノード間で通信する.
! 送信する部分配列(sbuf_b)を用意する
do k = 1, km
do j = 1, jm
do i = 1, XMargin
sbuf_b( i, j, k ) = aaa_var( i, j, k )
end do
end do
end do
idest_b = mod(( myrank-1 )+nprocs, nprocs) !送信先
idep_b = mod(( myrank+1 ) , nprocs) !受信元
call MPIWrapperISend( idest_b, xmargin, jm, km, sbuf_b, ireqs_b ) !送信
call MPIWrapperIRecv( idep_b , xmargin, jm, km, rbuf_b, ireqr_b ) !受信
!-------------------------------
! 配列の右側を, ノード間で通信する.
! 受信した部分配列(rbuf_a)を代入する.
call MPIWrapperWait( ireqs_a )
call MPIWrapperWait( ireqr_a )
do k = 1, km
do j = 1, jm
do i = 1, XMargin
aaa_var( 1-i , j, k ) = rbuf_a( i, j, k )
end do
end do
end do
!-------------------------------
! 配列の左側を, ノード間で通信する.
! 受信した部分配列(rbuf_b)を代入する.
call MPIWrapperWait( ireqs_b )
call MPIWrapperWait( ireqr_b )
do k = 1, km
do j = 1, jm
do i = 1, XMargin
aaa_var(im + i , j, k ) = rbuf_b( i, j, k )
end do
end do
end do
end subroutine BoundaryXCyc_aaa
| Subroutine : | |
| aaa_Var(imin:imax, jmin:jmax, kmin:kmax) : | real(8), intent(inout) |
subroutine BoundaryXCyc_aaa(aaa_Var)
implicit none
!変数定義
real(8), intent(inout) :: aaa_Var(imin:imax, jmin:jmax, kmin:kmax)
integer :: idest_a, idep_a, idest_b, idep_b
integer, parameter :: nvars = 1
! real(8) :: sbuf_a( XMargin, jm, km, nvars )
! real(8) :: rbuf_a( XMargin, jm, km, nvars )
! real(8) :: sbuf_b( XMargin, jm, km, nvars )
! real(8) :: rbuf_b( XMargin, jm, km, nvars )
real(8) :: sbuf_a( XMargin, jm, km )
real(8) :: rbuf_a( XMargin, jm, km )
real(8) :: sbuf_b( XMargin, jm, km )
real(8) :: rbuf_b( XMargin, jm, km )
integer :: ireqs_a, ireqr_a, ireqs_b, ireqr_b
integer :: i, j, k
!-------------------------------
! 配列の右側を, ノード間で通信する.
! 送信する部分配列(sbuf_a)を用意する
do k = 1, km
do j = 1, jm
do i = 1, XMargin
sbuf_a( i, j, k ) = aaa_var( im + 1 - i , j, k )
end do
end do
end do
idest_a = mod(( myrank+1 ) , nprocs) !送信先
idep_a = mod(( myrank-1 )+nprocs, nprocs) !受信元
call MPIWrapperISend( idest_a, xmargin, jm, km, sbuf_a, ireqs_a ) !送信
call MPIWrapperIRecv( idep_a , xmargin, jm, km, rbuf_a, ireqr_a ) !受信
!-------------------------------
! 配列の左側を, ノード間で通信する.
! 送信する部分配列(sbuf_b)を用意する
do k = 1, km
do j = 1, jm
do i = 1, XMargin
sbuf_b( i, j, k ) = aaa_var( i, j, k )
end do
end do
end do
idest_b = mod(( myrank-1 )+nprocs, nprocs) !送信先
idep_b = mod(( myrank+1 ) , nprocs) !受信元
call MPIWrapperISend( idest_b, xmargin, jm, km, sbuf_b, ireqs_b ) !送信
call MPIWrapperIRecv( idep_b , xmargin, jm, km, rbuf_b, ireqr_b ) !受信
!-------------------------------
! 配列の右側を, ノード間で通信する.
! 受信した部分配列(rbuf_a)を代入する.
call MPIWrapperWait( ireqs_a )
call MPIWrapperWait( ireqr_a )
do k = 1, km
do j = 1, jm
do i = 1, XMargin
aaa_var( 1-i , j, k ) = rbuf_a( i, j, k )
end do
end do
end do
!-------------------------------
! 配列の左側を, ノード間で通信する.
! 受信した部分配列(rbuf_b)を代入する.
call MPIWrapperWait( ireqs_b )
call MPIWrapperWait( ireqr_b )
do k = 1, km
do j = 1, jm
do i = 1, XMargin
aaa_var(im + i , j, k ) = rbuf_b( i, j, k )
end do
end do
end do
end subroutine BoundaryXCyc_aaa
| Subroutine : | |
| aaa_Var(imin:imax, jmin:jmax, kmin:kmax) : | real(8), intent(inout) |
subroutine BoundaryXCyc_aaa(aaa_Var)
implicit none
!変数定義
real(8), intent(inout) :: aaa_Var(imin:imax, jmin:jmax, kmin:kmax)
integer :: idest_a, idep_a, idest_b, idep_b
integer, parameter :: nvars = 1
! real(8) :: sbuf_a( XMargin, jm, km, nvars )
! real(8) :: rbuf_a( XMargin, jm, km, nvars )
! real(8) :: sbuf_b( XMargin, jm, km, nvars )
! real(8) :: rbuf_b( XMargin, jm, km, nvars )
real(8) :: sbuf_a( XMargin, jm, km )
real(8) :: rbuf_a( XMargin, jm, km )
real(8) :: sbuf_b( XMargin, jm, km )
real(8) :: rbuf_b( XMargin, jm, km )
integer :: ireqs_a, ireqr_a, ireqs_b, ireqr_b
integer :: i, j, k
!-------------------------------
! 配列の右側を, ノード間で通信する.
! 送信する部分配列(sbuf_a)を用意する
do k = 1, km
do j = 1, jm
do i = 1, XMargin
sbuf_a( i, j, k ) = aaa_var( im + 1 - i , j, k )
end do
end do
end do
idest_a = mod(( myrank+1 ) , nprocs) !送信先
idep_a = mod(( myrank-1 )+nprocs, nprocs) !受信元
call MPIWrapperISend( idest_a, xmargin, jm, km, sbuf_a, ireqs_a ) !送信
call MPIWrapperIRecv( idep_a , xmargin, jm, km, rbuf_a, ireqr_a ) !受信
!-------------------------------
! 配列の左側を, ノード間で通信する.
! 送信する部分配列(sbuf_b)を用意する
do k = 1, km
do j = 1, jm
do i = 1, XMargin
sbuf_b( i, j, k ) = aaa_var( i, j, k )
end do
end do
end do
idest_b = mod(( myrank-1 )+nprocs, nprocs) !送信先
idep_b = mod(( myrank+1 ) , nprocs) !受信元
call MPIWrapperISend( idest_b, xmargin, jm, km, sbuf_b, ireqs_b ) !送信
call MPIWrapperIRecv( idep_b , xmargin, jm, km, rbuf_b, ireqr_b ) !受信
!-------------------------------
! 配列の右側を, ノード間で通信する.
! 受信した部分配列(rbuf_a)を代入する.
call MPIWrapperWait( ireqs_a )
call MPIWrapperWait( ireqr_a )
do k = 1, km
do j = 1, jm
do i = 1, XMargin
aaa_var( 1-i , j, k ) = rbuf_a( i, j, k )
end do
end do
end do
!-------------------------------
! 配列の左側を, ノード間で通信する.
! 受信した部分配列(rbuf_b)を代入する.
call MPIWrapperWait( ireqs_b )
call MPIWrapperWait( ireqr_b )
do k = 1, km
do j = 1, jm
do i = 1, XMargin
aaa_var(im + i , j, k ) = rbuf_b( i, j, k )
end do
end do
end do
end subroutine BoundaryXCyc_aaa
| Subroutine : | |
| aaa_Var(imin:imax, jmin:jmax, kmin:kmax) : | real(8), intent(inout) |
subroutine BoundaryXCyc_aaa(aaa_Var)
implicit none
!変数定義
real(8), intent(inout) :: aaa_Var(imin:imax, jmin:jmax, kmin:kmax)
integer :: idest_a, idep_a, idest_b, idep_b
integer, parameter :: nvars = 1
! real(8) :: sbuf_a( XMargin, jm, km, nvars )
! real(8) :: rbuf_a( XMargin, jm, km, nvars )
! real(8) :: sbuf_b( XMargin, jm, km, nvars )
! real(8) :: rbuf_b( XMargin, jm, km, nvars )
real(8) :: sbuf_a( XMargin, jm, km )
real(8) :: rbuf_a( XMargin, jm, km )
real(8) :: sbuf_b( XMargin, jm, km )
real(8) :: rbuf_b( XMargin, jm, km )
integer :: ireqs_a, ireqr_a, ireqs_b, ireqr_b
integer :: i, j, k
!-------------------------------
! 配列の右側を, ノード間で通信する.
! 送信する部分配列(sbuf_a)を用意する
do k = 1, km
do j = 1, jm
do i = 1, XMargin
sbuf_a( i, j, k ) = aaa_var( im + 1 - i , j, k )
end do
end do
end do
idest_a = mod(( myrank+1 ) , nprocs) !送信先
idep_a = mod(( myrank-1 )+nprocs, nprocs) !受信元
call MPIWrapperISend( idest_a, xmargin, jm, km, sbuf_a, ireqs_a ) !送信
call MPIWrapperIRecv( idep_a , xmargin, jm, km, rbuf_a, ireqr_a ) !受信
!-------------------------------
! 配列の左側を, ノード間で通信する.
! 送信する部分配列(sbuf_b)を用意する
do k = 1, km
do j = 1, jm
do i = 1, XMargin
sbuf_b( i, j, k ) = aaa_var( i, j, k )
end do
end do
end do
idest_b = mod(( myrank-1 )+nprocs, nprocs) !送信先
idep_b = mod(( myrank+1 ) , nprocs) !受信元
call MPIWrapperISend( idest_b, xmargin, jm, km, sbuf_b, ireqs_b ) !送信
call MPIWrapperIRecv( idep_b , xmargin, jm, km, rbuf_b, ireqr_b ) !受信
!-------------------------------
! 配列の右側を, ノード間で通信する.
! 受信した部分配列(rbuf_a)を代入する.
call MPIWrapperWait( ireqs_a )
call MPIWrapperWait( ireqr_a )
do k = 1, km
do j = 1, jm
do i = 1, XMargin
aaa_var( 1-i , j, k ) = rbuf_a( i, j, k )
end do
end do
end do
!-------------------------------
! 配列の左側を, ノード間で通信する.
! 受信した部分配列(rbuf_b)を代入する.
call MPIWrapperWait( ireqs_b )
call MPIWrapperWait( ireqr_b )
do k = 1, km
do j = 1, jm
do i = 1, XMargin
aaa_var(im + i , j, k ) = rbuf_b( i, j, k )
end do
end do
end do
end subroutine BoundaryXCyc_aaa
| Subroutine : | |
| pyz_Var(imin:imax,jmin:jmax,kmin:kmax) : | real(DBKIND),intent(inout) |
subroutine BoundaryXSym_pyz(pyz_Var)
real(DBKIND),intent(inout) :: pyz_Var(imin:imax,jmin:jmax,kmin:kmax)
! x 方向に対称境界条件を適用する
do ix = 1, xmargin-1
pyz_Var(-ix,:,:) = pyz_Var(ix,:,:)
end do
do ix = 1, xmargin
pyz_Var(im+ix,:,:) = pyz_Var(im+1-ix,:,:)
end do
end subroutine BoundaryXSym_pyz
| Subroutine : | |
| xaa_Var(imin:imax,jmin:jmax,kmin:kmax) : | real(DBKIND),intent(inout) |
subroutine BoundaryXSym_xaa(xaa_Var)
real(DBKIND),intent(inout) :: xaa_Var(imin:imax,jmin:jmax,kmin:kmax)
do ix = 1, xmargin
xaa_Var(1-ix,:,:) = xaa_Var(ix,:,:)
xaa_Var(im+ix,:,:) = xaa_Var(im+1-ix,:,:)
end do
end subroutine BoundaryXSym_xaa
| Subroutine : | |
| xaa_Var(imin:imax,jmin:jmax,kmin:kmax) : | real(DBKIND),intent(inout) |
subroutine BoundaryXSym_xaa(xaa_Var)
real(DBKIND),intent(inout) :: xaa_Var(imin:imax,jmin:jmax,kmin:kmax)
do ix = 1, xmargin
xaa_Var(1-ix,:,:) = xaa_Var(ix,:,:)
xaa_Var(im+ix,:,:) = xaa_Var(im+1-ix,:,:)
end do
end subroutine BoundaryXSym_xaa
| Subroutine : | |
| xaa_Var(imin:imax,jmin:jmax,kmin:kmax) : | real(DBKIND),intent(inout) |
subroutine BoundaryXSym_xaa(xaa_Var)
real(DBKIND),intent(inout) :: xaa_Var(imin:imax,jmin:jmax,kmin:kmax)
do ix = 1, xmargin
xaa_Var(1-ix,:,:) = xaa_Var(ix,:,:)
xaa_Var(im+ix,:,:) = xaa_Var(im+1-ix,:,:)
end do
end subroutine BoundaryXSym_xaa
| Subroutine : | |
| xqz_Var(imin:imax,jmin:jmax,kmin:kmax) : | real(DBKIND),intent(inout) |
subroutine BoundaryYASym_xqz(xqz_Var)
real(DBKIND),intent(inout) :: xqz_Var(imin:imax,jmin:jmax,kmin:kmax)
integer :: ix, kz
! y 方向に反対称境界条件を適用する
! do kz = kmin, kmax
! do ix = imin, imax
! call boundaryASym_q(xqz_Var(ix,:,kz))
! end do
! end do
xqz_Var(:,0,:) = 0.0d0
xqz_Var(:,jm,:) = 0.0d0
do jy = 1, ymargin-1
xqz_Var(:,-jy,:) = - xqz_Var(:,jy,:)
end do
do jy = 1, ymargin
xqz_Var(:,jm+jy,:) = - xqz_Var(:,jm-jy,:)
end do
end subroutine BoundaryYAsym_xqz
| Subroutine : | |
| aya_Var(imin:imax,jmin:jmax,kmin:kmax) : | real(DBKIND),intent(inout) |
subroutine BoundaryYASym_aya(aya_Var)
real(DBKIND),intent(inout) :: aya_Var(imin:imax,jmin:jmax,kmin:kmax)
! y 方向に反対称境界条件を適用する
! do kz = kmin, kmax
! do ix = imin, imax
! call boundaryASym_y(aya_Var(ix,:,kz))
! end do
! end do
do jy = 1, ymargin
aya_Var(:,1-jy,:) = - aya_Var(:,jy,:)
aya_Var(:,jm+jy,:) = - aya_Var(:,jm+1-jy,:)
end do
end subroutine BoundaryYAsym_aya
| Subroutine : | |
| aya_Var(imin:imax,jmin:jmax,kmin:kmax) : | real(DBKIND),intent(inout) |
subroutine BoundaryYASym_aya(aya_Var)
real(DBKIND),intent(inout) :: aya_Var(imin:imax,jmin:jmax,kmin:kmax)
! y 方向に反対称境界条件を適用する
! do kz = kmin, kmax
! do ix = imin, imax
! call boundaryASym_y(aya_Var(ix,:,kz))
! end do
! end do
do jy = 1, ymargin
aya_Var(:,1-jy,:) = - aya_Var(:,jy,:)
aya_Var(:,jm+jy,:) = - aya_Var(:,jm+1-jy,:)
end do
end subroutine BoundaryYAsym_aya
| Subroutine : | |
| aya_Var(imin:imax,jmin:jmax,kmin:kmax) : | real(DBKIND),intent(inout) |
subroutine BoundaryYASym_aya(aya_Var)
real(DBKIND),intent(inout) :: aya_Var(imin:imax,jmin:jmax,kmin:kmax)
! y 方向に反対称境界条件を適用する
! do kz = kmin, kmax
! do ix = imin, imax
! call boundaryASym_y(aya_Var(ix,:,kz))
! end do
! end do
do jy = 1, ymargin
aya_Var(:,1-jy,:) = - aya_Var(:,jy,:)
aya_Var(:,jm+jy,:) = - aya_Var(:,jm+1-jy,:)
end do
end subroutine BoundaryYAsym_aya
| Subroutine : | |
| aaa_Var(imin:imax,jmin:jmax,kmin:kmax) : | real(DBKIND),intent(inout) |
subroutine BoundaryYCyc_aaa(aaa_Var)
real(DBKIND),intent(inout) :: aaa_Var(imin:imax,jmin:jmax,kmin:kmax)
integer :: ix, kz
! y 方向に周期境界条件を適用する
! do kz = kmin, kmax
! do ix = imin, imax
! call BoundaryCyc_y(aya_Var(ix,:,kz))
! end do
! end do
do jy = 1, ymargin
aaa_Var(:,1-jy,:) = aaa_Var(:,jm+1-jy,:)
aaa_Var(:,jm+jy,:) = aaa_Var(:,jy,:)
end do
end subroutine BoundaryYCyc_aaa
| Subroutine : | |
| aaa_Var(imin:imax,jmin:jmax,kmin:kmax) : | real(DBKIND),intent(inout) |
subroutine BoundaryYCyc_aaa(aaa_Var)
real(DBKIND),intent(inout) :: aaa_Var(imin:imax,jmin:jmax,kmin:kmax)
integer :: ix, kz
! y 方向に周期境界条件を適用する
! do kz = kmin, kmax
! do ix = imin, imax
! call BoundaryCyc_y(aya_Var(ix,:,kz))
! end do
! end do
do jy = 1, ymargin
aaa_Var(:,1-jy,:) = aaa_Var(:,jm+1-jy,:)
aaa_Var(:,jm+jy,:) = aaa_Var(:,jy,:)
end do
end subroutine BoundaryYCyc_aaa
| Subroutine : | |
| aaa_Var(imin:imax,jmin:jmax,kmin:kmax) : | real(DBKIND),intent(inout) |
subroutine BoundaryYCyc_aaa(aaa_Var)
real(DBKIND),intent(inout) :: aaa_Var(imin:imax,jmin:jmax,kmin:kmax)
integer :: ix, kz
! y 方向に周期境界条件を適用する
! do kz = kmin, kmax
! do ix = imin, imax
! call BoundaryCyc_y(aya_Var(ix,:,kz))
! end do
! end do
do jy = 1, ymargin
aaa_Var(:,1-jy,:) = aaa_Var(:,jm+1-jy,:)
aaa_Var(:,jm+jy,:) = aaa_Var(:,jy,:)
end do
end subroutine BoundaryYCyc_aaa
| Subroutine : | |
| aaa_Var(imin:imax,jmin:jmax,kmin:kmax) : | real(DBKIND),intent(inout) |
subroutine BoundaryYCyc_aaa(aaa_Var)
real(DBKIND),intent(inout) :: aaa_Var(imin:imax,jmin:jmax,kmin:kmax)
integer :: ix, kz
! y 方向に周期境界条件を適用する
! do kz = kmin, kmax
! do ix = imin, imax
! call BoundaryCyc_y(aya_Var(ix,:,kz))
! end do
! end do
do jy = 1, ymargin
aaa_Var(:,1-jy,:) = aaa_Var(:,jm+1-jy,:)
aaa_Var(:,jm+jy,:) = aaa_Var(:,jy,:)
end do
end subroutine BoundaryYCyc_aaa
| Subroutine : | |
| aya_Var(imin:imax,jmin:jmax,kmin:kmax) : | real(DBKIND),intent(inout) |
subroutine BoundaryYSym_aya(aya_Var)
real(DBKIND),intent(inout) :: aya_Var(imin:imax,jmin:jmax,kmin:kmax)
! y 方向に対称境界条件を適用する
! do kz = kmin, kmax
! do ix = imin, imax
! call boundarySym_y(aya_Var(ix,:,kz))
! end do
! end do
do jy = 1, ymargin
aya_Var(:,1-jy,:) = aya_Var(:,jy,:)
aya_Var(:,jm+jy,:) = aya_Var(:,jm+1-jy,:)
end do
end subroutine BoundaryYsym_aya
| Subroutine : | |
| xqz_Var(imin:imax,jmin:jmax,kmin:kmax) : | real(DBKIND),intent(inout) |
subroutine BoundaryYSym_xqz(xqz_Var)
real(DBKIND),intent(inout) :: xqz_Var(imin:imax,jmin:jmax,kmin:kmax)
! y 方向に対称境界条件を適用する
! do kz = kmin, kmax
! do ix = imin, imax
! call boundarySym_q(xqz_Var(ix,:,kz))
! end do
! end do
do jy = 1, ymargin-1
xqz_Var(:,-jy,:) = xqz_Var(:,jy,:)
end do
do jy = 1, ymargin
xqz_Var(:,jm+jy,:) = xqz_Var(:,jm+1-jy,:)
end do
end subroutine BoundaryYsym_xqz
| Subroutine : | |
| aya_Var(imin:imax,jmin:jmax,kmin:kmax) : | real(DBKIND),intent(inout) |
subroutine BoundaryYSym_aya(aya_Var)
real(DBKIND),intent(inout) :: aya_Var(imin:imax,jmin:jmax,kmin:kmax)
! y 方向に対称境界条件を適用する
! do kz = kmin, kmax
! do ix = imin, imax
! call boundarySym_y(aya_Var(ix,:,kz))
! end do
! end do
do jy = 1, ymargin
aya_Var(:,1-jy,:) = aya_Var(:,jy,:)
aya_Var(:,jm+jy,:) = aya_Var(:,jm+1-jy,:)
end do
end subroutine BoundaryYsym_aya
| Subroutine : | |
| aya_Var(imin:imax,jmin:jmax,kmin:kmax) : | real(DBKIND),intent(inout) |
subroutine BoundaryYSym_aya(aya_Var)
real(DBKIND),intent(inout) :: aya_Var(imin:imax,jmin:jmax,kmin:kmax)
! y 方向に対称境界条件を適用する
! do kz = kmin, kmax
! do ix = imin, imax
! call boundarySym_y(aya_Var(ix,:,kz))
! end do
! end do
do jy = 1, ymargin
aya_Var(:,1-jy,:) = aya_Var(:,jy,:)
aya_Var(:,jm+jy,:) = aya_Var(:,jm+1-jy,:)
end do
end subroutine BoundaryYsym_aya
| Subroutine : | |
| aaz_Var(imin:imax,jmin:jmax,kmin:kmax) : | real(DBKIND),intent(inout) |
subroutine BoundaryZAsym_aaz(aaz_Var)
real(DBKIND),intent(inout) :: aaz_Var(imin:imax,jmin:jmax,kmin:kmax)
! z 方向に反対称境界条件を適用する
! do jy = jmin, jmax
! do ix = imin, imax
! call boundaryAsym_z(aaz_Var(ix,jy,:))
! end do
! end do
do kz = 1, zmargin
aaz_Var(:,:,1-kz) = - aaz_Var(:,:,kz)
aaz_Var(:,:,km+kz) = - aaz_Var(:,:,km+1-kz)
end do
end subroutine BoundaryZAsym_aaz
| Subroutine : | |
| aaz_Var(imin:imax,jmin:jmax,kmin:kmax) : | real(DBKIND),intent(inout) |
subroutine BoundaryZAsym_aaz(aaz_Var)
real(DBKIND),intent(inout) :: aaz_Var(imin:imax,jmin:jmax,kmin:kmax)
! z 方向に反対称境界条件を適用する
! do jy = jmin, jmax
! do ix = imin, imax
! call boundaryAsym_z(aaz_Var(ix,jy,:))
! end do
! end do
do kz = 1, zmargin
aaz_Var(:,:,1-kz) = - aaz_Var(:,:,kz)
aaz_Var(:,:,km+kz) = - aaz_Var(:,:,km+1-kz)
end do
end subroutine BoundaryZAsym_aaz
| Subroutine : | |
| xyr_Var(imin:imax,jmin:jmax,kmin:kmax) : | real(DBKIND),intent(inout) |
subroutine BoundaryZAsym_xyr(xyr_Var)
real(DBKIND),intent(inout) :: xyr_Var(imin:imax,jmin:jmax,kmin:kmax)
! z 方向に反対称境界条件を適用する
! do jy = jmin, jmax
! do ix = imin, imax
! call boundaryAsym_r(xyr_Var(ix,jy,:))
! end do
! end do
xyr_Var(:,:,0) = 0.0d0
xyr_Var(:,:,km) = 0.0d0
do kz = 1, zmargin-1
xyr_Var(:,:,-kz) = - xyr_Var(:,:,kz)
end do
do kz = 1, zmargin
xyr_Var(:,:,km+kz) = - xyr_Var(:,:,km-kz)
end do
end subroutine BoundaryZAsym_xyr
| Subroutine : | |
| aaz_Var(imin:imax,jmin:jmax,kmin:kmax) : | real(DBKIND),intent(inout) |
subroutine BoundaryZAsym_aaz(aaz_Var)
real(DBKIND),intent(inout) :: aaz_Var(imin:imax,jmin:jmax,kmin:kmax)
! z 方向に反対称境界条件を適用する
! do jy = jmin, jmax
! do ix = imin, imax
! call boundaryAsym_z(aaz_Var(ix,jy,:))
! end do
! end do
do kz = 1, zmargin
aaz_Var(:,:,1-kz) = - aaz_Var(:,:,kz)
aaz_Var(:,:,km+kz) = - aaz_Var(:,:,km+1-kz)
end do
end subroutine BoundaryZAsym_aaz
| Subroutine : | |
| aaa_Var(imin:imax,jmin:jmax,kmin:kmax) : | real(DBKIND),intent(inout) |
subroutine BoundaryZCyc_aaa(aaa_Var)
real(DBKIND),intent(inout) :: aaa_Var(imin:imax,jmin:jmax,kmin:kmax)
! z 方向に周期境界条件を適用する
! do jy = jmin, jmax
! do ix = imin, imax
! call boundaryCyc_z(aaz_Var(ix,jy,:))
! end do
! end do
do kz = 1, zmargin
aaa_Var(:,:,1-kz) = aaa_Var(:,:,km+1-kz)
aaa_Var(:,:,km+kz) = aaa_Var(:,:,kz)
end do
end subroutine BoundaryZCyc_aaa
| Subroutine : | |
| aaa_Var(imin:imax,jmin:jmax,kmin:kmax) : | real(DBKIND),intent(inout) |
subroutine BoundaryZCyc_aaa(aaa_Var)
real(DBKIND),intent(inout) :: aaa_Var(imin:imax,jmin:jmax,kmin:kmax)
! z 方向に周期境界条件を適用する
! do jy = jmin, jmax
! do ix = imin, imax
! call boundaryCyc_z(aaz_Var(ix,jy,:))
! end do
! end do
do kz = 1, zmargin
aaa_Var(:,:,1-kz) = aaa_Var(:,:,km+1-kz)
aaa_Var(:,:,km+kz) = aaa_Var(:,:,kz)
end do
end subroutine BoundaryZCyc_aaa
| Subroutine : | |
| aaa_Var(imin:imax,jmin:jmax,kmin:kmax) : | real(DBKIND),intent(inout) |
subroutine BoundaryZCyc_aaa(aaa_Var)
real(DBKIND),intent(inout) :: aaa_Var(imin:imax,jmin:jmax,kmin:kmax)
! z 方向に周期境界条件を適用する
! do jy = jmin, jmax
! do ix = imin, imax
! call boundaryCyc_z(aaz_Var(ix,jy,:))
! end do
! end do
do kz = 1, zmargin
aaa_Var(:,:,1-kz) = aaa_Var(:,:,km+1-kz)
aaa_Var(:,:,km+kz) = aaa_Var(:,:,kz)
end do
end subroutine BoundaryZCyc_aaa
| Subroutine : | |
| aaa_Var(imin:imax,jmin:jmax,kmin:kmax) : | real(DBKIND),intent(inout) |
subroutine BoundaryZCyc_aaa(aaa_Var)
real(DBKIND),intent(inout) :: aaa_Var(imin:imax,jmin:jmax,kmin:kmax)
! z 方向に周期境界条件を適用する
! do jy = jmin, jmax
! do ix = imin, imax
! call boundaryCyc_z(aaz_Var(ix,jy,:))
! end do
! end do
do kz = 1, zmargin
aaa_Var(:,:,1-kz) = aaa_Var(:,:,km+1-kz)
aaa_Var(:,:,km+kz) = aaa_Var(:,:,kz)
end do
end subroutine BoundaryZCyc_aaa
| Subroutine : | |
| aaz_Var(imin:imax,jmin:jmax,kmin:kmax) : | real(DBKIND),intent(inout) |
subroutine BoundaryZSym_aaz(aaz_Var)
real(DBKIND),intent(inout) :: aaz_Var(imin:imax,jmin:jmax,kmin:kmax)
! z 方向に対称境界条件を適用する
! do jy = jmin, jmax
! do ix = imin, imax
! call boundarySym_z(aaz_Var(ix,jy,:))
! end do
! end do
do kz = 1, zmargin
aaz_Var(:,:,1-kz) = aaz_Var(:,:,kz)
aaz_Var(:,:,km+kz) = aaz_Var(:,:,km+1-kz)
end do
end subroutine BoundaryZSym_aaz
| Subroutine : | |
| aaz_Var(imin:imax,jmin:jmax,kmin:kmax) : | real(DBKIND),intent(inout) |
subroutine BoundaryZSym_aaz(aaz_Var)
real(DBKIND),intent(inout) :: aaz_Var(imin:imax,jmin:jmax,kmin:kmax)
! z 方向に対称境界条件を適用する
! do jy = jmin, jmax
! do ix = imin, imax
! call boundarySym_z(aaz_Var(ix,jy,:))
! end do
! end do
do kz = 1, zmargin
aaz_Var(:,:,1-kz) = aaz_Var(:,:,kz)
aaz_Var(:,:,km+kz) = aaz_Var(:,:,km+1-kz)
end do
end subroutine BoundaryZSym_aaz
| Subroutine : | |
| xyr_Var(imin:imax,jmin:jmax,kmin:kmax) : | real(DBKIND),intent(inout) |
subroutine BoundaryZSym_xyr(xyr_Var)
real(DBKIND),intent(inout) :: xyr_Var(imin:imax,jmin:jmax,kmin:kmax)
! z 方向に対称境界条件を適用する
! do jy = jmin, jmax
! do ix = imin, imax
! call boundarySym_r(xyr_Var(ix,jy,:))
! end do
! end do
do kz = 1, zmargin-1
xyr_Var(:,:,-kz) = xyr_Var(:,:,kz)
end do
do kz = 1, zmargin
xyr_Var(:,:,km+kz) = xyr_Var(:,:,km+1-kz)
end do
end subroutine BoundaryZSym_xyr
| Subroutine : | |
| aaz_Var(imin:imax,jmin:jmax,kmin:kmax) : | real(DBKIND),intent(inout) |
subroutine BoundaryZSym_aaz(aaz_Var)
real(DBKIND),intent(inout) :: aaz_Var(imin:imax,jmin:jmax,kmin:kmax)
! z 方向に対称境界条件を適用する
! do jy = jmin, jmax
! do ix = imin, imax
! call boundarySym_z(aaz_Var(ix,jy,:))
! end do
! end do
do kz = 1, zmargin
aaz_Var(:,:,1-kz) = aaz_Var(:,:,kz)
aaz_Var(:,:,km+kz) = aaz_Var(:,:,km+1-kz)
end do
end subroutine BoundaryZSym_aaz