Merge branch 'master' into reconnection

This commit is contained in:
Grzegorz Kowal 2014-12-01 09:06:58 -02:00
commit 15468b805d

View File

@ -549,121 +549,125 @@ module boundaries
if (pneigh%level > pmeta%level) then if (pneigh%level > pmeta%level) then
#ifdef MPI #ifdef MPI
! check if the current block and its neighbor belong to the same process, if so, ! check if the block and its neighbor belong to the same process
! update fluxes directly
! !
if (pmeta%process == nproc .and. & if (pmeta%process == pneigh%process) then
pneigh%process == nproc) then
! check if the neighbor belongs to the current process
!
if (pneigh%process == nproc) then
#endif /* MPI */ #endif /* MPI */
! update directional flux from the neighbor ! update directional flux from the neighbor
! !
select case(n) select case(n)
case(1) case(1)
! prepare the boundary layer indices depending on the corner position ! prepare the boundary layer indices depending on the corner position
! !
if (i == 1) then if (i == 1) then
is = ie is = ie
it = ibl it = ibl
else else
is = ibl is = ibl
it = ie it = ie
end if end if
if (j == 1) then if (j == 1) then
jl = jb jl = jb
ju = jb + jh - 1 ju = jb + jh - 1
else else
jl = je - jh + 1 jl = je - jh + 1
ju = je ju = je
end if end if
#if NDIMS == 3 #if NDIMS == 3
if (k == 1) then if (k == 1) then
kl = kb kl = kb
ku = kb + kh - 1 ku = kb + kh - 1
else else
kl = ke - kh + 1 kl = ke - kh + 1
ku = ke ku = ke
end if end if
#endif /* NDIMS == 3 */ #endif /* NDIMS == 3 */
! update the flux edge from the neighbor at higher level ! update the flux edge from the neighbor at higher level
! !
call block_update_flux(i, j, k, n & call block_update_flux(i, j, k, n &
, pneigh%data%f(n,1:nv,is,jb:je,kb:ke) & , pneigh%data%f(n,1:nv,is,jb:je,kb:ke) &
, pmeta%data%f(n,1:nv,it,jl:ju,kl:ku)) , pmeta%data%f(n,1:nv,it,jl:ju,kl:ku))
case(2) case(2)
! prepare the boundary layer indices depending on the corner position ! prepare the boundary layer indices depending on the corner position
! !
if (i == 1) then if (i == 1) then
il = ib il = ib
iu = ib + ih - 1 iu = ib + ih - 1
else else
il = ie - ih + 1 il = ie - ih + 1
iu = ie iu = ie
end if end if
if (j == 1) then if (j == 1) then
js = je js = je
jt = jbl jt = jbl
else else
js = jbl js = jbl
jt = je jt = je
end if end if
#if NDIMS == 3 #if NDIMS == 3
if (k == 1) then if (k == 1) then
kl = kb kl = kb
ku = kb + kh - 1 ku = kb + kh - 1
else else
kl = ke - kh + 1 kl = ke - kh + 1
ku = ke ku = ke
end if end if
#endif /* NDIMS == 3 */ #endif /* NDIMS == 3 */
! update the flux edge from the neighbor at higher level ! update the flux edge from the neighbor at higher level
! !
call block_update_flux(i, j, k, n & call block_update_flux(i, j, k, n &
, pneigh%data%f(n,1:nv,ib:ie,js,kb:ke) & , pneigh%data%f(n,1:nv,ib:ie,js,kb:ke) &
, pmeta%data%f(n,1:nv,il:iu,jt,kl:ku)) , pmeta%data%f(n,1:nv,il:iu,jt,kl:ku))
#if NDIMS == 3 #if NDIMS == 3
case(3) case(3)
! prepare the boundary layer indices depending on the corner position ! prepare the boundary layer indices depending on the corner position
! !
if (i == 1) then if (i == 1) then
il = ib il = ib
iu = ib + ih - 1 iu = ib + ih - 1
else else
il = ie - ih + 1 il = ie - ih + 1
iu = ie iu = ie
end if end if
if (j == 1) then if (j == 1) then
jl = jb jl = jb
ju = jb + jh - 1 ju = jb + jh - 1
else else
jl = je - jh + 1 jl = je - jh + 1
ju = je ju = je
end if end if
if (k == 1) then if (k == 1) then
ks = ke ks = ke
kt = kbl kt = kbl
else else
ks = kbl ks = kbl
kt = ke kt = ke
end if end if
! update the flux edge from the neighbor at higher level ! update the flux edge from the neighbor at higher level
! !
call block_update_flux(i, j, k, n & call block_update_flux(i, j, k, n &
, pneigh%data%f(n,1:nv,ib:ie,jb:je,ks) & , pneigh%data%f(n,1:nv,ib:ie,jb:je,ks) &
, pmeta%data%f(n,1:nv,il:iu,jl:ju,kt)) , pmeta%data%f(n,1:nv,il:iu,jl:ju,kt))
#endif /* NDIMS == 3 */ #endif /* NDIMS == 3 */
end select end select
#ifdef MPI #ifdef MPI
end if ! pneigh on the current process
! blocks belong to different processes, therefore prepare the block exchange ! blocks belong to different processes, therefore prepare the block exchange
! object ! object
! !
@ -734,6 +738,8 @@ module boundaries
end do ! meta blocks end do ! meta blocks
#ifdef MPI #ifdef MPI
!! 3. UPDATE FLUX BOUNDARIES BETWEEN BLOCKS BELONGING TO DIFFERENT PROCESSES
!!
! iterate over all process pairs ! iterate over all process pairs
! !
do p = 1, npairs do p = 1, npairs
@ -1923,7 +1929,7 @@ module boundaries
! check if the neighbor belongs to the current process ! check if the neighbor belongs to the current process
! !
if (pmeta%process == nproc) then if (pneigh%process == nproc) then
#endif /* MPI */ #endif /* MPI */
! prepare the region indices for face boundary update ! prepare the region indices for face boundary update
@ -2480,7 +2486,7 @@ module boundaries
! check if the neighbor belongs to the current process ! check if the neighbor belongs to the current process
! !
if (pmeta%process == nproc) then if (pneigh%process == nproc) then
#endif /* MPI */ #endif /* MPI */
! extract the corresponding face region from the neighbor and insert it in ! extract the corresponding face region from the neighbor and insert it in
@ -3065,7 +3071,7 @@ module boundaries
! check if the neighbor belongs to the current process ! check if the neighbor belongs to the current process
! !
if (pmeta%process == nproc) then if (pneigh%process == nproc) then
#endif /* MPI */ #endif /* MPI */
! prepare the region indices for edge boundary update ! prepare the region indices for edge boundary update
@ -3647,7 +3653,7 @@ module boundaries
! check if the neighbor belongs to the current process ! check if the neighbor belongs to the current process
! !
if (pmeta%process == nproc) then if (pneigh%process == nproc) then
#endif /* MPI */ #endif /* MPI */
! prepare the region indices for edge boundary update ! prepare the region indices for edge boundary update
@ -4233,7 +4239,7 @@ module boundaries
! check if the neighbor belongs to the current process ! check if the neighbor belongs to the current process
! !
if (pmeta%process == nproc) then if (pneigh%process == nproc) then
#endif /* MPI */ #endif /* MPI */
! prepare the region indices for edge boundary update ! prepare the region indices for edge boundary update
@ -4809,7 +4815,7 @@ module boundaries
! check if the neighbor belongs to the current process ! check if the neighbor belongs to the current process
! !
if (pmeta%process == nproc) then if (pneigh%process == nproc) then
#endif /* MPI */ #endif /* MPI */
! prepare the region indices for corner boundary update ! prepare the region indices for corner boundary update
@ -5273,7 +5279,7 @@ module boundaries
! check if the neighbor belongs to the current process ! check if the neighbor belongs to the current process
! !
if (pmeta%process == nproc) then if (pneigh%process == nproc) then
#endif /* MPI */ #endif /* MPI */
! prepare the region indices for corner boundary update ! prepare the region indices for corner boundary update
@ -5736,7 +5742,7 @@ module boundaries
! check if the neighbor belongs to the current process ! check if the neighbor belongs to the current process
! !
if (pmeta%process == nproc) then if (pneigh%process == nproc) then
#endif /* MPI */ #endif /* MPI */
! prepare the region indices for corner boundary update ! prepare the region indices for corner boundary update