Largest refinement-level difference across any leaf face (0 on a conforming or uniformly refined forest, 1 on a 2:1-balanced adaptive forest). Because FaceNeighbor returns the equal-or-larger neighbour, every level difference is observed from the finer leaf as a coarser leaf neighbour; internal (finer) neighbours contribute nothing from this side.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(QuadTreeMesh2D), | intent(in) | :: | this |
function MaxLevelJump_QuadTreeMesh2D(this) result(mx)
!! Largest refinement-level difference across any leaf face (0 on a conforming or uniformly
!! refined forest, 1 on a 2:1-balanced adaptive forest). Because FaceNeighbor returns the
!! equal-or-larger neighbour, every level difference is observed from the finer leaf as a
!! coarser leaf neighbour; internal (finer) neighbours contribute nothing from this side.
implicit none
class(QuadTreeMesh2D),intent(in) :: this
integer :: mx
! Local
integer :: li,s,node,nbr,ns,nf
mx = 0
do li = 1,this%nLeaves
node = this%leaf(li)
do s = 1,4
call this%FaceNeighbor(node,s,nbr,ns,nf)
if(nbr /= 0) then
if(this%child(1,nbr) == 0) mx = max(mx,this%level(node)-this%level(nbr))
endif
enddo
enddo
endfunction MaxLevelJump_QuadTreeMesh2D