MaxLevelJump_QuadTreeMesh2D Function

public 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.

Arguments

TypeIntentOptionalAttributesName
class(QuadTreeMesh2D), intent(in) :: this

Return Value integer


Contents


Source Code

  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