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