BLOCKS: Field %coords mean global coordinates at the block level.
If we take the whole domain and divide it between blocks of the size corresponding to the current lever, the field %coords identifies the position of the current block in the domain. Signed-off-by: Grzegorz Kowal <grzegorz@amuncode.org>
This commit is contained in:
parent
fa6ca28885
commit
c2656c9b6a
@ -150,13 +150,11 @@ module blocks
|
||||
!
|
||||
integer(kind=4) :: refine
|
||||
|
||||
! the position of the block in its siblings
|
||||
! group
|
||||
! the block position in its parent
|
||||
!
|
||||
integer(kind=4) :: pos(ndims)
|
||||
|
||||
! the coordinate of the lower corner of the
|
||||
! block in the effective resolution units
|
||||
! the block global coordinates at its level
|
||||
!
|
||||
integer(kind=4) :: coords(ndims)
|
||||
|
||||
@ -825,7 +823,7 @@ module blocks
|
||||
!
|
||||
pmeta%pos(:) = -1
|
||||
|
||||
! initialize the effective coordinates
|
||||
! initialize the block coordinates in the current level
|
||||
!
|
||||
pmeta%coords(:) = 0
|
||||
|
||||
@ -1225,7 +1223,7 @@ module blocks
|
||||
!
|
||||
!===============================================================================
|
||||
!
|
||||
subroutine refine_block(pmeta, res, fdata)
|
||||
subroutine refine_block(pmeta, fdata)
|
||||
|
||||
! import external procedures
|
||||
!
|
||||
@ -1238,7 +1236,6 @@ module blocks
|
||||
! subroutine arguments
|
||||
!
|
||||
type(block_meta), pointer , intent(inout) :: pmeta
|
||||
integer(kind=4), dimension(3), intent(in) :: res
|
||||
logical , intent(in) :: fdata
|
||||
|
||||
! pointers
|
||||
@ -1446,10 +1443,10 @@ module blocks
|
||||
|
||||
! calculate the block coordinates in effective resolution units
|
||||
!
|
||||
ic = pmeta%coords(1) + i * res(1)
|
||||
jc = pmeta%coords(2) + j * res(2)
|
||||
ic = 2 * pmeta%coords(1) + i
|
||||
jc = 2 * pmeta%coords(2) + j
|
||||
#if NDIMS == 3
|
||||
kc = pmeta%coords(3) + k * res(3)
|
||||
kc = 2 * pmeta%coords(3) + k
|
||||
#endif /* NDIMS == 3 */
|
||||
|
||||
! calculate block bounds
|
||||
|
@ -149,7 +149,7 @@ module domains
|
||||
|
||||
! local variables
|
||||
!
|
||||
integer :: i, j, k, n, p, il, jl, kl
|
||||
integer :: i, j, k, n, p, ic, jc, kc
|
||||
real :: xl, xmn, xmx, yl, ymn, ymx, zl, zmn, zmx
|
||||
|
||||
! local arrays
|
||||
@ -263,7 +263,7 @@ module domains
|
||||
|
||||
! claculate the block position along Z
|
||||
!
|
||||
kl = (k - 1) * res(1,3)
|
||||
kc = k - 1
|
||||
|
||||
! calculate the Z bounds
|
||||
!
|
||||
@ -274,7 +274,7 @@ module domains
|
||||
|
||||
! claculate the block position along Y
|
||||
!
|
||||
jl = (j - 1) * res(1,2)
|
||||
jc = j - 1
|
||||
|
||||
! calculate the Y bounds
|
||||
!
|
||||
@ -285,7 +285,7 @@ module domains
|
||||
|
||||
! claculate the block position along Y
|
||||
!
|
||||
il = (i - 1) * res(1,1)
|
||||
ic = i - 1
|
||||
|
||||
! calculate the Z bounds
|
||||
!
|
||||
@ -306,7 +306,7 @@ module domains
|
||||
|
||||
! set block coordinates
|
||||
!
|
||||
call metablock_set_coordinates(pmeta, il, jl, kl)
|
||||
call metablock_set_coordinates(pmeta, ic, jc, kc)
|
||||
|
||||
! set the bounds
|
||||
!
|
||||
|
10
src/mesh.F90
10
src/mesh.F90
@ -460,7 +460,7 @@ module mesh
|
||||
use blocks , only : append_datablock, remove_datablock
|
||||
use blocks , only : link_blocks, unlink_blocks, refine_block
|
||||
use blocks , only : get_mblocks, get_nleafs
|
||||
use coordinates , only : minlev, maxlev, res
|
||||
use coordinates , only : minlev, maxlev
|
||||
use domains , only : setup_domain
|
||||
use error , only : print_error
|
||||
use mpitools , only : master, nproc, nprocs
|
||||
@ -651,7 +651,7 @@ module mesh
|
||||
|
||||
! perform the refinement without creating new data blocks
|
||||
!
|
||||
call refine_block(pmeta, res(pmeta%level + 1,:), .false.)
|
||||
call refine_block(pmeta, .false.)
|
||||
|
||||
end if ! selected for refinement and at the current level
|
||||
|
||||
@ -785,7 +785,7 @@ module mesh
|
||||
use blocks , only : get_nleafs
|
||||
use blocks , only : refine_block, derefine_block
|
||||
use blocks , only : append_datablock, remove_datablock, link_blocks
|
||||
use coordinates , only : minlev, maxlev, toplev, im, jm, km, res
|
||||
use coordinates , only : minlev, maxlev, toplev, im, jm, km
|
||||
use equations , only : nv
|
||||
use error , only : print_error
|
||||
#ifdef MPI
|
||||
@ -1317,12 +1317,12 @@ module mesh
|
||||
#ifdef MPI
|
||||
if (pmeta%process .eq. nproc) then
|
||||
#endif /* MPI */
|
||||
call refine_block(pmeta, res(pmeta%level + 1,:), .true.)
|
||||
call refine_block(pmeta, .true.)
|
||||
call prolong_block(pparent)
|
||||
call remove_datablock(pparent%data)
|
||||
#ifdef MPI
|
||||
else
|
||||
call refine_block(pmeta, res(pmeta%level + 1,:), .false.)
|
||||
call refine_block(pmeta, .false.)
|
||||
end if
|
||||
#endif /* MPI */
|
||||
end if
|
||||
|
Loading…
x
Reference in New Issue
Block a user