| Class | SetMargin |
| In: |
../src/utils/setmargin2.f90
|
3 次元 (xyz 方向) 不等間隔交互格子 有限差分モデル用 境界条件モジュール X 方向・Y 方向には MPI を用いた並列化を行えるようにしている
| Subroutine : |
初期化
Initialization of SetMargin
subroutine SetMargin_init
!
! 初期化
!
! Initialization of SetMargin
!
! モジュール引用 ; USE statements
!
use dc_message, only: MessageNotify
! 作業変数
! Work variables
!
integer, parameter :: disp = 1
integer :: direction
integer :: comm_cart
logical, parameter :: periodic = .true.
! 通信先の取得
!
call MPIWrapperCartCreate(xsub, ysub, periodic, comm_cart)
direction = 0
call MPIWrapperCartShift(comm_cart, direction, disp, Urank, Drank)
direction = 1
call MPIWrapperCartShift(comm_cart, direction, disp, Lrank, Rrank)
call MPIWrapperCommFree(comm_cart)
if (myrank == 0) then
call MessageNotify( "M", "SetMargin_init", "Rrank = %d", i=(/Rrank/) )
call MessageNotify( "M", "SetMargin_init", "Lrank = %d", i=(/Lrank/) )
call MessageNotify( "M", "SetMargin_init", "Urank = %d", i=(/Urank/) )
call MessageNotify( "M", "SetMargin_init", "Drank = %d", i=(/Drank/) )
end if
end subroutine SetMargin_init
| Subroutine : | |
| aaz_Var(imin:imax,jmin:jmax,kmin:kmax) : | real(DP),intent(inout) |
subroutine SetMargin_aaz(aaz_Var)
implicit none
real(DP),intent(inout) :: aaz_Var(imin:imax,jmin:jmax,kmin:kmax)
! x, y 方向に周期境界条件を適用する
!
call XCyclYCycl( aaz_Var(:,:,:) ) !inout
! z 方向に対象境界条件を適用する
!
call ZSym( aaz_Var(:,:,:) ) !inout
end subroutine SetMargin_aaz
| Subroutine : | |
| aaz_Var(imin:imax,jmin:jmax,kmin:kmax) : | real(DP),intent(inout) |
subroutine SetMargin_aaz(aaz_Var)
implicit none
real(DP),intent(inout) :: aaz_Var(imin:imax,jmin:jmax,kmin:kmax)
! x, y 方向に周期境界条件を適用する
!
call XCyclYCycl( aaz_Var(:,:,:) ) !inout
! z 方向に対象境界条件を適用する
!
call ZSym( aaz_Var(:,:,:) ) !inout
end subroutine SetMargin_aaz
| Subroutine : | |
| aar_Var(imin:imax,jmin:jmax,kmin:kmax) : | real(DP),intent(inout) |
subroutine SetMargin_aar(aar_Var)
implicit none
real(DP),intent(inout) :: aar_Var(imin:imax,jmin:jmax,kmin:kmax)
! x, y 方向に周期境界条件を適用する
!
call XCyclYCycl( aar_Var(:,:,:) ) !inout
! z 方向に対象境界条件を適用する
!
call ZAntSym( aar_Var(:,:,:) ) !inout
end subroutine SetMargin_aar
| Subroutine : | |
| aaz_Var(imin:imax,jmin:jmax,kmin:kmax) : | real(DP),intent(inout) |
subroutine SetMargin_aaz(aaz_Var)
implicit none
real(DP),intent(inout) :: aaz_Var(imin:imax,jmin:jmax,kmin:kmax)
! x, y 方向に周期境界条件を適用する
!
call XCyclYCycl( aaz_Var(:,:,:) ) !inout
! z 方向に対象境界条件を適用する
!
call ZSym( aaz_Var(:,:,:) ) !inout
end subroutine SetMargin_aaz
| Subroutine : | |
| xyzf_Var(imin:imax,jmin:jmax,kmin:kmax,1:ncmax) : | real(DP),intent(inout) |
subroutine SetMargin_xyzf(xyzf_Var)
implicit none
real(DP),intent(inout) :: xyzf_Var(imin:imax,jmin:jmax,kmin:kmax,1:ncmax)
integer :: s
do s = 1, ncmax
! x, y 方向に周期境界条件を適用する
!
call XCyclYCycl( xyzf_Var(:,:,:,s) ) !inout
! z 方向に対象境界条件を適用する
!
call ZSym( xyzf_Var(:,:,:,s) ) !inout
end do
end subroutine SetMargin_xyzf