BuildElementBBoxes_2D Subroutine

public subroutine BuildElementBBoxes_2D(geometry, N, nElem, bbMin, bbMax)

Axis-aligned bounding box of geometry%x%interior nodes for each element.

Arguments

TypeIntentOptionalAttributesName
type(SEMQuad), intent(in) :: geometry
integer, intent(in) :: N
integer, intent(in) :: nElem
real(kind=prec), intent(out) :: bbMin(1:2,1:nElem)
real(kind=prec), intent(out) :: bbMax(1:2,1:nElem)

Called by

proc~~buildelementbboxes_2d~~CalledByGraph proc~buildelementbboxes_2d BuildElementBBoxes_2D proc~locatepoints_2d_points_t LocatePoints_2D_Points_t proc~locatepoints_2d_points_t->proc~buildelementbboxes_2d

Contents

Source Code


Source Code

  subroutine BuildElementBBoxes_2D(geometry,N,nElem,bbMin,bbMax)
    !! Axis-aligned bounding box of geometry%x%interior nodes for each element.
    implicit none
    type(SEMQuad),intent(in) :: geometry
    integer,intent(in) :: N,nElem
    real(prec),intent(out) :: bbMin(1:2,1:nElem),bbMax(1:2,1:nElem)
    ! Local
    integer :: iEl,i,j
    real(prec) :: xv,yv

    do iEl = 1,nElem
      bbMin(1,iEl) = huge(1.0_prec)
      bbMin(2,iEl) = huge(1.0_prec)
      bbMax(1,iEl) = -huge(1.0_prec)
      bbMax(2,iEl) = -huge(1.0_prec)
      do j = 1,N+1
        do i = 1,N+1
          xv = geometry%x%interior(i,j,iEl,1,1)
          yv = geometry%x%interior(i,j,iEl,1,2)
          if(xv < bbMin(1,iEl)) bbMin(1,iEl) = xv
          if(yv < bbMin(2,iEl)) bbMin(2,iEl) = yv
          if(xv > bbMax(1,iEl)) bbMax(1,iEl) = xv
          if(yv > bbMax(2,iEl)) bbMax(2,iEl) = yv
        enddo
      enddo
    enddo

  endsubroutine BuildElementBBoxes_2D