BLOCKS: Update edge and corner pointers in refine_block() for 2D.
This commit updated the child edge and corner pointers in refine_block() for 2D case. It updates corresponding neighbor edge and corner pointers as well. Signed-off-by: Grzegorz Kowal <grzegorz@amuncode.org>
This commit is contained in:
parent
9e7b0b3e9d
commit
6ae36d29d9
162
src/blocks.F90
162
src/blocks.F90
@ -1575,6 +1575,168 @@ module blocks
|
|||||||
|
|
||||||
end do ! nchildren
|
end do ! nchildren
|
||||||
|
|
||||||
|
! update edge neighbor pointers of children, and the corresponding edge
|
||||||
|
! pointers of neighbors
|
||||||
|
!
|
||||||
|
#if NDIMS == 2
|
||||||
|
pchild => pmeta%child(1)%ptr
|
||||||
|
if (associated(pmeta%edges(1,1,1)%ptr)) then
|
||||||
|
pneigh => pmeta%edges(1,1,1)%ptr
|
||||||
|
pchild%edges(1,1,1)%ptr => pmeta%edges(1,1,1)%ptr
|
||||||
|
pchild%edges(2,1,1)%ptr => pmeta%edges(1,1,1)%ptr
|
||||||
|
pneigh%edges(1,2,1)%ptr => pchild
|
||||||
|
if (pneigh%level > pmeta%level) pneigh%edges(2,2,1)%ptr => pchild
|
||||||
|
end if
|
||||||
|
pchild%edges(1,2,1)%ptr => pmeta%child(3)%ptr
|
||||||
|
pchild%edges(2,2,1)%ptr => pmeta%child(3)%ptr
|
||||||
|
if (associated(pmeta%edges(1,1,2)%ptr)) then
|
||||||
|
pneigh => pmeta%edges(1,1,2)%ptr
|
||||||
|
pchild%edges(1,1,2)%ptr => pmeta%edges(1,1,2)%ptr
|
||||||
|
pchild%edges(1,2,2)%ptr => pmeta%edges(1,1,2)%ptr
|
||||||
|
pneigh%edges(2,1,2)%ptr => pchild
|
||||||
|
if (pneigh%level > pmeta%level) pneigh%edges(2,2,2)%ptr => pchild
|
||||||
|
end if
|
||||||
|
pchild%edges(2,1,2)%ptr => pmeta%child(2)%ptr
|
||||||
|
pchild%edges(2,2,2)%ptr => pmeta%child(2)%ptr
|
||||||
|
|
||||||
|
pchild => pmeta%child(2)%ptr
|
||||||
|
if (associated(pmeta%edges(2,1,1)%ptr)) then
|
||||||
|
pneigh => pmeta%edges(2,1,1)%ptr
|
||||||
|
pchild%edges(1,1,1)%ptr => pmeta%edges(2,1,1)%ptr
|
||||||
|
pchild%edges(2,1,1)%ptr => pmeta%edges(2,1,1)%ptr
|
||||||
|
pneigh%edges(2,2,1)%ptr => pchild
|
||||||
|
if (pneigh%level > pmeta%level) pneigh%edges(1,2,1)%ptr => pchild
|
||||||
|
end if
|
||||||
|
pchild%edges(1,2,1)%ptr => pmeta%child(4)%ptr
|
||||||
|
pchild%edges(2,2,1)%ptr => pmeta%child(4)%ptr
|
||||||
|
pchild%edges(1,1,2)%ptr => pmeta%child(1)%ptr
|
||||||
|
pchild%edges(1,2,2)%ptr => pmeta%child(1)%ptr
|
||||||
|
if (associated(pmeta%edges(2,1,2)%ptr)) then
|
||||||
|
pneigh => pmeta%edges(2,1,2)%ptr
|
||||||
|
pchild%edges(2,1,2)%ptr => pmeta%edges(2,1,2)%ptr
|
||||||
|
pchild%edges(2,2,2)%ptr => pmeta%edges(2,1,2)%ptr
|
||||||
|
pneigh%edges(1,1,2)%ptr => pchild
|
||||||
|
if (pneigh%level > pmeta%level) pneigh%edges(1,2,2)%ptr => pchild
|
||||||
|
end if
|
||||||
|
|
||||||
|
pchild => pmeta%child(3)%ptr
|
||||||
|
pchild%edges(1,1,1)%ptr => pmeta%child(1)%ptr
|
||||||
|
pchild%edges(2,1,1)%ptr => pmeta%child(1)%ptr
|
||||||
|
if (associated(pmeta%edges(1,2,1)%ptr)) then
|
||||||
|
pneigh => pmeta%edges(1,2,1)%ptr
|
||||||
|
pchild%edges(1,2,1)%ptr => pmeta%edges(1,2,1)%ptr
|
||||||
|
pchild%edges(2,2,1)%ptr => pmeta%edges(1,2,1)%ptr
|
||||||
|
pneigh%edges(1,1,1)%ptr => pchild
|
||||||
|
if (pneigh%level > pmeta%level) pneigh%edges(2,1,1)%ptr => pchild
|
||||||
|
end if
|
||||||
|
if (associated(pmeta%edges(1,2,2)%ptr)) then
|
||||||
|
pneigh => pmeta%edges(1,2,2)%ptr
|
||||||
|
pchild%edges(1,1,2)%ptr => pmeta%edges(1,2,2)%ptr
|
||||||
|
pchild%edges(1,2,2)%ptr => pmeta%edges(1,2,2)%ptr
|
||||||
|
pneigh%edges(2,2,2)%ptr => pchild
|
||||||
|
if (pneigh%level > pmeta%level) pneigh%edges(2,1,2)%ptr => pchild
|
||||||
|
end if
|
||||||
|
pchild%edges(2,1,2)%ptr => pmeta%child(4)%ptr
|
||||||
|
pchild%edges(2,2,2)%ptr => pmeta%child(4)%ptr
|
||||||
|
|
||||||
|
pchild => pmeta%child(4)%ptr
|
||||||
|
pchild%edges(1,1,1)%ptr => pmeta%child(2)%ptr
|
||||||
|
pchild%edges(2,1,1)%ptr => pmeta%child(2)%ptr
|
||||||
|
if (associated(pmeta%edges(2,2,1)%ptr)) then
|
||||||
|
pneigh => pmeta%edges(2,2,1)%ptr
|
||||||
|
pchild%edges(1,2,1)%ptr => pmeta%edges(2,2,1)%ptr
|
||||||
|
pchild%edges(2,2,1)%ptr => pmeta%edges(2,2,1)%ptr
|
||||||
|
pneigh%edges(2,1,1)%ptr => pchild
|
||||||
|
if (pneigh%level > pmeta%level) pneigh%edges(1,1,1)%ptr => pchild
|
||||||
|
end if
|
||||||
|
pchild%edges(1,1,2)%ptr => pmeta%child(3)%ptr
|
||||||
|
pchild%edges(1,2,2)%ptr => pmeta%child(3)%ptr
|
||||||
|
if (associated(pmeta%edges(2,2,2)%ptr)) then
|
||||||
|
pneigh => pmeta%edges(2,2,2)%ptr
|
||||||
|
pchild%edges(2,1,2)%ptr => pmeta%edges(2,2,2)%ptr
|
||||||
|
pchild%edges(2,2,2)%ptr => pmeta%edges(2,2,2)%ptr
|
||||||
|
pneigh%edges(1,2,2)%ptr => pchild
|
||||||
|
if (pneigh%level > pmeta%level) pneigh%edges(1,1,2)%ptr => pchild
|
||||||
|
end if
|
||||||
|
#endif /* NDIMS == 2 */
|
||||||
|
|
||||||
|
! update corner neighbor pointers of children, and corresponding neighbor
|
||||||
|
! corners if they lay at larger level
|
||||||
|
!
|
||||||
|
#if NDIMS == 2
|
||||||
|
pchild => pmeta%child(1)%ptr
|
||||||
|
if (associated(pmeta%corners(1,1)%ptr)) then
|
||||||
|
pneigh => pmeta%corners(1,1)%ptr
|
||||||
|
pchild%corners(1,1)%ptr => pmeta%corners(1,1)%ptr
|
||||||
|
pneigh%corners(2,2)%ptr => pchild
|
||||||
|
end if
|
||||||
|
if (associated(pmeta%edges(2,1,1)%ptr)) then
|
||||||
|
pneigh => pmeta%edges(2,1,1)%ptr
|
||||||
|
pchild%corners(2,1)%ptr => pmeta%edges(2,1,1)%ptr
|
||||||
|
if (pneigh%level > pmeta%level) pneigh%corners(1,2)%ptr => pchild
|
||||||
|
endif
|
||||||
|
if (associated(pmeta%edges(1,2,2)%ptr)) then
|
||||||
|
pneigh => pmeta%edges(1,2,2)%ptr
|
||||||
|
pchild%corners(1,2)%ptr => pmeta%edges(1,2,2)%ptr
|
||||||
|
if (pneigh%level > pmeta%level) pneigh%corners(2,1)%ptr => pchild
|
||||||
|
end if
|
||||||
|
pchild%corners(2,2)%ptr => pmeta%child(4)%ptr
|
||||||
|
|
||||||
|
pchild => pmeta%child(2)%ptr
|
||||||
|
if (associated(pmeta%edges(1,1,1)%ptr)) then
|
||||||
|
pneigh => pmeta%edges(1,1,1)%ptr
|
||||||
|
pchild%corners(1,1)%ptr => pmeta%edges(1,1,1)%ptr
|
||||||
|
if (pneigh%level > pmeta%level) pneigh%corners(2,2)%ptr => pchild
|
||||||
|
end if
|
||||||
|
if (associated(pmeta%corners(2,1)%ptr)) then
|
||||||
|
pneigh => pmeta%corners(2,1)%ptr
|
||||||
|
pchild%corners(2,1)%ptr => pmeta%corners(2,1)%ptr
|
||||||
|
pneigh%corners(1,2)%ptr => pchild
|
||||||
|
end if
|
||||||
|
pchild%corners(1,2)%ptr => pmeta%child(3)%ptr
|
||||||
|
if (associated(pmeta%edges(2,2,2)%ptr)) then
|
||||||
|
pneigh => pmeta%edges(2,2,2)%ptr
|
||||||
|
pchild%corners(2,2)%ptr => pmeta%edges(2,2,2)%ptr
|
||||||
|
if (pneigh%level > pmeta%level) pneigh%corners(1,1)%ptr => pchild
|
||||||
|
end if
|
||||||
|
|
||||||
|
pchild => pmeta%child(3)%ptr
|
||||||
|
if (associated(pmeta%edges(1,1,2)%ptr)) then
|
||||||
|
pneigh => pmeta%edges(1,1,2)%ptr
|
||||||
|
pchild%corners(1,1)%ptr => pmeta%edges(1,1,2)%ptr
|
||||||
|
if (pneigh%level > pmeta%level) pneigh%corners(2,2)%ptr => pchild
|
||||||
|
end if
|
||||||
|
pchild%corners(2,1)%ptr => pmeta%child(2)%ptr
|
||||||
|
if (associated(pmeta%corners(1,2)%ptr)) then
|
||||||
|
pneigh => pmeta%corners(1,2)%ptr
|
||||||
|
pchild%corners(1,2)%ptr => pmeta%corners(1,2)%ptr
|
||||||
|
pneigh%corners(2,1)%ptr => pchild
|
||||||
|
end if
|
||||||
|
if (associated(pmeta%edges(2,2,1)%ptr)) then
|
||||||
|
pneigh => pmeta%edges(2,2,1)%ptr
|
||||||
|
pchild%corners(2,2)%ptr => pmeta%edges(2,2,1)%ptr
|
||||||
|
if (pneigh%level > pmeta%level) pneigh%corners(1,1)%ptr => pchild
|
||||||
|
end if
|
||||||
|
|
||||||
|
pchild => pmeta%child(4)%ptr
|
||||||
|
pchild%corners(1,1)%ptr => pmeta%child(1)%ptr
|
||||||
|
if (associated(pmeta%edges(2,1,2)%ptr)) then
|
||||||
|
pneigh => pmeta%edges(2,1,2)%ptr
|
||||||
|
pchild%corners(2,1)%ptr => pmeta%edges(2,1,2)%ptr
|
||||||
|
if (pneigh%level > pmeta%level) pneigh%corners(1,2)%ptr => pchild
|
||||||
|
end if
|
||||||
|
if (associated(pmeta%edges(1,2,1)%ptr)) then
|
||||||
|
pneigh => pmeta%edges(1,2,1)%ptr
|
||||||
|
pchild%corners(1,2)%ptr => pmeta%edges(1,2,1)%ptr
|
||||||
|
if (pneigh%level > pmeta%level) pneigh%corners(2,1)%ptr => pchild
|
||||||
|
end if
|
||||||
|
if (associated(pmeta%corners(2,2)%ptr)) then
|
||||||
|
pneigh => pmeta%corners(2,2)%ptr
|
||||||
|
pchild%corners(2,2)%ptr => pmeta%corners(2,2)%ptr
|
||||||
|
pneigh%corners(1,1)%ptr => pchild
|
||||||
|
end if
|
||||||
|
#endif /* NDIMS == 2 */
|
||||||
|
|
||||||
!! ASSIGN PROPER NEIGHBORS FOR THE CHILDREN IN THE INTERIOR OF THE PARENT BLOCK
|
!! ASSIGN PROPER NEIGHBORS FOR THE CHILDREN IN THE INTERIOR OF THE PARENT BLOCK
|
||||||
!!
|
!!
|
||||||
! iterate over faces and update the interior of the block
|
! iterate over faces and update the interior of the block
|
||||||
|
Loading…
x
Reference in New Issue
Block a user